Sign in
Join now
chalky.town
tyler.fun
/
Star
Starred
Star
Something went wrong. Try again.
Fork
0
Eye filled
Watch
Watching
Watch
a local-first atmospheric chalky task planner
Star
Starred
Star
Something went wrong. Try again.
Fork
Eye filled
Watch
Watching
Watch
Overview
Overview
Issues
Issues
Pulls
Pulls
Pipelines
Pipelines
chalky.town
/
src
2 folders
·
3 files
at
main
tyler.fun
·
app: a service worker that takes over with the same build no longer reloads the page — since the move to Cloudflare Pages, Mac Safari reloaded chalky.town on every return to the tab while sw.js stayed byte-identical (WebKit's update check also compares things like the TLS certificate, so it re-installed the same worker and fired controllerchange). main.ts now asks the new worker for its shell (cache-first, so the shell it precached) and reloads only when that names a different entry bundle than the running page; if it can't tell, it reloads as before
·
20h ago
f6bd4da7
content
app: add a first-visit welcome modal with editable markdown copy
2mo ago
lib
app: checking a task off checks off its subtasks too — toggleDone folds the unchecked subtasks (stamped with completedAt) into the same patch as done, so one undo reverts both; un-checking leaves subtasks as they are. Recurring occurrences are excluded: their subtasks live on the series template, so checking them would check them on every day of the series. Not gated on the auto-done setting. Verified in the preview by clicking the checkbox on a 1/2 task (became 2/2, both stamped; un-check left both checked); not exercised signed-in; pnpm check 0 errors 0 warnings
1d ago
app.css
app: the phone new-task sheet works again after the keyboard closes, and the notes field loads without the jumble — 91fb7a3's visualViewport sync read kbInset right after writing it inside its own effect, so with the keyboard up the effect depended on its output and looped (cleanup zeroed it, sync set it back) until Svelte threw effect_update_depth_exceeded, leaving the sheet frozen at its keyboard-up bottom/max-height and the UI wedged so the swatches and X stopped responding; sync now only writes. The sheet also scrolled sideways: [data-tip] bubbles are invisible on touch but still laid out, and the new + sat at the edge, so its tooltip widened the card ~23px — tooltips now aren't rendered under (hover: none), and the + tip is right-aligned for desktop; separately WebKit counts the card's end padding past the header/title negative-margin bleed as overflow (~18px), so the card is overflow-x: hidden. The notes loading state was a centred grid holding "Loading editor…" plus Crepe's half-mounted surface (placeholder one word per line); it's now a stand-in at the editor's finished size — an empty toolbar row and the note text or placeholder — with Crepe mounting into a hidden surface. Verified in the iPhone 16 Pro simulator over the Web Inspector protocol: faked keyboard open/close via visualViewport lifts the sheet to bottom 318px then back to the edge with no errors, card scrollWidth no longer exceeds its width, swatch tap selects salmon, X closes; loading stand-in screenshotted under a temporary 6s delay (removed); pnpm check 0 errors 0 warnings
2w ago
App.svelte
app: the carry-over sweep waits for a pull made today, so a tab that went days without syncing no longer moves finished tasks onto today — Mac Safari (device jjwpyk) last synced 10-18 07:19Z, sat hidden for two days (hidden tabs skip cycles), and on 10-20 the rollover check swept its stale copy at 20:30Z with no PDS traffic: the engine's once-per-session `reconciled` was still true from the first cycle. When it reloaded at 02:18Z its 16 records went out via conflict-path putRecords; their fresh place stamps beat the remote's in the field merge, so 10 tasks completed elsewhere landed on 10-20 still checked and 2 deleted ones were recreated (reconstructed from the PDS request log and space_record/space_record_oplog, no device trail). settings now keys reconciliation by day (`reconciledFor`, the day a successful cycle started), the engine reports every successful cycle rather than the first, and a never-synced device keeps sweeping locally (`markLocalOnly`). The failure-limit fallback no longer releases the sweep on a device holding synced records (`reconcile.heldForPull`); a held sweep logs `sweep.carryOver.deferred` once per day. sync-triage skill documents the signature and the new events. Verified in the preview: a 10-18 task with a cid stayed put after a cycle dated yesterday and with localOnly set, and moved to today after a cycle dated today; not exercised signed-in or across a real hidden-tab rollover; the 16 records on the PDS are not repaired; pnpm check 0 errors 0 warnings, pnpm build ok
1w ago
main.ts
app: a service worker that takes over with the same build no longer reloads the page — since the move to Cloudflare Pages, Mac Safari reloaded chalky.town on every return to the tab while sw.js stayed byte-identical (WebKit's update check also compares things like the TLS certificate, so it re-installed the same worker and fired controllerchange). main.ts now asks the new worker for its shell (cache-first, so the shell it precached) and reloads only when that names a different entry bundle than the running page; if it can't tell, it reloads as before
20h ago