Skip to content

feat(work-items): redesign dependency management UX with direction toggle#131

Merged
steilerDev merged 1 commit into
betafrom
fix/dependency-ux-redesign
Feb 19, 2026
Merged

feat(work-items): redesign dependency management UX with direction toggle#131
steilerDev merged 1 commit into
betafrom
fix/dependency-ux-redesign

Conversation

@steilerDev
Copy link
Copy Markdown
Owner

Summary

  • WorkItemDetailPage: Renamed "Predecessors (Blocking This)" → "Depends On" and "Successors (Blocked By This)" → "Blocks"; added segmented direction toggle to the Add Dependency form; added delete buttons to successor items; added direction-aware confirmation modal text; added dependency type description help text; excluded successors from picker's exclude list
  • WorkItemCreatePage: Added full Dependencies section with direction toggle, WorkItemPicker, type dropdown with help text, pending dependency chips (removable), and sequential post-creation dependency creation
  • WorkItemPicker: Added optional onSelectItem prop that returns { id, title } alongside the existing onChange(id) — non-breaking addition

No backend changes. Direction is handled by swapping predecessor/successor IDs in existing API calls (createDependency(successorId, { predecessorId }) for "depends on" and createDependency(pickedItemId, { predecessorId: currentItemId }) for "blocks").

Changed Files

  • client/src/components/WorkItemPicker/WorkItemPicker.tsx — optional onSelectItem prop
  • client/src/pages/WorkItemDetailPage/WorkItemDetailPage.tsx — full redesign
  • client/src/pages/WorkItemDetailPage/WorkItemDetailPage.module.css — direction toggle + help text styles
  • client/src/pages/WorkItemDetailPage/WorkItemDetailPage.test.tsx — trivial label text fixes
  • client/src/pages/WorkItemCreatePage/WorkItemCreatePage.tsx — new Dependencies section
  • client/src/pages/WorkItemCreatePage/WorkItemCreatePage.module.css — new styles for chips, toggle, pills
  • client/src/pages/WorkItemCreatePage/WorkItemCreatePage.test.tsx — added missing mocks for new imports

Test plan

  • All 371 client-side Jest tests pass (npm test -- --testPathPatterns="client/src")
  • npm run lint passes (0 errors)
  • npm run format:check passes
  • npm run typecheck passes
  • On WorkItemDetailPage: direction toggle switches between "depends on" and "blocks", correct API call is made for each
  • On WorkItemDetailPage: successors now have a × delete button; confirmation modal shows direction-aware text
  • On WorkItemDetailPage: dependency type dropdown shows description help text
  • On WorkItemCreatePage: dependencies section shows toggle + picker + type dropdown + chip list
  • On WorkItemCreatePage: pending chips show colored direction pill and can be removed
  • Keyboard: Tab navigates toggle buttons, Enter/Space activates them

🤖 Generated with Claude Code

…ggle

Redesign the dependency management UI on both WorkItemDetailPage and
WorkItemCreatePage to make it clearer whether you are adding a dependency
that this item depends on vs. one it blocks.

WorkItemDetailPage:
- Rename "Predecessors (Blocking This)" → "Depends On"
- Rename "Successors (Blocked By This)" → "Blocks"
- Add segmented direction toggle ("This item depends on" / "This item blocks")
  with aria-pressed and role="group" for accessibility
- Add delete (×) button to successor items (previously read-only)
- Update deletingDependency state to typed object with direction-aware
  confirmation modal text
- Add dependency type description help text below the type dropdown
- Exclude both predecessors and successors from WorkItemPicker's excludeIds
- Handle 409 conflicts with specific error message

WorkItemCreatePage:
- Add full Dependencies section with direction toggle, WorkItemPicker,
  type dropdown with help text, and "Add to list" button
- Pending dependency chips show direction pill (blue "depends on" /
  red "blocks"), title, type label, and remove button
- Dependencies created sequentially after work item is saved; partial
  failures navigate to detail page with a depError query param
- No backend changes required; direction is handled by swapping
  predecessor/successor IDs in the API calls

WorkItemPicker:
- Add optional onSelectItem prop that fires with { id, title } alongside
  the existing onChange(id) callback (non-breaking addition)

Fixes trivial test breaks caused by label renames (QA-owned test files
updated inline per project convention for label-change breakages).

Co-Authored-By: Claude frontend-developer (Sonnet 4.5) <noreply@anthropic.com>
@steilerDev steilerDev merged commit 6ecd88f into beta Feb 19, 2026
4 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.8.0-beta.23 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

@steilerDev steilerDev deleted the fix/dependency-ux-redesign branch February 19, 2026 20:39
@github-actions
Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 1.8.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants