CALENDAR Agenda: Fantastical-style — one card per day, time and title on separate lines, attachment thumbnails, hover preview, selection #413

Open
opened 2026-09-29 08:21:31 +00:00 by kayg · 38 comments
Owner

Request (owner, 2026-09-29)

"the agenda view itself needs to be more Fantastical-like. it looks too vibe coded now. make a card for each day please! have the times and events be separate lines." The owner shared screenshots of the old calternal macOS native app (now superseded by the web app) as the reference, in several states.

Reference (from the owner's screenshots of the native app)

  • Day headers: weekday in bold caps ("TUESDAY", today's weekday in the accent colour), then the date ("15/9/2026") in muted text, and a circular count badge on the right (items that day).
  • Each item: a coloured dot (tag colour; an open ring for a task/untagged item), then two lines: the time range in muted text ("9:00 AM – 10:15 AM") and the title below it in the body text, truncated with an ellipsis.
  • Attachments: a small stacked thumbnail under the item (photo / note preview). Hovering it shows a glass popover with the full preview (a note's text, or the image) with a pointer arrow to the thumbnail.
  • Selected item: filled accent background (rounded), white text; its attachments expand below it as rows with a "↳" glyph, a small thumbnail and the attachment's name ("sidebar-real", "Design review").
  • Past items above the fold fade slightly.

Build

  • One card per day (the owner's words) holding that day's items with the header described above; cards stack with the standard card gap, glass card surface from #402, left-aligned content.
  • Item rows exactly as above (two lines, dot, thumbnails, hover popover via the shared preview/popover primitive from #303, selection with expanded attachments). Keyboard: arrow keys move selection, Return opens the preview; screen reader labels.
  • Density: rows compact on desktop, 44 px touch targets on phone.
  • The mini calendar band tracks the visible days (#411 M5).
  • Performance: virtualise long ranges; no jank when scrolling (see the animation review issue).
    Evidence: production screenshots of unfocused, hover-on-attachment, and selected states at 390/820/1440, light and dark (theme asserted).
## Request (owner, 2026-09-29) "the agenda view itself needs to be more Fantastical-like. it looks too vibe coded now. make a card for each day please! have the times and events be separate lines." The owner shared screenshots of the old calternal macOS native app (now superseded by the web app) as the reference, in several states. ## Reference (from the owner's screenshots of the native app) - **Day headers:** weekday in bold caps ("TUESDAY", today's weekday in the accent colour), then the date ("15/9/2026") in muted text, and a circular count badge on the right (items that day). - **Each item:** a coloured dot (tag colour; an open ring for a task/untagged item), then two lines: the time range in muted text ("9:00 AM – 10:15 AM") and the title below it in the body text, truncated with an ellipsis. - **Attachments:** a small stacked thumbnail under the item (photo / note preview). Hovering it shows a glass popover with the full preview (a note's text, or the image) with a pointer arrow to the thumbnail. - **Selected item:** filled accent background (rounded), white text; its attachments expand below it as rows with a "↳" glyph, a small thumbnail and the attachment's name ("sidebar-real", "Design review"). - Past items above the fold fade slightly. ## Build - One **card per day** (the owner's words) holding that day's items with the header described above; cards stack with the standard card gap, glass card surface from #402, left-aligned content. - Item rows exactly as above (two lines, dot, thumbnails, hover popover via the shared preview/popover primitive from #303, selection with expanded attachments). Keyboard: arrow keys move selection, Return opens the preview; screen reader labels. - Density: rows compact on desktop, 44 px touch targets on phone. - The mini calendar band tracks the visible days (#411 M5). - Performance: virtualise long ranges; no jank when scrolling (see the animation review issue). Evidence: production screenshots of unfocused, hover-on-attachment, and selected states at 390/820/1440, light and dark (theme asserted).
Author
Owner

Starting agenda-413 from job/agenda-413 at 1ad7b72895. I read the repo contract, vocabulary, design decisions and issue. I am tracing the current Agenda, shared calendar preview surfaces and mini-calendar integration before implementing the requested day cards and rows.

Starting agenda-413 from job/agenda-413 at 1ad7b72895acaa85984f0f6d0748fdc02192d4f2. I read the repo contract, vocabulary, design decisions and issue. I am tracing the current Agenda, shared calendar preview surfaces and mini-calendar integration before implementing the requested day cards and rows.
Author
Owner

Finding: the referenced checkout has no macOS app sources or Swift Timeline view (bench/compare.py
bench/run.sh
bench/embed-backends/scripts/build-cost.py
bench/embed-backends/scripts/push-o2.py
bench/embed-backends/scripts/run.py
bench/embed-backends/scripts/validate_raw.py
bench/embed-backends/scripts/summarize.py
bench/embed-backends/scripts/build-time-arm64.sh
bench/embed-backends/scripts/test_validate_raw.py
bench/embed-backends/scripts/test_run.py
bench/embed-backends/scripts/test_summarize.py
bench/embed-backends/fetch-assets.sh
bench/embed-backends/README.md
bench/embed-backends/corpus/corpus.json
bench/embed-backends/RESULTS.md
bench/embed-backends/Cargo.lock
bench/embed-backends/src/runtime.rs
bench/embed-backends/src/bin/bench-candle.rs
bench/embed-backends/src/bin/generate-corpus.rs
bench/embed-backends/src/bin/bench-ort.rs
bench/embed-backends/src/ort_backend.rs
bench/embed-backends/src/lib.rs
bench/embed-backends/src/candle_backend.rs
bench/embed-backends/Cargo.toml
bench/embed-backends/raw/x86-build.json
bench/embed-backends/raw/x86-smoke.json
bench/embed-backends/raw/x86-vm.json
bench/embed-backends/raw/o2-arm64.json
bench/test_record.py
bench/record.py
bench/test_compare.py
CONTRIBUTING.md
Containerfile
scripts/changelog.sh
scripts/fj
scripts/app-icons/generate.mjs
scripts/app-icons/contact-sheet.mjs
NOTICE
fuzz/run-fixed.sh
fuzz/fuzz_targets/markdown.rs
fuzz/fuzz_targets/tags.rs
fuzz/fuzz_targets/tus_headers.rs
fuzz/fuzz_targets/search_query.rs
fuzz/fuzz_targets/dayfile.rs
fuzz/fuzz_targets/share_inputs.rs
fuzz/fuzz_targets/frontmatter.rs
fuzz/fuzz_targets/icalendar.rs
fuzz/fuzz_targets/path.rs
fuzz/README.md
fuzz/corpus/dayfile/daily-note.md
fuzz/corpus/dayfile/midnight.md
rust-toolchain.toml
CONTEXT.md
fuzz/corpus/search_query/operators
fuzz/corpus/frontmatter/basic.md
fuzz/corpus/frontmatter/crlf.md
fuzz/corpus/tags/nested
fuzz/corpus/tags/mixed
fuzz/corpus/markdown/basic.md
fuzz/corpus/markdown/blank-lines.md
fuzz/corpus/markdown/structured.md
fuzz/corpus/markdown/mixed-newline-blank-run
spikes/money-format/test_money_format.py
spikes/money-format/budget_math.py
spikes/money-format/money_format.py
spikes/money-format/examples/calternal-custom/2026-09.money
spikes/money-format/examples/probe.hledger
spikes/money-format/examples/hledger-layout/budget.journal
spikes/money-format/examples/hledger-layout/main.journal
spikes/money-format/examples/hledger-layout/2026-09.journal
spikes/money-format/examples/hledger-layout/accounts.journal
spikes/money-format/examples/hledger-superset/transactions/2026-09.journal
spikes/money-format/examples/hledger-superset/budget.journal
spikes/money-format/examples/hledger-superset/2026-09.combined.journal
spikes/money-format/examples/hledger-superset/main.journal
spikes/money-format/examples/hledger-superset/accounts.journal
docs/deep-links.md
docs/ai-runtime.md
docs/cli-walkthrough.md
docs/mcp.md
docs/perf/baseline.json
docs/perf/README.md
docs/perf/2026-09-28.md
fuzz/corpus/path/795779a3b0b6093249194ddb6ae732ac8988e557
fuzz/corpus/path/89d1d1acd0b51934b968c433edd8a8416348e9ab
fuzz/corpus/path/30cd70452f98e2d7a9bcfb6da3786c65a11836ea
fuzz/corpus/path/28f316370a03344a43003cad23c58d7eff61c845
fuzz/corpus/path/dbceac98ccc5a41509ec1cc24cc3ff781f18889d
fuzz/corpus/path/4c9e518452c6635a58f8087c5a1d56721eff461c
fuzz/corpus/path/dae94fe5f5b524155dab2db3260ba4a421bf3b58
fuzz/corpus/path/f506d3a762f1f8e895038be4b4c92563dcf49df6
fuzz/corpus/path/91ad759f8b53748ae266d6b60f392016aa103486
fuzz/corpus/path/3400f8ae1967950f625d69df7d08ff8c5dfaed49
fuzz/corpus/path/d1f3fc7f813231731a932d0551e3667af5fbd6f4
fuzz/corpus/path/1e6ad641cb0c630a5c7e0d730e405ebc13938716
fuzz/corpus/path/3c5f0d16c57c0833a3a603a4e9a2533a28b257c0
fuzz/corpus/path/d3278ae5e2dbfdcceead43bb9e2efa5b186093dd
fuzz/corpus/path/ac1bbdb2057cd0b4feb053cb21444b6c2efbea08
fuzz/corpus/path/43b1815aa1f77e4b20f7930436a9330798e2321c
fuzz/corpus/path/feb9c44d7b02c8c71321077c39b8880af5f6bbb4
fuzz/corpus/path/0d59bce9700caf636130d8a4d85ceffdf368afe2
fuzz/corpus/path/4d240661cf9ed076c329d7c1202c67f0fd1a3af0
fuzz/corpus/path/5f79856f974b56b9c126c11aa14445bb3dabc6f6
fuzz/corpus/path/bac1a68e7b947004ea4197627090bc7e870eab14
fuzz/corpus/path/e7333f7bd5066c2844a36d7e2c275b2177fc971b
fuzz/corpus/path/4546be9b5a92e07b6a92161b55e973ad6d887fa3
fuzz/corpus/path/c7ec773d51b4b83e0e1792c69d1ad44a0af79e3d
fuzz/corpus/path/866aa71b78284ad852052bb5f97aa294c0fbb17d
fuzz/corpus/path/3a52ce780950d4d969792a2559cd519d7ee8c727
fuzz/corpus/path/785aaeb451deb60d317b77e8ce7bd61803a35a18
fuzz/corpus/path/53b0a4fd8a66fb38e8368ff10c5272ea2c22cf74
fuzz/corpus/path/01b08aed394dba26c237bc61dbd2cac884f09d6a
fuzz/corpus/path/167f55ffca4f4f8d7b2c3640f609a055d6815376
fuzz/corpus/path/b68353512fa434ac7ef2706cefb3d9c980f5c47e
fuzz/corpus/path/reserved
fuzz/corpus/path/cbee55499f78858437b554a1459cd17bc1eef0de
fuzz/corpus/path/961e9200433e3cee3f067b2d828afc5309b81b1a
fuzz/corpus/path/b981468a60de26aa61f224c952e07c6c0cb2a5cb
fuzz/corpus/path/12935abd658fa62310077d1b1319b580fd3023f5
fuzz/corpus/path/95441556ec100e89b59202c511d5b68e132ff1c6
fuzz/corpus/path/3e459be405f2868019e74cbea6a3179159bfe2c4
fuzz/corpus/path/787eff9c9780077937a0f3d5217acf41e37842d9
fuzz/corpus/path/964992fde30239af2636655e58d714e73d8b5050
fuzz/corpus/path/6cad660f8b59b11ece2938ce732da5a4a03c56d0
fuzz/corpus/path/e8279304eb7b79f041d2b3e352a6c9e61531bac4
fuzz/corpus/path/1c8081d1a61b7ae0cc5d419ee5a42c968ed1a6e2
fuzz/corpus/path/f1b373569349372deac13135b96ca10bd438dd92
fuzz/corpus/path/972643dd48123ef72362bc3377d43e720b7f0121
fuzz/corpus/path/7a81af3e591ac713f81ea1efe93dcf36157d8376
fuzz/corpus/path/bfb8dfaef1f670c6c5127d91535a46c7c3ccfffb
fuzz/corpus/path/9824ee8c4843ec594abc516949110a847a98bcd8
fuzz/corpus/path/cf4e15f0c5f6c5e40d5502e8dda4bc6fa6082ce0
fuzz/corpus/path/1a16fc44e86aa6e6d6381182ac837931da817549
fuzz/corpus/path/b7ca91d65f563eea6f8b71f74f7e692bc24343ad
fuzz/corpus/path/b6e0058d0a415e34d377418dedfcde58b5bcffa7
fuzz/corpus/path/71b74d818027dd4db6547ae7ff44b6b211e12823
fuzz/corpus/path/0692dcf0616c02fdf276b1b2b3b35b57c7337b5b
fuzz/corpus/path/71fada1ffa90e58619d1fb6ca2c5360abcd2b3e2
fuzz/corpus/path/0347f1533cc1d1af9651b43992cba03c6a7ea063
fuzz/corpus/path/86c3bddf56c0b40c1e97ed9c58f2e8126fade4f5
fuzz/corpus/path/7777f37098caa29467cd7e5d301cabd4345cf832
fuzz/corpus/path/0ddc853d1c1830cd369645392b69eb7487c30a06
fuzz/corpus/path/79199a02bc2804d21e988f38f5a21e02360a86c8
fuzz/corpus/path/077af25b857130be76410c19295387b9f2bbdbeb
fuzz/corpus/path/81c0082bee0e714f62aee1df07207661dde5ce82
fuzz/corpus/path/confusable
fuzz/corpus/path/42099b4af021e53fd8fd4e056c2568d7c2e3ffa8
fuzz/corpus/path/84791ec4fb8649bf1d90f211b9ecf9fc5e9dfa45
fuzz/corpus/path/19499335e8df742225134797290b88ba433685bc
fuzz/corpus/path/7b602a6e51990df6fa9226829a788df6373dfe6b
fuzz/corpus/path/cebde7c181823c2e59571a9780b96b159331474f
fuzz/corpus/path/581e293ce90e88be8a1ad2a22eb1641bb58a18b6
fuzz/corpus/path/2ea03615c22ac5dd15bcef6ef27f1bb0efd44bd9
fuzz/corpus/path/cd09c55f87137779f4f42fdf769a1efb04a988e1
fuzz/corpus/path/d9d13ff28e00464ba862e3621dcc00ee5e7e8e92
fuzz/corpus/path/d169248b947181ebe1054be2149e6cf406818741
fuzz/corpus/path/89fd30dac3adcc044ec6b63aca631724b7312af3
fuzz/corpus/path/cc22b9ec251023c1032ca97d510ee9a9d5285801
fuzz/corpus/path/1c2be434fc94d8d6ef42000a2c0d490bf3924333
fuzz/corpus/path/caa10fba5eb98e7e9765e09f4f81adca1c2ad553
fuzz/corpus/path/3fdf0c75d56de6161b28815e92223283378ec2ca
fuzz/corpus/path/9b82d155728125e270bd82f0471fc39221ff12cf
fuzz/corpus/path/89e5dc9aa6269d614504533590e9d5f9a063ab01
fuzz/corpus/path/e86f9fe769eb48dc3817e249f4d8858585b7cee0
fuzz/corpus/path/628eaa638a2d7834ac975a9d3ada50fa6b805220
fuzz/corpus/path/af473bc104749d9f085c1e527ad2d1a9fa81cb5d
fuzz/corpus/path/99a08ebd3fd227f3a7d4de5ec66a30db5146865d
fuzz/corpus/path/4d1dba6fd4c206dce14dc73c27ddb906fbbf94df
fuzz/corpus/path/88f9da75ee523871f2c20a6ba5a45488e9ef1286
fuzz/corpus/path/traversal
fuzz/corpus/path/4ac15b4a560df8a491437111a332606a5ad2c444
fuzz/corpus/path/31d69cc8c918e4d47aedbde425cdf58dc3c93689
fuzz/corpus/path/165a483a72dd45f8d99966128c027facf9a629a8
fuzz/corpus/path/unicode
fuzz/corpus/path/f3b8396183c65eafb5efe7f4fe435009141af7cc
fuzz/corpus/path/51cdfce292ee1e71a294b9a899249f146bdef598
fuzz/corpus/path/30083396aecf689110b1cd561504894f92d9cab3
fuzz/corpus/path/39516c35fdab770ce4f986bb7c4fe34cf2715fdf
fuzz/corpus/path/b9f73d7e417d275230a900e0e9eaff6ceb7f691d
fuzz/corpus/path/21e3b4eb6d906e0248eae5bddcb2e9a0bb0f8a46
fuzz/corpus/path/aeddcb5ebdef89da358e469b0dcf655a52544c0d
fuzz/corpus/path/9d891e731f75deae56884d79e9816736b7488080
fuzz/corpus/path/f8f552c08fbc6679817b5b51a1cefb7e77432479
fuzz/corpus/path/2031c6421bb3233d6997ffe250e84d07a13b1d45
fuzz/corpus/path/e9be7a527ed1c4844ee7d23a2a7699b5987091df
fuzz/corpus/path/2d83b0f458a20c3d04df7d07652eb6bb4a081627
fuzz/corpus/tus_headers/version
fuzz/corpus/tus_headers/basic
fuzz/corpus/tus_headers/traversal
fuzz/corpus/icalendar/vtodo.ics
fuzz/corpus/icalendar/vevent.ics
fuzz/corpus/share_inputs/slug
fuzz/corpus/share_inputs/reserved
fuzz/corpus/share_inputs/password
fuzz/Cargo.lock
fuzz/Cargo.toml
tests/adversarial/restart.mjs
tests/adversarial/mcp_probe.py
tests/adversarial/xuser_matrix.py
tests/adversarial/run-split.sh
tests/adversarial/refresh.mjs
tests/adversarial/run.sh
tests/adversarial/setup.mjs
tests/adversarial/FINDINGS-round2.md
tests/adversarial/webdav.py
tests/adversarial/editor-proxy.mjs
tests/adversarial/package.json
tests/adversarial/mail_api.mjs
tests/adversarial/webauthn.mjs
tests/adversarial/test_search_result_matching.py
tests/adversarial/search_chaos.py
tests/adversarial/hostile_bytes.mjs
tests/adversarial/authz_matrix.py
tests/adversarial/calendar_event_tags.mjs
tests/adversarial/appearance_auto_scheme.mjs
tests/adversarial/attack.py
tests/adversarial/search_disk_full.py
tests/adversarial/test-media-sandbox.sh
tests/adversarial/dedup_setup.mjs
tests/adversarial/jobs.py
tests/adversarial/bun.lock
tests/adversarial/sync_chaos.py
tests/adversarial/wikilink_conversion.py
tests/adversarial/test_sync_inventory.py
tests/adversarial/attack2.py
tests/adversarial/jobs-screenshots.mjs
tests/adversarial/editor.mjs
tests/adversarial/prepare-media-runtime.sh
tests/adversarial/media_uploads.py
tests/adversarial/server_log.py
tests/perf/test_upload_scale.py
tests/perf/search_scale.py
tests/perf/upload_scale.py
tests/perf/search_photo_fixture.mjs
apps/web/scripts/check-type-tokens.mjs
apps/web/tsconfig.json
apps/web/static/favicon-16.png
apps/web/static/favicon-32.png
apps/web/static/apple-touch-icon.png
apps/web/static/og.png
apps/web/static/fonts/maple-mono-latin-wght-normal.woff2
apps/web/static/fonts/OFL-literata.txt
apps/web/static/fonts/OFL-source-serif-4.txt
apps/web/static/fonts/fraunces-latin-wght-normal.woff2
apps/web/static/fonts/fraunces-latin-ext-wght-normal.woff2
apps/web/static/fonts/OFL-roboto-serif.txt
apps/web/static/fonts/spline-sans-mono-latin-wght-normal.woff2
apps/web/static/fonts/maple-mono-latin-ext-wght-normal.woff2
apps/web/static/fonts/google-sans-latin-wght-normal.woff2
apps/web/static/fonts/bricolage-grotesque-latin-ext-wght-normal.woff2
apps/web/static/fonts/literata-latin-wght-normal.woff2
apps/web/static/fonts/OFL-spline-sans-mono.txt
apps/web/static/fonts/source-serif-4-latin-ext-wght-normal.woff2
apps/web/static/fonts/README.md
apps/web/static/fonts/maple-mono-latin-ext-wght-italic.woff2
apps/web/static/fonts/spline-sans-mono-latin-ext-wght-normal.woff2
apps/web/static/fonts/jetbrains-mono-latin-ext-wght-normal.woff2
apps/web/static/fonts/newsreader-latin-wght-normal.woff2
apps/web/static/fonts/newsreader-latin-ext-wght-normal.woff2
apps/web/static/fonts/OFL-newsreader.txt
apps/web/static/fonts/OFL-playfair-display.txt
apps/web/static/fonts/playfair-display-latin-ext-wght-normal.woff2
apps/web/static/fonts/OFL-google-sans.txt
apps/web/static/fonts/playfair-display-latin-wght-normal.woff2
apps/web/static/fonts/literata-latin-ext-wght-normal.woff2
apps/web/static/fonts/google-sans-latin-ext-wght-normal.woff2
apps/web/static/fonts/inter-latin-ext-wght-normal.woff2
apps/web/static/fonts/OFL-inter.txt
apps/web/static/fonts/source-serif-4-latin-wght-normal.woff2
apps/web/static/fonts/OFL-jetbrains-mono.txt
apps/web/static/fonts/roboto-serif-latin-ext-wght-normal.woff2
apps/web/static/fonts/maple-mono-latin-wght-italic.woff2
apps/web/static/fonts/OFL-maple-mono.txt
apps/web/static/fonts/jetbrains-mono-latin-wght-normal.woff2
apps/web/static/fonts/roboto-serif-latin-wght-normal.woff2
apps/web/static/fonts/bricolage-grotesque-latin-wght-normal.woff2
apps/web/static/fonts/OFL-fraunces.txt
apps/web/static/fonts/OFL-bricolage-grotesque.txt
apps/web/static/fonts/inter-latin-wght-normal.woff2
apps/web/static/manifest.webmanifest
apps/web/static/robots.txt
apps/web/static/favicon.svg
apps/web/static/icons/icon-192.png
apps/web/static/icons/icon-monochrome-192.png
apps/web/static/icons/icon-maskable-192.png
apps/web/static/icons/mark-light.webp
apps/web/static/icons/icon-maskable-512.png
apps/web/static/icons/mark-dark.webp
apps/web/static/icons/icon-512.png
apps/web/static/icons/icon-monochrome-512.png
apps/web/e2e/popovers.mjs
apps/web/e2e/webmcp.mjs
apps/web/e2e/auth.mjs
apps/web/e2e/route-perf.mjs
apps/web/e2e/layout-sweep.mjs
apps/web/e2e/calendar-resize.mjs
apps/web/e2e/calendar-glass-review.mjs
apps/web/e2e/analytics.mjs
apps/web/e2e/clock.mjs
apps/web/e2e/calendar-view-switcher.mjs
apps/web/e2e/shell.mjs
apps/web/e2e/photo-fixtures.mjs
apps/web/e2e/phone-chrome.mjs
apps/web/e2e/ask.mjs
apps/web/e2e/fonts-review.mjs
apps/web/e2e/process-perf.mjs
apps/web/e2e/deeplinks.mjs
apps/web/e2e/calendar.mjs
apps/web/e2e/header-sweep.mjs
apps/web/e2e/share.mjs
apps/web/e2e/menu-blur.mjs
apps/web/e2e/mobile-focus.mjs
apps/web/e2e/app-passwords.mjs
apps/web/e2e/csp.mjs
apps/web/e2e/composer.mjs
apps/web/e2e/a11y.mjs
apps/web/e2e/calendar-format-review.mjs
apps/web/e2e/calendar-perf.mjs
apps/web/e2e/breakit.mjs
apps/web/e2e/touch-369.mjs
apps/web/e2e/notifications.mjs
apps/web/e2e/motion-spring-evidence.mjs
apps/web/e2e/photos-perf.mjs
apps/web/e2e/ui-polish-354.mjs
apps/web/e2e/chrome-surfaces.mjs
apps/web/e2e/ai.mjs
apps/web/e2e/files.mjs
apps/web/e2e/appearance-review.mjs
apps/web/e2e/fixtures/README.md
apps/web/e2e/fixtures/overlay-photo-cc0.jpg
apps/web/e2e/event-tint.mjs
apps/web/e2e/calendar-task-overflow.mjs
apps/web/e2e/notes.mjs
apps/web/e2e/search.mjs
apps/web/e2e/photos.mjs
apps/web/e2e/hidden-activity.mjs
apps/web/e2e/harness.mjs
apps/web/e2e/popover-screenshots.mjs
apps/web/e2e/search-scale-palette.mjs
apps/web/package.json
apps/web/README.md
apps/web/svelte.config.js
apps/web/vite.config.ts
apps/web/src/lib/flip.test.ts
apps/web/src/lib/time.test.ts
apps/web/src/lib/hooks/is-mobile.svelte.ts
apps/web/src/lib/tooltip/tooltip.test.ts
apps/web/src/lib/navigation.ts
apps/web/src/lib/ui/pointerCoarse.svelte.ts
apps/web/src/lib/ui/cssLength.ts
apps/web/src/lib/ui/breakpoints.ts
apps/web/src/lib/ui/uiScale.svelte.ts
apps/web/src/lib/appearance/readability.test.ts
apps/web/src/lib/appearance/background-store.test.ts
apps/web/src/lib/appearance/background.svelte.ts
apps/web/src/lib/appearance/autoScheme.svelte.ts
apps/web/src/lib/appearance/readability.ts
apps/web/src/lib/solar.test.ts
apps/web/src/lib/fontsGroup.svelte.test.ts
apps/web/src/lib/menu-open-focus.svelte.test.ts
apps/web/src/lib/navigation.test.ts
apps/web/src/lib/selectionContextBar.ts
apps/web/src/lib/themePicker.svelte.test.ts
apps/web/src/lib/floating.ts
apps/web/src/lib/modeHeader.svelte.test.ts
apps/web/src/lib/relativeTime.ts
apps/web/src/lib/flip.ts
apps/web/src/lib/chrome.svelte.ts
apps/web/src/lib/selection.ts
apps/web/src/lib/test-fixtures/BottomBarFixture.svelte
apps/web/src/lib/date-formatting.test.ts
apps/web/src/lib/reducedMotion.svelte.ts
apps/web/src/lib/copyLinkToast.ts
apps/web/src/lib/motion.ts
apps/web/src/lib/selectionContextBar.test.ts
apps/web/src/lib/jobs/api.ts
apps/web/src/lib/jobs/api.test.ts
docs/perf/runs/2026-09-27T125206Z-39d6f2e5-notes-10k.json
docs/perf/runs/2026-09-27T125206Z-39d6f2e5-notes-5k.partial.json
docs/perf/runs/2026-09-27T125206Z-39d6f2e5-notes-1k.partial.json
docs/perf/runs/2026-09-27T125206Z-39d6f2e5.json
docs/perf/runs/2026-09-27T113500Z-37788888.json
docs/perf/runs/2026-09-27T125206Z-39d6f2e5-files-50k.partial.json
docs/perf/runs/2026-09-27T142335Z-39d6f2e5-notes-3627.progress.json
docs/perf/runs/2026-09-27T142925Z-39d6f2e5-notes-4019.progress.json
docs/perf/2026-09-27.md
docs/perf/BASELINE.md
docs/DESIGN.md
docs/audits/consistency-2026-09-28.md
docs/audits/consistency-237.md
docs/audits/cross-user-2026-09-28.md
docs/audits/glass-audit-207.md
apps/web/src/lib/calendar/agenda.svelte.test.ts
apps/web/src/lib/calendar/prefs.test.ts
apps/web/src/lib/calendar/sidebarState.svelte.ts
apps/web/src/lib/calendar/event-tint.test.ts
apps/web/src/lib/calendar/model.test.ts
apps/web/src/lib/calendar/prefs.ts
apps/web/src/lib/calendar/data.ts
apps/web/src/lib/calendar/TimeGrid.svelte.test.ts
apps/web/src/lib/calendar/edits.test.ts
apps/web/src/lib/calendar/edits.ts
apps/web/src/lib/calendar/journal.ts
apps/web/src/lib/calendar/zones.test.ts
apps/web/src/lib/calendar/data.test.ts
apps/web/src/lib/calendar/grid.test.ts
apps/web/src/lib/calendar/attachments.test.ts
apps/web/src/lib/themeColor.ts
apps/web/src/lib/api/tags.ts
apps/web/src/lib/api/notes.test.ts
apps/web/src/lib/api/notes.ts
apps/web/src/lib/api/tags.test.ts
docs/research/voice-transcription.md
docs/research/nested-podman.md
docs/research/calendar-grid.md
docs/research/mail-threads.md
docs/research/file-protocols.md
docs/research/appearance-248.md
docs/research/webmcp.md
docs/research/money-format-spike.md
docs/research/mail-plugin.md
docs/research/money-plugin.md
docs/research/notes-actions.md
docs/video-transcoding.md
apps/web/src/lib/a11y/focusWithKeyboard.test.ts
apps/web/src/lib/a11y/focusWithKeyboard.ts
apps/web/src/lib/a11y/inputModality.ts
apps/web/src/lib/a11y/focusTrap.test.ts
apps/web/src/lib/a11y/focusTrap.ts
contracts/openapi.json
contracts/README.md
contracts/schemas/note-template-defaults.v1.json
contracts/schemas/README.md
apps/web/src/lib/editor/blockToolbarActions.test.ts
apps/web/src/lib/editor/blockToolbarActions.ts
apps/web/src/lib/editor/blockMenu.ts
apps/web/src/lib/editor/keyboardInset.svelte.ts
apps/web/src/lib/editor/blockNoteTitle.ts
apps/web/src/lib/editor/editorEvents.ts
apps/web/src/lib/editor/blockMenu.test.ts
apps/web/src/lib/editor/toolbarNav.ts
apps/web/src/lib/editor/blockNoteTitle.test.ts
contracts/vectors/ask-retrieval.v1.json
contracts/vectors/search-ranking.v1.json
contracts/vectors/README.md
apps/web/src/lib/photos/layout.test.ts
apps/web/src/lib/photos/format.ts
apps/web/src/lib/photos/PhotosView.svelte
apps/web/src/lib/photos/photos-units.test.ts
apps/web/src/lib/photos/media.ts
apps/web/src/lib/photos/route.ts
apps/web/src/lib/photos/PhotoViewer.svelte
apps/web/src/lib/photos/thumbhash.ts
apps/web/src/lib/photos/api.ts
apps/web/src/lib/photos/PhotosSidebar.svelte
apps/web/src/lib/photos/PhotoTimeline.svelte
apps/web/src/lib/photos/timeline.svelte.ts
apps/web/src/lib/photos/TimelineScrubber.svelte
apps/web/src/lib/photos/layout.ts
apps/web/src/lib/gestures.ts
contracts/vectors/markdown/calternal/README.md
contracts/vectors/markdown/calternal/generate.mjs
contracts/vectors/markdown/calternal/editor.v1.json
contracts/vectors/markdown/README.md
contracts/vectors/markdown/editor.v1.json
contracts/vectors/search-query.v1.json
apps/web/src/lib/ai/TurnPanel.svelte
apps/web/src/lib/ai/mention.test.ts
apps/web/src/lib/ai/mention.ts
apps/web/src/lib/ai/ask.ts
apps/web/src/lib/ai/api.ts
apps/web/src/lib/ai/changes.ts
apps/web/src/lib/ai/transcript.test.ts
apps/web/src/lib/ai/transcript.ts
apps/web/src/lib/ai/commands.test.ts
apps/web/src/lib/ai/commands.ts
apps/web/src/lib/ai/api.test.ts
apps/web/src/lib/ai/changes.test.ts
apps/web/src/lib/ai/turnPanel.svelte.ts
apps/web/src/lib/menu/MenuItem.svelte.test.ts
apps/web/src/lib/editor/format/EditorFormatBubble.svelte
apps/web/src/lib/editor/format/BlockActionRow.svelte.test.ts
apps/web/src/lib/editor/format/BlockHoverActions.svelte.test.ts
apps/web/src/lib/editor/format/reminderDateTime.test.ts
apps/web/src/lib/editor/format/TooltipLayer.svelte.test.ts
apps/web/src/lib/editor/format/reminderPreview.test.ts
apps/web/src/lib/editor/format/EditorFormatBar.svelte.test.ts
apps/web/src/lib/editor/format/reminderDateTime.ts
apps/web/src/lib/editor/format/FormatButton.svelte
apps/web/src/lib/editor/format/FormatButton.svelte.test.ts
apps/web/src/lib/editor/format/BlockReminderPicker.svelte
apps/web/src/lib/editor/format/reminderPreview.ts
apps/web/src/lib/editor/format/EditorFormatBar.svelte
apps/web/src/lib/editor/format/reminderTimeHistory.ts
apps/web/src/lib/editor/format/FormatCommandRow.svelte
apps/web/src/lib/analytics/store.test.ts
apps/web/src/lib/analytics/delta.ts
apps/web/src/lib/analytics/period.ts
apps/web/src/lib/analytics/ranges.ts
apps/web/src/lib/analytics/deltaMode.svelte.ts
apps/web/src/lib/analytics/links.ts
apps/web/src/lib/analytics/store.svelte.ts
apps/web/src/lib/analytics/links.test.ts
apps/web/src/lib/analytics/delta.test.ts
apps/web/src/lib/analytics/period.test.ts
apps/web/src/lib/analytics/ranges.test.ts
apps/web/src/lib/analytics/palette.test.ts
apps/web/src/lib/analytics/aggregate.ts
apps/web/src/lib/analytics/palette.ts
apps/web/src/lib/editor/format/BlockHoverActions.svelte
apps/web/src/lib/editor/format/FormatIcon.svelte
apps/web/src/lib/editor/format/reminderTimeHistory.test.ts
apps/web/src/lib/editor/format/BlockActionRow.svelte
apps/web/src/lib/notifications/model.test.ts
apps/web/src/lib/notifications/InboxPanel.svelte
apps/web/src/lib/notifications/model.ts
apps/web/src/lib/notifications/inbox.svelte.ts
apps/web/src/lib/notifications/push.test.ts
apps/web/src/lib/notifications/push.ts
apps/web/src/lib/webmcp/tools.test.ts
apps/web/src/lib/webmcp/tools.ts
apps/web/src/lib/themes.ts
apps/web/src/lib/menuNav.ts
apps/web/src/lib/auth/bip39-english.ts
apps/web/src/lib/auth/authOptions.ts
apps/web/src/lib/auth/passkeys.test.ts
apps/web/src/lib/auth/routes.ts
apps/web/src/lib/auth/routes.test.ts
crates/calternal-fs/tests/storage.rs
apps/web/src/lib/auth/components/RecoveryKeyEntry.svelte
apps/web/src/lib/auth/components/RecoveryKeyWords.svelte
apps/web/src/lib/auth/components/RecoverFlow.svelte
apps/web/src/lib/auth/components/PasskeyGlyph.svelte
apps/web/src/lib/auth/components/CreateAccountFlow.svelte
apps/web/src/lib/auth/components/AuthCard.svelte
apps/web/src/lib/auth/components/AuthSteps.svelte
apps/web/src/lib/auth/recoveryKey.ts
apps/web/src/lib/auth/passkeys.ts
apps/web/src/lib/auth/recoveryKey.test.ts
apps/web/src/lib/clipboard.test.ts
apps/web/src/lib/composer/Composer.svelte
apps/web/src/lib/composer/depix.ts
apps/web/src/lib/composer/Composer.svelte.test.ts
apps/web/src/lib/composer/nlp.ts
apps/web/src/lib/composer/controller.svelte.ts
apps/web/src/lib/composer/drafts.test.ts
apps/web/src/lib/composer/errors.ts
apps/web/src/lib/composer/commit.test.ts
apps/web/src/lib/composer/recorder.test.ts
apps/web/src/lib/composer/commit.ts
apps/web/src/lib/composer/recorder.svelte.ts
apps/web/src/lib/composer/corrections.ts
apps/web/src/lib/composer/runs.test.ts
apps/web/src/lib/composer/corrections.test.ts
crates/calternal-fs/src/trash.rs
apps/web/src/lib/composer/mode.test.ts
crates/calternal-fs/src/blob.rs
apps/web/src/lib/composer/nlp.test.ts
apps/web/src/lib/composer/attachments.svelte.ts
apps/web/src/lib/composer/drafts.svelte.ts
apps/web/src/lib/composer/mode.svelte.ts
apps/web/src/lib/composer/attachments.test.ts
apps/web/src/lib/composer/runs.ts
crates/calternal-fs/src/versions.rs
crates/calternal-fs/src/write.rs
crates/calternal-fs/src/journal.rs
crates/calternal-fs/src/file_ops.rs
crates/calternal-fs/src/quota.rs
crates/calternal-fs/src/lib.rs
crates/calternal-fs/src/error.rs
crates/calternal-fs/src/root.rs
crates/calternal-fs/src/thumbnails.rs
crates/calternal-fs/src/uploads.rs
crates/calternal-fs/src/hls.rs
crates/calternal-fs/src/user_homes.rs
crates/calternal-fs/src/path.rs
crates/calternal-fs/Cargo.toml
crates/calternal-embed/models/manifest.json
apps/web/src/lib/search/query.test.ts
apps/web/src/lib/search/targets.ts
apps/web/src/lib/search/SearchPreview.svelte
apps/web/src/lib/search/sources.svelte.ts
apps/web/src/lib/search/server.ts
apps/web/src/lib/search/providers.ts
apps/web/src/lib/search/access.test.ts
apps/web/src/lib/search/snippet.ts
apps/web/src/lib/search/PhotoGrid.svelte
apps/web/src/lib/search/links.ts
crates/calternal-embed/src/clip_model.rs
crates/calternal-embed/src/clip_store.rs
crates/calternal-embed/src/model.rs
crates/calternal-embed/src/lib.rs
crates/calternal-embed/src/chunk.rs
crates/calternal-embed/src/store.rs
crates/calternal-embed/Cargo.toml
apps/web/src/lib/search/SearchResultRow.svelte
apps/web/src/lib/search/access.svelte.ts
apps/web/src/lib/search/recent.ts
apps/web/src/lib/search/providers.test.ts
apps/web/src/lib/fonts.test.ts
apps/web/src/lib/files/sharing.svelte.ts
apps/web/src/lib/files/SharedByYou.svelte
apps/web/src/lib/files/UploadToast.svelte
apps/web/src/lib/files/TrashView.svelte
apps/web/src/lib/files/uploads.svelte.test.ts
apps/web/src/lib/files/FilesSidebar.svelte
apps/web/src/lib/files/prefs.svelte.test.ts
apps/web/src/lib/files/ShareDialog.svelte
apps/web/src/lib/files/RecentView.svelte
apps/web/src/lib/files/model.test.ts
apps/web/src/lib/files/prefs.svelte.ts
apps/web/src/lib/files/FilesBrowser.svelte
apps/web/src/lib/files/InfoPanel.svelte
apps/web/src/lib/files/PublicLinkPage.svelte
apps/web/src/lib/files/model.ts
apps/web/src/lib/files/viewer.ts
apps/web/src/lib/files/uploadToast.ts
apps/web/src/lib/files/selection.test.ts
apps/web/src/lib/files/api.ts
crates/calternal-notes-core/tests/unicode_titles.rs
crates/calternal-notes-core/tests/log_rewrite.rs
crates/calternal-notes-core/tests/parser_properties.rs
crates/calternal-notes-core/tests/vector_parity.rs
apps/web/src/lib/files/transfer.ts
apps/web/src/lib/files/uploads.svelte.ts
apps/web/src/lib/files/selection.ts
apps/web/src/lib/files/live.ts
apps/web/src/lib/files/UploadToast.svelte.test.ts
apps/web/src/lib/files/api.test.ts
apps/web/src/lib/files/FileCollection.svelte.test.ts
apps/web/src/lib/themes.test.ts
crates/calternal-notes-core/tests/fixtures/saved-dayfile-crash.txt
crates/calternal-notes-core/tests/fixtures/daily-note-2026-05-05.md
crates/calternal-notes-core/tests/fixtures/frontmatter-cases.json
apps/web/src/lib/shortcuts/match.ts
apps/web/src/lib/shortcuts/format.ts
apps/web/src/lib/shortcuts/registry.test.ts
apps/web/src/lib/shortcuts/registry.ts
apps/web/src/lib/sheetSnap.test.ts
crates/calternal-notes-core/tests/vectors/links.json
crates/calternal-notes-core/tests/vectors/notes_index.json
crates/calternal-notes-core/tests/vectors/reminders.json
crates/calternal-notes-core/tests/vectors/frontmatter.json
crates/calternal-notes-core/tests/vectors/composer_helpers.json
crates/calternal-notes-core/tests/vectors/identity.json
crates/calternal-notes-core/tests/vectors/dayfile.json
crates/calternal-notes-core/tests/vectors/notes.json
crates/calternal-notes-core/tests/vectors/markdown.json
crates/calternal-notes-core/tests/vectors/composer.json
crates/calternal-notes-core/tests/vectors/composer_nlp.json
crates/calternal-notes-core/tests/unicode_titles.proptest-regressions
crates/calternal-notes-core/PARITY.md
apps/web/src/lib/assets/favicon.svg
apps/web/src/lib/backgroundGroup.svelte.test.ts
apps/web/src/lib/stores/settings-store.test.ts
apps/web/src/lib/stores/settings-store.ts
apps/web/src/lib/stores/toasts.svelte.ts
crates/calternal-notes-core/src/notes_index.rs
apps/web/src/lib/navigation/modePreload.ts
apps/web/src/lib/navigation/clientRouteStatus.svelte.ts
apps/web/src/lib/relativeTime.test.ts
apps/web/src/lib/tray.svelte.test.ts
crates/calternal-notes-core/src/tasks/model.rs
crates/calternal-notes-core/src/tasks/status.rs
crates/calternal-notes-core/src/tasks/build.rs
crates/calternal-notes-core/src/tasks/frontmatter.rs
crates/calternal-notes-core/src/tasks/line.rs
crates/calternal-notes-core/src/tasks/extract.rs
crates/calternal-notes-core/src/tasks/mod.rs
crates/calternal-notes-core/src/composer.rs
crates/calternal-notes-core/src/links.rs
crates/calternal-notes-core/src/model.rs
crates/calternal-notes-core/src/markdown.rs
apps/web/src/lib/components/FieldPopover.svelte.test.ts
apps/web/src/lib/components/tagTree.ts
apps/web/src/lib/components/ThemePicker.svelte.test.ts
apps/web/src/lib/components/Select.svelte.test.ts
apps/web/src/lib/components/empty-state.svelte
apps/web/src/lib/components/SelectionBar.svelte.test.ts
apps/web/src/lib/components/app-sidebar.svelte
apps/web/src/lib/components/KeyboardShortcutsCard.svelte.test.ts
apps/web/src/lib/components/ConfirmSheet.svelte
apps/web/src/lib/overlay/scrollLock.ts
apps/web/src/lib/overlay/state.svelte.ts
apps/web/src/lib/overlay/scrim.ts
apps/web/src/lib/overlay/leaveRoute.ts
apps/web/src/lib/overlay/transientDismiss.ts
crates/calternal-notes-core/src/nlp/area.rs
crates/calternal-notes-core/src/nlp/task_types.rs
crates/calternal-notes-core/src/nlp/runs.rs
crates/calternal-notes-core/src/nlp/tasks_sigils.rs
crates/calternal-notes-core/src/nlp/tags.rs
crates/calternal-notes-core/src/nlp/time.rs
crates/calternal-notes-core/src/nlp/classifier.rs
crates/calternal-notes-core/src/nlp/tests.rs
crates/calternal-notes-core/src/nlp/dates.rs
crates/calternal-notes-core/src/nlp/anchors.rs
crates/calternal-notes-core/src/nlp/tasks.rs
crates/calternal-notes-core/src/nlp/civil.rs
crates/calternal-notes-core/src/nlp/recognizers.rs
crates/calternal-notes-core/src/nlp/tasks_recurrence_md.rs
crates/calternal-notes-core/src/nlp/mod.rs
crates/calternal-notes-core/src/nlp/tokenizer.rs
crates/calternal-notes-core/src/dayfile.rs
crates/calternal-notes-core/src/lib.rs
crates/calternal-notes-core/src/templates.rs
crates/calternal-notes-core/src/reminders.rs
crates/calternal-notes-core/src/identity.rs
crates/calternal-notes-core/src/frontmatter.rs
crates/calternal-notes-core/src/attachments.rs
crates/calternal-notes-core/src/note_resolver.rs
crates/calternal-notes-core/src/notes.rs
crates/calternal-notes-core/src/rename.rs
crates/calternal-notes-core/Cargo.toml
apps/web/src/lib/styles/blockLift.css
apps/web/src/lib/styles/background.css
apps/web/src/lib/styles/font-weight-token.test.ts
apps/web/src/lib/styles/sidebar-weight.test.ts
apps/web/src/lib/styles/auth-ui.css
apps/web/src/lib/styles/sidebar.css
apps/web/src/lib/styles/scrim.css
apps/web/src/app.d.ts
apps/web/src/test-setup.ts
apps/web/src/service-worker.ts
apps/web/src/app.html
apps/web/src/calternal-app.css
crates/calternal-search/tests/retrieval.rs
crates/calternal-search/tests/operators.rs
crates/calternal-search/tests/relevance.rs
crates/calternal-search/tests/indexer.rs
crates/calternal-search/tests/citations.rs
crates/calternal-search/tests/ask_evaluation.rs
crates/calternal-search/tests/query_properties.rs
crates/calternal-search/tests/fixtures/relevance.v1.json
crates/calternal-search/migrations/0001_search.sql
crates/calternal-search/migrations/0003_hidden_activity.sql
crates/calternal-search/migrations/0002_search_frecency.sql
apps/web/src/lib/components/analytics/DistributionCard.svelte
apps/web/src/lib/components/analytics/BklitTooltipMaterial.test.ts
apps/web/src/lib/components/analytics/BklitAnalytics.test.ts
apps/web/src/lib/components/analytics/widgets/StatRow.svelte.test.ts
apps/web/src/lib/components/analytics/widgets/StatRow.svelte
apps/web/src/lib/components/analytics/BklitKeyboardMarks.test.ts
apps/web/src/lib/components/analytics/PieSlice.svelte.test.ts
crates/calternal-search/src/retrieval.rs
apps/web/src/lib/components/analytics/BklitAnalytics.tsx
apps/web/src/lib/components/analytics/Dashboard.svelte
apps/web/src/lib/components/analytics/RangeBar.svelte
crates/calternal-search/src/operators.rs
apps/web/src/lib/components/analytics/ActivityCard.svelte
crates/calternal-search/src/saved.rs
apps/web/src/lib/components/analytics/BklitAnalyticsBarMarks.tsx
crates/calternal-search/src/indexer.rs
apps/web/src/lib/components/analytics/RangeBar.svelte.test.ts
crates/calternal-search/src/plugin.rs
apps/web/src/lib/components/analytics/CalendarHeatmap.svelte
crates/calternal-search/src/query.rs
apps/web/src/lib/components/analytics/BklitAnalyticsHeatmapMarks.tsx
crates/calternal-search/src/pdf.rs
crates/calternal-search/src/index.rs
crates/calternal-search/src/lib.rs
crates/calternal-search/src/semantic.rs
crates/calternal-search/Cargo.toml
crates/calternal-cli/login_campaign.py
crates/calternal-cli/tests/output_contract.rs
crates/calternal-cli/README.md
crates/calternal-cli/src/login.rs
crates/calternal-cli/src/main.rs
crates/calternal-cli/src/remote_commands.rs
crates/calternal-cli/Cargo.toml
apps/web/src/lib/components/analytics/vendor/bklit/lib/utils.ts
apps/web/src/lib/components/analytics/vendor/bklit/README.md
apps/web/src/lib/components/analytics/vendor/bklit/components/shimmering-text.tsx
apps/web/src/routes/+layout.svelte
apps/web/src/routes/s/[slug]/+page.svelte
apps/web/src/routes/+page.ts
crates/plugins/calendar/tests/cache.rs
crates/plugins/calendar/tests/protocol.rs
apps/web/src/routes/reenrol/+page.svelte
crates/plugins/calendar/migrations/0003_event_tags.sql
crates/plugins/calendar/migrations/0002_event_range_bounds.sql
crates/plugins/calendar/migrations/0001_calendar.sql
crates/plugins/calendar/src/recurrence.rs
crates/plugins/calendar/src/routes.rs
crates/plugins/calendar/src/search.rs
crates/plugins/calendar/src/view.rs
crates/plugins/calendar/src/lib.rs
crates/plugins/calendar/src/cache/crypto.rs
crates/plugins/calendar/src/cache/store.rs
crates/plugins/calendar/src/cache/mod.rs
crates/plugins/calendar/src/items.rs
apps/web/src/routes/tag/[tag]/+page.svelte
crates/plugins/calendar/src/client/xml.rs
crates/plugins/calendar/src/client/mod.rs
crates/plugins/calendar/Cargo.toml
apps/web/src/routes/e/[id]/+page.svelte
apps/web/src/routes/t/[id]/+page.svelte
apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-indicator.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-box.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-dot.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/chart-tooltip.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/date-ticker.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-content.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-child-passthrough.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-formatters.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/line-loading-timing.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-x-axis.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-phase.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-depth-geometry.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/grid.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/pie-slice.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/motion-utils.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-chart.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/pie-chart.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-squares-layout.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-scale.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-defs.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-loading-label.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/bar.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-context.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/use-enter-complete.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/y-axis-scales.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/band-invert.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/band-invert.test.ts
crates/plugins/photos/tests/fixtures/clip/cat-window.webp
apps/web/src/routes/shared/+page.svelte
apps/web/src/lib/components/analytics/vendor/bklit/charts/reference-area-config.ts
crates/plugins/photos/tests/fixtures/clip/generate_cc0.py
apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-y-axis.tsx
crates/plugins/photos/tests/fixtures/clip/README.md
apps/web/src/lib/components/analytics/vendor/bklit/charts/animation.ts
crates/plugins/photos/tests/fixtures/clip/mountain-lake.webp
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-config-context.tsx
crates/plugins/photos/tests/fixtures/clip/dog-beach.webp
apps/web/src/lib/components/analytics/vendor/bklit/charts/use-scheduled-tooltip.ts
crates/plugins/photos/tests/fixtures/clip/sunset-water.webp
apps/web/src/lib/components/analytics/vendor/bklit/charts/pattern-preset.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/loading-sweep.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/visx-pattern.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/use-mount-progress.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/y-domain-utils.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/indicator-fade.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-legend-hover.tsx
apps/web/src/routes/calendar/+page.ts
crates/plugins/photos/data/README.md
crates/plugins/photos/data/geonames-cities5000.tsv
apps/web/src/routes/calendar/[view]/+page.ts
crates/plugins/photos/migrations/0004_incremental_refresh.sql
crates/plugins/photos/migrations/0006_hidden_activity.sql
crates/plugins/photos/migrations/0005_calendar_capture_index.sql
crates/plugins/photos/migrations/0002_photo_search_metadata.sql
crates/plugins/photos/migrations/0003_photo_dimensions.sql
crates/plugins/photos/migrations/0001_photos.sql
apps/web/src/routes/calendar/[view]/[date]/+page.ts
apps/web/src/routes/calendar/[view]/[date]/+page.svelte
apps/web/src/routes/+layout.ts
crates/plugins/photos/src/routes.rs
crates/plugins/photos/src/search.rs
crates/plugins/photos/src/settings.rs
crates/plugins/photos/src/migration_tests.rs
crates/plugins/photos/src/index.rs
crates/plugins/photos/src/geonames.rs
crates/plugins/photos/src/lib.rs
crates/plugins/photos/src/pairing.rs
crates/plugins/photos/src/pairing_impl.rs
crates/plugins/photos/src/details.rs
crates/plugins/photos/src/settings_tests.rs
crates/plugins/photos/Cargo.toml
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-legend.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-separator.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-colors.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-context.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-resolve-separator.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-x-axis.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-pattern-defs.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-legend-swatch.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-chart.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-animation.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-tooltip.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-utils.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/use-delayed-tooltip-data.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-legend-gradient.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-y-axis.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-cells.tsx
apps/web/src/lib/components/analytics/vendor/bklit/charts/use-grid-shimmer.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/use-chart-interaction.ts
apps/web/src/lib/components/analytics/vendor/bklit/charts/pie-context.tsx
apps/web/src/lib/components/analytics/vendor/bklit/BKLIT-MIT-LICENSE.txt
apps/web/src/lib/components/analytics/AnalyticsSidebar.svelte
apps/web/src/lib/components/analytics/HabitsCard.svelte
apps/web/src/lib/components/analytics/BklitChart.svelte
apps/web/src/lib/components/analytics/RangePicker.svelte
apps/web/src/lib/components/analytics/ActivityCard.svelte.test.ts
apps/web/src/lib/components/analytics/TimeOfDayHeatmap.svelte
apps/web/src/lib/components/analytics/StackedBarCard.svelte
apps/web/src/lib/components/analytics/formatTrackedMinutes.ts
apps/web/src/lib/components/analytics/BklitKeyboardMarks.tsx
apps/web/src/routes/tags/[tag]/+page.ts
apps/web/src/routes/tags/+page.svelte
apps/web/src/lib/components/TagEditor.svelte
apps/web/src/lib/components/AppToaster.svelte
apps/web/src/lib/components/OverlaySurface.svelte.test.ts
apps/web/src/lib/components/LinkResolveState.svelte
apps/web/src/lib/components/NoteList.svelte
apps/web/src/lib/components/SidebarLinks.svelte
apps/web/src/lib/components/KeyboardShortcutsCard.svelte
apps/web/src/lib/components/ToastBody.svelte
apps/web/src/lib/components/SidebarSectionHeader.svelte.test.ts
apps/web/src/lib/components/tagTree.test.ts
apps/web/src/lib/components/ServiceState.svelte
apps/web/src/lib/components/search-dialog.svelte
apps/web/src/routes/journal/+page.svelte
apps/web/src/routes/journal/JournalPage.svelte.test.ts
crates/plugins/ai/migrations/0004_ask_turns.sql
crates/plugins/ai/migrations/0001_ai_credentials.sql
crates/plugins/ai/migrations/0002_ai_turns.sql
crates/plugins/ai/migrations/0003_ai_turn_prompts.sql
apps/web/src/routes/[...path]/+page.svelte
crates/plugins/ai/src/runtime.rs
crates/plugins/ai/src/routes.rs
crates/plugins/ai/src/lib.rs
crates/plugins/ai/src/crypto.rs
crates/plugins/ai/src/turns.rs
crates/plugins/ai/src/store.rs
crates/plugins/ai/Cargo.toml
apps/web/src/routes/login/+page.svelte
crates/plugins/analytics/migrations/0002_hidden_activity.sql
crates/plugins/analytics/migrations/0001_analytics.sql
apps/web/src/lib/notes/collab.ts
apps/web/src/lib/notes/mentions.ts
apps/web/src/lib/notes/icons.ts
apps/web/src/lib/notes/NoteView.svelte
apps/web/src/lib/notes/wikilinks.ts
apps/web/src/lib/notes/NotesExplorer.svelte
apps/web/src/lib/notes/collaborationUndo.svelte.test.ts
apps/web/src/lib/notes/NoteEditorSurface.svelte
apps/web/src/lib/notes/anchors.svelte.test.ts
apps/web/src/lib/notes/api.ts
apps/web/src/lib/notes/noteIndex.svelte.ts
apps/web/src/lib/notes/editorHost.ts
apps/web/src/lib/notes/headingLinks.ts
apps/web/src/lib/notes/anchors.ts
apps/web/src/lib/notes/collab.test.ts
crates/plugins/analytics/src/routes.rs
apps/web/src/lib/notes/NoteImageView.svelte
apps/web/src/lib/notes/notes.test.ts
crates/plugins/analytics/src/period.rs
crates/plugins/analytics/src/tests.rs
crates/plugins/analytics/src/lib.rs
crates/plugins/analytics/src/compute.rs
crates/plugins/analytics/src/cache.rs
crates/plugins/analytics/Cargo.toml
apps/web/src/routes/ai/turns/[id]/+page.svelte
apps/web/src/routes/signup/+page.svelte
apps/web/src/lib/notes/editor-types/anchor.d.ts
apps/web/src/lib/notes/editor-types/syntaxHighlight.d.ts
apps/web/src/lib/notes/editor-types/imagePipe.d.ts
apps/web/src/lib/notes/editor-types/index.d.ts
apps/web/src/lib/notes/editor-types/image.d.ts
apps/web/src/lib/notes/paths.ts
apps/web/src/lib/notes/retitle.ts
apps/web/src/lib/notes/anchors.test.ts
apps/web/src/lib/index.ts
apps/web/src/lib/fonts.ts
apps/web/src/routes/analytics/+page.ts
crates/plugins/mail/vendor/async-imap/LICENSE-APACHE
crates/plugins/mail/vendor/async-imap/README.md
crates/plugins/mail/vendor/async-imap/LICENSE-MIT
crates/plugins/mail/vendor/async-imap/CODEX_PATCHES.md
apps/web/src/lib/actions/magnetic.ts
apps/web/src/routes/analytics/[period]/+page.ts
apps/web/src/lib/actions/pillFeedback.test.ts
apps/web/src/lib/actions/magnetic.test.ts
apps/web/src/lib/actions/pillFeedback.ts
apps/web/src/lib/actions/rovingToolbar.ts
apps/web/src/lib/actions/longPressMenu.ts
apps/web/src/lib/actions/measuredCapsule.svelte.ts
apps/web/src/lib/actions/edgeResize.ts
crates/plugins/mail/vendor/async-imap/src/parse.rs
crates/plugins/mail/vendor/async-imap/src/imap_stream.rs
apps/web/src/routes/analytics/[period]/[date]/+page.ts
apps/web/src/routes/analytics/[period]/[date]/+page.svelte
crates/plugins/mail/vendor/async-imap/src/extensions/idle.rs
crates/plugins/mail/vendor/async-imap/src/extensions/quota.rs
crates/plugins/mail/vendor/async-imap/src/extensions/id.rs
crates/plugins/mail/vendor/async-imap/src/extensions/compress.rs
crates/plugins/mail/vendor/async-imap/src/extensions/mod.rs
crates/plugins/mail/vendor/async-imap/src/client.rs
crates/plugins/mail/vendor/async-imap/src/lib.rs
crates/plugins/mail/vendor/async-imap/src/error.rs
crates/plugins/mail/vendor/async-imap/src/authenticator.rs
crates/plugins/mail/vendor/async-imap/src/mock_stream.rs
apps/web/src/routes/notifications/+page.svelte
apps/web/src/routes/+error.svelte
apps/web/src/routes/ask/+page.svelte
apps/web/src/lib/vendor/svelte-dnd-action/index.mjs
apps/web/src/lib/vendor/svelte-dnd-action/README.md
apps/web/src/lib/vendor/svelte-dnd-action/index.d.ts
apps/web/src/lib/vendor/svelte-dnd-action/index.js
apps/web/src/lib/vendor/svelte-dnd-action/LICENSE
apps/web/src/lib/capsule-motion.test.ts
apps/web/src/lib/search/registry.ts
apps/web/src/lib/search/SearchField.svelte
apps/web/src/lib/search/kinds.ts
apps/web/src/lib/search/search-units.test.ts
apps/web/src/lib/search/query.ts
apps/web/src/lib/search/window.svelte.ts
apps/web/src/lib/search/justify.ts
apps/web/src/lib/search/snippet.test.ts
apps/web/src/lib/search/SearchResultRow.svelte.test.ts
apps/web/src/lib/search/saved.svelte.ts
apps/web/src/lib/search/links.test.ts
apps/web/src/lib/search/SavedSearchList.svelte
crates/plugins/mail/vendor/async-imap/src/types/name.rs
crates/plugins/mail/vendor/async-imap/src/types/id_generator.rs
crates/plugins/mail/vendor/async-imap/src/types/capabilities.rs
crates/plugins/mail/vendor/async-imap/src/types/mailbox.rs
crates/plugins/mail/vendor/async-imap/src/types/quota.rs
crates/plugins/mail/vendor/async-imap/src/types/response_data.rs
crates/plugins/mail/vendor/async-imap/src/types/request.rs
crates/plugins/mail/vendor/async-imap/src/types/fetch.rs
crates/plugins/mail/vendor/async-imap/src/types/mod.rs
crates/plugins/mail/vendor/async-imap/Cargo.toml
crates/plugins/mail/migrations/0002_provider_identities.sql
crates/plugins/mail/migrations/0001_mail.sql
apps/web/src/routes/n/[id]/+page.svelte
crates/calternal-db/tests/queue.rs
crates/plugins/mail/src/imap.rs
crates/plugins/mail/src/routes.rs
crates/plugins/mail/src/lib.rs
crates/plugins/mail/src/crypto.rs
apps/web/src/routes/admin/[...page]/+page.ts
crates/plugins/mail/src/cache/store.rs
crates/plugins/mail/src/cache.rs
crates/plugins/mail/src/sync.rs
crates/plugins/mail/Cargo.toml
crates/calternal-db/src/db.rs
crates/calternal-db/src/migrations.rs
crates/calternal-db/src/cron.rs
crates/calternal-db/src/worker.rs
crates/calternal-db/src/secrets.rs
crates/calternal-db/src/snapshot.rs
crates/calternal-db/src/lib.rs
crates/calternal-db/src/jobs.rs
crates/calternal-db/src/error.rs
apps/web/src/routes/search/+page.svelte
crates/plugins/notifications/migrations/0003_block_reminders.sql
crates/plugins/notifications/migrations/0001_notifications.sql
crates/plugins/notifications/migrations/0004_hidden_activity.sql
crates/plugins/notifications/migrations/0002_unread_index.sql
crates/calternal-db/src/migrations/0005_job_execution_state.sql
crates/calternal-db/src/migrations/0004_job_kind_controls.sql
crates/calternal-db/src/migrations/0001_jobs.sql
crates/calternal-db/src/migrations/0003_job_kinds.sql
crates/calternal-db/src/migrations/0002_instance_secrets.sql
crates/calternal-db/src/migrations/0006_job_kind_descriptions.sql
crates/calternal-db/src/sqlite.rs
crates/calternal-db/src/storage.rs
apps/web/src/routes/search/saved/[id]/+page.svelte
crates/calternal-db/Cargo.toml
apps/web/src/routes/+page.svelte
crates/plugins/notifications/src/block_reminders.rs
crates/plugins/notifications/src/routes.rs
crates/plugins/notifications/src/lib.rs
crates/plugins/notifications/src/reminders.rs
crates/plugins/notifications/src/push.rs
crates/plugins/notifications/src/store.rs
crates/plugins/notifications/src/endpoint.rs
crates/plugins/notifications/Cargo.toml
crates/calternal-tags/migrations/0005_tags.sql
crates/calternal-tags/migrations/0006_tag_path_assignments.sql
crates/plugins/video/migrations/0001_video.sql
apps/web/src/routes/notes/convert/+page.svelte
apps/web/src/routes/notes/+page.svelte
crates/calternal-tags/src/index.rs
crates/calternal-tags/src/lib.rs
crates/calternal-tags/src/source.rs
crates/calternal-tags/src/rename.rs
crates/calternal-tags/Cargo.toml
crates/plugins/video/src/routes.rs
crates/plugins/video/src/lib.rs
crates/plugins/video/src/transcode.rs
crates/plugins/video/Cargo.toml
apps/web/src/routes/notes/[id]/+page.svelte
crates/plugins/notes/README.md
crates/plugins/notes/benches/task_create_http.py
crates/plugins/notes/benches/README.md
apps/web/src/routes/d/[date]/+page.svelte
crates/calternal-dav/tests/apple_replay.rs
apps/web/src/routes/today/+page.ts
apps/web/src/routes/setup/+page.svelte
crates/calternal-dav/tests/fixtures/macos27/proppatch-calendar-properties.xml
crates/calternal-dav/tests/fixtures/macos27/proppatch-calendar-color.xml
crates/calternal-dav/tests/fixtures/macos27/put-new-event.ics
crates/calternal-dav/tests/fixtures/macos27/put-new-reminder.ics
crates/calternal-dav/tests/fixtures/macos27/proppatch-reminders-properties.xml
crates/calternal-dav/tests/fixtures/macos27/put-complete-reminder.ics
crates/plugins/notes/migrations/0016_daily_note_navigation.sql
crates/plugins/notes/migrations/0017_daily_note_navigation_per_user.sql
crates/plugins/notes/migrations/0002_dav_moves.sql
crates/calternal-dav/README.md
crates/plugins/notes/migrations/0015_link_source_body_line.sql
crates/plugins/notes/migrations/0014_wikilink_conversion_jobs.sql
crates/plugins/notes/migrations/0008_bookmark_capture_projection.sql
crates/plugins/notes/migrations/0009_bookmark_search.sql
crates/plugins/notes/migrations/0006_journal_block_lookup.sql
crates/plugins/notes/migrations/0012_block_reminders.sql
crates/plugins/notes/migrations/0001_notes.sql
crates/plugins/notes/migrations/0011_note_collab_state.sql
crates/plugins/notes/migrations/0005_journal_changes.sql
crates/plugins/notes/migrations/0010_task_identity.sql
crates/plugins/notes/migrations/0013_link_health_index.sql
crates/plugins/notes/migrations/0007_reminder_changes.sql
crates/plugins/notes/migrations/0003_tasks.sql
crates/plugins/notes/migrations/0004_calendar_projection.sql
apps/web/src/routes/recover/+page.svelte
crates/calternal-dav/src/lib.rs
crates/calternal-dav/src/reminders.rs
crates/calternal-dav/src/files.rs
crates/calternal-dav/src/protocol.rs
crates/calternal-dav/Cargo.toml
crates/plugins/notes/src/calendar_links.rs
crates/plugins/notes/src/bookmarks.rs
crates/calternal-server/build.rs
crates/plugins/notes/src/tests/unicode_titles.rs
crates/plugins/notes/src/tasks_store.rs
crates/plugins/notes/src/lib.rs
crates/plugins/notes/src/store.rs
crates/plugins/notes/src/wikilinks.rs
crates/plugins/notes/src/composer_api.rs
crates/plugins/notes/src/reminders_api.rs
crates/plugins/notes/src/tasks_api.rs
crates/plugins/notes/src/tasks_dav.rs
crates/plugins/notes/Cargo.toml
apps/web/src/routes/files/trash/+page.svelte
apps/web/src/routes/files/+page.svelte
crates/plugins/files/kill_stress.py
crates/calternal-server/src/wire.rs
crates/calternal-server/src/head.rs
crates/calternal-server/src/appearance.rs
crates/calternal-server/src/security.rs
crates/calternal-server/src/main.rs
crates/calternal-server/src/serve.rs
crates/calternal-server/src/authz.rs
crates/calternal-server/src/system_plugin.rs
crates/calternal-server/src/mcp.rs
crates/calternal-server/Cargo.toml
crates/plugins/files/tests/black.jpg
apps/web/src/routes/files/recent/+page.svelte
apps/web/src/routes/(photos)/+layout.svelte
crates/plugins/files/tests/fixtures/media/tiny.png
crates/plugins/files/tests/fixtures/media/source-generated.avif
crates/plugins/files/tests/fixtures/media/README.md
crates/plugins/files/tests/fixtures/media/source-generated.mp4
crates/plugins/files/tests/fixtures/media/LICENSE.libheif-example
crates/plugins/files/tests/fixtures/media/source-example.heic
crates/plugins/files/DATA-SAFETY.md
apps/web/src/routes/(photos)/p/[id]/+page.svelte
crates/plugins/files/migrations/0012_public_edit_history.sql
crates/plugins/files/migrations/0008_upload_source_metadata.sql
crates/plugins/files/migrations/0010_folder_reconcile.sql
crates/plugins/files/migrations/0005_upload_install.sql
crates/plugins/files/migrations/0014_internal_temporary_paths.sql
crates/plugins/files/migrations/0001_files.sql
crates/plugins/files/migrations/0009_listing_indexes.sql
crates/plugins/files/migrations/0007_calendar_range.sql
crates/plugins/files/migrations/0004_upload_preconditions.sql
crates/plugins/files/migrations/0006_change_feed.sql
crates/plugins/files/migrations/0011_upload_idle_lease.sql
crates/plugins/files/migrations/0013_public_edit_sessions.sql
crates/plugins/files/migrations/0015_user_scoped_cursors.sql
crates/plugins/files/migrations/0003_identity.sql
crates/plugins/files/migrations/0002_password_ip.sql
crates/calternal-collab/tests/shared_notes.mjs
crates/calternal-collab/tests/two_clients.mjs
crates/calternal-collab/tests/vector_bridge.rs
crates/calternal-collab/tests/wiki_embeds.rs
crates/calternal-collab/tests/agent_turn_order.rs
crates/calternal-collab/tests/hostile_clients.rs
crates/calternal-collab/tests/untouched_bytes.rs
crates/calternal-collab/tests/block_apply_property.rs
crates/calternal-collab/tests/shared_notes.rs
crates/calternal-collab/tests/restart_epoch.rs
crates/calternal-collab/tests/two_clients.rs
crates/calternal-collab/tests/journal_race.rs
crates/calternal-collab/tests/cross_language.mjs
crates/calternal-collab/tests/cross_language.rs
crates/calternal-collab/README.md
apps/web/src/routes/(photos)/photos/[...rest]/+page.svelte
crates/plugins/files/src/agent_undo.rs
crates/plugins/files/src/lookup.rs
crates/plugins/files/src/media.rs
crates/plugins/files/src/public.rs
crates/calternal-collab/src/session.rs
crates/calternal-collab/src/markdown.rs
crates/calternal-collab/src/lib.rs
crates/calternal-collab/src/stored.rs
crates/calternal-collab/src/repeats.rs
crates/calternal-collab/Cargo.toml
crates/plugins/files/src/tests/hidden_entries.rs
crates/plugins/files/src/index.rs
crates/plugins/files/src/dav.rs
crates/plugins/files/src/lib.rs
crates/plugins/files/src/listing.rs
crates/plugins/files/src/thumbnails.rs
crates/plugins/files/src/uploads.rs
crates/plugins/files/src/user_bytes.rs
crates/plugins/files/src/shares.rs
crates/plugins/files/src/pins.rs
crates/plugins/files/src/archive.rs
crates/plugins/files/Cargo.toml
apps/web/src/routes/invite/[token]/+page.svelte
crates/plugins/files/proptest-regressions/lib.txt
apps/web/src/routes/f/[id]/+page.svelte
apps/web/src/routes/layout.css
crates/calternal-plugin/migrations/0001_plugin_state.sql
crates/calternal-plugin/src/user_settings.rs
crates/calternal-plugin/src/zone.rs
crates/calternal-plugin/src/state.rs
crates/calternal-plugin/src/lib.rs
crates/calternal-plugin/Cargo.toml
crates/calternal-sync/root_identity_campaign.py
crates/calternal-sync/root_guard_campaign.py
crates/calternal-sync/local_failure_campaign.py
crates/calternal-sync/changing_file_campaign.py
crates/calternal-sync/download_race_campaign.py
crates/calternal-sync/pending_rename_campaign.py
crates/calternal-sync/run_campaigns.py
crates/calternal-sync/sync_bench.py
crates/calternal-sync/random_campaign.py
crates/calternal-sync/integration_campaign.py
crates/calternal-sync/mass_deletion_campaign.py
crates/calternal-sync/mid_transfer_campaign.py
crates/calternal-sync/type_flip_campaign.py
crates/calternal-api/src/lib.rs
crates/calternal-api/Cargo.toml
crates/calternal-sync/src/credentials.rs
crates/calternal-sync/src/bin/calternald.rs
crates/calternal-sync/src/transfer.rs
crates/calternal-sync/src/journal.rs
crates/calternal-sync/src/local.rs
crates/calternal-sync/src/remote.rs
crates/calternal-sync/src/lib.rs
crates/calternal-sync/src/finder_tags.rs
crates/calternal-sync/src/plan.rs
crates/calternal-sync/src/config.rs
crates/calternal-sync/src/engine.rs
crates/calternal-sync/Cargo.toml
crates/calternal-sync/workload_campaign.py
crates/calternal-sync/feed_delta_campaign.py
crates/calternal-sync/feed_rescan_campaign.py
apps/web/src/routes/settings/appearance/BackgroundGroup.svelte
apps/web/src/routes/settings/appearance/ColourPickerButton.svelte
apps/web/src/routes/settings/appearance/FontsGroup.svelte
apps/web/src/routes/settings/appearance/BackgroundPreview.svelte
apps/web/src/routes/settings/appearance/AppearanceSection.svelte
apps/web/src/routes/settings/appearance/UnsplashSheet.svelte
apps/web/src/routes/settings/parts/SettingsStack.svelte
apps/web/src/routes/settings/parts/settings-forms.css
apps/web/src/routes/settings/parts/GroupStatus.svelte
apps/web/src/routes/settings/parts/icons.ts
apps/web/src/routes/settings/parts/RowAction.svelte
apps/web/src/routes/settings/parts/AccountRow.svelte
apps/web/src/routes/settings/parts/AccountRow.svelte.test.ts
apps/web/src/routes/settings/parts/StateChip.svelte
apps/web/src/routes/settings/parts/SettingsGroup.svelte
apps/web/src/routes/settings/parts/SettingsGroup.svelte.test.ts
apps/web/src/routes/settings/parts/AccountList.svelte
apps/web/src/routes/settings/sections.test.ts
apps/web/src/hooks.client.ts
package.json
README.md
apps/web/src/routes/settings/plugins/PluginsSection.svelte
crates/calternal-auth/Cargo.lock
apps/web/src/routes/settings/notifications/NotificationsSection.svelte
crates/calternal-auth/migrations/0008_app_password_scopes.sql
crates/calternal-auth/migrations/0004_app_passwords.sql
crates/calternal-auth/migrations/0006_transfer_destination.sql
crates/calternal-auth/migrations/0007_read_only_agent_scope.sql
crates/calternal-auth/migrations/0002_authority.sql
crates/calternal-auth/migrations/0005_user_deletion.sql
crates/calternal-auth/migrations/0003_recovery_key.sql
crates/calternal-auth/migrations/0001_auth.sql
crates/calternal-auth/migrations/0009_user_quotas.sql
apps/web/src/routes/settings/admin/UnsplashKeyGroup.svelte
apps/web/src/routes/settings/admin/BackupsGroup.svelte
apps/web/src/routes/settings/admin/InvitationsGroup.svelte
apps/web/src/routes/settings/admin/SystemGroup.svelte
apps/web/src/routes/settings/admin/JobsGroup.svelte
apps/web/src/routes/settings/admin/AdminSection.svelte
apps/web/src/routes/settings/admin/SignInGroup.svelte
apps/web/src/routes/settings/admin/QuotaLimitField.svelte
apps/web/src/routes/settings/admin/ConfigGroup.svelte
apps/web/src/routes/settings/admin/UsersGroup.svelte
apps/web/src/routes/settings/account/PasskeysGroup.svelte
apps/web/src/routes/settings/account/RecoveryGroup.svelte
apps/web/src/routes/settings/account/AppPasswordsGroup.svelte
apps/web/src/routes/settings/account/RecoveryKeySheet.svelte
apps/web/src/routes/settings/account/ProfileGroup.svelte
apps/web/src/routes/settings/account/StorageGroup.svelte
apps/web/src/routes/settings/account/SignInMethodsGroup.svelte
apps/web/src/routes/settings/account/AccountSection.svelte
apps/web/src/routes/settings/account/SessionsGroup.svelte
apps/web/src/routes/settings/calendars/CalendarsSection.svelte
apps/web/src/routes/settings/calendars/calendarAccounts.ts
apps/web/src/routes/settings/api.svelte.test.ts
apps/web/src/routes/settings/api.svelte.ts
crates/calternal-auth/src/passkey.rs
crates/calternal-auth/src/oidc.rs
crates/calternal-auth/src/recovery.rs
crates/calternal-auth/src/api.rs
apps/web/src/routes/settings/editor/EditorSection.svelte
apps/web/src/routes/settings/sections.ts
crates/calternal-auth/src/api/cli_login.rs
crates/calternal-auth/src/token.rs
crates/calternal-auth/src/lib.rs
crates/calternal-auth/src/error.rs
crates/calternal-auth/src/profile_signing.rs
crates/calternal-auth/src/store.rs
crates/calternal-auth/Cargo.toml
apps/web/src/routes/settings/jobs/JobRow.svelte
apps/web/src/routes/settings/ai/AiSection.svelte
apps/web/src/routes/settings/ai/TurnHistory.svelte
apps/web/src/routes/settings/jobs/JobDetails.svelte
apps/web/src/routes/settings/jobs/MyJobsGroup.svelte
apps/web/src/routes/settings/mail/MailSection.svelte.test.ts
apps/web/src/routes/settings/mail/MailSection.svelte
apps/web/src/routes/settings/[...path]/+page.svelte
bun.lock
Cargo.toml
CLAUDE.md
apps/web/src/routes/settings/photos/PhotosSection.svelte
LICENSE
crates/calternal-path/tests/path_properties.rs
crates/calternal-path/src/lib.rs
crates/calternal-path/Cargo.toml
packages/ui/THEMES.md
packages/ui/package.json
packages/ui/README.md
assets/brand/app-icon/light.png
assets/brand/app-icon/mono.png
assets/brand/app-icon/dark.png
Cargo.lock
deploy/media-sandbox-dropcaps.c
deploy/Containerfile.runtime
packages/editor/vitest.config.ts
packages/editor/tsconfig.json
packages/editor/UPSTREAM
packages/editor/package.json
packages/editor/README.md
packages/editor/svelte.config.js
deploy/agent/Containerfile
apps/web/src/lib/search/registry.test.ts
deploy/agent/install-agent-tool
deploy/agent/agent-turn.mjs
deploy/agent/agent-container-idle
deploy/cloud/README.md
deploy/cloud/calternal-cloud.container
deploy/cloud/calternal-cloud.env.example
deploy/media-sandbox
deploy/deploy-cloud.sh
deploy/nested-podman/Containerfile
deploy/nested-podman/run-outer.sh
deploy/nested-podman/inner-podman-service
deploy/nested-podman/runtime-entrypoint
deploy/nested-podman/smoke.sh
deploy/nested-podman/storage-native.conf
deploy/nested-podman/storage-fuse.conf
packages/api-client/package.json
packages/api-client/README.md
packages/api-client/check-generated.sh
deploy/sync/calternald.service.in
deploy/sync/org.calternal.calternald.plist.in
packages/editor/src/composerNoteSession.test.ts
packages/editor/src/collaborationHistoryKeys.ts
packages/editor/src/callout.ts
packages/api-client/src/generated.ts
packages/api-client/src/index.ts
packages/api-client/src/index.test.ts
packages/editor/src/blockSelectDecoration.ts
packages/editor/src/listIndent.test.ts
packages/editor/src/noteCards.test.ts
packages/editor/src/noteCards.ts
packages/editor/src/extensions.ts
packages/editor/src/moveBlock.ts
packages/editor/src/reducedMotion.svelte.ts
packages/editor/src/markdown.roundtrip.svelte.test.ts
packages/editor/test/setup.ts
packages/editor/test/random.ts
packages/editor/test/pmDocGen.ts
packages/editor/src/source.ts
packages/editor/src/Editor.svelte.test.ts
packages/editor/src/listIndent.ts
packages/editor/src/index.ts
packages/editor/src/anchor.test.ts
packages/editor/src/noteCardsDecoration.ts
packages/editor/src/markdown.ts
packages/editor/src/blockSelection.ts
packages/editor/src/wikilinkSyntax.ts
packages/editor/src/markdown.vectors.test.ts
packages/editor/src/syntaxHighlight.ts
packages/editor/src/shortcuts.ts
packages/editor/src/formatCommands.svelte.test.ts
packages/editor/src/extensions.dragHandle.test.ts
packages/editor/src/wikilinks.ts
packages/editor/src/collaborationUndo.test.ts
packages/editor/src/anchor.ts
packages/editor/src/blockHitTest.ts
packages/editor/src/blockHitTest.test.ts
packages/editor/src/attachmentPaste.ts
packages/editor/src/wikilinks.test.ts
packages/editor/src/slash.touch.svelte.test.ts
packages/editor/src/slash.test.ts
packages/editor/src/syntaxHighlight.test.ts
packages/editor/src/calloutLabel.ts
packages/editor/src/imagePipe.ts
packages/editor/src/chromeInteraction.svelte.ts
packages/editor/src/markdown.linemix.svelte.test.ts
packages/editor/src/slash.ts
packages/editor/src/image.ts
packages/editor/src/attachmentPaste.test.ts
packages/editor/src/markdown.test.ts
packages/editor/src/syntaxLanguages.ts
packages/editor/src/Editor.svelte
packages/editor/src/components/ImageView.svelte
packages/editor/src/components/CalloutView.svelte
packages/editor/src/formatCommands.ts
packages/editor/src/linkCommand.ts
packages/editor/src/composerNoteSession.ts
packages/ui/src/clipboard.ts
packages/ui/src/timezone-cities.ts
packages/ui/src/floating.ts
packages/ui/src/motion.ts
packages/ui/src/themes.css
packages/ui/src/themes.ts
packages/ui/src/solar.ts
packages/ui/src/weekStart.ts
packages/ui/src/components/PopoverSurface.svelte
packages/ui/src/components/tooltip/tip.ts
packages/ui/src/components/tooltip/place.ts
packages/ui/src/components/tooltip/TooltipLayer.svelte
packages/ui/src/components/tooltip/warmth.ts
packages/ui/src/components/FloatingSidebar.svelte
packages/ui/src/components/SidebarSectionHeader.svelte
packages/ui/src/components/ProgressiveBlur.svelte
packages/ui/src/components/TagPill.svelte
packages/ui/src/components/WeekBlob.svelte
packages/ui/src/components/PrimaryPill.svelte
packages/ui/src/components/TodayButton.svelte
packages/ui/src/components/ChromeActions.svelte
packages/ui/src/components/Fab.svelte
packages/ui/src/components/NoticeBanner.svelte
packages/ui/src/components/tabOrder.ts
packages/ui/src/components/calendar/CalendarTools.svelte
packages/ui/src/components/calendar/ActivityStack.svelte
packages/ui/src/components/calendar/GridColumn.svelte
packages/ui/src/components/calendar/RepairList.svelte
packages/ui/src/components/calendar/YearHeatmap.svelte
packages/ui/src/components/calendar/CalendarTitle.svelte
packages/ui/src/components/calendar/attachments.ts
packages/ui/src/components/calendar/MonthGrid.svelte
packages/ui/src/components/calendar/TimeGrid.svelte
packages/ui/src/components/calendar/CalendarPopover.svelte
packages/ui/src/components/calendar/MiniMonth.svelte
packages/ui/src/components/calendar/model.ts
packages/ui/src/components/calendar/AttachmentDeck.svelte
packages/ui/src/components/calendar/LogEntryEditor.svelte
packages/ui/src/components/calendar/ItemPreview.svelte
packages/ui/src/components/calendar/zoom.ts
packages/ui/src/components/calendar/AgendaList.svelte
packages/ui/src/components/calendar/layout.ts
packages/ui/src/components/UIHeading.svelte
packages/ui/src/components/StatusPill.svelte
packages/ui/src/components/DateStrip.svelte
packages/ui/src/components/menu/types.ts
packages/ui/src/components/menu/FloatingSurface.svelte
packages/ui/src/components/menu/Menu.svelte
packages/ui/src/components/menu/MenuSeparator.svelte
packages/ui/src/components/menu/MenuItem.svelte
packages/ui/src/components/SelectionBar.svelte
packages/ui/src/components/Toggle.svelte
packages/ui/src/components/PillGroup.svelte
packages/ui/src/components/OverlaySurface.svelte
packages/ui/src/components/surfaceViewport.svelte.ts
packages/ui/src/components/CopyLink.svelte
packages/ui/src/components/notes/NoteMentionsCard.svelte
packages/ui/src/components/notes/NoteProperties.svelte
packages/ui/src/components/Card.svelte
packages/ui/src/components/Kbd.svelte
packages/ui/src/components/modeIsland.css
packages/ui/src/components/segmentScroll.ts
packages/ui/src/components/composer/FieldPopover.svelte
packages/ui/src/components/composer/modeGlyphs.ts
packages/ui/src/components/composer/ModePill.svelte
packages/ui/src/components/composer/DraftStack.svelte
packages/ui/src/components/composer/HighlightOverlay.svelte
packages/ui/src/components/Disclosure.svelte
packages/ui/src/components/viewer/ImageView.svelte
packages/ui/src/components/viewer/TextView.svelte
packages/ui/src/components/viewer/LiveMotion.svelte
packages/ui/src/components/viewer/VideoView.svelte
packages/ui/src/components/viewer/PdfView.svelte
packages/ui/src/components/viewer/QuickLook.svelte
packages/ui/src/components/ThemePicker.svelte
packages/ui/src/components/LinkedHeading.svelte
packages/ui/src/components/Pill.svelte
packages/ui/src/components/TabBar.svelte
packages/ui/src/index.ts
packages/ui/src/actions/resizableEdge.ts
packages/ui/src/actions/draggablePopover.ts
packages/ui/src/actions/portal.ts
packages/ui/src/tokens.css
packages/ui/src/time.ts
packages/ui/src/tags.ts
packages/ui/src/formatPreferences.svelte.ts
packages/ui/src/dateStrip.ts
packages/ui/src/components/SegmentedControl.svelte
packages/ui/src/components/SettingRow.svelte
packages/ui/src/components/ModeHeader.svelte
packages/ui/src/components/SidebarIcon.svelte
packages/ui/src/components/pageChrome.ts
packages/ui/src/components/Inspector.svelte
packages/ui/src/components/Select.svelte
packages/ui/src/components/files/FileIcon.svelte
packages/ui/src/components/files/FileCollection.svelte
packages/ui/src/components/files/FileThumb.svelte
packages/ui/src/components/files/FileName.svelte
packages/ui/src/components/files/FileSelectionCheckbox.svelte found only the web Timeline selection/AttachmentDeck implementation). I will reuse the existing ported AttachmentDeck mechanics and the screenshot layout details recorded in this issue.

Finding: the referenced checkout has no macOS app sources or Swift Timeline view (bench/compare.py bench/run.sh bench/embed-backends/scripts/build-cost.py bench/embed-backends/scripts/push-o2.py bench/embed-backends/scripts/run.py bench/embed-backends/scripts/validate_raw.py bench/embed-backends/scripts/summarize.py bench/embed-backends/scripts/build-time-arm64.sh bench/embed-backends/scripts/test_validate_raw.py bench/embed-backends/scripts/test_run.py bench/embed-backends/scripts/test_summarize.py bench/embed-backends/fetch-assets.sh bench/embed-backends/README.md bench/embed-backends/corpus/corpus.json bench/embed-backends/RESULTS.md bench/embed-backends/Cargo.lock bench/embed-backends/src/runtime.rs bench/embed-backends/src/bin/bench-candle.rs bench/embed-backends/src/bin/generate-corpus.rs bench/embed-backends/src/bin/bench-ort.rs bench/embed-backends/src/ort_backend.rs bench/embed-backends/src/lib.rs bench/embed-backends/src/candle_backend.rs bench/embed-backends/Cargo.toml bench/embed-backends/raw/x86-build.json bench/embed-backends/raw/x86-smoke.json bench/embed-backends/raw/x86-vm.json bench/embed-backends/raw/o2-arm64.json bench/test_record.py bench/record.py bench/test_compare.py CONTRIBUTING.md Containerfile scripts/changelog.sh scripts/fj scripts/app-icons/generate.mjs scripts/app-icons/contact-sheet.mjs NOTICE fuzz/run-fixed.sh fuzz/fuzz_targets/markdown.rs fuzz/fuzz_targets/tags.rs fuzz/fuzz_targets/tus_headers.rs fuzz/fuzz_targets/search_query.rs fuzz/fuzz_targets/dayfile.rs fuzz/fuzz_targets/share_inputs.rs fuzz/fuzz_targets/frontmatter.rs fuzz/fuzz_targets/icalendar.rs fuzz/fuzz_targets/path.rs fuzz/README.md fuzz/corpus/dayfile/daily-note.md fuzz/corpus/dayfile/midnight.md rust-toolchain.toml CONTEXT.md fuzz/corpus/search_query/operators fuzz/corpus/frontmatter/basic.md fuzz/corpus/frontmatter/crlf.md fuzz/corpus/tags/nested fuzz/corpus/tags/mixed fuzz/corpus/markdown/basic.md fuzz/corpus/markdown/blank-lines.md fuzz/corpus/markdown/structured.md fuzz/corpus/markdown/mixed-newline-blank-run spikes/money-format/test_money_format.py spikes/money-format/budget_math.py spikes/money-format/money_format.py spikes/money-format/examples/calternal-custom/2026-09.money spikes/money-format/examples/probe.hledger spikes/money-format/examples/hledger-layout/budget.journal spikes/money-format/examples/hledger-layout/main.journal spikes/money-format/examples/hledger-layout/2026-09.journal spikes/money-format/examples/hledger-layout/accounts.journal spikes/money-format/examples/hledger-superset/transactions/2026-09.journal spikes/money-format/examples/hledger-superset/budget.journal spikes/money-format/examples/hledger-superset/2026-09.combined.journal spikes/money-format/examples/hledger-superset/main.journal spikes/money-format/examples/hledger-superset/accounts.journal docs/deep-links.md docs/ai-runtime.md docs/cli-walkthrough.md docs/mcp.md docs/perf/baseline.json docs/perf/README.md docs/perf/2026-09-28.md fuzz/corpus/path/795779a3b0b6093249194ddb6ae732ac8988e557 fuzz/corpus/path/89d1d1acd0b51934b968c433edd8a8416348e9ab fuzz/corpus/path/30cd70452f98e2d7a9bcfb6da3786c65a11836ea fuzz/corpus/path/28f316370a03344a43003cad23c58d7eff61c845 fuzz/corpus/path/dbceac98ccc5a41509ec1cc24cc3ff781f18889d fuzz/corpus/path/4c9e518452c6635a58f8087c5a1d56721eff461c fuzz/corpus/path/dae94fe5f5b524155dab2db3260ba4a421bf3b58 fuzz/corpus/path/f506d3a762f1f8e895038be4b4c92563dcf49df6 fuzz/corpus/path/91ad759f8b53748ae266d6b60f392016aa103486 fuzz/corpus/path/3400f8ae1967950f625d69df7d08ff8c5dfaed49 fuzz/corpus/path/d1f3fc7f813231731a932d0551e3667af5fbd6f4 fuzz/corpus/path/1e6ad641cb0c630a5c7e0d730e405ebc13938716 fuzz/corpus/path/3c5f0d16c57c0833a3a603a4e9a2533a28b257c0 fuzz/corpus/path/d3278ae5e2dbfdcceead43bb9e2efa5b186093dd fuzz/corpus/path/ac1bbdb2057cd0b4feb053cb21444b6c2efbea08 fuzz/corpus/path/43b1815aa1f77e4b20f7930436a9330798e2321c fuzz/corpus/path/feb9c44d7b02c8c71321077c39b8880af5f6bbb4 fuzz/corpus/path/0d59bce9700caf636130d8a4d85ceffdf368afe2 fuzz/corpus/path/4d240661cf9ed076c329d7c1202c67f0fd1a3af0 fuzz/corpus/path/5f79856f974b56b9c126c11aa14445bb3dabc6f6 fuzz/corpus/path/bac1a68e7b947004ea4197627090bc7e870eab14 fuzz/corpus/path/e7333f7bd5066c2844a36d7e2c275b2177fc971b fuzz/corpus/path/4546be9b5a92e07b6a92161b55e973ad6d887fa3 fuzz/corpus/path/c7ec773d51b4b83e0e1792c69d1ad44a0af79e3d fuzz/corpus/path/866aa71b78284ad852052bb5f97aa294c0fbb17d fuzz/corpus/path/3a52ce780950d4d969792a2559cd519d7ee8c727 fuzz/corpus/path/785aaeb451deb60d317b77e8ce7bd61803a35a18 fuzz/corpus/path/53b0a4fd8a66fb38e8368ff10c5272ea2c22cf74 fuzz/corpus/path/01b08aed394dba26c237bc61dbd2cac884f09d6a fuzz/corpus/path/167f55ffca4f4f8d7b2c3640f609a055d6815376 fuzz/corpus/path/b68353512fa434ac7ef2706cefb3d9c980f5c47e fuzz/corpus/path/reserved fuzz/corpus/path/cbee55499f78858437b554a1459cd17bc1eef0de fuzz/corpus/path/961e9200433e3cee3f067b2d828afc5309b81b1a fuzz/corpus/path/b981468a60de26aa61f224c952e07c6c0cb2a5cb fuzz/corpus/path/12935abd658fa62310077d1b1319b580fd3023f5 fuzz/corpus/path/95441556ec100e89b59202c511d5b68e132ff1c6 fuzz/corpus/path/3e459be405f2868019e74cbea6a3179159bfe2c4 fuzz/corpus/path/787eff9c9780077937a0f3d5217acf41e37842d9 fuzz/corpus/path/964992fde30239af2636655e58d714e73d8b5050 fuzz/corpus/path/6cad660f8b59b11ece2938ce732da5a4a03c56d0 fuzz/corpus/path/e8279304eb7b79f041d2b3e352a6c9e61531bac4 fuzz/corpus/path/1c8081d1a61b7ae0cc5d419ee5a42c968ed1a6e2 fuzz/corpus/path/f1b373569349372deac13135b96ca10bd438dd92 fuzz/corpus/path/972643dd48123ef72362bc3377d43e720b7f0121 fuzz/corpus/path/7a81af3e591ac713f81ea1efe93dcf36157d8376 fuzz/corpus/path/bfb8dfaef1f670c6c5127d91535a46c7c3ccfffb fuzz/corpus/path/9824ee8c4843ec594abc516949110a847a98bcd8 fuzz/corpus/path/cf4e15f0c5f6c5e40d5502e8dda4bc6fa6082ce0 fuzz/corpus/path/1a16fc44e86aa6e6d6381182ac837931da817549 fuzz/corpus/path/b7ca91d65f563eea6f8b71f74f7e692bc24343ad fuzz/corpus/path/b6e0058d0a415e34d377418dedfcde58b5bcffa7 fuzz/corpus/path/71b74d818027dd4db6547ae7ff44b6b211e12823 fuzz/corpus/path/0692dcf0616c02fdf276b1b2b3b35b57c7337b5b fuzz/corpus/path/71fada1ffa90e58619d1fb6ca2c5360abcd2b3e2 fuzz/corpus/path/0347f1533cc1d1af9651b43992cba03c6a7ea063 fuzz/corpus/path/86c3bddf56c0b40c1e97ed9c58f2e8126fade4f5 fuzz/corpus/path/7777f37098caa29467cd7e5d301cabd4345cf832 fuzz/corpus/path/0ddc853d1c1830cd369645392b69eb7487c30a06 fuzz/corpus/path/79199a02bc2804d21e988f38f5a21e02360a86c8 fuzz/corpus/path/077af25b857130be76410c19295387b9f2bbdbeb fuzz/corpus/path/81c0082bee0e714f62aee1df07207661dde5ce82 fuzz/corpus/path/confusable fuzz/corpus/path/42099b4af021e53fd8fd4e056c2568d7c2e3ffa8 fuzz/corpus/path/84791ec4fb8649bf1d90f211b9ecf9fc5e9dfa45 fuzz/corpus/path/19499335e8df742225134797290b88ba433685bc fuzz/corpus/path/7b602a6e51990df6fa9226829a788df6373dfe6b fuzz/corpus/path/cebde7c181823c2e59571a9780b96b159331474f fuzz/corpus/path/581e293ce90e88be8a1ad2a22eb1641bb58a18b6 fuzz/corpus/path/2ea03615c22ac5dd15bcef6ef27f1bb0efd44bd9 fuzz/corpus/path/cd09c55f87137779f4f42fdf769a1efb04a988e1 fuzz/corpus/path/d9d13ff28e00464ba862e3621dcc00ee5e7e8e92 fuzz/corpus/path/d169248b947181ebe1054be2149e6cf406818741 fuzz/corpus/path/89fd30dac3adcc044ec6b63aca631724b7312af3 fuzz/corpus/path/cc22b9ec251023c1032ca97d510ee9a9d5285801 fuzz/corpus/path/1c2be434fc94d8d6ef42000a2c0d490bf3924333 fuzz/corpus/path/caa10fba5eb98e7e9765e09f4f81adca1c2ad553 fuzz/corpus/path/3fdf0c75d56de6161b28815e92223283378ec2ca fuzz/corpus/path/9b82d155728125e270bd82f0471fc39221ff12cf fuzz/corpus/path/89e5dc9aa6269d614504533590e9d5f9a063ab01 fuzz/corpus/path/e86f9fe769eb48dc3817e249f4d8858585b7cee0 fuzz/corpus/path/628eaa638a2d7834ac975a9d3ada50fa6b805220 fuzz/corpus/path/af473bc104749d9f085c1e527ad2d1a9fa81cb5d fuzz/corpus/path/99a08ebd3fd227f3a7d4de5ec66a30db5146865d fuzz/corpus/path/4d1dba6fd4c206dce14dc73c27ddb906fbbf94df fuzz/corpus/path/88f9da75ee523871f2c20a6ba5a45488e9ef1286 fuzz/corpus/path/traversal fuzz/corpus/path/4ac15b4a560df8a491437111a332606a5ad2c444 fuzz/corpus/path/31d69cc8c918e4d47aedbde425cdf58dc3c93689 fuzz/corpus/path/165a483a72dd45f8d99966128c027facf9a629a8 fuzz/corpus/path/unicode fuzz/corpus/path/f3b8396183c65eafb5efe7f4fe435009141af7cc fuzz/corpus/path/51cdfce292ee1e71a294b9a899249f146bdef598 fuzz/corpus/path/30083396aecf689110b1cd561504894f92d9cab3 fuzz/corpus/path/39516c35fdab770ce4f986bb7c4fe34cf2715fdf fuzz/corpus/path/b9f73d7e417d275230a900e0e9eaff6ceb7f691d fuzz/corpus/path/21e3b4eb6d906e0248eae5bddcb2e9a0bb0f8a46 fuzz/corpus/path/aeddcb5ebdef89da358e469b0dcf655a52544c0d fuzz/corpus/path/9d891e731f75deae56884d79e9816736b7488080 fuzz/corpus/path/f8f552c08fbc6679817b5b51a1cefb7e77432479 fuzz/corpus/path/2031c6421bb3233d6997ffe250e84d07a13b1d45 fuzz/corpus/path/e9be7a527ed1c4844ee7d23a2a7699b5987091df fuzz/corpus/path/2d83b0f458a20c3d04df7d07652eb6bb4a081627 fuzz/corpus/tus_headers/version fuzz/corpus/tus_headers/basic fuzz/corpus/tus_headers/traversal fuzz/corpus/icalendar/vtodo.ics fuzz/corpus/icalendar/vevent.ics fuzz/corpus/share_inputs/slug fuzz/corpus/share_inputs/reserved fuzz/corpus/share_inputs/password fuzz/Cargo.lock fuzz/Cargo.toml tests/adversarial/restart.mjs tests/adversarial/mcp_probe.py tests/adversarial/xuser_matrix.py tests/adversarial/run-split.sh tests/adversarial/refresh.mjs tests/adversarial/run.sh tests/adversarial/setup.mjs tests/adversarial/FINDINGS-round2.md tests/adversarial/webdav.py tests/adversarial/editor-proxy.mjs tests/adversarial/package.json tests/adversarial/mail_api.mjs tests/adversarial/webauthn.mjs tests/adversarial/test_search_result_matching.py tests/adversarial/search_chaos.py tests/adversarial/hostile_bytes.mjs tests/adversarial/authz_matrix.py tests/adversarial/calendar_event_tags.mjs tests/adversarial/appearance_auto_scheme.mjs tests/adversarial/attack.py tests/adversarial/search_disk_full.py tests/adversarial/test-media-sandbox.sh tests/adversarial/dedup_setup.mjs tests/adversarial/jobs.py tests/adversarial/bun.lock tests/adversarial/sync_chaos.py tests/adversarial/wikilink_conversion.py tests/adversarial/test_sync_inventory.py tests/adversarial/attack2.py tests/adversarial/jobs-screenshots.mjs tests/adversarial/editor.mjs tests/adversarial/prepare-media-runtime.sh tests/adversarial/media_uploads.py tests/adversarial/server_log.py tests/perf/test_upload_scale.py tests/perf/search_scale.py tests/perf/upload_scale.py tests/perf/search_photo_fixture.mjs apps/web/scripts/check-type-tokens.mjs apps/web/tsconfig.json apps/web/static/favicon-16.png apps/web/static/favicon-32.png apps/web/static/apple-touch-icon.png apps/web/static/og.png apps/web/static/fonts/maple-mono-latin-wght-normal.woff2 apps/web/static/fonts/OFL-literata.txt apps/web/static/fonts/OFL-source-serif-4.txt apps/web/static/fonts/fraunces-latin-wght-normal.woff2 apps/web/static/fonts/fraunces-latin-ext-wght-normal.woff2 apps/web/static/fonts/OFL-roboto-serif.txt apps/web/static/fonts/spline-sans-mono-latin-wght-normal.woff2 apps/web/static/fonts/maple-mono-latin-ext-wght-normal.woff2 apps/web/static/fonts/google-sans-latin-wght-normal.woff2 apps/web/static/fonts/bricolage-grotesque-latin-ext-wght-normal.woff2 apps/web/static/fonts/literata-latin-wght-normal.woff2 apps/web/static/fonts/OFL-spline-sans-mono.txt apps/web/static/fonts/source-serif-4-latin-ext-wght-normal.woff2 apps/web/static/fonts/README.md apps/web/static/fonts/maple-mono-latin-ext-wght-italic.woff2 apps/web/static/fonts/spline-sans-mono-latin-ext-wght-normal.woff2 apps/web/static/fonts/jetbrains-mono-latin-ext-wght-normal.woff2 apps/web/static/fonts/newsreader-latin-wght-normal.woff2 apps/web/static/fonts/newsreader-latin-ext-wght-normal.woff2 apps/web/static/fonts/OFL-newsreader.txt apps/web/static/fonts/OFL-playfair-display.txt apps/web/static/fonts/playfair-display-latin-ext-wght-normal.woff2 apps/web/static/fonts/OFL-google-sans.txt apps/web/static/fonts/playfair-display-latin-wght-normal.woff2 apps/web/static/fonts/literata-latin-ext-wght-normal.woff2 apps/web/static/fonts/google-sans-latin-ext-wght-normal.woff2 apps/web/static/fonts/inter-latin-ext-wght-normal.woff2 apps/web/static/fonts/OFL-inter.txt apps/web/static/fonts/source-serif-4-latin-wght-normal.woff2 apps/web/static/fonts/OFL-jetbrains-mono.txt apps/web/static/fonts/roboto-serif-latin-ext-wght-normal.woff2 apps/web/static/fonts/maple-mono-latin-wght-italic.woff2 apps/web/static/fonts/OFL-maple-mono.txt apps/web/static/fonts/jetbrains-mono-latin-wght-normal.woff2 apps/web/static/fonts/roboto-serif-latin-wght-normal.woff2 apps/web/static/fonts/bricolage-grotesque-latin-wght-normal.woff2 apps/web/static/fonts/OFL-fraunces.txt apps/web/static/fonts/OFL-bricolage-grotesque.txt apps/web/static/fonts/inter-latin-wght-normal.woff2 apps/web/static/manifest.webmanifest apps/web/static/robots.txt apps/web/static/favicon.svg apps/web/static/icons/icon-192.png apps/web/static/icons/icon-monochrome-192.png apps/web/static/icons/icon-maskable-192.png apps/web/static/icons/mark-light.webp apps/web/static/icons/icon-maskable-512.png apps/web/static/icons/mark-dark.webp apps/web/static/icons/icon-512.png apps/web/static/icons/icon-monochrome-512.png apps/web/e2e/popovers.mjs apps/web/e2e/webmcp.mjs apps/web/e2e/auth.mjs apps/web/e2e/route-perf.mjs apps/web/e2e/layout-sweep.mjs apps/web/e2e/calendar-resize.mjs apps/web/e2e/calendar-glass-review.mjs apps/web/e2e/analytics.mjs apps/web/e2e/clock.mjs apps/web/e2e/calendar-view-switcher.mjs apps/web/e2e/shell.mjs apps/web/e2e/photo-fixtures.mjs apps/web/e2e/phone-chrome.mjs apps/web/e2e/ask.mjs apps/web/e2e/fonts-review.mjs apps/web/e2e/process-perf.mjs apps/web/e2e/deeplinks.mjs apps/web/e2e/calendar.mjs apps/web/e2e/header-sweep.mjs apps/web/e2e/share.mjs apps/web/e2e/menu-blur.mjs apps/web/e2e/mobile-focus.mjs apps/web/e2e/app-passwords.mjs apps/web/e2e/csp.mjs apps/web/e2e/composer.mjs apps/web/e2e/a11y.mjs apps/web/e2e/calendar-format-review.mjs apps/web/e2e/calendar-perf.mjs apps/web/e2e/breakit.mjs apps/web/e2e/touch-369.mjs apps/web/e2e/notifications.mjs apps/web/e2e/motion-spring-evidence.mjs apps/web/e2e/photos-perf.mjs apps/web/e2e/ui-polish-354.mjs apps/web/e2e/chrome-surfaces.mjs apps/web/e2e/ai.mjs apps/web/e2e/files.mjs apps/web/e2e/appearance-review.mjs apps/web/e2e/fixtures/README.md apps/web/e2e/fixtures/overlay-photo-cc0.jpg apps/web/e2e/event-tint.mjs apps/web/e2e/calendar-task-overflow.mjs apps/web/e2e/notes.mjs apps/web/e2e/search.mjs apps/web/e2e/photos.mjs apps/web/e2e/hidden-activity.mjs apps/web/e2e/harness.mjs apps/web/e2e/popover-screenshots.mjs apps/web/e2e/search-scale-palette.mjs apps/web/package.json apps/web/README.md apps/web/svelte.config.js apps/web/vite.config.ts apps/web/src/lib/flip.test.ts apps/web/src/lib/time.test.ts apps/web/src/lib/hooks/is-mobile.svelte.ts apps/web/src/lib/tooltip/tooltip.test.ts apps/web/src/lib/navigation.ts apps/web/src/lib/ui/pointerCoarse.svelte.ts apps/web/src/lib/ui/cssLength.ts apps/web/src/lib/ui/breakpoints.ts apps/web/src/lib/ui/uiScale.svelte.ts apps/web/src/lib/appearance/readability.test.ts apps/web/src/lib/appearance/background-store.test.ts apps/web/src/lib/appearance/background.svelte.ts apps/web/src/lib/appearance/autoScheme.svelte.ts apps/web/src/lib/appearance/readability.ts apps/web/src/lib/solar.test.ts apps/web/src/lib/fontsGroup.svelte.test.ts apps/web/src/lib/menu-open-focus.svelte.test.ts apps/web/src/lib/navigation.test.ts apps/web/src/lib/selectionContextBar.ts apps/web/src/lib/themePicker.svelte.test.ts apps/web/src/lib/floating.ts apps/web/src/lib/modeHeader.svelte.test.ts apps/web/src/lib/relativeTime.ts apps/web/src/lib/flip.ts apps/web/src/lib/chrome.svelte.ts apps/web/src/lib/selection.ts apps/web/src/lib/test-fixtures/BottomBarFixture.svelte apps/web/src/lib/date-formatting.test.ts apps/web/src/lib/reducedMotion.svelte.ts apps/web/src/lib/copyLinkToast.ts apps/web/src/lib/motion.ts apps/web/src/lib/selectionContextBar.test.ts apps/web/src/lib/jobs/api.ts apps/web/src/lib/jobs/api.test.ts docs/perf/runs/2026-09-27T125206Z-39d6f2e5-notes-10k.json docs/perf/runs/2026-09-27T125206Z-39d6f2e5-notes-5k.partial.json docs/perf/runs/2026-09-27T125206Z-39d6f2e5-notes-1k.partial.json docs/perf/runs/2026-09-27T125206Z-39d6f2e5.json docs/perf/runs/2026-09-27T113500Z-37788888.json docs/perf/runs/2026-09-27T125206Z-39d6f2e5-files-50k.partial.json docs/perf/runs/2026-09-27T142335Z-39d6f2e5-notes-3627.progress.json docs/perf/runs/2026-09-27T142925Z-39d6f2e5-notes-4019.progress.json docs/perf/2026-09-27.md docs/perf/BASELINE.md docs/DESIGN.md docs/audits/consistency-2026-09-28.md docs/audits/consistency-237.md docs/audits/cross-user-2026-09-28.md docs/audits/glass-audit-207.md apps/web/src/lib/calendar/agenda.svelte.test.ts apps/web/src/lib/calendar/prefs.test.ts apps/web/src/lib/calendar/sidebarState.svelte.ts apps/web/src/lib/calendar/event-tint.test.ts apps/web/src/lib/calendar/model.test.ts apps/web/src/lib/calendar/prefs.ts apps/web/src/lib/calendar/data.ts apps/web/src/lib/calendar/TimeGrid.svelte.test.ts apps/web/src/lib/calendar/edits.test.ts apps/web/src/lib/calendar/edits.ts apps/web/src/lib/calendar/journal.ts apps/web/src/lib/calendar/zones.test.ts apps/web/src/lib/calendar/data.test.ts apps/web/src/lib/calendar/grid.test.ts apps/web/src/lib/calendar/attachments.test.ts apps/web/src/lib/themeColor.ts apps/web/src/lib/api/tags.ts apps/web/src/lib/api/notes.test.ts apps/web/src/lib/api/notes.ts apps/web/src/lib/api/tags.test.ts docs/research/voice-transcription.md docs/research/nested-podman.md docs/research/calendar-grid.md docs/research/mail-threads.md docs/research/file-protocols.md docs/research/appearance-248.md docs/research/webmcp.md docs/research/money-format-spike.md docs/research/mail-plugin.md docs/research/money-plugin.md docs/research/notes-actions.md docs/video-transcoding.md apps/web/src/lib/a11y/focusWithKeyboard.test.ts apps/web/src/lib/a11y/focusWithKeyboard.ts apps/web/src/lib/a11y/inputModality.ts apps/web/src/lib/a11y/focusTrap.test.ts apps/web/src/lib/a11y/focusTrap.ts contracts/openapi.json contracts/README.md contracts/schemas/note-template-defaults.v1.json contracts/schemas/README.md apps/web/src/lib/editor/blockToolbarActions.test.ts apps/web/src/lib/editor/blockToolbarActions.ts apps/web/src/lib/editor/blockMenu.ts apps/web/src/lib/editor/keyboardInset.svelte.ts apps/web/src/lib/editor/blockNoteTitle.ts apps/web/src/lib/editor/editorEvents.ts apps/web/src/lib/editor/blockMenu.test.ts apps/web/src/lib/editor/toolbarNav.ts apps/web/src/lib/editor/blockNoteTitle.test.ts contracts/vectors/ask-retrieval.v1.json contracts/vectors/search-ranking.v1.json contracts/vectors/README.md apps/web/src/lib/photos/layout.test.ts apps/web/src/lib/photos/format.ts apps/web/src/lib/photos/PhotosView.svelte apps/web/src/lib/photos/photos-units.test.ts apps/web/src/lib/photos/media.ts apps/web/src/lib/photos/route.ts apps/web/src/lib/photos/PhotoViewer.svelte apps/web/src/lib/photos/thumbhash.ts apps/web/src/lib/photos/api.ts apps/web/src/lib/photos/PhotosSidebar.svelte apps/web/src/lib/photos/PhotoTimeline.svelte apps/web/src/lib/photos/timeline.svelte.ts apps/web/src/lib/photos/TimelineScrubber.svelte apps/web/src/lib/photos/layout.ts apps/web/src/lib/gestures.ts contracts/vectors/markdown/calternal/README.md contracts/vectors/markdown/calternal/generate.mjs contracts/vectors/markdown/calternal/editor.v1.json contracts/vectors/markdown/README.md contracts/vectors/markdown/editor.v1.json contracts/vectors/search-query.v1.json apps/web/src/lib/ai/TurnPanel.svelte apps/web/src/lib/ai/mention.test.ts apps/web/src/lib/ai/mention.ts apps/web/src/lib/ai/ask.ts apps/web/src/lib/ai/api.ts apps/web/src/lib/ai/changes.ts apps/web/src/lib/ai/transcript.test.ts apps/web/src/lib/ai/transcript.ts apps/web/src/lib/ai/commands.test.ts apps/web/src/lib/ai/commands.ts apps/web/src/lib/ai/api.test.ts apps/web/src/lib/ai/changes.test.ts apps/web/src/lib/ai/turnPanel.svelte.ts apps/web/src/lib/menu/MenuItem.svelte.test.ts apps/web/src/lib/editor/format/EditorFormatBubble.svelte apps/web/src/lib/editor/format/BlockActionRow.svelte.test.ts apps/web/src/lib/editor/format/BlockHoverActions.svelte.test.ts apps/web/src/lib/editor/format/reminderDateTime.test.ts apps/web/src/lib/editor/format/TooltipLayer.svelte.test.ts apps/web/src/lib/editor/format/reminderPreview.test.ts apps/web/src/lib/editor/format/EditorFormatBar.svelte.test.ts apps/web/src/lib/editor/format/reminderDateTime.ts apps/web/src/lib/editor/format/FormatButton.svelte apps/web/src/lib/editor/format/FormatButton.svelte.test.ts apps/web/src/lib/editor/format/BlockReminderPicker.svelte apps/web/src/lib/editor/format/reminderPreview.ts apps/web/src/lib/editor/format/EditorFormatBar.svelte apps/web/src/lib/editor/format/reminderTimeHistory.ts apps/web/src/lib/editor/format/FormatCommandRow.svelte apps/web/src/lib/analytics/store.test.ts apps/web/src/lib/analytics/delta.ts apps/web/src/lib/analytics/period.ts apps/web/src/lib/analytics/ranges.ts apps/web/src/lib/analytics/deltaMode.svelte.ts apps/web/src/lib/analytics/links.ts apps/web/src/lib/analytics/store.svelte.ts apps/web/src/lib/analytics/links.test.ts apps/web/src/lib/analytics/delta.test.ts apps/web/src/lib/analytics/period.test.ts apps/web/src/lib/analytics/ranges.test.ts apps/web/src/lib/analytics/palette.test.ts apps/web/src/lib/analytics/aggregate.ts apps/web/src/lib/analytics/palette.ts apps/web/src/lib/editor/format/BlockHoverActions.svelte apps/web/src/lib/editor/format/FormatIcon.svelte apps/web/src/lib/editor/format/reminderTimeHistory.test.ts apps/web/src/lib/editor/format/BlockActionRow.svelte apps/web/src/lib/notifications/model.test.ts apps/web/src/lib/notifications/InboxPanel.svelte apps/web/src/lib/notifications/model.ts apps/web/src/lib/notifications/inbox.svelte.ts apps/web/src/lib/notifications/push.test.ts apps/web/src/lib/notifications/push.ts apps/web/src/lib/webmcp/tools.test.ts apps/web/src/lib/webmcp/tools.ts apps/web/src/lib/themes.ts apps/web/src/lib/menuNav.ts apps/web/src/lib/auth/bip39-english.ts apps/web/src/lib/auth/authOptions.ts apps/web/src/lib/auth/passkeys.test.ts apps/web/src/lib/auth/routes.ts apps/web/src/lib/auth/routes.test.ts crates/calternal-fs/tests/storage.rs apps/web/src/lib/auth/components/RecoveryKeyEntry.svelte apps/web/src/lib/auth/components/RecoveryKeyWords.svelte apps/web/src/lib/auth/components/RecoverFlow.svelte apps/web/src/lib/auth/components/PasskeyGlyph.svelte apps/web/src/lib/auth/components/CreateAccountFlow.svelte apps/web/src/lib/auth/components/AuthCard.svelte apps/web/src/lib/auth/components/AuthSteps.svelte apps/web/src/lib/auth/recoveryKey.ts apps/web/src/lib/auth/passkeys.ts apps/web/src/lib/auth/recoveryKey.test.ts apps/web/src/lib/clipboard.test.ts apps/web/src/lib/composer/Composer.svelte apps/web/src/lib/composer/depix.ts apps/web/src/lib/composer/Composer.svelte.test.ts apps/web/src/lib/composer/nlp.ts apps/web/src/lib/composer/controller.svelte.ts apps/web/src/lib/composer/drafts.test.ts apps/web/src/lib/composer/errors.ts apps/web/src/lib/composer/commit.test.ts apps/web/src/lib/composer/recorder.test.ts apps/web/src/lib/composer/commit.ts apps/web/src/lib/composer/recorder.svelte.ts apps/web/src/lib/composer/corrections.ts apps/web/src/lib/composer/runs.test.ts apps/web/src/lib/composer/corrections.test.ts crates/calternal-fs/src/trash.rs apps/web/src/lib/composer/mode.test.ts crates/calternal-fs/src/blob.rs apps/web/src/lib/composer/nlp.test.ts apps/web/src/lib/composer/attachments.svelte.ts apps/web/src/lib/composer/drafts.svelte.ts apps/web/src/lib/composer/mode.svelte.ts apps/web/src/lib/composer/attachments.test.ts apps/web/src/lib/composer/runs.ts crates/calternal-fs/src/versions.rs crates/calternal-fs/src/write.rs crates/calternal-fs/src/journal.rs crates/calternal-fs/src/file_ops.rs crates/calternal-fs/src/quota.rs crates/calternal-fs/src/lib.rs crates/calternal-fs/src/error.rs crates/calternal-fs/src/root.rs crates/calternal-fs/src/thumbnails.rs crates/calternal-fs/src/uploads.rs crates/calternal-fs/src/hls.rs crates/calternal-fs/src/user_homes.rs crates/calternal-fs/src/path.rs crates/calternal-fs/Cargo.toml crates/calternal-embed/models/manifest.json apps/web/src/lib/search/query.test.ts apps/web/src/lib/search/targets.ts apps/web/src/lib/search/SearchPreview.svelte apps/web/src/lib/search/sources.svelte.ts apps/web/src/lib/search/server.ts apps/web/src/lib/search/providers.ts apps/web/src/lib/search/access.test.ts apps/web/src/lib/search/snippet.ts apps/web/src/lib/search/PhotoGrid.svelte apps/web/src/lib/search/links.ts crates/calternal-embed/src/clip_model.rs crates/calternal-embed/src/clip_store.rs crates/calternal-embed/src/model.rs crates/calternal-embed/src/lib.rs crates/calternal-embed/src/chunk.rs crates/calternal-embed/src/store.rs crates/calternal-embed/Cargo.toml apps/web/src/lib/search/SearchResultRow.svelte apps/web/src/lib/search/access.svelte.ts apps/web/src/lib/search/recent.ts apps/web/src/lib/search/providers.test.ts apps/web/src/lib/fonts.test.ts apps/web/src/lib/files/sharing.svelte.ts apps/web/src/lib/files/SharedByYou.svelte apps/web/src/lib/files/UploadToast.svelte apps/web/src/lib/files/TrashView.svelte apps/web/src/lib/files/uploads.svelte.test.ts apps/web/src/lib/files/FilesSidebar.svelte apps/web/src/lib/files/prefs.svelte.test.ts apps/web/src/lib/files/ShareDialog.svelte apps/web/src/lib/files/RecentView.svelte apps/web/src/lib/files/model.test.ts apps/web/src/lib/files/prefs.svelte.ts apps/web/src/lib/files/FilesBrowser.svelte apps/web/src/lib/files/InfoPanel.svelte apps/web/src/lib/files/PublicLinkPage.svelte apps/web/src/lib/files/model.ts apps/web/src/lib/files/viewer.ts apps/web/src/lib/files/uploadToast.ts apps/web/src/lib/files/selection.test.ts apps/web/src/lib/files/api.ts crates/calternal-notes-core/tests/unicode_titles.rs crates/calternal-notes-core/tests/log_rewrite.rs crates/calternal-notes-core/tests/parser_properties.rs crates/calternal-notes-core/tests/vector_parity.rs apps/web/src/lib/files/transfer.ts apps/web/src/lib/files/uploads.svelte.ts apps/web/src/lib/files/selection.ts apps/web/src/lib/files/live.ts apps/web/src/lib/files/UploadToast.svelte.test.ts apps/web/src/lib/files/api.test.ts apps/web/src/lib/files/FileCollection.svelte.test.ts apps/web/src/lib/themes.test.ts crates/calternal-notes-core/tests/fixtures/saved-dayfile-crash.txt crates/calternal-notes-core/tests/fixtures/daily-note-2026-05-05.md crates/calternal-notes-core/tests/fixtures/frontmatter-cases.json apps/web/src/lib/shortcuts/match.ts apps/web/src/lib/shortcuts/format.ts apps/web/src/lib/shortcuts/registry.test.ts apps/web/src/lib/shortcuts/registry.ts apps/web/src/lib/sheetSnap.test.ts crates/calternal-notes-core/tests/vectors/links.json crates/calternal-notes-core/tests/vectors/notes_index.json crates/calternal-notes-core/tests/vectors/reminders.json crates/calternal-notes-core/tests/vectors/frontmatter.json crates/calternal-notes-core/tests/vectors/composer_helpers.json crates/calternal-notes-core/tests/vectors/identity.json crates/calternal-notes-core/tests/vectors/dayfile.json crates/calternal-notes-core/tests/vectors/notes.json crates/calternal-notes-core/tests/vectors/markdown.json crates/calternal-notes-core/tests/vectors/composer.json crates/calternal-notes-core/tests/vectors/composer_nlp.json crates/calternal-notes-core/tests/unicode_titles.proptest-regressions crates/calternal-notes-core/PARITY.md apps/web/src/lib/assets/favicon.svg apps/web/src/lib/backgroundGroup.svelte.test.ts apps/web/src/lib/stores/settings-store.test.ts apps/web/src/lib/stores/settings-store.ts apps/web/src/lib/stores/toasts.svelte.ts crates/calternal-notes-core/src/notes_index.rs apps/web/src/lib/navigation/modePreload.ts apps/web/src/lib/navigation/clientRouteStatus.svelte.ts apps/web/src/lib/relativeTime.test.ts apps/web/src/lib/tray.svelte.test.ts crates/calternal-notes-core/src/tasks/model.rs crates/calternal-notes-core/src/tasks/status.rs crates/calternal-notes-core/src/tasks/build.rs crates/calternal-notes-core/src/tasks/frontmatter.rs crates/calternal-notes-core/src/tasks/line.rs crates/calternal-notes-core/src/tasks/extract.rs crates/calternal-notes-core/src/tasks/mod.rs crates/calternal-notes-core/src/composer.rs crates/calternal-notes-core/src/links.rs crates/calternal-notes-core/src/model.rs crates/calternal-notes-core/src/markdown.rs apps/web/src/lib/components/FieldPopover.svelte.test.ts apps/web/src/lib/components/tagTree.ts apps/web/src/lib/components/ThemePicker.svelte.test.ts apps/web/src/lib/components/Select.svelte.test.ts apps/web/src/lib/components/empty-state.svelte apps/web/src/lib/components/SelectionBar.svelte.test.ts apps/web/src/lib/components/app-sidebar.svelte apps/web/src/lib/components/KeyboardShortcutsCard.svelte.test.ts apps/web/src/lib/components/ConfirmSheet.svelte apps/web/src/lib/overlay/scrollLock.ts apps/web/src/lib/overlay/state.svelte.ts apps/web/src/lib/overlay/scrim.ts apps/web/src/lib/overlay/leaveRoute.ts apps/web/src/lib/overlay/transientDismiss.ts crates/calternal-notes-core/src/nlp/area.rs crates/calternal-notes-core/src/nlp/task_types.rs crates/calternal-notes-core/src/nlp/runs.rs crates/calternal-notes-core/src/nlp/tasks_sigils.rs crates/calternal-notes-core/src/nlp/tags.rs crates/calternal-notes-core/src/nlp/time.rs crates/calternal-notes-core/src/nlp/classifier.rs crates/calternal-notes-core/src/nlp/tests.rs crates/calternal-notes-core/src/nlp/dates.rs crates/calternal-notes-core/src/nlp/anchors.rs crates/calternal-notes-core/src/nlp/tasks.rs crates/calternal-notes-core/src/nlp/civil.rs crates/calternal-notes-core/src/nlp/recognizers.rs crates/calternal-notes-core/src/nlp/tasks_recurrence_md.rs crates/calternal-notes-core/src/nlp/mod.rs crates/calternal-notes-core/src/nlp/tokenizer.rs crates/calternal-notes-core/src/dayfile.rs crates/calternal-notes-core/src/lib.rs crates/calternal-notes-core/src/templates.rs crates/calternal-notes-core/src/reminders.rs crates/calternal-notes-core/src/identity.rs crates/calternal-notes-core/src/frontmatter.rs crates/calternal-notes-core/src/attachments.rs crates/calternal-notes-core/src/note_resolver.rs crates/calternal-notes-core/src/notes.rs crates/calternal-notes-core/src/rename.rs crates/calternal-notes-core/Cargo.toml apps/web/src/lib/styles/blockLift.css apps/web/src/lib/styles/background.css apps/web/src/lib/styles/font-weight-token.test.ts apps/web/src/lib/styles/sidebar-weight.test.ts apps/web/src/lib/styles/auth-ui.css apps/web/src/lib/styles/sidebar.css apps/web/src/lib/styles/scrim.css apps/web/src/app.d.ts apps/web/src/test-setup.ts apps/web/src/service-worker.ts apps/web/src/app.html apps/web/src/calternal-app.css crates/calternal-search/tests/retrieval.rs crates/calternal-search/tests/operators.rs crates/calternal-search/tests/relevance.rs crates/calternal-search/tests/indexer.rs crates/calternal-search/tests/citations.rs crates/calternal-search/tests/ask_evaluation.rs crates/calternal-search/tests/query_properties.rs crates/calternal-search/tests/fixtures/relevance.v1.json crates/calternal-search/migrations/0001_search.sql crates/calternal-search/migrations/0003_hidden_activity.sql crates/calternal-search/migrations/0002_search_frecency.sql apps/web/src/lib/components/analytics/DistributionCard.svelte apps/web/src/lib/components/analytics/BklitTooltipMaterial.test.ts apps/web/src/lib/components/analytics/BklitAnalytics.test.ts apps/web/src/lib/components/analytics/widgets/StatRow.svelte.test.ts apps/web/src/lib/components/analytics/widgets/StatRow.svelte apps/web/src/lib/components/analytics/BklitKeyboardMarks.test.ts apps/web/src/lib/components/analytics/PieSlice.svelte.test.ts crates/calternal-search/src/retrieval.rs apps/web/src/lib/components/analytics/BklitAnalytics.tsx apps/web/src/lib/components/analytics/Dashboard.svelte apps/web/src/lib/components/analytics/RangeBar.svelte crates/calternal-search/src/operators.rs apps/web/src/lib/components/analytics/ActivityCard.svelte crates/calternal-search/src/saved.rs apps/web/src/lib/components/analytics/BklitAnalyticsBarMarks.tsx crates/calternal-search/src/indexer.rs apps/web/src/lib/components/analytics/RangeBar.svelte.test.ts crates/calternal-search/src/plugin.rs apps/web/src/lib/components/analytics/CalendarHeatmap.svelte crates/calternal-search/src/query.rs apps/web/src/lib/components/analytics/BklitAnalyticsHeatmapMarks.tsx crates/calternal-search/src/pdf.rs crates/calternal-search/src/index.rs crates/calternal-search/src/lib.rs crates/calternal-search/src/semantic.rs crates/calternal-search/Cargo.toml crates/calternal-cli/login_campaign.py crates/calternal-cli/tests/output_contract.rs crates/calternal-cli/README.md crates/calternal-cli/src/login.rs crates/calternal-cli/src/main.rs crates/calternal-cli/src/remote_commands.rs crates/calternal-cli/Cargo.toml apps/web/src/lib/components/analytics/vendor/bklit/lib/utils.ts apps/web/src/lib/components/analytics/vendor/bklit/README.md apps/web/src/lib/components/analytics/vendor/bklit/components/shimmering-text.tsx apps/web/src/routes/+layout.svelte apps/web/src/routes/s/[slug]/+page.svelte apps/web/src/routes/+page.ts crates/plugins/calendar/tests/cache.rs crates/plugins/calendar/tests/protocol.rs apps/web/src/routes/reenrol/+page.svelte crates/plugins/calendar/migrations/0003_event_tags.sql crates/plugins/calendar/migrations/0002_event_range_bounds.sql crates/plugins/calendar/migrations/0001_calendar.sql crates/plugins/calendar/src/recurrence.rs crates/plugins/calendar/src/routes.rs crates/plugins/calendar/src/search.rs crates/plugins/calendar/src/view.rs crates/plugins/calendar/src/lib.rs crates/plugins/calendar/src/cache/crypto.rs crates/plugins/calendar/src/cache/store.rs crates/plugins/calendar/src/cache/mod.rs crates/plugins/calendar/src/items.rs apps/web/src/routes/tag/[tag]/+page.svelte crates/plugins/calendar/src/client/xml.rs crates/plugins/calendar/src/client/mod.rs crates/plugins/calendar/Cargo.toml apps/web/src/routes/e/[id]/+page.svelte apps/web/src/routes/t/[id]/+page.svelte apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-indicator.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-box.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-dot.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/chart-tooltip.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/date-ticker.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/tooltip/tooltip-content.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-child-passthrough.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-formatters.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/line-loading-timing.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-x-axis.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-phase.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-depth-geometry.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/grid.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/pie-slice.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/motion-utils.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-chart.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/pie-chart.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-squares-layout.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-scale.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-defs.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-loading-label.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/bar.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-context.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/use-enter-complete.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/y-axis-scales.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/band-invert.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/band-invert.test.ts crates/plugins/photos/tests/fixtures/clip/cat-window.webp apps/web/src/routes/shared/+page.svelte apps/web/src/lib/components/analytics/vendor/bklit/charts/reference-area-config.ts crates/plugins/photos/tests/fixtures/clip/generate_cc0.py apps/web/src/lib/components/analytics/vendor/bklit/charts/bar-y-axis.tsx crates/plugins/photos/tests/fixtures/clip/README.md apps/web/src/lib/components/analytics/vendor/bklit/charts/animation.ts crates/plugins/photos/tests/fixtures/clip/mountain-lake.webp apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-config-context.tsx crates/plugins/photos/tests/fixtures/clip/dog-beach.webp apps/web/src/lib/components/analytics/vendor/bklit/charts/use-scheduled-tooltip.ts crates/plugins/photos/tests/fixtures/clip/sunset-water.webp apps/web/src/lib/components/analytics/vendor/bklit/charts/pattern-preset.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/loading-sweep.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/visx-pattern.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/use-mount-progress.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/y-domain-utils.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/indicator-fade.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/chart-legend-hover.tsx apps/web/src/routes/calendar/+page.ts crates/plugins/photos/data/README.md crates/plugins/photos/data/geonames-cities5000.tsv apps/web/src/routes/calendar/[view]/+page.ts crates/plugins/photos/migrations/0004_incremental_refresh.sql crates/plugins/photos/migrations/0006_hidden_activity.sql crates/plugins/photos/migrations/0005_calendar_capture_index.sql crates/plugins/photos/migrations/0002_photo_search_metadata.sql crates/plugins/photos/migrations/0003_photo_dimensions.sql crates/plugins/photos/migrations/0001_photos.sql apps/web/src/routes/calendar/[view]/[date]/+page.ts apps/web/src/routes/calendar/[view]/[date]/+page.svelte apps/web/src/routes/+layout.ts crates/plugins/photos/src/routes.rs crates/plugins/photos/src/search.rs crates/plugins/photos/src/settings.rs crates/plugins/photos/src/migration_tests.rs crates/plugins/photos/src/index.rs crates/plugins/photos/src/geonames.rs crates/plugins/photos/src/lib.rs crates/plugins/photos/src/pairing.rs crates/plugins/photos/src/pairing_impl.rs crates/plugins/photos/src/details.rs crates/plugins/photos/src/settings_tests.rs crates/plugins/photos/Cargo.toml apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-legend.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-separator.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-colors.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-context.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-resolve-separator.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-x-axis.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-pattern-defs.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-legend-swatch.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-chart.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-animation.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-tooltip.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-utils.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/use-delayed-tooltip-data.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-legend-gradient.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-y-axis.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/heatmap/heatmap-cells.tsx apps/web/src/lib/components/analytics/vendor/bklit/charts/use-grid-shimmer.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/use-chart-interaction.ts apps/web/src/lib/components/analytics/vendor/bklit/charts/pie-context.tsx apps/web/src/lib/components/analytics/vendor/bklit/BKLIT-MIT-LICENSE.txt apps/web/src/lib/components/analytics/AnalyticsSidebar.svelte apps/web/src/lib/components/analytics/HabitsCard.svelte apps/web/src/lib/components/analytics/BklitChart.svelte apps/web/src/lib/components/analytics/RangePicker.svelte apps/web/src/lib/components/analytics/ActivityCard.svelte.test.ts apps/web/src/lib/components/analytics/TimeOfDayHeatmap.svelte apps/web/src/lib/components/analytics/StackedBarCard.svelte apps/web/src/lib/components/analytics/formatTrackedMinutes.ts apps/web/src/lib/components/analytics/BklitKeyboardMarks.tsx apps/web/src/routes/tags/[tag]/+page.ts apps/web/src/routes/tags/+page.svelte apps/web/src/lib/components/TagEditor.svelte apps/web/src/lib/components/AppToaster.svelte apps/web/src/lib/components/OverlaySurface.svelte.test.ts apps/web/src/lib/components/LinkResolveState.svelte apps/web/src/lib/components/NoteList.svelte apps/web/src/lib/components/SidebarLinks.svelte apps/web/src/lib/components/KeyboardShortcutsCard.svelte apps/web/src/lib/components/ToastBody.svelte apps/web/src/lib/components/SidebarSectionHeader.svelte.test.ts apps/web/src/lib/components/tagTree.test.ts apps/web/src/lib/components/ServiceState.svelte apps/web/src/lib/components/search-dialog.svelte apps/web/src/routes/journal/+page.svelte apps/web/src/routes/journal/JournalPage.svelte.test.ts crates/plugins/ai/migrations/0004_ask_turns.sql crates/plugins/ai/migrations/0001_ai_credentials.sql crates/plugins/ai/migrations/0002_ai_turns.sql crates/plugins/ai/migrations/0003_ai_turn_prompts.sql apps/web/src/routes/[...path]/+page.svelte crates/plugins/ai/src/runtime.rs crates/plugins/ai/src/routes.rs crates/plugins/ai/src/lib.rs crates/plugins/ai/src/crypto.rs crates/plugins/ai/src/turns.rs crates/plugins/ai/src/store.rs crates/plugins/ai/Cargo.toml apps/web/src/routes/login/+page.svelte crates/plugins/analytics/migrations/0002_hidden_activity.sql crates/plugins/analytics/migrations/0001_analytics.sql apps/web/src/lib/notes/collab.ts apps/web/src/lib/notes/mentions.ts apps/web/src/lib/notes/icons.ts apps/web/src/lib/notes/NoteView.svelte apps/web/src/lib/notes/wikilinks.ts apps/web/src/lib/notes/NotesExplorer.svelte apps/web/src/lib/notes/collaborationUndo.svelte.test.ts apps/web/src/lib/notes/NoteEditorSurface.svelte apps/web/src/lib/notes/anchors.svelte.test.ts apps/web/src/lib/notes/api.ts apps/web/src/lib/notes/noteIndex.svelte.ts apps/web/src/lib/notes/editorHost.ts apps/web/src/lib/notes/headingLinks.ts apps/web/src/lib/notes/anchors.ts apps/web/src/lib/notes/collab.test.ts crates/plugins/analytics/src/routes.rs apps/web/src/lib/notes/NoteImageView.svelte apps/web/src/lib/notes/notes.test.ts crates/plugins/analytics/src/period.rs crates/plugins/analytics/src/tests.rs crates/plugins/analytics/src/lib.rs crates/plugins/analytics/src/compute.rs crates/plugins/analytics/src/cache.rs crates/plugins/analytics/Cargo.toml apps/web/src/routes/ai/turns/[id]/+page.svelte apps/web/src/routes/signup/+page.svelte apps/web/src/lib/notes/editor-types/anchor.d.ts apps/web/src/lib/notes/editor-types/syntaxHighlight.d.ts apps/web/src/lib/notes/editor-types/imagePipe.d.ts apps/web/src/lib/notes/editor-types/index.d.ts apps/web/src/lib/notes/editor-types/image.d.ts apps/web/src/lib/notes/paths.ts apps/web/src/lib/notes/retitle.ts apps/web/src/lib/notes/anchors.test.ts apps/web/src/lib/index.ts apps/web/src/lib/fonts.ts apps/web/src/routes/analytics/+page.ts crates/plugins/mail/vendor/async-imap/LICENSE-APACHE crates/plugins/mail/vendor/async-imap/README.md crates/plugins/mail/vendor/async-imap/LICENSE-MIT crates/plugins/mail/vendor/async-imap/CODEX_PATCHES.md apps/web/src/lib/actions/magnetic.ts apps/web/src/routes/analytics/[period]/+page.ts apps/web/src/lib/actions/pillFeedback.test.ts apps/web/src/lib/actions/magnetic.test.ts apps/web/src/lib/actions/pillFeedback.ts apps/web/src/lib/actions/rovingToolbar.ts apps/web/src/lib/actions/longPressMenu.ts apps/web/src/lib/actions/measuredCapsule.svelte.ts apps/web/src/lib/actions/edgeResize.ts crates/plugins/mail/vendor/async-imap/src/parse.rs crates/plugins/mail/vendor/async-imap/src/imap_stream.rs apps/web/src/routes/analytics/[period]/[date]/+page.ts apps/web/src/routes/analytics/[period]/[date]/+page.svelte crates/plugins/mail/vendor/async-imap/src/extensions/idle.rs crates/plugins/mail/vendor/async-imap/src/extensions/quota.rs crates/plugins/mail/vendor/async-imap/src/extensions/id.rs crates/plugins/mail/vendor/async-imap/src/extensions/compress.rs crates/plugins/mail/vendor/async-imap/src/extensions/mod.rs crates/plugins/mail/vendor/async-imap/src/client.rs crates/plugins/mail/vendor/async-imap/src/lib.rs crates/plugins/mail/vendor/async-imap/src/error.rs crates/plugins/mail/vendor/async-imap/src/authenticator.rs crates/plugins/mail/vendor/async-imap/src/mock_stream.rs apps/web/src/routes/notifications/+page.svelte apps/web/src/routes/+error.svelte apps/web/src/routes/ask/+page.svelte apps/web/src/lib/vendor/svelte-dnd-action/index.mjs apps/web/src/lib/vendor/svelte-dnd-action/README.md apps/web/src/lib/vendor/svelte-dnd-action/index.d.ts apps/web/src/lib/vendor/svelte-dnd-action/index.js apps/web/src/lib/vendor/svelte-dnd-action/LICENSE apps/web/src/lib/capsule-motion.test.ts apps/web/src/lib/search/registry.ts apps/web/src/lib/search/SearchField.svelte apps/web/src/lib/search/kinds.ts apps/web/src/lib/search/search-units.test.ts apps/web/src/lib/search/query.ts apps/web/src/lib/search/window.svelte.ts apps/web/src/lib/search/justify.ts apps/web/src/lib/search/snippet.test.ts apps/web/src/lib/search/SearchResultRow.svelte.test.ts apps/web/src/lib/search/saved.svelte.ts apps/web/src/lib/search/links.test.ts apps/web/src/lib/search/SavedSearchList.svelte crates/plugins/mail/vendor/async-imap/src/types/name.rs crates/plugins/mail/vendor/async-imap/src/types/id_generator.rs crates/plugins/mail/vendor/async-imap/src/types/capabilities.rs crates/plugins/mail/vendor/async-imap/src/types/mailbox.rs crates/plugins/mail/vendor/async-imap/src/types/quota.rs crates/plugins/mail/vendor/async-imap/src/types/response_data.rs crates/plugins/mail/vendor/async-imap/src/types/request.rs crates/plugins/mail/vendor/async-imap/src/types/fetch.rs crates/plugins/mail/vendor/async-imap/src/types/mod.rs crates/plugins/mail/vendor/async-imap/Cargo.toml crates/plugins/mail/migrations/0002_provider_identities.sql crates/plugins/mail/migrations/0001_mail.sql apps/web/src/routes/n/[id]/+page.svelte crates/calternal-db/tests/queue.rs crates/plugins/mail/src/imap.rs crates/plugins/mail/src/routes.rs crates/plugins/mail/src/lib.rs crates/plugins/mail/src/crypto.rs apps/web/src/routes/admin/[...page]/+page.ts crates/plugins/mail/src/cache/store.rs crates/plugins/mail/src/cache.rs crates/plugins/mail/src/sync.rs crates/plugins/mail/Cargo.toml crates/calternal-db/src/db.rs crates/calternal-db/src/migrations.rs crates/calternal-db/src/cron.rs crates/calternal-db/src/worker.rs crates/calternal-db/src/secrets.rs crates/calternal-db/src/snapshot.rs crates/calternal-db/src/lib.rs crates/calternal-db/src/jobs.rs crates/calternal-db/src/error.rs apps/web/src/routes/search/+page.svelte crates/plugins/notifications/migrations/0003_block_reminders.sql crates/plugins/notifications/migrations/0001_notifications.sql crates/plugins/notifications/migrations/0004_hidden_activity.sql crates/plugins/notifications/migrations/0002_unread_index.sql crates/calternal-db/src/migrations/0005_job_execution_state.sql crates/calternal-db/src/migrations/0004_job_kind_controls.sql crates/calternal-db/src/migrations/0001_jobs.sql crates/calternal-db/src/migrations/0003_job_kinds.sql crates/calternal-db/src/migrations/0002_instance_secrets.sql crates/calternal-db/src/migrations/0006_job_kind_descriptions.sql crates/calternal-db/src/sqlite.rs crates/calternal-db/src/storage.rs apps/web/src/routes/search/saved/[id]/+page.svelte crates/calternal-db/Cargo.toml apps/web/src/routes/+page.svelte crates/plugins/notifications/src/block_reminders.rs crates/plugins/notifications/src/routes.rs crates/plugins/notifications/src/lib.rs crates/plugins/notifications/src/reminders.rs crates/plugins/notifications/src/push.rs crates/plugins/notifications/src/store.rs crates/plugins/notifications/src/endpoint.rs crates/plugins/notifications/Cargo.toml crates/calternal-tags/migrations/0005_tags.sql crates/calternal-tags/migrations/0006_tag_path_assignments.sql crates/plugins/video/migrations/0001_video.sql apps/web/src/routes/notes/convert/+page.svelte apps/web/src/routes/notes/+page.svelte crates/calternal-tags/src/index.rs crates/calternal-tags/src/lib.rs crates/calternal-tags/src/source.rs crates/calternal-tags/src/rename.rs crates/calternal-tags/Cargo.toml crates/plugins/video/src/routes.rs crates/plugins/video/src/lib.rs crates/plugins/video/src/transcode.rs crates/plugins/video/Cargo.toml apps/web/src/routes/notes/[id]/+page.svelte crates/plugins/notes/README.md crates/plugins/notes/benches/task_create_http.py crates/plugins/notes/benches/README.md apps/web/src/routes/d/[date]/+page.svelte crates/calternal-dav/tests/apple_replay.rs apps/web/src/routes/today/+page.ts apps/web/src/routes/setup/+page.svelte crates/calternal-dav/tests/fixtures/macos27/proppatch-calendar-properties.xml crates/calternal-dav/tests/fixtures/macos27/proppatch-calendar-color.xml crates/calternal-dav/tests/fixtures/macos27/put-new-event.ics crates/calternal-dav/tests/fixtures/macos27/put-new-reminder.ics crates/calternal-dav/tests/fixtures/macos27/proppatch-reminders-properties.xml crates/calternal-dav/tests/fixtures/macos27/put-complete-reminder.ics crates/plugins/notes/migrations/0016_daily_note_navigation.sql crates/plugins/notes/migrations/0017_daily_note_navigation_per_user.sql crates/plugins/notes/migrations/0002_dav_moves.sql crates/calternal-dav/README.md crates/plugins/notes/migrations/0015_link_source_body_line.sql crates/plugins/notes/migrations/0014_wikilink_conversion_jobs.sql crates/plugins/notes/migrations/0008_bookmark_capture_projection.sql crates/plugins/notes/migrations/0009_bookmark_search.sql crates/plugins/notes/migrations/0006_journal_block_lookup.sql crates/plugins/notes/migrations/0012_block_reminders.sql crates/plugins/notes/migrations/0001_notes.sql crates/plugins/notes/migrations/0011_note_collab_state.sql crates/plugins/notes/migrations/0005_journal_changes.sql crates/plugins/notes/migrations/0010_task_identity.sql crates/plugins/notes/migrations/0013_link_health_index.sql crates/plugins/notes/migrations/0007_reminder_changes.sql crates/plugins/notes/migrations/0003_tasks.sql crates/plugins/notes/migrations/0004_calendar_projection.sql apps/web/src/routes/recover/+page.svelte crates/calternal-dav/src/lib.rs crates/calternal-dav/src/reminders.rs crates/calternal-dav/src/files.rs crates/calternal-dav/src/protocol.rs crates/calternal-dav/Cargo.toml crates/plugins/notes/src/calendar_links.rs crates/plugins/notes/src/bookmarks.rs crates/calternal-server/build.rs crates/plugins/notes/src/tests/unicode_titles.rs crates/plugins/notes/src/tasks_store.rs crates/plugins/notes/src/lib.rs crates/plugins/notes/src/store.rs crates/plugins/notes/src/wikilinks.rs crates/plugins/notes/src/composer_api.rs crates/plugins/notes/src/reminders_api.rs crates/plugins/notes/src/tasks_api.rs crates/plugins/notes/src/tasks_dav.rs crates/plugins/notes/Cargo.toml apps/web/src/routes/files/trash/+page.svelte apps/web/src/routes/files/+page.svelte crates/plugins/files/kill_stress.py crates/calternal-server/src/wire.rs crates/calternal-server/src/head.rs crates/calternal-server/src/appearance.rs crates/calternal-server/src/security.rs crates/calternal-server/src/main.rs crates/calternal-server/src/serve.rs crates/calternal-server/src/authz.rs crates/calternal-server/src/system_plugin.rs crates/calternal-server/src/mcp.rs crates/calternal-server/Cargo.toml crates/plugins/files/tests/black.jpg apps/web/src/routes/files/recent/+page.svelte apps/web/src/routes/(photos)/+layout.svelte crates/plugins/files/tests/fixtures/media/tiny.png crates/plugins/files/tests/fixtures/media/source-generated.avif crates/plugins/files/tests/fixtures/media/README.md crates/plugins/files/tests/fixtures/media/source-generated.mp4 crates/plugins/files/tests/fixtures/media/LICENSE.libheif-example crates/plugins/files/tests/fixtures/media/source-example.heic crates/plugins/files/DATA-SAFETY.md apps/web/src/routes/(photos)/p/[id]/+page.svelte crates/plugins/files/migrations/0012_public_edit_history.sql crates/plugins/files/migrations/0008_upload_source_metadata.sql crates/plugins/files/migrations/0010_folder_reconcile.sql crates/plugins/files/migrations/0005_upload_install.sql crates/plugins/files/migrations/0014_internal_temporary_paths.sql crates/plugins/files/migrations/0001_files.sql crates/plugins/files/migrations/0009_listing_indexes.sql crates/plugins/files/migrations/0007_calendar_range.sql crates/plugins/files/migrations/0004_upload_preconditions.sql crates/plugins/files/migrations/0006_change_feed.sql crates/plugins/files/migrations/0011_upload_idle_lease.sql crates/plugins/files/migrations/0013_public_edit_sessions.sql crates/plugins/files/migrations/0015_user_scoped_cursors.sql crates/plugins/files/migrations/0003_identity.sql crates/plugins/files/migrations/0002_password_ip.sql crates/calternal-collab/tests/shared_notes.mjs crates/calternal-collab/tests/two_clients.mjs crates/calternal-collab/tests/vector_bridge.rs crates/calternal-collab/tests/wiki_embeds.rs crates/calternal-collab/tests/agent_turn_order.rs crates/calternal-collab/tests/hostile_clients.rs crates/calternal-collab/tests/untouched_bytes.rs crates/calternal-collab/tests/block_apply_property.rs crates/calternal-collab/tests/shared_notes.rs crates/calternal-collab/tests/restart_epoch.rs crates/calternal-collab/tests/two_clients.rs crates/calternal-collab/tests/journal_race.rs crates/calternal-collab/tests/cross_language.mjs crates/calternal-collab/tests/cross_language.rs crates/calternal-collab/README.md apps/web/src/routes/(photos)/photos/[...rest]/+page.svelte crates/plugins/files/src/agent_undo.rs crates/plugins/files/src/lookup.rs crates/plugins/files/src/media.rs crates/plugins/files/src/public.rs crates/calternal-collab/src/session.rs crates/calternal-collab/src/markdown.rs crates/calternal-collab/src/lib.rs crates/calternal-collab/src/stored.rs crates/calternal-collab/src/repeats.rs crates/calternal-collab/Cargo.toml crates/plugins/files/src/tests/hidden_entries.rs crates/plugins/files/src/index.rs crates/plugins/files/src/dav.rs crates/plugins/files/src/lib.rs crates/plugins/files/src/listing.rs crates/plugins/files/src/thumbnails.rs crates/plugins/files/src/uploads.rs crates/plugins/files/src/user_bytes.rs crates/plugins/files/src/shares.rs crates/plugins/files/src/pins.rs crates/plugins/files/src/archive.rs crates/plugins/files/Cargo.toml apps/web/src/routes/invite/[token]/+page.svelte crates/plugins/files/proptest-regressions/lib.txt apps/web/src/routes/f/[id]/+page.svelte apps/web/src/routes/layout.css crates/calternal-plugin/migrations/0001_plugin_state.sql crates/calternal-plugin/src/user_settings.rs crates/calternal-plugin/src/zone.rs crates/calternal-plugin/src/state.rs crates/calternal-plugin/src/lib.rs crates/calternal-plugin/Cargo.toml crates/calternal-sync/root_identity_campaign.py crates/calternal-sync/root_guard_campaign.py crates/calternal-sync/local_failure_campaign.py crates/calternal-sync/changing_file_campaign.py crates/calternal-sync/download_race_campaign.py crates/calternal-sync/pending_rename_campaign.py crates/calternal-sync/run_campaigns.py crates/calternal-sync/sync_bench.py crates/calternal-sync/random_campaign.py crates/calternal-sync/integration_campaign.py crates/calternal-sync/mass_deletion_campaign.py crates/calternal-sync/mid_transfer_campaign.py crates/calternal-sync/type_flip_campaign.py crates/calternal-api/src/lib.rs crates/calternal-api/Cargo.toml crates/calternal-sync/src/credentials.rs crates/calternal-sync/src/bin/calternald.rs crates/calternal-sync/src/transfer.rs crates/calternal-sync/src/journal.rs crates/calternal-sync/src/local.rs crates/calternal-sync/src/remote.rs crates/calternal-sync/src/lib.rs crates/calternal-sync/src/finder_tags.rs crates/calternal-sync/src/plan.rs crates/calternal-sync/src/config.rs crates/calternal-sync/src/engine.rs crates/calternal-sync/Cargo.toml crates/calternal-sync/workload_campaign.py crates/calternal-sync/feed_delta_campaign.py crates/calternal-sync/feed_rescan_campaign.py apps/web/src/routes/settings/appearance/BackgroundGroup.svelte apps/web/src/routes/settings/appearance/ColourPickerButton.svelte apps/web/src/routes/settings/appearance/FontsGroup.svelte apps/web/src/routes/settings/appearance/BackgroundPreview.svelte apps/web/src/routes/settings/appearance/AppearanceSection.svelte apps/web/src/routes/settings/appearance/UnsplashSheet.svelte apps/web/src/routes/settings/parts/SettingsStack.svelte apps/web/src/routes/settings/parts/settings-forms.css apps/web/src/routes/settings/parts/GroupStatus.svelte apps/web/src/routes/settings/parts/icons.ts apps/web/src/routes/settings/parts/RowAction.svelte apps/web/src/routes/settings/parts/AccountRow.svelte apps/web/src/routes/settings/parts/AccountRow.svelte.test.ts apps/web/src/routes/settings/parts/StateChip.svelte apps/web/src/routes/settings/parts/SettingsGroup.svelte apps/web/src/routes/settings/parts/SettingsGroup.svelte.test.ts apps/web/src/routes/settings/parts/AccountList.svelte apps/web/src/routes/settings/sections.test.ts apps/web/src/hooks.client.ts package.json README.md apps/web/src/routes/settings/plugins/PluginsSection.svelte crates/calternal-auth/Cargo.lock apps/web/src/routes/settings/notifications/NotificationsSection.svelte crates/calternal-auth/migrations/0008_app_password_scopes.sql crates/calternal-auth/migrations/0004_app_passwords.sql crates/calternal-auth/migrations/0006_transfer_destination.sql crates/calternal-auth/migrations/0007_read_only_agent_scope.sql crates/calternal-auth/migrations/0002_authority.sql crates/calternal-auth/migrations/0005_user_deletion.sql crates/calternal-auth/migrations/0003_recovery_key.sql crates/calternal-auth/migrations/0001_auth.sql crates/calternal-auth/migrations/0009_user_quotas.sql apps/web/src/routes/settings/admin/UnsplashKeyGroup.svelte apps/web/src/routes/settings/admin/BackupsGroup.svelte apps/web/src/routes/settings/admin/InvitationsGroup.svelte apps/web/src/routes/settings/admin/SystemGroup.svelte apps/web/src/routes/settings/admin/JobsGroup.svelte apps/web/src/routes/settings/admin/AdminSection.svelte apps/web/src/routes/settings/admin/SignInGroup.svelte apps/web/src/routes/settings/admin/QuotaLimitField.svelte apps/web/src/routes/settings/admin/ConfigGroup.svelte apps/web/src/routes/settings/admin/UsersGroup.svelte apps/web/src/routes/settings/account/PasskeysGroup.svelte apps/web/src/routes/settings/account/RecoveryGroup.svelte apps/web/src/routes/settings/account/AppPasswordsGroup.svelte apps/web/src/routes/settings/account/RecoveryKeySheet.svelte apps/web/src/routes/settings/account/ProfileGroup.svelte apps/web/src/routes/settings/account/StorageGroup.svelte apps/web/src/routes/settings/account/SignInMethodsGroup.svelte apps/web/src/routes/settings/account/AccountSection.svelte apps/web/src/routes/settings/account/SessionsGroup.svelte apps/web/src/routes/settings/calendars/CalendarsSection.svelte apps/web/src/routes/settings/calendars/calendarAccounts.ts apps/web/src/routes/settings/api.svelte.test.ts apps/web/src/routes/settings/api.svelte.ts crates/calternal-auth/src/passkey.rs crates/calternal-auth/src/oidc.rs crates/calternal-auth/src/recovery.rs crates/calternal-auth/src/api.rs apps/web/src/routes/settings/editor/EditorSection.svelte apps/web/src/routes/settings/sections.ts crates/calternal-auth/src/api/cli_login.rs crates/calternal-auth/src/token.rs crates/calternal-auth/src/lib.rs crates/calternal-auth/src/error.rs crates/calternal-auth/src/profile_signing.rs crates/calternal-auth/src/store.rs crates/calternal-auth/Cargo.toml apps/web/src/routes/settings/jobs/JobRow.svelte apps/web/src/routes/settings/ai/AiSection.svelte apps/web/src/routes/settings/ai/TurnHistory.svelte apps/web/src/routes/settings/jobs/JobDetails.svelte apps/web/src/routes/settings/jobs/MyJobsGroup.svelte apps/web/src/routes/settings/mail/MailSection.svelte.test.ts apps/web/src/routes/settings/mail/MailSection.svelte apps/web/src/routes/settings/[...path]/+page.svelte bun.lock Cargo.toml CLAUDE.md apps/web/src/routes/settings/photos/PhotosSection.svelte LICENSE crates/calternal-path/tests/path_properties.rs crates/calternal-path/src/lib.rs crates/calternal-path/Cargo.toml packages/ui/THEMES.md packages/ui/package.json packages/ui/README.md assets/brand/app-icon/light.png assets/brand/app-icon/mono.png assets/brand/app-icon/dark.png Cargo.lock deploy/media-sandbox-dropcaps.c deploy/Containerfile.runtime packages/editor/vitest.config.ts packages/editor/tsconfig.json packages/editor/UPSTREAM packages/editor/package.json packages/editor/README.md packages/editor/svelte.config.js deploy/agent/Containerfile apps/web/src/lib/search/registry.test.ts deploy/agent/install-agent-tool deploy/agent/agent-turn.mjs deploy/agent/agent-container-idle deploy/cloud/README.md deploy/cloud/calternal-cloud.container deploy/cloud/calternal-cloud.env.example deploy/media-sandbox deploy/deploy-cloud.sh deploy/nested-podman/Containerfile deploy/nested-podman/run-outer.sh deploy/nested-podman/inner-podman-service deploy/nested-podman/runtime-entrypoint deploy/nested-podman/smoke.sh deploy/nested-podman/storage-native.conf deploy/nested-podman/storage-fuse.conf packages/api-client/package.json packages/api-client/README.md packages/api-client/check-generated.sh deploy/sync/calternald.service.in deploy/sync/org.calternal.calternald.plist.in packages/editor/src/composerNoteSession.test.ts packages/editor/src/collaborationHistoryKeys.ts packages/editor/src/callout.ts packages/api-client/src/generated.ts packages/api-client/src/index.ts packages/api-client/src/index.test.ts packages/editor/src/blockSelectDecoration.ts packages/editor/src/listIndent.test.ts packages/editor/src/noteCards.test.ts packages/editor/src/noteCards.ts packages/editor/src/extensions.ts packages/editor/src/moveBlock.ts packages/editor/src/reducedMotion.svelte.ts packages/editor/src/markdown.roundtrip.svelte.test.ts packages/editor/test/setup.ts packages/editor/test/random.ts packages/editor/test/pmDocGen.ts packages/editor/src/source.ts packages/editor/src/Editor.svelte.test.ts packages/editor/src/listIndent.ts packages/editor/src/index.ts packages/editor/src/anchor.test.ts packages/editor/src/noteCardsDecoration.ts packages/editor/src/markdown.ts packages/editor/src/blockSelection.ts packages/editor/src/wikilinkSyntax.ts packages/editor/src/markdown.vectors.test.ts packages/editor/src/syntaxHighlight.ts packages/editor/src/shortcuts.ts packages/editor/src/formatCommands.svelte.test.ts packages/editor/src/extensions.dragHandle.test.ts packages/editor/src/wikilinks.ts packages/editor/src/collaborationUndo.test.ts packages/editor/src/anchor.ts packages/editor/src/blockHitTest.ts packages/editor/src/blockHitTest.test.ts packages/editor/src/attachmentPaste.ts packages/editor/src/wikilinks.test.ts packages/editor/src/slash.touch.svelte.test.ts packages/editor/src/slash.test.ts packages/editor/src/syntaxHighlight.test.ts packages/editor/src/calloutLabel.ts packages/editor/src/imagePipe.ts packages/editor/src/chromeInteraction.svelte.ts packages/editor/src/markdown.linemix.svelte.test.ts packages/editor/src/slash.ts packages/editor/src/image.ts packages/editor/src/attachmentPaste.test.ts packages/editor/src/markdown.test.ts packages/editor/src/syntaxLanguages.ts packages/editor/src/Editor.svelte packages/editor/src/components/ImageView.svelte packages/editor/src/components/CalloutView.svelte packages/editor/src/formatCommands.ts packages/editor/src/linkCommand.ts packages/editor/src/composerNoteSession.ts packages/ui/src/clipboard.ts packages/ui/src/timezone-cities.ts packages/ui/src/floating.ts packages/ui/src/motion.ts packages/ui/src/themes.css packages/ui/src/themes.ts packages/ui/src/solar.ts packages/ui/src/weekStart.ts packages/ui/src/components/PopoverSurface.svelte packages/ui/src/components/tooltip/tip.ts packages/ui/src/components/tooltip/place.ts packages/ui/src/components/tooltip/TooltipLayer.svelte packages/ui/src/components/tooltip/warmth.ts packages/ui/src/components/FloatingSidebar.svelte packages/ui/src/components/SidebarSectionHeader.svelte packages/ui/src/components/ProgressiveBlur.svelte packages/ui/src/components/TagPill.svelte packages/ui/src/components/WeekBlob.svelte packages/ui/src/components/PrimaryPill.svelte packages/ui/src/components/TodayButton.svelte packages/ui/src/components/ChromeActions.svelte packages/ui/src/components/Fab.svelte packages/ui/src/components/NoticeBanner.svelte packages/ui/src/components/tabOrder.ts packages/ui/src/components/calendar/CalendarTools.svelte packages/ui/src/components/calendar/ActivityStack.svelte packages/ui/src/components/calendar/GridColumn.svelte packages/ui/src/components/calendar/RepairList.svelte packages/ui/src/components/calendar/YearHeatmap.svelte packages/ui/src/components/calendar/CalendarTitle.svelte packages/ui/src/components/calendar/attachments.ts packages/ui/src/components/calendar/MonthGrid.svelte packages/ui/src/components/calendar/TimeGrid.svelte packages/ui/src/components/calendar/CalendarPopover.svelte packages/ui/src/components/calendar/MiniMonth.svelte packages/ui/src/components/calendar/model.ts packages/ui/src/components/calendar/AttachmentDeck.svelte packages/ui/src/components/calendar/LogEntryEditor.svelte packages/ui/src/components/calendar/ItemPreview.svelte packages/ui/src/components/calendar/zoom.ts packages/ui/src/components/calendar/AgendaList.svelte packages/ui/src/components/calendar/layout.ts packages/ui/src/components/UIHeading.svelte packages/ui/src/components/StatusPill.svelte packages/ui/src/components/DateStrip.svelte packages/ui/src/components/menu/types.ts packages/ui/src/components/menu/FloatingSurface.svelte packages/ui/src/components/menu/Menu.svelte packages/ui/src/components/menu/MenuSeparator.svelte packages/ui/src/components/menu/MenuItem.svelte packages/ui/src/components/SelectionBar.svelte packages/ui/src/components/Toggle.svelte packages/ui/src/components/PillGroup.svelte packages/ui/src/components/OverlaySurface.svelte packages/ui/src/components/surfaceViewport.svelte.ts packages/ui/src/components/CopyLink.svelte packages/ui/src/components/notes/NoteMentionsCard.svelte packages/ui/src/components/notes/NoteProperties.svelte packages/ui/src/components/Card.svelte packages/ui/src/components/Kbd.svelte packages/ui/src/components/modeIsland.css packages/ui/src/components/segmentScroll.ts packages/ui/src/components/composer/FieldPopover.svelte packages/ui/src/components/composer/modeGlyphs.ts packages/ui/src/components/composer/ModePill.svelte packages/ui/src/components/composer/DraftStack.svelte packages/ui/src/components/composer/HighlightOverlay.svelte packages/ui/src/components/Disclosure.svelte packages/ui/src/components/viewer/ImageView.svelte packages/ui/src/components/viewer/TextView.svelte packages/ui/src/components/viewer/LiveMotion.svelte packages/ui/src/components/viewer/VideoView.svelte packages/ui/src/components/viewer/PdfView.svelte packages/ui/src/components/viewer/QuickLook.svelte packages/ui/src/components/ThemePicker.svelte packages/ui/src/components/LinkedHeading.svelte packages/ui/src/components/Pill.svelte packages/ui/src/components/TabBar.svelte packages/ui/src/index.ts packages/ui/src/actions/resizableEdge.ts packages/ui/src/actions/draggablePopover.ts packages/ui/src/actions/portal.ts packages/ui/src/tokens.css packages/ui/src/time.ts packages/ui/src/tags.ts packages/ui/src/formatPreferences.svelte.ts packages/ui/src/dateStrip.ts packages/ui/src/components/SegmentedControl.svelte packages/ui/src/components/SettingRow.svelte packages/ui/src/components/ModeHeader.svelte packages/ui/src/components/SidebarIcon.svelte packages/ui/src/components/pageChrome.ts packages/ui/src/components/Inspector.svelte packages/ui/src/components/Select.svelte packages/ui/src/components/files/FileIcon.svelte packages/ui/src/components/files/FileCollection.svelte packages/ui/src/components/files/FileThumb.svelte packages/ui/src/components/files/FileName.svelte packages/ui/src/components/files/FileSelectionCheckbox.svelte found only the web Timeline selection/AttachmentDeck implementation). I will reuse the existing ported AttachmentDeck mechanics and the screenshot layout details recorded in this issue.
Author
Owner

Finding: the referenced /home/kayg/Developer/calternal.js checkout has no macOS app sources or Swift Timeline view (rg --files found only the web Timeline selection and AttachmentDeck implementation). I will reuse the existing ported packages/ui AttachmentDeck mechanics and the screenshot layout details recorded in this issue.

Finding: the referenced /home/kayg/Developer/calternal.js checkout has no macOS app sources or Swift Timeline view (rg --files found only the web Timeline selection and AttachmentDeck implementation). I will reuse the existing ported packages/ui AttachmentDeck mechanics and the screenshot layout details recorded in this issue.
Author
Owner

Implementation decisions for review: a Task has no actual clock range in the current CalendarTask model, so its first line says “Task”; an Event with no start time says “Scheduled”. Arrow navigation selects a row and expands its attachment rows; Return opens the existing Calendar item preview. The Agenda visible range uses the earliest and latest intersecting day cards, and the mini month follows the first visible card's month. Attachment note previews load the full note body by stable note ID only after hover intent; image previews use the existing hash thumbnail route. These choices are recorded in DESIGN.md §38 where they add to the 2026-09-29 owner direction.

Implementation decisions for review: a Task has no actual clock range in the current CalendarTask model, so its first line says “Task”; an Event with no start time says “Scheduled”. Arrow navigation selects a row and expands its attachment rows; Return opens the existing Calendar item preview. The Agenda visible range uses the earliest and latest intersecting day cards, and the mini month follows the first visible card's month. Attachment note previews load the full note body by stable note ID only after hover intent; image previews use the existing hash thumbnail route. These choices are recorded in DESIGN.md §38 where they add to the 2026-09-29 owner direction.
Author
Owner

Targeted run: bun run test src/lib/calendar/agenda.svelte.test.ts passed all seven assertions but Vitest reported seven teardown errors because the test IntersectionObserver stub lacked unobserve(). I added that browser method to the mock and am rerunning the file.

Targeted run: `bun run test src/lib/calendar/agenda.svelte.test.ts` passed all seven assertions but Vitest reported seven teardown errors because the test IntersectionObserver stub lacked `unobserve()`. I added that browser method to the mock and am rerunning the file.
Author
Owner

Production build finding: the Agenda attachment preview route emitted two Svelte state_referenced_locally diagnostics because its route tracker initializer read data.view and data.date. I changed the tracker to start empty and use the existing effect's derived route values. The next bun run build completed with no diagnostics from the Agenda route. It still reports the merged tree's existing AccountRow.svelte unused selector and vendor use client bundling notices.

Production build finding: the Agenda attachment preview route emitted two Svelte `state_referenced_locally` diagnostics because its route tracker initializer read `data.view` and `data.date`. I changed the tracker to start empty and use the existing effect's derived route values. The next `bun run build` completed with no diagnostics from the Agenda route. It still reports the merged tree's existing `AccountRow.svelte` unused selector and vendor `use client` bundling notices.
Author
Owner

The first production screenshot run stopped before capture with ReferenceError: yesterday is not defined in the browser fixture callback. The callback used the adjacent date to upload a second Journal entry but only accepted today and photoBase64. I added yesterday to its argument destructuring, checked the script with node --check, and committed the fix as 747a2770.

The first production screenshot run stopped before capture with `ReferenceError: yesterday is not defined` in the browser fixture callback. The callback used the adjacent date to upload a second Journal entry but only accepted `today` and `photoBase64`. I added `yesterday` to its argument destructuring, checked the script with `node --check`, and committed the fix as `747a2770`.
Author
Owner

The first two attachment-hover retries used a server binary built from the micro-motion worktree. Its embedded frontend came from that worktree, not this one: this server embeds apps/web/build at compile time (crates/calternal-server/src/main.rs uses #[folder = "../../apps/web/build/"]). The browser showed component scope svelte-1lv62q2 while this worktree's CSS used svelte-rj3efq, and the stale list resolved to pointer-events: none. I stopped treating that result as an Agenda hit-target defect. I will capture against a server built from this worktree after its production frontend build.

The first two attachment-hover retries used a server binary built from the `micro-motion` worktree. Its embedded frontend came from that worktree, not this one: this server embeds `apps/web/build` at compile time (`crates/calternal-server/src/main.rs` uses `#[folder = "../../apps/web/build/"]`). The browser showed component scope `svelte-1lv62q2` while this worktree's CSS used `svelte-rj3efq`, and the stale list resolved to `pointer-events: none`. I stopped treating that result as an Agenda hit-target defect. I will capture against a server built from this worktree after its production frontend build.
Author
Owner

Decision from the attachment hit-target implementation: on touch, the collapsed deck keeps a 44 px toggle target, and tapping a visible thumbnail also expands the attachment rows. I added this behavior to docs/DESIGN.md §38 so the touch interaction is reviewable with the Agenda rules.

Decision from the attachment hit-target implementation: on touch, the collapsed deck keeps a 44 px toggle target, and tapping a visible thumbnail also expands the attachment rows. I added this behavior to docs/DESIGN.md §38 so the touch interaction is reviewable with the Agenda rules.
Author
Owner

Production capture finding: at 390 px, .mini-month .d.in-range matched the hidden .desktop-sidebar copy before the visible phone drawer. Playwright logged 60 retries resolving the hidden Monday 28 September button, then timed out. The capture now scopes the range selector to .sidebar-sheet-content on phones and .desktop-sidebar on tablet/desktop. It also uses the harness's current-build asset override with the compatible local server.

The rerun passed: 3 widths × 2 themes × 3 Agenda states, plus six visible mini-month range screenshots. It produced 24 PNGs at 390×844, 820×1024, and 1440×900. Fix committed as f0e0f7bc.

Production capture finding: at 390 px, `.mini-month .d.in-range` matched the hidden `.desktop-sidebar` copy before the visible phone drawer. Playwright logged 60 retries resolving the hidden Monday 28 September button, then timed out. The capture now scopes the range selector to `.sidebar-sheet-content` on phones and `.desktop-sidebar` on tablet/desktop. It also uses the harness's current-build asset override with the compatible local server. The rerun passed: 3 widths × 2 themes × 3 Agenda states, plus six visible mini-month range screenshots. It produced 24 PNGs at 390×844, 820×1024, and 1440×900. Fix committed as `f0e0f7bc`.
Author
Owner

Production Agenda screenshots: 24 captures from the current SPA, at 390, 820, and 1440 px in light and dark themes. Each viewport has unfocused, attachment-hover, selected, and mini-month range states.

390 px

820 px

1440 px

Production Agenda screenshots: 24 captures from the current SPA, at 390, 820, and 1440 px in light and dark themes. Each viewport has unfocused, attachment-hover, selected, and mini-month range states. ### 390 px - light: [unfocused](https://git.kayg.org/attachments/a2eef706-37a3-4af2-813b-ced66956046e), [hover](https://git.kayg.org/attachments/9fee6e06-b17f-4b83-8a9f-f8186ff0e3b7), [selected](https://git.kayg.org/attachments/34b64f19-0fc3-451e-94d1-8e62b44c517f), [mini-month range](https://git.kayg.org/attachments/d147d6c3-96b6-4c44-8747-11c5c0115baf) - dark: [unfocused](https://git.kayg.org/attachments/5e855698-c675-450a-994b-07e7af7bfa9b), [hover](https://git.kayg.org/attachments/afd36f3e-5f2b-45e2-afa7-9ce8c2a15b9e), [selected](https://git.kayg.org/attachments/97d1f273-1f47-401e-aefd-91a408c0b83e), [mini-month range](https://git.kayg.org/attachments/710c1b74-b01e-495a-b2cb-c57a4525bbac) ### 820 px - light: [unfocused](https://git.kayg.org/attachments/8b87209f-f377-4a60-af0f-7d67724f22eb), [hover](https://git.kayg.org/attachments/6586d510-508f-440e-888b-13e387ff7367), [selected](https://git.kayg.org/attachments/cd38bd77-87f1-403b-85a7-9f0a6c2e5d5f), [mini-month range](https://git.kayg.org/attachments/469c631e-e139-4fa2-99ad-d4f3fb6c67ca) - dark: [unfocused](https://git.kayg.org/attachments/4d333d1d-eb76-4865-a73b-3a228a304b59), [hover](https://git.kayg.org/attachments/49728064-b5a4-45aa-b89c-902b5487f9b6), [selected](https://git.kayg.org/attachments/61ee7cee-b7cd-4cd4-bf3e-67f6879aac33), [mini-month range](https://git.kayg.org/attachments/5d21d381-b9b9-484e-a0eb-97d40648cc61) ### 1440 px - light: [unfocused](https://git.kayg.org/attachments/08ddfbb2-7f85-449d-9234-7b318a1fc094), [hover](https://git.kayg.org/attachments/be708cf9-24af-4e47-8e2e-de5aa6b7ddcb), [selected](https://git.kayg.org/attachments/e7ecaabc-3498-434b-9873-0be520d3786c), [mini-month range](https://git.kayg.org/attachments/b480a1fe-f4ba-4f4c-b842-7123194fcd3d) - dark: [unfocused](https://git.kayg.org/attachments/2fc3d439-6df9-4f33-a219-d46b31625299), [hover](https://git.kayg.org/attachments/d6cef394-8b3a-4185-b6b5-152343113225), [selected](https://git.kayg.org/attachments/c6ac6326-33e7-4326-9688-dc1972a0edf5), [mini-month range](https://git.kayg.org/attachments/7651889f-c3f3-4dc8-be3f-d390d433bbb5)
Author
Owner

Adversarial round finding (server stayed alive at the end):

  • PUT /api/v1/appearance with a 200,000-character font ID and a 3 MiB body returned 502 local adversarial server is unavailable. The 502 was emitted by tests/adversarial/editor-proxy.mjs after an upstream request error; the probe expected 4xx / 413. Other requests continued to work.
  • A DAV VTODO created with DESCRIPTION:Adversarial reminder note returned 201 with an ETag, but the subsequent GET response did not contain that DESCRIPTION. The probe reported Reminders response lost the VTODO description.

These are non-SLOW findings from APIs merged from dev; Agenda adds no API endpoint and this job did not change their behavior. Recorded here for owner follow-up. Remaining adversarial findings were marked SLOW and the server reported alive.

Adversarial round finding (server stayed alive at the end): - `PUT /api/v1/appearance` with a 200,000-character font ID and a 3 MiB body returned 502 `local adversarial server is unavailable`. The 502 was emitted by `tests/adversarial/editor-proxy.mjs` after an upstream request error; the probe expected 4xx / 413. Other requests continued to work. - A DAV VTODO created with `DESCRIPTION:Adversarial reminder note` returned 201 with an ETag, but the subsequent GET response did not contain that DESCRIPTION. The probe reported `Reminders response lost the VTODO description`. These are non-SLOW findings from APIs merged from `dev`; Agenda adds no API endpoint and this job did not change their behavior. Recorded here for owner follow-up. Remaining adversarial findings were marked SLOW and the server reported alive.
Author
Owner

Agenda #413 final report

Built and pushed the Agenda card view to job/agenda at f0e0f7bc9dc24e5b1666dcb9cf0ed4da6e299c6a.

Built

  • One card per visible day, two-line entries, tag dots, past-item fading, attachment thumbnails, delayed hover previews, and selected rows that expand attachment links.
  • Keyboard row selection and preview controls, plus visible Agenda range propagation to the mini-month.
  • Production screenshot run: 24 captures covering 390/820/1440 px, light/dark, unfocused/hover/selected, and mini-month range. The files are attached in the screenshot comment above.

Files

  • packages/ui/src/components/calendar/AgendaList.svelte
  • packages/ui/src/components/calendar/AttachmentDeck.svelte
  • packages/ui/src/components/calendar/MiniMonth.svelte
  • packages/ui/src/components/calendar/attachments.ts
  • apps/web/src/routes/calendar/[view]/[date]/+page.svelte
  • apps/web/src/lib/calendar/sidebarState.svelte.ts
  • apps/web/src/lib/components/app-sidebar.svelte
  • apps/web/src/lib/files/api.ts
  • apps/web/src/lib/calendar/agenda.svelte.test.ts
  • apps/web/e2e/agenda-review-413.mjs
  • apps/web/e2e/calendar.mjs
  • apps/web/e2e/webmcp.mjs
  • docs/DESIGN.md
  • Merged-dev files present on the branch: apps/web/src/routes/settings/apps/AppsSection.svelte, apps/web/src/routes/settings/parts/AccountRow.svelte, apps/web/src/routes/settings/parts/icons.ts.

Gates

  • cargo fmt --check: exit 0; stdout/stderr were empty.
  • cargo clippy --all-targets -- -D warnings: interrupted at the four-hour job cap (exit 130). Its final output was:
        Checking argon2 v0.5.3
        Checking openidconnect v4.0.1
    
  • cargo test: not run because the four-hour cap was reached.
  • bun run check: svelte-check found 0 errors and 1 warning in 1 file. The warning is the merged-dev unused selector in AccountRow.svelte.
  • bun run test:
     Test Files  125 passed (125)
          Tests  801 passed (801)
       Start at  13:10:27
       Duration  99.42s (transform 56%, environment 17%, import 14%, tests 9%, setup 4%)
    
  • Adversarial API-only pass: server alive at end. The two oversized Appearance requests returned proxy 502 responses; a DAV VTODO DESCRIPTION was absent on its subsequent GET. These merged-dev API/DAV findings are detailed in the preceding comment. Other findings were marked SLOW.

Decisions

  • Tasks display Task; untimed Events display Scheduled.
  • The first and last visible Agenda dates drive the mini-month band; the mini-month follows the first visible date.
  • Arrow keys move selection, Return opens the preview, and Escape closes it.
  • A collapsed attachment deck keeps a 44 px touch target; tapping a visible thumbnail expands the attachment rows.
  • The requested native macOS Timeline source was not present under the supplied calternal.js tree, so the implementation reuses its available ported AttachmentDeck component and the owner’s reference screenshots.

Gaps

  • Full Clippy and cargo test results remain pending because the job reached its four-hour limit. Cargo output was cleaned (Removed 10794 files, 5.3GiB total), and apps/web/build plus apps/web/.svelte-kit were removed.
  • The adversarial Appearance and DAV findings need follow-up outside this Agenda UI change.

The job branch was pushed to job/agenda; no merge into dev was performed.

## Agenda #413 final report Built and pushed the Agenda card view to `job/agenda` at `f0e0f7bc9dc24e5b1666dcb9cf0ed4da6e299c6a`. ### Built - One card per visible day, two-line entries, tag dots, past-item fading, attachment thumbnails, delayed hover previews, and selected rows that expand attachment links. - Keyboard row selection and preview controls, plus visible Agenda range propagation to the mini-month. - Production screenshot run: 24 captures covering 390/820/1440 px, light/dark, unfocused/hover/selected, and mini-month range. The files are attached in the screenshot comment above. ### Files - `packages/ui/src/components/calendar/AgendaList.svelte` - `packages/ui/src/components/calendar/AttachmentDeck.svelte` - `packages/ui/src/components/calendar/MiniMonth.svelte` - `packages/ui/src/components/calendar/attachments.ts` - `apps/web/src/routes/calendar/[view]/[date]/+page.svelte` - `apps/web/src/lib/calendar/sidebarState.svelte.ts` - `apps/web/src/lib/components/app-sidebar.svelte` - `apps/web/src/lib/files/api.ts` - `apps/web/src/lib/calendar/agenda.svelte.test.ts` - `apps/web/e2e/agenda-review-413.mjs` - `apps/web/e2e/calendar.mjs` - `apps/web/e2e/webmcp.mjs` - `docs/DESIGN.md` - Merged-dev files present on the branch: `apps/web/src/routes/settings/apps/AppsSection.svelte`, `apps/web/src/routes/settings/parts/AccountRow.svelte`, `apps/web/src/routes/settings/parts/icons.ts`. ### Gates - `cargo fmt --check`: exit 0; stdout/stderr were empty. - `cargo clippy --all-targets -- -D warnings`: interrupted at the four-hour job cap (exit 130). Its final output was: ```text Checking argon2 v0.5.3 Checking openidconnect v4.0.1 ``` - `cargo test`: not run because the four-hour cap was reached. - `bun run check`: `svelte-check found 0 errors and 1 warning in 1 file`. The warning is the merged-dev unused selector in `AccountRow.svelte`. - `bun run test`: ```text Test Files 125 passed (125) Tests 801 passed (801) Start at 13:10:27 Duration 99.42s (transform 56%, environment 17%, import 14%, tests 9%, setup 4%) ``` - Adversarial API-only pass: server alive at end. The two oversized Appearance requests returned proxy 502 responses; a DAV VTODO `DESCRIPTION` was absent on its subsequent GET. These merged-dev API/DAV findings are detailed in the preceding comment. Other findings were marked SLOW. ### Decisions - Tasks display `Task`; untimed Events display `Scheduled`. - The first and last visible Agenda dates drive the mini-month band; the mini-month follows the first visible date. - Arrow keys move selection, Return opens the preview, and Escape closes it. - A collapsed attachment deck keeps a 44 px touch target; tapping a visible thumbnail expands the attachment rows. - The requested native macOS Timeline source was not present under the supplied `calternal.js` tree, so the implementation reuses its available ported `AttachmentDeck` component and the owner’s reference screenshots. ### Gaps - Full Clippy and `cargo test` results remain pending because the job reached its four-hour limit. Cargo output was cleaned (`Removed 10794 files, 5.3GiB total`), and `apps/web/build` plus `apps/web/.svelte-kit` were removed. - The adversarial Appearance and DAV findings need follow-up outside this Agenda UI change. The job branch was pushed to `job/agenda`; no merge into `dev` was performed.
Author
Owner

Resuming #413 on job/agenda-413 at f0e0f7bc9dc24e5b1666dcb9cf0ed4da6e299c6a. The job branch's current base is ce4393062a7b90b3f3e266d8ff80dbc3101dce35; current dev is 70fce975945c272c7ed7f3e1844949e818ac778f. I am tracing the rejected visual findings against the Agenda implementation before editing.

Resuming #413 on `job/agenda-413` at `f0e0f7bc9dc24e5b1666dcb9cf0ed4da6e299c6a`. The job branch's current base is `ce4393062a7b90b3f3e266d8ff80dbc3101dce35`; current `dev` is `70fce975945c272c7ed7f3e1844949e818ac778f`. I am tracing the rejected visual findings against the Agenda implementation before editing.
Author
Owner

#413 findings from the rejected captures and current code:

  • agenda-413-1440-light-selected.png shows 29 Sep before 28 Sep, with “Show earlier days” after both cards. loadAgenda sorts each page descending and appends it, and AgendaList renders the paging control at the bottom.
  • The count sits left of the card edge because .day-tools puts the badge before two opacity-hidden buttons that still occupy flex width.
  • The selected row paints the .line and .more button separately. The marker is inside the line's leading grid cell, so the blue surface starts at the text button and the dot sits on its edge.
  • AgendaList renders ActivityStack thumbnails in a separate .saved row after the Log list. The fixture uploads the photo and document, so their daily activity stack appears after “Draft the route” without belonging to a Log entry.
  • Attachment preview receives a warm tooltip from each collapsed attachment button as well as the preview title. The preview handler already checks (hover: hover) and (pointer: fine); the screenshot harness used a mouse at 390 px and therefore did not model a touch device.

Decisions for the implementation: the Agenda starts at its anchor date and loads 14 days forward; each earlier page is prepended in calendar order and the earlier-days control sits at the top. Day cards can collapse from a separate header control; their count badge is visible only while collapsed. The Agenda omits unlinked daily activity stacks so each attachment deck stays under its Log entry. Dates and time ranges use shared UI formatters.

#413 findings from the rejected captures and current code: - `agenda-413-1440-light-selected.png` shows 29 Sep before 28 Sep, with “Show earlier days” after both cards. `loadAgenda` sorts each page descending and appends it, and `AgendaList` renders the paging control at the bottom. - The count sits left of the card edge because `.day-tools` puts the badge before two opacity-hidden buttons that still occupy flex width. - The selected row paints the `.line` and `.more` button separately. The marker is inside the line's leading grid cell, so the blue surface starts at the text button and the dot sits on its edge. - `AgendaList` renders `ActivityStack` thumbnails in a separate `.saved` row after the Log list. The fixture uploads the photo and document, so their daily activity stack appears after “Draft the route” without belonging to a Log entry. - Attachment preview receives a warm tooltip from each collapsed attachment button as well as the preview title. The preview handler already checks `(hover: hover) and (pointer: fine)`; the screenshot harness used a mouse at 390 px and therefore did not model a touch device. Decisions for the implementation: the Agenda starts at its anchor date and loads 14 days forward; each earlier page is prepended in calendar order and the earlier-days control sits at the top. Day cards can collapse from a separate header control; their count badge is visible only while collapsed. The Agenda omits unlinked daily activity stacks so each attachment deck stays under its Log entry. Dates and time ranges use shared UI formatters.
Author
Owner

Gate finding: cargo test -p calternal-dav exposed one stale replay-test URL. The test PUTs to the retired /journal/ path, which the server intentionally returns as 410 after DESIGN §46 moved Journal entries into per-area calendars. The 403 and CalDAV precondition assertions remain valid on /untagged/; I will update only the test resource URL and keep those expectations unchanged.

Gate finding: cargo test -p calternal-dav exposed one stale replay-test URL. The test PUTs to the retired /journal/ path, which the server intentionally returns as 410 after DESIGN §46 moved Journal entries into per-area calendars. The 403 and CalDAV precondition assertions remain valid on /untagged/; I will update only the test resource URL and keep those expectations unchanged.
Author
Owner

Gate finding: calternal-plugin-notes tests had one stale migration setup. Its test dropped the latest migration with pop(), but migration 19 now follows the VTODO wire-epoch migration 18, so the setup already included the epoch change and the unchanged assert_ne check failed. I will exclude migration version 18 by identity and keep both epoch assertions unchanged.

Gate finding: calternal-plugin-notes tests had one stale migration setup. Its test dropped the latest migration with pop(), but migration 19 now follows the VTODO wire-epoch migration 18, so the setup already included the epoch change and the unchanged assert_ne check failed. I will exclude migration version 18 by identity and keep both epoch assertions unchanged.
Author
Owner

Final report — agenda-413

Branch: job/agenda-413
Head: d18aa5d0bf4dc33812e75ab7ef641a00abadc23f
No push, deploy or merge was made.

Built

  • Updated Agenda rows with a continuous selected surface, user-formatted dates and shared time ranges, collapsed-only accessible day counts, ordered earlier-day paging, and item-owned attachment decks. Touch does not show hover previews; deck taps expand it and thumbnail taps open Quick Look.
  • Put the mini month before Calendar views in the sidebar, following the merged dev order.
  • Added and ran the real-app screenshot E2E at 390, 820 and 1440 px in light and dark, with unfocused, hover/touch, selected, expanded-deck and sidebar-range states, plus two 3x crops. The 34 PNGs are attached below and saved locally under artifacts/agenda-413/.
  • Fixed two stale merged-branch test setups without changing their expectations: the DAV replay now uses the live /untagged/ route from DESIGN §46; the migration test excludes migration 18 by version so later migrations cannot mask the VTODO wire-epoch upgrade from owner issue #393.

Files

Agenda implementation: packages/ui/src/time.ts, packages/ui/src/index.ts, packages/ui/src/components/calendar/AgendaList.svelte, packages/ui/src/components/calendar/AttachmentDeck.svelte, packages/ui/src/components/calendar/ItemPreview.svelte, apps/web/src/routes/calendar/[view]/[date]/+page.svelte, and apps/web/src/lib/components/app-sidebar.svelte.

Tests, evidence and design: apps/web/src/lib/calendar/agenda.svelte.test.ts, apps/web/e2e/agenda-review-413.mjs, docs/DESIGN.md, crates/calternal-dav/tests/apple_replay.rs, and crates/plugins/notes/src/lib.rs. The required dev merge is 39308d81a; it also brought the current DAV and Notes changes plus lockfile updates.

Gate output

cargo fmt --check returned exit code 0 with no output.

cargo clippy -p calternal-dav --all-targets -- -D warnings:

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.68s

cargo test -p calternal-dav:

    Finished `test` profile [unoptimized + debuginfo] target(s) in 47.13s
test result: 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

cargo clippy -p calternal-notes-core --all-targets -- -D warnings:

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 03s

cargo test -p calternal-notes-core:

test result: 499 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s
test result: 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.35s
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

cargo clippy -p calternal-plugin-notes --all-targets -- -D warnings:

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.92s

cargo test -p calternal-plugin-notes:

test result: 121 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 101.20s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

Production build and Agenda E2E:

PASS Agenda #413: 3 widths × 2 themes × unfocused, hover/touch, selected, expanded deck and mini-month range; screenshots in /home/kayg/Developer/calternal-wt/agenda-413/artifacts/agenda-413

One DAV adversarial round:

finish 200
login web 200 installation 200
cookies [ "__Host-calternal_session secure=true httpOnly=true sameSite=Lax" ]
invite 200
second user finish 200
fixture passkey login requests: 30/30
DAV home listing concurrency: 15/24 returned expected rate_limited backpressure
DAV Apple property, write-capability, MKCALENDAR and adversarial probes completed

Server build:

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 81m 47s

Known gaps

The job reached the owner’s roughly four-hour time box. cargo clippy -p calternal-server --all-targets -- -D warnings was cancelled while compiling dependencies. cargo test -p calternal-server, bun run check, and bun run test remain unrun. The production web build and the real-app screenshot E2E did complete successfully; the build emitted existing Rolldown use client notices.

The broader #411 visible-range mini-month work beyond the Agenda sidebar ordering was not part of this job.

Decisions

  • Older Agenda pages fetch 14 calendar days per request. DESIGN §38 sets ordering and top-control behavior but does not set the page size; this is the bounded batch chosen for the implementation.
  • Day counts appear only while the day is collapsed, as required by the review and now documented in DESIGN §38.
  • Earlier pages prepend while preserving the page scroll offset, also recorded in DESIGN §38.

Attached screenshots

## Final report — agenda-413 Branch: `job/agenda-413` Head: `d18aa5d0bf4dc33812e75ab7ef641a00abadc23f` No push, deploy or merge was made. ### Built - Updated Agenda rows with a continuous selected surface, user-formatted dates and shared time ranges, collapsed-only accessible day counts, ordered earlier-day paging, and item-owned attachment decks. Touch does not show hover previews; deck taps expand it and thumbnail taps open Quick Look. - Put the mini month before Calendar views in the sidebar, following the merged `dev` order. - Added and ran the real-app screenshot E2E at 390, 820 and 1440 px in light and dark, with unfocused, hover/touch, selected, expanded-deck and sidebar-range states, plus two 3x crops. The 34 PNGs are attached below and saved locally under `artifacts/agenda-413/`. - Fixed two stale merged-branch test setups without changing their expectations: the DAV replay now uses the live `/untagged/` route from DESIGN §46; the migration test excludes migration 18 by version so later migrations cannot mask the VTODO wire-epoch upgrade from owner issue #393. ### Files Agenda implementation: `packages/ui/src/time.ts`, `packages/ui/src/index.ts`, `packages/ui/src/components/calendar/AgendaList.svelte`, `packages/ui/src/components/calendar/AttachmentDeck.svelte`, `packages/ui/src/components/calendar/ItemPreview.svelte`, `apps/web/src/routes/calendar/[view]/[date]/+page.svelte`, and `apps/web/src/lib/components/app-sidebar.svelte`. Tests, evidence and design: `apps/web/src/lib/calendar/agenda.svelte.test.ts`, `apps/web/e2e/agenda-review-413.mjs`, `docs/DESIGN.md`, `crates/calternal-dav/tests/apple_replay.rs`, and `crates/plugins/notes/src/lib.rs`. The required `dev` merge is `39308d81a`; it also brought the current DAV and Notes changes plus lockfile updates. ### Gate output `cargo fmt --check` returned exit code 0 with no output. `cargo clippy -p calternal-dav --all-targets -- -D warnings`: ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.68s ``` `cargo test -p calternal-dav`: ```text Finished `test` profile [unoptimized + debuginfo] target(s) in 47.13s test result: 31 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: 30 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` `cargo clippy -p calternal-notes-core --all-targets -- -D warnings`: ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 03s ``` `cargo test -p calternal-notes-core`: ```text test result: 499 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s test result: 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.35s test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` `cargo clippy -p calternal-plugin-notes --all-targets -- -D warnings`: ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.92s ``` `cargo test -p calternal-plugin-notes`: ```text test result: 121 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 101.20s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` Production build and Agenda E2E: ```text PASS Agenda #413: 3 widths × 2 themes × unfocused, hover/touch, selected, expanded deck and mini-month range; screenshots in /home/kayg/Developer/calternal-wt/agenda-413/artifacts/agenda-413 ``` One DAV adversarial round: ```text finish 200 login web 200 installation 200 cookies [ "__Host-calternal_session secure=true httpOnly=true sameSite=Lax" ] invite 200 second user finish 200 fixture passkey login requests: 30/30 DAV home listing concurrency: 15/24 returned expected rate_limited backpressure DAV Apple property, write-capability, MKCALENDAR and adversarial probes completed ``` Server build: ```text Finished `dev` profile [unoptimized + debuginfo] target(s) in 81m 47s ``` ### Known gaps The job reached the owner’s roughly four-hour time box. `cargo clippy -p calternal-server --all-targets -- -D warnings` was cancelled while compiling dependencies. `cargo test -p calternal-server`, `bun run check`, and `bun run test` remain unrun. The production web build and the real-app screenshot E2E did complete successfully; the build emitted existing Rolldown `use client` notices. The broader #411 visible-range mini-month work beyond the Agenda sidebar ordering was not part of this job. ### Decisions - Older Agenda pages fetch 14 calendar days per request. DESIGN §38 sets ordering and top-control behavior but does not set the page size; this is the bounded batch chosen for the implementation. - Day counts appear only while the day is collapsed, as required by the review and now documented in DESIGN §38. - Earlier pages prepend while preserving the page scroll offset, also recorded in DESIGN §38. ### Attached screenshots - [agenda-413-1440-dark-attachment-expanded.png](https://git.kayg.org/attachments/91f38d88-8f15-4a16-bb20-28bac24fb524) - [agenda-413-1440-dark-hover.png](https://git.kayg.org/attachments/9c5a9491-dbf9-4898-9856-5e2fc6bb13e5) - [agenda-413-1440-dark-selected.png](https://git.kayg.org/attachments/a7416e81-e904-4085-b353-8099c645b3ea) - [agenda-413-1440-dark-sidebar-range.png](https://git.kayg.org/attachments/07c2e443-d7b0-4a61-bb8f-d9a7d0fd1e12) - [agenda-413-1440-dark-unfocused.png](https://git.kayg.org/attachments/7bf90d51-9b58-495c-9c17-a9dae52864f9) - [agenda-413-1440-light-attachment-expanded.png](https://git.kayg.org/attachments/c5c8647e-53af-4496-8ff4-3a6a097b3dc6) - [agenda-413-1440-light-day-header-3x.png](https://git.kayg.org/attachments/f710a257-6555-4c0d-9916-2b423edd0397) - [agenda-413-1440-light-hover.png](https://git.kayg.org/attachments/078740fc-478c-4979-98bc-2634d88e4fe8) - [agenda-413-1440-light-selected-row-3x.png](https://git.kayg.org/attachments/8efc5bf8-a4dc-4285-831d-32b9f3d0a45e) - [agenda-413-1440-light-selected.png](https://git.kayg.org/attachments/00af8a6b-ca3a-4804-812f-74efda56bc9e) - [agenda-413-1440-light-sidebar-range.png](https://git.kayg.org/attachments/15755fe0-25d3-4425-a657-da1490d88faa) - [agenda-413-1440-light-unfocused.png](https://git.kayg.org/attachments/1f9dccad-0a05-4ea1-8b6e-c875cb1ad02c) - [agenda-413-390-dark-attachment-expanded.png](https://git.kayg.org/attachments/1355c3b1-b11a-48d9-b8d3-d42cc65021c7) - [agenda-413-390-dark-hover.png](https://git.kayg.org/attachments/3268742a-6f86-4de4-a978-23532c4ce833) - [agenda-413-390-dark-selected.png](https://git.kayg.org/attachments/029d64ad-484d-47d5-abed-fd06b19ba5e6) - [agenda-413-390-dark-sidebar-range.png](https://git.kayg.org/attachments/2a42b0c4-26ba-405f-a0f3-3bfae5527569) - [agenda-413-390-dark-touch-no-hover.png](https://git.kayg.org/attachments/206f05d9-d686-4edf-a67c-9f1db03ab8d0) - [agenda-413-390-dark-unfocused.png](https://git.kayg.org/attachments/f24737b4-0cc3-4e56-951d-5ef87d94fc9b) - [agenda-413-390-light-attachment-expanded.png](https://git.kayg.org/attachments/0f8df59b-79f4-4651-8193-8007d8af51a2) - [agenda-413-390-light-hover.png](https://git.kayg.org/attachments/54aa3ee4-ef6e-484a-b7fa-cca1ee2093e6) - [agenda-413-390-light-selected.png](https://git.kayg.org/attachments/6caa7a41-9ba0-4434-84db-25e7aae3f948) - [agenda-413-390-light-sidebar-range.png](https://git.kayg.org/attachments/93731e01-3186-4596-b160-cf36293437a0) - [agenda-413-390-light-touch-no-hover.png](https://git.kayg.org/attachments/a1655046-5bf2-411d-9a75-8f99b6f73c9d) - [agenda-413-390-light-unfocused.png](https://git.kayg.org/attachments/0e94d56b-8ca6-4ae5-bf1b-a492cb1bc331) - [agenda-413-820-dark-attachment-expanded.png](https://git.kayg.org/attachments/5d88dfdb-1248-49a3-895d-c68d4a47f89e) - [agenda-413-820-dark-hover.png](https://git.kayg.org/attachments/65c9c54b-7d67-4518-b5a6-8975dceecb2d) - [agenda-413-820-dark-selected.png](https://git.kayg.org/attachments/3d8bf4d6-21ca-4fd4-8fed-e753f5222da3) - [agenda-413-820-dark-sidebar-range.png](https://git.kayg.org/attachments/05b44ee6-2cb6-4677-b073-437f2a16bcd7) - [agenda-413-820-dark-unfocused.png](https://git.kayg.org/attachments/38b11ead-43a2-4bb6-ad6b-6305a7a9341c) - [agenda-413-820-light-attachment-expanded.png](https://git.kayg.org/attachments/1ad9780d-5cf2-4f89-94e6-074da3a808b9) - [agenda-413-820-light-hover.png](https://git.kayg.org/attachments/15070f62-3317-43f7-8363-4b7410c6f579) - [agenda-413-820-light-selected.png](https://git.kayg.org/attachments/4d24f383-ff3e-4454-b78b-534a7557db7b) - [agenda-413-820-light-sidebar-range.png](https://git.kayg.org/attachments/3baaa87a-327b-447b-9f9f-d1395dc1e6ea) - [agenda-413-820-light-unfocused.png](https://git.kayg.org/attachments/9ac4dd04-fa1c-4c62-b5df-c3e16d5137c2)
Author
Owner

Starting agenda-413 round 3 on job/agenda-413 at d18aa5d0bf4dc33812e75ab7ef641a00abadc23f; shared base with origin/dev: 09e238d5276b4f7a1eaf457eef07677cf9e3e9cc. I’m addressing the selected-row surface and marker contrast, fixed day-header columns with a numeric chevron alignment assertion, weekday casing and separator spacing, and the existing #411 mini-month today treatment. I’ll capture the specified production screenshots and run the web gates before reporting the final SHA.

Starting agenda-413 round 3 on `job/agenda-413` at `d18aa5d0bf4dc33812e75ab7ef641a00abadc23f`; shared base with `origin/dev`: `09e238d5276b4f7a1eaf457eef07677cf9e3e9cc`. I’m addressing the selected-row surface and marker contrast, fixed day-header columns with a numeric chevron alignment assertion, weekday casing and separator spacing, and the existing #411 mini-month today treatment. I’ll capture the specified production screenshots and run the web gates before reporting the final SHA.
Author
Owner

Round 3 findings: in AgendaList.svelte, .item.selected paints full var(--accent), while the selected marker is changed to var(--on-accent); in the dark 1440 capture that token is #101418, matching the black bullet on the bright-blue row. The header is a flex row, and only dates on or before Today render .log-tool, so a future day has one fewer control width and its chevron shifts by about 32 px. The weekday rule applies text-transform: uppercase; the current label markup also does not create a reliably visible gap before the middot. This branch's MiniMonth applies the range band to each day button and sets .d.in-range { border-radius: 0 }; origin/dev has #411's separate range band with date buttons above it, so I’ll preserve that implementation during the required merge.

Round 3 findings: in `AgendaList.svelte`, `.item.selected` paints full `var(--accent)`, while the selected marker is changed to `var(--on-accent)`; in the dark `1440` capture that token is `#101418`, matching the black bullet on the bright-blue row. The header is a flex row, and only dates on or before Today render `.log-tool`, so a future day has one fewer control width and its chevron shifts by about 32 px. The weekday rule applies `text-transform: uppercase`; the current label markup also does not create a reliably visible gap before the middot. This branch's MiniMonth applies the range band to each day button and sets `.d.in-range { border-radius: 0 }`; `origin/dev` has #411's separate range band with date buttons above it, so I’ll preserve that implementation during the required merge.
Author
Owner

Merge resolution finding: origin/dev carries #411's transform-only .range-band and date buttons at z-index 1; I kept that MiniMonth file intact and combined its followRange input and sticky sidebar-priority wrapper with #413's mini-month-before-views order. origin/dev also had a dense full-tag chip change for the prior flat Agenda rows. I kept the #413 two-line card rows because adding those chips would add a third visible line. I accepted the AccountRow.svelte deletion because origin/dev replaced it with SettingsRow.svelte and its settings routes now use the replacement.

Merge resolution finding: `origin/dev` carries #411's transform-only `.range-band` and date buttons at z-index 1; I kept that MiniMonth file intact and combined its `followRange` input and sticky `sidebar-priority` wrapper with #413's mini-month-before-views order. `origin/dev` also had a dense full-tag chip change for the prior flat Agenda rows. I kept the #413 two-line card rows because adding those chips would add a third visible line. I accepted the `AccountRow.svelte` deletion because `origin/dev` replaced it with `SettingsRow.svelte` and its settings routes now use the replacement.
Author
Owner

The first merged bun run test run finished with 127/128 files and 829/830 tests passing. The only failure is the upstream agenda.svelte.test.ts assertion at line 203: it expects compact .tag chips for task, Event and Log rows, with a short visual leaf and the full tag in accessible text. The #413 card markup currently omits those chips. I’m restoring the shared compact-tag behavior on the existing title line, without adding a third row.

The first merged `bun run test` run finished with 127/128 files and 829/830 tests passing. The only failure is the upstream `agenda.svelte.test.ts` assertion at line 203: it expects compact `.tag` chips for task, Event and Log rows, with a short visual leaf and the full tag in accessible text. The #413 card markup currently omits those chips. I’m restoring the shared compact-tag behavior on the existing title line, without adding a third row.
Author
Owner

The focused Agenda test then caught a second integration detail: wrapping .title in a container broke the existing assertion that .time.nextElementSibling is .title (line 114). The chips now live inside the existing title element, which keeps that two-line DOM contract. The focused rerun passed: Test Files 1 passed (1) and Tests 15 passed (15).

The focused Agenda test then caught a second integration detail: wrapping `.title` in a container broke the existing assertion that `.time.nextElementSibling` is `.title` (line 114). The chips now live inside the existing title element, which keeps that two-line DOM contract. The focused rerun passed: `Test Files 1 passed (1)` and `Tests 15 passed (15)`.
Author
Owner

Full bun run test evidence: 128 files, 830 tests; 126 files and 828 tests passed. The only failures were 5-second timeouts in existing menu-open-focus and ThemePicker tests. At test time multiple other concurrent Vitest processes were running on the shared host. Agenda tests passed. I will check the two timeout tests in isolation before final reporting.

Full bun run test evidence: 128 files, 830 tests; 126 files and 828 tests passed. The only failures were 5-second timeouts in existing menu-open-focus and ThemePicker tests. At test time multiple other concurrent Vitest processes were running on the shared host. Agenda tests passed. I will check the two timeout tests in isolation before final reporting.
Author
Owner

Follow-up evidence: menu-open-focus passes alone (1 file, 2/2 tests); ThemePicker passes alone (1 file, 2/2 tests). No test expectations were changed.

Follow-up evidence: menu-open-focus passes alone (1 file, 2/2 tests); ThemePicker passes alone (1 file, 2/2 tests). No test expectations were changed.
Author
Owner

Production capture finding: MiniMonth stores one range-band element per week, and inactive weeks have a zero-width band. The screenshot check waited on the first band, which is often inactive on mobile, and timed out after the 390px light captures. I removed that wait; the existing assertion checks the band in today's week and requires its scale to be nonzero.

Production capture finding: MiniMonth stores one range-band element per week, and inactive weeks have a zero-width band. The screenshot check waited on the first band, which is often inactive on mobile, and timed out after the 390px light captures. I removed that wait; the existing assertion checks the band in today's week and requires its scale to be nonzero.
Author
Owner

Completed Forgejo #413 on branch job/agenda-413.

HEAD: ad8781ecc4
Merged origin/dev once in commit 122d489db.

Built

  • Rounded, inset Agenda selection uses the theme selection role or the shared 14% desktop / 12% compact accent fallback. The marker keeps its category colour and gains a light contrast ring. The row actions stay within the selection shape.
  • One fixed day-header grid aligns every chevron and count. Weekday labels use sentence case and include a space before the relative-date middot.
  • The upstream #411 MiniMonth circle and range-band implementation is preserved. The sidebar keeps the mini month above Calendar views and follows the Agenda date range.
  • Compact tag chips follow the title on the same line. The chip shows the leaf; its title and screen-reader text keep the full tag.
  • E2E geometry checks assert chevron centers within 0.5 px, selected-row insets and inner radius, category marker contrast, and the #411 today circle above an active range band.

Files

  • packages/ui/src/components/calendar/AgendaList.svelte
  • apps/web/e2e/agenda-review-413.mjs
  • apps/web/src/lib/components/app-sidebar.svelte
  • packages/ui/src/components/calendar/MiniMonth.svelte (upstream #411 implementation retained; its module comment now names #411 and DESIGN §38)
  • docs/DESIGN.md

Decisions

  • Use a corner radius 8 px smaller than the Card radius for the inset selection. DESIGN §38 now records this rule.
  • Show compact tag chips after the title, with a visible leaf and the full tag in the title and screen-reader text.
  • Keep #411’s MiniMonth circle and transform-only range band unchanged.

Gates and production review

bun run check output:

Loading svelte-check in workspace: /home/kayg/Developer/calternal-wt/agenda-413/apps/web
Getting Svelte diagnostics...

svelte-check found 0 errors and 0 warnings

Full bun run test summary, verbatim:

 Test Files  2 failed | 126 passed (128)
      Tests  2 failed | 828 passed (830)
   Start at  20:06:06
   Duration  198.10s (transform 47%, environment 23%, tests 13%, import 11%, setup 5%)
error: script "test" exited with code 1

The two failures were 5-second timeouts in the existing menu-open-focus and ThemePicker tests while other Vitest processes were running on the shared host. Each test file passed alone:

 Test Files  1 passed (1)
      Tests  2 passed (2)
   Start at  20:09:52
   Duration  8.25s (transform 59%, environment 21%, setup 9%, tests 7%, import 4%)

 Test Files  1 passed (1)
      Tests  2 passed (2)
   Start at  20:10:09
   Duration  7.37s (transform 47%, environment 30%, tests 13%, setup 7%, import 3%)

Production build succeeded. It emitted Rolldown MODULE_LEVEL_DIRECTIVE warnings for use-client markers under the analytics vendor modules.

Production E2E output:

PASS Agenda #413: 3 widths × 2 themes × unfocused, hover/touch, selected, expanded deck and mini-month range; screenshots in /home/kayg/Developer/calternal-wt/agenda-413/artifacts/agenda-413

Rust clippy/test were not run: this job made no Rust route or contract changes. The E2E used a compatible prebuilt server via CALTERNAL_SERVER_BIN.

Production screenshots attached

33 current PNGs are attached. Cargo cleanup output: Removed 180 files, 80.5MiB total.

Completed Forgejo #413 on branch job/agenda-413. HEAD: ad8781ecc437d9c446447b5b010407bf76750164 Merged origin/dev once in commit 122d489db. ## Built - Rounded, inset Agenda selection uses the theme selection role or the shared 14% desktop / 12% compact accent fallback. The marker keeps its category colour and gains a light contrast ring. The row actions stay within the selection shape. - One fixed day-header grid aligns every chevron and count. Weekday labels use sentence case and include a space before the relative-date middot. - The upstream #411 MiniMonth circle and range-band implementation is preserved. The sidebar keeps the mini month above Calendar views and follows the Agenda date range. - Compact tag chips follow the title on the same line. The chip shows the leaf; its title and screen-reader text keep the full tag. - E2E geometry checks assert chevron centers within 0.5 px, selected-row insets and inner radius, category marker contrast, and the #411 today circle above an active range band. ## Files - packages/ui/src/components/calendar/AgendaList.svelte - apps/web/e2e/agenda-review-413.mjs - apps/web/src/lib/components/app-sidebar.svelte - packages/ui/src/components/calendar/MiniMonth.svelte (upstream #411 implementation retained; its module comment now names #411 and DESIGN §38) - docs/DESIGN.md ## Decisions - Use a corner radius 8 px smaller than the Card radius for the inset selection. DESIGN §38 now records this rule. - Show compact tag chips after the title, with a visible leaf and the full tag in the title and screen-reader text. - Keep #411’s MiniMonth circle and transform-only range band unchanged. ## Gates and production review bun run check output: <pre> Loading svelte-check in workspace: /home/kayg/Developer/calternal-wt/agenda-413/apps/web Getting Svelte diagnostics... svelte-check found 0 errors and 0 warnings </pre> Full bun run test summary, verbatim: <pre> Test Files 2 failed | 126 passed (128) Tests 2 failed | 828 passed (830) Start at 20:06:06 Duration 198.10s (transform 47%, environment 23%, tests 13%, import 11%, setup 5%) error: script "test" exited with code 1 </pre> The two failures were 5-second timeouts in the existing menu-open-focus and ThemePicker tests while other Vitest processes were running on the shared host. Each test file passed alone: <pre> Test Files 1 passed (1) Tests 2 passed (2) Start at 20:09:52 Duration 8.25s (transform 59%, environment 21%, setup 9%, tests 7%, import 4%) Test Files 1 passed (1) Tests 2 passed (2) Start at 20:10:09 Duration 7.37s (transform 47%, environment 30%, tests 13%, setup 7%, import 3%) </pre> Production build succeeded. It emitted Rolldown MODULE_LEVEL_DIRECTIVE warnings for use-client markers under the analytics vendor modules. Production E2E output: <pre> PASS Agenda #413: 3 widths × 2 themes × unfocused, hover/touch, selected, expanded deck and mini-month range; screenshots in /home/kayg/Developer/calternal-wt/agenda-413/artifacts/agenda-413 </pre> Rust clippy/test were not run: this job made no Rust route or contract changes. The E2E used a compatible prebuilt server via CALTERNAL_SERVER_BIN. ## Production screenshots attached - **390 px, light:** [unfocused](https://git.kayg.org/attachments/ddd03cbd-f03d-471a-b6f5-e9ccc648444e) · [touch-no-hover](https://git.kayg.org/attachments/6ce72286-20e3-4593-845d-16a18f029e9a) · [selected](https://git.kayg.org/attachments/a7b3778a-7052-4629-bedf-5219c119d704) · [attachment-expanded](https://git.kayg.org/attachments/056df4f9-0571-4fbf-bc04-21192b3ff7b3) · [sidebar-range](https://git.kayg.org/attachments/cfdcc5ec-334d-4413-b9a6-3f9700b412b5) - **390 px, dark:** [unfocused](https://git.kayg.org/attachments/989a89fb-c43f-4ec8-a171-86f4e695ec0f) · [touch-no-hover](https://git.kayg.org/attachments/67eef457-e86a-4be8-8c17-35f7218e4333) · [selected](https://git.kayg.org/attachments/bbdff520-48d7-4636-a002-dc7cd09cdd52) · [attachment-expanded](https://git.kayg.org/attachments/fa63788b-17f6-4ed5-8292-3d0abf6eb45c) · [sidebar-range](https://git.kayg.org/attachments/8391cdb9-1355-4f1a-a604-5e84f9fb9910) - **820 px, light:** [unfocused](https://git.kayg.org/attachments/8db34f42-54d7-4293-bb3f-23e65f8d4200) · [hover](https://git.kayg.org/attachments/81808aa2-0506-43ca-9c31-62091739cba3) · [selected](https://git.kayg.org/attachments/4c072794-f2cd-40e6-a5ff-3737c870ffe0) · [attachment-expanded](https://git.kayg.org/attachments/8dd02f18-9e92-4e48-bc7d-2168b923dd00) · [sidebar-range](https://git.kayg.org/attachments/dad18619-be38-4137-910e-b564545a91fa) - **820 px, dark:** [unfocused](https://git.kayg.org/attachments/bbe7de66-4135-4699-93d7-8f34dfb277c8) · [hover](https://git.kayg.org/attachments/592bdcc7-3747-4b25-aac3-c394ebb3b47b) · [selected](https://git.kayg.org/attachments/f7c29d53-4cde-4cf8-a9d2-8139f06c6453) · [attachment-expanded](https://git.kayg.org/attachments/a4457299-4c18-4939-8351-58ea58082acc) · [sidebar-range](https://git.kayg.org/attachments/8160d235-6d53-4cdf-bc43-1657f6acaf5c) - **1440 px, light:** [unfocused](https://git.kayg.org/attachments/1ce592d8-ee8d-484d-8c7f-ca5dd9f9527b) · [hover](https://git.kayg.org/attachments/f5502a59-aa05-40d8-a83f-5ed11bdfa224) · [selected](https://git.kayg.org/attachments/8f7601a9-012b-46f0-82e2-c029a2510bc7) · [attachment-expanded](https://git.kayg.org/attachments/65a2a5fc-afd4-4f59-81ac-057520f3afdc) · [sidebar-range](https://git.kayg.org/attachments/dec8903a-f0af-48b8-a961-25767d18db24) - **1440 px, dark:** [unfocused](https://git.kayg.org/attachments/7eb776f8-6e28-41db-bc8d-5bbf6d99ad32) · [hover](https://git.kayg.org/attachments/e49368b8-f15d-4bb0-a7b6-2d8bad5a1a8b) · [selected](https://git.kayg.org/attachments/8e9be524-e947-4755-8ca2-d584b8092494) · [attachment-expanded](https://git.kayg.org/attachments/6d7880c1-66b6-4da3-9f6a-ae549f3bb000) · [sidebar-range](https://git.kayg.org/attachments/391bc3bf-2962-4583-b26d-aab44d9bf38b) - **1440 px detail crops:** [selected row 3×](https://git.kayg.org/attachments/96439547-c268-4a74-952b-2cb12e8cf2af) · [day header 3×](https://git.kayg.org/attachments/7e96c4d0-a604-462b-8c1d-78e5867da8dc) · [MiniMonth today 3×](https://git.kayg.org/attachments/a7821f1a-24f6-4fab-a7d6-1e48f0b500e4) 33 current PNGs are attached. Cargo cleanup output: Removed 180 files, 80.5MiB total.
Author
Owner

Hygiene review: job/agenda-413 at ad8781ecc437d9c446447b5b010407bf76750164 is not in origin/dev. The Agenda implementation remains unmerged; keeping #413 open.

Hygiene review: `job/agenda-413` at `ad8781ecc437d9c446447b5b010407bf76750164` is not in `origin/dev`. The Agenda implementation remains unmerged; keeping #413 open.
Author
Owner

Owner (2026-10-02): the Agenda improvements are still not on production; branch job/agenda-413 (28 commits, 29 Sep) was never merged. A new job now rebases it onto the current calendar work (calcard-series #628, calimg-589 #589, merge round 7a) together with #822 (vertical fan-out in the grid; horizontal fan-out stays in Agenda). Owner's latest Agenda direction (#413, 2026-09-29: one card per day, time and title on separate lines) supersedes DESIGN §38's 'no cards' line; update DESIGN to match.

Owner (2026-10-02): the Agenda improvements are still not on production; branch job/agenda-413 (28 commits, 29 Sep) was never merged. A new job now rebases it onto the current calendar work (calcard-series #628, calimg-589 #589, merge round 7a) together with #822 (vertical fan-out in the grid; horizontal fan-out stays in Agenda). Owner's latest Agenda direction (#413, 2026-09-29: one card per day, time and title on separate lines) supersedes DESIGN §38's 'no cards' line; update DESIGN to match.
Author
Owner

Starting agenda-decks on job/agenda-decks from job/merge-round-7a at 2f4482ded066d9c5d9c59130377907f7fd2916c9.

I read the full #413 discussion, including the 2026-10-02 owner note, #822, and the relevant design rules. I will merge job/calcard-series, job/calimg-589, job/dragghost-612, and job/agenda-413 in the requested order, preserving approved behavior. Then I will document the Agenda card override to DESIGN §38 and build the shared deck direction for Agenda and Day/Week. No push, deploy, or merge to dev is planned.

Starting agenda-decks on `job/agenda-decks` from `job/merge-round-7a` at `2f4482ded066d9c5d9c59130377907f7fd2916c9`. I read the full #413 discussion, including the 2026-10-02 owner note, #822, and the relevant design rules. I will merge `job/calcard-series`, `job/calimg-589`, `job/dragghost-612`, and `job/agenda-413` in the requested order, preserving approved behavior. Then I will document the Agenda card override to DESIGN §38 and build the shared deck direction for Agenda and Day/Week. No push, deploy, or merge to `dev` is planned.
Author
Owner

Integration progress: the four requested branches are merged locally in order. Latest merge commit: a7c692fcd. No push or deployment.

Evidence: the merged Agenda and representation slice passes 46 focused tests. The older Agenda branch had lost current keyboard row/date identity, carry-in Log counts, and collapsed attachment hover behavior; these are restored. #413 explicitly changes ascending date order, Space selection, Return preview, and omission of unlinked daily Activity. Test expectations changed only for those approved behaviors.

The shared ItemCard family now renders text identities without text thumbnails, documents as glyph/name until Large, and visual items as bounded thumbnails. Grid collision lanes retain #589 packing. CSS container queries choose grid size classes; no text or icon layout measurements were added.

Decisions: Inspector Used in reuses the existing linked-notes API and stable Note links. No new endpoint or dependency is needed. Performance measurements are local because this job has no perf-VM lock; the new representation adapter has no matching baseline yet.

Integration progress: the four requested branches are merged locally in order. Latest merge commit: `a7c692fcd`. No push or deployment. Evidence: the merged Agenda and representation slice passes 46 focused tests. The older Agenda branch had lost current keyboard row/date identity, carry-in Log counts, and collapsed attachment hover behavior; these are restored. #413 explicitly changes ascending date order, Space selection, Return preview, and omission of unlinked daily Activity. Test expectations changed only for those approved behaviors. The shared ItemCard family now renders text identities without text thumbnails, documents as glyph/name until Large, and visual items as bounded thumbnails. Grid collision lanes retain #589 packing. CSS container queries choose grid size classes; no text or icon layout measurements were added. Decisions: Inspector Used in reuses the existing linked-notes API and stable Note links. No new endpoint or dependency is needed. Performance measurements are local because this job has no perf-VM lock; the new representation adapter has no matching baseline yet.
Author
Owner

The production Agenda replay found a 2.000 px chevron spread at 390 px. The assertion allows 0.5 px. The merged .day-tools wrapper used flex layout while its children retained grid-column declarations. Those declarations had no effect; a wrapper opacity also hid the controls. I changed the wrapper to display: contents. Each control now uses the reserved day-header track. I kept the original geometry assertion.

Captured-photo preview links now use the existing Added-photo arrow handler. A regression checks both capture and Added representations, without replacing the approved Added carousel or its Quick Look actions.

The latest test-only media contract round checks nine small boundary cases on the disposable local server. The production layout suite covers Enter and adjacent-Photo arrow navigation as well as bounds at each width and zoom.

The production Agenda replay found a 2.000 px chevron spread at 390 px. The assertion allows 0.5 px. The merged `.day-tools` wrapper used flex layout while its children retained grid-column declarations. Those declarations had no effect; a wrapper opacity also hid the controls. I changed the wrapper to `display: contents`. Each control now uses the reserved day-header track. I kept the original geometry assertion. Captured-photo preview links now use the existing Added-photo arrow handler. A regression checks both capture and Added representations, without replacing the approved Added carousel or its Quick Look actions. The latest test-only media contract round checks nine small boundary cases on the disposable local server. The production layout suite covers Enter and adjacent-Photo arrow navigation as well as bounds at each width and zoom.
Author
Owner

Browser findings, HEAD 090f1f5669:

  • Agenda's thumbnail assertion still fails after changing the renderer locator. FileThumb retains its old class; my earlier locator diagnosis was incomplete. The real uploaded JPEG receives a decoder-failed-v1 marker. Local sealed-input probe and render both pass (exit 0, 1.359 s / 1.599 s) with the staged outer namespace headroom described in the previous comment. The server/browser discrepancy remains unresolved. No image fixture or cache was substituted.
  • The existing attachment-audio E2E reached and passed playback, pause/resume, single-player ownership, stable-ID Quick Look, elapsed time, waveform, accessible seek, keyboard seek and speed checks. It then failed its unchanged Show in Files shortcut assertion: expected Enter, actual Meta+ArrowDown. I did not change the old expectation. Later Undo, sibling navigation and responsive captures in that test therefore did not run.
  • Dense fixture upload also returned an Index-busy 503. This extends #859 from mkdir to Tus upload; successful-status expectations are unchanged.
  • Calendar Rust tests passed: 88 passed; 0 failed; 1 ignored; integration tests 1 passed and 3 passed; doc tests 0 passed. Calendar Clippy passed.

The dense-layout production run is now running against the final web build. Complete visual evidence and the remaining Rust crate gates are still outstanding within the job's final hour.

Browser findings, HEAD 090f1f5669de88afb5ea5ecf49d958421c52284f: - Agenda's thumbnail assertion still fails after changing the renderer locator. FileThumb retains its old class; my earlier locator diagnosis was incomplete. The real uploaded JPEG receives a `decoder-failed-v1` marker. Local sealed-input probe and render both pass (exit 0, 1.359 s / 1.599 s) with the staged outer namespace headroom described in the previous comment. The server/browser discrepancy remains unresolved. No image fixture or cache was substituted. - The existing attachment-audio E2E reached and passed playback, pause/resume, single-player ownership, stable-ID Quick Look, elapsed time, waveform, accessible seek, keyboard seek and speed checks. It then failed its unchanged Show in Files shortcut assertion: expected `Enter`, actual `Meta+ArrowDown`. I did not change the old expectation. Later Undo, sibling navigation and responsive captures in that test therefore did not run. - Dense fixture upload also returned an Index-busy 503. This extends #859 from mkdir to Tus upload; successful-status expectations are unchanged. - Calendar Rust tests passed: `88 passed; 0 failed; 1 ignored`; integration tests `1 passed` and `3 passed`; doc tests `0 passed`. Calendar Clippy passed. The dense-layout production run is now running against the final web build. Complete visual evidence and the remaining Rust crate gates are still outstanding within the job's final hour.
Author
Owner

Production evidence found and fixed a real collapsed-deck defect. The mixed Agenda screenshot had blank visual tiles; hover reported the .representation.thumb was not visible. Visual tiles set height: 100%, but their intermediate .card-hit and .attachment-row boxes had automatic heights. The image's percentage-height chain therefore collapsed. Mixed decks also kept the old column direction.

Commit e947951ce gives both intermediate boxes the tile's definite height, makes collapsed Agenda visuals flow horizontally, and removes old horizontal row offsets that could affect a vertical deck. All geometry remains CSS-based. No runtime text or icon measurements were added.

Validation after this fix:

svelte-check found 0 errors and 0 warnings
 Test Files  1 passed (1)
      Tests  7 passed (7)

The production build passed. The full 18-Photo mixed fixture is running again on that build. Earlier new-layout Enter failures used invalid Markdown links with spaces, so the Log had no attachments and correctly opened its editor. The fixture now uses the Journal writer's angle-bracket link syntax and asserts that attachments exist before measuring layout.

Files Clippy passed (Finished ... in 9m 12s); its tests are compiling. The job is approaching its five-hour limit. Final reports will distinguish verified behavior, failed assertions, incomplete gates and remaining UX gaps.

Production evidence found and fixed a real collapsed-deck defect. The mixed Agenda screenshot had blank visual tiles; hover reported the `.representation.thumb` was not visible. Visual tiles set `height: 100%`, but their intermediate `.card-hit` and `.attachment-row` boxes had automatic heights. The image's percentage-height chain therefore collapsed. Mixed decks also kept the old column direction. Commit e947951ce gives both intermediate boxes the tile's definite height, makes collapsed Agenda visuals flow horizontally, and removes old horizontal row offsets that could affect a vertical deck. All geometry remains CSS-based. No runtime text or icon measurements were added. Validation after this fix: ``` svelte-check found 0 errors and 0 warnings Test Files 1 passed (1) Tests 7 passed (7) ``` The production build passed. The full 18-Photo mixed fixture is running again on that build. Earlier new-layout Enter failures used invalid Markdown links with spaces, so the Log had no attachments and correctly opened its editor. The fixture now uses the Journal writer's angle-bracket link syntax and asserts that attachments exist before measuring layout. Files Clippy passed (`Finished ... in 9m 12s`); its tests are compiling. The job is approaching its five-hour limit. Final reports will distinguish verified behavior, failed assertions, incomplete gates and remaining UX gaps.
Author
Owner

Final time-box report — agenda-decks, HEAD dc68eb236c43ecf45b11f730bb78e77aaca103e1

Status: partial implementation, not ready to merge. No push or deploy. The approved branches were merged in the requested order, starting at job/merge-round-7a; origin/dev was fetched and merged once before final gates (Already up to date.).

Built: the shared ItemCard/ItemChip media family; CSS space classes; text-first Note/Task/Log/Link/Mail content; Photo/video thumbnails; voice presentation; Large-only document pages; one direction-aware AttachmentDeck used by grid and Agenda; shared content in previews, Search, Used in and Composer. The Agenda keeps one Card per day, separate time/title lines, inset selection, attachment expansion, earlier-day prepend, bounded mounting and mini-month range. Task ticks update Calendar occurrences optimistically and have Undo. Activity click/Enter opens its preview. Grid attachment Enter and vertical arrows are wired. Large Search voice preview reuses the native player. DESIGN §38 now records the approved Cards and media rules.

UX gaps closed: Task checkboxes work in Agenda; Activity primary actions work; mixed collapsed decks retain named text beyond the first visual page; glyph/count density is retained; collapsed Photo tiles now have definite heights; Agenda visuals flow horizontally and grid fan motion stays on its vertical axis; pinned grid previews focus an attachment without waiting for motion. Keyboard motion still uses shared durations and reduced motion.

UX gaps left: direct Play/decoded duration in Compact Search and Activity rows and transient hover; coordination between the new Large Search player and Calendar inline playback; Used in covers the existing linked-Notes API only; complete standard actions on collapsed Activity cards need review. Full width/theme visual evidence and the failing browser checks below remain open. This report does not call the UI complete.

Decisions: CSS container queries select space classes, with explicit caps in intrinsic rows; no runtime font/layout measurements. ItemCard supplies presentation and hosts retain controls, avoiding nested interactive elements. Collapsed mixed decks mount at most three visuals plus three text items; expanded paging remains 32. No new backlink API or eager Note-body fan-out was added. Existing text-rich Search previews remain text. Calendar time/title chrome stays in its approved host layout. Local performance numbers are labeled local; no locked VM measurement was obtained.

Browser evidence: ten fresh macOS-emulated PNGs were attached to each issue. This is partial 390px/light evidence, not the required complete 390/820/1440 × light/dark matrix. Agenda has unfocused, pointer-hover, touch-no-hover, selection, expanded attachments and mini-month range captures; Day has dense/focus captures. The final mixed run passed three Day zoom layouts and the grid deck actions before the next view's dense-Log visibility wait timed out. That view/loading or density problem is not resolved. The existing Agenda run passed the phone checks, then failed its unchanged Open Coastal trail button locator. The audio run passed playback, ownership, stable-ID Quick Look, waveform, accessible/keyboard seek and speed, then failed its unchanged Show in Files shortcut assertion (Enter expected, Meta+ArrowDown actual). Later checks in those scripts did not run. Calendar's full E2E and document-stack E2E were not completed.

The finite local media contract round passed nine small boundary checks. Index-busy 503s in mkdir and Tus setup are filed as #859. The Files timeout and later background entry not found panic are filed as #942. Expectations and the five-minute test budget were not relaxed. A local runtime copy permits bounded namespace setup above the host's >4096 account threads (ceiling 8192, requested observed count +512); production policy and the decoder's inner 64-process limit were unchanged. That qualification applies to the latest browser evidence.

Performance: new adapter average p50/p95 0.138/1.437 ms, CPU 0.148496 s, peak RSS 52,355,072 bytes; 4096-item burst p50/p95 69.570/282.636 ms, CPU 3.746471 s, RSS 71,958,528 bytes. There is no adapter baseline. Existing Activity profile average 35.22/79.68 µs vs baseline 22.56/52.88; worst 50.90/95.18 µs vs 31.03/56.61. Local load was 128.68/121.21/116.46 vs baseline 40.52/40.78/36.44. #854 tracks a locked-VM recheck. These adapter numbers do not measure browser rendering.

Gates (terminal output quoted verbatim):
cargo fmt --check exited 0 with no output. Server production-development build passed. Web production build passed after the final CSS change.

Final web check

svelte-check found 0 errors and 0 warnings

Final representation test

 Test Files  1 passed (1)
      Tests  7 passed (7)

Full web VM run

 Test Files  1 failed | 154 passed (155)
      Tests  17 failed | 1092 passed (1109)

Process-worker timezone and grid keyboard rerun

 Test Files  2 passed (2)
      Tests  37 passed (37)

The full VM command failed only its timezone file; VM workers do not apply its process.env.TZ changes. The unchanged file passed in the process-worker rerun. This is not a clean full-command exit.

calternal-plugin

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 67m 53s
test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 52.20s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

calternal-plugin-photos

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 46m 13s
test result: ok. 46 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 117.20s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

calternal-plugin-calendar

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 42m 48s
test result: ok. 88 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 24.69s
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s

calternal-plugin-files

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 9m 12s
test result: FAILED. 157 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 343.59s

calternal-plugin-notes

    Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 28s

Notes tests were stopped while compiling at the time limit. Money, DAV and Server Clippy/tests were not reached. The first gate queue ended with exit 143; the interrupted Files test was resumed, then failed as quoted. No successful gate claim is made for incomplete commands.

Attached evidence on #822:

Files (complete integration and feature scope):

92 changed files
apps/web/e2e/agenda-decks-822.mjs
apps/web/e2e/agenda-review-413.mjs
apps/web/e2e/calendar-attachment-audio-622.mjs
apps/web/e2e/calendar-crossday.mjs
apps/web/e2e/calendar-doc-stack.mjs
apps/web/e2e/calendar-hover-608.mjs
apps/web/e2e/calendar-perf.mjs
apps/web/e2e/calendar-preview-421.mjs
apps/web/e2e/calendar-view-switcher.mjs
apps/web/e2e/calendar.mjs
apps/web/e2e/composer.mjs
apps/web/e2e/harness.mjs
apps/web/e2e/kbd-motion-527.mjs
apps/web/e2e/layout-sweep.mjs
apps/web/e2e/motion-spring-evidence.mjs
apps/web/e2e/pill-feedback.mjs
apps/web/src/lib/a11y/inputModality.test.ts
apps/web/src/lib/actions/pillFeedback.test.ts
apps/web/src/lib/actions/pillFeedback.ts
apps/web/src/lib/calendar/ItemPreview.svelte.test.ts
apps/web/src/lib/calendar/TimeGrid.svelte.test.ts
apps/web/src/lib/calendar/agenda.svelte.test.ts
apps/web/src/lib/calendar/attachments.test.ts
apps/web/src/lib/calendar/data.test.ts
apps/web/src/lib/calendar/data.ts
apps/web/src/lib/calendar/edits.test.ts
apps/web/src/lib/calendar/edits.ts
apps/web/src/lib/calendar/grid.test.ts
apps/web/src/lib/calendar/journal.ts
apps/web/src/lib/calendar/model.test.ts
apps/web/src/lib/calendar/prefs.test.ts
apps/web/src/lib/calendar/prefs.ts
apps/web/src/lib/calendar/representation.svelte.test.ts
apps/web/src/lib/calendar/sidebarState.svelte.ts
apps/web/src/lib/components/app-sidebar.svelte
apps/web/src/lib/composer/Composer.svelte
apps/web/src/lib/files/InfoPanel.svelte
apps/web/src/lib/search/SearchPreview.svelte
apps/web/src/lib/search/SearchResultRow.svelte
apps/web/src/lib/tooltip/tooltip.test.ts
apps/web/src/lib/webmcp/tools.ts
apps/web/src/routes/calendar/[view]/[date]/+page.svelte
apps/web/src/routes/settings/calendars/CalendarsSection.svelte
bench/calendar-activity-589.mjs
bench/calendar-attachments-603.mjs
bench/calendar-hover-608.mjs
bench/calendar-inline-audio-622.mjs
bench/item-representations-822.mjs
bench/run.sh
contracts/openapi.json
crates/calternal-dav/tests/apple_replay.rs
crates/calternal-plugin/src/lib.rs
crates/calternal-server/src/system_plugin.rs
crates/plugins/calendar/src/items.rs
crates/plugins/calendar/src/view.rs
crates/plugins/files/src/thumbnails.rs
crates/plugins/money/src/lib.rs
crates/plugins/notes/src/lib.rs
crates/plugins/photos/src/lib.rs
docs/DESIGN.md
docs/perf/baseline.json
docs/perf/runs/2026-10-01-calendar-hover-608.md
packages/api-client/src/generated.ts
packages/ui/src/components/FloatingSidebar.svelte
packages/ui/src/components/ItemCard.svelte
packages/ui/src/components/OverlaySurface.svelte
packages/ui/src/components/TagPill.svelte
packages/ui/src/components/calendar/ActivityStack.svelte
packages/ui/src/components/calendar/AgendaList.svelte
packages/ui/src/components/calendar/AttachmentDeck.svelte
packages/ui/src/components/calendar/CalendarPopover.svelte
packages/ui/src/components/calendar/GridColumn.svelte
packages/ui/src/components/calendar/ItemPreview.svelte
packages/ui/src/components/calendar/MiniMonth.svelte
packages/ui/src/components/calendar/MonthGrid.svelte
packages/ui/src/components/calendar/TimeGrid.svelte
packages/ui/src/components/calendar/attachments.ts
packages/ui/src/components/calendar/inlineAudioPlayback.svelte.ts
packages/ui/src/components/calendar/layout.ts
packages/ui/src/components/calendar/model.ts
packages/ui/src/components/composer/VoicePlayback.svelte
packages/ui/src/components/composer/VoiceWaveform.svelte
packages/ui/src/components/menu/FloatingSurface.svelte
packages/ui/src/components/tooltip/place.ts
packages/ui/src/components/viewer/QuickLook.svelte
packages/ui/src/index.ts
packages/ui/src/motion.ts
packages/ui/src/time.ts
packages/ui/src/tokens.css
tests/adversarial/attack.py
tests/adversarial/calendar_event_tags.mjs
tests/adversarial/item_representations_822.mjs

Cleanup: web build and .svelte-kit/output removed. cargo clean is running; its terminal result will be appended if it finishes before the time limit. Source comments were re-read. Worktree is clean; all source changes are committed. Issues remain open.

Final time-box report — agenda-decks, HEAD `dc68eb236c43ecf45b11f730bb78e77aaca103e1` Status: partial implementation, **not ready to merge**. No push or deploy. The approved branches were merged in the requested order, starting at `job/merge-round-7a`; `origin/dev` was fetched and merged once before final gates (`Already up to date.`). Built: the shared ItemCard/ItemChip media family; CSS space classes; text-first Note/Task/Log/Link/Mail content; Photo/video thumbnails; voice presentation; Large-only document pages; one direction-aware AttachmentDeck used by grid and Agenda; shared content in previews, Search, Used in and Composer. The Agenda keeps one Card per day, separate time/title lines, inset selection, attachment expansion, earlier-day prepend, bounded mounting and mini-month range. Task ticks update Calendar occurrences optimistically and have Undo. Activity click/Enter opens its preview. Grid attachment Enter and vertical arrows are wired. Large Search voice preview reuses the native player. DESIGN §38 now records the approved Cards and media rules. UX gaps closed: Task checkboxes work in Agenda; Activity primary actions work; mixed collapsed decks retain named text beyond the first visual page; glyph/count density is retained; collapsed Photo tiles now have definite heights; Agenda visuals flow horizontally and grid fan motion stays on its vertical axis; pinned grid previews focus an attachment without waiting for motion. Keyboard motion still uses shared durations and reduced motion. UX gaps left: direct Play/decoded duration in Compact Search and Activity rows and transient hover; coordination between the new Large Search player and Calendar inline playback; Used in covers the existing linked-Notes API only; complete standard actions on collapsed Activity cards need review. Full width/theme visual evidence and the failing browser checks below remain open. This report does not call the UI complete. Decisions: CSS container queries select space classes, with explicit caps in intrinsic rows; no runtime font/layout measurements. ItemCard supplies presentation and hosts retain controls, avoiding nested interactive elements. Collapsed mixed decks mount at most three visuals plus three text items; expanded paging remains 32. No new backlink API or eager Note-body fan-out was added. Existing text-rich Search previews remain text. Calendar time/title chrome stays in its approved host layout. Local performance numbers are labeled local; no locked VM measurement was obtained. Browser evidence: ten fresh macOS-emulated PNGs were attached to each issue. This is **partial 390px/light evidence**, not the required complete 390/820/1440 × light/dark matrix. Agenda has unfocused, pointer-hover, touch-no-hover, selection, expanded attachments and mini-month range captures; Day has dense/focus captures. The final mixed run passed three Day zoom layouts and the grid deck actions before the next view's dense-Log visibility wait timed out. That view/loading or density problem is not resolved. The existing Agenda run passed the phone checks, then failed its unchanged `Open Coastal trail` button locator. The audio run passed playback, ownership, stable-ID Quick Look, waveform, accessible/keyboard seek and speed, then failed its unchanged Show in Files shortcut assertion (`Enter` expected, `Meta+ArrowDown` actual). Later checks in those scripts did not run. Calendar's full E2E and document-stack E2E were not completed. The finite local media contract round passed nine small boundary checks. Index-busy 503s in mkdir and Tus setup are filed as #859. The Files timeout and later background `entry not found` panic are filed as #942. Expectations and the five-minute test budget were not relaxed. A local runtime copy permits bounded namespace setup above the host's >4096 account threads (ceiling 8192, requested observed count +512); production policy and the decoder's inner 64-process limit were unchanged. That qualification applies to the latest browser evidence. Performance: new adapter average p50/p95 0.138/1.437 ms, CPU 0.148496 s, peak RSS 52,355,072 bytes; 4096-item burst p50/p95 69.570/282.636 ms, CPU 3.746471 s, RSS 71,958,528 bytes. There is no adapter baseline. Existing Activity profile average 35.22/79.68 µs vs baseline 22.56/52.88; worst 50.90/95.18 µs vs 31.03/56.61. Local load was 128.68/121.21/116.46 vs baseline 40.52/40.78/36.44. #854 tracks a locked-VM recheck. These adapter numbers do not measure browser rendering. Gates (terminal output quoted verbatim): `cargo fmt --check` exited 0 with no output. Server production-development build passed. Web production build passed after the final CSS change. Final web check ``` svelte-check found 0 errors and 0 warnings ``` Final representation test ``` Test Files 1 passed (1) Tests 7 passed (7) ``` Full web VM run ``` Test Files 1 failed | 154 passed (155) Tests 17 failed | 1092 passed (1109) ``` Process-worker timezone and grid keyboard rerun ``` Test Files 2 passed (2) Tests 37 passed (37) ``` The full VM command failed only its timezone file; VM workers do not apply its process.env.TZ changes. The unchanged file passed in the process-worker rerun. This is not a clean full-command exit. calternal-plugin ``` Finished `dev` profile [unoptimized + debuginfo] target(s) in 67m 53s test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 52.20s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` calternal-plugin-photos ``` Finished `dev` profile [unoptimized + debuginfo] target(s) in 46m 13s test result: ok. 46 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 117.20s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` calternal-plugin-calendar ``` Finished `dev` profile [unoptimized + debuginfo] target(s) in 42m 48s test result: ok. 88 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 24.69s test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` calternal-plugin-files ``` Finished `dev` profile [unoptimized + debuginfo] target(s) in 9m 12s test result: FAILED. 157 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 343.59s ``` calternal-plugin-notes ``` Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 28s ``` Notes tests were stopped while compiling at the time limit. Money, DAV and Server Clippy/tests were not reached. The first gate queue ended with exit 143; the interrupted Files test was resumed, then failed as quoted. No successful gate claim is made for incomplete commands. Attached evidence on #822: - [agenda-413-390-light-attachment-expanded.png](https://git.kayg.org/attachments/079cf5ac-5533-4371-b4a8-836c512caaec) - [agenda-413-390-light-selected.png](https://git.kayg.org/attachments/2c704122-4330-43f1-b2f8-ffc1d2e939aa) - [agenda-413-390-light-sidebar-range.png](https://git.kayg.org/attachments/2d0b240d-3002-4c5e-b2a3-944496254c99) - [agenda-413-390-light-touch-no-hover.png](https://git.kayg.org/attachments/949de48c-90a3-427a-a9ea-ce29c0118ac6) - [agenda-413-390-light-unfocused.png](https://git.kayg.org/attachments/62fd0e3d-062f-4013-84e0-eba10cf350f1) - [agenda-390-light-hover.png](https://git.kayg.org/attachments/a7643cb0-d719-4d80-bc88-e1e3fc5fcd16) - [agenda-390-light-selected.png](https://git.kayg.org/attachments/3f55f37f-9275-4f00-8ef6-be051f9cac9f) - [agenda-390-light-unfocused.png](https://git.kayg.org/attachments/764b61d4-cee8-49c0-ad85-087a5a455a4e) - [day-390-light-dense.png](https://git.kayg.org/attachments/cdfdc5ce-75db-4208-a07e-7e67c214c34f) - [day-390-light-focus.png](https://git.kayg.org/attachments/83741d05-6709-4a15-af5d-2ee80cd2dd01) Files (complete integration and feature scope): <details><summary>92 changed files</summary> ``` apps/web/e2e/agenda-decks-822.mjs apps/web/e2e/agenda-review-413.mjs apps/web/e2e/calendar-attachment-audio-622.mjs apps/web/e2e/calendar-crossday.mjs apps/web/e2e/calendar-doc-stack.mjs apps/web/e2e/calendar-hover-608.mjs apps/web/e2e/calendar-perf.mjs apps/web/e2e/calendar-preview-421.mjs apps/web/e2e/calendar-view-switcher.mjs apps/web/e2e/calendar.mjs apps/web/e2e/composer.mjs apps/web/e2e/harness.mjs apps/web/e2e/kbd-motion-527.mjs apps/web/e2e/layout-sweep.mjs apps/web/e2e/motion-spring-evidence.mjs apps/web/e2e/pill-feedback.mjs apps/web/src/lib/a11y/inputModality.test.ts apps/web/src/lib/actions/pillFeedback.test.ts apps/web/src/lib/actions/pillFeedback.ts apps/web/src/lib/calendar/ItemPreview.svelte.test.ts apps/web/src/lib/calendar/TimeGrid.svelte.test.ts apps/web/src/lib/calendar/agenda.svelte.test.ts apps/web/src/lib/calendar/attachments.test.ts apps/web/src/lib/calendar/data.test.ts apps/web/src/lib/calendar/data.ts apps/web/src/lib/calendar/edits.test.ts apps/web/src/lib/calendar/edits.ts apps/web/src/lib/calendar/grid.test.ts apps/web/src/lib/calendar/journal.ts apps/web/src/lib/calendar/model.test.ts apps/web/src/lib/calendar/prefs.test.ts apps/web/src/lib/calendar/prefs.ts apps/web/src/lib/calendar/representation.svelte.test.ts apps/web/src/lib/calendar/sidebarState.svelte.ts apps/web/src/lib/components/app-sidebar.svelte apps/web/src/lib/composer/Composer.svelte apps/web/src/lib/files/InfoPanel.svelte apps/web/src/lib/search/SearchPreview.svelte apps/web/src/lib/search/SearchResultRow.svelte apps/web/src/lib/tooltip/tooltip.test.ts apps/web/src/lib/webmcp/tools.ts apps/web/src/routes/calendar/[view]/[date]/+page.svelte apps/web/src/routes/settings/calendars/CalendarsSection.svelte bench/calendar-activity-589.mjs bench/calendar-attachments-603.mjs bench/calendar-hover-608.mjs bench/calendar-inline-audio-622.mjs bench/item-representations-822.mjs bench/run.sh contracts/openapi.json crates/calternal-dav/tests/apple_replay.rs crates/calternal-plugin/src/lib.rs crates/calternal-server/src/system_plugin.rs crates/plugins/calendar/src/items.rs crates/plugins/calendar/src/view.rs crates/plugins/files/src/thumbnails.rs crates/plugins/money/src/lib.rs crates/plugins/notes/src/lib.rs crates/plugins/photos/src/lib.rs docs/DESIGN.md docs/perf/baseline.json docs/perf/runs/2026-10-01-calendar-hover-608.md packages/api-client/src/generated.ts packages/ui/src/components/FloatingSidebar.svelte packages/ui/src/components/ItemCard.svelte packages/ui/src/components/OverlaySurface.svelte packages/ui/src/components/TagPill.svelte packages/ui/src/components/calendar/ActivityStack.svelte packages/ui/src/components/calendar/AgendaList.svelte packages/ui/src/components/calendar/AttachmentDeck.svelte packages/ui/src/components/calendar/CalendarPopover.svelte packages/ui/src/components/calendar/GridColumn.svelte packages/ui/src/components/calendar/ItemPreview.svelte packages/ui/src/components/calendar/MiniMonth.svelte packages/ui/src/components/calendar/MonthGrid.svelte packages/ui/src/components/calendar/TimeGrid.svelte packages/ui/src/components/calendar/attachments.ts packages/ui/src/components/calendar/inlineAudioPlayback.svelte.ts packages/ui/src/components/calendar/layout.ts packages/ui/src/components/calendar/model.ts packages/ui/src/components/composer/VoicePlayback.svelte packages/ui/src/components/composer/VoiceWaveform.svelte packages/ui/src/components/menu/FloatingSurface.svelte packages/ui/src/components/tooltip/place.ts packages/ui/src/components/viewer/QuickLook.svelte packages/ui/src/index.ts packages/ui/src/motion.ts packages/ui/src/time.ts packages/ui/src/tokens.css tests/adversarial/attack.py tests/adversarial/calendar_event_tags.mjs tests/adversarial/item_representations_822.mjs ``` </details> Cleanup: web build and .svelte-kit/output removed. cargo clean is running; its terminal result will be appended if it finishes before the time limit. Source comments were re-read. Worktree is clean; all source changes are committed. Issues remain open.
Author
Owner

Cleanup finished before the time limit. cargo clean output:

     Removed 18947 files, 10.3GiB total

The web build and .svelte-kit/output directories are removed. The worktree is clean. Head remains dc68eb236c. No push, deploy, issue close or further merge was performed.

Cleanup finished before the time limit. `cargo clean` output: ``` Removed 18947 files, 10.3GiB total ``` The web build and .svelte-kit/output directories are removed. The worktree is clean. Head remains dc68eb236c43ecf45b11f730bb78e77aaca103e1. No push, deploy, issue close or further merge was performed.
Author
Owner

agenda-decks round, head fc147f14c (see #822 for the full report and gates).

For #413: the Agenda Tag chip is now the shared leaf chip (no #), start-aligned on its own line. The day header shows Saturday · Today with a short date (3 Oct) instead of a numeric date. Selection expands the deck as Regular rows (no thumbnail overlap). Voice attachments play inline on the shared player.

Screenshots at 390/820/1440 × light/dark: artifacts/agenda-decks-822/agenda-*-{unfocused,hover,selected}.png, plus 3x crops crop3x-agenda-{thumbs,text,voice}-*.png.

e2e/agenda-review-413.mjs still fails at getByRole('button', { name: 'Open Coastal trail' }). The cause is on the server: the range API sets display_name to Photo · 06:41 for images and ignores the link text Coastal trail. The test is unchanged. This needs a decision (see #822). With sharp under bun, run the test with LD_LIBRARY_PATH=<nix gcc-lib>/lib on this host.

agenda-decks round, head `fc147f14c` (see #822 for the full report and gates). For #413: the Agenda Tag chip is now the shared leaf chip (no `#`), start-aligned on its own line. The day header shows `Saturday · Today` with a short date (`3 Oct`) instead of a numeric date. Selection expands the deck as Regular rows (no thumbnail overlap). Voice attachments play inline on the shared player. Screenshots at 390/820/1440 × light/dark: `artifacts/agenda-decks-822/agenda-*-{unfocused,hover,selected}.png`, plus 3x crops `crop3x-agenda-{thumbs,text,voice}-*.png`. `e2e/agenda-review-413.mjs` still fails at `getByRole('button', { name: 'Open Coastal trail' })`. The cause is on the server: the range API sets `display_name` to `Photo · 06:41` for images and ignores the link text `Coastal trail`. The test is unchanged. This needs a decision (see #822). With sharp under bun, run the test with `LD_LIBRARY_PATH=<nix gcc-lib>/lib` on this host.
Author
Owner

agenda-decks follow-up, head 8babe683b: the stacked deck with spring fan-out is built; image attachments keep the User link text ("Coastal trail"); the voice row no longer overlaps; agenda-review-413.mjs passes at 3 widths × 2 themes. Full report, gates and screenshots are on #822.

agenda-decks follow-up, head `8babe683b`: the stacked deck with spring fan-out is built; image attachments keep the User link text ("Coastal trail"); the voice row no longer overlaps; `agenda-review-413.mjs` passes at 3 widths × 2 themes. Full report, gates and screenshots are on #822.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal#413
No description provided.