尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Free, private, all-in-one browser tools — text, math, developer utilities and more. No sign-up, no tracking.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A free, private, all-in-one collection of browser-based tools. It's a static website with no backend, database, accounts or tracking, and it costs ₹0 to host on GitHub Pages.
Current release (stage 3): the full application shell plus 34 working tools — 14 text and content tools, 12 math tools (scientific calculator, percentages, fractions, ratios, statistics, primes, GCD/LCM, factorials, random numbers, number bases, Roman numerals and a 10-category unit converter), 7 developer utilities (JSON, Base64, UUID, hashes, Unix timestamps, JWT, regex) and a colour converter. See docs/FEATURES.md for the full checklist and roadmap.
| Decision | Why |
|---|---|
| Plain HTML + CSS + JavaScript ES modules, no framework | React + Vite would add a build toolchain, node_modules, and ~45 KB of runtime for little benefit. Tools here are self-contained forms. Native modules load fine on every current browser. |
A small Node script pre-renders every page (scripts/build.mjs) | Each tool gets a real, crawlable HTML page with a unique title, description, canonical URL, instructions, and related links, so search engines see content without running JavaScript. |
One central tool registry (src/js/core/registry.js) | It feeds the build (pages, sitemap), search, navigation, related tools, and the roadmap. Adding a tool means adding one registry entry and one module. |
| Tools load on demand | Each tool page imports only its own module (src/js/tools/<id>.js). The home page never loads tool code. |
| Web Workers for heavy or risky work | Find & Replace and Text Diff run in workers with a time limit (src/js/ui/worker-runner.js), so a runaway regular expression or a huge comparison can't freeze the page. |
| Relative links everywhere | The same build works at https://you.github.io/any-repo-name/ or at a domain root. |
| Strict Content Security Policy | script-src 'self': no inline scripts, no third-party code, no eval. |
| localStorage for settings, favorites and history | All access goes through a safe wrapper that falls back to memory and says so honestly when storage is blocked or full. IndexedDB will be added when a tool needs larger storage (notes, flashcards). |
Initial JavaScript on the home page is about 23 KB gzipped in total, and the CSS is about 8 KB gzipped.
toolnest-ultimate/
├── .github/workflows/deploy.yml Free GitHub Actions deploy to Pages
├── docs/FEATURES.md Feature checklist + manual test plan
├── scripts/ Node-only build tooling (never shipped)
│ ├── build.mjs Static site generator → dist/
│ ├── templates.mjs HTML templates for every page type
│ ├── config.mjs SITE_URL / REPO_URL handling
│ ├── serve.mjs Local server that behaves like GitHub Pages
│ └── dev.mjs Build + serve + rebuild on save
├── src/ Everything the browser receives
│ ├── assets/css/main.css Design system (themes, accents, components)
│ ├── assets/icons/favicon.svg
│ └── js/
│ ├── boot.js Applies saved theme before first paint
│ ├── app.js Entry: header, favorites, shortcuts, page loader
│ ├── core/ Shared by browser AND build (no DOM)
│ │ ├── registry.js ★ All categories, tools, and roadmap items
│ │ ├── tool-docs.js Each tool's help text (build-time only)
│ │ ├── search.js Local ranked search with synonyms
│ │ ├── storage.js Safe localStorage wrapper
│ │ ├── prefs.js Settings, favorites, history, export/import
│ │ ├── icons.js In-house SVG icon set
│ │ └── markup.js Card HTML shared by build and browser
│ ├── lib/ Pure, unit-tested logic: text, diff (Myers),
│ │ markdown, html, url, lorem, expression,
│ │ math, units, json, encoding, uuid, hash,
│ │ time, jwt, regex, color
│ ├── ui/ Browser UI modules
│ │ ├── toolkit.js Reusable tool components (copy, download, clear+undo…)
│ │ ├── worker-runner.js Time-limited Web Worker jobs with main-thread fallback
│ │ ├── palette.js Ctrl+K command palette
│ │ ├── settings.js Settings dialog and data controls
│ │ ├── home.js / directory.js / tool-page.js
│ │ └── theme.js / toast.js
│ ├── tools/ One module per tool, loaded on demand
│ └── workers/ Web Workers
├── tests/ Node built-in test runner (no dependencies)
└── dist/ Build output (generated, not committed)
Runtime: none. No npm packages are shipped to the browser.
Development: none from npm either. You only need Node.js 20 or newer, which runs the build script, the local server, and the tests through its built-in node:test runner. There's no npm install step.
Future tools that genuinely need a library (for example PDF processing) will load it only on that tool's page. Each one will be listed with its licence on the About page and in docs/FEATURES.md.
https://<username>.github.io/<repository>/.Free-tier limits to know about: a published Pages site can be up to 1 GB, and there's a soft bandwidth limit of 100 GB per month. GitHub Pages is not intended for commercial SaaS or e-commerce sites. This project uses a tiny fraction of those limits.
winget install OpenJS.NodeJS.LTS
winget install Git.Git
node --version
git --version
Node should report v20 or higher.Open a terminal in the project folder, then run:
npm run dev
Open http://localhost:5173/ in your browser. Edits to files in src/ or scripts/ rebuild automatically; refresh the page to see them. Each rebuild is written to a staging folder and swapped in at the end, so a refresh never catches a half-built site. Press Ctrl + C to stop.
Opening
dist/index.htmlby double-clicking won't work properly. Browsers block ES modules and workers onfile://pages, so always use the local server.
npm test
This runs 119 automated tests: every calculator formula and unit conversion against reference values (round-trips across all units, Miller–Rabin edge cases, exact factorials), hashes against published RFC/FIPS test vectors, JSON error positions, time zones with daylight saving, plus text, diff, Markdown, HTML and URL algorithms (including Markdown safety against scripts and javascript: links), search ranking, storage failure handling, import validation, and checks on the generated pages (unique titles, relative links, sitemap, CSP, 404 behaviour).
npm run preview:pages
Open http://localhost:5173/toolnest-ultimate/. This serves the site under a repository-style sub-path. If everything works here, it will work on GitHub Pages. (Don't run this and npm run dev at the same time, because both write to dist/.)
npm run build
The finished static site is written to dist/. You rarely need this yourself, because the GitHub workflow builds the site for you.
toolnest-ultimate), choose Public, and leave "Add a README" unchecked.YOUR-NAME):
git init
git add .
git commit -m "Initial ToolNest Ultimate release"
git branch -M main
git remote add origin https://github.com/YOUR-NAME/toolnest-ultimate.git
git push -u origin main
Git will open a browser window to sign in to GitHub the first time.https://YOUR-NAME.github.io/toolnest-ultimate/.The workflow detects your Pages address automatically, so canonical URLs, the sitemap, and the 404 page are always correct, even if you rename the repository. The About page's contact link points to your repository's public Issues tab.
Make your changes, check them with npm run dev and npm test, then run:
git add .
git commit -m "Describe your change"
git push
The site redeploys in about a minute. Browsers may cache old files for up to 10 minutes; press Ctrl + F5 to force a refresh.
| Problem | Fix |
|---|---|
| Blank page or unstyled page on GitHub Pages | Check that Settings → Pages → Source is GitHub Actions, not "Deploy from a branch". The dist/ folder isn't committed, so branch deploys have nothing to serve. |
| Workflow fails at "Run tests" | Run npm test locally, fix the failing test, then push again. |
| Workflow fails at "deploy" with a permissions error | Settings → Pages → Source must be GitHub Actions. Then re-run the workflow. |
| 404 for every page | Wait 1–2 minutes after the first deploy. Then check the exact URL in Settings → Pages; it's case-sensitive. |
| Tools stuck on "Loading tool…" | Open the browser console (F12). If you opened the file directly from disk, use npm run dev instead. Very old browsers without ES-module support aren't supported. |
| Old version still showing | Press Ctrl + F5. CSS and the app script are cache-busted automatically on each build. |
npm isn't recognised | Reinstall Node.js and reopen the terminal so the PATH updates. |
| Port 5173 is in use | Run node scripts/dev.mjs --port 5180 and open that port instead. |
| robots.txt has no effect | Search engines only read robots.txt at a domain's root. On username.github.io/repo/ it's ignored, but the sitemap can still be submitted in Google Search Console. |
readyTools array in src/js/core/registry.js with id, name, category, icon, description, tags, and related, and remove the matching item from roadmap. Then add its help text to src/js/core/tool-docs.js: seoDescription, instructions, about, limitations, and optionally privacy. Help text lives in that separate file because only the build reads it, so it never adds weight to the JavaScript every page loads.src/js/lib/ and add tests for it in tests/.src/js/tools/<id>.js that exports mount(container, { tool }). Build the interface from the helpers in src/js/ui/toolkit.js (text areas, copy, download, clear-with-undo, examples, and status messages).npm test. The registry tests confirm the tool is complete and that its module exists, and the build then generates its page, sitemap entry, and search entry automatically.textContent, never with innerHTML.localStorage, and users can export or delete them in Settings.MIT. See LICENSE.