Thanks for helping make visual novel launch issues less painful.
GalAid is local-first and safety-focused. Contributions should help users diagnose legally obtained local folders without uploading, executing, modifying, decrypting, or extracting game contents.
- Add or improve an error recipe in
data/error-recipes.json - Add or improve an engine rule in
data/engine-rules.json - Add clearer wording to beginner-facing diagnosis text
- Improve engine fingerprints using filenames and folder structure only
- Improve commercial/self-developed engine startup-route heuristics using metadata only
- Improve documentation for archives, disc images, locale, or runtime setup
- Improve package and disc-image preflight while keeping it metadata-only
- Report false positives with a redacted GalAid support summary
See docs/GOOD_FIRST_ISSUES.md for starter tasks that are intentionally small and metadata-only.
Read SECURITY.md and CODE_OF_CONDUCT.md before opening issues or pull requests.
Do not include:
- game downloads, serials, cracks, DRM bypasses, or decryption instructions
- copyrighted game files, scripts, CG, audio, video, or extracted assets
- private absolute paths, real names, email addresses, machine names, or access tokens
- advice that asks GalAid to install software, edit registry settings, mount/extract images without a launch/prepare click, or run games outside the allowlisted launch flow
Prefer:
- short redacted error messages
- relative paths from GalAid reports
- safe local next steps such as "extract all parts first" or "install the official runtime"
- metadata-only examples
- archive directory examples that do not extract or include game files
- commercial VN structure examples that avoid naming or bundling copyrighted game contents
- Edit
data/error-recipes.json. - Keep the rule narrow. Use distinctive DLL names, engine names, or error phrases.
- Add a clear
cause, one safeaction, and a shortchecklist. - Run:
npm run build:recipes
npm run check- Open the web app and paste a sample redacted error into the error box.
- Confirm the
报错tab matches the intended recipe and does not create noisy unrelated matches.
src/error-recipes.js is generated from JSON so users can still open index.html directly. Do not edit that generated file by hand.
- Edit
data/engine-rules.json. - Use metadata-only matchers such as extensions, exact filenames, relative path fragments, or narrow regular expressions.
- Keep commercial/self-developed engines generic unless public filenames clearly identify a known engine.
- Run:
npm run build:engines
npm run check- Open the web app or desktop beta with a redacted sample folder and confirm the engine tab and roadmap stay useful.
src/engine-rules.js is generated from JSON so users can still open index.html directly. Do not edit that generated file by hand.
Use a dry run before deleting generated local artifacts:
npm run clean:dry
npm run cleanUse npm run clean:deps only when you intentionally want to remove node_modules/; run npm install again before testing or packaging.
- The change stays metadata-only and local-first.
npm run checkpasses.npm run test:smokepasses when the change touches browser behavior.- New recipe patterns compile and avoid broad words that would match too often.
- New engine rules stay narrow and do not require reading file contents.
- Any pasted logs are redacted.
- Docs mention safe official prerequisites, not unofficial downloads or bypasses.
GitHub Actions runs npm run check and npm run test:smoke on pull requests and pushes to main. That covers generated recipe freshness, GitHub template sanity checks, Pages source checks, JavaScript syntax checks, and the built-in browser sample flow. The Pages workflow also runs npm run build:pages before publishing the static demo.
Before a public release, run npm run audit:release -- --strict after replacing placeholder URLs. The audit checks for private absolute paths, likely secret assignments, internal AI wording, and unsafe crack or bypass advice.