Set up the package, compiler and quality gates before any app code so every later change lands under the same rules: Node 26 via .nvmrc and engines, TypeScript 7 in strict mode with the extra strictness flags, swc for transpiling, oxlint with type-aware, Unicorn and security rules (eslint-plugin-security and no-unsanitized loaded as JS plugins), oxfmt, Vitest with a 100% coverage gate, and husky hooks that run the checks and commitlint. Type escape hatches, lint suppressions and coverage exemptions are banned unless registered in exceptions.json. scripts/audit-exceptions enforces that, and its test runs it against this repository, so an unregistered suppression fails both the pre-commit hook and CI. npm 11 blocks dependency install scripts by default. None are needed: Electron downloads its binary on first use, swc's native binding comes from optionalDependencies, fsevents ships prebuilt, and electron-winstaller only serves Squirrel installers, which aren't used. They are recorded as denied in allowScripts.
23 lines
576 B
Markdown
23 lines
576 B
Markdown
# mdts Desktop
|
|
|
|
A desktop app for browsing and previewing folders of Markdown, built on
|
|
[mdts](https://github.com/unhappychoice/mdts) and Electron. Work in progress.
|
|
|
|
## Development
|
|
|
|
Requires Node 26 (see `.nvmrc`) and npm 11.
|
|
|
|
```sh
|
|
npm ci
|
|
npm run check # format, lint, typecheck, exception audit
|
|
npm run test:unit # Vitest, 100% coverage gate
|
|
```
|
|
|
|
Type-safety escape hatches, lint suppressions and coverage exemptions are only
|
|
allowed with an entry in `exceptions.json`; `npm run audit:exceptions` enforces
|
|
this.
|
|
|
|
## License
|
|
|
|
MIT. mdts is MIT-licensed by its authors.
|