- Update evaluator.ts to import addQ, numericAdd, evalQuantityArith, evalPercentArith from operations/arithmetic
- Import toBase, fromBase, attachUnit, convertQ from operations/helpers
- Remove duplicated code from evaluator.ts (reduced from 678 to ~450 lines)
- Fix TypeScript type errors in helpers.ts and editor.ts
- All 332 tests pass, build succeeds
- Add ESLint v9+ with TypeScript parser and rules
- Add Prettier for code formatting
- Add npm scripts: lint, lint:fix, format, format:check
- Fix all auto-fixable linting errors (123 errors, 7 warnings)
- Improve type safety in editor.ts, storage.ts and test files
- Add curly braces to all control statements
- Fix unbound method warnings in tests
highlightField and varHighlightField rebuilt from scratch on every
CodeMirror transaction, including ones that touch neither the doc nor
the selection (e.g. the setResults effect firing after evaluation).
varHighlightField now only rebuilds when the doc or selection actually
changed; highlightField remaps existing decorations through doc edits
and only does a full rebuild when new results arrive.
Ctrl+F opens an overlay that searches every document's lines, not just
the active one, and jumps to the hit on click. Always-on-top is a
plain window pin, off by default, toggleable in settings.
Write plain text, get live results per line. English + Russian, units,
live currency rates with crypto, percents, dates and timezones, bitwise
ops, variables and sheet totals. Tauri 2 + TypeScript engine +
CodeMirror 6; daily backups and a deleted-sheets bin.
Inspired by Numi for macOS (numi.app); built from scratch for Windows.