Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1579 commits
Select commit Hold shift + click to select a range
06355f7
Merge branch 'worktree-agent-a41721622595785a0' into claude/notes-flo…
claude Oct 5, 2026
351fae0
tests: one shared copy of each frontend file across the modules that …
claude Oct 5, 2026
f3f87c8
CHANGELOG: test workers stay under 1 GB
claude Oct 5, 2026
24c1a83
Graph: PageRank reads a link's five columns, not 10,000 EntryLink obj…
claude Oct 5, 2026
7d44ef1
op3-1005: what landed, what is left in this scope, found and not veri…
claude Oct 5, 2026
6c4164c
Merge branch 'worktree-agent-a12d3cb222913b66e' into claude/notes-flo…
claude Oct 5, 2026
1d97eab
Mind maps: plain-text outline export and .txt import; an outline file…
claude Oct 5, 2026
aa4c5b7
Merge branch 'claude/notes-flow-rebuild' into worktree-agent-a1770758…
claude Oct 5, 2026
d3b794e
Sweep: timelinetable.js crosses the feed/table breakpoint and counts …
claude Oct 5, 2026
65a834d
Sweep: phonechrome.js builds a fresh text box on the board step
claude Oct 5, 2026
0e02587
Settings, Models: an installed model is offered only the uses its kin…
claude Oct 5, 2026
5cbbf1f
Whiteboard file's last ten off-band widths onto 819.98/820 (allowance…
claude Oct 5, 2026
a52a373
Merge branch 'worktree-agent-a824a1d56c58bcf75' into claude/notes-flo…
claude Oct 5, 2026
a83b9a4
First drag after boot scrolls at the list edge; first-use lazy sweep
claude Oct 5, 2026
4b1db74
Empty lines: the last nine (Documents, Chat, Ask, graph pane, board o…
claude Oct 5, 2026
85e6f78
Reminders: a hovered row's actions cover its time whole
claude Oct 5, 2026
a098088
Empty states: no floating hairline over the Ask Atlas offer
claude Oct 5, 2026
56f50cc
Note cards: task lines draw as boxes, not "- [x]"
claude Oct 5, 2026
11df185
Library: view switch and board placeholders before the data arrives
claude Oct 5, 2026
e798310
contrast.js: await the Guide's lazy bundle before drawing into it
claude Oct 5, 2026
368b4c5
CI's first full run after the leak fix: RapidOCR tests write their PN…
claude Oct 5, 2026
427b48b
First-use sweep: palette, Guide, category chip, Manage categories; do…
claude Oct 5, 2026
7981631
test_badge_recipe: expect "In use for", the model cards' label
claude Oct 5, 2026
3186fb5
test_ui_recipes: the installed models are drawn under the one setting…
claude Oct 5, 2026
4f8aeb9
Notes dock: the find zone never narrower than its controls
claude Oct 5, 2026
e187920
Tests: make test_debug_health.py deterministic under load
claude Oct 5, 2026
463f1e0
Settings: an empty status line takes no room
claude Oct 5, 2026
7e595bc
Sweep: tablefullclose.js asserts the full view's X meets --target-min
claude Oct 5, 2026
e772626
Tests: make test_lexical_filing.py deterministic under load
claude Oct 5, 2026
1f008a2
Sweeps: comments name archive/agent-remaining/ for mindmap.md and map…
claude Oct 5, 2026
eede40a
Gate: the lint set runs test_help_controls.py; a test pins the unsele…
claude Oct 5, 2026
797d159
Test: the kg2 10k cost compares CPU time, ceiling 18x
claude Oct 5, 2026
f30d795
Sweep: skeletons.js reads again every 100 ms until the held answer is…
claude Oct 5, 2026
237d3d9
Settings: text fields wrap instead of shrinking; no cut-off hints
claude Oct 5, 2026
290261d
Board objects in a note: a second draw waits on the first look for th…
claude Oct 5, 2026
2204907
Mind maps: Study the map (decision 36) and a topic's due day with Rem…
claude Oct 5, 2026
002d956
Merge branch 'claude/notes-flow-rebuild' into worktree-agent-a1770758…
claude Oct 5, 2026
3f83d1a
Whiteboard: the Board menu closes when its six action rows are pressed
claude Oct 5, 2026
3c067df
op5-1005: the remaining list, with hashes
claude Oct 5, 2026
2e0422a
Docs: OPEN.md's carried rows checked against the head, closed rows to…
claude Oct 5, 2026
fe826cd
Note cards: connection pills one line at 390
claude Oct 5, 2026
5d4fc30
Tests: make test_relations_kg2.py deterministic under load
claude Oct 5, 2026
ef2c31e
BACKLOG §14: pickup notes for the six tools, deferred until after PR 162
claude Oct 5, 2026
8e3bc6c
Note cards: the task box at the text's size, not the list's 28px tick
claude Oct 5, 2026
f55767d
qa1005-polish.js: the tasks check counts a task box taller than 20px
claude Oct 5, 2026
fa1f10d
Library: the empty overview line reads as a sentence
claude Oct 5, 2026
fe4bac0
Tests: make test_extras_download.py deterministic under load
claude Oct 5, 2026
a8fb6d0
Tests: make test_suggestions_inbox_kg9.py deterministic under load
claude Oct 5, 2026
8b931f4
Map study marks read through prefs.json (the one door to saved settin…
claude Oct 5, 2026
d4ece6d
Notes: hold an edited note's place while its form's file loads
claude Oct 5, 2026
e5e0b13
Tour: steps with nothing to point at on a tablet-width window leave t…
claude Oct 5, 2026
15508da
Merge branch 'worktree-agent-aaa7763883ba50968' into claude/notes-flo…
claude Oct 5, 2026
e0dd83d
Tests: make test_edit_embeds_off_request.py deterministic under load
claude Oct 5, 2026
19e639f
Packaged app: alembic.ini is plain ASCII, so the Alembic stamp runs o…
claude Oct 5, 2026
1d141d8
Merge branch 'worktree-agent-a7122b262002da3b8' into claude/notes-flo…
claude Oct 5, 2026
92bff7a
Logs filter hint fits a phone; first-use edit gesture on a phone
claude Oct 5, 2026
adb095b
Extras: an install is marked not running only after its history row i…
claude Oct 5, 2026
891f63a
Packaging: both specs list every app module by file; needle_provider …
claude Oct 5, 2026
7c51c8b
Manuscript look: muted ink clears 4.5:1 on Settings cards
claude Oct 5, 2026
89e848c
Packaged app: the bootloader splash is asked for only when one exists
claude Oct 5, 2026
87676c5
Docs hygiene: OPEN.md rows found built moved to HISTORY (608, 596, ba…
claude Oct 5, 2026
0a7b4fd
Graph: the zoom strip's four buttons are asserted hit and clear of th…
claude Oct 5, 2026
622bd00
Windows: tray Restart quotes its argv; abrupt exits release the insta…
claude Oct 5, 2026
b4b45bc
Docs hygiene: BACKLOG rows found built moved to HISTORY (4b, run Undo…
claude Oct 5, 2026
f398f41
Gate: --staged runs the lint set once, against the index, not also th…
claude Oct 5, 2026
9588157
Windows: atomic writes retry a briefly refused rename and write UTF-8
claude Oct 5, 2026
f9f81d8
qa-1005: what landed, the sweep counts before and after, what is left
claude Oct 5, 2026
e308cb9
Docs hygiene: DOCUMENTS_PLAN section 13's DOCX both ways, Markdown wi…
claude Oct 5, 2026
535673e
Packaged app: no bytecode written beside the exe
claude Oct 5, 2026
88fd67f
Sweeps: contrast.js reads a board and a map (open, all selected, each…
claude Oct 5, 2026
3557518
Merge claude/notes-flow-rebuild (adb095b) into qa-1005
claude Oct 5, 2026
261273f
Docs hygiene: MINDMAP_PLAN 12.3 graph sync, Summarise this branch and…
claude Oct 5, 2026
059b75b
Packaging: bundle the standard library for the optional packages
claude Oct 5, 2026
eb25901
Sketch pad: ink-dot targets no longer overlap below 820 (the gap-0 ru…
claude Oct 5, 2026
005738e
qa-1005: run3 numbers after the load, and the merge at adb095b
claude Oct 5, 2026
8d95857
Docs hygiene: UI_MODERNISATION_PLAN phases 0 to 6, the 2026-09-09 eve…
claude Oct 5, 2026
d85d4a4
Packaged extras: bundled requirements.txt constrains pip; Linux asks …
claude Oct 5, 2026
a8e7de3
Docs hygiene: WHITEBOARD_PLAN placed blocks 25, 43, 47, 48, 52, 56, 6…
claude Oct 5, 2026
dab77ad
Capabilities: the packaged app does not offer an MCP command it canno…
claude Oct 5, 2026
e7e7d40
kg9 merge-candidates budget read in this machine's units: a reference…
claude Oct 5, 2026
2a29c7f
Write with Atlas on a phone: what to write takes its own line so the …
claude Oct 5, 2026
c60d5f1
INBOX 640-643: tab slide, Coggle/Illustrator/Photoshop/Miro/OneNote r…
claude Oct 5, 2026
a489f6e
Docs hygiene: WORLD_CLASS_PLAN duplicate table rows, row 26, 261, I7,…
claude Oct 5, 2026
4511f39
Merge branch 'worktree-agent-adf82e755ffdc0924' into claude/notes-flo…
claude Oct 5, 2026
4482ea1
Asset stamps: stylesheets get their own hash, not app.js's
claude Oct 5, 2026
aff2350
INBOX 644: meeting notes redesign; release 0.4.0 held for 640-644
claude Oct 5, 2026
ccbce0f
Windows launchers: the shortcut uses the shell's Desktop and survives…
claude Oct 5, 2026
6d8acfc
Sweeps: nested frames measured at a phone's fitted zoom; left1005-fra…
claude Oct 5, 2026
e60ed3b
Desktop launch: reuse a running MemoryMap only when it serves this da…
claude Oct 5, 2026
5e2e487
Installer: version read from __version__, tag checked; upgrades repla…
claude Oct 5, 2026
3e8509d
Package check: smoke every lazy asset and the API, a second extra, an…
claude Oct 5, 2026
4489b54
Interface animations: a switch of its own in Appearance (data-ui-moti…
claude Oct 5, 2026
0557d5c
CI: the drag-edge press is one const the bundle marks ready, and the …
claude Oct 5, 2026
a6d0a39
Uninstaller: "delete the optional packages" also removes the download…
claude Oct 5, 2026
f1cd407
Filing prompt carries the notes that read like this one (WC I7 eviden…
claude Oct 5, 2026
6b56a47
INBOX 645: release close-out order (screenshots, static landing page,…
claude Oct 5, 2026
eb8358a
Maps: a topic the render pass did not repaint keeps its own measured …
claude Oct 5, 2026
e406d37
Repair: leave a running copy's window profile alone
claude Oct 5, 2026
c3fde08
Whiteboard: links follow a card, box or selection while it turns, not…
claude Oct 5, 2026
c483119
Skeleton sweep: chat list's boot answer is expected; boottime.js meas…
claude Oct 5, 2026
509f493
Merge branch 'worktree-agent-ae7b8d478e0f36d00' into claude/notes-flo…
claude Oct 5, 2026
fe95a60
agent_common: current branch, trailers from the latest commit, no age…
claude Oct 5, 2026
432b748
windows-packaging-1005: the remaining list, with hashes
claude Oct 5, 2026
fac4e13
E2E: capture and filing driven through the real composer on a seeded …
claude Oct 5, 2026
d8183cf
One sliding indicator for every strip: the top bar, sub-tabs, segment…
claude Oct 5, 2026
7d20f94
Merge branch 'claude/notes-flow-rebuild' into worktree-agent-aaa724b3…
claude Oct 5, 2026
6e6ea50
Menus: every menu fades out over 120ms through the one hidden class (…
claude Oct 5, 2026
443b25b
Timeline on a phone: the calendar strip's spacing steps down a token …
claude Oct 5, 2026
0942651
Notes: Write with Atlas becomes the Writing room (INBOX 648); INBOX 6…
claude Oct 5, 2026
0ae220f
Library: an overtaken cross-fade render no longer draws an empty list…
claude Oct 5, 2026
506a122
Sweeps: phonechrome.js asserts the page ends where the status bar beg…
claude Oct 5, 2026
68ddaf2
INBOX 649-652: chat progress phases, chat-bubble avatars, active line…
claude Oct 5, 2026
76fdfa4
CLAUDE.md: integration branch name, the 3+3 agent cap, worktree agent…
claude Oct 5, 2026
4dcf21d
OCR workspace on a phone: the page-size track grows round its 44px bu…
claude Oct 5, 2026
3f8bb53
The polish set on Interface animations: press, focus ring, hover, men…
claude Oct 5, 2026
389787a
CI: installer version passed in as /DMyAppVersion from __version__ (t…
claude Oct 5, 2026
2fbf4f4
E2E: search by word and meaning, Ask with no model and its citations,…
claude Oct 5, 2026
e48e60f
Desktop launch claims instance.lock before the window opens
claude Oct 5, 2026
5725426
Documents: the caret's line is washed while line numbers show (INBOX …
claude Oct 5, 2026
dcf1b00
Sweeps: the whiteboard rail's Notes tab skeletons measured (5 at 300m…
claude Oct 5, 2026
bb1ed91
Sweeps: lib.js openBoardsTab and waitForBoardOpen (the Boards sub-tab…
claude Oct 5, 2026
80ec91e
Silent update reopens the app it closed
claude Oct 5, 2026
534d1ae
Gate: --sweeps drops fifteen sweep names whose files were deleted; a …
claude Oct 5, 2026
6b1693a
start.bat reads its own path before delayed expansion
claude Oct 5, 2026
92286cf
MINDMAP_PLAN §14: core nodes, levels and the icon library, audited an…
claude Oct 5, 2026
981cb66
Editors: copy and cut with no selection take the whole line, VS Code'…
claude Oct 5, 2026
bae18a3
Specs leave __pycache__ out of the bundle
claude Oct 5, 2026
ea8e6b8
windows-packaging-1005: record the spec commit hash
claude Oct 5, 2026
5baa15b
Merge branch 'worktree-agent-ab946ba8ce54a1549' into claude/notes-flo…
claude Oct 5, 2026
21f8a61
E2E: reminders from plain words, done, deleted and undone; the Timeli…
claude Oct 5, 2026
48ce523
Agent activity stays shut for start-up and upkeep tasks (the search m…
claude Oct 5, 2026
08d5829
Map levels: the centre, main branches and sub-topics draw as a hierar…
claude Oct 5, 2026
439ef10
Tour: Settings steps use the 820 the section strip really changes at …
claude Oct 5, 2026
823e442
Timeline: sticky table head and bucket headers get their opaque base …
claude Oct 5, 2026
41da959
Chat surfaces: one phase vocabulary through progressLine.setPhase (IN…
claude Oct 5, 2026
47294d4
Docs: CHANGELOG and INBOX 649, 651, 652 resolved to HISTORY
claude Oct 5, 2026
ea61aeb
Map rail set on every board fetch (INBOX 657), map line-curve undo ho…
claude Oct 5, 2026
90ce92b
Merge branch 'worktree-agent-ae9e03b58767572d0' into claude/notes-flo…
claude Oct 5, 2026
60e7e2f
Merge branch 'worktree-agent-a36c688cd19004795' into claude/notes-flo…
claude Oct 5, 2026
8eb7dc8
Map look: each level's look in How this map looks, Use this look for …
claude Oct 5, 2026
305894b
Line clipboard state is one const (let ratchet); one afterMenuExit fo…
claude Oct 5, 2026
84f2633
INBOX 660: drag onto a delete target on boards and maps
claude Oct 5, 2026
cb89715
Motion pass docs and fixes: no nested sub-tab fade, chips press, CHAN…
claude Oct 5, 2026
9c807cf
Documents: New document makes a new document on a first visit, and a …
claude Oct 5, 2026
2ad4baa
ROADMAP: next PR first (OneNote and meeting notes, the code editor, t…
claude Oct 5, 2026
5ad7cf1
Boot budget: Attach row, vault unlock, skill verify and Remind me mov…
claude Oct 5, 2026
b4155a6
Merge branch 'worktree-agent-a6a27be26321f9710' into claude/notes-flo…
claude Oct 5, 2026
94b8b70
One icon and emoji picker, and a map topic's icon from it (MINDMAP_PL…
claude Oct 5, 2026
11b90d0
Boards: Create, New board and New mind map wait for the boards' code …
claude Oct 5, 2026
10cc52a
Back/forward list rows: kind icon, plain title, lazy thumbnail, tab l…
claude Oct 5, 2026
1a2e910
Merge claude/notes-flow-rebuild (2ad4baa): perfpolish's menu exit kep…
claude Oct 5, 2026
727fc7b
Merge claude/notes-flow-rebuild (b4155a6): its boot-budget lazy moves
claude Oct 5, 2026
bb806e8
Stickers: an emoji or icon dragged or picked onto a board or map, or …
claude Oct 5, 2026
2e58384
INBOX 654 fixed: marked with the measured line and moved to HISTORY
claude Oct 5, 2026
dfd3a65
Graph: Concept maps waits for the Library before pressing its Boards …
claude Oct 5, 2026
34a965c
Phone action sheets leave with the menus' fade, not in one frame
claude Oct 5, 2026
c5f5267
Merge branch 'worktree-agent-aaa5bdec6fcd653d9' into claude/notes-flo…
claude Oct 5, 2026
69257a7
E2E first-run: empty notebook's next step, a first note with no model…
claude Oct 5, 2026
87241de
Editors: Emoji or icon in the note toolbar, the document's Insert men…
claude Oct 5, 2026
c069120
Phone header fits 320, 360 and 390 in every text size and density
claude Oct 5, 2026
1d67652
Docs: MINDMAP_PLAN §14 build record to HISTORY, INBOX 642 resolved, 6…
claude Oct 5, 2026
90080b5
Merge branch 'worktree-agent-a86809db022c80bc8' into claude/notes-flo…
claude Oct 5, 2026
be61aab
Merge branch 'worktree-agent-a14e7c2cf58953415' into claude/notes-flo…
claude Oct 6, 2026
1cf2159
Test: the per-client throttle test earns a wait no machine's bcrypt c…
claude Oct 6, 2026
ab5f8e8
Import: Markdown imports link their [[wiki links]] and a second impor…
claude Oct 6, 2026
447d6fb
Sweeps: selmenu picks a selectable paragraph, libtab creates its own …
claude Oct 6, 2026
e4c1b76
Map topic handlers use the topic's current object; mapstrip checks th…
claude Oct 6, 2026
bdbad35
Landing site: docs/index.html rebuilt as one static page (INBOX 645)
claude Oct 6, 2026
ebde40c
Palette: Take the guided tour; E2E shell spec (tour, companion, a tem…
claude Oct 6, 2026
3ff74b5
Docs: INBOX 645 landing-page step marked built; landing sweeps; landi…
claude Oct 6, 2026
912882c
Merge branch 'worktree-agent-ae70f802266aea670' into claude/notes-flo…
claude Oct 6, 2026
8f6a7cd
Atlas: the small head (under 28px) is a miniature of the bust, both l…
claude Oct 6, 2026
600f160
e2e-1005: inventory with status per flow; the e2e config can drive se…
claude Oct 6, 2026
1543b4c
kebab-viewport.js splits by family and fails on not-found; CHANGELOG …
claude Oct 6, 2026
e87d8b5
Merge branch 'worktree-agent-a122c1010be7eb1a8' into claude/notes-flo…
claude Oct 6, 2026
d1feb38
Icon picker: the tile hover transition runs on --ui-fast so Interface…
claude Oct 6, 2026
6bf2c73
Test: a text object's round trip lists the new sticker field (the tes…
claude Oct 6, 2026
5a20123
Global scope: map and icon picker caches are one const each, two same…
claude Oct 6, 2026
82ce01c
Status bar: AI off is the AI sparkle with a slash, neutral grey (INBO…
claude Oct 6, 2026
902ffcb
Filing: the composer's watch follows a stand-in to the model's answer…
claude Oct 6, 2026
f36ba9e
Icon picker: LAZY_MODULES.iconPicker names its script and stylesheet,…
claude Oct 6, 2026
c52c497
Merge branch 'worktree-agent-a1a8442067977be5d' into claude/notes-flo…
claude Oct 6, 2026
2de4225
Boards and maps: drag an item onto Drop here to delete (INBOX 660)
claude Oct 6, 2026
b769d17
Docs: INBOX 650, 656, 660 marked Fixed with measurements and moved to…
claude Oct 6, 2026
5a3c571
Phone sheet exit on the Interface animations switch (--ui-exit, no me…
claude Oct 6, 2026
6a7e362
Merge branch 'worktree-agent-a59384a4a348831f2' into claude/notes-flo…
claude Oct 6, 2026
b57859e
Ask: a question naming a category as where its notes are is answered …
claude Oct 6, 2026
ec00847
Scratchpad: remove 61 one-off sweeps and probes the inventory marks D…
claude Oct 6, 2026
0039916
Whiteboard: fold the three trash-target lets into one const object (7…
claude Oct 6, 2026
73efd8c
Dashboard: boards widget's New board waits for the boards' code; a li…
claude Oct 6, 2026
ab7d7b2
Notes: an unsaved edit in the note form survives a reload or a closed…
claude Oct 6, 2026
4a818e6
E2E: captureNote reads the new note from the list when the status lin…
claude Oct 6, 2026
3b18100
Merge branch 'worktree-agent-a3950ded7337993da' into claude/notes-flo…
claude Oct 6, 2026
d79424b
WIP: E2E reloads in one navigation (reloadApp), private-note spec on …
claude Oct 6, 2026
e1a6852
Merge branch 'claude/notes-flow-rebuild' into worktree-agent-a3950ded…
claude Oct 6, 2026
571d7f3
Showcase seed: map icons and a look per level
claude Oct 6, 2026
8a94883
readmeshots.js: answer the update question, audit toasts, skeletons a…
claude Oct 6, 2026
268704a
Global-scope ratchet: openTour guards out (a stand-in), four document…
claude Oct 6, 2026
7f77ce3
E2E: the saved-conversation spec makes its own conversation (it skipp…
claude Oct 6, 2026
06d71f2
Kept note edit reads and writes through prefs (shorter, same behaviour)
claude Oct 6, 2026
d11befa
README screenshots retaken: all 22, fresh showcase notebook, mind map…
claude Oct 6, 2026
b154d4e
README: features added this release, update-check question, HTTPS note
claude Oct 6, 2026
5e6416f
Boot scripts: the status bar's slot list and its Settings rows move t…
claude Oct 6, 2026
025dd8f
INSTALL: four ways in, tray menu, first-start update question, --rein…
claude Oct 6, 2026
224272a
MODELS: suggested-downloads groups and fit labels match the app
claude Oct 6, 2026
1452175
PRIVACY: the update check row says the first start asks once
claude Oct 6, 2026
8d0aec9
Documents: words typed just before a reload are kept on this device a…
claude Oct 6, 2026
c07215a
TROUBLESHOOTING: other devices and the self-signed certificate
claude Oct 6, 2026
78e882b
ARCHITECTURE: directory map, routers and migration head match the tree
claude Oct 6, 2026
daf9cae
ARCHITECTURE: script counts and kinds, graph layouts, test count
claude Oct 6, 2026
1f915b3
CONTRIBUTING and ARCHITECTURE: the update check asks once on first start
claude Oct 6, 2026
c5548a3
DESIGN and ARCHITECTURE: tokens, classes and names that no longer exist
claude Oct 6, 2026
65864c2
CHANGELOG and INBOX 645: the documentation pass is built
claude Oct 6, 2026
fe72f4e
CLAUDE.md: asset stamps are per-file hashes now (not _BOOT_TOKEN); th…
claude Oct 6, 2026
2e1e873
E2E: global setup waits for the unlock and the dialogs, not fixed sle…
claude Oct 6, 2026
5d2faa6
Dictate without the voice add-on and Compress with nothing to compres…
claude Oct 6, 2026
430da2e
Reminders: Add with a field left empty says so plainly, not as an err…
claude Oct 6, 2026
596089e
Boot CSS: the Library bundle's whiteboard rules move to library-lazy.…
claude Oct 6, 2026
7bfa414
Merge branch 'worktree-agent-a5449f7548a6b84ce' into claude/notes-flo…
claude Oct 6, 2026
24107d3
Tags: a late tag list does not open over Save after the tag was enter…
claude Oct 6, 2026
0ea73c5
e2e-1005: inventory closed (no model, unsaved work, learnability, rea…
claude Oct 6, 2026
58decee
Merge branch 'claude/notes-flow-rebuild' into worktree-agent-a3950ded…
claude Oct 6, 2026
59b8233
Tags: the waiting open is one object (the global-scope ratchet), mark…
claude Oct 6, 2026
b41cac2
Tests follow the merged code: tour.js is a lazy piece, settleCaptureS…
claude Oct 6, 2026
81f2b66
Test: the landing-page script scan is case-insensitive and lenient ab…
claude Oct 6, 2026
fc1e1a7
Tags: a tag entered before the list's code arrived no longer opens th…
claude Oct 6, 2026
bb6df85
Merge branch 'main' into claude/notes-flow-rebuild
Braydenh563 Oct 6, 2026
be49af4
e2e-1005: final numbers (49 specs green with no retries, 3.5 min), th…
claude Oct 6, 2026
4b6f89c
Merge remote-tracking branch 'origin/claude/notes-flow-rebuild' into …
claude Oct 6, 2026
22c3169
Merge branch 'worktree-agent-a3950ded7337993da' into claude/notes-flo…
claude Oct 6, 2026
b4fbe42
Test: the landing-page scan's end tag matches anything a browser clos…
claude Oct 6, 2026
ecbad3b
Calibrate filing certainty: cap at 95, lower on disagreeing words and…
claude Oct 6, 2026
94f1747
Import from other apps: the ENEX and Notion patterns read in one pass
claude Oct 6, 2026
3e18eb0
Show filing certainty as an estimate: doubt line, alternatives, Filed…
claude Oct 6, 2026
1d3dc56
Expected situations are plain toasts, not red with Report this
claude Oct 6, 2026
6fe2f1b
Filing with no model: a clear lead (twice the runner-up) files even w…
claude Oct 6, 2026
ca61a11
Merge branch 'worktree-agent-adf4af6a5148a3410' into claude/notes-flo…
claude Oct 6, 2026
3263bff
Merge branch 'worktree-agent-a3fc0f99358b8857f' into claude/notes-flo…
claude Oct 6, 2026
df31d86
Agent mode: the named-site reader is linear on a long dotted question
claude Oct 6, 2026
74a9e2f
CI: the kept document edit goes through prefs, the place is restored …
claude Oct 6, 2026
e6f5f41
CodeQL py/empty-except: the five new bare passes say why
claude Oct 6, 2026
92dfd7f
Map theme and context windows: an infinite number is dropped, not a 500
claude Oct 6, 2026
04a69b8
Release: the notes are the version's CHANGELOG section, cut under Git…
claude Oct 6, 2026
b603ac0
final-scan-1006: log after five fixes
claude Oct 6, 2026
184030b
Release: the dispatch input reaches the script through env, not splic…
claude Oct 6, 2026
0609b5a
final-scan-1006: findings, six fixes, five open
claude Oct 6, 2026
524ffa7
Merge branch 'worktree-agent-a5979309f02e52445' into claude/notes-flo…
claude Oct 6, 2026
b899f39
Release 0.4.0: version in __init__, pyproject, README and every ?v= s…
claude Oct 6, 2026
904d443
README: a short, scannable top (links, one screenshot, five reasons) …
claude Oct 6, 2026
1d80d03
INBOX 640 and 645 resolved: the tab slide and the 0.4.0 close-out are…
claude Oct 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
blank_issues_enabled: true
contact_links:
- name: Question or discussion
url: https://github.com/Braydenh563/MemoryMap-AI-v0/discussions
url: https://github.com/Braydenh563/MemoryMap-AI/discussions
about: For open-ended questions and ideas, start a discussion instead of an issue.
11 changes: 9 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,14 @@ jobs:
# z-index or a console exception has never once failed a CI run — every
# layout bug this project has found was found by hand, after shipping.
# This is the fix: a real headless Chromium against a real running app.
name: E2E smoke suite (Playwright)
# Since 2026-10-05 it also drives every main flow the way a person does
# (capture and filing, search, Ask, notes, documents, boards, import,
# backup and restore, spaces, the palette) on a seeded notebook and a
# fresh one, and asserts what is there after a reload: the core flow had
# been broken under thousands of green unit tests (tests-e2e/specs/,
# docs/roadmap/agent-remaining/e2e-1005.md). No model: the no-model
# filing path and the extractive Ask are what is asserted.
name: E2E flows (Playwright)
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
Expand Down Expand Up @@ -148,7 +155,7 @@ jobs:
npm ci
npx playwright install --with-deps chromium

- name: Run the smoke suite
- name: Run the flows
working-directory: tests-e2e
run: npx playwright test

Expand Down
245 changes: 155 additions & 90 deletions .github/workflows/package-check.yml

Large diffs are not rendered by default.

68 changes: 50 additions & 18 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,33 @@ jobs:
tag: ${{ steps.resolve.outputs.tag }}
version: ${{ steps.resolve.outputs.version }}
steps:
- uses: actions/checkout@v7

- name: Resolve from the tag push or the manual input
id: resolve
# The typed version reaches the script as an environment variable,
# never spliced into its text: `${{ inputs.version }}` inside `run:`
# is substituted before bash parses it, so a value with a quote and
# a command in it would run (GitHub's script-injection guidance).
env:
INPUT_VERSION: ${{ inputs.version }}
run: |
if [ -n "${{ inputs.version }}" ]; then
VERSION="${{ inputs.version }}"
if [ -n "$INPUT_VERSION" ]; then
VERSION="$INPUT_VERSION"
else
VERSION="${GITHUB_REF_NAME#v}"
fi
# The tag must say what the code says: the app reports
# src/memorymap/__init__.py's __version__ (About, /health, the
# updater's comparison), and installer.iss stamps the installer
# with it. A tag that disagrees stops the release here, before
# anything is built or published, rather than shipping v0.4.0
# that calls itself 0.3.32 and offers itself as an update forever.
CODE=$(sed -nE 's/^__version__ = "([^"]+)"/\1/p' src/memorymap/__init__.py)
if [ "$VERSION" != "$CODE" ]; then
echo "::error::release version $VERSION does not match __version__ $CODE in src/memorymap/__init__.py"
exit 1
fi
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
echo "tag=v$VERSION" >> "$GITHUB_OUTPUT"

Expand All @@ -72,11 +91,25 @@ jobs:
id: changelog
run: |
VERSION="${{ needs.resolve-version.outputs.version }}"
# Pull the section between this version header and the next
NOTES=$(awk "/^## \[?${VERSION}\]?/,/^## /" CHANGELOG.md | head -n -1 | tail -n +2)
echo "notes<<EOF" >> "$GITHUB_OUTPUT"
# The section under this version's header, up to the next one. Not
# an awk range (`/^## x/,/^## /`): its end pattern matches the
# start line itself, so the range was that one line and the notes
# were always empty. The header is matched as text, so the dots
# in a version are not regex wildcards.
NOTES=$(awk -v v="$VERSION" 'index($0, "## [" v "]") == 1 || index($0, "## " v) == 1 {on = 1; next} on && /^## / {exit} on' CHANGELOG.md)
# A release body is capped at 125,000 characters and the API
# refuses a longer one, failing the release (0.4.0's section is
# about 278,000). Cut at a line end under the cap, in bytes, which
# are never fewer than characters, and point at the full file.
if [ "$(printf %s "$NOTES" | wc -c)" -gt 120000 ]; then
NOTES="$(printf %s "$NOTES" | head -c 120000 | sed '$d')

The full list is in [CHANGELOG.md](https://github.com/${GITHUB_REPOSITORY}/blob/v${VERSION}/CHANGELOG.md)."
fi
DELIM="notes_$(date +%s%N)"
echo "notes<<$DELIM" >> "$GITHUB_OUTPUT"
echo "$NOTES" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
echo "$DELIM" >> "$GITHUB_OUTPUT"

- name: Create release
uses: softprops/action-gh-release@v3
Expand Down Expand Up @@ -141,21 +174,17 @@ jobs:
env:
MEMORYMAP_DATA_DIR: ${{ runner.temp }}/mm-smoke
MEMORYMAP_PORT: "8765"
# The same smoke package-check.yml runs (packaging/frozen_smoke.py):
# every asset, the lazy bundles included, and the API on a fresh
# data dir. A release that cannot serve one of them does not happen.
run: |
"dist/MemoryMap AI/MemoryMap AI.exe" &
pid=$!
for i in $(seq 1 60); do
if curl -sf -o /dev/null http://127.0.0.1:8765/; then
echo "the frozen app served its page after ${i}s"
kill $pid || true
exit 0
fi
sleep 1
done
echo "the frozen app did not answer within 60 s"
cat "$MEMORYMAP_DATA_DIR/logs/desktop-stdio.log" 2>/dev/null || true
failed=0
python packaging/frozen_smoke.py --base http://127.0.0.1:8765 \
--data-dir "$MEMORYMAP_DATA_DIR" --log "$MEMORYMAP_DATA_DIR/logs/desktop-stdio.log" || failed=1
kill $pid || true
exit 1
exit $failed

- name: Install Inno Setup
run: choco install innosetup --no-progress -y
Expand All @@ -165,7 +194,10 @@ jobs:
env:
MEMORYMAP_VERSION: ${{ needs.resolve-version.outputs.version }}
run: |
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" packaging\windows\installer.iss
$version = (Select-String -Path src\memorymap\__init__.py -Pattern '^__version__ = "([^"]+)"').Matches[0].Groups[1].Value
if (-not $version) { throw "no __version__ line in src\memorymap\__init__.py" }
& "C:\Program Files (x86)\Inno Setup 6\ISCC.exe" "/DMyAppVersion=$version" packaging\windows\installer.iss
if ($LASTEXITCODE -ne 0) { throw "ISCC exited $LASTEXITCODE" }

# The MSI ships alongside the .exe, not instead of it (the owner's
# explicit call): the .exe stays the simplest no-terminal path, the
Expand Down
35 changes: 0 additions & 35 deletions .github/workflows/summary.yml

This file was deleted.

Loading
Loading