-
Notifications
You must be signed in to change notification settings - Fork 0
Contributing
This is a hobby project maintained in spare time — expect slow replies and no support commitment. Issues and pull requests are welcome regardless.
The value of openToolbox is that the output is one file that runs anywhere without a server. Anything that erodes that will not be merged:
- No runtime network dependencies — no CDN links, no web fonts, no external images.
- No
localStorageorIndexedDBfor the data. - No second HTML entry point.
- No weakening of the SVG sanitiser or the validation of AI-proposed changes.
See Architecture and Building Your Own Tool for the reasoning behind each of these, not just the rule.
npm install
npm run build
npm test # downloads a Chromium browser on first runnpm test drives a real headless browser against the built file over file:// — see
Testing for exactly what it covers. If your change touches persistence, encryption, the
AI client, or branding, add an assertion to test/smoke.mjs rather than relying on manual
clicking. A feature without a test tends to break silently three commits later, because nobody
clicks through a single-file app by hand every time.
- Comments explain why, not what. German is fine, English is fine — mixing within one file is not. The convention across the current codebase: source comments are German, the interface (user-facing strings, see Interface Languages) is English/German, documentation (this wiki, the README) is US English.
- No formatter is enforced. Match the surrounding code.
- Keep the built file small. Every dependency ends up inlined in every file every user receives — there's no lazy-loading or code-splitting to hide the cost of a heavy addition.
Include:
- Browser and version.
- Whether the file was opened via
file://(double-click) or served over HTTP. - The built file's size — a ~9 KB build means the inlining went wrong (see Limits and Troubleshooting) and is a different class of bug from anything behavioural.
- What happened, and what you expected instead.
Apache License 2.0. Source files carry an SPDX-License-Identifier header. Dependencies: Preact
(MIT), Vite (MIT), Playwright for tests only (Apache 2.0) — none of them ship in the runtime file
itself except Preact, inlined.