Personal Dashboard — Issues / Backlog
Tracking known problems and follow-ups. Checked = done.
1. Print editions: delete + more content ✅ done 2026-06-06
Delete. ✅ DELETE /api/editions/[id] removes the row + unlinks the PDF;
deleteEdition(id) store helper returns pdfPath; ✕ button per edition in
EditionsView.tsx.
More sections. ✅ /print + edition-data.ts are now order-driven: weather is the
lead, every other enabled source with cached data renders as a body section in the user's
configured order. Renderers added for Calendar, Scores, GitHub, Deployments (Vercel),
Links, Mastodon, Bluesky, and Agenda (Things). New kinds show up automatically once they
have a SectionBody case.
2. Personal RSS — dedicated section ✅ done 2026-06-06
First-class feeds kind ("My Feeds"), distinct from the curated news card, seeded
enabled by default (empty — add your own URLs in Settings → My Feeds).
- New kind
feedsinSOURCE_KINDS; schemalib/schemas/sources/feeds.tsaliases the news shapes (RSS either way); modulelib/sources/modules/feeds.ts. - Shared RSS fetch extracted to
lib/sources/rss.ts(fetchRss); bothnewsandfeedsmodules use it. - Card reuses
NewsBody;/printadds a "My Feeds" section; Settings feed-URL editor now covers both kinds; seeded inscripts/seed.ts. - Friendlier "Add RSS feed" affordance still rides on the issue 4 Add-source UX rework; the empty card currently shows the generic "Needs configuration → settings".
3. Calendar still has issues ✅ done 2026-06-07
Was: local Calendar.app whose-query slow → 60s timeout on big/subscribed calendars.
- ✅
calendar.tsnow prefersicalBuddy(reads EventKit directly — fast), found at/opt/homebrew/bin/icalBuddyor/usr/local/bin/icalBuddyvialib/mac.ts. - ✅ Falls back to the AppleScript
whosequery only when icalBuddy isn't installed. - Shipped in commit
13972f7"Calendar updates".
4. Add-source field (bottom of Settings) doesn't make sense ✅ done 2026-06-09
Resolved by making the source set fixed instead of add/remove.
- ✅ Removed the confusing "Add [kind] [label]" row (
AddSource) entirely. - ✅ Removed the per-row ✕ delete button. Cards are no longer added or removed — every seeded source always exists; you just uncheck to hide it from the dashboard. Per-card Configure buttons handle setup.
- Added a one-line hint under the Sources list explaining this.
components/SettingsView.tsx. (addSource/removeSourcehandlers dropped; thePOST /api/sources+DELETE /api/sources/[id]routes remain but are now unused by the UI.)
5. Refresh interval — minutes/hours, not just seconds ✅ done 2026-06-09
- ✅ New
RefreshControl(components/SettingsView.tsx): number + unit (min / hr) dropdown. - ✅ Store still keeps raw
refreshSeconds; converts seconds → friendliest unit on load (whole hours show ashr, elsemin) and value+unit → seconds on save. - ✅ Switching unit preserves the real duration (rounded into the new unit).
- ✅ Editing floors at 15 min / 1 hr, but existing sub-15-min values display truthfully until the user actually edits them (no silent bumping).
Logged 2026-05-21. All five resolved by 2026-06-09.