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.
85 lines
3.3 KiB
JSON
85 lines
3.3 KiB
JSON
{
|
|
"name": "jellytau",
|
|
"version": "0.8.2",
|
|
"description": "",
|
|
"type": "module",
|
|
"packageManager": "bun@1.3.5",
|
|
"scripts": {
|
|
"dev": "vite dev",
|
|
"build": "vite build",
|
|
"preview": "vite preview",
|
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:all": "./scripts/test-all.sh",
|
|
"test:rust": "./scripts/test-rust.sh",
|
|
"lint": "eslint .",
|
|
"lint:fix": "eslint . --fix",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"check:boundary": "bash scripts/check-frontend-boundary.sh",
|
|
"check:links": "bash scripts/check-doc-links.sh",
|
|
"hooks:install": "./scripts/install-hooks.sh",
|
|
"android:build": "./scripts/build-android.sh",
|
|
"android:build:release": "./scripts/build-android.sh release",
|
|
"android:build:device": "./scripts/build-android.sh --device",
|
|
"android:build:release:device": "./scripts/build-android.sh release --device",
|
|
"android:build:clean": "rm -rf node_modules/.vite dist .svelte-kit .next build target src-tauri/target && bun install && bun run build",
|
|
"android:deploy": "./scripts/deploy-android.sh",
|
|
"android:dev": "./scripts/build-and-deploy.sh",
|
|
"android:check": "./scripts/check-android.sh",
|
|
"android:logs": "./scripts/logcat.sh",
|
|
"desktop:build:linux": "./scripts/build-desktop-linux.sh",
|
|
"desktop:build:arch": "./scripts/build-arch.sh",
|
|
"desktop:build:windows": "./scripts/build-windows-cross.sh",
|
|
"docker:build:linux": "docker compose run --rm desktop-linux-build",
|
|
"docker:build:arch": "docker compose run --rm arch-build",
|
|
"docker:build:windows": "docker compose run --rm windows-cross",
|
|
"clean": "./scripts/clean.sh",
|
|
"tauri": "tauri",
|
|
"traces": "bun run scripts/extract-traces.ts",
|
|
"traces:json": "bun run scripts/extract-traces.ts --format json",
|
|
"traces:markdown": "bun run scripts/extract-traces.ts --format markdown > docs/traceability.md",
|
|
"traces:coverage": "bun run scripts/extract-traces.ts --format coverage",
|
|
"traces:validate": "bun run scripts/extract-traces.ts --format validate",
|
|
"release:notes": "bun run scripts/release-notes.ts"
|
|
},
|
|
"license": "MIT",
|
|
"dependencies": {
|
|
"@tauri-apps/api": "^2",
|
|
"@tauri-apps/plugin-opener": "^2",
|
|
"@tauri-apps/plugin-os": "^2.3.2",
|
|
"hls.js": "^1.6.15",
|
|
"svelte-dnd-action": "^0.9.69"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/js": "^10.0.1",
|
|
"@sveltejs/adapter-static": "^3.0.6",
|
|
"@sveltejs/kit": "^2.9.0",
|
|
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
"@tailwindcss/vite": "^4.1.18",
|
|
"@tauri-apps/cli": "^2",
|
|
"@testing-library/svelte": "^5.3.1",
|
|
"@vitest/coverage-v8": "^4.0.18",
|
|
"@vitest/ui": "^4.0.16",
|
|
"eslint": "^10.8.1",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-svelte": "^3.23.0",
|
|
"globals": "^17.11.0",
|
|
"happy-dom": "^20.0.11",
|
|
"jsdom": "^27.4.0",
|
|
"prettier": "^3.9.6",
|
|
"prettier-plugin-svelte": "^4.1.1",
|
|
"svelte": "^5.47.1",
|
|
"svelte-check": "^4.0.0",
|
|
"tailwindcss": "^4.1.18",
|
|
"typescript": "~5.6.2",
|
|
"typescript-eslint": "^8.67.0",
|
|
"vite": "^6.0.3",
|
|
"vitest": ">=1.0.0 <5.0.0"
|
|
}
|
|
}
|