Commit Graph
774 Commits
Author SHA1 Message Date
amosblomqvist 50a2db775d release: prepare 0.3.5 v0.3.5 2026-10-24 16:23:39 +03:00
amosblomqvist 6788a01add Add accounts from ChatGPT management dialog 2026-10-24 15:58:26 +03:00
amosblomqvist 102aa6f7ae Fence stale ChatGPT cancellation replies and steady toggle cursor 2026-10-24 15:45:54 +03:00
amosblomqvist 42abeb65ae Unify ChatGPT background use and account management 2026-10-24 15:28:26 +03:00
amosblomqvist 8691470d03 Fix pending ChatGPT login lifecycle and IPC error handling 2026-10-24 14:22:44 +03:00
amosblomqvist b8abad2b4f Refine ChatGPT setup and model provider settings 2026-10-24 14:02:54 +03:00
amosblomqvist 0fc6d4ab94 feat: add verified desktop ChatGPT subscription connection 2026-10-24 12:17:08 +03:00
amosblomqvist ae2fad56c4 chore: prepare platform preview 0.3.5-preview.1 v0.3.5-preview.1 2026-10-24 10:43:51 +03:00
amosblomqvist b6bc9edcda Merge commit '4bd20be5291cfc3682761201d825d3635bcc9466' into integrate/platform-preview-1 2026-10-24 09:39:57 +03:00
amosblomqvist 480064b19e Merge commit '7fb891389d377d24d3a568b81c61169ab7334df5' into integrate/platform-preview-1 2026-10-24 09:39:57 +03:00
amosblomqvist 7fb891389d fix: retain Google provider dependencies in desktop builds 2026-10-24 08:15:04 +03:00
amosblomqvist 4bd20be529 fix: keep research available without search keys 2026-10-24 06:52:36 +03:00
amosblomqvist 6cba9c8c5a release: prepare 0.3.4 v0.3.4 2026-10-23 20:29:02 +03:00
amosblomqvist cc657faa93 Merge native Pi identity and provider catalog upgrade 2026-10-23 17:25:10 +03:00
amosblomqvist 6685b3d09a fix: use native Pi identity and refresh provider catalogs 2026-10-23 17:25:10 +03:00
amosblomqvist b15db907ab Merge KaTeX security repair 2026-10-23 17:11:57 +03:00
amosblomqvist 93017d767e security: upgrade KaTeX to 0.18.2 across active renderers 2026-10-23 17:11:57 +03:00
amosblomqvist 388addff3e release: prepare 0.3.3 v0.3.3 2026-10-23 06:18:51 +03:00
amosblomqvist c36c1c6b4d ui: simplify import feedback and shorten waiting status 2026-10-23 06:14:33 +03:00
amosblomqvist a67366005a Merge notes import reliability repair 2026-10-23 04:43:56 +03:00
amosblomqvist 2d67376b76 fix: always run explicit notes imports and surface failures 2026-10-23 04:43:56 +03:00
amosblomqvist aef01c44a0 Merge provider credential repair 2026-10-23 04:26:25 +03:00
amosblomqvist 261a9b9927 fix: honor selected-provider credentials in visual and PDF agents 2026-10-23 04:26:25 +03:00
amosblomqvist 1c5024c8c2 release: prepare 0.3.2 v0.3.2 2026-10-21 00:41:53 +03:00
amosblomqvist 01e7b17fcd Merge persistent practice nudges for 0.3.2 2026-10-21 00:30:43 +03:00
amosblomqvist c4c15b8fd2 fix: keep practice problems active through failed attempts 2026-10-21 00:30:43 +03:00
amosblomqvist 7f95753cf2 fix: share question math repair with practice displays 2026-10-21 00:00:20 +03:00
amosblomqvist 0ebb88ec08 release: prepare 0.3.1 v0.3.1 2026-10-20 16:40:43 +03:00
amosblomqvist 94b63c6ba7 fix: own demo browser lifetime through cross-platform IPC 2026-10-20 15:56:19 +03:00
amosblomqvist 3d70e0da86 fix: announce demo browser only after CDP is ready 2026-10-20 15:15:28 +03:00
amosblomqvist b39d5cd6ab fix: include packaged demo runtime and verify browser payload 2026-10-20 14:51:40 +03:00
amosblomqvist 32febaaae7 ci: allow release verifier to read unpublished drafts v0.3.0 untagged-98e30a568dba8637f58e 2026-10-17 15:15:59 +03:00
amosblomqvist c32d7a89af build: fix macOS CI signing keychain password handling 2026-10-17 14:48:32 +03:00
amosblomqvist 6b29688c47 release: prepare 0.3.0 and README screenshots 2026-10-17 14:09:48 +03:00
amosblomqvist 3d1ad38e46 ui: unify practice composer actions and node picker copy 2026-10-17 01:06:28 +03:00
amosblomqvist 487a63eaa5 ui: polish first-run setup copy and dialog dismissal 2026-10-17 00:38:57 +03:00
amosblomqvist 15772f47c9 ci: update Actions to supported Node 24 runtimes 2026-10-16 22:51:42 +03:00
amosblomqvist a0a5018a42 chore: record bundled optional Tailwind WASM dependencies 2026-10-16 21:24:41 +03:00
amosblomqvist c0ad63a940 skill: add portable read-only learning-data readers 2026-10-16 21:24:27 +03:00
amosblomqvist b3c9f9e18b math: heal overescaped LaTeX commands in question displays 2026-10-16 21:24:14 +03:00
amosblomqvist 1a11de5cee license: document the free-forever promise 2026-10-16 21:24:06 +03:00
amosblomqvist 5da0d407ab release: use macOS 26 for Icon Composer packaging 2026-10-13 18:41:34 +03:00
amosblomqvist 91672160c2 release: add storefront artwork and draft completeness gate 2026-10-13 15:41:43 +03:00
amosblomqvist cf042b25e7 icons: per-platform icon set — real Liquid Glass on macOS, flat design on Windows/Linux
The hand-packed icns was pixel-clean (verified by unpacking and scanning
every size), but macOS 26 composites legacy .icns icons into the Liquid
Glass system at render time; stacked on Icon Composer's baked PNG-export
lighting, that clips the rim highlights into the near-corner specks and
abrupt highlight ends (owner report 2026-10-13). The fix is the real
layered icon: mac.icon now points at the Icon Composer document
(build/icon.icon, copied from ~/Documents/Affinity/lh-logo) and
electron-builder compiles it via actool into Assets.car — macOS 26+
renders the true Liquid Glass design (dark/tinted variants included).

