Commit graph

14 commits

Author SHA1 Message Date
Horizontal42
702670e08d settings: subtle open and tab-switch animations
Settings panel pops in (scale + fade, 0.15s) instead of appearing
instantly; switching tabs fades the new panel in (0.12s); the tab
buttons themselves transition their background/color on hover and
selection instead of snapping. CSS-only — @keyframes animations run
even from display:none, so no JS timing/exit-animation complexity.
2026-07-03 12:14:26 +03:00
Horizontal42
e5ef1164cc settings: show the running app version
Updates tab, below the check-update button. Reads from
tauri.conf.json via getVersion() in a real build (the source of
truth for what's actually installed); falls back to package.json's
version under vite dev, where there's no Tauri runtime to ask.
2026-07-03 12:13:01 +03:00
Horizontal42
1e06281f5e settings: tabbed panel, date format, update controls
The flat settings list had grown to 14 fields plus footer buttons —
split it into General / Format / Data / Updates tabs (same pill style
as the pinned-doc sidebar, active tab gets the selection color).

Wired the date-format setting into the engine, and reworked update
checks per an actual bug report: a boot-only check is easy to miss on
a tray app that can run for weeks without a cold restart, and every
failure was swallowed silently with no logging at all. Now: failures
are logged (console.warn) and successful "no update" checks say why
(console.info, current version vs. latest published release) so the
next report has something to go on; checks also rerun every 6 hours;
Settings has both a manual "Check for updates" button (reports back
via toast) and a toggle to turn automatic checking off entirely —
manual checks keep working either way.
2026-07-03 12:00:39 +03:00
Horizontal42
5af7c66c3c refactor: pull cross-sheet search and PNG export out of main.ts
Both were self-contained enough to live in their own modules —
src/ui/search.ts (Ctrl+F overlay, text and result-value queries) and
src/ui/export.ts (render the sheet + results to a PNG, clipboard or
file). Trims main.ts by about 150 lines.

Also fixes a real bug while it's in there: the PNG export's clipboard
fallback did btoa(String.fromCharCode(...bytes)), which blows the
call stack on large sheets (spreading a big array as call arguments).
Chunks the conversion in 0x8000-byte pieces instead.
2026-07-03 11:57:33 +03:00
Horizontal42
90c19e343f show unresolved cross-sheet references as a visible #ref? marker 2026-07-02 05:41:17 +03:00
Horizontal42
9d8f977c46 wire cross-sheet references into the editor and document lifecycle 2026-07-02 05:38:02 +03:00
Horizontal42
4b5381d7e7 sheet organization: pin and reorder with up/down arrows 2026-07-01 20:31:43 +03:00
Horizontal42
f8f9095fca add ISO date literals and days until/since 2026-07-01 20:27:55 +03:00
Horizontal42
eff90d3219 add chart/spark sparkline keyword — renders inline SVG in results column 2026-07-01 20:05:24 +03:00
Horizontal42
9aca062add add search across all sheets and always-on-top toggle
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.
2026-07-01 14:54:44 +03:00
Horizontal42
b0c46c390c RU math phrases, half/полтора constants, export button
- vocab: EN+RU aliases for abs/log/ln/round; RU already had sqrt/cbrt
- engine: "half"/"a half"/"one half"/"половина" → 0.5; "one and a half"/"полтора"/"полторы" → 1.5 as named constants; widen const union in parser/tokenizer/evaluator/registry
- export: ⤓ button in statusbar dropdown — copy sheet, save .sum, export .txt, print/PDF; write_text_file Tauri command; print media CSS hides chrome
2026-06-24 00:27:06 +03:00
Horizontal42
4c05d63b55 expand vocab: more RU cases for currencies/units, Tab-only autocomplete
- EUR: add "Euros"; CHF: add "franc,francs"; INR: add "rupee,rupees"; USD: add "buck,bucks"; CNY: add "renminbi"
- RU USD: full declension + slang бакс/баксов/...; JPY: all 8 cases for иена/йена; UAH: all гривна cases; TRY: bare лира declension; CNY: жэньминьби + full cases; CHF: all франк cases; BRL/KRW/PLN: extended declension
- RU units: fill missing dative/instrumental/prepositional/accusative for час/минута/секунда/день/неделя/месяц/год/метр/грамм/литр/тонна/унция/фут/дюйм/миля/ярд
- RU scales: тысяча/миллион/миллиард full declension
- RU conversion: добавить "перевести в / конвертировать в"
- editor: autocompletion defaultKeymap:false so Enter only newlines, Tab accepts suggestion
2026-06-23 23:48:40 +03:00
Horizontal42
f55266f70b v1.1.0: bug fixes, atomic writes, safe quit, .sum files, CI
Engine: fix BigInt crash on NaN, KM/KG case-insensitive units, space-grouped
and comma-decimal number parsing, variable-vs-unit shadowing, small value
display (1 mm in km), DST-safe date arithmetic, month-end clamp, log mustTouch,
avg counted, 50% of 50%, 100 USD + 20 after conversion, percent power.

Rust: atomic writes (temp+rename) for documents.json, safe quit (app-quit event
+ 2s watchdog so tray-quit doesn't lose edits), .sum file association + open,
migration safety (canonicalize + all_copied guard), opener API for backups and
extensions folders.

UI: decimal separator setting, hotkey rollback on failure, corrupted JSON guard,
ru welcome sheet, orange cursor visibility.

CI: windows-latest workflow (tsc + vitest + cargo clippy).
2026-06-11 12:57:39 +03:00
Horizontal42
0cef414e9a feat: Summarum — natural language calculator notebook for Windows
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.
2026-06-10 22:19:24 +03:00