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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions