feat(ui): task detail wired into both apps via getTask adapters (U2)#385
Conversation
The \s*(...)$ pattern backtracks super-linearly; replace with endsWith + slice. Behavior unchanged — the suffix/review vitest cases still pass (7/7). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…r css:S1874) word-break: break-word is deprecated; overflow-wrap: anywhere is the modern equivalent. Verified in the browser: computed style overflow-wrap=anywhere, spec panel renders unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This libs-only PR exposed the gap: both workflows filter on apps/** (+tests/package files), so changes to the shared libs/ui package skipped test-frontend (which typechecks libs through the apps) and CodeQL entirely — only Sonar ran. Add libs/** to the pull_request and push path filters of ci.yml and quality-security.yml. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Completes the board->detail->back flow on the shared design system in BOTH targets, on top of the merged U1 adapters and U2 TaskDetail screen. Web (apps/web-frontend): - adapter: getTask maps the backend TaskDetail onto UiTaskDetail (per-status progress breakdown, spec body; the decorated status goes through the same suffix-stripping mapStatus). - pages/TaskDetailNext.tsx at /tasks-next/:id with i18n-injected status labels; the /kanban-next pilot now navigates there, so the whole flow stays on the new UI. +3 vitest cases (detail mapping incl. decorated status, optional-field omission, client wiring). Electron (apps/frontend): - adapter: mapTaskToUiTaskDetail (subtask breakdown — SubtaskStatus maps 1:1) + getTask resolving from the live store; specContent stays undefined until an IPC spec fetch is wired (follow-up). - KanbanPilotView: selecting a card opens the shared TaskDetail INLINE (board -> detail -> back), replacing the legacy modal hop; status labels reuse the pilot column translations; App no longer passes onTaskSelect. +3 vitest cases. Also recovers three commits stranded by early squash-merges of #383/#384: the S8786 regex removal, the css S1874 overflow-wrap fix, and the ci path-filter fix adding libs/** so libs-only PRs actually run tests/CodeQL. Verified: electron vitest 11/11 + tsc exit 0; web vitest 10/10 + tsc adds no new errors over the 5 pre-existing baseline test-file errors. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
|
Warning Review limit reached
Next review available in: 18 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the 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 configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (12)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
* feat(ui): spec body in the shared TaskDetail via IPC fetch (U2) Closes the follow-up noted in the adapter since #385: the Electron pilot's detail view now shows the spec document. - new task:spec:contentGet channel + readSpecContent() alongside the existing task:spec:* readers (same getSpecDir path validation, ENOENT -> null, findTaskAndProject resolution) - preload getSpecContent(taskId) + renderer ElectronAPI typing, browser mock and vitest global mock kept in parity with sibling readers - adapter: createTaskStoreAutoCodeClient gains a loadSpecContent option; getTask injects the body into UiTaskDetail.specContent, failures are swallowed (spec body is progressive enhancement) - KanbanPilotView wires the option over window.electronAPI Tests: 20 vitest (3 new: loader success/null/failure isolation); electron tsc 0. Reviewed by a 3-lens adversarial workflow — integration lens clean (handler registration verified), 2 confirmed nits fixed (global test-mock parity, doc-block inventories). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Oleg Miagkov <mrobenner@gmail.com> * fix(ui): empty spec.md is valid content + log spec-load failures (U2 review) - handler: check specContent == null instead of falsy, so an existing-but-empty spec.md returns success with '' rather than a false 'Spec content not found' error - adapter: the progressive-enhancement catch now logs a console.warn, so unexpected IPC failures stay diagnosable instead of vanishing Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: Oleg Miagkov <mrobenner@gmail.com> --------- Signed-off-by: Oleg Miagkov <mrobenner@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>



Completes the board → detail → back flow on the shared design system in both targets, on top of the merged U1 adapters (#383) and the U2 TaskDetail screen (#384).
Web (
apps/web-frontend)getTaskmaps the backendTaskDetailontoUiTaskDetail— per-status progress breakdown, spec body; the decorated status goes through the same suffix-strippingmapStatus(per the recorded learning)./tasks-next/:id(TaskDetailNext) with i18n-injected status labels; the/kanban-nextpilot now navigates there — the whole flow stays on the new UI. +3 vitest cases.Electron (
apps/frontend)mapTaskToUiTaskDetail(subtask breakdown —SubtaskStatusmaps 1:1 onto the shared counts) +getTaskresolving from the live store.specContentstaysundefineduntil an IPC spec fetch is wired (noted follow-up).KanbanPilotView: selecting a card opens the shared TaskDetail inline (board → detail → back) instead of hopping to the legacy modal; status labels reuse the pilot column translations. +3 vitest cases.Recovered stranded commits
Early squash-merges of #383/#384 stranded three review-round commits, cherry-picked here: the S8786 regex removal, the css S1874
overflow-wrapfix, and the CI path-filter fix addinglibs/**so libs-only PRs actually run tests/CodeQL (exactly what #384 exposed: it got only 4 checks).Verification
Electron: vitest 11/11,
tscexit 0. Web: vitest 10/10,tscadds no new errors over the 5 pre-existing baseline test-file errors (Terminal.test.tsx×4,websocket.test.ts×1; CI doesn't typecheck web-frontend).🤖 Generated with Claude Code