# 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 `feeds` in `SOURCE_KINDS`; schema `lib/schemas/sources/feeds.ts` aliases the news shapes (RSS either way); module `lib/sources/modules/feeds.ts`. - Shared RSS fetch extracted to `lib/sources/rss.ts` (`fetchRss`); both `news` and `feeds` modules use it. - Card reuses `NewsBody`; `/print` adds a "My Feeds" section; Settings feed-URL editor now covers both kinds; seeded in `scripts/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.ts` now prefers `icalBuddy` (reads EventKit directly — fast), found at `/opt/homebrew/bin/icalBuddy` or `/usr/local/bin/icalBuddy` via `lib/mac.ts`. - ✅ Falls back to the AppleScript `whose` query 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`/`removeSource` handlers dropped; the `POST /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 as `hr`, else `min`) 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._