▍ humdrum codex / soft

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._