Skip to content

Cannot start a Vite Server #21

Description

@sajeel-unstucklabs

Hi almostnode team, First of all, thank you for building and maintaining almostnode. I really appreciate the work that has gone into the project.

I am currently working on a project where I want to run GitHub-hosted projects directly in the browser. I was previously exploring nodepod and came across almostnode, so I wanted to give it a try.

I am facing an issue where custom paths do not seem to resolve correctly. After spending a few days investigating and reviewing the available documentation, I was not able to find anything related to this behavior, so I thought I would reach out for some guidance. I have attached the file I am trying to run. To reproduce the issue, please replace the following two variables with your own values:

Line 30: Replace the url variable with any simple Vite/React todo app that works with npm install followed by npm run dev.
Line 31: Replace the token variable with your own GitHub Personal Access Token.

The project itself is a simple Vite app created using:

npm create vite@latest

I then replaced the generated App.tsx file with the attached version.

I would appreciate any guidance on whether I am missing a configuration step or if there is a recommended way to handle custom path resolution with almostnode. Towards the end I have also placed all the logs on the Chrome console when i refresh the screen. I have also tried to unregister the service worker and doing hard refresh.

Thanks again for your time and for maintaining this project.

Best regards,
Sajeel

App.tsx

import { useEffect, useState, useRef } from "react";
import { cloneRepo } from "./components/CloneRepo";
import createContainer, { ViteDevServer } from "almostnode";

function App() {
  const viteServerRef = useRef<ViteDevServer | null>(null);
  const [serverReady, setServerReady] = useState(false);
  const container = createContainer({
    onConsole(level, ...args) {
      console.log(
        `[${level}]`,
        ...args
      );
    },
    
    onServerReady(port) {
      console.log(
        `Server started on ${port}`
      );
      setServerReady(true);
    }
  });

  const { vfs, npm, serverBridge } = container;
  
  useEffect(() => {
    if (!container) return;
    async function runCode() {
      const files = await cloneRepo({
        url: "https://github.com/...", //public repo that you want to test
        token: "ghp_3sg...", // YOUR GITHUB TOKEN HERE
      });
      await mountFiles(files);
      await serverBridge.initServiceWorker();
      // Fix: Prefix all paths in index.html with /__virtual__/3000/
      // This ensures all requests go through the virtual server
      if (vfs.existsSync("/index.html")) {
        let htmlContent = vfs.readFileSync("/index.html", "utf8");
        console.log("[almost-node] Original index.html (first 400 chars):", htmlContent.substring(0, 400));

        const virtualPrefix = '/__virtual__/3000';

        // Prefix src attributes in script/link tags
        htmlContent = htmlContent.replace(
          /(src|href)=["']\/([^"']+)["']/g,
          `$1="${virtualPrefix}/$2"`
        );

        vfs.writeFileSync("/index.html", htmlContent);
        console.log("[almost-node] Prefixed paths in index.html");
        console.log("[almost-node] Final index.html (first 400 chars):", htmlContent.substring(0, 400));
      }

      console.log("Mounted files:",
        vfs.readdirSync("/")
      );

      // Install dependencies from package.json
      console.log("[almost-node] Installing dependencies...");
      await npm.installFromPackageJson({
        onProgress: (progress) => {
          console.log("[almost-node] Progress:", progress);
        },
        includeDev: true,
      });
      console.log("[almost-node] Dependencies installed");

      // Log mounted src files before starting server
      const srcFiles = vfs.existsSync("/src") ? vfs.readdirSync("/src") : [];
      console.log("[almost-node] Files in /src:", srcFiles);

      console.log("[almost-node] Creating ViteDevServer...");

      // Create and start ViteDevServer (the proper almostnode way)
      const viteServer = new ViteDevServer(vfs, { port: 3000 });
      viteServerRef.current = viteServer;
      viteServer.start();
      console.log("[almost-node] ViteDevServer started, isRunning:", viteServer.isRunning());

      // Register server with serverBridge
      serverBridge.registerServer(viteServer as any, 3000);
      const url = serverBridge.getServerUrl(3000);
      console.log("[almost-node] Virtual server URL:", url);

      // Mark server as ready
      setServerReady(true);
      // Create ViteDevServer and register it
  }
    runCode();
  }, []);

  // Guard until container is ready
  async function mountFiles(files: Record<string, string>) {
    for (const [rawPath, content] of Object.entries(files)) {
        // Files come from GitHub with /app prefix, we need them at root / for ViteDevServer
        // /app/package.json -> /package.json
        const path = rawPath.replace(/^\/app/, '') || rawPath;

        // Ensure parent directory exists
        const dir = path.substring(0, path.lastIndexOf('/'));
        if (dir && !vfs.existsSync(dir)) {
            vfs.mkdirSync(dir, { recursive: true });
        }
        // Write file content
        vfs.writeFileSync(path, content);
    }

    console.log(`[almost-node] Mounted ${Object.keys(files).length} files to root /`);
    console.log('[almost-node] Root contents:', vfs.readdirSync('/'));
}
  

  return (
    <div style={{ padding: '20px', fontFamily: 'monospace' }}>
      <h1>Almostnode React Test</h1>

      {!container ? (
        <div>Loading container...</div>
      ) : !serverReady ? (
        <div>Starting virtual server...</div>
      ) : (
        <div>
          <div style={{ marginBottom: '20px' }}>
            <strong>Virtual Server URL:</strong> <a href={container.serverBridge.getServerUrl(3000)} target="_blank" rel="noopener noreferrer">
              {container.serverBridge.getServerUrl(3000)}
            </a>
          </div>

          <div style={{ border: '1px solid #ccc', borderRadius: '5px', overflow: 'hidden' }}>
            <iframe
              src={container.serverBridge.getServerUrl(3000)}
              style={{
                width: '100%',
                height: '80vh',
                border: 'none'
              }}
              title="Virtual Server"
              onLoad={(e) => {
                const iframe = e.target as HTMLIFrameElement;
                console.log('[almost-node] iframe loaded');
                // Set HMR target for the iframe
                if (iframe.contentWindow && viteServerRef.current) {
                  viteServerRef.current.setHMRTarget(iframe.contentWindow);
                }
              }}
            />
          </div>
        </div>
      )}
    </div>
  );
}

