- Source:
src/(ES modules, SCSS). Key areas:src/components/,src/pages/,src/lib/,src/plugins/(Cordova plugins),src/styles/. - Web assets:
www/(entryindex.html, build output inwww/build/, css/js subfolders). - Config:
webpack.config.js,.babelrc,biome.json,config.xml. - Utilities:
utils/(build, start, setup scripts; language and tooling helpers).
pnpm run setup: Install deps, add Android platform, create build dirs, add plugins.pnpm run start -- android d: Build and run on device/emulator (default dev). For release-like:pnpm run start -- android p.pnpm run build: Build app (defaults to dev). Production example:pnpm run build -- paid prod. F-Droid variant:pnpm run build -- paid prod fdroid.pnpm run clean -- android android: Recreate Android platform.pnpm run plugin -- <id> [path]: Reinstall a Cordova plugin.- Linting/format:
pnpm run lint,pnpm run format,pnpm run check(Biome).
- Formatting: Biome enforced; indent with tabs (
biome.json). Runnpm run formatbefore commits. - Language: ESM JavaScript, SCSS; prefer imports from
srcroot (webpackresolve.modules: ["node_modules", "src"]). - Naming: camelCase for files/dirs (e.g.,
fileSystem,quickTools), PascalCase for classes/components, kebab-case for SCSS partials when applicable.
- No formal test runner configured. Provide clear manual verification steps for Android (device/emulator), including affected screens, repro steps, and expected/actual behavior.
- Attach logs when relevant (see issue templates mention of
Acode.log). Screenshots or screen recordings are encouraged for UI changes.
- Commits: Follow conventional style when possible (
feat:,fix:,chore(scope):, etc.), reference issues ((#123)). - PRs: Include a concise summary, linked issues, screenshots for UI, and test/verification steps. Note any Cordova plugin or config changes.
- Keep diffs focused; run
npm run lintand ensurewww/build/is generated by the pipeline, not committed.
- Building for F-Droid: pass
fdroidas the third arg tobuildto toggle plugin set. - Do not commit secrets/keystores. Android signing is handled outside the repo; keep
keystore.jksprivate.
- Find Files:
fd - Find Text:
rg(ripgrep) - Select among matches: pipe to
fzf - JSON:
jq