Tracking issues
5e6ea2f01bb65dfb2d7d053083091c0b8ccdf2a5
humdrum-tiv <45084903+humdrum-tiv@users.noreply.github.com> · 2026-05-21 07:49
parent ca991ebb
2 files changed
.claude/settings.local.json +3 −1
@@ -23,7 +23,9 @@ "Bash(node -e \"const D=require\\('better-sqlite3'\\);const db=new D\\('data/dashboard.db'\\);for\\(const r of db.prepare\\('select kind,enabled,size,position from sources order by position'\\).all\\(\\)\\)console.log\\(r.position, r.kind.padEnd\\(10\\), 'en='+r.enabled, r.size\\);\")",
"Bash(curl -s http://localhost:4317/api/integrations/calendars)",
"Bash(node -e 'let s=\"\";process.stdin.on\\(\"data\",d=>s+=d\\).on\\(\"end\",\\(\\)=>{const j=JSON.parse\\(s\\);console.log\\(\\(j.calendars||[]\\).length+\" calendars:\", \\(j.calendars||[]\\).slice\\(0,6\\).join\\(\", \"\\), j.error?\\(\"ERR:\"+j.error\\):\"\"\\);}\\);')",
"Bash(curl -s http://localhost:4317/api/sources)",
- "Bash(node -e 'let s=\"\";process.stdin.on\\(\"data\",d=>s+=d\\).on\\(\"end\",\\(\\)=>{const sn=JSON.parse\\(s\\).source.snapshot;if\\(sn&&sn.ok\\){console.log\\(\"calendar ok:\",sn.payload.events.length,\"events\"\\);for\\(const e of sn.payload.events.slice\\(0,5\\)\\)console.log\\(\" -\",e.start.slice\\(0,16\\),\"|\",e.calendar,\"|\",e.summary.slice\\(0,40\\)\\);}else console.log\\(\"calendar:\",sn?\\(\"ERR \"+sn.error\\):\"no snap\"\\);}\\);')"
+ "Bash(node -e 'let s=\"\";process.stdin.on\\(\"data\",d=>s+=d\\).on\\(\"end\",\\(\\)=>{const sn=JSON.parse\\(s\\).source.snapshot;if\\(sn&&sn.ok\\){console.log\\(\"calendar ok:\",sn.payload.events.length,\"events\"\\);for\\(const e of sn.payload.events.slice\\(0,5\\)\\)console.log\\(\" -\",e.start.slice\\(0,16\\),\"|\",e.calendar,\"|\",e.summary.slice\\(0,40\\)\\);}else console.log\\(\"calendar:\",sn?\\(\"ERR \"+sn.error\\):\"no snap\"\\);}\\);')",
+ "Bash(git ls-tree *)",
+ "Bash(grep -E \"^\\(data/|editions/|node_modules/|\\\\.next/\\)|\\\\.app/|\\\\.env\\\\.local$\")"
]
}
}
ISSUES.md +55 −0
@@ -0,0 +1,55 @@
+# Personal Dashboard — Issues / Backlog
+
+Tracking known problems and follow-ups. Checked = done.
+
+---
+
+## 1. Print editions: delete + more content
+
+**Delete.** There's no way to remove a generated PDF edition. Need a delete action.
+- Add `DELETE /api/editions/[id]` → remove the row **and** unlink the PDF file on disk.
+- Add a delete (✕) button per edition in `components/EditionsView.tsx`.
+- Store helper: `deleteEdition(id)` in `lib/store.ts` (return `pdfPath` so the route can unlink it).
+
+**More sections.** The paper only renders weather, news, On This Day, Agenda (todos), and
+"From the Vault" (obsidian). It should include the other enabled sources too.
+- `app/print/page.tsx` + `lib/edition-data.ts` — add Calendar, Scores, GitHub/Vercel,
+ Links, Mastodon/Bluesky sections (render whatever sources are enabled + have data).
+- Consider making edition sections driven by the enabled sources / their order, rather than
+ hard-coded, so new sources show up automatically.
+
+## 2. Personal RSS — dedicated section
+
+Want a separate, clearly-labeled RSS area for personal feeds (distinct from the curated
+News card). Today you can add a second `news` source via *Add source*, but it's not obvious.
+- Make this a first-class thing: either a dedicated "My Feeds" card seeded by default, or a
+ clearer "Add RSS feed" affordance.
+- Tie this to fixing the confusing Add-source UX (issue 4).
+
+## 3. Calendar still has issues
+
+Local Calendar.app reading is unreliable.
+- Large/subscribed calendars (e.g. sports fixtures) make the AppleScript `whose` query slow →
+ hits the 60s timeout. `lib/sources/modules/calendar.ts`.
+- Investigate faster paths: `icalBuddy` if installed, or EventKit via a small helper, instead
+ of Calendar.app AppleScript. Fall back to AppleScript only if needed.
+- Verify events actually render across calendars/time zones; confirm all-day handling.
+- Possibly cap per-calendar scan window or events count.
+
+## 4. Add-source field (bottom of Settings) doesn't make sense
+
+The "Add [kind] [label]" row at the bottom of Settings → Sources is confusing.
+- Rethink the UX: clearer labels, grouping, or a different entry point (e.g. "+ Add a card"
+ with a friendly picker that explains each source).
+- `components/SettingsView.tsx` → `AddSource`.
+
+## 5. Refresh interval — minutes/hours, not just seconds
+
+The per-source refresh control is raw seconds. Want a value + unit (minutes / hours).
+- `components/SettingsView.tsx` → `SourceRow` (the `refreshSeconds` number input).
+- Store still keeps `refreshSeconds`; convert in the UI (e.g. number + unit dropdown →
+ seconds on save, seconds → friendliest unit on load).
+
+---
+
+_Logged 2026-05-21. Fix as time allows._