Skip to content

Complete HTTP task API and local task UI - #16

Merged
krishna916 merged 4 commits into
mainfrom
feature/issue-9-local-task-ui
Jul 25, 2026
Merged

Complete HTTP task API and local task UI#16
krishna916 merged 4 commits into
mainfrom
feature/issue-9-local-task-ui

Conversation

@krishna916

@krishna916 krishna916 commented Jul 25, 2026

Copy link
Copy Markdown
Owner

Completes the local task-management UI and finalizes the HTTP task API work. Includes task views, task lifecycle controls, metadata editing, API client coverage, and a correction so known persistence failures are not logged as unhandled HTTP failures.\n\nValidated with formatting, typechecking, linting, focused UI/API tests, and HTTP task integration tests.

Summary by CodeRabbit

  • New Features

    • Added a desktop-oriented task management interface for capturing, reviewing, editing, and organizing tasks.
    • Added views for Inbox, Active, Backlog, and Completed tasks.
    • Added task lifecycle actions, editing, archive confirmation, validation, and conflict recovery.
    • Added accessible task navigation, status indicators, empty states, error messages, and retry actions.
    • Added responsive styling for smaller screens.
  • Bug Fixes

    • Improved handling of expected application errors without exposing unnecessary server error details.
  • Documentation

    • Added an implementation plan documenting the task management experience and quality requirements.

@coderabbitai

coderabbitai Bot commented Jul 25, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@krishna916, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 39 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e81615de-fc83-466d-b928-a0c4cc00361c

📥 Commits

Reviewing files that changed from the base of the PR and between 0492315 and efb3f19.

📒 Files selected for processing (2)
  • web/src/App.test.tsx
  • web/src/App.tsx
📝 Walkthrough

Walkthrough

The PR replaces the health-only web shell with a task-management UI, adding validated task API access, task views, capture/edit/lifecycle workflows, conflict reconciliation, tests, styling, coverage configuration, and refined HTTP error logging.

Changes

Task management UI

Layer / File(s) Summary
Task API contracts and client
web/src/api/*, tests/unit/web/task-client.test.ts, docs/superpowers/plans/...
Adds Zod schemas, typed task operations, structured API errors, response validation, encoded IDs, completed-task limits, and client tests.
Task views and presentation
web/src/hooks/*, web/src/components/*, web/src/styles.css, web/src/main.tsx
Adds abortable task loading, navigation, list/detail rendering, error retry UI, accessibility attributes, and responsive styling.
Capture, editing, and lifecycle controls
web/src/components/TaskComposer.tsx, web/src/components/TaskDetailsPanel.tsx, docs/superpowers/plans/...
Adds task creation, editable drafts, dirty-change confirmation, status actions, archive confirmation, and pending-state controls.
Application orchestration and UI validation
web/src/App.tsx, web/src/App.test.tsx, vitest.config.ts, package.json
Wires views and mutations through App, reconciles task membership and 409 conflicts, updates UI tests, expands coverage, and adds Prettier.
HTTP application-error logging
src/interfaces/http/http-router.ts, tests/integration/http-tasks.test.ts
Suppresses stderr logging for handled TaskApplicationError responses while retaining generic 500 responses and verifies the behavior.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related issues

Possibly related PRs

  • krishna916/relay#3 — Provides the health-only React scaffold and shared Vitest coverage setup extended by this UI overhaul.
  • krishna916/relay#13 — Introduces the task application error handling used by the router’s refined stderr condition.
  • krishna916/relay#14 — Directly relates to HTTP routing and error mapping for the task API.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: completing the HTTP task API and the local task-management UI.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/issue-9-local-task-ui

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@krishna916 krishna916 linked an issue Jul 25, 2026 that may be closed by this pull request
11 tasks

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/src/App.tsx`:
- Around line 128-141: Update the header retry button in the health-status
rendering of App to use a distinct accessible name, such as “Retry connection,”
while keeping its checkHealth behavior unchanged. Ensure ErrorBanner’s reload
button retains the “Retry” name so task-list retry queries target the intended
button.

In `@web/src/hooks/useTaskView.ts`:
- Around line 15-18: Update the view-change branch in useTaskView to stop
clearing tasks when displayedView.current differs from view, so the previous
task list remains visible while the new view loads. Remove displayedView and its
related logic if it is no longer used after this change.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 042f8343-1192-4855-9e76-612f39a17077

📥 Commits

Reviewing files that changed from the base of the PR and between 7e5eee7 and 0492315.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (20)
  • docs/superpowers/plans/2026-07-25-local-task-management-ui.md
  • package.json
  • src/interfaces/http/http-router.ts
  • tests/integration/http-tasks.test.ts
  • tests/unit/web/task-client.test.ts
  • vitest.config.ts
  • web/src/App.test.tsx
  • web/src/App.tsx
  • web/src/api/task-client.ts
  • web/src/api/task-contracts.ts
  • web/src/components/ErrorBanner.tsx
  • web/src/components/TaskComposer.tsx
  • web/src/components/TaskDetailsPanel.tsx
  • web/src/components/TaskList.tsx
  • web/src/components/TaskRow.tsx
  • web/src/components/TaskStatusBadge.tsx
  • web/src/components/ViewNavigation.tsx
  • web/src/hooks/useTaskView.ts
  • web/src/main.tsx
  • web/src/styles.css

Comment thread web/src/App.tsx
Comment on lines +15 to +18
if (displayedView.current !== view) {
displayedView.current = view;
setTasks([]);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Retain the prior list while the new view loads.

Clearing tasks here causes a blank-state flicker on every view change, contrary to the plan’s requirement to retain displayed tasks while reloading. Remove this reset (and displayedView if it becomes unused).

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/hooks/useTaskView.ts` around lines 15 - 18, Update the view-change
branch in useTaskView to stop clearing tasks when displayedView.current differs
from view, so the previous task list remains visible while the new view loads.
Remove displayedView and its related logic if it is no longer used after this
change.

@krishna916
krishna916 merged commit 41c551e into main Jul 25, 2026
2 checks passed
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.

Build the minimal local task-management UI

1 participant