Skip to content

v0.3.22: Derived plan assignees; tasks page layout tweak#25

Merged
SylonZero merged 2 commits into
masterfrom
feat/derived-plan-assignees
Jul 14, 2026
Merged

v0.3.22: Derived plan assignees; tasks page layout tweak#25
SylonZero merged 2 commits into
masterfrom
feat/derived-plan-assignees

Conversation

@SylonZero

Copy link
Copy Markdown
Owner

Summary

  • Fixes "Assignees always shows Unassigned": the widget's read query was always correct, but nothing in the UI ever wrote to code_plan_assignees — plan creation hardcoded an empty array and the edit sheet had no assignee field at all. Rather than add a picker, assignees now reflect reality: the unique set of users assigned to the plan's tasks (getCodePlan/getCodePlans derive from task.assigneeId). Dropped the now-unused code_plan_assignees table and all its write-path plumbing, for both DB dialects (migration 0010_drop_plan_assignees, applied locally).
  • Tasks page: moved "New Task" onto the same row as the list/board view switcher (previously a separate row above), pulling the table up.

Tag v0.3.22 has been pushed with this changelog.

Test plan

  • New unit tests (tests/lib/db/mutations.test.ts): derived assignees update correctly as tasks are assigned/unassigned across a plan, and a plan with no tasks has no assignees.
  • Full suite: 167/167 passing.
  • tsc --noEmit: no new errors (only the two pre-existing, documented ones).
  • Verified live in browser: reassigning a task and reloading the plan detail page updates the Assignees widget (confirmed via the isolated unit tests, since the demo plan used for a quick manual check had other tasks keeping the same person in the set — correct behavior, just not a visually distinguishing scenario).
  • Verified the Tasks page layout change: New Task button now sits left of the tabs on the filter row, table pulled up.

🤖 Generated with Claude Code

Sai Prakash and others added 2 commits July 14, 2026 16:02
…table

Plan-level assignees were a separately-maintained join table that nothing
in the UI ever wrote to (create always sent an empty array, the edit
sheet had no assignee field), so every plan created through the app was
permanently stuck showing "Unassigned" despite the widget's query logic
being correct.

Rather than add an assignee picker, make assignees reflect reality: the
unique set of users assigned to the plan's tasks. This can't drift from
what's actually happening, and needs no extra UI to keep in sync.

- getCodePlan/getCodePlans (lib/db/queries.ts) derive assigneeIds from
  task.assigneeId instead of joining code_plan_assignees.
- Dropped the now-write-only assigneeIds param from createCodePlan/
  updateCodePlan and syncPlanAssignees entirely (lib/db/mutations.ts).
- Dropped the code_plan_assignees table (schema + migration, both
  dialects) and its now-dead references in seed-demo.ts and tests.
- Also: moved the Tasks page's "New Task" button onto the same row as
  the list/board view switcher (was a separate row above, pushing the
  table down for no reason).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@SylonZero SylonZero merged commit 0dfda44 into master Jul 14, 2026
1 check passed
@SylonZero SylonZero deleted the feat/derived-plan-assignees branch July 14, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant