Three gaps in the frontend tooling, all in the package.json script surface.
1. No JS/TS linter or formatter existed at all for 274 TS/Svelte files.
Adds an ESLint flat config (typescript-eslint + eslint-plugin-svelte,
Svelte 5 + TS strict) and prettier + prettier-plugin-svelte, plus the
`lint`, `lint:fix`, `format`, `format:check` scripts.
The tree is error-clean (`npx eslint .` exits 0). Getting there needed
seven real one-line fixes (braced switch cases that leaked `const` across
arms, a useless regex escape, two `let`s that never change, a thrown Error
that dropped its `cause`, and two `// eslint-disable-next-line` comments
documenting the Svelte 5 bare-read-for-dependency idiom). Everything else
that fires is set to `warn` with the reason written next to it in
eslint.config.js — notably ~94 dead bindings and `any` at the IPC
boundary. Those are real findings to drive to zero, not noise to delete.
`no-console` is OFF for now: a parallel change is moving all ~468 console
calls onto a logger facade, and turning the rule on today would collide
with it. eslint.config.js says so, and says to flip it to `error` once
that lands.
`prettier --write` is deliberately NOT run here — it would rewrite ~200
files and swamp every other diff in flight. The gate is available; the
sweep is a separate commit. Markdown and CI YAML are in .prettierignore
because both are hand-laid-out (and docs/traceability.md is generated).
2. `bun run test` was bare `vitest`, i.e. watch mode — while CLAUDE.md's
"Before Committing" list tells people to run it. It is now `vitest run`,
with `test:watch` and `test:coverage` (also `--run`-ified) alongside.
scripts/test-all.sh drops the now-redundant `--run`, and
scripts/test-frontend.sh keeps `--watch`/`--ui`/`-w` working by routing
them to a long-running vitest instead of the single-pass one.
3. The webdriverio e2e suite is deleted. It was last touched in January
("First working POC"), has never run since, and is not in CI — five
devDependencies and two scripts of pure decoration. Removes e2e/,
wdio.conf.ts, the two `test:e2e*` scripts, the @wdio/* + webdriverio
devDeps, and the WebdriverIO block in .gitignore.
The package.json diff also carries `hooks:install` and `check:links`, wired
up by the following commits.
68 lines
1014 B
Plaintext
68 lines
1014 B
Plaintext
# OS files
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Node.js
|
|
node_modules
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
pnpm-debug.log*
|
|
|
|
# Use bun (see packageManager in package.json); ignore other package managers' lockfiles
|
|
package-lock.json
|
|
yarn.lock
|
|
pnpm-lock.yaml
|
|
|
|
# Build output
|
|
/build
|
|
/dist
|
|
/.svelte-kit
|
|
/package
|
|
|
|
# Environment variables
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
|
|
# Testing
|
|
coverage
|
|
.nyc_output
|
|
*.lcov
|
|
|
|
# Vitest
|
|
.vitest
|
|
|
|
# Vite
|
|
vite.config.js.timestamp-*
|
|
vite.config.ts.timestamp-*
|
|
|
|
# IDE
|
|
.idea
|
|
.vscode
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# Logs
|
|
logs
|
|
*.log
|
|
|
|
# Android signing keystore (NEVER commit)
|
|
android-keystore/
|
|
|
|
# Local machine-specific Android NDK toolchain paths (do not commit)
|
|
src-tauri/.cargo/config.toml
|
|
|
|
# Docs site build artifacts (generated by the publish-docs CI job into docs/)
|
|
/docs/SUMMARY.md
|
|
/docs/README.md
|
|
/docs/api-redirect.md
|
|
/docs-site/book/
|
|
|
|
# Arch packaging build artifacts (vendored cargo cache, makepkg workdir, output package)
|
|
/.cargo-arch/
|
|
/packaging/arch/pkg/
|
|
/packaging/arch/src/
|
|
/packaging/arch/*.pkg.tar.zst
|