|
| 1 | +### Build & Tooling |
| 2 | +- Migrate bundling to Vite (or SvelteKit adapter for Obsidian) to get faster dev/HMR, simpler Svelte 5 config, and better tree-shaking. Use `build.lib` with `formats: ['cjs']` to satisfy Obsidian’s CJS requirement, and keep esbuild only if needed for legacy outputs. |
| 3 | +- Enable `sourcemap: false` in production and `minify + drop: ['console']` to shrink the ~624 KB `main.js`. Consider removing unused deps (e.g., evaluate whether `openai` is needed client-side). |
| 4 | +- Enforce lint/format in CI: add `biome check` (or eslint + prettier) plus `tsc --noEmit` to catch issues pre‑release. |
| 5 | +- Tighten TypeScript: turn on `strict`, remove `allowJs`, consider `noImplicitOverride`, and drop `inlineSourceMap` for builds to reduce bundle size. |
| 6 | +- Add lint rules for consistent type-only imports (`@typescript-eslint/consistent-type-imports`) and `import/no-duplicates`; run a codemod to ensure consistency. |
| 7 | +- Add `.nvmrc` and keep `engines.node >=22` for local/CI parity. Consider `engine-strict=true` in `.npmrc`. |
| 8 | + |
| 9 | +### Testing |
| 10 | +- Extend component tests (Vitest + @testing-library/svelte) for Progressbar, TopBar, Image, and keyboard/a11y flows we fixed. Include snapshot + interaction tests. |
| 11 | +- Add an integration smoke test for the main flow: select feed → play episode → create note → ensure note file path/template substitution works. |
| 12 | +- Add a11y linting: run `svelte-check --fail-on-warnings` or `eslint-plugin-svelte` a11y rules to prevent regressions. |
| 13 | + |
| 14 | +### CI/CD |
| 15 | +- Once npm lock is stable, switch CI back to `npm ci` (or migrate to pnpm to avoid npm’s bundled-npm dependency friction). Cache `~/.npm`/pnpm store. |
| 16 | +- Keep Node 22 in workflows and engines; add `node-version-file: '.nvmrc'` in `setup-node`. |
| 17 | +- Vercel: either disable for this plugin repo or produce a minimal static artifact (docs). If keeping, ensure `installCommand`/`buildCommand` match the plugin build or keep `ignoreCommand` to skip deploy noise. |
| 18 | +- Add Dependabot/Renovate with weekly grouped updates to avoid large jump-upgrades. |
| 19 | + |
| 20 | +### Repo Hygiene |
| 21 | +- Add `CONTRIBUTING.md` covering Node 22 requirement, install (`npm install` or `pnpm i`), build/test commands, and release flow. |
| 22 | +- Document Obsidian-specific build steps and external APIs (OpenAI usage, iTunes feed fetching) in README or `/docs`. |
| 23 | +- Consider `npm audit` (or `pnpm audit`) gating CI, or at least surface results in PR comments. |
| 24 | + |
| 25 | +### Performance/UX |
| 26 | +- Audit dependency usage; remove unused code paths. Confirm OpenAI usage is necessary on client; if not, move server-side or gate-load. |
| 27 | +- Evaluate CSS and a11y debt: continue converting interactive spans/divs to buttons, add roles/tabindex only where appropriate, and ensure keyboard parity. |
| 28 | +- Consider lazy-loading heavy UI sections (podcast artwork, feed parsing) and caching feed results to reduce start-up. |
0 commit comments