actool's backwards-compat icns caps at 256px, so scripts/after-pack.cjs
swaps in the existing full-res build/icon.icns before signing: pre-Tahoe
macOS keeps today's quality, Tahoe gets the layered icon.

Windows/Linux get the owner's flat design (rounded squircle with baked
transparency): scripts/make-icons.mjs renders build/icon-flat.svg via
resvg into build/icon.ico (16→256 PNG entries) + build/icon.png (512),
and electron-builder.yml pins win.icon/linux.icon.

desktop:dist injects DEVELOPER_DIR (actool needs Xcode; the machine
selects CommandLineTools by default, CI's setup-xcode takes precedence
via the :- default). The release workflow's mac job selects Xcode 26+
explicitly. Verified locally: mac --dir build (Assets.car + checksummed
full-res fallback + CFBundleIconName/IconFile) and the win-unpacked exe
carries our ico bytes; NSIS/AppImage assembly is CI's (cross-build
tooling can't run on arm64 macOS). Runbook updated. 1610/1610.
2026-10-13 10:51:22 +03:00
amosblomqvist 5601a98335 dialogs: delete dialogs drop the serif display title for the abort-turn look
Titles become text-sm font-semibold in destructive red — JetBrains Mono
via the UI default, matching the abort-turn/dismiss-question dialogs the
owner named as the ideal look. Node and session names below the title
drop the sized-up text-lg for normal text-sm, still white mono, no
code-block chrome. Settings and Setup keep their serif titles by owner
ruling; abort-turn already renders this way. 1610/1610 both configs;
verified live on the running dev server.
2026-10-13 09:54:43 +03:00
amosblomqvist 2a8f65de6e graph: session deep links reliably jump to the source message
The mount-time jump never fired on real graph-link arrivals: the
transcript scroller's ref is attached by a later sibling, and the queued
rAF was cancelled outright whenever use-stick-to-bottom re-created its
context while the initial scroll settled — every link landed at the
bottom (owner report 2026-10-13).

