millrace-studio/roster-board #12
Rebuild the planner grid into a flat task list
Summary
Swaps the month-grid planner for a flat, keyboard-friendly task list with full create, edit and delete support.
Frontend rebuild:
Sidebar: nav entries (Inbox / Today / Upcoming / Done) with active-state highlighting and badge counts; a "My boards" section with colour-coded filters (Personal, Client, Blocked, Reading); accent "New task" buttonTaskListView(new): renders the filtered list with a circular checkbox → toggle complete, inline title/notes/due-date/board badge, hover-revealed edit and delete icons, and a quick-add row pinned to the bottomPlanner:visibleTasksmemo switches oncurrentViewto filter by completion state,isToday/isLaterfor date views, orboardfor board views;taskCountsfeeds the sidebar badges;handleQuickAddinfers the board from the current view
Backend fix (backend/server.py):
# Before — the projection dropped _id, so every task came back with id: ""
tasks = await db.tasks.find(query, {"_id": 0}).to_list(1000)
# After — _id is kept and cast to a string
tasks = await db.tasks.find(query).to_list(1000)
for task in tasks:
task["id"] = str(task.pop("_id"))
That mismatch made edit, toggle and delete return 404 after any page refresh — the client only held usable ids for the session, straight from the POST response cache.