export default App;

BROWSER CONSOLE LOGS

[vite] connecting...
client:955 [vite] connected.
react-dom_client.js?v=75377d0a:14338 Download the React DevTools for a better development experience: https://react.dev/link/react-devtools
CloneRepo.ts:210 [github] Fetched 23 files from youzero1/todo-app-test-1780929939729@main
App.tsx?t=1781688641356:85 [almost-node] Mounted 23 files to root /
App.tsx?t=1781688641356:86 [almost-node] Root contents: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:34 [almost-node] Original index.html (first 400 chars): <!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Todo App</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>

App.tsx?t=1781688641356:39 [almost-node] Prefixed paths in index.html
App.tsx?t=1781688641356:40 [almost-node] Final index.html (first 400 chars): <!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/__virtual__/3000/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Todo App</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/__virtual__/3000/src/main.tsx"></script>
  </body>
</html>

App.tsx?t=1781688641356:42 Mounted files: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:44 [almost-node] Installing dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react@^19.0.0
CloneRepo.ts:210 [github] Fetched 23 files from youzero1/todo-app-test-1780929939729@main
App.tsx?t=1781688641356:85 [almost-node] Mounted 23 files to root /
App.tsx?t=1781688641356:86 [almost-node] Root contents: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:34 [almost-node] Original index.html (first 400 chars): <!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Todo App</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/src/main.tsx"></script>
  </body>
</html>

App.tsx?t=1781688641356:39 [almost-node] Prefixed paths in index.html
App.tsx?t=1781688641356:40 [almost-node] Final index.html (first 400 chars): <!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="icon" type="image/svg+xml" href="/__virtual__/3000/vite.svg" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Todo App</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="/__virtual__/3000/src/main.tsx"></script>
  </body>
</html>