Rewrite the mount path as a synchronous 64ms retry watcher that keeps
running past its first success (hydration/adoption can replace the
jumped-to node), with a ~20s watchdog for cold-compile SSR streams
(observed 6.8s). jump() now reads the stick-to-bottom context through a
ref so effect identities stay stable, and the unmount cleanup no longer
strips a live flash. Verified live on real data: full load, SPA link
navigation, and in-session hashchange all land the anchor 16px from the
scroller top with the 2s highlight.

Also gives the node card's session/file rows matching horizontal and
vertical padding (px-2 py-1.5).
2026-10-13 09:28:09 +03:00
amosblomqvist cdd8ac047e sessions: source-message deep links from the graph + session Find (Cmd/Ctrl+F) 2026-10-13 08:26:31 +03:00
amosblomqvist 664c1bfed2 extraction: message-granular proposition anchors; factory budget back to 4096 2026-10-13 08:26:31 +03:00
amosblomqvist d653ba0e91 math: render escaped dollars inside inline math
micromark-extension-math's inline closer is code-span logic — any
size-matched $ run closes, backslash-escaped dollars included — so
"$x = \$5$" closed at the escape, errored in KaTeX, and could cascade
into later text. KaTeX itself renders the escaped dollar fine, and its
own auto-render scanner skips escaped dollars, so the author's intent
is unambiguous.

Fix at the render seam (transformMathDelimiters): inside a balanced
inline span, an escaped dollar becomes the dollar-free
\text{\textdollar} before tokenization, with an escape-aware closer
(odd-backslash dollars never close; even-backslash row-break closers
keep closing). Display spans are untouched (a lone $ can't close $$ —
the escape already survives there), prose escaped dollars, code, and
unbalanced spans pass through, and spans without escaped dollars emit
byte-identical text — corpus-verified over 489 dollar-bearing fields
in 40 real sessions (35 changed, all escaped-dollar spans; the
economics session's dollar-amount math now renders).

The latex-testing session's Test-6 question renders 14 KaTeX spans
with zero errors (was 12 + 2 errors). 1578/1578 tests both configs;
typecheck, lint, build, and Electron-runtime smoke green.
2026-10-13 06:36:05 +03:00
amosblomqvist bf29a2070f math: dollar delimiters end-to-end (exact answers, escaping examples, context rendering)
- switch the math authoring/rendering contract from \(...\)/\[...\] to the
  standard $...$ inline / $$...$$ display: prompts (20-question-tools,
  40-formatting), singleDollarTextMath on the renderer, legacy reader kept,
  and escape-debris recovery extended to dollar spans (mirroring micromark
  delimiter-run rules)
- exact answer membership now precedes debris cleanup in
  coerceCorrectAnswer (calculus incident: an exact sentence-final-period
  label was stripped as model debris, then rejected); option keys are
  passed at the boundary/grading seams, the dock no longer pre-coerces
- a complete, phase-correct JSON-escaping example rides the probe/quiz
  tool descriptions (serialized from one canonical body; quiz leads with
  type+nodeId), plus the one-sentence JSON-escaping rule in 40-formatting
- ask option descriptions render markdown/LaTeX in the pending dock;
  settled cards keep the details line and option descriptions
  retroactively, read from the persisted call arguments (chat passes
  part.input to AnsweredCard)

1566/1566 tests on both navigator configs; typecheck, lint, production
build, standalone packaging, and Electron-runtime smoke all green.
2026-10-13 06:24:33 +03:00