experiments in a post-browser web
10
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor(changelog): rewrite entries as user-facing summaries, add commit links, fix RSS to plain text

+916 -1102
+250 -339
CHANGELOG.md
··· 16 16 ## 2026-02-19 17 17 18 18 Desktop - Themes 19 - - [x] feat(themes): implement themes-as-extensions Phase 1+2 — unified lifecycle and cmd palette switching (213b) 20 - - Themes are CSS-only extensions served via peek://theme/ protocol 21 - - Switch themes from command palette, auto-discovers installed theme extensions 22 - - Includes default "Peek" theme with bundled fonts 23 - - [x] feat(theme): add 七十二候 micro-seasons theme with traditional Japanese colors (d031) 24 - - Colors change automatically every ~5 days based on Japan's 72 micro-seasons calendar 25 - - Uses 伝統色 (traditional Japanese colors) with automatic dark mode derivation via color-mix() 26 - - [x] fix(themes): copy fonts to theme-peek extension and fix font URLs (da4b) 27 - - [x] fix(editor): improve syntax highlighting readability in dark mode (de99) 19 + - [x] Switchable themes from command palette — themes are now installable CSS extensions ([213b](https://tangled.org/burrito.space/peek/commit/213b4794a5f6dac0f29da22b9317c41fd23563d9)) 20 + - [x] Add 七十二候 micro-seasons theme — colors change automatically every ~5 days based on Japan's 72 seasons calendar ([d031](https://tangled.org/burrito.space/peek/commit/d031c4f42b804bbe2442c1169069264c6ecfa326)) 21 + - [x] Fix theme font loading and URLs ([da4b](https://tangled.org/burrito.space/peek/commit/da4b78bf3077013c31ba650f02dba8a0b393eff9)) 22 + - [x] Improve syntax highlighting readability in dark mode ([de99](https://tangled.org/burrito.space/peek/commit/de993e4710b2c02369c0a0ef378c908f6e11f583)) 28 23 29 24 Desktop - Groups 30 - - [x] feat(groups): add workspace persistence — save and restore window layouts per group (1a25) 31 - - [x] feat(groups): add quick wins — close, search scope, switch, pin (b8a6) 32 - - Close all windows in group, scope search to group, switch between groups, pin windows 33 - - [x] test(groups): add unit tests for groups quick wins (805d) 25 + - [x] Save and restore window layouts per group ([1a25](https://tangled.org/burrito.space/peek/commit/1a25f1d8742a52ec3e849f99b9465cafc61f3089)) 26 + - [x] Close all windows in group, scope search to group, switch between groups, pin windows ([b8a6](https://tangled.org/burrito.space/peek/commit/b8a6befeb2eff51b5638aa4b790b77a74c4ddf52)) 27 + - [x] Add unit tests for group quick wins ([805d](https://tangled.org/burrito.space/peek/commit/805d0993e4c4edc294b57bd463bcfef71d9f0266)) 34 28 35 29 Desktop - Widget System 36 - - [x] feat(sheets): add widget sheet extension with freeform layout (9644) 37 - - [x] feat(hud): migrate HUD to widget sheet system with individual widget pages (4ec6) 38 - - [x] feat(extensions): add widget demo extension (7aeb) 39 - - [x] feat(grid): add freeform layout mode with drag/resize editing (6f05) 40 - - New "freeform" viewMode for peek-grid — drag to move, edge-drag to resize, snap-to-grid 30 + - [x] Add widget sheet extension with freeform layout ([9644](https://tangled.org/burrito.space/peek/commit/96449d04269ac0a14740bad03067ddf2e784b6e3)) 31 + - [x] Migrate HUD to widget sheet system with individual widget pages ([4ec6](https://tangled.org/burrito.space/peek/commit/4ec60504040874495d9439636db38513188aad46)) 32 + - [x] Add widget demo extension ([7aeb](https://tangled.org/burrito.space/peek/commit/7aeb1baa90812f18a26699035eab6487294c78fd)) 33 + - [x] Add freeform layout mode with drag-to-move, edge-drag-to-resize, and snap-to-grid ([6f05](https://tangled.org/burrito.space/peek/commit/6f05c81f835653363d7f5df6ede6f48878495031)) 41 34 42 35 Desktop - Editor 43 - - [x] feat(editor): add vim :set wrap/nowrap, :set number/nonumber, and :q command (4750) 44 - - [x] feat(editor): persist vim :set settings (wrap, lineNumbers) across sessions (ab30) 45 - - [x] fix(editor): support multiple simultaneous editor instances (a3be) 36 + - [x] Add vim :set wrap/nowrap, :set number/nonumber, and :q command ([4750](https://tangled.org/burrito.space/peek/commit/4750ab83412366fa303bd4756fab3c393aebaaf8)) 37 + - [x] Persist vim :set settings across sessions ([ab30](https://tangled.org/burrito.space/peek/commit/ab30313bf529b5065a06a1e55517c2a1c7edff35)) 38 + - [x] Support multiple simultaneous editor instances ([a3be](https://tangled.org/burrito.space/peek/commit/a3beea130920c0f4da96ee99d4021ab673a576b9)) 46 39 47 40 Desktop - Page View 48 - - [x] feat(page): show loading indicator for in-page webview navigations (538f) 49 - - [x] fix(page): rewrite loading indicator — separate lifecycle from visual effect (847d) 50 - - [x] fix(page): ensure page loading glow clears when page finishes loading (1630) 41 + - [x] Show loading indicator for in-page navigations ([538f](https://tangled.org/burrito.space/peek/commit/538f3769aa6cba57af1c12cb57cb14437527a4db)) 42 + - [x] Rewrite loading indicator for reliability ([847d](https://tangled.org/burrito.space/peek/commit/847dd119d0b540cd96f9fa1d9a6bdbd0c6fb2a95)) 43 + - [x] Ensure loading glow clears when page finishes loading ([1630](https://tangled.org/burrito.space/peek/commit/16304f58514b40a14cf040e31826699e83dc93a6)) 51 44 52 45 Desktop - Entity Recognition 53 - - [x] feat(entities): add Phase 1 entity validation framework (64f7) 54 - - [x] test(entities): add unit tests for name-validator module (d81c) 46 + - [x] Add entity validation framework ([64f7](https://tangled.org/burrito.space/peek/commit/64f7a7a470aa06fd7576607113b04cfa9adfbb1c)) 47 + - [x] Add unit tests for name-validator module ([d81c](https://tangled.org/burrito.space/peek/commit/d81c07d73229f5920d1f253b220e2d4fa35d9578)) 55 48 56 49 Desktop - Tauri 57 - - [x] feat(tauri): add system tray with click-to-show (c469) 58 - - [x] feat(tauri): add net-fetch proxy and file dialog commands (83f5) 50 + - [x] Add system tray with click-to-show ([c469](https://tangled.org/burrito.space/peek/commit/c469d9da5ea67e513eb0467bda8550f3f10e1c1c)) 51 + - [x] Add net-fetch proxy and file dialog commands ([83f5](https://tangled.org/burrito.space/peek/commit/83f5a1d261ff53a8d91407131c60218ba2eb2971)) 59 52 60 53 Desktop - Refactoring 61 - - [x] refactor: extract shared modules to app/lib — pubsub, izui, frecency, shortcuts, session (da44, 9ff2, 10f0, e267, 7ed8) 62 - - Platform-agnostic implementations shared between Electron and Tauri backends 54 + - [x] Extract shared modules to app/lib for platform-agnostic use between Electron and Tauri ([da44](https://tangled.org/burrito.space/peek/commit/da44fd3dd4ea7db548b9894687e8cefa18efbe64), [9ff2](https://tangled.org/burrito.space/peek/commit/9ff26e737bf254facffdcc47ec708ec5ef88db23), [10f0](https://tangled.org/burrito.space/peek/commit/10f0bfc0855ac5934ec1f6c7f6843fc5efd0025e), [e267](https://tangled.org/burrito.space/peek/commit/e267e2661139e7ebad0e91ac7e458af05a3502ba), [7ed8](https://tangled.org/burrito.space/peek/commit/7ed8b22556f1e2fbbe26c3cc833956f7cc29a270)) 63 55 64 56 Desktop - Fixes 65 - - [x] fix(drag): use !important CSS classes for hold/drag cursor feedback (6e86) 66 - - [x] fix(sync): make sync now fire-and-forget + add 15s timeout (96ed, 73f9) 67 - - [x] fix: handle macOS open command with local file paths (1ae8) 68 - - [x] fix: prevent opening app directory as file:// URL on startup (e12b) 69 - - [x] fix(ext): use Promise.allSettled for extension loading so one failure doesn't block all commands (d031) 57 + - [x] Fix hold/drag cursor feedback CSS ([6e86](https://tangled.org/burrito.space/peek/commit/6e862be638d70eac3fa1163c6c1dd7e14b11b8f5)) 58 + - [x] Make sync fire-and-forget with 15s timeout ([96ed](https://tangled.org/burrito.space/peek/commit/96edd06a18c374926e515b703d6193116fe2c19d), [73f9](https://tangled.org/burrito.space/peek/commit/73f9896fd1aa5c6b0b683cafa9d58ec12528be6c)) 59 + - [x] Handle macOS open command with local file paths ([1ae8](https://tangled.org/burrito.space/peek/commit/1ae8101e0554cf9d2e17db11ee94b9aabc58e8c7)) 60 + - [x] Prevent opening app directory as file:// URL on startup ([e12b](https://tangled.org/burrito.space/peek/commit/e12bef73e27699ed8cc7b53da178fc2a247b198b)) 61 + - [x] Use Promise.allSettled for extension loading so one failure doesn't block all commands ([d031](https://tangled.org/burrito.space/peek/commit/d031c4f42b804bbe2442c1169069264c6ecfa326)) 70 62 71 63 Testing 72 - - [x] fix(tests): resolve pre-existing unit test failures across 4 test suites (a961) 64 + - [x] Resolve pre-existing unit test failures across 4 test suites ([a961](https://tangled.org/burrito.space/peek/commit/a9610b631d66db1a190ab49332cc06667fad3ef9)) 73 65 74 66 ## 2026-02-16 75 67 76 68 Desktop - Command Palette 77 - - [x] feat(cmd): generic command chaining with pipe system (597) 78 - - [x] feat(cmd): replace embedded chain editor with popup window system (572) 79 - - [x] feat(cmd): add parameter suggestions to command palette (693) 80 - - [x] feat(cmd): add noun registration API for declarative command generation (191) 81 - - [x] fix(cmd): remove download cmd, fix save filename, fix dialog parent, unify hashtag extraction (5b95) 82 - - [x] fix(cmd): preserve noun routing metadata in command registry pipeline (39a4) 69 + - [x] Generic command chaining with pipe system ([5975](https://tangled.org/burrito.space/peek/commit/5975f593ff109df82daf56b47233cf6910db89d3)) 70 + - [x] Replace embedded chain editor with popup window system ([5729](https://tangled.org/burrito.space/peek/commit/5729822b4748acc4bf98c9563d4f7c2a17ae2435)) 71 + - [x] Add parameter suggestions to command palette ([693d](https://tangled.org/burrito.space/peek/commit/693de4ad13de5edf49643088a724d2788936aca6)) 72 + - [x] Add noun registration API for declarative command generation ([191f](https://tangled.org/burrito.space/peek/commit/191fb02212c460355702d619f264fa5801edb6b3)) 73 + - [x] Remove download cmd, fix save filename, fix dialog parent, unify hashtag extraction ([5b95](https://tangled.org/burrito.space/peek/commit/5b95d1af28ec91787778989f5d0f4d8b34435769)) 74 + - [x] Preserve noun routing metadata in command registry pipeline ([39a4](https://tangled.org/burrito.space/peek/commit/39a45314a629b9083163e03a2e59162836266e31)) 83 75 84 76 Desktop - Entity Recognition 85 - - [x] feat(entities): add observation frequency ranking — Phase 1 (803) 86 - - [x] feat(entities): add thumbs up/down feedback for entity quality scoring (c0e) 77 + - [x] Add observation frequency ranking for entities ([8031](https://tangled.org/burrito.space/peek/commit/80313a9eb1da5e586e5d5d50823c0f88a23f57b9)) 78 + - [x] Add thumbs up/down feedback for entity quality scoring ([c0e5](https://tangled.org/burrito.space/peek/commit/c0e5afab57ec4749b29ab35c5ab526b24912720b)) 87 79 88 80 Desktop - Tags 89 - - [x] feat(tags): add rename and delete tag operations (ac2) 90 - - [x] fix(tags): add protocol 404 logging, handle all item types, fix filter counts (403e) 81 + - [x] Add rename and delete tag operations ([ac2a](https://tangled.org/burrito.space/peek/commit/ac2a86fb419412483cbaa784108526e15067642e)) 82 + - [x] Fix protocol 404 logging, handle all item types, fix filter counts ([403e](https://tangled.org/burrito.space/peek/commit/403ea5b151149ef10cd2a22b61838cf7fa3b02a8)) 91 83 92 84 Desktop - Display Switching 93 - - [x] refactor(display-watcher): replace 3-phase algorithm with safety-net-only approach (afa) 94 - - Gutted 881-line 3-phase algorithm, replaced with 304-line single-pass safety net 95 - - Lets macOS handle display migration natively, only rescues genuinely orphaned windows 85 + - [x] Simplify display-watcher to safety-net-only approach — let macOS handle display migration natively, only rescue orphaned windows ([afae](https://tangled.org/burrito.space/peek/commit/afae1e4af08491ae69b6feb6dab9c6f1fa7cae10)) 96 86 97 87 Desktop - Page View & Dragging 98 - - [x] fix(page): filter Cmd+L/R/[/] pubsub by windowId so only active page window responds (657) 99 - - [x] fix(page): fully end drag on webview mouseup to prevent overlay blocking clicks (a7b) 100 - - [x] fix(page): handle webview mousemove during active drag for window movement (ac37) 101 - - [x] fix(drag): remove data-no-drag from extension window bodies to restore hold-to-drag (63c1) 88 + - [x] Fix keyboard shortcuts responding in wrong page window ([6573](https://tangled.org/burrito.space/peek/commit/65735c4d27ac2411d62d9c32c4b6c4494e28e0ba)) 89 + - [x] Fix drag ending on webview mouseup to prevent overlay blocking clicks ([a7b8](https://tangled.org/burrito.space/peek/commit/a7b8948d19f2fec4c239bf51217421dda79d4b80)) 90 + - [x] Fix webview mousemove during active drag for window movement ([ac37](https://tangled.org/burrito.space/peek/commit/ac37674d8b52be9359f4aa1706d86dca11c8ec72)) 91 + - [x] Restore hold-to-drag in extension windows ([63c1](https://tangled.org/burrito.space/peek/commit/63c17b27bd19b3c8f9a288ba491271054a31b450)) 102 92 103 93 Desktop - Auth & URLs 104 - - [x] feat(auth): OAuth popup bridge and flow improvements (c93) 105 - - [x] fix(url): wait for frontend ready and session restore before processing external URLs (e7ab) 94 + - [x] Improve OAuth popup bridge and flow ([c93a](https://tangled.org/burrito.space/peek/commit/c93a46dc3ed7ce977e1227f8e3f8ce02152e4695)) 95 + - [x] Wait for frontend ready and session restore before processing external URLs ([e7ab](https://tangled.org/burrito.space/peek/commit/e7ab8092a3cdde2dd2ba99de18b7fd1babc4a3c2)) 106 96 107 97 Testing 108 - - [x] test(cmd): add completer unit tests; fix tag # prefix stripping (610) 109 - - [x] test(cmd): add integration tests for command execution through pubsub (e11) 110 - - [x] test(cmd): add command chaining pipe system tests (566c) 111 - - [x] test(oauth): add OAuth bridge unit tests (77b) 112 - - [x] fix(test): fix 4 stale test expectations in desktop smoke tests (4d9) 98 + - [x] Add completer unit tests; fix tag # prefix stripping ([6102](https://tangled.org/burrito.space/peek/commit/61020b937d52bd87cfad5425f77167e65421c3c1)) 99 + - [x] Add integration tests for command execution through pubsub ([e11d](https://tangled.org/burrito.space/peek/commit/e11daddb41f2c53cbba0ecbae40b0e71e1ec4cb0)) 100 + - [x] Add command chaining pipe system tests ([566c](https://tangled.org/burrito.space/peek/commit/566c9ec7028c8197426369b93f148090aa2e7087)) 101 + - [x] Add OAuth bridge unit tests ([77b0](https://tangled.org/burrito.space/peek/commit/77b0f1972afb51f6e0c271bf8abaff09e80a8020)) 102 + - [x] Fix 4 stale test expectations in desktop smoke tests ([4d96](https://tangled.org/burrito.space/peek/commit/4d9683f93f590c58fc823024fddcc65f38b29183)) 113 103 114 104 ## 2026-02-13 115 105 116 106 Desktop - Session Restore 117 - - [x] feat(session): implement full session save/restore system (Phases 1-4) (0e8afccd, f270c56d, d0150877, d2fb834a) 118 - - Phase 1: Snapshot all windows on quit (position, size, URL, mode) 119 - - Phase 2: Restore windows on startup with confirmation dialog 120 - - Phase 3: Autosave timer and manual session commands 121 - - Phase 4: Crash recovery dialog and error handling 122 - - [x] fix(session): save settings windows, strip stale params on restore, fix display-watcher race conditions (d12bd2b9) 123 - - [x] fix(session): suppress display-watcher during session restore to preserve window positions (c32b73df) 124 - - [x] fix(session): handle SIGINT/SIGTERM as clean shutdowns to prevent false crash dialog (f56f5624, 8ab6d36d, 16a2d4bc) 125 - - [x] fix(session): synchronous SIGINT save and correct canvas page bounds (2df8a733) 126 - - [x] fix(session): open startup feature when restore is declined or fails (0f280143) 107 + - [x] Full session save/restore — snapshot windows on quit, restore on startup with confirmation, autosave timer, crash recovery dialog ([0e8a](https://tangled.org/burrito.space/peek/commit/0e8afccdff0075b9151b3dbd40609f53f16a8521), [f270](https://tangled.org/burrito.space/peek/commit/f270c56db43c1799a0a6c8dd801a00a2419124e3), [d015](https://tangled.org/burrito.space/peek/commit/d0150877ced2ff5e02d7414b3c6c08cd404e0f17), [d2fb](https://tangled.org/burrito.space/peek/commit/d2fb834abcd81e1a7d23898b4875f996f8899c52)) 108 + - [x] Save settings windows, strip stale params on restore, fix display-watcher race conditions ([d12b](https://tangled.org/burrito.space/peek/commit/d12bd2b93d553c124f508fe37bbd6f7d325f4362)) 109 + - [x] Suppress display-watcher during session restore to preserve window positions ([c32b](https://tangled.org/burrito.space/peek/commit/c32b73dfaf9ef4f497623452d7f919be28194392)) 110 + - [x] Treat SIGINT/SIGTERM as clean shutdowns to prevent false crash dialog ([f56f](https://tangled.org/burrito.space/peek/commit/f56f5624550c93ef1e93f60392496a70b6dc393f), [8ab6](https://tangled.org/burrito.space/peek/commit/8ab6d36de9d593b894ef92893dc59b6af751ba3b), [16a2](https://tangled.org/burrito.space/peek/commit/16a2d4bcabce898ceb850ae3258965c384d71b89)) 111 + - [x] Fix synchronous SIGINT save and correct canvas page bounds ([2df8](https://tangled.org/burrito.space/peek/commit/2df8a7339298b2b3c30f81168eef6b0bfabf4299)) 112 + - [x] Open startup feature when restore is declined or fails ([0f28](https://tangled.org/burrito.space/peek/commit/0f280143d148e3bf25cd870b39cfaef528939d0a)) 127 113 128 114 Desktop - Display Switching 129 - - [x] feat(display): reposition windows when displays change (d732fa79) 130 - - Pre-debounce bounds capture preserves window positions before OS moves them 131 - - Group-based distance scaling for proportional repositioning 132 - - [x] fix(display-watcher): add home display tracking to restore windows after display reconnect (60b0798d) 133 - - [x] fix(display): use group-based distance scaling for window repositioning (11166190) 115 + - [x] Reposition windows when displays change — preserves positions before OS moves them ([d732](https://tangled.org/burrito.space/peek/commit/d732fa7912f47f70d32fde3b932f5842705fcc38)) 116 + - [x] Track home display to restore windows after display reconnect ([60b0](https://tangled.org/burrito.space/peek/commit/60b0798db24bc9b6b571a30106a1392b453eae1f)) 117 + - [x] Use group-based distance scaling for window repositioning ([1116](https://tangled.org/burrito.space/peek/commit/11166190d9066226b760225731477215c690a1c7)) 134 118 135 119 Desktop - Entity Recognition 136 - - [x] feat(entities): show source pages in entity list and add detail pane with full metadata (12feb902) 137 - - [x] fix(entities): improve detection coverage and reduce price noise (82b70037) 138 - - [x] fix(entities): migrate out standalone price entities lacking product context (383202ae) 139 - - [x] fix(entities): require context for date entities, migrate out standalone dates (6ada27ba) 120 + - [x] Show source pages in entity list and add detail pane with full metadata ([12fe](https://tangled.org/burrito.space/peek/commit/12feb9024640dc6a132b2080ae85012307407c78)) 121 + - [x] Improve detection coverage and reduce price noise ([82b7](https://tangled.org/burrito.space/peek/commit/82b700377bbc902113c276d7eb50a5df59812d92)) 122 + - [x] Remove standalone price entities lacking product context ([3832](https://tangled.org/burrito.space/peek/commit/383202ae65eb33aebafb52b01d4dd46579a6060b)) 123 + - [x] Require context for date entities, remove standalone dates ([6ada](https://tangled.org/burrito.space/peek/commit/6ada27ba19445ed4dc1c076961336ace34b0c83e)) 140 124 141 125 Desktop - Command Palette 142 - - [x] feat(cmd): add command chaining flow for list notes, markdown, download, save as note (04ef4c8a) 143 - - [x] feat(cmd): add "open file" command with chaining + fix note inline tag extraction (0717e87b) 144 - - [x] fix(cmd): remove web search fallback on Enter — require explicit command match (49c6e5ec) 145 - - [x] fix(cmd,perf): sort history by frecency, use targeted queries for URL lookups (0873e5ee) 146 - - [x] fix(cmd): restore web page URLs in frecency suggestions (65baa072) 147 - - [x] fix(cmd): ESC clears text first, Shift-Tab cycles backward, fix frecency tracking (8f6b41a8) 148 - - [x] fix(cmd): register IZUI escape handler so ESC clears text before closing (80592eb0) 149 - - [x] fix(cmd): remove prefix feedback that caused adaptive sort cross-contamination (5ceb0517) 150 - - [x] fix(cmd): add deterministic tiebreaker to command palette sort for consistent autocomplete (566b63a8) 126 + - [x] Add command chaining flow for list notes, markdown, download, save as note ([04ef](https://tangled.org/burrito.space/peek/commit/04ef4c8aaf106cb8ef8c5110abbda841b940f1b7)) 127 + - [x] Add "open file" command with chaining and fix note inline tag extraction ([0717](https://tangled.org/burrito.space/peek/commit/0717e87b6898b822075effa65d75beb4c9043120)) 128 + - [x] Require explicit command match on Enter — remove web search fallback ([49c6](https://tangled.org/burrito.space/peek/commit/49c6e5ec4027e472af606462fcaeef8044cfdc77)) 129 + - [x] Sort history by frecency, use targeted queries for URL lookups ([0873](https://tangled.org/burrito.space/peek/commit/0873e5ee688ec0a53440382fd88ccd681323a0f8)) 130 + - [x] Restore web page URLs in frecency suggestions ([65ba](https://tangled.org/burrito.space/peek/commit/65baa072eef50d9b1ef7c69ad4e03e33116af346)) 131 + - [x] ESC clears text first, Shift-Tab cycles backward, fix frecency tracking ([8f6b](https://tangled.org/burrito.space/peek/commit/8f6b41a8db9dc7ca85a1a696f3af4cca74915ac7)) 132 + - [x] Register IZUI escape handler so ESC clears text before closing ([8059](https://tangled.org/burrito.space/peek/commit/80592eb03a143100ddaaa3a4f32db2d95eabc3cc)) 133 + - [x] Remove prefix feedback that caused adaptive sort cross-contamination ([5ceb](https://tangled.org/burrito.space/peek/commit/5ceb05172fdfaf0c779ac6f23547a6e56567e123)) 134 + - [x] Add deterministic tiebreaker to sort for consistent autocomplete ([566b](https://tangled.org/burrito.space/peek/commit/566b63a8df0b21056b8157670216a668602e1855)) 151 135 152 136 Desktop - Page View & Navigation 153 - - [x] feat(page): replace fullscreen transparent window with minimal page host (c543e38b) 154 - - [x] fix(page): eliminate navbar show/hide webview jump (43c9353e, 982f6a10, 083fbdf9, bd0449db) 155 - - [x] fix(page): restore webview drag with mousedown/mouseup bridge from guest page (63cd1414) 156 - - [x] fix(page): remove broken click-through code that activated unrelated windows (10f29146) 137 + - [x] Replace fullscreen transparent window with minimal page host ([c543](https://tangled.org/burrito.space/peek/commit/c543e38bf36d79a2c448e3e860157a4a34da388c)) 138 + - [x] Eliminate navbar show/hide webview jump ([43c9](https://tangled.org/burrito.space/peek/commit/43c9353ec1523cd67d3c848ec5536561ad1e797b), [982f](https://tangled.org/burrito.space/peek/commit/982f6a10ac4ed9b7ab383e09b4889aa8224d8262), [083f](https://tangled.org/burrito.space/peek/commit/083fbdf90c90c9b717c259887ae4c22adebae84e), [bd04](https://tangled.org/burrito.space/peek/commit/bd0449db6277a60577ccbc0e6a37afb58adb433c)) 139 + - [x] Restore webview drag with mousedown/mouseup bridge from guest page ([63cd](https://tangled.org/burrito.space/peek/commit/63cd141464c98f54e17ad475248208c356957c8a)) 140 + - [x] Remove broken click-through code that activated unrelated windows ([10f2](https://tangled.org/burrito.space/peek/commit/10f29146d98c2cf25b8c63de56de3cfc85b712a9)) 157 141 158 142 Desktop - Window Dragging 159 - - [x] fix(drag): rewrite window drag system v3 — unified, faster, works everywhere (5a7c7899, fa58f66b, 1f815b61) 143 + - [x] Rewrite window drag system — unified, faster, works everywhere ([5a7c](https://tangled.org/burrito.space/peek/commit/5a7c7899116f7501f40ca99cbe1b6ed8c93031f3), [fa58](https://tangled.org/burrito.space/peek/commit/fa58f66b384faf13746f8aa3e2bca266fdde3530), [1f81](https://tangled.org/burrito.space/peek/commit/1f815b618a836270b1b444cf9cbfc13c6373a884)) 160 144 161 145 Desktop - HUD & Groups 162 - - [x] fix(hud): hide on app blur using did-resign-active (be05026c) 163 - - [x] fix(groups): fix group creation via inline form (141829f7) 164 - - [x] fix(tags): restore reactivity on sync and data changes (60eb36df) 165 - - [x] fix(tags/groups/cmd): fix item icons, group creation form, and tagset detection (5b0ca938) 146 + - [x] Hide HUD on app blur ([be05](https://tangled.org/burrito.space/peek/commit/be05026c3fe8bf9d28c28c05490fc16c3a75a204)) 147 + - [x] Fix group creation via inline form ([1418](https://tangled.org/burrito.space/peek/commit/141829f79561a67556fb231fe89197de795cde09)) 148 + - [x] Restore tags reactivity on sync and data changes ([60eb](https://tangled.org/burrito.space/peek/commit/60eb36df2fc0febad130ac8ce104ce756649cc91)) 149 + - [x] Fix item icons, group creation form, and tagset detection ([5b0c](https://tangled.org/burrito.space/peek/commit/5b0ca9380c3217a63a66853858ab24dccb5d088f)) 166 150 167 151 Desktop - Dark Mode & Settings 168 - - [x] fix(darkmode): respect OS color scheme in system mode (6813ea5f) 169 - - [x] fix(websearch): fix suggestions, default engine setting, and settings UI (bcaeb205) 170 - - [x] feat(websearch): add Kagi as built-in search engine (e7d05c94) 171 - - [x] fix(settings): add descriptions and human-readable labels to core settings (0bfe87b9) 172 - - [x] fix(settings): quit shortcut default reset, editor portrait, datastore table fix (f6a16ad4) 152 + - [x] Respect OS color scheme in system dark mode ([6813](https://tangled.org/burrito.space/peek/commit/6813ea5f2e3fb51f11942470c1b706976e985afd)) 153 + - [x] Fix web search suggestions, default engine setting, and settings UI ([bcae](https://tangled.org/burrito.space/peek/commit/bcaeb2051189ac03e9c06279cfe87a49c33a730c)) 154 + - [x] Add Kagi as built-in search engine ([e7d0](https://tangled.org/burrito.space/peek/commit/e7d05c943f84b04b521fdce849312e5f05574a78)) 155 + - [x] Add descriptions and human-readable labels to core settings ([0bfe](https://tangled.org/burrito.space/peek/commit/0bfe87b9e109ded26ea92c90a0adc9629f29bf3a)) 156 + - [x] Fix quit shortcut default reset, editor portrait, datastore table ([f6a1](https://tangled.org/burrito.space/peek/commit/f6a16ad4a2d060b01ac213b6154bc02aee4f371b)) 173 157 174 158 Desktop - Fixes 175 - - [x] fix(mode,window): fix mode leak into global scope and bring existing windows to front (9b783b6b) 176 - - [x] fix(shortcuts): silence spurious warnings when unregistering global shortcuts during shutdown (7941b5f6) 177 - - [x] fix(cmd): ensure command registration after extensions loaded (3f9df015) 178 - - [x] refactor(cmd): remove cmd:ready/query boilerplate, register commands directly (f7306de6) 179 - - [x] feat(components): add sorting and view modes to card grid toolbar (83a85332) 180 - - [x] fix(rss): use tangled.org URLs, fix localsearch manifest loading (06afcb89) 159 + - [x] Fix mode leak into global scope and bring existing windows to front ([9b78](https://tangled.org/burrito.space/peek/commit/9b783b6b8e544458af64e6129a190fe6b218d436)) 160 + - [x] Silence spurious warnings when unregistering global shortcuts during shutdown ([7941](https://tangled.org/burrito.space/peek/commit/7941b5f670a2e4c764736ab9baff94c287a643b6)) 161 + - [x] Ensure command registration after extensions loaded ([3f9d](https://tangled.org/burrito.space/peek/commit/3f9df0153f85a43f3ed392d5bd07357b801dfa33)) 162 + - [x] Simplify command registration — remove boilerplate ([f730](https://tangled.org/burrito.space/peek/commit/f7306de6a6086d45fe56ce76bb5e27612ab593c1)) 163 + - [x] Add sorting and view modes to card grid toolbar ([83a8](https://tangled.org/burrito.space/peek/commit/83a8533205ca3eaf796046a61b627b925dae997f)) 164 + - [x] Use tangled.org URLs for RSS, fix localsearch manifest loading ([06af](https://tangled.org/burrito.space/peek/commit/06afcb89112a6ff4dfa9e707f9aeeff057c489f2)) 181 165 182 166 Testing 183 - - [x] test(session): add 67 real integration tests for session save/restore (49f094f7) 184 - - [x] test(display-watcher): add tests for pre-debounce capture, suppress timer cancellation, and isRemoval flag (fd56204f) 185 - - [x] test: add 94 new unit tests and fix 3 E2E test failures (2251f86f) 167 + - [x] Add 67 real integration tests for session save/restore ([49f0](https://tangled.org/burrito.space/peek/commit/49f094f7fa698dadd2745c802de1015dcc9f30a3)) 168 + - [x] Add display-watcher tests for pre-debounce capture, suppress timer, and isRemoval flag ([fd56](https://tangled.org/burrito.space/peek/commit/fd56204f81d78dcbb6b586aaea0ef97441eecbd8)) 169 + - [x] Add 94 new unit tests and fix 3 E2E test failures ([2251](https://tangled.org/burrito.space/peek/commit/2251f86f43643a9b308cac6fa46dbf593141cfb3)) 186 170 187 171 ## 2026-02-11 188 172 189 173 Desktop - New Extensions 190 - - [x] feat(websearch): implement web search extension with OpenSearch discovery and suggestions (bf488889) 191 - - Search from command palette with live suggestions from multiple engines 192 - - Auto-discovers OpenSearch endpoints on visited pages 193 - - Widget notification in page view when OpenSearch engine found 194 - - [x] feat(search): implement unified search extension (4b95973d) 195 - - [x] feat(pagestream): implement vertical history stream extension (35f9afcc) 174 + - [x] Web search extension — search from command palette with live suggestions, auto-discovers OpenSearch endpoints on visited pages ([bf48](https://tangled.org/burrito.space/peek/commit/bf488889b77d22dd6b17d3613597379ba2b15737)) 175 + - [x] Unified search extension ([4b95](https://tangled.org/burrito.space/peek/commit/4b95973d39a9ab252cce55b8402fbed674d742c4)) 176 + - [x] Vertical history stream extension ([35f9](https://tangled.org/burrito.space/peek/commit/35f9afccca7020cee7762bb603ee68709949dcea)) 196 177 197 178 Desktop - History Unification 198 - - [x] refactor(history): unify address/visit system into items table (6 phases) (475e97fe..6f90f258) 199 - - Phase 1-2: Remove dual-write, redirect renderer address APIs to items 200 - - Phase 3-4: IPC compatibility layer, update tests and URL normalization 201 - - Phase 5-6: Update Tauri backend, remove legacy address/visit code and types 179 + - [x] Unify address/visit system into items table — remove dual-write, redirect APIs, update Tauri backend, remove legacy code ([475e](https://tangled.org/burrito.space/peek/commit/475e97feb695d45e1253e03cd05e1b8a2d1982d7)..[6f90](https://tangled.org/burrito.space/peek/commit/6f90f258e36b729608a49b178db50894478f628f)) 202 180 203 181 Desktop - Dark Mode 204 - - [x] feat(darkmode): implement 3-tier dark mode system for web pages (ef242dde) 205 - - Tier 1 (System): Sets prefers-color-scheme: dark for all webviews 206 - - Tier 2 (Force): Chromium WebContentsForceDark with CIELAB inversion 207 - - Settings UI with Off/System/Force selector 182 + - [x] 3-tier dark mode for web pages — System (prefers-color-scheme), Force (Chromium CIELAB inversion), with settings UI ([ef24](https://tangled.org/burrito.space/peek/commit/ef242dde9d5829fdb5342d1ba7781bc0e9767485)) 208 183 209 184 Desktop - Page View & Navigation 210 - - [x] feat(page): add browser navigation hotkeys and editable URL bar (52a99ec7) 211 - - Cmd+R reload, Cmd+[/] back/forward, Cmd+L to edit URL 212 - - [x] feat(page): add widget system with OpenSearch discovery notification (ce5ae4bb) 213 - - [x] fix(page): improve drag-from-anywhere with long-press detection and all-corner resize (d135cfa6) 214 - - [x] fix(page): apply background detection to non-canvas web pages (e1ac7b6f) 215 - - [x] fix(nav): restore full-width navbar — remove floating bubble design (7769f1e1) 216 - - [x] fix(titles): fix Loading... title bug, add page content extraction and URL metadata enrichment (61ca6f00) 217 - - Filter "Loading..." from stored titles across all code paths 218 - - Add extract-page-content IPC handler for live page HTML extraction 219 - - URL item metadata enrichment with OG tags, description, favicon 185 + - [x] Browser navigation hotkeys and editable URL bar — Cmd+R reload, Cmd+[/] back/forward, Cmd+L to edit URL ([52a9](https://tangled.org/burrito.space/peek/commit/52a99ec7c345ba5bd9cfc37036848d29ca0294ae)) 186 + - [x] Widget system with OpenSearch discovery notification ([ce5a](https://tangled.org/burrito.space/peek/commit/ce5ae4bb7d118320c02ae80a00af9793a5749bcf)) 187 + - [x] Improve drag-from-anywhere with long-press detection and all-corner resize ([d135](https://tangled.org/burrito.space/peek/commit/d135cfa61cc3563cb597987ebf7b55eea5e3d03c)) 188 + - [x] Apply background detection to non-canvas web pages ([e1ac](https://tangled.org/burrito.space/peek/commit/e1ac7b6f8920944019cbca21aaf1188b25592bd2)) 189 + - [x] Restore full-width navbar — remove floating bubble design ([7769](https://tangled.org/burrito.space/peek/commit/7769f1e19c6f74cb5fd18493c42bbaecc8a59644)) 190 + - [x] Fix Loading... title bug, add page content extraction and URL metadata enrichment ([61ca](https://tangled.org/burrito.space/peek/commit/61ca6f009ba9ad357e09f310770fa5cdf2940b9c)) 220 191 221 192 Desktop - Tags & Editor 222 - - [x] feat(tags): embed editor in detail pane for inline note editing (a575013e) 223 - - Replace modal with inline detail view, ESC navigation between list and detail 224 - - Vim status/command bar overlaid on editor, respects vim mode preference 225 - - [x] feat(tags): add content search with tag combo filtering, pin selected tags in sidebar (d005d3dd) 226 - - [x] fix(editor,tags): fix note command blank editor, tags reactivity, and editor height (cb4d5e10) 227 - - New notes create datastore items immediately for autosave 228 - - Tags UI subscribes to item:updated events for live reactivity 229 - - [x] fix(editor): forward ESC to vim in insert/visual mode before IZUI handles it (7b866e87) 230 - - [x] fix(tags): editor layout, vim status bar positioning, and focus ring cleanup (08483e4e, 3100ec71, 3a072f24) 193 + - [x] Embed editor in detail pane for inline note editing with vim status bar ([a575](https://tangled.org/burrito.space/peek/commit/a575013e7000b50db91235fa09b67104ea5293d2)) 194 + - [x] Content search with tag combo filtering, pin selected tags in sidebar ([d005](https://tangled.org/burrito.space/peek/commit/d005d3dd966595778c482c2ce8f555ffb8550ca6)) 195 + - [x] Fix note command blank editor, tags reactivity, and editor height ([cb4d](https://tangled.org/burrito.space/peek/commit/cb4d5e10b8d4a27c6529945e00efea2bed701fc0)) 196 + - [x] Forward ESC to vim in insert/visual mode before IZUI handles it ([7b86](https://tangled.org/burrito.space/peek/commit/7b866e87a87e357bd1482e5d8e5775f9702c5d81)) 197 + - [x] Fix editor layout, vim status bar positioning, and focus ring cleanup ([0848](https://tangled.org/burrito.space/peek/commit/08483e4ef820d8eece5fc28f7c113690ff002c82), [3100](https://tangled.org/burrito.space/peek/commit/3100ec71fc60978bc7cc89da1c1a5f8bf82f4e11), [3a07](https://tangled.org/burrito.space/peek/commit/3a072f24678bb375a193b04ea7fdb05b92d546be)) 231 198 232 199 Desktop - Shortcuts & Commands 233 - - [x] feat(shortcuts): implement dual hotkey registration — local Cmd+ alongside global Opt+ (545e95b4) 234 - - Cmd+K (palette), Cmd+E (editor), Cmd+T (tags), Cmd+G (groups), Cmd+H (HUD) 235 - - Fix: Cmd+Q quit, Cmd+, settings (were incorrectly using Opt+) 236 - - [x] feat(api): implement commands.list() to query registered commands via pubsub (696c7859) 237 - - [x] fix(cmd): fix frecency/adaptive sorting in command palette (2f6da3fd) 238 - - Unified weighted ranking combining adaptive score and frecency 239 - - Cross-query adaptive feedback for substring matches 200 + - [x] Dual hotkey registration — local Cmd+ alongside global Opt+ for palette, editor, tags, groups, HUD ([545e](https://tangled.org/burrito.space/peek/commit/545e95b47d436171406bc01c3783ac7d1e5ca382)) 201 + - [x] Query registered commands via pubsub ([696c](https://tangled.org/burrito.space/peek/commit/696c7859c3b10bb81a8ea741dbb65e595bbe3af3)) 202 + - [x] Fix frecency/adaptive sorting in command palette ([2f6d](https://tangled.org/burrito.space/peek/commit/2f6da3fd76ba4780daf8e0626bd45e9a50b1dd5e)) 240 203 241 204 Desktop - Settings & Extensions 242 - - [x] fix(settings): rework extensions settings — rename sections, unify layout, add options buttons (cb540409) 243 - - Rename: Features (Peek extensions) vs Extensions (bundled webextensions) 244 - - Options button for extensions with options pages 245 - - [x] fix(settings): dynamically list all builtin extensions in Features section (90fe93d0) 246 - - [x] feat(chrome-ext): generic settings/UI system for bundled Chrome extensions (edbf5169) 247 - - [x] feat(adblocker): migrate from @cliqz/adblocker-electron to @ghostery/adblocker-electron (93b44561) 205 + - [x] Rework extensions settings — separate Features vs Extensions sections, add options buttons ([cb54](https://tangled.org/burrito.space/peek/commit/cb54040945458d258ed48f9951820998ebdd6e75)) 206 + - [x] Dynamically list all builtin extensions in Features section ([90fe](https://tangled.org/burrito.space/peek/commit/90fe93d0fea4d2286ab6099ffd097e40205e1fef)) 207 + - [x] Generic settings/UI system for bundled Chrome extensions ([edbf](https://tangled.org/burrito.space/peek/commit/edbf5169a396539ed2d94df1b873690d168d7b7a)) 208 + - [x] Migrate ad blocker from @cliqz to @ghostery ([93b4](https://tangled.org/burrito.space/peek/commit/93b445613d086b8f1d4caea934d5e466a0b975a6)) 248 209 249 210 Desktop - Fixes 250 - - [x] fix(windows): HUD focus stealing, chrome ext options styling, duplicate group cards (47686da7) 251 - - [x] fix(groups): prevent duplicate windows/URLs, fix race conditions and title resolution (20cb9956) 252 - - [x] fix(hud): resolve extension disabled by settings key collision (671df42e) 253 - - [x] fix(context): resolve window ID from caller when null, set mode before loadURL (c1d77f28) 254 - - [x] fix(entities): align UI with groups/tags component and theme patterns (c5df43bc) 255 - - [x] fix(scripts): align UI with groups/tags component and theme patterns (50c639ff) 256 - - [x] fix(editor): use extension settings API for vim mode, audit localStorage usage (3962110b) 257 - - [x] fix(build): pin Node version to 24.11.1 to match Electron 40 (96c05941) 211 + - [x] Fix HUD focus stealing, chrome ext options styling, duplicate group cards ([4768](https://tangled.org/burrito.space/peek/commit/47686da71893feb30b286fbc5e45021e6f442e07)) 212 + - [x] Prevent duplicate windows/URLs, fix race conditions and title resolution ([20cb](https://tangled.org/burrito.space/peek/commit/20cb9956145d94e57a902a1976e1bd56a1242d4b)) 213 + - [x] Resolve extension disabled by settings key collision ([671d](https://tangled.org/burrito.space/peek/commit/671df42e33f9b08db4a058e98e8e4e6f7bdbddad)) 214 + - [x] Resolve window ID from caller when null, set mode before loadURL ([c1d7](https://tangled.org/burrito.space/peek/commit/c1d77f286c8ba45015514d6a836bf4a13df7f66a)) 215 + - [x] Align entity and script UIs with groups/tags component patterns ([c5df](https://tangled.org/burrito.space/peek/commit/c5df43bcf9d5f28dd1dbf129fe47612346c26b6f), [50c6](https://tangled.org/burrito.space/peek/commit/50c639ff3a591181e8bd6b10b8bfdd8f906406a3)) 216 + - [x] Use extension settings API for vim mode, audit localStorage usage ([3962](https://tangled.org/burrito.space/peek/commit/3962110b5db93447fd6b95379281de6a0223a203)) 217 + - [x] Pin Node version to 24.11.1 to match Electron 40 ([96c0](https://tangled.org/burrito.space/peek/commit/96c05941d16a0989f7407b00a63cda2994e52d24)) 258 218 259 219 Testing 260 - - [x] test(history): add unified URL/history tests for unification refactor (d3ac05f7) 261 - - [x] test(entities): add comprehensive test data for entity recognition (d710d039) 220 + - [x] Add unified URL/history tests for unification refactor ([d3ac](https://tangled.org/burrito.space/peek/commit/d3ac05f7135ead6685d7c8ddb50ba378c2e700b9)) 221 + - [x] Add comprehensive test data for entity recognition ([d710](https://tangled.org/burrito.space/peek/commit/d710d039355e4e355c0c3e26844753c8c6d4e245)) 262 222 263 223 ## 2026-02-09 264 224 265 225 Desktop - IZUI Role-Based Redesign 266 - - [x] feat(izui): systemic ESC handling, peek-component migrations, HUD test fixes (21d59cc0) 267 - - Migrated peek-card, peek-grid, peek-list to shared peek-components 268 - - Unified ESC key handling across all window types 269 - - Fixed HUD test infrastructure 270 - - [x] feat(izui): implement role-based window policy (Phase 1-2) (3fbcade9) 271 - - Replaced session-based transient/active detection with deterministic role system 272 - - Five roles: root, child-content, child-tool, hud, transient 273 - - Role assigned at window creation, governs ESC behavior and lifecycle 274 - - [x] feat(izui): complete role-based migration (Phase 3-6) (8528f053) 275 - - Migrated all window creation sites to use role-based policy 276 - - Removed legacy IzuiStateCoordinator session tracking 277 - - ESC behavior fully determined by window role 278 - - [x] fix(izui): promote content to child-content when opened from parent window (92d359c5) 279 - - [x] fix(izui): promote transient session on app focus, fix startup role (055b77ed) 226 + - [x] Unified ESC handling, migrate components to shared peek-components, fix HUD tests ([21d5](https://tangled.org/burrito.space/peek/commit/21d59cc00e8516382e0425f2442019ff915936e5)) 227 + - [x] Role-based window policy — five deterministic roles (root, child-content, child-tool, hud, transient) govern ESC behavior and lifecycle ([3fbc](https://tangled.org/burrito.space/peek/commit/3fbcade9a47b8375e0e10d15bf693104587433f3)) 228 + - [x] Complete role-based migration — all window creation uses role policy, remove legacy session tracking ([8528](https://tangled.org/burrito.space/peek/commit/8528f053e1ef930b191eb2b834180eb84475851c)) 229 + - [x] Promote content to child-content when opened from parent window ([92d3](https://tangled.org/burrito.space/peek/commit/92d359c5c5ecdf8baa6aca5cdcc3fb81c34c7921)) 230 + - [x] Promote transient session on app focus, fix startup role ([055b](https://tangled.org/burrito.space/peek/commit/055b77ed748ccce030da378d116e1d8c503bf659)) 280 231 281 232 Desktop - Navigation & UI 282 - - [x] fix(nav): restore floating nav bar — remove embedded regression (93060df3) 283 - - [x] fix(peek-card): delegate click/focus through shadow DOM boundary (b15c6434) 284 - - [x] feat(tags): migrate tags UI to shared peek-components (3145a08a) 285 - - Tags extension uses peek-card, peek-grid from shared component library 286 - - Consistent styling across all card-based views 287 - - [x] fix(config): align startupFeature schema default with actual default (aab2b20b) 288 - - [x] fix(external-url): delay URL processing to ensure app activation completes (f0d1e5bd) 233 + - [x] Restore floating nav bar — remove embedded regression ([9306](https://tangled.org/burrito.space/peek/commit/93060df349c11e0bae011121552a1901ec02c068)) 234 + - [x] Delegate click/focus through shadow DOM boundary in peek-card ([b15c](https://tangled.org/burrito.space/peek/commit/b15c6434bd885e0e00b31ce2ef62e670c282232c)) 235 + - [x] Migrate tags UI to shared peek-components for consistent styling ([3145](https://tangled.org/burrito.space/peek/commit/3145a08ad2604f17424b26604e8d1b003c4aacf9)) 236 + - [x] Align startupFeature schema default with actual default ([aab2](https://tangled.org/burrito.space/peek/commit/aab2b20b8a365fdb47c28554c9cbbf9062010ed2)) 237 + - [x] Delay URL processing to ensure app activation completes ([f0d1](https://tangled.org/burrito.space/peek/commit/f0d1e5bd1289caf470e9a6a9d793414abb3ae6a1)) 289 238 290 239 Desktop - Entity Recognition 291 - - [x] feat(entities): implement Phase 1 entity recognition extension (ae0cd811) 292 - - Extract entities (people, places, dates, etc.) from saved items 293 - - Extensible matcher and store architecture 294 - - Unit tests for extractors, matcher, and store 240 + - [x] Entity recognition extension — extract entities (people, places, dates, etc.) from saved items with extensible matcher and store ([ae0c](https://tangled.org/burrito.space/peek/commit/ae0cd81109117239e4ad4ac0f30366246a1e94b9)) 295 241 296 242 Desktop - HUD & Groups 297 - - [x] fix(hud): populate mode, active window, and stats fields (be18f49f) 298 - - [x] fix(groups): preserve group context through page navigation (1d69ce8f) 299 - - [x] fix(datastore): disable FK checks during entity type migration (98025bcc) 243 + - [x] Populate HUD mode, active window, and stats fields ([be18](https://tangled.org/burrito.space/peek/commit/be18f49f540738aab4bcd11cb2ab3f2c388ffd2e)) 244 + - [x] Preserve group context through page navigation ([1d69](https://tangled.org/burrito.space/peek/commit/1d69ce8fd81c9fc23faac81368fb004d7bb82d9a)) 245 + - [x] Disable FK checks during entity type migration ([9802](https://tangled.org/burrito.space/peek/commit/98025bcca6309076ea578a32b287d81091295a55)) 300 246 301 247 Desktop - Shortcuts & Page 302 - - [x] fix(shortcuts): guard ev.reply() against destroyed senders + add roundtrip tests (49b626e9) 303 - - [x] fix(shortcuts): use BrowserWindow ID not WebContents ID for shortcut callbacks (d6fe8cbf) 304 - - [x] fix(shortcuts): resolve stale IPC reference in global shortcut callbacks (221d5a44) 305 - - [x] fix(page): content-sized BrowserWindow instead of fullscreen canvas (2eb7a703) 248 + - [x] Guard ev.reply() against destroyed senders and add roundtrip tests ([49b6](https://tangled.org/burrito.space/peek/commit/49b626e9c92523f39dc190d8024770e84737d17d)) 249 + - [x] Use BrowserWindow ID not WebContents ID for shortcut callbacks ([d6fe](https://tangled.org/burrito.space/peek/commit/d6fe8cbfe845cd081eb712d6add07b4b08dab227)) 250 + - [x] Resolve stale IPC reference in global shortcut callbacks ([221d](https://tangled.org/burrito.space/peek/commit/221d5a442d970de8a1db07dfd4f5816b607a60f2)) 251 + - [x] Content-sized BrowserWindow instead of fullscreen canvas ([2eb7](https://tangled.org/burrito.space/peek/commit/2eb7a7037b92ef3d9a3961a39de2774fbf41ecff)) 306 252 307 253 Desktop - Command Bar 308 - - [x] fix(cmd): restore URL detection for domains without protocol (youtube.com) (8abf13b6) 254 + - [x] Restore URL detection for domains without protocol (youtube.com) ([8abf](https://tangled.org/burrito.space/peek/commit/8abf13b6300b6735ff748d65a71145f584972fed)) 309 255 310 - Sync Architecture - syncSource Migration 311 - - [x] feat(sync): Phase 1 - separate sync pull from user operations (b3cbb47e) 312 - - Sync pull is now architecturally separate from user-facing operations 313 - - Server _sync metadata preserved naturally without guards 314 - - [x] refactor(sync): remove syncSource from unified sync module and update docs (3ffa9bf1) 315 - - Removed syncSource column from schema and all datastore code 316 - - Replaced with device ID tracking via _sync metadata in item metadata JSON 317 - - [x] refactor(mobile): remove active sync_source usage from iOS sync (3ca335f0) 318 - - [x] feat(mobile): add device ID and _sync metadata to mobile backend (abc40815) 256 + Sync Architecture 257 + - [x] Separate sync pull from user operations — server metadata preserved naturally ([b3cb](https://tangled.org/burrito.space/peek/commit/b3cbb47e44fa6fb766c98a1e87547d86f2fce87c)) 258 + - [x] Remove syncSource from schema, replace with device ID tracking via _sync metadata ([3ffa](https://tangled.org/burrito.space/peek/commit/3ffa9bf15275feeafcb1fcef5cfce0013276d7db)) 259 + - [x] Remove sync_source usage from iOS sync ([3ca3](https://tangled.org/burrito.space/peek/commit/3ca335f097031f0d227d9d4984274f019a53f05d)) 260 + - [x] Add device ID and _sync metadata to mobile backend ([abc4](https://tangled.org/burrito.space/peek/commit/abc408159b76a74cf8712ab42e6c6f572b9f9ebc)) 319 261 320 262 Mobile / iOS 321 - - [x] feat(ios): native inline WKWebView + fix dev build pipeline (ac1154e7) 322 - - [x] fix(ios): separate dev/release build paths and enable media autoplay (50444786) 323 - - [x] fix(mobile): prevent white flash when opening inline webview (edc1b5b9) 324 - - [x] fix(mobile): tighten header layout alignment (6f639e85) 325 - - [x] fix(ui): editor overlays fill to keyboard, tagset cards use tag chips (bb032a08) 326 - - [x] fix(mobile): replace Once::call_once with retryable Mutex for DB init (bb02d535) 327 - - [x] feat(mobile): hide from:history items from default list view (c6acfc60) 328 - - [x] fix(build): separate derivedDataPath for simulator and device builds (d6870291) 329 - - [x] fix(build): add --standalone flag to embed real frontend in iOS builds (90c7f5d8) 263 + - [x] Native inline WKWebView and fix dev build pipeline ([ac11](https://tangled.org/burrito.space/peek/commit/ac1154e70ac137d8c4079ebfd90fbf504c951f9e)) 264 + - [x] Separate dev/release build paths and enable media autoplay ([5044](https://tangled.org/burrito.space/peek/commit/5044478650895bf02ea44ab07247a1437de290c4)) 265 + - [x] Prevent white flash when opening inline webview ([edc1](https://tangled.org/burrito.space/peek/commit/edc1b5b97953a149f48bdea6f7b02e5a00e1b26a)) 266 + - [x] Tighten header layout alignment ([6f63](https://tangled.org/burrito.space/peek/commit/6f639e85a362d16b7a3a0d40d55d2369fb679929)) 267 + - [x] Editor overlays fill to keyboard, tagset cards use tag chips ([bb03](https://tangled.org/burrito.space/peek/commit/bb032a08cc463712f90feff4d66d2e79c89ff534)) 268 + - [x] Replace Once::call_once with retryable Mutex for DB init ([bb02](https://tangled.org/burrito.space/peek/commit/bb02d53584824cc53a8231b5edf603798a309933)) 269 + - [x] Hide from:history items from default list view ([c6ac](https://tangled.org/burrito.space/peek/commit/c6acfc60)) 270 + - [x] Separate derivedDataPath for simulator and device builds ([d687](https://tangled.org/burrito.space/peek/commit/d687029109f05f5d20cebeb6b3c459e1f86469fe)) 271 + - [x] Add --standalone flag to embed real frontend in iOS builds ([90c7](https://tangled.org/burrito.space/peek/commit/90c7f5d80c3c7333c51c4838a3b04597b4dff348)) 330 272 331 273 Testing 332 - - [x] test(cmd): add comprehensive URL detection tests for command panel (ccc5a13b) 333 - - [x] test(server): add syncSource migration simulation tests (72731acf) 334 - - [x] test(entities): add unit tests for extractors, matcher, and store (8759b707) 335 - - [x] test(groups): add mode context propagation tests (5fbcc1ca) 336 - - [x] feat(test): deterministic profile IDs via PEEK_PROFILE_ID env var (7c61aa6e) 337 - - [x] fix(test): run unit tests under Electron's Node to match native module ABI (e1e0c7c5) 338 - - [x] fix(server): enable single-user mode for e2e tests (c6c249b5) 274 + - [x] Add comprehensive URL detection tests for command panel ([ccc5](https://tangled.org/burrito.space/peek/commit/ccc5a13b2af9dff5333de06918bd9b89595dcd30)) 275 + - [x] Add syncSource migration simulation tests ([7273](https://tangled.org/burrito.space/peek/commit/72731acf9cd9d3be88c0a1f8f5f92217c023ce70)) 276 + - [x] Add unit tests for entity extractors, matcher, and store ([8759](https://tangled.org/burrito.space/peek/commit/8759b7070b4d9fb4703d9b3533a2b3b3d6c22a69)) 277 + - [x] Add mode context propagation tests ([5fbc](https://tangled.org/burrito.space/peek/commit/5fbcc1cae400d44fba0007d77155937b7e03b7a7)) 278 + - [x] Deterministic profile IDs via PEEK_PROFILE_ID env var ([7c61](https://tangled.org/burrito.space/peek/commit/7c61aa6e47e5d0b03b63918b68134c449d99b867)) 279 + - [x] Run unit tests under Electron's Node to match native module ABI ([e1e0](https://tangled.org/burrito.space/peek/commit/e1e0c7c5c989c296fc75adf8f493ada592443caa)) 280 + - [x] Enable single-user mode for e2e tests ([c6c2](https://tangled.org/burrito.space/peek/commit/c6c249b52830b6efd18b2d91ea2eaad6e3bc94f6)) 339 281 340 282 ## 2026-02-02 341 283 342 284 Desktop - IZUI (Inverted Zooming User Interface) 343 - - [x] feat(izui): implement IZUI state machine for transient vs active window behavior (457ce41d) 344 - - Centralized `IzuiStateCoordinator` manages session-based state tracking 345 - - Fixes cmd bar stuck on "group" mode when invoked transiently 346 - - Fixes ESC from overlay showing groups instead of returning to previous app 347 - - Transient state propagates to child windows (cmd -> overlay) 348 - - Uses `isFocused()` for accurate system focus detection 349 - - KeepLive windows re-evaluate transient state on each show 350 - - Added `api.izui.*` renderer API for querying state 351 - - 54 unit tests with dependency injection for testability 352 - - See `docs/izui.md` for full documentation 353 - - [x] fix(izui): OS-level focus for transient detection + graceful test shutdown (e1764328) 354 - - Transient detection uses OS-level app focus (`app.isFocused`) instead of window visibility 355 - - Tests use graceful `app.quit()` instead of SIGTERM/SIGKILL (no more crash dialogs) 356 - - 5 new IZUI behavior tests for real app focus scenarios 357 - - [x] refactor(izui): passive backend window manager - extensions use api.window.open() directly (188894c4) 358 - - Backend no longer creates windows for extensions; extensions open their own via API 359 - - Simplifies window lifecycle and reduces coupling 360 - - [x] fix(izui): child windows always close on ESC + center windows on screen (b0d07b89) 361 - - ESC policy: child windows always close, active root windows do not 362 - - All new windows centered on screen at creation 363 - - [x] fix(izui): visibility-based transient detection + active mode ESC protection (d74b62b5) 364 - - [x] feat(izui): center child windows over parent window (bd947dbc) 365 - - Parent window position/size used to calculate centered placement 366 - - Focus restored to parent on child close 367 - - [x] fix(izui): renderer-driven escape lifecycle for navigate mode windows (dc470b7f) 368 - - [x] fix(izui): fix ESC navigation, window drag, and navbar cleanup (3ca4841b) 369 - - [x] fix(izui): fix transient detection race condition (d634a52b) 370 - - [x] fix: clean up modes, remove overlay, fix IZUI navigation stack (6be5fc45) 371 - - [x] fix(groups): filter peek:// URLs and fix IZUI stack navigation (70ab1706) 372 - - [x] cleanup(overlay): remove vestigial overlay references and rename events (16402840) 373 - - [x] fix(main): remove non-existent overlay from CONSOLIDATED_EXTENSION_IDS (518c4406) 285 + - [x] IZUI state machine for transient vs active window behavior — centralized state tracking, ESC behavior depends on context ([457c](https://tangled.org/burrito.space/peek/commit/457ce41d3dd96dc2447951347ce5047f85d87029)) 286 + - [x] OS-level focus for transient detection, graceful test shutdown ([e176](https://tangled.org/burrito.space/peek/commit/e17643284ffa2e175fa4d48aca1b973382a60b96)) 287 + - [x] Passive backend window manager — extensions open their own windows via API ([1888](https://tangled.org/burrito.space/peek/commit/188894c4855996600fbbb1702a592b6a2b6be035)) 288 + - [x] Child windows always close on ESC, new windows centered on screen ([b0d0](https://tangled.org/burrito.space/peek/commit/b0d07b893143dff7da8fdebc2669e0520c01a2a8)) 289 + - [x] Visibility-based transient detection and active mode ESC protection ([d74b](https://tangled.org/burrito.space/peek/commit/d74b62b550f87d05a927a1f5e3fee75b82159355)) 290 + - [x] Center child windows over parent window, restore focus on close ([bd94](https://tangled.org/burrito.space/peek/commit/bd947dbcbcd76009990571d8292f283d81268cd1)) 291 + - [x] Renderer-driven escape lifecycle for navigate mode windows ([dc47](https://tangled.org/burrito.space/peek/commit/dc470b7fe05f1b83c77f66e4ffe0b38522848919)) 292 + - [x] Fix ESC navigation, window drag, and navbar cleanup ([3ca4](https://tangled.org/burrito.space/peek/commit/3ca4841b6a279c6280d9673632b64f6433e88f45)) 293 + - [x] Fix transient detection race condition ([d634](https://tangled.org/burrito.space/peek/commit/d634a52bd07f2b64112e5a7d6cd3e60119a5a959)) 294 + - [x] Clean up modes, remove overlay, fix IZUI navigation stack ([6be5](https://tangled.org/burrito.space/peek/commit/6be5fc453d88914a3536d66cc6ecb80e5118d731)) 295 + - [x] Filter peek:// URLs and fix IZUI stack navigation ([70ab](https://tangled.org/burrito.space/peek/commit/70ab1706b21a2456b0f5896a60ac5acf0e23c5d2)) 296 + - [x] Remove vestigial overlay references and rename events ([1640](https://tangled.org/burrito.space/peek/commit/164028401acd7efb18e149270868cb6ca3ddf220)) 297 + - [x] Remove non-existent overlay from consolidated extension IDs ([518c](https://tangled.org/burrito.space/peek/commit/518c44065a4b23cd221bca9f1e054eeb5ea6a7c9)) 374 298 375 299 Desktop - Reactivity & Events 376 - - [x] feat(reactivity): add tag-centric events for real-time UI updates (8c229cdf) 377 - - `tag:created`, `tag:item-added`, `tag:item-removed` events 378 - - Extensions can subscribe to tag changes for live UI updates 379 - - [x] feat(reactivity): item CRUD events, debouncing, history/feeds subscriptions (1d351083) 380 - - `item:created`, `item:updated`, `item:deleted` events 381 - - Debounced event emission to prevent UI thrashing 382 - - History and feeds extensions subscribe to relevant events 383 - - [x] feat(datastore): implement item_events table and CRUD operations (78950782) 384 - - [x] feat(preload): expose item_events API to renderer (f8f85ebc) 300 + - [x] Tag-centric events for real-time UI updates — tag:created, tag:item-added, tag:item-removed ([8c22](https://tangled.org/burrito.space/peek/commit/8c229cdf68c32bb51332f49c7feb6093b7201a2e)) 301 + - [x] Item CRUD events with debouncing, history/feeds subscriptions ([1d35](https://tangled.org/burrito.space/peek/commit/1d351083780203bd00166ecf0d800167f5d038bb)) 302 + - [x] Implement item_events table and CRUD operations ([7895](https://tangled.org/burrito.space/peek/commit/78950782d132b1f3e2fc25b5e76fd10dbdb52759)) 303 + - [x] Expose item_events API to renderer ([f8f8](https://tangled.org/burrito.space/peek/commit/f8f85ebcba23b323d93c38bd97a4308c7472301d)) 385 304 386 305 Desktop - Window Management 387 - - [x] feat(window): add overlay mode for transient full-screen views (0727112b) 388 - - [x] fix(windows): hide other windows AFTER windows view opens (37ee7d43) 389 - - [x] fix(windows): ESC always closes, remove fallback emoji (3fddd1a6) 390 - - [x] refactor(windows): transparent bg with groups/tags card style (414e2139) 391 - - [x] refactor(windows): use peek-card and peek-grid components (666efa8d) 392 - - [x] fix(windows): use correct path for component imports (8b6686e4) 306 + - [x] Add overlay mode for transient full-screen views ([0727](https://tangled.org/burrito.space/peek/commit/0727112b71e08949c5c85ab1f4ae11eb4e5f519c)) 307 + - [x] Hide other windows after windows view opens ([37ee](https://tangled.org/burrito.space/peek/commit/37ee7d4361aa10d5f320a4d41c7985837b2a75c4)) 308 + - [x] ESC always closes windows, remove fallback emoji ([3fdd](https://tangled.org/burrito.space/peek/commit/3fddd1a6beaaeb2d9032c5a697d2a1b3814726c3)) 309 + - [x] Transparent background with groups/tags card style ([414e](https://tangled.org/burrito.space/peek/commit/414e2139f66fa276266fe53e27f4b8c563c8301d)) 310 + - [x] Use peek-card and peek-grid components for windows ([666e](https://tangled.org/burrito.space/peek/commit/666efa8d77ddf47fa81f214cff5e8564db06d074)) 311 + - [x] Fix component import paths ([8b66](https://tangled.org/burrito.space/peek/commit/8b6686e4809a891ee9db6007fb5c79d7ab059b3d)) 393 312 394 313 Desktop - Architecture & Modes 395 - - [x] feat(context): add app-wide context API for extensible mode management (196a12d0) 396 - - [x] refactor(modes): remove modes.ts, consolidate into context API and datastore (5943e223) 397 - - [x] refactor(modes): remove settings mode and minor modes (simplify to page/group/default) (eab54a3f) 398 - - [x] feat(schema): add feeds and series architecture (8688c501) 399 - - [x] feat(feeds): add feed reader extension and API documentation (44c5b507) 314 + - [x] App-wide context API for extensible mode management ([196a](https://tangled.org/burrito.space/peek/commit/196a12d063dcb5c6eafca5a2e9c40b9b1ab4c474)) 315 + - [x] Consolidate modes into context API and datastore ([5943](https://tangled.org/burrito.space/peek/commit/5943e2232e66658377ba0843d607f7ee0101f605)) 316 + - [x] Simplify to page/group/default modes ([eab5](https://tangled.org/burrito.space/peek/commit/eab54a3ff2b29957873ecd224dd419f8d8185511)) 317 + - [x] Add feeds and series architecture ([8688](https://tangled.org/burrito.space/peek/commit/8688c50133ebac280772bca4173b5ee99cd4a61b)) 318 + - [x] Add feed reader extension ([44c5](https://tangled.org/burrito.space/peek/commit/44c5b507a1d0f879ba60c68de0b1e529bc5feed9)) 400 319 401 320 Desktop - Editor & Commands 402 - - [x] feat(editor): implement note editing flow with autosave (0ae56bb7) 403 - - [x] feat(cmd): restore mode indicator to command bar (from orphaned commits) (917640ca) 404 - - Shows current mode (page/group/settings) 405 - - Click to cycle through modes 406 - - Auto-hides when in default mode 407 - - [x] feat(cmd): add Sync now command for manual sync trigger (18d02d2c) 408 - - [x] refactor(cmd): use connector pattern for edit and note commands (48465f72) 409 - - [x] fix(cmd): url command returns error instead of opening editor when no URL provided (5141fb07) 321 + - [x] Note editing flow with autosave ([0ae5](https://tangled.org/burrito.space/peek/commit/0ae56bb7c9586de0c2c9cf14245148ae9de2ecfd)) 322 + - [x] Restore mode indicator to command bar — shows current mode, click to cycle ([9176](https://tangled.org/burrito.space/peek/commit/917640cacdb7e6f016cdd7e5a4dec3434a198d4b)) 323 + - [x] Add "Sync now" command for manual sync trigger ([18d0](https://tangled.org/burrito.space/peek/commit/18d02d2cd3d65f60537a1d1622923c0696029999)) 324 + - [x] Use connector pattern for edit and note commands ([4846](https://tangled.org/burrito.space/peek/commit/48465f72a50e5b801a71e9c09c4262dff0636ebb)) 325 + - [x] URL command returns error instead of opening editor when no URL provided ([5141](https://tangled.org/burrito.space/peek/commit/5141fb07b095f117552fd8ce461ac318f5907219)) 410 326 411 327 Desktop - UI & Components 412 - - [x] feat(components): add glass-morphism tokens and component modes (7b2e52dc) 413 - - [x] fix(ui): center card headers, disable URL input autocapitalize, fix dev script (aa578e0d) 414 - - [x] fix(page): set default background on webview content when page has none (9fc274ab) 415 - - Respects system theme (dark/light) 416 - - Only applies when page doesn't set its own background 417 - - [x] fix(page): use trackNavigation for URL visit recording (f2677891) 328 + - [x] Add glass-morphism tokens and component modes ([7b2e](https://tangled.org/burrito.space/peek/commit/7b2e52dca752a2c46920364667e0f58a42360ba2)) 329 + - [x] Center card headers, disable URL input autocapitalize, fix dev script ([aa57](https://tangled.org/burrito.space/peek/commit/aa578e0d91539d6f4d7b6e177e993106e9e9b226)) 330 + - [x] Set default background on webview content when page has none — respects system theme ([9fc2](https://tangled.org/burrito.space/peek/commit/9fc274ab7ffc402f4409769023bed2bfcb439d3e)) 331 + - [x] Use trackNavigation for URL visit recording ([f267](https://tangled.org/burrito.space/peek/commit/f267789149b2418d4e58d90f24da86c023bf930f)) 418 332 419 333 Desktop - Profiles & Startup 420 - - [x] feat(profiles): add Chromium session partition isolation per profile (2d704158) 421 - - [x] fix(profiles): register peek:// protocol on profile session (cd80de8d) 422 - - [x] fix(startup): respect startupFeature pref instead of always opening settings (5b920fab) 334 + - [x] Chromium session partition isolation per profile ([2d70](https://tangled.org/burrito.space/peek/commit/2d704158814b911fd76579febe03ea6119e596ea)) 335 + - [x] Register peek:// protocol on profile session ([cd80](https://tangled.org/burrito.space/peek/commit/cd80de8d23562964ac212b240f49813535f9b1d3)) 336 + - [x] Respect startupFeature pref instead of always opening settings ([5b92](https://tangled.org/burrito.space/peek/commit/5b920fab23aa7c30105f3e435931a0d25092fa70)) 423 337 424 338 Desktop - Fixes 425 - - [x] fix: ESC handling for Active mode windows (IZUI policy compliance) 426 - - [x] fix: add getFocusedVisibleWindowId API for modal window targeting 427 - - [x] fix: add trackNavigation API for unified page load tracking 428 - - [x] fix: update test to use peek://ext/cmd/panel.html (correct URL after cleanup) 429 - - [x] fix: window-list returns actual URLs from peek://app/page containers 430 - - [x] fix: mode detection from URL in window creation 431 - - [x] fix: add native module check script (prevents NODE_MODULE_VERSION mismatch) 432 - - [x] fix: unit tests run under Electron's Node (ELECTRON_RUN_AS_NODE=1) to match native module ABI 433 - - [x] fix(ipc): cast address to string for type safety (32a7f8a0) 434 - - [x] fix(ipc): sanitize window params to prevent serialization crash (fca6a26f) 435 - - [x] fix(build): exclude tmp/ agent workspaces from electron-builder (f0f26e31) 436 - - [x] fix(build): electron-builder uses yml config via extends (4620155f) 437 - - [x] fix(url): normalize trailing slash on bare domain URLs (3c2bbd61) 339 + - [x] ESC handling for Active mode windows (IZUI policy compliance) 340 + - [x] Add getFocusedVisibleWindowId API for modal window targeting 341 + - [x] Add trackNavigation API for unified page load tracking 342 + - [x] Update test to use peek://ext/cmd/panel.html 343 + - [x] Window-list returns actual URLs from peek://app/page containers 344 + - [x] Mode detection from URL in window creation 345 + - [x] Add native module check script (prevents NODE_MODULE_VERSION mismatch) 346 + - [x] Unit tests run under Electron's Node to match native module ABI 347 + - [x] Cast address to string for type safety ([32a7](https://tangled.org/burrito.space/peek/commit/32a7f8a0b97b12718211cc4cd39264cea5a6de49)) 348 + - [x] Sanitize window params to prevent serialization crash ([fca6](https://tangled.org/burrito.space/peek/commit/fca6a26f963623bc04a94bc2361cb9e4f49a2678)) 349 + - [x] Exclude tmp/ agent workspaces from electron-builder ([f0f2](https://tangled.org/burrito.space/peek/commit/f0f26e312d0174f2d6a304ed8638145d09a2c94b)) 350 + - [x] Electron-builder uses yml config via extends ([4620](https://tangled.org/burrito.space/peek/commit/4620155f4f96c9a42bdf00211967efa547063e19)) 351 + - [x] Normalize trailing slash on bare domain URLs ([3c2b](https://tangled.org/burrito.space/peek/commit/3c2bbd619327e7cb6dfbba027ce1805d5873e0b2)) 438 352 439 353 Mobile / iOS 440 - - [x] feat(mobile): add URL action icons with native WKWebView + visit tracking (ee06ef99) 441 - - Open in Browser: opens URL in Safari 442 - - Open in Webview: opens URL in embedded native WKWebView 443 - - Track visits when URLs are loaded/navigated in webview 444 - - [x] fix(webview-plugin): simplify Swift integration with direct FFI (18258830) 445 - - [x] feat(mobile): fix native webview and restore icon system (1b641ed1) 446 - - [x] fix(ios): require hold gesture for pull-to-refresh (prevents accidental triggers) (0efb4445) 447 - - [x] feat(ios): bottom sheet webview + research docs (80fb7d8f) 448 - - [x] feat(webview): card-expansion iframe overlay replaces native bottom sheet (eb43f135) 449 - - [x] fix(ios): silence linker warnings and remove unused default icons (8cd36323) 450 - - [x] fix(ios): UX polish pass - 18 fixes for editor, share extension, layout, build (cf5fe38b) 451 - - [x] fix(ios): UX polish - 13 fixes for share sheet, editor, keyboard, sorting, filters (956fdcb8) 452 - - [x] fix(ui): maximize editor card space - tighter padding, remove separator, expand to edges (2a0fc4bf) 453 - - [x] fix(ui): undo/redo at top, reduce gaps, add webview link for text items (90d76c51) 454 - - [x] fix(share): commit pending tag text when Done is tapped (712a5108) 455 - - [x] fix(build): use dynamic DerivedData path for sim:install (94420c17) 354 + - [x] URL action icons with native WKWebView + visit tracking — open in Safari or embedded webview ([ee06](https://tangled.org/burrito.space/peek/commit/ee06ef990eb2bad8a17de65708a088198625e7f7)) 355 + - [x] Simplify Swift webview integration with direct FFI ([1825](https://tangled.org/burrito.space/peek/commit/182588302aef990b8ced2c8b4bd1143ba813653f)) 356 + - [x] Fix native webview and restore icon system ([1b64](https://tangled.org/burrito.space/peek/commit/1b641ed1fdd510c83847c8cf213cc14eac5e1319)) 357 + - [x] Require hold gesture for pull-to-refresh to prevent accidental triggers ([0efb](https://tangled.org/burrito.space/peek/commit/0efb444539dba1d4cc7ed5cbd68815978ee2a5b0)) 358 + - [x] Bottom sheet webview ([80fb](https://tangled.org/burrito.space/peek/commit/80fb7d8f9f3df9d064720c4801c91af0898e611f)) 359 + - [x] Card-expansion iframe overlay replaces native bottom sheet ([eb43](https://tangled.org/burrito.space/peek/commit/eb43f135aaf8ed51c69dff6d7726cf995bf0c3ed)) 360 + - [x] Silence linker warnings and remove unused default icons ([8cd3](https://tangled.org/burrito.space/peek/commit/8cd36323c9173e18559108b909718589433bbcda)) 361 + - [x] UX polish pass — 18 fixes for editor, share extension, layout, build ([cf5f](https://tangled.org/burrito.space/peek/commit/cf5fe38b9cf9148fb2b506085aced75a0871221f)) 362 + - [x] UX polish — 13 fixes for share sheet, editor, keyboard, sorting, filters ([956f](https://tangled.org/burrito.space/peek/commit/956fdcb80b723c155a25195e6a6aa55e9a35b336)) 363 + - [x] Maximize editor card space — tighter padding, expand to edges ([2a0f](https://tangled.org/burrito.space/peek/commit/2a0fc4bf7c778068a7a76bee723410d98a44265b)) 364 + - [x] Undo/redo at top, reduce gaps, add webview link for text items ([90d7](https://tangled.org/burrito.space/peek/commit/90d76c5178864b8d313333b0a6507b64ff1eaf6b)) 365 + - [x] Commit pending tag text when Done is tapped ([712a](https://tangled.org/burrito.space/peek/commit/712a5108ebca84bfa96143b6dfd12d0725a79b54)) 366 + - [x] Use dynamic DerivedData path for sim:install ([9442](https://tangled.org/burrito.space/peek/commit/94420c1731e25992049d270b48b6a0626f13a54e)) 456 367 457 368 Testing 458 - - [x] feat(tests): add Playwright browser extension e2e tests 459 - - [x] fix(tests): improve extension ID detection and shared instance handling 460 - - [x] fix(tests): remove Firefox Playwright support (not supported by Playwright) 461 - - [x] test: add integration tests for tag-centric events (ed9dd17a) 369 + - [x] Add Playwright browser extension e2e tests 370 + - [x] Improve extension ID detection and shared instance handling 371 + - [x] Remove Firefox Playwright support (not supported by Playwright) 372 + - [x] Add integration tests for tag-centric events ([ed9d](https://tangled.org/burrito.space/peek/commit/ed9dd17a41ba94b54faae75cd595934f2e9cecb2)) 462 373 463 374 Refactoring 464 - - [x] refactor(extensions): move tag and tagset commands to tags extension (d6636aaa) 465 - - [x] refactor(extensions): create files extension with csv and save commands (435cc952) 466 - - [x] refactor(extensions): create sync extension with sync command (e5867452) 375 + - [x] Move tag and tagset commands to tags extension ([d663](https://tangled.org/burrito.space/peek/commit/d6636aaa3087c2ec7bcf817363f16a9b7c901244)) 376 + - [x] Create files extension with csv and save commands ([435c](https://tangled.org/burrito.space/peek/commit/435cc952196795389322bda8f9f9d48b176c4340)) 377 + - [x] Create sync extension with sync command ([e586](https://tangled.org/burrito.space/peek/commit/e5867452459b6c136b01c663d1237cc3c05a4899)) 467 378 468 379 Datastore & UI 469 - - [x] fix(datastore): show addresses/visits/tags stats with safe error handling 470 - - [x] fix(datastore): extract stats from result.data wrapper 471 - - [x] chore: clean up settings and diagnostic UI 380 + - [x] Show addresses/visits/tags stats with safe error handling 381 + - [x] Extract stats from result.data wrapper 382 + - [x] Clean up settings and diagnostic UI 472 383 473 384 Code Cleanup 474 - - [x] chore: remove vestigial app/cmd/ directory (24 files, replaced by extensions/cmd/) 475 - - [x] chore: remove app/scripts/ (disabled feature with missing HTML files) 476 - - [x] chore: remove dead functions from app/index.js (uninitFeature, initIframeFeature) 477 - - [x] chore: remove Cmd and Scripts entries from app/config.js (non-existent URLs) 478 - - [x] chore: simplify app/features.js (all features are now extensions) 479 - - [x] chore: remove commented-out sendToWindow/onMessage APIs from preload.js 480 - - [x] chore: remove 7 unused IPC handlers from ipc.ts (~155 lines) 385 + - [x] Remove vestigial app/cmd/ directory (24 files, replaced by extensions/cmd/) 386 + - [x] Remove app/scripts/ (disabled feature with missing HTML files) 387 + - [x] Remove dead functions from app/index.js 388 + - [x] Remove Cmd and Scripts entries from app/config.js 389 + - [x] Simplify app/features.js (all features are now extensions) 390 + - [x] Remove commented-out sendToWindow/onMessage APIs from preload.js 391 + - [x] Remove 7 unused IPC handlers from ipc.ts (~155 lines) 481 392 482 393 ## 2026-01-26 483 394
+645 -726
docs/feed.xml
··· 4 4 <title>Peek Changelog</title> 5 5 <link>https://tangled.org/burrito.space/peek</link> 6 6 <description>Recent changes to Peek</description> 7 - <lastBuildDate>Thu, 19 Feb 2026 16:38:31 GMT</lastBuildDate> 7 + <lastBuildDate>Thu, 19 Feb 2026 17:09:20 GMT</lastBuildDate> 8 8 <generator>changelog-to-rss.js</generator> 9 9 <atom:link href="https://tangled.org/burrito.space/peek/raw/main/docs/feed.xml" rel="self" type="application/rss+xml"/> 10 10 <item> ··· 12 12 <link>https://tangled.org/burrito.space/peek</link> 13 13 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-02-19</guid> 14 14 <pubDate>Thu, 19 Feb 2026 12:00:00 GMT</pubDate> 15 - <description><![CDATA[<p>Desktop - Themes<br> 16 - <ul><li>feat(themes): implement themes-as-extensions Phase 1+2 — unified lifecycle and cmd palette switching (213b)</li><br> 17 - <li style="margin-left:1em">Themes are CSS-only extensions served via peek://theme/ protocol</li><br> 18 - <li style="margin-left:1em">Switch themes from command palette, auto-discovers installed theme extensions</li><br> 19 - <li style="margin-left:1em">Includes default "Peek" theme with bundled fonts</li><br> 20 - <li>feat(theme): add 七十二候 micro-seasons theme with traditional Japanese colors (d031)</li><br> 21 - <li style="margin-left:1em">Colors change automatically every ~5 days based on Japan's 72 micro-seasons calendar</li><br> 22 - <li style="margin-left:1em">Uses 伝統色 (traditional Japanese colors) with automatic dark mode derivation via color-mix()</li><br> 23 - <li>fix(themes): copy fonts to theme-peek extension and fix font URLs (da4b)</li><br> 24 - <li>fix(editor): improve syntax highlighting readability in dark mode (de99)</li><br> 25 - </ul><br> 26 - Desktop - Groups<br> 27 - <ul><li>feat(groups): add workspace persistence — save and restore window layouts per group (1a25)</li><br> 28 - <li>feat(groups): add quick wins — close, search scope, switch, pin (b8a6)</li><br> 29 - <li style="margin-left:1em">Close all windows in group, scope search to group, switch between groups, pin windows</li><br> 30 - <li>test(groups): add unit tests for groups quick wins (805d)</li><br> 31 - </ul><br> 32 - Desktop - Widget System<br> 33 - <ul><li>feat(sheets): add widget sheet extension with freeform layout (9644)</li><br> 34 - <li>feat(hud): migrate HUD to widget sheet system with individual widget pages (4ec6)</li><br> 35 - <li>feat(extensions): add widget demo extension (7aeb)</li><br> 36 - <li>feat(grid): add freeform layout mode with drag/resize editing (6f05)</li><br> 37 - <li style="margin-left:1em">New "freeform" viewMode for peek-grid — drag to move, edge-drag to resize, snap-to-grid</li><br> 38 - </ul><br> 39 - Desktop - Editor<br> 40 - <ul><li>feat(editor): add vim :set wrap/nowrap, :set number/nonumber, and :q command (4750)</li><br> 41 - <li>feat(editor): persist vim :set settings (wrap, lineNumbers) across sessions (ab30)</li><br> 42 - <li>fix(editor): support multiple simultaneous editor instances (a3be)</li><br> 43 - </ul><br> 44 - Desktop - Page View<br> 45 - <ul><li>feat(page): show loading indicator for in-page webview navigations (538f)</li><br> 46 - <li>fix(page): rewrite loading indicator — separate lifecycle from visual effect (847d)</li><br> 47 - <li>fix(page): ensure page loading glow clears when page finishes loading (1630)</li><br> 48 - </ul><br> 49 - Desktop - Entity Recognition<br> 50 - <ul><li>feat(entities): add Phase 1 entity validation framework (64f7)</li><br> 51 - <li>test(entities): add unit tests for name-validator module (d81c)</li><br> 52 - </ul><br> 53 - Desktop - Tauri<br> 54 - <ul><li>feat(tauri): add system tray with click-to-show (c469)</li><br> 55 - <li>feat(tauri): add net-fetch proxy and file dialog commands (83f5)</li><br> 56 - </ul><br> 57 - Desktop - Refactoring<br> 58 - <ul><li>refactor: extract shared modules to app/lib — pubsub, izui, frecency, shortcuts, session (da44, 9ff2, 10f0, e267, 7ed8)</li><br> 59 - <li style="margin-left:1em">Platform-agnostic implementations shared between Electron and Tauri backends</li><br> 60 - </ul><br> 61 - Desktop - Fixes<br> 62 - <ul><li>fix(drag): use !important CSS classes for hold/drag cursor feedback (6e86)</li><br> 63 - <li>fix(sync): make sync now fire-and-forget + add 15s timeout (96ed, 73f9)</li><br> 64 - <li>fix: handle macOS open command with local file paths (1ae8)</li><br> 65 - <li>fix: prevent opening app directory as file:// URL on startup (e12b)</li><br> 66 - <li>fix(ext): use Promise.allSettled for extension loading so one failure doesn't block all commands (d031)</li><br> 67 - </ul><br> 68 - Testing<br> 69 - <ul><li>fix(tests): resolve pre-existing unit test failures across 4 test suites (a961)</li></ul></p>]]></description> 15 + <description>Desktop - Themes 16 + - Switchable themes from command palette — themes are now installable CSS extensions (213b (https://tangled.org/burrito.space/peek/commit/213b4794a5f6dac0f29da22b9317c41fd23563d9)) 17 + - Add 七十二候 micro-seasons theme — colors change automatically every ~5 days based on Japan&apos;s 72 seasons calendar (d031 (https://tangled.org/burrito.space/peek/commit/d031c4f42b804bbe2442c1169069264c6ecfa326)) 18 + - Fix theme font loading and URLs (da4b (https://tangled.org/burrito.space/peek/commit/da4b78bf3077013c31ba650f02dba8a0b393eff9)) 19 + - Improve syntax highlighting readability in dark mode (de99 (https://tangled.org/burrito.space/peek/commit/de993e4710b2c02369c0a0ef378c908f6e11f583)) 20 + 21 + Desktop - Groups 22 + - Save and restore window layouts per group (1a25 (https://tangled.org/burrito.space/peek/commit/1a25f1d8742a52ec3e849f99b9465cafc61f3089)) 23 + - Close all windows in group, scope search to group, switch between groups, pin windows (b8a6 (https://tangled.org/burrito.space/peek/commit/b8a6befeb2eff51b5638aa4b790b77a74c4ddf52)) 24 + - Add unit tests for group quick wins (805d (https://tangled.org/burrito.space/peek/commit/805d0993e4c4edc294b57bd463bcfef71d9f0266)) 25 + 26 + Desktop - Widget System 27 + - Add widget sheet extension with freeform layout (9644 (https://tangled.org/burrito.space/peek/commit/96449d04269ac0a14740bad03067ddf2e784b6e3)) 28 + - Migrate HUD to widget sheet system with individual widget pages (4ec6 (https://tangled.org/burrito.space/peek/commit/4ec60504040874495d9439636db38513188aad46)) 29 + - Add widget demo extension (7aeb (https://tangled.org/burrito.space/peek/commit/7aeb1baa90812f18a26699035eab6487294c78fd)) 30 + - Add freeform layout mode with drag-to-move, edge-drag-to-resize, and snap-to-grid (6f05 (https://tangled.org/burrito.space/peek/commit/6f05c81f835653363d7f5df6ede6f48878495031)) 31 + 32 + Desktop - Editor 33 + - Add vim :set wrap/nowrap, :set number/nonumber, and :q command (4750 (https://tangled.org/burrito.space/peek/commit/4750ab83412366fa303bd4756fab3c393aebaaf8)) 34 + - Persist vim :set settings across sessions (ab30 (https://tangled.org/burrito.space/peek/commit/ab30313bf529b5065a06a1e55517c2a1c7edff35)) 35 + - Support multiple simultaneous editor instances (a3be (https://tangled.org/burrito.space/peek/commit/a3beea130920c0f4da96ee99d4021ab673a576b9)) 36 + 37 + Desktop - Page View 38 + - Show loading indicator for in-page navigations (538f (https://tangled.org/burrito.space/peek/commit/538f3769aa6cba57af1c12cb57cb14437527a4db)) 39 + - Rewrite loading indicator for reliability (847d (https://tangled.org/burrito.space/peek/commit/847dd119d0b540cd96f9fa1d9a6bdbd0c6fb2a95)) 40 + - Ensure loading glow clears when page finishes loading (1630 (https://tangled.org/burrito.space/peek/commit/16304f58514b40a14cf040e31826699e83dc93a6)) 41 + 42 + Desktop - Entity Recognition 43 + - Add entity validation framework (64f7 (https://tangled.org/burrito.space/peek/commit/64f7a7a470aa06fd7576607113b04cfa9adfbb1c)) 44 + - Add unit tests for name-validator module (d81c (https://tangled.org/burrito.space/peek/commit/d81c07d73229f5920d1f253b220e2d4fa35d9578)) 45 + 46 + Desktop - Tauri 47 + - Add system tray with click-to-show (c469 (https://tangled.org/burrito.space/peek/commit/c469d9da5ea67e513eb0467bda8550f3f10e1c1c)) 48 + - Add net-fetch proxy and file dialog commands (83f5 (https://tangled.org/burrito.space/peek/commit/83f5a1d261ff53a8d91407131c60218ba2eb2971)) 49 + 50 + Desktop - Refactoring 51 + - Extract shared modules to app/lib for platform-agnostic use between Electron and Tauri (da44 (https://tangled.org/burrito.space/peek/commit/da44fd3dd4ea7db548b9894687e8cefa18efbe64), 9ff2 (https://tangled.org/burrito.space/peek/commit/9ff26e737bf254facffdcc47ec708ec5ef88db23), 10f0 (https://tangled.org/burrito.space/peek/commit/10f0bfc0855ac5934ec1f6c7f6843fc5efd0025e), e267 (https://tangled.org/burrito.space/peek/commit/e267e2661139e7ebad0e91ac7e458af05a3502ba), 7ed8 (https://tangled.org/burrito.space/peek/commit/7ed8b22556f1e2fbbe26c3cc833956f7cc29a270)) 52 + 53 + Desktop - Fixes 54 + - Fix hold/drag cursor feedback CSS (6e86 (https://tangled.org/burrito.space/peek/commit/6e862be638d70eac3fa1163c6c1dd7e14b11b8f5)) 55 + - Make sync fire-and-forget with 15s timeout (96ed (https://tangled.org/burrito.space/peek/commit/96edd06a18c374926e515b703d6193116fe2c19d), 73f9 (https://tangled.org/burrito.space/peek/commit/73f9896fd1aa5c6b0b683cafa9d58ec12528be6c)) 56 + - Handle macOS open command with local file paths (1ae8 (https://tangled.org/burrito.space/peek/commit/1ae8101e0554cf9d2e17db11ee94b9aabc58e8c7)) 57 + - Prevent opening app directory as file:// URL on startup (e12b (https://tangled.org/burrito.space/peek/commit/e12bef73e27699ed8cc7b53da178fc2a247b198b)) 58 + - Use Promise.allSettled for extension loading so one failure doesn&apos;t block all commands (d031 (https://tangled.org/burrito.space/peek/commit/d031c4f42b804bbe2442c1169069264c6ecfa326)) 59 + 60 + Testing 61 + - Resolve pre-existing unit test failures across 4 test suites (a961 (https://tangled.org/burrito.space/peek/commit/a9610b631d66db1a190ab49332cc06667fad3ef9))</description> 70 62 </item> 71 63 <item> 72 64 <title>2026-02-16</title> 73 65 <link>https://tangled.org/burrito.space/peek</link> 74 66 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-02-16</guid> 75 67 <pubDate>Mon, 16 Feb 2026 12:00:00 GMT</pubDate> 76 - <description><![CDATA[<p>Desktop - Command Palette<br> 77 - <ul><li>feat(cmd): generic command chaining with pipe system (597)</li><br> 78 - <li>feat(cmd): replace embedded chain editor with popup window system (572)</li><br> 79 - <li>feat(cmd): add parameter suggestions to command palette (693)</li><br> 80 - <li>feat(cmd): add noun registration API for declarative command generation (191)</li><br> 81 - <li>fix(cmd): remove download cmd, fix save filename, fix dialog parent, unify hashtag extraction (5b95)</li><br> 82 - <li>fix(cmd): preserve noun routing metadata in command registry pipeline (39a4)</li><br> 83 - </ul><br> 84 - Desktop - Entity Recognition<br> 85 - <ul><li>feat(entities): add observation frequency ranking — Phase 1 (803)</li><br> 86 - <li>feat(entities): add thumbs up/down feedback for entity quality scoring (c0e)</li><br> 87 - </ul><br> 88 - Desktop - Tags<br> 89 - <ul><li>feat(tags): add rename and delete tag operations (ac2)</li><br> 90 - <li>fix(tags): add protocol 404 logging, handle all item types, fix filter counts (403e)</li><br> 91 - </ul><br> 92 - Desktop - Display Switching<br> 93 - <ul><li>refactor(display-watcher): replace 3-phase algorithm with safety-net-only approach (afa)</li><br> 94 - <li style="margin-left:1em">Gutted 881-line 3-phase algorithm, replaced with 304-line single-pass safety net</li><br> 95 - <li style="margin-left:1em">Lets macOS handle display migration natively, only rescues genuinely orphaned windows</li><br> 96 - </ul><br> 97 - Desktop - Page View & Dragging<br> 98 - <ul><li>fix(page): filter Cmd+L/R/[/] pubsub by windowId so only active page window responds (657)</li><br> 99 - <li>fix(page): fully end drag on webview mouseup to prevent overlay blocking clicks (a7b)</li><br> 100 - <li>fix(page): handle webview mousemove during active drag for window movement (ac37)</li><br> 101 - <li>fix(drag): remove data-no-drag from extension window bodies to restore hold-to-drag (63c1)</li><br> 102 - </ul><br> 103 - Desktop - Auth & URLs<br> 104 - <ul><li>feat(auth): OAuth popup bridge and flow improvements (c93)</li><br> 105 - <li>fix(url): wait for frontend ready and session restore before processing external URLs (e7ab)</li><br> 106 - </ul><br> 107 - Testing<br> 108 - <ul><li>test(cmd): add completer unit tests; fix tag # prefix stripping (610)</li><br> 109 - <li>test(cmd): add integration tests for command execution through pubsub (e11)</li><br> 110 - <li>test(cmd): add command chaining pipe system tests (566c)</li><br> 111 - <li>test(oauth): add OAuth bridge unit tests (77b)</li><br> 112 - <li>fix(test): fix 4 stale test expectations in desktop smoke tests (4d9)</li></ul></p>]]></description> 68 + <description>Desktop - Command Palette 69 + - Generic command chaining with pipe system (5975 (https://tangled.org/burrito.space/peek/commit/5975f593ff109df82daf56b47233cf6910db89d3)) 70 + - Replace embedded chain editor with popup window system (5729 (https://tangled.org/burrito.space/peek/commit/5729822b4748acc4bf98c9563d4f7c2a17ae2435)) 71 + - Add parameter suggestions to command palette (693d (https://tangled.org/burrito.space/peek/commit/693de4ad13de5edf49643088a724d2788936aca6)) 72 + - Add noun registration API for declarative command generation (191f (https://tangled.org/burrito.space/peek/commit/191fb02212c460355702d619f264fa5801edb6b3)) 73 + - Remove download cmd, fix save filename, fix dialog parent, unify hashtag extraction (5b95 (https://tangled.org/burrito.space/peek/commit/5b95d1af28ec91787778989f5d0f4d8b34435769)) 74 + - Preserve noun routing metadata in command registry pipeline (39a4 (https://tangled.org/burrito.space/peek/commit/39a45314a629b9083163e03a2e59162836266e31)) 75 + 76 + Desktop - Entity Recognition 77 + - Add observation frequency ranking for entities (8031 (https://tangled.org/burrito.space/peek/commit/80313a9eb1da5e586e5d5d50823c0f88a23f57b9)) 78 + - Add thumbs up/down feedback for entity quality scoring (c0e5 (https://tangled.org/burrito.space/peek/commit/c0e5afab57ec4749b29ab35c5ab526b24912720b)) 79 + 80 + Desktop - Tags 81 + - Add rename and delete tag operations (ac2a (https://tangled.org/burrito.space/peek/commit/ac2a86fb419412483cbaa784108526e15067642e)) 82 + - Fix protocol 404 logging, handle all item types, fix filter counts (403e (https://tangled.org/burrito.space/peek/commit/403ea5b151149ef10cd2a22b61838cf7fa3b02a8)) 83 + 84 + Desktop - Display Switching 85 + - Simplify display-watcher to safety-net-only approach — let macOS handle display migration natively, only rescue orphaned windows (afae (https://tangled.org/burrito.space/peek/commit/afae1e4af08491ae69b6feb6dab9c6f1fa7cae10)) 86 + 87 + Desktop - Page View &amp; Dragging 88 + - Fix keyboard shortcuts responding in wrong page window (6573 (https://tangled.org/burrito.space/peek/commit/65735c4d27ac2411d62d9c32c4b6c4494e28e0ba)) 89 + - Fix drag ending on webview mouseup to prevent overlay blocking clicks (a7b8 (https://tangled.org/burrito.space/peek/commit/a7b8948d19f2fec4c239bf51217421dda79d4b80)) 90 + - Fix webview mousemove during active drag for window movement (ac37 (https://tangled.org/burrito.space/peek/commit/ac37674d8b52be9359f4aa1706d86dca11c8ec72)) 91 + - Restore hold-to-drag in extension windows (63c1 (https://tangled.org/burrito.space/peek/commit/63c17b27bd19b3c8f9a288ba491271054a31b450)) 92 + 93 + Desktop - Auth &amp; URLs 94 + - Improve OAuth popup bridge and flow (c93a (https://tangled.org/burrito.space/peek/commit/c93a46dc3ed7ce977e1227f8e3f8ce02152e4695)) 95 + - Wait for frontend ready and session restore before processing external URLs (e7ab (https://tangled.org/burrito.space/peek/commit/e7ab8092a3cdde2dd2ba99de18b7fd1babc4a3c2)) 96 + 97 + Testing 98 + - Add completer unit tests; fix tag # prefix stripping (6102 (https://tangled.org/burrito.space/peek/commit/61020b937d52bd87cfad5425f77167e65421c3c1)) 99 + - Add integration tests for command execution through pubsub (e11d (https://tangled.org/burrito.space/peek/commit/e11daddb41f2c53cbba0ecbae40b0e71e1ec4cb0)) 100 + - Add command chaining pipe system tests (566c (https://tangled.org/burrito.space/peek/commit/566c9ec7028c8197426369b93f148090aa2e7087)) 101 + - Add OAuth bridge unit tests (77b0 (https://tangled.org/burrito.space/peek/commit/77b0f1972afb51f6e0c271bf8abaff09e80a8020)) 102 + - Fix 4 stale test expectations in desktop smoke tests (4d96 (https://tangled.org/burrito.space/peek/commit/4d9683f93f590c58fc823024fddcc65f38b29183))</description> 113 103 </item> 114 104 <item> 115 105 <title>2026-02-13</title> 116 106 <link>https://tangled.org/burrito.space/peek</link> 117 107 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-02-13</guid> 118 108 <pubDate>Fri, 13 Feb 2026 12:00:00 GMT</pubDate> 119 - <description><![CDATA[<p>Desktop - Session Restore<br> 120 - <ul><li>feat(session): implement full session save/restore system (Phases 1-4) (0e8afccd, f270c56d, d0150877, d2fb834a)</li><br> 121 - <li style="margin-left:1em">Phase 1: Snapshot all windows on quit (position, size, URL, mode)</li><br> 122 - <li style="margin-left:1em">Phase 2: Restore windows on startup with confirmation dialog</li><br> 123 - <li style="margin-left:1em">Phase 3: Autosave timer and manual session commands</li><br> 124 - <li style="margin-left:1em">Phase 4: Crash recovery dialog and error handling</li><br> 125 - <li>fix(session): save settings windows, strip stale params on restore, fix display-watcher race conditions (d12bd2b9)</li><br> 126 - <li>fix(session): suppress display-watcher during session restore to preserve window positions (c32b73df)</li><br> 127 - <li>fix(session): handle SIGINT/SIGTERM as clean shutdowns to prevent false crash dialog (f56f5624, 8ab6d36d, 16a2d4bc)</li><br> 128 - <li>fix(session): synchronous SIGINT save and correct canvas page bounds (2df8a733)</li><br> 129 - <li>fix(session): open startup feature when restore is declined or fails (0f280143)</li><br> 130 - </ul><br> 131 - Desktop - Display Switching<br> 132 - <ul><li>feat(display): reposition windows when displays change (d732fa79)</li><br> 133 - <li style="margin-left:1em">Pre-debounce bounds capture preserves window positions before OS moves them</li><br> 134 - <li style="margin-left:1em">Group-based distance scaling for proportional repositioning</li><br> 135 - <li>fix(display-watcher): add home display tracking to restore windows after display reconnect (60b0798d)</li><br> 136 - <li>fix(display): use group-based distance scaling for window repositioning (11166190)</li><br> 137 - </ul><br> 138 - Desktop - Entity Recognition<br> 139 - <ul><li>feat(entities): show source pages in entity list and add detail pane with full metadata (12feb902)</li><br> 140 - <li>fix(entities): improve detection coverage and reduce price noise (82b70037)</li><br> 141 - <li>fix(entities): migrate out standalone price entities lacking product context (383202ae)</li><br> 142 - <li>fix(entities): require context for date entities, migrate out standalone dates (6ada27ba)</li><br> 143 - </ul><br> 144 - Desktop - Command Palette<br> 145 - <ul><li>feat(cmd): add command chaining flow for list notes, markdown, download, save as note (04ef4c8a)</li><br> 146 - <li>feat(cmd): add "open file" command with chaining + fix note inline tag extraction (0717e87b)</li><br> 147 - <li>fix(cmd): remove web search fallback on Enter — require explicit command match (49c6e5ec)</li><br> 148 - <li>fix(cmd,perf): sort history by frecency, use targeted queries for URL lookups (0873e5ee)</li><br> 149 - <li>fix(cmd): restore web page URLs in frecency suggestions (65baa072)</li><br> 150 - <li>fix(cmd): ESC clears text first, Shift-Tab cycles backward, fix frecency tracking (8f6b41a8)</li><br> 151 - <li>fix(cmd): register IZUI escape handler so ESC clears text before closing (80592eb0)</li><br> 152 - <li>fix(cmd): remove prefix feedback that caused adaptive sort cross-contamination (5ceb0517)</li><br> 153 - <li>fix(cmd): add deterministic tiebreaker to command palette sort for consistent autocomplete (566b63a8)</li><br> 154 - </ul><br> 155 - Desktop - Page View & Navigation<br> 156 - <ul><li>feat(page): replace fullscreen transparent window with minimal page host (c543e38b)</li><br> 157 - <li>fix(page): eliminate navbar show/hide webview jump (43c9353e, 982f6a10, 083fbdf9, bd0449db)</li><br> 158 - <li>fix(page): restore webview drag with mousedown/mouseup bridge from guest page (63cd1414)</li><br> 159 - <li>fix(page): remove broken click-through code that activated unrelated windows (10f29146)</li><br> 160 - </ul><br> 161 - Desktop - Window Dragging<br> 162 - <ul><li>fix(drag): rewrite window drag system v3 — unified, faster, works everywhere (5a7c7899, fa58f66b, 1f815b61)</li><br> 163 - </ul><br> 164 - Desktop - HUD & Groups<br> 165 - <ul><li>fix(hud): hide on app blur using did-resign-active (be05026c)</li><br> 166 - <li>fix(groups): fix group creation via inline form (141829f7)</li><br> 167 - <li>fix(tags): restore reactivity on sync and data changes (60eb36df)</li><br> 168 - <li>fix(tags/groups/cmd): fix item icons, group creation form, and tagset detection (5b0ca938)</li><br> 169 - </ul><br> 170 - Desktop - Dark Mode & Settings<br> 171 - <ul><li>fix(darkmode): respect OS color scheme in system mode (6813ea5f)</li><br> 172 - <li>fix(websearch): fix suggestions, default engine setting, and settings UI (bcaeb205)</li><br> 173 - <li>feat(websearch): add Kagi as built-in search engine (e7d05c94)</li><br> 174 - <li>fix(settings): add descriptions and human-readable labels to core settings (0bfe87b9)</li><br> 175 - <li>fix(settings): quit shortcut default reset, editor portrait, datastore table fix (f6a16ad4)</li><br> 176 - </ul><br> 177 - Desktop - Fixes<br> 178 - <ul><li>fix(mode,window): fix mode leak into global scope and bring existing windows to front (9b783b6b)</li><br> 179 - <li>fix(shortcuts): silence spurious warnings when unregistering global shortcuts during shutdown (7941b5f6)</li><br> 180 - <li>fix(cmd): ensure command registration after extensions loaded (3f9df015)</li><br> 181 - <li>refactor(cmd): remove cmd:ready/query boilerplate, register commands directly (f7306de6)</li><br> 182 - <li>feat(components): add sorting and view modes to card grid toolbar (83a85332)</li><br> 183 - <li>fix(rss): use tangled.org URLs, fix localsearch manifest loading (06afcb89)</li><br> 184 - </ul><br> 185 - Testing<br> 186 - <ul><li>test(session): add 67 real integration tests for session save/restore (49f094f7)</li><br> 187 - <li>test(display-watcher): add tests for pre-debounce capture, suppress timer cancellation, and isRemoval flag (fd56204f)</li><br> 188 - <li>test: add 94 new unit tests and fix 3 E2E test failures (2251f86f)</li></ul></p>]]></description> 109 + <description>Desktop - Session Restore 110 + - Full session save/restore — snapshot windows on quit, restore on startup with confirmation, autosave timer, crash recovery dialog (0e8a (https://tangled.org/burrito.space/peek/commit/0e8afccdff0075b9151b3dbd40609f53f16a8521), f270 (https://tangled.org/burrito.space/peek/commit/f270c56db43c1799a0a6c8dd801a00a2419124e3), d015 (https://tangled.org/burrito.space/peek/commit/d0150877ced2ff5e02d7414b3c6c08cd404e0f17), d2fb (https://tangled.org/burrito.space/peek/commit/d2fb834abcd81e1a7d23898b4875f996f8899c52)) 111 + - Save settings windows, strip stale params on restore, fix display-watcher race conditions (d12b (https://tangled.org/burrito.space/peek/commit/d12bd2b93d553c124f508fe37bbd6f7d325f4362)) 112 + - Suppress display-watcher during session restore to preserve window positions (c32b (https://tangled.org/burrito.space/peek/commit/c32b73dfaf9ef4f497623452d7f919be28194392)) 113 + - Treat SIGINT/SIGTERM as clean shutdowns to prevent false crash dialog (f56f (https://tangled.org/burrito.space/peek/commit/f56f5624550c93ef1e93f60392496a70b6dc393f), 8ab6 (https://tangled.org/burrito.space/peek/commit/8ab6d36de9d593b894ef92893dc59b6af751ba3b), 16a2 (https://tangled.org/burrito.space/peek/commit/16a2d4bcabce898ceb850ae3258965c384d71b89)) 114 + - Fix synchronous SIGINT save and correct canvas page bounds (2df8 (https://tangled.org/burrito.space/peek/commit/2df8a7339298b2b3c30f81168eef6b0bfabf4299)) 115 + - Open startup feature when restore is declined or fails (0f28 (https://tangled.org/burrito.space/peek/commit/0f280143d148e3bf25cd870b39cfaef528939d0a)) 116 + 117 + Desktop - Display Switching 118 + - Reposition windows when displays change — preserves positions before OS moves them (d732 (https://tangled.org/burrito.space/peek/commit/d732fa7912f47f70d32fde3b932f5842705fcc38)) 119 + - Track home display to restore windows after display reconnect (60b0 (https://tangled.org/burrito.space/peek/commit/60b0798db24bc9b6b571a30106a1392b453eae1f)) 120 + - Use group-based distance scaling for window repositioning (1116 (https://tangled.org/burrito.space/peek/commit/11166190d9066226b760225731477215c690a1c7)) 121 + 122 + Desktop - Entity Recognition 123 + - Show source pages in entity list and add detail pane with full metadata (12fe (https://tangled.org/burrito.space/peek/commit/12feb9024640dc6a132b2080ae85012307407c78)) 124 + - Improve detection coverage and reduce price noise (82b7 (https://tangled.org/burrito.space/peek/commit/82b700377bbc902113c276d7eb50a5df59812d92)) 125 + - Remove standalone price entities lacking product context (3832 (https://tangled.org/burrito.space/peek/commit/383202ae65eb33aebafb52b01d4dd46579a6060b)) 126 + - Require context for date entities, remove standalone dates (6ada (https://tangled.org/burrito.space/peek/commit/6ada27ba19445ed4dc1c076961336ace34b0c83e)) 127 + 128 + Desktop - Command Palette 129 + - Add command chaining flow for list notes, markdown, download, save as note (04ef (https://tangled.org/burrito.space/peek/commit/04ef4c8aaf106cb8ef8c5110abbda841b940f1b7)) 130 + - Add &quot;open file&quot; command with chaining and fix note inline tag extraction (0717 (https://tangled.org/burrito.space/peek/commit/0717e87b6898b822075effa65d75beb4c9043120)) 131 + - Require explicit command match on Enter — remove web search fallback (49c6 (https://tangled.org/burrito.space/peek/commit/49c6e5ec4027e472af606462fcaeef8044cfdc77)) 132 + - Sort history by frecency, use targeted queries for URL lookups (0873 (https://tangled.org/burrito.space/peek/commit/0873e5ee688ec0a53440382fd88ccd681323a0f8)) 133 + - Restore web page URLs in frecency suggestions (65ba (https://tangled.org/burrito.space/peek/commit/65baa072eef50d9b1ef7c69ad4e03e33116af346)) 134 + - ESC clears text first, Shift-Tab cycles backward, fix frecency tracking (8f6b (https://tangled.org/burrito.space/peek/commit/8f6b41a8db9dc7ca85a1a696f3af4cca74915ac7)) 135 + - Register IZUI escape handler so ESC clears text before closing (8059 (https://tangled.org/burrito.space/peek/commit/80592eb03a143100ddaaa3a4f32db2d95eabc3cc)) 136 + - Remove prefix feedback that caused adaptive sort cross-contamination (5ceb (https://tangled.org/burrito.space/peek/commit/5ceb05172fdfaf0c779ac6f23547a6e56567e123)) 137 + - Add deterministic tiebreaker to sort for consistent autocomplete (566b (https://tangled.org/burrito.space/peek/commit/566b63a8df0b21056b8157670216a668602e1855)) 138 + 139 + Desktop - Page View &amp; Navigation 140 + - Replace fullscreen transparent window with minimal page host (c543 (https://tangled.org/burrito.space/peek/commit/c543e38bf36d79a2c448e3e860157a4a34da388c)) 141 + - Eliminate navbar show/hide webview jump (43c9 (https://tangled.org/burrito.space/peek/commit/43c9353ec1523cd67d3c848ec5536561ad1e797b), 982f (https://tangled.org/burrito.space/peek/commit/982f6a10ac4ed9b7ab383e09b4889aa8224d8262), 083f (https://tangled.org/burrito.space/peek/commit/083fbdf90c90c9b717c259887ae4c22adebae84e), bd04 (https://tangled.org/burrito.space/peek/commit/bd0449db6277a60577ccbc0e6a37afb58adb433c)) 142 + - Restore webview drag with mousedown/mouseup bridge from guest page (63cd (https://tangled.org/burrito.space/peek/commit/63cd141464c98f54e17ad475248208c356957c8a)) 143 + - Remove broken click-through code that activated unrelated windows (10f2 (https://tangled.org/burrito.space/peek/commit/10f29146d98c2cf25b8c63de56de3cfc85b712a9)) 144 + 145 + Desktop - Window Dragging 146 + - Rewrite window drag system — unified, faster, works everywhere (5a7c (https://tangled.org/burrito.space/peek/commit/5a7c7899116f7501f40ca99cbe1b6ed8c93031f3), fa58 (https://tangled.org/burrito.space/peek/commit/fa58f66b384faf13746f8aa3e2bca266fdde3530), 1f81 (https://tangled.org/burrito.space/peek/commit/1f815b618a836270b1b444cf9cbfc13c6373a884)) 147 + 148 + Desktop - HUD &amp; Groups 149 + - Hide HUD on app blur (be05 (https://tangled.org/burrito.space/peek/commit/be05026c3fe8bf9d28c28c05490fc16c3a75a204)) 150 + - Fix group creation via inline form (1418 (https://tangled.org/burrito.space/peek/commit/141829f79561a67556fb231fe89197de795cde09)) 151 + - Restore tags reactivity on sync and data changes (60eb (https://tangled.org/burrito.space/peek/commit/60eb36df2fc0febad130ac8ce104ce756649cc91)) 152 + - Fix item icons, group creation form, and tagset detection (5b0c (https://tangled.org/burrito.space/peek/commit/5b0ca9380c3217a63a66853858ab24dccb5d088f)) 153 + 154 + Desktop - Dark Mode &amp; Settings 155 + - Respect OS color scheme in system dark mode (6813 (https://tangled.org/burrito.space/peek/commit/6813ea5f2e3fb51f11942470c1b706976e985afd)) 156 + - Fix web search suggestions, default engine setting, and settings UI (bcae (https://tangled.org/burrito.space/peek/commit/bcaeb2051189ac03e9c06279cfe87a49c33a730c)) 157 + - Add Kagi as built-in search engine (e7d0 (https://tangled.org/burrito.space/peek/commit/e7d05c943f84b04b521fdce849312e5f05574a78)) 158 + - Add descriptions and human-readable labels to core settings (0bfe (https://tangled.org/burrito.space/peek/commit/0bfe87b9e109ded26ea92c90a0adc9629f29bf3a)) 159 + - Fix quit shortcut default reset, editor portrait, datastore table (f6a1 (https://tangled.org/burrito.space/peek/commit/f6a16ad4a2d060b01ac213b6154bc02aee4f371b)) 160 + 161 + Desktop - Fixes 162 + - Fix mode leak into global scope and bring existing windows to front (9b78 (https://tangled.org/burrito.space/peek/commit/9b783b6b8e544458af64e6129a190fe6b218d436)) 163 + - Silence spurious warnings when unregistering global shortcuts during shutdown (7941 (https://tangled.org/burrito.space/peek/commit/7941b5f670a2e4c764736ab9baff94c287a643b6)) 164 + - Ensure command registration after extensions loaded (3f9d (https://tangled.org/burrito.space/peek/commit/3f9df0153f85a43f3ed392d5bd07357b801dfa33)) 165 + - Simplify command registration — remove boilerplate (f730 (https://tangled.org/burrito.space/peek/commit/f7306de6a6086d45fe56ce76bb5e27612ab593c1)) 166 + - Add sorting and view modes to card grid toolbar (83a8 (https://tangled.org/burrito.space/peek/commit/83a8533205ca3eaf796046a61b627b925dae997f)) 167 + - Use tangled.org URLs for RSS, fix localsearch manifest loading (06af (https://tangled.org/burrito.space/peek/commit/06afcb89112a6ff4dfa9e707f9aeeff057c489f2)) 168 + 169 + Testing 170 + - Add 67 real integration tests for session save/restore (49f0 (https://tangled.org/burrito.space/peek/commit/49f094f7fa698dadd2745c802de1015dcc9f30a3)) 171 + - Add display-watcher tests for pre-debounce capture, suppress timer, and isRemoval flag (fd56 (https://tangled.org/burrito.space/peek/commit/fd56204f81d78dcbb6b586aaea0ef97441eecbd8)) 172 + - Add 94 new unit tests and fix 3 E2E test failures (2251 (https://tangled.org/burrito.space/peek/commit/2251f86f43643a9b308cac6fa46dbf593141cfb3))</description> 189 173 </item> 190 174 <item> 191 175 <title>2026-02-11</title> 192 176 <link>https://tangled.org/burrito.space/peek</link> 193 177 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-02-11</guid> 194 178 <pubDate>Wed, 11 Feb 2026 12:00:00 GMT</pubDate> 195 - <description><![CDATA[<p>Desktop - New Extensions<br> 196 - <ul><li>feat(websearch): implement web search extension with OpenSearch discovery and suggestions (bf488889)</li><br> 197 - <li style="margin-left:1em">Search from command palette with live suggestions from multiple engines</li><br> 198 - <li style="margin-left:1em">Auto-discovers OpenSearch endpoints on visited pages</li><br> 199 - <li style="margin-left:1em">Widget notification in page view when OpenSearch engine found</li><br> 200 - <li>feat(search): implement unified search extension (4b95973d)</li><br> 201 - <li>feat(pagestream): implement vertical history stream extension (35f9afcc)</li><br> 202 - </ul><br> 203 - Desktop - History Unification<br> 204 - <ul><li>refactor(history): unify address/visit system into items table (6 phases) (475e97fe..6f90f258)</li><br> 205 - <li style="margin-left:1em">Phase 1-2: Remove dual-write, redirect renderer address APIs to items</li><br> 206 - <li style="margin-left:1em">Phase 3-4: IPC compatibility layer, update tests and URL normalization</li><br> 207 - <li style="margin-left:1em">Phase 5-6: Update Tauri backend, remove legacy address/visit code and types</li><br> 208 - </ul><br> 209 - Desktop - Dark Mode<br> 210 - <ul><li>feat(darkmode): implement 3-tier dark mode system for web pages (ef242dde)</li><br> 211 - <li style="margin-left:1em">Tier 1 (System): Sets prefers-color-scheme: dark for all webviews</li><br> 212 - <li style="margin-left:1em">Tier 2 (Force): Chromium WebContentsForceDark with CIELAB inversion</li><br> 213 - <li style="margin-left:1em">Settings UI with Off/System/Force selector</li><br> 214 - </ul><br> 215 - Desktop - Page View & Navigation<br> 216 - <ul><li>feat(page): add browser navigation hotkeys and editable URL bar (52a99ec7)</li><br> 217 - <li style="margin-left:1em">Cmd+R reload, Cmd+[/] back/forward, Cmd+L to edit URL</li><br> 218 - <li>feat(page): add widget system with OpenSearch discovery notification (ce5ae4bb)</li><br> 219 - <li>fix(page): improve drag-from-anywhere with long-press detection and all-corner resize (d135cfa6)</li><br> 220 - <li>fix(page): apply background detection to non-canvas web pages (e1ac7b6f)</li><br> 221 - <li>fix(nav): restore full-width navbar — remove floating bubble design (7769f1e1)</li><br> 222 - <li>fix(titles): fix Loading... title bug, add page content extraction and URL metadata enrichment (61ca6f00)</li><br> 223 - <li style="margin-left:1em">Filter "Loading..." from stored titles across all code paths</li><br> 224 - <li style="margin-left:1em">Add extract-page-content IPC handler for live page HTML extraction</li><br> 225 - <li style="margin-left:1em">URL item metadata enrichment with OG tags, description, favicon</li><br> 226 - </ul><br> 227 - Desktop - Tags & Editor<br> 228 - <ul><li>feat(tags): embed editor in detail pane for inline note editing (a575013e)</li><br> 229 - <li style="margin-left:1em">Replace modal with inline detail view, ESC navigation between list and detail</li><br> 230 - <li style="margin-left:1em">Vim status/command bar overlaid on editor, respects vim mode preference</li><br> 231 - <li>feat(tags): add content search with tag combo filtering, pin selected tags in sidebar (d005d3dd)</li><br> 232 - <li>fix(editor,tags): fix note command blank editor, tags reactivity, and editor height (cb4d5e10)</li><br> 233 - <li style="margin-left:1em">New notes create datastore items immediately for autosave</li><br> 234 - <li style="margin-left:1em">Tags UI subscribes to item:updated events for live reactivity</li><br> 235 - <li>fix(editor): forward ESC to vim in insert/visual mode before IZUI handles it (7b866e87)</li><br> 236 - <li>fix(tags): editor layout, vim status bar positioning, and focus ring cleanup (08483e4e, 3100ec71, 3a072f24)</li><br> 237 - </ul><br> 238 - Desktop - Shortcuts & Commands<br> 239 - <ul><li>feat(shortcuts): implement dual hotkey registration — local Cmd+ alongside global Opt+ (545e95b4)</li><br> 240 - <li style="margin-left:1em">Cmd+K (palette), Cmd+E (editor), Cmd+T (tags), Cmd+G (groups), Cmd+H (HUD)</li><br> 241 - <li style="margin-left:1em">Fix: Cmd+Q quit, Cmd+, settings (were incorrectly using Opt+)</li><br> 242 - <li>feat(api): implement commands.list() to query registered commands via pubsub (696c7859)</li><br> 243 - <li>fix(cmd): fix frecency/adaptive sorting in command palette (2f6da3fd)</li><br> 244 - <li style="margin-left:1em">Unified weighted ranking combining adaptive score and frecency</li><br> 245 - <li style="margin-left:1em">Cross-query adaptive feedback for substring matches</li><br> 246 - </ul><br> 247 - Desktop - Settings & Extensions<br> 248 - <ul><li>fix(settings): rework extensions settings — rename sections, unify layout, add options buttons (cb540409)</li><br> 249 - <li style="margin-left:1em">Rename: Features (Peek extensions) vs Extensions (bundled webextensions)</li><br> 250 - <li style="margin-left:1em">Options button for extensions with options pages</li><br> 251 - <li>fix(settings): dynamically list all builtin extensions in Features section (90fe93d0)</li><br> 252 - <li>feat(chrome-ext): generic settings/UI system for bundled Chrome extensions (edbf5169)</li><br> 253 - <li>feat(adblocker): migrate from @cliqz/adblocker-electron to @ghostery/adblocker-electron (93b44561)</li><br> 254 - </ul><br> 255 - Desktop - Fixes<br> 256 - <ul><li>fix(windows): HUD focus stealing, chrome ext options styling, duplicate group cards (47686da7)</li><br> 257 - <li>fix(groups): prevent duplicate windows/URLs, fix race conditions and title resolution (20cb9956)</li><br> 258 - <li>fix(hud): resolve extension disabled by settings key collision (671df42e)</li><br> 259 - <li>fix(context): resolve window ID from caller when null, set mode before loadURL (c1d77f28)</li><br> 260 - <li>fix(entities): align UI with groups/tags component and theme patterns (c5df43bc)</li><br> 261 - <li>fix(scripts): align UI with groups/tags component and theme patterns (50c639ff)</li><br> 262 - <li>fix(editor): use extension settings API for vim mode, audit localStorage usage (3962110b)</li><br> 263 - <li>fix(build): pin Node version to 24.11.1 to match Electron 40 (96c05941)</li><br> 264 - </ul><br> 265 - Testing<br> 266 - <ul><li>test(history): add unified URL/history tests for unification refactor (d3ac05f7)</li><br> 267 - <li>test(entities): add comprehensive test data for entity recognition (d710d039)</li></ul></p>]]></description> 179 + <description>Desktop - New Extensions 180 + - Web search extension — search from command palette with live suggestions, auto-discovers OpenSearch endpoints on visited pages (bf48 (https://tangled.org/burrito.space/peek/commit/bf488889b77d22dd6b17d3613597379ba2b15737)) 181 + - Unified search extension (4b95 (https://tangled.org/burrito.space/peek/commit/4b95973d39a9ab252cce55b8402fbed674d742c4)) 182 + - Vertical history stream extension (35f9 (https://tangled.org/burrito.space/peek/commit/35f9afccca7020cee7762bb603ee68709949dcea)) 183 + 184 + Desktop - History Unification 185 + - Unify address/visit system into items table — remove dual-write, redirect APIs, update Tauri backend, remove legacy code (475e (https://tangled.org/burrito.space/peek/commit/475e97feb695d45e1253e03cd05e1b8a2d1982d7)..6f90 (https://tangled.org/burrito.space/peek/commit/6f90f258e36b729608a49b178db50894478f628f)) 186 + 187 + Desktop - Dark Mode 188 + - 3-tier dark mode for web pages — System (prefers-color-scheme), Force (Chromium CIELAB inversion), with settings UI (ef24 (https://tangled.org/burrito.space/peek/commit/ef242dde9d5829fdb5342d1ba7781bc0e9767485)) 189 + 190 + Desktop - Page View &amp; Navigation 191 + - Browser navigation hotkeys and editable URL bar — Cmd+R reload, Cmd+[/] back/forward, Cmd+L to edit URL (52a9 (https://tangled.org/burrito.space/peek/commit/52a99ec7c345ba5bd9cfc37036848d29ca0294ae)) 192 + - Widget system with OpenSearch discovery notification (ce5a (https://tangled.org/burrito.space/peek/commit/ce5ae4bb7d118320c02ae80a00af9793a5749bcf)) 193 + - Improve drag-from-anywhere with long-press detection and all-corner resize (d135 (https://tangled.org/burrito.space/peek/commit/d135cfa61cc3563cb597987ebf7b55eea5e3d03c)) 194 + - Apply background detection to non-canvas web pages (e1ac (https://tangled.org/burrito.space/peek/commit/e1ac7b6f8920944019cbca21aaf1188b25592bd2)) 195 + - Restore full-width navbar — remove floating bubble design (7769 (https://tangled.org/burrito.space/peek/commit/7769f1e19c6f74cb5fd18493c42bbaecc8a59644)) 196 + - Fix Loading... title bug, add page content extraction and URL metadata enrichment (61ca (https://tangled.org/burrito.space/peek/commit/61ca6f009ba9ad357e09f310770fa5cdf2940b9c)) 197 + 198 + Desktop - Tags &amp; Editor 199 + - Embed editor in detail pane for inline note editing with vim status bar (a575 (https://tangled.org/burrito.space/peek/commit/a575013e7000b50db91235fa09b67104ea5293d2)) 200 + - Content search with tag combo filtering, pin selected tags in sidebar (d005 (https://tangled.org/burrito.space/peek/commit/d005d3dd966595778c482c2ce8f555ffb8550ca6)) 201 + - Fix note command blank editor, tags reactivity, and editor height (cb4d (https://tangled.org/burrito.space/peek/commit/cb4d5e10b8d4a27c6529945e00efea2bed701fc0)) 202 + - Forward ESC to vim in insert/visual mode before IZUI handles it (7b86 (https://tangled.org/burrito.space/peek/commit/7b866e87a87e357bd1482e5d8e5775f9702c5d81)) 203 + - Fix editor layout, vim status bar positioning, and focus ring cleanup (0848 (https://tangled.org/burrito.space/peek/commit/08483e4ef820d8eece5fc28f7c113690ff002c82), 3100 (https://tangled.org/burrito.space/peek/commit/3100ec71fc60978bc7cc89da1c1a5f8bf82f4e11), 3a07 (https://tangled.org/burrito.space/peek/commit/3a072f24678bb375a193b04ea7fdb05b92d546be)) 204 + 205 + Desktop - Shortcuts &amp; Commands 206 + - Dual hotkey registration — local Cmd+ alongside global Opt+ for palette, editor, tags, groups, HUD (545e (https://tangled.org/burrito.space/peek/commit/545e95b47d436171406bc01c3783ac7d1e5ca382)) 207 + - Query registered commands via pubsub (696c (https://tangled.org/burrito.space/peek/commit/696c7859c3b10bb81a8ea741dbb65e595bbe3af3)) 208 + - Fix frecency/adaptive sorting in command palette (2f6d (https://tangled.org/burrito.space/peek/commit/2f6da3fd76ba4780daf8e0626bd45e9a50b1dd5e)) 209 + 210 + Desktop - Settings &amp; Extensions 211 + - Rework extensions settings — separate Features vs Extensions sections, add options buttons (cb54 (https://tangled.org/burrito.space/peek/commit/cb54040945458d258ed48f9951820998ebdd6e75)) 212 + - Dynamically list all builtin extensions in Features section (90fe (https://tangled.org/burrito.space/peek/commit/90fe93d0fea4d2286ab6099ffd097e40205e1fef)) 213 + - Generic settings/UI system for bundled Chrome extensions (edbf (https://tangled.org/burrito.space/peek/commit/edbf5169a396539ed2d94df1b873690d168d7b7a)) 214 + - Migrate ad blocker from @cliqz to @ghostery (93b4 (https://tangled.org/burrito.space/peek/commit/93b445613d086b8f1d4caea934d5e466a0b975a6)) 215 + 216 + Desktop - Fixes 217 + - Fix HUD focus stealing, chrome ext options styling, duplicate group cards (4768 (https://tangled.org/burrito.space/peek/commit/47686da71893feb30b286fbc5e45021e6f442e07)) 218 + - Prevent duplicate windows/URLs, fix race conditions and title resolution (20cb (https://tangled.org/burrito.space/peek/commit/20cb9956145d94e57a902a1976e1bd56a1242d4b)) 219 + - Resolve extension disabled by settings key collision (671d (https://tangled.org/burrito.space/peek/commit/671df42e33f9b08db4a058e98e8e4e6f7bdbddad)) 220 + - Resolve window ID from caller when null, set mode before loadURL (c1d7 (https://tangled.org/burrito.space/peek/commit/c1d77f286c8ba45015514d6a836bf4a13df7f66a)) 221 + - Align entity and script UIs with groups/tags component patterns (c5df (https://tangled.org/burrito.space/peek/commit/c5df43bcf9d5f28dd1dbf129fe47612346c26b6f), 50c6 (https://tangled.org/burrito.space/peek/commit/50c639ff3a591181e8bd6b10b8bfdd8f906406a3)) 222 + - Use extension settings API for vim mode, audit localStorage usage (3962 (https://tangled.org/burrito.space/peek/commit/3962110b5db93447fd6b95379281de6a0223a203)) 223 + - Pin Node version to 24.11.1 to match Electron 40 (96c0 (https://tangled.org/burrito.space/peek/commit/96c05941d16a0989f7407b00a63cda2994e52d24)) 224 + 225 + Testing 226 + - Add unified URL/history tests for unification refactor (d3ac (https://tangled.org/burrito.space/peek/commit/d3ac05f7135ead6685d7c8ddb50ba378c2e700b9)) 227 + - Add comprehensive test data for entity recognition (d710 (https://tangled.org/burrito.space/peek/commit/d710d039355e4e355c0c3e26844753c8c6d4e245))</description> 268 228 </item> 269 229 <item> 270 230 <title>2026-02-09</title> 271 231 <link>https://tangled.org/burrito.space/peek</link> 272 232 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-02-09</guid> 273 233 <pubDate>Mon, 09 Feb 2026 12:00:00 GMT</pubDate> 274 - <description><![CDATA[<p>Desktop - IZUI Role-Based Redesign<br> 275 - <ul><li>feat(izui): systemic ESC handling, peek-component migrations, HUD test fixes (21d59cc0)</li><br> 276 - <li style="margin-left:1em">Migrated peek-card, peek-grid, peek-list to shared peek-components</li><br> 277 - <li style="margin-left:1em">Unified ESC key handling across all window types</li><br> 278 - <li style="margin-left:1em">Fixed HUD test infrastructure</li><br> 279 - <li>feat(izui): implement role-based window policy (Phase 1-2) (3fbcade9)</li><br> 280 - <li style="margin-left:1em">Replaced session-based transient/active detection with deterministic role system</li><br> 281 - <li style="margin-left:1em">Five roles: root, child-content, child-tool, hud, transient</li><br> 282 - <li style="margin-left:1em">Role assigned at window creation, governs ESC behavior and lifecycle</li><br> 283 - <li>feat(izui): complete role-based migration (Phase 3-6) (8528f053)</li><br> 284 - <li style="margin-left:1em">Migrated all window creation sites to use role-based policy</li><br> 285 - <li style="margin-left:1em">Removed legacy IzuiStateCoordinator session tracking</li><br> 286 - <li style="margin-left:1em">ESC behavior fully determined by window role</li><br> 287 - <li>fix(izui): promote content to child-content when opened from parent window (92d359c5)</li><br> 288 - <li>fix(izui): promote transient session on app focus, fix startup role (055b77ed)</li><br> 289 - </ul><br> 290 - Desktop - Navigation & UI<br> 291 - <ul><li>fix(nav): restore floating nav bar — remove embedded regression (93060df3)</li><br> 292 - <li>fix(peek-card): delegate click/focus through shadow DOM boundary (b15c6434)</li><br> 293 - <li>feat(tags): migrate tags UI to shared peek-components (3145a08a)</li><br> 294 - <li style="margin-left:1em">Tags extension uses peek-card, peek-grid from shared component library</li><br> 295 - <li style="margin-left:1em">Consistent styling across all card-based views</li><br> 296 - <li>fix(config): align startupFeature schema default with actual default (aab2b20b)</li><br> 297 - <li>fix(external-url): delay URL processing to ensure app activation completes (f0d1e5bd)</li><br> 298 - </ul><br> 299 - Desktop - Entity Recognition<br> 300 - <ul><li>feat(entities): implement Phase 1 entity recognition extension (ae0cd811)</li><br> 301 - <li style="margin-left:1em">Extract entities (people, places, dates, etc.) from saved items</li><br> 302 - <li style="margin-left:1em">Extensible matcher and store architecture</li><br> 303 - <li style="margin-left:1em">Unit tests for extractors, matcher, and store</li><br> 304 - </ul><br> 305 - Desktop - HUD & Groups<br> 306 - <ul><li>fix(hud): populate mode, active window, and stats fields (be18f49f)</li><br> 307 - <li>fix(groups): preserve group context through page navigation (1d69ce8f)</li><br> 308 - <li>fix(datastore): disable FK checks during entity type migration (98025bcc)</li><br> 309 - </ul><br> 310 - Desktop - Shortcuts & Page<br> 311 - <ul><li>fix(shortcuts): guard ev.reply() against destroyed senders + add roundtrip tests (49b626e9)</li><br> 312 - <li>fix(shortcuts): use BrowserWindow ID not WebContents ID for shortcut callbacks (d6fe8cbf)</li><br> 313 - <li>fix(shortcuts): resolve stale IPC reference in global shortcut callbacks (221d5a44)</li><br> 314 - <li>fix(page): content-sized BrowserWindow instead of fullscreen canvas (2eb7a703)</li><br> 315 - </ul><br> 316 - Desktop - Command Bar<br> 317 - <ul><li>fix(cmd): restore URL detection for domains without protocol (youtube.com) (8abf13b6)</li><br> 318 - </ul><br> 319 - Sync Architecture - syncSource Migration<br> 320 - <ul><li>feat(sync): Phase 1 - separate sync pull from user operations (b3cbb47e)</li><br> 321 - <li style="margin-left:1em">Sync pull is now architecturally separate from user-facing operations</li><br> 322 - <li style="margin-left:1em">Server _sync metadata preserved naturally without guards</li><br> 323 - <li>refactor(sync): remove syncSource from unified sync module and update docs (3ffa9bf1)</li><br> 324 - <li style="margin-left:1em">Removed syncSource column from schema and all datastore code</li><br> 325 - <li style="margin-left:1em">Replaced with device ID tracking via _sync metadata in item metadata JSON</li><br> 326 - <li>refactor(mobile): remove active sync_source usage from iOS sync (3ca335f0)</li><br> 327 - <li>feat(mobile): add device ID and _sync metadata to mobile backend (abc40815)</li><br> 328 - </ul><br> 329 - Mobile / iOS<br> 330 - <ul><li>feat(ios): native inline WKWebView + fix dev build pipeline (ac1154e7)</li><br> 331 - <li>fix(ios): separate dev/release build paths and enable media autoplay (50444786)</li><br> 332 - <li>fix(mobile): prevent white flash when opening inline webview (edc1b5b9)</li><br> 333 - <li>fix(mobile): tighten header layout alignment (6f639e85)</li><br> 334 - <li>fix(ui): editor overlays fill to keyboard, tagset cards use tag chips (bb032a08)</li><br> 335 - <li>fix(mobile): replace Once::call_once with retryable Mutex for DB init (bb02d535)</li><br> 336 - <li>feat(mobile): hide from:history items from default list view (c6acfc60)</li><br> 337 - <li>fix(build): separate derivedDataPath for simulator and device builds (d6870291)</li><br> 338 - <li>fix(build): add --standalone flag to embed real frontend in iOS builds (90c7f5d8)</li><br> 339 - </ul><br> 340 - Testing<br> 341 - <ul><li>test(cmd): add comprehensive URL detection tests for command panel (ccc5a13b)</li><br> 342 - <li>test(server): add syncSource migration simulation tests (72731acf)</li><br> 343 - <li>test(entities): add unit tests for extractors, matcher, and store (8759b707)</li><br> 344 - <li>test(groups): add mode context propagation tests (5fbcc1ca)</li><br> 345 - <li>feat(test): deterministic profile IDs via PEEK_PROFILE_ID env var (7c61aa6e)</li><br> 346 - <li>fix(test): run unit tests under Electron's Node to match native module ABI (e1e0c7c5)</li><br> 347 - <li>fix(server): enable single-user mode for e2e tests (c6c249b5)</li></ul></p>]]></description> 234 + <description>Desktop - IZUI Role-Based Redesign 235 + - Unified ESC handling, migrate components to shared peek-components, fix HUD tests (21d5 (https://tangled.org/burrito.space/peek/commit/21d59cc00e8516382e0425f2442019ff915936e5)) 236 + - Role-based window policy — five deterministic roles (root, child-content, child-tool, hud, transient) govern ESC behavior and lifecycle (3fbc (https://tangled.org/burrito.space/peek/commit/3fbcade9a47b8375e0e10d15bf693104587433f3)) 237 + - Complete role-based migration — all window creation uses role policy, remove legacy session tracking (8528 (https://tangled.org/burrito.space/peek/commit/8528f053e1ef930b191eb2b834180eb84475851c)) 238 + - Promote content to child-content when opened from parent window (92d3 (https://tangled.org/burrito.space/peek/commit/92d359c5c5ecdf8baa6aca5cdcc3fb81c34c7921)) 239 + - Promote transient session on app focus, fix startup role (055b (https://tangled.org/burrito.space/peek/commit/055b77ed748ccce030da378d116e1d8c503bf659)) 240 + 241 + Desktop - Navigation &amp; UI 242 + - Restore floating nav bar — remove embedded regression (9306 (https://tangled.org/burrito.space/peek/commit/93060df349c11e0bae011121552a1901ec02c068)) 243 + - Delegate click/focus through shadow DOM boundary in peek-card (b15c (https://tangled.org/burrito.space/peek/commit/b15c6434bd885e0e00b31ce2ef62e670c282232c)) 244 + - Migrate tags UI to shared peek-components for consistent styling (3145 (https://tangled.org/burrito.space/peek/commit/3145a08ad2604f17424b26604e8d1b003c4aacf9)) 245 + - Align startupFeature schema default with actual default (aab2 (https://tangled.org/burrito.space/peek/commit/aab2b20b8a365fdb47c28554c9cbbf9062010ed2)) 246 + - Delay URL processing to ensure app activation completes (f0d1 (https://tangled.org/burrito.space/peek/commit/f0d1e5bd1289caf470e9a6a9d793414abb3ae6a1)) 247 + 248 + Desktop - Entity Recognition 249 + - Entity recognition extension — extract entities (people, places, dates, etc.) from saved items with extensible matcher and store (ae0c (https://tangled.org/burrito.space/peek/commit/ae0cd81109117239e4ad4ac0f30366246a1e94b9)) 250 + 251 + Desktop - HUD &amp; Groups 252 + - Populate HUD mode, active window, and stats fields (be18 (https://tangled.org/burrito.space/peek/commit/be18f49f540738aab4bcd11cb2ab3f2c388ffd2e)) 253 + - Preserve group context through page navigation (1d69 (https://tangled.org/burrito.space/peek/commit/1d69ce8fd81c9fc23faac81368fb004d7bb82d9a)) 254 + - Disable FK checks during entity type migration (9802 (https://tangled.org/burrito.space/peek/commit/98025bcca6309076ea578a32b287d81091295a55)) 255 + 256 + Desktop - Shortcuts &amp; Page 257 + - Guard ev.reply() against destroyed senders and add roundtrip tests (49b6 (https://tangled.org/burrito.space/peek/commit/49b626e9c92523f39dc190d8024770e84737d17d)) 258 + - Use BrowserWindow ID not WebContents ID for shortcut callbacks (d6fe (https://tangled.org/burrito.space/peek/commit/d6fe8cbfe845cd081eb712d6add07b4b08dab227)) 259 + - Resolve stale IPC reference in global shortcut callbacks (221d (https://tangled.org/burrito.space/peek/commit/221d5a442d970de8a1db07dfd4f5816b607a60f2)) 260 + - Content-sized BrowserWindow instead of fullscreen canvas (2eb7 (https://tangled.org/burrito.space/peek/commit/2eb7a7037b92ef3d9a3961a39de2774fbf41ecff)) 261 + 262 + Desktop - Command Bar 263 + - Restore URL detection for domains without protocol (youtube.com) (8abf (https://tangled.org/burrito.space/peek/commit/8abf13b6300b6735ff748d65a71145f584972fed)) 264 + 265 + Sync Architecture 266 + - Separate sync pull from user operations — server metadata preserved naturally (b3cb (https://tangled.org/burrito.space/peek/commit/b3cbb47e44fa6fb766c98a1e87547d86f2fce87c)) 267 + - Remove syncSource from schema, replace with device ID tracking via _sync metadata (3ffa (https://tangled.org/burrito.space/peek/commit/3ffa9bf15275feeafcb1fcef5cfce0013276d7db)) 268 + - Remove sync_source usage from iOS sync (3ca3 (https://tangled.org/burrito.space/peek/commit/3ca335f097031f0d227d9d4984274f019a53f05d)) 269 + - Add device ID and _sync metadata to mobile backend (abc4 (https://tangled.org/burrito.space/peek/commit/abc408159b76a74cf8712ab42e6c6f572b9f9ebc)) 270 + 271 + Mobile / iOS 272 + - Native inline WKWebView and fix dev build pipeline (ac11 (https://tangled.org/burrito.space/peek/commit/ac1154e70ac137d8c4079ebfd90fbf504c951f9e)) 273 + - Separate dev/release build paths and enable media autoplay (5044 (https://tangled.org/burrito.space/peek/commit/5044478650895bf02ea44ab07247a1437de290c4)) 274 + - Prevent white flash when opening inline webview (edc1 (https://tangled.org/burrito.space/peek/commit/edc1b5b97953a149f48bdea6f7b02e5a00e1b26a)) 275 + - Tighten header layout alignment (6f63 (https://tangled.org/burrito.space/peek/commit/6f639e85a362d16b7a3a0d40d55d2369fb679929)) 276 + - Editor overlays fill to keyboard, tagset cards use tag chips (bb03 (https://tangled.org/burrito.space/peek/commit/bb032a08cc463712f90feff4d66d2e79c89ff534)) 277 + - Replace Once::call_once with retryable Mutex for DB init (bb02 (https://tangled.org/burrito.space/peek/commit/bb02d53584824cc53a8231b5edf603798a309933)) 278 + - Hide from:history items from default list view (c6ac (https://tangled.org/burrito.space/peek/commit/c6acfc60)) 279 + - Separate derivedDataPath for simulator and device builds (d687 (https://tangled.org/burrito.space/peek/commit/d687029109f05f5d20cebeb6b3c459e1f86469fe)) 280 + - Add --standalone flag to embed real frontend in iOS builds (90c7 (https://tangled.org/burrito.space/peek/commit/90c7f5d80c3c7333c51c4838a3b04597b4dff348)) 281 + 282 + Testing 283 + - Add comprehensive URL detection tests for command panel (ccc5 (https://tangled.org/burrito.space/peek/commit/ccc5a13b2af9dff5333de06918bd9b89595dcd30)) 284 + - Add syncSource migration simulation tests (7273 (https://tangled.org/burrito.space/peek/commit/72731acf9cd9d3be88c0a1f8f5f92217c023ce70)) 285 + - Add unit tests for entity extractors, matcher, and store (8759 (https://tangled.org/burrito.space/peek/commit/8759b7070b4d9fb4703d9b3533a2b3b3d6c22a69)) 286 + - Add mode context propagation tests (5fbc (https://tangled.org/burrito.space/peek/commit/5fbcc1cae400d44fba0007d77155937b7e03b7a7)) 287 + - Deterministic profile IDs via PEEK_PROFILE_ID env var (7c61 (https://tangled.org/burrito.space/peek/commit/7c61aa6e47e5d0b03b63918b68134c449d99b867)) 288 + - Run unit tests under Electron&apos;s Node to match native module ABI (e1e0 (https://tangled.org/burrito.space/peek/commit/e1e0c7c5c989c296fc75adf8f493ada592443caa)) 289 + - Enable single-user mode for e2e tests (c6c2 (https://tangled.org/burrito.space/peek/commit/c6c249b52830b6efd18b2d91ea2eaad6e3bc94f6))</description> 348 290 </item> 349 291 <item> 350 292 <title>2026-02-02</title> 351 293 <link>https://tangled.org/burrito.space/peek</link> 352 294 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-02-02</guid> 353 295 <pubDate>Mon, 02 Feb 2026 12:00:00 GMT</pubDate> 354 - <description><![CDATA[<p>Desktop - IZUI (Inverted Zooming User Interface)<br> 355 - <ul><li>feat(izui): implement IZUI state machine for transient vs active window behavior (457ce41d)</li><br> 356 - <li style="margin-left:1em">Centralized <code>IzuiStateCoordinator</code> manages session-based state tracking</li><br> 357 - <li style="margin-left:1em">Fixes cmd bar stuck on "group" mode when invoked transiently</li><br> 358 - <li style="margin-left:1em">Fixes ESC from overlay showing groups instead of returning to previous app</li><br> 359 - <li style="margin-left:1em">Transient state propagates to child windows (cmd -> overlay)</li><br> 360 - <li style="margin-left:1em">Uses <code>isFocused()</code> for accurate system focus detection</li><br> 361 - <li style="margin-left:1em">KeepLive windows re-evaluate transient state on each show</li><br> 362 - <li style="margin-left:1em">Added <code>api.izui.*</code> renderer API for querying state</li><br> 363 - <li style="margin-left:1em">54 unit tests with dependency injection for testability</li><br> 364 - <li style="margin-left:1em">See <code>docs/izui.md</code> for full documentation</li><br> 365 - <li>fix(izui): OS-level focus for transient detection + graceful test shutdown (e1764328)</li><br> 366 - <li style="margin-left:1em">Transient detection uses OS-level app focus (<code>app.isFocused</code>) instead of window visibility</li><br> 367 - <li style="margin-left:1em">Tests use graceful <code>app.quit()</code> instead of SIGTERM/SIGKILL (no more crash dialogs)</li><br> 368 - <li style="margin-left:1em">5 new IZUI behavior tests for real app focus scenarios</li><br> 369 - <li>refactor(izui): passive backend window manager - extensions use api.window.open() directly (188894c4)</li><br> 370 - <li style="margin-left:1em">Backend no longer creates windows for extensions; extensions open their own via API</li><br> 371 - <li style="margin-left:1em">Simplifies window lifecycle and reduces coupling</li><br> 372 - <li>fix(izui): child windows always close on ESC + center windows on screen (b0d07b89)</li><br> 373 - <li style="margin-left:1em">ESC policy: child windows always close, active root windows do not</li><br> 374 - <li style="margin-left:1em">All new windows centered on screen at creation</li><br> 375 - <li>fix(izui): visibility-based transient detection + active mode ESC protection (d74b62b5)</li><br> 376 - <li>feat(izui): center child windows over parent window (bd947dbc)</li><br> 377 - <li style="margin-left:1em">Parent window position/size used to calculate centered placement</li><br> 378 - <li style="margin-left:1em">Focus restored to parent on child close</li><br> 379 - <li>fix(izui): renderer-driven escape lifecycle for navigate mode windows (dc470b7f)</li><br> 380 - <li>fix(izui): fix ESC navigation, window drag, and navbar cleanup (3ca4841b)</li><br> 381 - <li>fix(izui): fix transient detection race condition (d634a52b)</li><br> 382 - <li>fix: clean up modes, remove overlay, fix IZUI navigation stack (6be5fc45)</li><br> 383 - <li>fix(groups): filter peek:// URLs and fix IZUI stack navigation (70ab1706)</li><br> 384 - <li>cleanup(overlay): remove vestigial overlay references and rename events (16402840)</li><br> 385 - <li>fix(main): remove non-existent overlay from CONSOLIDATED_EXTENSION_IDS (518c4406)</li><br> 386 - </ul><br> 387 - Desktop - Reactivity & Events<br> 388 - <ul><li>feat(reactivity): add tag-centric events for real-time UI updates (8c229cdf)</li><br> 389 - <li style="margin-left:1em"><code>tag:created</code>, <code>tag:item-added</code>, <code>tag:item-removed</code> events</li><br> 390 - <li style="margin-left:1em">Extensions can subscribe to tag changes for live UI updates</li><br> 391 - <li>feat(reactivity): item CRUD events, debouncing, history/feeds subscriptions (1d351083)</li><br> 392 - <li style="margin-left:1em"><code>item:created</code>, <code>item:updated</code>, <code>item:deleted</code> events</li><br> 393 - <li style="margin-left:1em">Debounced event emission to prevent UI thrashing</li><br> 394 - <li style="margin-left:1em">History and feeds extensions subscribe to relevant events</li><br> 395 - <li>feat(datastore): implement item_events table and CRUD operations (78950782)</li><br> 396 - <li>feat(preload): expose item_events API to renderer (f8f85ebc)</li><br> 397 - </ul><br> 398 - Desktop - Window Management<br> 399 - <ul><li>feat(window): add overlay mode for transient full-screen views (0727112b)</li><br> 400 - <li>fix(windows): hide other windows AFTER windows view opens (37ee7d43)</li><br> 401 - <li>fix(windows): ESC always closes, remove fallback emoji (3fddd1a6)</li><br> 402 - <li>refactor(windows): transparent bg with groups/tags card style (414e2139)</li><br> 403 - <li>refactor(windows): use peek-card and peek-grid components (666efa8d)</li><br> 404 - <li>fix(windows): use correct path for component imports (8b6686e4)</li><br> 405 - </ul><br> 406 - Desktop - Architecture & Modes<br> 407 - <ul><li>feat(context): add app-wide context API for extensible mode management (196a12d0)</li><br> 408 - <li>refactor(modes): remove modes.ts, consolidate into context API and datastore (5943e223)</li><br> 409 - <li>refactor(modes): remove settings mode and minor modes (simplify to page/group/default) (eab54a3f)</li><br> 410 - <li>feat(schema): add feeds and series architecture (8688c501)</li><br> 411 - <li>feat(feeds): add feed reader extension and API documentation (44c5b507)</li><br> 412 - </ul><br> 413 - Desktop - Editor & Commands<br> 414 - <ul><li>feat(editor): implement note editing flow with autosave (0ae56bb7)</li><br> 415 - <li>feat(cmd): restore mode indicator to command bar (from orphaned commits) (917640ca)</li><br> 416 - <li style="margin-left:1em">Shows current mode (page/group/settings)</li><br> 417 - <li style="margin-left:1em">Click to cycle through modes</li><br> 418 - <li style="margin-left:1em">Auto-hides when in default mode</li><br> 419 - <li>feat(cmd): add Sync now command for manual sync trigger (18d02d2c)</li><br> 420 - <li>refactor(cmd): use connector pattern for edit and note commands (48465f72)</li><br> 421 - <li>fix(cmd): url command returns error instead of opening editor when no URL provided (5141fb07)</li><br> 422 - </ul><br> 423 - Desktop - UI & Components<br> 424 - <ul><li>feat(components): add glass-morphism tokens and component modes (7b2e52dc)</li><br> 425 - <li>fix(ui): center card headers, disable URL input autocapitalize, fix dev script (aa578e0d)</li><br> 426 - <li>fix(page): set default background on webview content when page has none (9fc274ab)</li><br> 427 - <li style="margin-left:1em">Respects system theme (dark/light)</li><br> 428 - <li style="margin-left:1em">Only applies when page doesn't set its own background</li><br> 429 - <li>fix(page): use trackNavigation for URL visit recording (f2677891)</li><br> 430 - </ul><br> 431 - Desktop - Profiles & Startup<br> 432 - <ul><li>feat(profiles): add Chromium session partition isolation per profile (2d704158)</li><br> 433 - <li>fix(profiles): register peek:// protocol on profile session (cd80de8d)</li><br> 434 - <li>fix(startup): respect startupFeature pref instead of always opening settings (5b920fab)</li><br> 435 - </ul><br> 436 - Desktop - Fixes<br> 437 - <ul><li>fix: ESC handling for Active mode windows (IZUI policy compliance)</li><br> 438 - <li>fix: add getFocusedVisibleWindowId API for modal window targeting</li><br> 439 - <li>fix: add trackNavigation API for unified page load tracking</li><br> 440 - <li>fix: update test to use peek://ext/cmd/panel.html (correct URL after cleanup)</li><br> 441 - <li>fix: window-list returns actual URLs from peek://app/page containers</li><br> 442 - <li>fix: mode detection from URL in window creation</li><br> 443 - <li>fix: add native module check script (prevents NODE_MODULE_VERSION mismatch)</li><br> 444 - <li>fix: unit tests run under Electron's Node (ELECTRON_RUN_AS_NODE=1) to match native module ABI</li><br> 445 - <li>fix(ipc): cast address to string for type safety (32a7f8a0)</li><br> 446 - <li>fix(ipc): sanitize window params to prevent serialization crash (fca6a26f)</li><br> 447 - <li>fix(build): exclude tmp/ agent workspaces from electron-builder (f0f26e31)</li><br> 448 - <li>fix(build): electron-builder uses yml config via extends (4620155f)</li><br> 449 - <li>fix(url): normalize trailing slash on bare domain URLs (3c2bbd61)</li><br> 450 - </ul><br> 451 - Mobile / iOS<br> 452 - <ul><li>feat(mobile): add URL action icons with native WKWebView + visit tracking (ee06ef99)</li><br> 453 - <li style="margin-left:1em">Open in Browser: opens URL in Safari</li><br> 454 - <li style="margin-left:1em">Open in Webview: opens URL in embedded native WKWebView</li><br> 455 - <li style="margin-left:1em">Track visits when URLs are loaded/navigated in webview</li><br> 456 - <li>fix(webview-plugin): simplify Swift integration with direct FFI (18258830)</li><br> 457 - <li>feat(mobile): fix native webview and restore icon system (1b641ed1)</li><br> 458 - <li>fix(ios): require hold gesture for pull-to-refresh (prevents accidental triggers) (0efb4445)</li><br> 459 - <li>feat(ios): bottom sheet webview + research docs (80fb7d8f)</li><br> 460 - <li>feat(webview): card-expansion iframe overlay replaces native bottom sheet (eb43f135)</li><br> 461 - <li>fix(ios): silence linker warnings and remove unused default icons (8cd36323)</li><br> 462 - <li>fix(ios): UX polish pass - 18 fixes for editor, share extension, layout, build (cf5fe38b)</li><br> 463 - <li>fix(ios): UX polish - 13 fixes for share sheet, editor, keyboard, sorting, filters (956fdcb8)</li><br> 464 - <li>fix(ui): maximize editor card space - tighter padding, remove separator, expand to edges (2a0fc4bf)</li><br> 465 - <li>fix(ui): undo/redo at top, reduce gaps, add webview link for text items (90d76c51)</li><br> 466 - <li>fix(share): commit pending tag text when Done is tapped (712a5108)</li><br> 467 - <li>fix(build): use dynamic DerivedData path for sim:install (94420c17)</li><br> 468 - </ul><br> 469 - Testing<br> 470 - <ul><li>feat(tests): add Playwright browser extension e2e tests</li><br> 471 - <li>fix(tests): improve extension ID detection and shared instance handling</li><br> 472 - <li>fix(tests): remove Firefox Playwright support (not supported by Playwright)</li><br> 473 - <li>test: add integration tests for tag-centric events (ed9dd17a)</li><br> 474 - </ul><br> 475 - Refactoring<br> 476 - <ul><li>refactor(extensions): move tag and tagset commands to tags extension (d6636aaa)</li><br> 477 - <li>refactor(extensions): create files extension with csv and save commands (435cc952)</li><br> 478 - <li>refactor(extensions): create sync extension with sync command (e5867452)</li><br> 479 - </ul><br> 480 - Datastore & UI<br> 481 - <ul><li>fix(datastore): show addresses/visits/tags stats with safe error handling</li><br> 482 - <li>fix(datastore): extract stats from result.data wrapper</li><br> 483 - <li>chore: clean up settings and diagnostic UI</li><br> 484 - </ul><br> 485 - Code Cleanup<br> 486 - <ul><li>chore: remove vestigial app/cmd/ directory (24 files, replaced by extensions/cmd/)</li><br> 487 - <li>chore: remove app/scripts/ (disabled feature with missing HTML files)</li><br> 488 - <li>chore: remove dead functions from app/index.js (uninitFeature, initIframeFeature)</li><br> 489 - <li>chore: remove Cmd and Scripts entries from app/config.js (non-existent URLs)</li><br> 490 - <li>chore: simplify app/features.js (all features are now extensions)</li><br> 491 - <li>chore: remove commented-out sendToWindow/onMessage APIs from preload.js</li><br> 492 - <li>chore: remove 7 unused IPC handlers from ipc.ts (~155 lines)</li></ul></p>]]></description> 296 + <description>Desktop - IZUI (Inverted Zooming User Interface) 297 + - IZUI state machine for transient vs active window behavior — centralized state tracking, ESC behavior depends on context (457c (https://tangled.org/burrito.space/peek/commit/457ce41d3dd96dc2447951347ce5047f85d87029)) 298 + - OS-level focus for transient detection, graceful test shutdown (e176 (https://tangled.org/burrito.space/peek/commit/e17643284ffa2e175fa4d48aca1b973382a60b96)) 299 + - Passive backend window manager — extensions open their own windows via API (1888 (https://tangled.org/burrito.space/peek/commit/188894c4855996600fbbb1702a592b6a2b6be035)) 300 + - Child windows always close on ESC, new windows centered on screen (b0d0 (https://tangled.org/burrito.space/peek/commit/b0d07b893143dff7da8fdebc2669e0520c01a2a8)) 301 + - Visibility-based transient detection and active mode ESC protection (d74b (https://tangled.org/burrito.space/peek/commit/d74b62b550f87d05a927a1f5e3fee75b82159355)) 302 + - Center child windows over parent window, restore focus on close (bd94 (https://tangled.org/burrito.space/peek/commit/bd947dbcbcd76009990571d8292f283d81268cd1)) 303 + - Renderer-driven escape lifecycle for navigate mode windows (dc47 (https://tangled.org/burrito.space/peek/commit/dc470b7fe05f1b83c77f66e4ffe0b38522848919)) 304 + - Fix ESC navigation, window drag, and navbar cleanup (3ca4 (https://tangled.org/burrito.space/peek/commit/3ca4841b6a279c6280d9673632b64f6433e88f45)) 305 + - Fix transient detection race condition (d634 (https://tangled.org/burrito.space/peek/commit/d634a52bd07f2b64112e5a7d6cd3e60119a5a959)) 306 + - Clean up modes, remove overlay, fix IZUI navigation stack (6be5 (https://tangled.org/burrito.space/peek/commit/6be5fc453d88914a3536d66cc6ecb80e5118d731)) 307 + - Filter peek:// URLs and fix IZUI stack navigation (70ab (https://tangled.org/burrito.space/peek/commit/70ab1706b21a2456b0f5896a60ac5acf0e23c5d2)) 308 + - Remove vestigial overlay references and rename events (1640 (https://tangled.org/burrito.space/peek/commit/164028401acd7efb18e149270868cb6ca3ddf220)) 309 + - Remove non-existent overlay from consolidated extension IDs (518c (https://tangled.org/burrito.space/peek/commit/518c44065a4b23cd221bca9f1e054eeb5ea6a7c9)) 310 + 311 + Desktop - Reactivity &amp; Events 312 + - Tag-centric events for real-time UI updates — tag:created, tag:item-added, tag:item-removed (8c22 (https://tangled.org/burrito.space/peek/commit/8c229cdf68c32bb51332f49c7feb6093b7201a2e)) 313 + - Item CRUD events with debouncing, history/feeds subscriptions (1d35 (https://tangled.org/burrito.space/peek/commit/1d351083780203bd00166ecf0d800167f5d038bb)) 314 + - Implement item_events table and CRUD operations (7895 (https://tangled.org/burrito.space/peek/commit/78950782d132b1f3e2fc25b5e76fd10dbdb52759)) 315 + - Expose item_events API to renderer (f8f8 (https://tangled.org/burrito.space/peek/commit/f8f85ebcba23b323d93c38bd97a4308c7472301d)) 316 + 317 + Desktop - Window Management 318 + - Add overlay mode for transient full-screen views (0727 (https://tangled.org/burrito.space/peek/commit/0727112b71e08949c5c85ab1f4ae11eb4e5f519c)) 319 + - Hide other windows after windows view opens (37ee (https://tangled.org/burrito.space/peek/commit/37ee7d4361aa10d5f320a4d41c7985837b2a75c4)) 320 + - ESC always closes windows, remove fallback emoji (3fdd (https://tangled.org/burrito.space/peek/commit/3fddd1a6beaaeb2d9032c5a697d2a1b3814726c3)) 321 + - Transparent background with groups/tags card style (414e (https://tangled.org/burrito.space/peek/commit/414e2139f66fa276266fe53e27f4b8c563c8301d)) 322 + - Use peek-card and peek-grid components for windows (666e (https://tangled.org/burrito.space/peek/commit/666efa8d77ddf47fa81f214cff5e8564db06d074)) 323 + - Fix component import paths (8b66 (https://tangled.org/burrito.space/peek/commit/8b6686e4809a891ee9db6007fb5c79d7ab059b3d)) 324 + 325 + Desktop - Architecture &amp; Modes 326 + - App-wide context API for extensible mode management (196a (https://tangled.org/burrito.space/peek/commit/196a12d063dcb5c6eafca5a2e9c40b9b1ab4c474)) 327 + - Consolidate modes into context API and datastore (5943 (https://tangled.org/burrito.space/peek/commit/5943e2232e66658377ba0843d607f7ee0101f605)) 328 + - Simplify to page/group/default modes (eab5 (https://tangled.org/burrito.space/peek/commit/eab54a3ff2b29957873ecd224dd419f8d8185511)) 329 + - Add feeds and series architecture (8688 (https://tangled.org/burrito.space/peek/commit/8688c50133ebac280772bca4173b5ee99cd4a61b)) 330 + - Add feed reader extension (44c5 (https://tangled.org/burrito.space/peek/commit/44c5b507a1d0f879ba60c68de0b1e529bc5feed9)) 331 + 332 + Desktop - Editor &amp; Commands 333 + - Note editing flow with autosave (0ae5 (https://tangled.org/burrito.space/peek/commit/0ae56bb7c9586de0c2c9cf14245148ae9de2ecfd)) 334 + - Restore mode indicator to command bar — shows current mode, click to cycle (9176 (https://tangled.org/burrito.space/peek/commit/917640cacdb7e6f016cdd7e5a4dec3434a198d4b)) 335 + - Add &quot;Sync now&quot; command for manual sync trigger (18d0 (https://tangled.org/burrito.space/peek/commit/18d02d2cd3d65f60537a1d1622923c0696029999)) 336 + - Use connector pattern for edit and note commands (4846 (https://tangled.org/burrito.space/peek/commit/48465f72a50e5b801a71e9c09c4262dff0636ebb)) 337 + - URL command returns error instead of opening editor when no URL provided (5141 (https://tangled.org/burrito.space/peek/commit/5141fb07b095f117552fd8ce461ac318f5907219)) 338 + 339 + Desktop - UI &amp; Components 340 + - Add glass-morphism tokens and component modes (7b2e (https://tangled.org/burrito.space/peek/commit/7b2e52dca752a2c46920364667e0f58a42360ba2)) 341 + - Center card headers, disable URL input autocapitalize, fix dev script (aa57 (https://tangled.org/burrito.space/peek/commit/aa578e0d91539d6f4d7b6e177e993106e9e9b226)) 342 + - Set default background on webview content when page has none — respects system theme (9fc2 (https://tangled.org/burrito.space/peek/commit/9fc274ab7ffc402f4409769023bed2bfcb439d3e)) 343 + - Use trackNavigation for URL visit recording (f267 (https://tangled.org/burrito.space/peek/commit/f267789149b2418d4e58d90f24da86c023bf930f)) 344 + 345 + Desktop - Profiles &amp; Startup 346 + - Chromium session partition isolation per profile (2d70 (https://tangled.org/burrito.space/peek/commit/2d704158814b911fd76579febe03ea6119e596ea)) 347 + - Register peek:// protocol on profile session (cd80 (https://tangled.org/burrito.space/peek/commit/cd80de8d23562964ac212b240f49813535f9b1d3)) 348 + - Respect startupFeature pref instead of always opening settings (5b92 (https://tangled.org/burrito.space/peek/commit/5b920fab23aa7c30105f3e435931a0d25092fa70)) 349 + 350 + Desktop - Fixes 351 + - ESC handling for Active mode windows (IZUI policy compliance) 352 + - Add getFocusedVisibleWindowId API for modal window targeting 353 + - Add trackNavigation API for unified page load tracking 354 + - Update test to use peek://ext/cmd/panel.html 355 + - Window-list returns actual URLs from peek://app/page containers 356 + - Mode detection from URL in window creation 357 + - Add native module check script (prevents NODE_MODULE_VERSION mismatch) 358 + - Unit tests run under Electron&apos;s Node to match native module ABI 359 + - Cast address to string for type safety (32a7 (https://tangled.org/burrito.space/peek/commit/32a7f8a0b97b12718211cc4cd39264cea5a6de49)) 360 + - Sanitize window params to prevent serialization crash (fca6 (https://tangled.org/burrito.space/peek/commit/fca6a26f963623bc04a94bc2361cb9e4f49a2678)) 361 + - Exclude tmp/ agent workspaces from electron-builder (f0f2 (https://tangled.org/burrito.space/peek/commit/f0f26e312d0174f2d6a304ed8638145d09a2c94b)) 362 + - Electron-builder uses yml config via extends (4620 (https://tangled.org/burrito.space/peek/commit/4620155f4f96c9a42bdf00211967efa547063e19)) 363 + - Normalize trailing slash on bare domain URLs (3c2b (https://tangled.org/burrito.space/peek/commit/3c2bbd619327e7cb6dfbba027ce1805d5873e0b2)) 364 + 365 + Mobile / iOS 366 + - URL action icons with native WKWebView + visit tracking — open in Safari or embedded webview (ee06 (https://tangled.org/burrito.space/peek/commit/ee06ef990eb2bad8a17de65708a088198625e7f7)) 367 + - Simplify Swift webview integration with direct FFI (1825 (https://tangled.org/burrito.space/peek/commit/182588302aef990b8ced2c8b4bd1143ba813653f)) 368 + - Fix native webview and restore icon system (1b64 (https://tangled.org/burrito.space/peek/commit/1b641ed1fdd510c83847c8cf213cc14eac5e1319)) 369 + - Require hold gesture for pull-to-refresh to prevent accidental triggers (0efb (https://tangled.org/burrito.space/peek/commit/0efb444539dba1d4cc7ed5cbd68815978ee2a5b0)) 370 + - Bottom sheet webview (80fb (https://tangled.org/burrito.space/peek/commit/80fb7d8f9f3df9d064720c4801c91af0898e611f)) 371 + - Card-expansion iframe overlay replaces native bottom sheet (eb43 (https://tangled.org/burrito.space/peek/commit/eb43f135aaf8ed51c69dff6d7726cf995bf0c3ed)) 372 + - Silence linker warnings and remove unused default icons (8cd3 (https://tangled.org/burrito.space/peek/commit/8cd36323c9173e18559108b909718589433bbcda)) 373 + - UX polish pass — 18 fixes for editor, share extension, layout, build (cf5f (https://tangled.org/burrito.space/peek/commit/cf5fe38b9cf9148fb2b506085aced75a0871221f)) 374 + - UX polish — 13 fixes for share sheet, editor, keyboard, sorting, filters (956f (https://tangled.org/burrito.space/peek/commit/956fdcb80b723c155a25195e6a6aa55e9a35b336)) 375 + - Maximize editor card space — tighter padding, expand to edges (2a0f (https://tangled.org/burrito.space/peek/commit/2a0fc4bf7c778068a7a76bee723410d98a44265b)) 376 + - Undo/redo at top, reduce gaps, add webview link for text items (90d7 (https://tangled.org/burrito.space/peek/commit/90d76c5178864b8d313333b0a6507b64ff1eaf6b)) 377 + - Commit pending tag text when Done is tapped (712a (https://tangled.org/burrito.space/peek/commit/712a5108ebca84bfa96143b6dfd12d0725a79b54)) 378 + - Use dynamic DerivedData path for sim:install (9442 (https://tangled.org/burrito.space/peek/commit/94420c1731e25992049d270b48b6a0626f13a54e)) 379 + 380 + Testing 381 + - Add Playwright browser extension e2e tests 382 + - Improve extension ID detection and shared instance handling 383 + - Remove Firefox Playwright support (not supported by Playwright) 384 + - Add integration tests for tag-centric events (ed9d (https://tangled.org/burrito.space/peek/commit/ed9dd17a41ba94b54faae75cd595934f2e9cecb2)) 385 + 386 + Refactoring 387 + - Move tag and tagset commands to tags extension (d663 (https://tangled.org/burrito.space/peek/commit/d6636aaa3087c2ec7bcf817363f16a9b7c901244)) 388 + - Create files extension with csv and save commands (435c (https://tangled.org/burrito.space/peek/commit/435cc952196795389322bda8f9f9d48b176c4340)) 389 + - Create sync extension with sync command (e586 (https://tangled.org/burrito.space/peek/commit/e5867452459b6c136b01c663d1237cc3c05a4899)) 390 + 391 + Datastore &amp; UI 392 + - Show addresses/visits/tags stats with safe error handling 393 + - Extract stats from result.data wrapper 394 + - Clean up settings and diagnostic UI 395 + 396 + Code Cleanup 397 + - Remove vestigial app/cmd/ directory (24 files, replaced by extensions/cmd/) 398 + - Remove app/scripts/ (disabled feature with missing HTML files) 399 + - Remove dead functions from app/index.js 400 + - Remove Cmd and Scripts entries from app/config.js 401 + - Simplify app/features.js (all features are now extensions) 402 + - Remove commented-out sendToWindow/onMessage APIs from preload.js 403 + - Remove 7 unused IPC handlers from ipc.ts (~155 lines)</description> 493 404 </item> 494 405 <item> 495 406 <title>2026-01-26</title> 496 407 <link>https://tangled.org/burrito.space/peek</link> 497 408 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-01-26</guid> 498 409 <pubDate>Mon, 26 Jan 2026 12:00:00 GMT</pubDate> 499 - <description><![CDATA[<p>Server<br> 500 - <ul><li>feat(server): add single-user mode support (no auth required for solo use)</li><br> 501 - <li>feat(server): add storage abstraction layer for image handling</li><br> 502 - <li>feat(server): add SQL abstraction layer for database portability</li><br> 503 - </ul><br> 504 - Extension<br> 505 - <ul><li>feat(extension): add command bar popup with tag, note, search</li><br> 506 - <li>feat(extension): add Alt+P hotkey for command bar popup</li><br> 507 - <li>feat(extension): simplify command bar popup UI</li><br> 508 - <li>feat(extension): add e2e sync tests and preserve original timestamps</li><br> 509 - </ul><br> 510 - Desktop - Fullscreen Canvas<br> 511 - <ul><li>feat(page): implement fullscreen transparent canvas architecture</li><br> 512 - <li>feat(page): fullscreen transparent canvas with floating navbar</li><br> 513 - <li>fix(navbar): prevent hiding when hovering over gaps between child elements</li><br> 514 - </ul><br> 515 - Desktop - IZUI / ESC Handling<br> 516 - <ul><li>feat(izui): add minimal IZUI window navigation system</li><br> 517 - <li>feat(izui): complete ESC key handling with IZUI integration</li><br> 518 - <li>feat(izui): navigation stack for ESC in child windows</li><br> 519 - <li>feat(izui): complete preload API wiring for ESC key handling</li><br> 520 - <li>feat(esc): change default escapeMode from 'close' to 'auto'</li><br> 521 - <li>fix(izui): overlay no longer steals ESC from web pages</li><br> 522 - <li>fix(esc): web pages now close on first ESC key press</li><br> 523 - <li>feat(cmd): add mode indicator to command bar</li><br> 524 - </ul><br> 525 - Mobile<br> 526 - <ul><li>feat(mobile): improve item card UI and keyboard stability</li><br> 527 - <li>feat(mobile): migrate tags.id from INTEGER to TEXT for sync compatibility</li><br> 528 - <li>fix(mobile): prevent orphaned databases and ensure dev profile in dev builds</li><br> 529 - <li>fix(mobile): resolve deadlock and respect profile choice in dev builds</li><br> 530 - <li>fix(sync): filter out peek:// URLs from server sync</li><br> 531 - </ul><br> 532 - Schema & Data Layer<br> 533 - <ul><li>feat(schema): add schema codegen system with single source of truth</li><br> 534 - <li>feat(schema): integrate codegen into build system with Rust backend tests</li><br> 535 - <li>feat(schema): comprehensive test coverage for generated types</li><br> 536 - <li>chore(server): align Node engine to repo-wide v22 policy</li><br> 537 - </ul><br> 538 - Testing Infrastructure<br> 539 - <ul><li>test(components): add component test infrastructure</li><br> 540 - <li>test(components): expand coverage to 56 tests with deterministic waits</li><br> 541 - <li>docs(components): add Testing section to README</li><br> 542 - <li>fix(tests): consolidate packaged tests to single Electron instance</li><br> 543 - </ul><br> 544 - Editor<br> 545 - <ul><li>feat(editor): integrate CodeMirror markdown editor with three-panel layout</li><br> 546 - <li style="margin-left:1em">Outline sidebar with header navigation</li><br> 547 - <li style="margin-left:1em">Live markdown preview sidebar</li><br> 548 - <li style="margin-left:1em">Vim mode toggle (persisted in settings)</li><br> 549 - <li style="margin-left:1em">Resizable panels, focus mode</li><br> 550 - <li style="margin-left:1em">Full syntax highlighting</li><br> 551 - <li>feat(editor): add vim fold commands, status line, and comprehensive tests</li><br> 552 - </ul><br> 553 - Web Extensions<br> 554 - <ul><li>feat(web-ext): add bundled web extensions infrastructure</li><br> 555 - <li>feat(extensions): bundle Consent-O-Matic for automatic cookie consent handling</li><br> 556 - <li>docs: add research on bundled web extensions (uBlock, Proton Pass, Consent-O-Matic)</li><br> 557 - <li>Integrated @cliqz/adblocker-electron for native ad blocking</li><br> 558 - </ul><br> 559 - Mobile / iOS<br> 560 - <ul><li>feat(mobile): add Release CLI builds via xcodebuild</li><br> 561 - <li style="margin-left:1em">Fix Share Extension configuration inheritance (CONFIGURATION=Release override)</li><br> 562 - <li style="margin-left:1em">Add yarn mobile:ios:xcodebuild:release command</li><br> 563 - <li style="margin-left:1em">Add yarn mobile:ios:xcodebuild:install:release command</li><br> 564 - <li>feat(tests): iOS e2e testing improvements and window utilities</li><br> 565 - <li style="margin-left:1em">Add PEEK_AUTO_SYNC env var support</li><br> 566 - <li style="margin-left:1em">Add --headless and --build flags to e2e-full-sync-test.sh</li><br> 567 - <li>docs: add research on xcodebuild CLI vs Xcode GUI environment issues</li><br> 568 - </ul><br> 569 - Developer Tooling<br> 570 - <ul><li>chore: add multi-agent workflow with jj workspaces</li><br> 571 - <li>chore: update agent-setup to handle both install and update</li><br> 572 - <li>docs: add CLAUDE.coordinator.md for coordinator agents</li><br> 573 - <li>docs: update jj workflow - always commit before operations</li></ul></p>]]></description> 410 + <description>Server 411 + - feat(server): add single-user mode support (no auth required for solo use) 412 + - feat(server): add storage abstraction layer for image handling 413 + - feat(server): add SQL abstraction layer for database portability 414 + 415 + Extension 416 + - feat(extension): add command bar popup with tag, note, search 417 + - feat(extension): add Alt+P hotkey for command bar popup 418 + - feat(extension): simplify command bar popup UI 419 + - feat(extension): add e2e sync tests and preserve original timestamps 420 + 421 + Desktop - Fullscreen Canvas 422 + - feat(page): implement fullscreen transparent canvas architecture 423 + - feat(page): fullscreen transparent canvas with floating navbar 424 + - fix(navbar): prevent hiding when hovering over gaps between child elements 425 + 426 + Desktop - IZUI / ESC Handling 427 + - feat(izui): add minimal IZUI window navigation system 428 + - feat(izui): complete ESC key handling with IZUI integration 429 + - feat(izui): navigation stack for ESC in child windows 430 + - feat(izui): complete preload API wiring for ESC key handling 431 + - feat(esc): change default escapeMode from &apos;close&apos; to &apos;auto&apos; 432 + - fix(izui): overlay no longer steals ESC from web pages 433 + - fix(esc): web pages now close on first ESC key press 434 + - feat(cmd): add mode indicator to command bar 435 + 436 + Mobile 437 + - feat(mobile): improve item card UI and keyboard stability 438 + - feat(mobile): migrate tags.id from INTEGER to TEXT for sync compatibility 439 + - fix(mobile): prevent orphaned databases and ensure dev profile in dev builds 440 + - fix(mobile): resolve deadlock and respect profile choice in dev builds 441 + - fix(sync): filter out peek:// URLs from server sync 442 + 443 + Schema &amp; Data Layer 444 + - feat(schema): add schema codegen system with single source of truth 445 + - feat(schema): integrate codegen into build system with Rust backend tests 446 + - feat(schema): comprehensive test coverage for generated types 447 + - chore(server): align Node engine to repo-wide v22 policy 448 + 449 + Testing Infrastructure 450 + - test(components): add component test infrastructure 451 + - test(components): expand coverage to 56 tests with deterministic waits 452 + - docs(components): add Testing section to README 453 + - fix(tests): consolidate packaged tests to single Electron instance 454 + 455 + Editor 456 + - feat(editor): integrate CodeMirror markdown editor with three-panel layout 457 + - Outline sidebar with header navigation 458 + - Live markdown preview sidebar 459 + - Vim mode toggle (persisted in settings) 460 + - Resizable panels, focus mode 461 + - Full syntax highlighting 462 + - feat(editor): add vim fold commands, status line, and comprehensive tests 463 + 464 + Web Extensions 465 + - feat(web-ext): add bundled web extensions infrastructure 466 + - feat(extensions): bundle Consent-O-Matic for automatic cookie consent handling 467 + - docs: add research on bundled web extensions (uBlock, Proton Pass, Consent-O-Matic) 468 + - Integrated @cliqz/adblocker-electron for native ad blocking 469 + 470 + Mobile / iOS 471 + - feat(mobile): add Release CLI builds via xcodebuild 472 + - Fix Share Extension configuration inheritance (CONFIGURATION=Release override) 473 + - Add yarn mobile:ios:xcodebuild:release command 474 + - Add yarn mobile:ios:xcodebuild:install:release command 475 + - feat(tests): iOS e2e testing improvements and window utilities 476 + - Add PEEK_AUTO_SYNC env var support 477 + - Add --headless and --build flags to e2e-full-sync-test.sh 478 + - docs: add research on xcodebuild CLI vs Xcode GUI environment issues 479 + 480 + Developer Tooling 481 + - chore: add multi-agent workflow with jj workspaces 482 + - chore: update agent-setup to handle both install and update 483 + - docs: add CLAUDE.coordinator.md for coordinator agents 484 + - docs: update jj workflow - always commit before operations</description> 574 485 </item> 575 486 <item> 576 487 <title>2026-01-19</title> 577 488 <link>https://tangled.org/burrito.space/peek</link> 578 489 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-01-19</guid> 579 490 <pubDate>Mon, 19 Jan 2026 12:00:00 GMT</pubDate> 580 - <description><![CDATA[<p><ul><li>[x][desktop] history & addressability: track peek:// loads, all window/webview loads, in-page navigation, JS window.open child windows (mkylrnxy)</li><br> 581 - <li>[x][desktop] history chaining: prevId/nextId columns on visits table with migration backfill (mkylrnxy)</li><br> 582 - <li>[x][desktop] history API: getHistory() with date range filtering, enriched visit+address join query, IPC + preload exposure (mkylrnxy)</li><br> 583 - <li>add device ID tracking to item metadata (swskpulq)</li><br> 584 - <li>app version and datastore version as separate layers of compatibility (rltmkytv)</li><br> 585 - <li>define compat detection system across desktop/server/mobile/other (rltmkytv)</li><br> 586 - <li>define how sync works when incompatible (clients only sync w/ datastore-compatible nodes) (rltmkytv)</li><br> 587 - <li>sync is not spoke server - all nodes equal participants (rltmkytv)</li><br> 588 - <li>implement version compat in desktop/server (DATASTORE_VERSION + PROTOCOL_VERSION, exact match, 409 on mismatch) (rltmkytv)</li><br> 589 - <li>implement version compat in mobile (add version headers to lib.rs sync) (rlrlqkqz)</li><br> 590 - <li>[x][mobile] fix sync re-pushing all items every time - per-item synced_at (nxszorty)</li><br> 591 - <li>[x][mobile] add version headers to mobile sync - DATASTORE_VERSION + PROTOCOL_VERSION (rlrlqkqz)</li><br> 592 - <li>[x][desktop] add new items - url/tagset/note commands (pwuyrstl)</li><br> 593 - <li>[x][desktop] editor extension with full note editing (rmztsrkr)</li><br> 594 - <li>[x][tauri] sync module, schema migrations, version compat to match Electron (zzyllzsk)</li><br> 595 - <li>e2e sync & version test suite, fix sync profile resolution (rlrlqkqz)</li><br> 596 - <li>[x][mobile] fix share extension creating duplicate items per tag (yvumsuqr)</li><br> 597 - <li>[x][mobile] merge home and search into unified view, configurable archive tag (txzkumku)</li><br> 598 - <li>[x][mobile] fix big bottom bar showing again (tqnmowqm)</li><br> 599 - <li>[x][mobile] iOS profile support with build detection and per-profile databases (ylkwxtut)</li><br> 600 - <li>[x][mobile] UUID-based profile sync across mobile, desktop, and server (mlqntkvw)</li><br> 601 - <li>[x][mobile] iOS share extension fixes + tag input filtering (smuxwlzx)</li><br> 602 - <li>[x][mobile] consolidate editor views with shared components (wvvqrquo)</li><br> 603 - <li>[x][mobile] add clear buttons to all input fields and textareas (vyuwkrpy)</li><br> 604 - <li>[x][mobile] fix tags not persisting on text notes (qowppxlk)</li><br> 605 - <li>[x][mobile] add archive tag support to hide items from views (urmmzrvr)</li><br> 606 - <li>[x][mobile] add font size slider in settings with realtime preview (umqpnqto)</li><br> 607 - <li>[x][mobile] mobile editing ux - toasts, validation, draft persistence, spacing, bottom bar fix (rqwmmpnm)</li><br> 608 - <li>[x][mobile] pull-to-refresh gesture triggers sync (roqqsxyp)</li><br> 609 - <li>[x][desktop] window titlebar hide/show pref with settings UI (wpykxvrl)</li><br> 610 - <li>[x][desktop] windows movable and resizable by default with window.open API params (wpykxvrl)</li><br> 611 - <li>[x][desktop] persist keyed/url window position+size across app restarts (wpykxvrl)</li><br> 612 - <li>[x][desktop] pin window on top (app and OS level) with commands (wpykxvrl)</li><br> 613 - <li>[x][desktop] configurable escape behavior per-window via window.open API (wpykxvrl)</li><br> 614 - <li>[x][desktop] window animation API (to/from coords, time) + slides impl (wpykxvrl)</li><br> 615 - <li>[x][desktop] Desktop Windows - title bar, persistence, pin controls, animations (wpykxvrl)</li><br> 616 - <li>[x][desktop] migrate old addresses to items table, fix CHECK constraint (ltovmzon)</li><br> 617 - <li>[x][desktop] multi-tag search in tags UI (ltovmzon)</li><br> 618 - <li>[x][desktop] extension nav styling improvements (ltovmzon)</li><br> 619 - <li>[x][desktop] fix groups extension - add visit tracking, filter for URLs only (wuywuwyn)</li><br> 620 - <li>[x][desktop] fix sync status in settings UI - use correct field name for display (xxtpswys)</li><br> 621 - <li>[x][desktop] persist autoSync setting in extension_settings (vyvorvtq)</li><br> 622 - <li>[x][desktop+server] add sync version compatibility - DATASTORE_VERSION + PROTOCOL_VERSION (rltmkytv)</li><br> 623 - <li>[x][desktop+server] add user profiles and profile switching (qlyszyzx)</li><br> 624 - <li>[x][desktop] add tags extension for tag visualization and management (kwuwspun)</li><br> 625 - <li>[x][desktop] click-and-hold window dragging for frameless windows (myyozwzx)</li><br> 626 - <li>[x][desktop] fix better-sqlite3 node/electron version mismatch with postinstall script (mmywmysr)</li><br> 627 - <li>[x][desktop] debug and stabilize build on new Electron (stale node_modules after upgrade) (kszpuvqr)</li><br> 628 - <li>[x][desktop] upgrade Electron to 40 + pin Node to 24 (kszpuvqr)</li><br> 629 - <li>[x][desktop] e2e sync test infrastructure for production (snrnkvls)</li><br> 630 - <li>[x][desktop] daily data snapshots saved to compress archives in ~/sync/peek-backups (qkpozntl)</li><br> 631 - <li>[x][desktop] fix 5GB packaged build by adding exclusions to electron-builder.yml (~280MB now) (qknnlynl)</li><br> 632 - <li>[x][desktop] update release build and drive it (rlytpznn)</li><br> 633 - <li>[x][security] remove production server endpoint from source - require env config (rnxppwkx)</li><br> 634 - <li>[x][server] Add pre-migration backup to server migration (uvkkmoos)</li><br> 635 - <li>[x][server] add daily snapshot backups on server, test locally, deploy, test and confirm working on railway (vpvuotkr)</li><br> 636 - <li>[x][server] document Railway deployment info so agents don't have to relearn each time (wlwruzuq)</li><br> 637 - <li>[x][sync] fix duplicates: add sync_id parameter for server-side deduplication (yswsyzvl)</li><br> 638 - <li>[x][sync] investigate remaining sync edge cases (purnxzzz)</li><br> 639 - <li>[x][sync] E2E integration tests for desktop-server sync (uowlzlxm)</li><br> 640 - <li>data model: multi-user support (server full, desktop profile isolation) (qlyszyzx)</li><br> 641 - <li>desktop sync working (bidirectional in backend/electron/sync.ts) (mxwrymlv)</li><br> 642 - <li>sync config in settings UI (vyvorvtq)</li><br> 643 - <li>windows draggable/moveable (click-and-hold in app/drag.js) (myyozwzx)</li><br> 644 - <li>notes in datastore (items table with type='text') (xxnxwnwx)</li><br> 645 - <li>peek-node supports text/urls/tagsets/images (xxnxwnwx)</li><br> 646 - <li>backup/restore snapshots (daily automated + manual) (zuzylokr)</li><br> 647 - <li>action history storage (visits table) (wuywuwyn)</li><br> 648 - <li>update main README (kpylorrl)</li><br> 649 - <li>[x][mobile] shared iOS build cache to avoid Rust rebuilds across agent workspaces (nputkypr)</li><br> 650 - <li>[x][mobile] update to full bidirectional sync (pull + push, not just webhook push) (otsvqvzo)</li><br> 651 - <li>[x][workflow] agent workspace isolation - rules to stay in workspace, no parent repo access (lorkrruo)</li><br> 652 - <li>[x][workflow] fix divergent commits - mmerge uses jj new+restore pattern (zponttxz)</li><br> 653 - <li>[x][workflow] Railway deploy scripts - npm/yarn scripts with --service flag (zponttxz)</li><br> 654 - <li>[x][workflow] fix TODO archival - updated agent templates with clearer instructions (uytsrstx)</li><br> 655 - <li>[x][workflow] clarify ./app rule - now about respecting front-end/back-end architecture boundary (tkvzpvlu)</li><br> 656 - <li>[x][workflow] restore git/github push for Railway deploys (vkrunkpn)</li><br> 657 - <li>[x][workflow] fix jj commit/merge strategy - agents no longer touch main bookmark (srmykyqy)</li></ul></p>]]></description> 491 + <description>- [x][desktop] history &amp; addressability: track peek:// loads, all window/webview loads, in-page navigation, JS window.open child windows (mkylrnxy) 492 + - [x][desktop] history chaining: prevId/nextId columns on visits table with migration backfill (mkylrnxy) 493 + - [x][desktop] history API: getHistory() with date range filtering, enriched visit+address join query, IPC + preload exposure (mkylrnxy) 494 + - add device ID tracking to item metadata (swskpulq) 495 + - app version and datastore version as separate layers of compatibility (rltmkytv) 496 + - define compat detection system across desktop/server/mobile/other (rltmkytv) 497 + - define how sync works when incompatible (clients only sync w/ datastore-compatible nodes) (rltmkytv) 498 + - sync is not spoke server - all nodes equal participants (rltmkytv) 499 + - implement version compat in desktop/server (DATASTORE_VERSION + PROTOCOL_VERSION, exact match, 409 on mismatch) (rltmkytv) 500 + - implement version compat in mobile (add version headers to lib.rs sync) (rlrlqkqz) 501 + - [x][mobile] fix sync re-pushing all items every time - per-item synced_at (nxszorty) 502 + - [x][mobile] add version headers to mobile sync - DATASTORE_VERSION + PROTOCOL_VERSION (rlrlqkqz) 503 + - [x][desktop] add new items - url/tagset/note commands (pwuyrstl) 504 + - [x][desktop] editor extension with full note editing (rmztsrkr) 505 + - [x][tauri] sync module, schema migrations, version compat to match Electron (zzyllzsk) 506 + - e2e sync &amp; version test suite, fix sync profile resolution (rlrlqkqz) 507 + - [x][mobile] fix share extension creating duplicate items per tag (yvumsuqr) 508 + - [x][mobile] merge home and search into unified view, configurable archive tag (txzkumku) 509 + - [x][mobile] fix big bottom bar showing again (tqnmowqm) 510 + - [x][mobile] iOS profile support with build detection and per-profile databases (ylkwxtut) 511 + - [x][mobile] UUID-based profile sync across mobile, desktop, and server (mlqntkvw) 512 + - [x][mobile] iOS share extension fixes + tag input filtering (smuxwlzx) 513 + - [x][mobile] consolidate editor views with shared components (wvvqrquo) 514 + - [x][mobile] add clear buttons to all input fields and textareas (vyuwkrpy) 515 + - [x][mobile] fix tags not persisting on text notes (qowppxlk) 516 + - [x][mobile] add archive tag support to hide items from views (urmmzrvr) 517 + - [x][mobile] add font size slider in settings with realtime preview (umqpnqto) 518 + - [x][mobile] mobile editing ux - toasts, validation, draft persistence, spacing, bottom bar fix (rqwmmpnm) 519 + - [x][mobile] pull-to-refresh gesture triggers sync (roqqsxyp) 520 + - [x][desktop] window titlebar hide/show pref with settings UI (wpykxvrl) 521 + - [x][desktop] windows movable and resizable by default with window.open API params (wpykxvrl) 522 + - [x][desktop] persist keyed/url window position+size across app restarts (wpykxvrl) 523 + - [x][desktop] pin window on top (app and OS level) with commands (wpykxvrl) 524 + - [x][desktop] configurable escape behavior per-window via window.open API (wpykxvrl) 525 + - [x][desktop] window animation API (to/from coords, time) + slides impl (wpykxvrl) 526 + - [x][desktop] Desktop Windows - title bar, persistence, pin controls, animations (wpykxvrl) 527 + - [x][desktop] migrate old addresses to items table, fix CHECK constraint (ltovmzon) 528 + - [x][desktop] multi-tag search in tags UI (ltovmzon) 529 + - [x][desktop] extension nav styling improvements (ltovmzon) 530 + - [x][desktop] fix groups extension - add visit tracking, filter for URLs only (wuywuwyn) 531 + - [x][desktop] fix sync status in settings UI - use correct field name for display (xxtpswys) 532 + - [x][desktop] persist autoSync setting in extension_settings (vyvorvtq) 533 + - [x][desktop+server] add sync version compatibility - DATASTORE_VERSION + PROTOCOL_VERSION (rltmkytv) 534 + - [x][desktop+server] add user profiles and profile switching (qlyszyzx) 535 + - [x][desktop] add tags extension for tag visualization and management (kwuwspun) 536 + - [x][desktop] click-and-hold window dragging for frameless windows (myyozwzx) 537 + - [x][desktop] fix better-sqlite3 node/electron version mismatch with postinstall script (mmywmysr) 538 + - [x][desktop] debug and stabilize build on new Electron (stale node_modules after upgrade) (kszpuvqr) 539 + - [x][desktop] upgrade Electron to 40 + pin Node to 24 (kszpuvqr) 540 + - [x][desktop] e2e sync test infrastructure for production (snrnkvls) 541 + - [x][desktop] daily data snapshots saved to compress archives in ~/sync/peek-backups (qkpozntl) 542 + - [x][desktop] fix 5GB packaged build by adding exclusions to electron-builder.yml (~280MB now) (qknnlynl) 543 + - [x][desktop] update release build and drive it (rlytpznn) 544 + - [x][security] remove production server endpoint from source - require env config (rnxppwkx) 545 + - [x][server] Add pre-migration backup to server migration (uvkkmoos) 546 + - [x][server] add daily snapshot backups on server, test locally, deploy, test and confirm working on railway (vpvuotkr) 547 + - [x][server] document Railway deployment info so agents don&apos;t have to relearn each time (wlwruzuq) 548 + - [x][sync] fix duplicates: add sync_id parameter for server-side deduplication (yswsyzvl) 549 + - [x][sync] investigate remaining sync edge cases (purnxzzz) 550 + - [x][sync] E2E integration tests for desktop-server sync (uowlzlxm) 551 + - data model: multi-user support (server full, desktop profile isolation) (qlyszyzx) 552 + - desktop sync working (bidirectional in backend/electron/sync.ts) (mxwrymlv) 553 + - sync config in settings UI (vyvorvtq) 554 + - windows draggable/moveable (click-and-hold in app/drag.js) (myyozwzx) 555 + - notes in datastore (items table with type=&apos;text&apos;) (xxnxwnwx) 556 + - peek-node supports text/urls/tagsets/images (xxnxwnwx) 557 + - backup/restore snapshots (daily automated + manual) (zuzylokr) 558 + - action history storage (visits table) (wuywuwyn) 559 + - update main README (kpylorrl) 560 + - [x][mobile] shared iOS build cache to avoid Rust rebuilds across agent workspaces (nputkypr) 561 + - [x][mobile] update to full bidirectional sync (pull + push, not just webhook push) (otsvqvzo) 562 + - [x][workflow] agent workspace isolation - rules to stay in workspace, no parent repo access (lorkrruo) 563 + - [x][workflow] fix divergent commits - mmerge uses jj new+restore pattern (zponttxz) 564 + - [x][workflow] Railway deploy scripts - npm/yarn scripts with --service flag (zponttxz) 565 + - [x][workflow] fix TODO archival - updated agent templates with clearer instructions (uytsrstx) 566 + - [x][workflow] clarify ./app rule - now about respecting front-end/back-end architecture boundary (tkvzpvlu) 567 + - [x][workflow] restore git/github push for Railway deploys (vkrunkpn) 568 + - [x][workflow] fix jj commit/merge strategy - agents no longer touch main bookmark (srmykyqy)</description> 658 569 </item> 659 570 <item> 660 571 <title>2026-01-12</title> 661 572 <link>https://tangled.org/burrito.space/peek</link> 662 573 <guid isPermaLink="false">https://tangled.org/burrito.space/peek#2026-01-12</guid> 663 574 <pubDate>Mon, 12 Jan 2026 12:00:00 GMT</pubDate> 664 - <description><![CDATA[<p><ul><li>[x][desktop] settings UI for sync (vyvorvtq)</li><br> 665 - <li>[x][desktop] test sync and package (ssxzpoxo)</li><br> 666 - <li>merge peek-node into peek repo (now at backend/server/) (zturryym)</li><br> 667 - <li>update peek-node to support multi-user and the core types (already done) (zturryym)</li><br> 668 - <li>unify data model across mobile/desktop/server (nlxqykul)</li><br> 669 - <li>sync working between all three (mxwrymlv)</li><br> 670 - <li>[x][mobile] test and deploy ios to prod (rtmtkykn)</li><br> 671 - </ul><br> 672 - <h3>Old completed items</h3></p><p><h3>Addressability / Core history</h3><br> 673 - <ul><li>add peek:// loads to history table (mkylrnxy)</li><br> 674 - <li>peek urls don't need params yet, but we'll need to do cmd params and connector data somehow maybe (mkylrnxy)</li><br> 675 - <li>ensure all window/frame/webview loads of any kind are entered in history (mkylrnxy)</li><br> 676 - <li>bug: some link clicks in web pages open in a window with a title bar that's clearly not entered in peek's window tracking, maybe js in the page opening windows? (mkylrnxy)</li><br> 677 - <li>sync: don't sync peek addresses for now (mkylrnxy)</li><br> 678 - <li>not doing paths/forking yet - is just one single chain of actions (mkylrnxy)</li><br> 679 - <li>add next/prev cols to history table, or maintain in new table? (mkylrnxy)</li><br> 680 - <li>when a history record is added, set prevId pointing to previous history record (mkylrnxy)</li><br> 681 - <li>each time a history record is added, set nextId to its prevId (mkylrnxy)</li><br> 682 - <li>enumerate history (mkylrnxy)</li><br> 683 - <li>filter on date ranges (mkylrnxy)</li><br> 684 - </ul><br> 685 - <h3>Server Backend</h3><br> 686 - <ul><li>Add database integrity verification (uvkkmoos)</li><br> 687 - </ul><br> 688 - <h3>Base Extensions</h3><br> 689 - <ul><li>see notes/extensibility.md</li><br> 690 - <li>window manager views (bad name, but what Peek "features" are now)</li><br> 691 - <li>commands (eg Quicksilver, Ubiquity, Raycast style)</li><br> 692 - </ul><br> 693 - <h3>Portability</h3><br> 694 - <ul><li>Abstract back-end system</li><br> 695 - <li>Electron back-end</li><br> 696 - <li>Tauri back-end</li><br> 697 - </ul><br> 698 - <h3>Pages, Tagging & Groups</h3><br> 699 - <ul><li>Open page by default in cmd</li><br> 700 - <li>Open page from OS, other apps</li><br> 701 - <li>Cmd to tag current page</li><br> 702 - <li>Groups based on tags, for now</li><br> 703 - <li>Untagged -> default group</li><br> 704 - <li>Cmd to open groups home</li><br> 705 - <li>Escape for navigating back up the group views, not closing window</li><br> 706 - <li>adaptive matching</li><br> 707 - <li>frecency</li><br> 708 - </ul><br> 709 - <h3>V.0.3 - Datastore</h3><br> 710 - <ul><li>Datastore</li><br> 711 - </ul><br> 712 - <h3>v0.2 - MVCP</h3><br> 713 - <ul><li>app showing in dock even tho disabled</li><br> 714 - <li>app not showing in tray, even tho enabled</li><br> 715 - <li>all api calls get source attached</li><br> 716 - <li>window cache s/custom/map/</li><br> 717 - <li>window cache all windows not just persistent</li><br> 718 - <li>window cache - evaluate key approach (use-case: apps need to identify windows they open)</li><br> 719 - <li>always return window id, so apps can manage it</li><br> 720 - <li>reimplement keys, so much easier for callers than managing ids</li><br> 721 - <li>account for number of renderer processes (seems double?)</li><br> 722 - <li>prototype window.open</li><br> 723 - <li>evaluate webContents.setWindowOpenHandler</li><br> 724 - <li>stop using openWindow to show pre-existing hidden windows?</li><br> 725 - <li style="margin-left:1em">[x] can track web windows locally</li><br> 726 - <li style="margin-left:1em">[x] can identify web windows on both sides (key/name)</li><br> 727 - <li style="margin-left:1em">[x] add new custom api for windows superpowers</li><br> 728 - <li>collapse window opening to span both approaches</li><br> 729 - <li>finish converting all openWindow to window.open</li><br> 730 - <li>figure out single devtools window if possible</li><br> 731 - </ul><br> 732 - <h3>v0.1 - MVPOC</h3></p><p>minimum viable proof of concept.</p><p>question: would i use this?</p><p>Core moduluarization<br> 733 - <ul><li>Modularize feature types, eyeing the extensibility model</li><br> 734 - <li>move settings window to features/settings</li><br> 735 - </ul><br> 736 - App cleanup<br> 737 - <ul><li>main window vs settings</li><br> 738 - <li>change settings shortcut from global+esc to opt+comma</li><br> 739 - </ul><br> 740 - Window lifecycle<br> 741 - <ul><li>modularize window open/close + hidden/visible</li><br> 742 - <li>update settings, peeks, slides, scripts</li><br> 743 - <li>hide/show window vs create fresh</li><br> 744 - <li>update slides impl to use openWindow (x, y)</li><br> 745 - </ul><br> 746 - Minimal Electron + Maximal Web<br> 747 - <ul><li>move features to all web code, with a couple special apis</li><br> 748 - <li>make globalShortcut an api like openWindow</li><br> 749 - </ul><br> 750 - Create core app<br> 751 - <ul><li>core settings</li><br> 752 - <li>registers other features</li><br> 753 - </ul><br> 754 - Move all features to web implementation<br> 755 - <ul><li>move all possible code from the electron file to the web app</li><br> 756 - <li>move to web implemented globalShortcut</li><br> 757 - <li>move to web implemented openWindow</li><br> 758 - <li>move settings re-use code to utils lib</li><br> 759 - <li>ability to add clickable links in settings panes</li><br> 760 - <li>add links to Settings app</li><br> 761 - <li>per-feature settings ui</li><br> 762 - </ul><br> 763 - Core+settings<br> 764 - <ul><li>move feature list and enablement to storage</li><br> 765 - <li>merge core + settings</li><br> 766 - <li>enable/disable features</li><br> 767 - <li>configurable default feature to load on app open (default to settings)</li><br> 768 - <li>wire up tray icon to pref</li><br> 769 - <li>tray click opens default app</li><br> 770 - </ul><br> 771 - Core/Basic<br> 772 - <ul><li>basic command bar to open pages</li><br> 773 - <li>fix setting layout wrapping issue</li><br> 774 - </ul><br> 775 - Commands/messaging<br> 776 - <ul><li>implement pubsub api</li><br> 777 - <li>way to tell feature to open default ui (if there is one)</li><br> 778 - <li>way tell feature to open its settings ui (if there is one)</li><br> 779 - </ul><br> 780 - Features cleanup<br> 781 - <ul><li>enable/disable individual slides, peeks</li><br> 782 - <li>enable/disable individual scripts</li><br> 783 - </ul><br> 784 - Internal cleanup<br> 785 - <ul><li>s/guid/id/</li><br> 786 - <li>fix label names, match to pwa manifest</li><br> 787 - <li>put readable log labels back in</li></ul></p>]]></description> 575 + <description>- [x][desktop] settings UI for sync (vyvorvtq) 576 + - [x][desktop] test sync and package (ssxzpoxo) 577 + - merge peek-node into peek repo (now at backend/server/) (zturryym) 578 + - update peek-node to support multi-user and the core types (already done) (zturryym) 579 + - unify data model across mobile/desktop/server (nlxqykul) 580 + - sync working between all three (mxwrymlv) 581 + - [x][mobile] test and deploy ios to prod (rtmtkykn) 582 + 583 + ### Old completed items 584 + 585 + ### Addressability / Core history 586 + - add peek:// loads to history table (mkylrnxy) 587 + - peek urls don&apos;t need params yet, but we&apos;ll need to do cmd params and connector data somehow maybe (mkylrnxy) 588 + - ensure all window/frame/webview loads of any kind are entered in history (mkylrnxy) 589 + - bug: some link clicks in web pages open in a window with a title bar that&apos;s clearly not entered in peek&apos;s window tracking, maybe js in the page opening windows? (mkylrnxy) 590 + - sync: don&apos;t sync peek addresses for now (mkylrnxy) 591 + - not doing paths/forking yet - is just one single chain of actions (mkylrnxy) 592 + - add next/prev cols to history table, or maintain in new table? (mkylrnxy) 593 + - when a history record is added, set prevId pointing to previous history record (mkylrnxy) 594 + - each time a history record is added, set nextId to its prevId (mkylrnxy) 595 + - enumerate history (mkylrnxy) 596 + - filter on date ranges (mkylrnxy) 597 + 598 + ### Server Backend 599 + - Add database integrity verification (uvkkmoos) 600 + 601 + ### Base Extensions 602 + - see notes/extensibility.md 603 + - window manager views (bad name, but what Peek &quot;features&quot; are now) 604 + - commands (eg Quicksilver, Ubiquity, Raycast style) 605 + 606 + ### Portability 607 + - Abstract back-end system 608 + - Electron back-end 609 + - Tauri back-end 610 + 611 + ### Pages, Tagging &amp; Groups 612 + - Open page by default in cmd 613 + - Open page from OS, other apps 614 + - Cmd to tag current page 615 + - Groups based on tags, for now 616 + - Untagged -&gt; default group 617 + - Cmd to open groups home 618 + - Escape for navigating back up the group views, not closing window 619 + - adaptive matching 620 + - frecency 621 + 622 + ### V.0.3 - Datastore 623 + - Datastore 624 + 625 + ### v0.2 - MVCP 626 + - app showing in dock even tho disabled 627 + - app not showing in tray, even tho enabled 628 + - all api calls get source attached 629 + - window cache s/custom/map/ 630 + - window cache all windows not just persistent 631 + - window cache - evaluate key approach (use-case: apps need to identify windows they open) 632 + - always return window id, so apps can manage it 633 + - reimplement keys, so much easier for callers than managing ids 634 + - account for number of renderer processes (seems double?) 635 + - prototype window.open 636 + - evaluate webContents.setWindowOpenHandler 637 + - stop using openWindow to show pre-existing hidden windows? 638 + - [x] can track web windows locally 639 + - [x] can identify web windows on both sides (key/name) 640 + - [x] add new custom api for windows superpowers 641 + - collapse window opening to span both approaches 642 + - finish converting all openWindow to window.open 643 + - figure out single devtools window if possible 644 + 645 + ### v0.1 - MVPOC 646 + 647 + minimum viable proof of concept. 648 + 649 + question: would i use this? 650 + 651 + Core moduluarization 652 + - Modularize feature types, eyeing the extensibility model 653 + - move settings window to features/settings 654 + 655 + App cleanup 656 + - main window vs settings 657 + - change settings shortcut from global+esc to opt+comma 658 + 659 + Window lifecycle 660 + - modularize window open/close + hidden/visible 661 + - update settings, peeks, slides, scripts 662 + - hide/show window vs create fresh 663 + - update slides impl to use openWindow (x, y) 664 + 665 + Minimal Electron + Maximal Web 666 + - move features to all web code, with a couple special apis 667 + - make globalShortcut an api like openWindow 668 + 669 + Create core app 670 + - core settings 671 + - registers other features 672 + 673 + Move all features to web implementation 674 + - move all possible code from the electron file to the web app 675 + - move to web implemented globalShortcut 676 + - move to web implemented openWindow 677 + - move settings re-use code to utils lib 678 + - ability to add clickable links in settings panes 679 + - add links to Settings app 680 + - per-feature settings ui 681 + 682 + Core+settings 683 + - move feature list and enablement to storage 684 + - merge core + settings 685 + - enable/disable features 686 + - configurable default feature to load on app open (default to settings) 687 + - wire up tray icon to pref 688 + - tray click opens default app 689 + 690 + Core/Basic 691 + - basic command bar to open pages 692 + - fix setting layout wrapping issue 693 + 694 + Commands/messaging 695 + - implement pubsub api 696 + - way to tell feature to open default ui (if there is one) 697 + - way tell feature to open its settings ui (if there is one) 698 + 699 + Features cleanup 700 + - enable/disable individual slides, peeks 701 + - enable/disable individual scripts 702 + 703 + Internal cleanup 704 + - s/guid/id/ 705 + - fix label names, match to pwa manifest 706 + - put readable log labels back in</description> 788 707 </item> 789 708 </channel> 790 709 </rss>
+21 -37
scripts/changelog-to-rss.js
··· 64 64 // Title: use the heading text (may include more than just the date) 65 65 const title = heading; 66 66 67 - // Convert markdown body to simple HTML for RSS description 68 - const description = markdownToSimpleHtml(body); 67 + // Convert markdown body to plain text for RSS description 68 + const description = markdownToPlainText(body); 69 69 70 70 items.push({ title, date, dateStr, description }); 71 71 } ··· 73 73 return items; 74 74 } 75 75 76 - // Minimal markdown to HTML conversion for RSS descriptions 77 - function markdownToSimpleHtml(md) { 78 - let html = md 79 - // Headings (### and below, since ## are already split out) 80 - .replace(/^#### (.+)$/gm, '<h4>$1</h4>') 81 - .replace(/^### (.+)$/gm, '<h3>$1</h3>') 82 - // Bold 83 - .replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>') 84 - // Italic 85 - .replace(/\*(.+?)\*/g, '<em>$1</em>') 86 - // Inline code 87 - .replace(/`([^`]+)`/g, '<code>$1</code>') 88 - // Links 89 - .replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>') 90 - // List items (- [x] and - [ ] and plain -) 91 - .replace(/^- \[x\] (.+)$/gm, '<li>$1</li>') 92 - .replace(/^- \[ \] (.+)$/gm, '<li>$1</li>') 93 - .replace(/^- (.+)$/gm, '<li>$1</li>') 94 - // Indented list items ( - ) 95 - .replace(/^ - (.+)$/gm, '<li style="margin-left:1em">$1</li>') 96 - // Wrap consecutive <li> in <ul> 97 - .replace(/((?:<li[^>]*>.*<\/li>\n?)+)/g, '<ul>$1</ul>') 98 - // Paragraphs (double newline) 99 - .replace(/\n\n+/g, '</p><p>') 100 - // Single newlines to <br> 101 - .replace(/\n/g, '<br>\n'); 102 - 103 - // Wrap in paragraph if not empty 104 - if (html.trim()) { 105 - html = '<p>' + html + '</p>'; 106 - } 107 - // Clean up empty paragraphs 108 - html = html.replace(/<p>\s*<\/p>/g, ''); 76 + // Convert markdown to plain text for RSS descriptions 77 + function markdownToPlainText(md) { 78 + let text = md 79 + // Convert markdown links to "text (URL)" format 80 + .replace(/\[([^\]]+)\]\(([^)]+)\)/g, '$1 ($2)') 81 + // Remove checkboxes 82 + .replace(/^- \[x\] /gm, '- ') 83 + .replace(/^- \[ \] /gm, '- ') 84 + // Remove bold markers 85 + .replace(/\*\*(.+?)\*\*/g, '$1') 86 + // Remove italic markers 87 + .replace(/\*(.+?)\*/g, '$1') 88 + // Remove inline code backticks 89 + .replace(/`([^`]+)`/g, '$1') 90 + // Collapse multiple blank lines 91 + .replace(/\n{3,}/g, '\n\n') 92 + .trim(); 109 93 110 - return html; 94 + return text; 111 95 } 112 96 113 97 // Escape XML special characters ··· 157 141 <link>${escapeXml(meta.link || '')}</link> 158 142 <guid isPermaLink="false">${escapeXml(guid)}</guid> 159 143 <pubDate>${pubDate}</pubDate> 160 - <description><![CDATA[${item.description}]]></description> 144 + <description>${escapeXml(item.description)}</description> 161 145 </item> 162 146 `; 163 147 }