App.tsx?t=1781688641356:42 Mounted files: (13) ['.env.example', '.gitignore', 'Dockerfile', 'README.md', 'index.html', 'nginx.conf', 'package-lock.json', 'package.json', 'public', 'src', 'tsconfig.app.json', 'tsconfig.json', 'vite.config.ts']
App.tsx?t=1781688641356:44 [almost-node] Installing dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving dependencies...
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react@^19.0.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-dom@^19.0.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving scheduler@^0.27.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router-dom@^7.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router@7.18.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router-dom@^7.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-router@7.18.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving cookie@^1.0.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving set-cookie-parser@^2.6.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lucide-react@^0.469.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving cookie@^1.0.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving set-cookie-parser@^2.6.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lucide-react@^0.469.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving clsx@^2.1.1
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/react@^19.0.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving csstype@^3.2.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/react-dom@^19.0.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @vitejs/plugin-react@^4.3.4
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving vite@^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.28.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-refresh@^0.17.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__core@^7.20.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @rolldown/pluginutils@1.0.0-beta.27
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-self@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-source@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving vite@^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.28.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving react-refresh@^0.17.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__core@^7.20.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @rolldown/pluginutils@1.0.0-beta.27
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-self@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/plugin-transform-react-jsx-source@^7.27.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.0.0-0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-plugin-utils@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__template@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__traverse@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__generator@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.20.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__template@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__traverse@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/babel__generator@*
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/core@^7.0.0-0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-plugin-utils@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving debug@^4.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving json5@^2.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving semver@^6.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving gensync@^1.0.0-beta.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helpers@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/template@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving fdir@^6.5.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving rollup@^4.43.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving esbuild@^0.27.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving postcss@^8.5.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picomatch@^4.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tinyglobby@^0.2.15
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving debug@^4.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving json5@^2.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving semver@^6.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving gensync@^1.0.0-beta.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helpers@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/template@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving fdir@^6.5.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving rollup@^4.43.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving esbuild@^0.27.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving postcss@^8.5.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picomatch@^4.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tinyglobby@^0.2.15
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/parser@^7.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.28.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/types@^7.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-string-parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-identifier@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/traverse@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/generator@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/code-frame@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving convert-source-map@^2.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/remapping@^2.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-transforms@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-compilation-targets@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-string-parser@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-identifier@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving ms@^2.1.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/traverse@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/generator@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/code-frame@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving convert-source-map@^2.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/remapping@^2.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-transforms@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-compilation-targets@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/estree@1.0.9
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving nanoid@^3.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picocolors@^1.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving source-map-js@^1.2.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving ms@^2.1.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving nanoid@^3.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving picocolors@^1.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving source-map-js@^1.2.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @types/estree@1.0.9
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-imports@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lru-cache@^5.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving browserslist@^4.24.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/compat-data@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-option@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jsesc@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.28
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving js-tokens@^4.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.24
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-globals@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving js-tokens@^4.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lru-cache@^5.1.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving browserslist@^4.24.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/compat-data@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-validator-option@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jsesc@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.28
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/gen-mapping@^0.3.5
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/trace-mapping@^0.3.24
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @babel/helper-module-imports@^7.29.7
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving yallist@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving baseline-browser-mapping@^2.10.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving caniuse-lite@^1.0.30001782
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving electron-to-chromium@^1.5.328
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving node-releases@^2.0.36
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving update-browserslist-db@^1.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/resolve-uri@^3.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.4.14
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/resolve-uri@^3.1.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.4.14
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.5.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving yallist@^3.0.2
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving baseline-browser-mapping@^2.10.12
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving caniuse-lite@^1.0.30001782
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving electron-to-chromium@^1.5.328
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving node-releases@^2.0.36
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving update-browserslist-db@^1.2.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @jridgewell/sourcemap-codec@^1.5.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving escalade@^3.2.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving typescript@^5.7.2
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tailwindcss@^4.0.0
2App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/vite@^4.0.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/node@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/oxide@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/node@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving @tailwindcss/oxide@4.3.1
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jiti@^2.7.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lightningcss@1.32.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving magic-string@^0.30.21
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving enhanced-resolve@5.21.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving jiti@^2.7.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving lightningcss@1.32.0
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving magic-string@^0.30.21
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving enhanced-resolve@5.21.6
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving detect-libc@^2.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tapable@^2.3.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving graceful-fs@^4.2.4
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving tapable@^2.3.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving graceful-fs@^4.2.4
App.tsx?t=1781688641356:47 [almost-node] Progress: Resolving detect-libc@^2.0.3
App.tsx?t=1781688641356:47 [almost-node] Progress: Initializing ESM transformer...
almostnode.js?v=2a8ce175:99230 [transform] Loading esbuild-wasm...
App.tsx?t=1781688641356:47 [almost-node] Progress: Initializing ESM transformer...
almostnode.js?v=2a8ce175:99238 [transform] esbuild-wasm initialized
App.tsx?t=1781688641356:47 [almost-node] Progress: Installing 83 packages...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react@19.2.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-dom@19.2.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading scheduler@0.27.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-router-dom@7.18.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-router@7.18.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading set-cookie-parser@2.7.2...
App.tsx?t=1781688641356:47 [almost-node] Progress: Installing 83 packages...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react@19.2.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-dom@19.2.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading scheduler@0.27.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-router-dom@7.18.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-router@7.18.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading cookie@1.1.1...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 24 files in /node_modules/react...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 12 files in /node_modules/scheduler...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/cookie...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 30 files in /node_modules/react-router...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 24 files in /node_modules/react...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 30 files in /node_modules/react-router...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 12 files in /node_modules/scheduler...
2App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/react-router-dom...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/set-cookie-parser...
2App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 40 files in /node_modules/react-dom...
2App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in react-router-dom
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 18 files in react-router
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading cookie@1.1.1...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading lucide-react@0.469.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading clsx@2.1.1...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/react@19.2.17...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading csstype@3.2.3...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/react-dom@19.2.3...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/cookie...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 18 files in react-router
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading set-cookie-parser@2.7.2...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading lucide-react@0.469.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading clsx@2.1.1...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/react@19.2.17...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading csstype@3.2.3...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/react-dom@19.2.3...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/csstype...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 5 files in /node_modules/clsx...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in clsx
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/react...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/react-dom...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/set-cookie-parser...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 5 files in /node_modules/clsx...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in clsx
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/react...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/react-dom...
2App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1757 files in /node_modules/lucide-react...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/csstype...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1754 files in lucide-react
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @vitejs/plugin-react@4.7.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__core@7.20.5...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/plugin-transform-react-jsx-self@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/plugin-transform-react-jsx-source@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/core@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @rolldown/pluginutils@1.0.0-beta.27...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1754 files in lucide-react
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @vitejs/plugin-react@4.7.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/plugin-transform-react-jsx-self@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__core@7.20.5...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/plugin-transform-react-jsx-source@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/core@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading vite@7.3.5...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/babel__core...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@babel/plugin-transform-react-jsx-self...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/@vitejs/plugin-react...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in @vitejs/plugin-react
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 55 files in /node_modules/@babel/core...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@rolldown/pluginutils...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1 files in @rolldown/pluginutils
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in @babel/core
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/babel__core...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@babel/plugin-transform-react-jsx-self...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/@vitejs/plugin-react...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 55 files in /node_modules/@babel/core...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 21 files in /node_modules/vite...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in @vitejs/plugin-react
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@babel/plugin-transform-react-jsx-source...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading vite@7.3.5...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-refresh@0.17.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__template@7.4.4...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/parser@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/types@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/helper-plugin-utils@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@babel/plugin-transform-react-jsx-source...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 6 files in /node_modules/react-refresh...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 21 files in /node_modules/vite...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/babel__template...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/@babel/parser...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 86 files in /node_modules/@babel/types...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in @babel/core
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@babel/helper-plugin-utils...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1 files in @babel/parser
almostnode.js?v=2a8ce175:99319 [transform] Skipping /node_modules/vite/bin/vite.js (has top-level await, likely CLI entry point)
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 20 files in vite
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @rolldown/pluginutils@1.0.0-beta.27...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading react-refresh@0.17.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/helpers@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading json5@2.2.3...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__traverse@7.28.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__generator@7.27.0...
almostnode.js?v=2a8ce175:99319 [transform] Skipping /node_modules/vite/bin/vite.js (has top-level await, likely CLI entry point)
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 20 files in vite
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__traverse@7.28.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__generator@7.27.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading debug@4.4.3...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading json5@2.2.3...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading semver@6.3.1...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading gensync@1.0.0-beta.2...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 6 files in /node_modules/react-refresh...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/gensync...
2App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 12 files in /node_modules/json5...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 4 files in /node_modules/debug...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/semver...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@rolldown/pluginutils...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in json5
2App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/babel__generator...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in json5
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1 files in @rolldown/pluginutils
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 124 files in /node_modules/@babel/helpers...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/babel__traverse...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/helpers@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/template@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading fdir@6.5.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading postcss@8.5.15...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading esbuild@0.27.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading picomatch@4.0.4...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/babel__traverse...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/parser@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @types/babel__template@7.4.4...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading semver@6.3.1...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading gensync@1.0.0-beta.2...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading @babel/types@7.29.7...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Downloading fdir@6.5.0...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/gensync...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/semver...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 0 files in /node_modules/@types/babel__template...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 7 files in /node_modules/picomatch...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/fdir...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 124 files in /node_modules/@babel/helpers...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1 files in fdir
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/esbuild...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 2 files in /node_modules/@babel/parser...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 86 files in /node_modules/@babel/types...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 29 files in /node_modules/postcss...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1 files in esbuild
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 8 files in /node_modules/@babel/template...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/fdir...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1 files in @babel/parser
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 1 files in postcss
Skipped some lines here due to size issue but it kep on downloading and transforming packages
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 2 files in enhanced-resolve
App.tsx?t=1781688641356:47 [almost-node] Progress: Installed 83 packages
App.tsx?t=1781688641356:51 [almost-node] Dependencies installed
App.tsx?t=1781688641356:54 [almost-node] Files in /src: (7) ['App.tsx', 'components', 'hooks', 'main.tsx', 'pages', 'styles', 'types']
App.tsx?t=1781688641356:55 [almost-node] Creating ViteDevServer...
App.tsx?t=1781688641356:60 [almost-node] ViteDevServer started, isRunning: true
App.tsx?t=1781688641356:16 Server started on 3000
App.tsx?t=1781688641356:64 [almost-node] Virtual server URL: http://localhost:5173/__virtual__/3000
3000:182 [HMR] Client ready with React Refresh support
3000:1 Uncaught TypeError: Failed to resolve module specifier "@/styles/global.css". Relative references must start with either "/", "./", or "../".Understand this error
App.tsx?t=1781688641356:145 [almost-node] iframe loaded
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 16 files in /node_modules/tapable...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 4 files in /node_modules/graceful-fs...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 6 files in /node_modules/jiti...
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 4 files in /node_modules/detect-libc...
almostnode.js?v=2a8ce175:99319 [transform] Skipping /node_modules/jiti/lib/jiti-cli.mjs (has top-level await, likely CLI entry point)
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transformed 6 files in jiti
App.tsx?t=1781688641356:47 [almost-node] Progress:   Transforming 1 files in /node_modules/@tailwindcss/oxide...
App.tsx?t=1781688641356:47 [almost-node] Progress: Installed 83 packages
App.tsx?t=1781688641356:51 [almost-node] Dependencies installed
App.tsx?t=1781688641356:54 [almost-node] Files in /src: (7) ['App.tsx', 'components', 'hooks', 'main.tsx', 'pages', 'styles', 'types']
App.tsx?t=1781688641356:55 [almost-node] Creating ViteDevServer...
App.tsx?t=1781688641356:60 [almost-node] ViteDevServer started, isRunning: true
App.tsx?t=1781688641356:16 Server started on 3000
App.tsx?t=1781688641356:64 [almost-node] Virtual server URL: http://localhost:5173/__virtual__/3000
3000:39 [HMR] React Refresh initialized
5client:930 [vite] hot updated: /src/App.tsx

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions