Rename Tasks app to Routines (#2143) - #2298
Conversation
|
Warning Review limit reached
Next review available in: 5 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. 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: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughThe existing tasks app now presents itself as “Routines” across the desktop interface, registry, and related documentation. Its identifier, component, configuration, backend behavior, and task data handling remain unchanged. ChangesRoutine terminology
Estimated code review effort: 1 (Trivial) | ~5 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 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 |
PR Summary by QodoRename Tasks app UI to “Routines” (keep app id/routes stable)
AI Description
Diagram
High-Level Assessment
Files changed (9)
|
|
nemotron-super review VERDICT: No blocking issues found. Automated first-pass review by the nemotron-super lane. The lead still reviews before merge. |
The PR edited docs/taos-agent-manual.md, which is generated from docs/agent-manual/*.md by scripts/build-agent-manual.py. The source still said Tasks, so test_compiled_output_matches_committed failed and the next person to run the build would have silently reverted the rename. Fixed the source and regenerated. Changelog added as a fragment.
|
Reviewed at 95f2e0c; lead-completed at 90676c0. The rename itself is right; it was edited in the wrong place. THE RENAME IS CORRECT AND CORRECTLY MINIMAL: name 'Tasks' -> 'Routines' in app-registry.ts while KEEPING id: 'tasks' and the TasksApp component. Changing the id would have broken persisted layouts and pinned positions for every existing user, so leaving it is the right call, not an oversight. THE DEFECT: the PR edited docs/taos-agent-manual.md, which is GENERATED from docs/agent-manual/*.md by scripts/build-agent-manual.py. The source (04-apps.md) still said Tasks. Two consequences: tests/test_agent_manual_compiled.py::test_compiled_output_matches_committed FAILS, and - worse than the red - the next person to run the build script would have silently reverted the rename, with nothing to indicate why it came back. FIXED: renamed in the SOURCE, regenerated the manual (17617 chars, comfortably under the 18000 cap), sync test now 4/4. Also added the changelog as a FRAGMENT (changelog.d/2298-tasks-to-routines.md) rather than a CHANGELOG.md edit - #2290 landed that mechanism today, and a rename PR is exactly the kind that sits open long enough to collide on the shared [Unreleased] anchor. doc-gate now clean. Auto-merge armed on green. |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
desktop/src/apps/TasksApp.tsx (2)
358-358: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winExpose the routine-list label to assistive technology.
aria-labelon a plain<div>does not provide list semantics reliably. Use a semantic list, or addrole="list"and matchingrole="listitem"children. The terminology change alone does not make the list name discoverable.🤖 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 `@desktop/src/apps/TasksApp.tsx` at line 358, Update the routine list container in the TasksApp component around the “Routine list” aria-label to use semantic list markup, preferably replacing the div with a list element and ensuring each routine child is a list item so the accessible name is exposed reliably.
296-307: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd regression coverage for the terminology change.
This PR changes toolbar, empty-state, dialog, and action labels, but no test file changes. Add a
TasksAppcomponent test for the visible and accessible Routines labels. Also assert thatgetApp("tasks")still returns theRoutinesdisplay name while preserving thetasksidentifier.🤖 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 `@desktop/src/apps/TasksApp.tsx` around lines 296 - 307, Add regression coverage in the TasksApp component tests for the updated visible and accessible “Routines” labels across the toolbar, empty state, dialog, and actions. Also verify getApp("tasks") returns the “Routines” display name while retaining the "tasks" identifier.
🤖 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 `@docs/design/remote-desktop-app-audit.md`:
- Line 26: Update the documented component entry from RoutinesApp to TasksApp,
preserving Routines only as an optional display name such as Routines
(TasksApp); align it with the exported TasksApp component and registry
identifier.
---
Nitpick comments:
In `@desktop/src/apps/TasksApp.tsx`:
- Line 358: Update the routine list container in the TasksApp component around
the “Routine list” aria-label to use semantic list markup, preferably replacing
the div with a list element and ensuring each routine child is a list item so
the accessible name is exposed reliably.
- Around line 296-307: Add regression coverage in the TasksApp component tests
for the updated visible and accessible “Routines” labels across the toolbar,
empty state, dialog, and actions. Also verify getApp("tasks") returns the
“Routines” display name while retaining the "tasks" identifier.
🪄 Autofix
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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: f982d0ad-9de9-418c-8f8f-8c45a4ea8c92
📒 Files selected for processing (9)
desktop/src/apps/TasksApp.tsxdesktop/src/registry/app-registry.tsdocs/design/plan-desktop-shell-core.mddocs/design/remote-desktop-app-audit.mddocs/superpowers/plans/2026-04-12-x-monitor.mddocs/superpowers/specs/2026-04-12-app-runtime-design.mddocs/superpowers/specs/2026-04-12-github-browser-design.mddocs/superpowers/specs/2026-04-12-x-monitor-design.mddocs/taos-agent-manual.md
| - **ProjectsApp** — Kanban + canvas, server-side data | ||
| - **MemoryApp** — memory store | ||
| - **TasksApp** — server-side tasks | ||
| - **RoutinesApp** — server-side tasks |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Keep the documented component identifier as TasksApp.
desktop/src/apps/TasksApp.tsx still exports TasksApp, and the registry still loads that component. Routines is the display name only. Change this entry to TasksApp, or write Routines (TasksApp).
Suggested wording
-- **RoutinesApp** — server-side tasks
+- **Routines (TasksApp)** — server-side tasks📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - **RoutinesApp** — server-side tasks | |
| - **Routines (TasksApp)** — server-side tasks |
🤖 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 `@docs/design/remote-desktop-app-audit.md` at line 26, Update the documented
component entry from RoutinesApp to TasksApp, preserving Routines only as an
optional display name such as Routines (TasksApp); align it with the exported
TasksApp component and registry identifier.
Code Review by Qodo
1. Launchpad can't find Tasks
|
| - **ProjectsApp** — Kanban + canvas, server-side data | ||
| - **MemoryApp** — memory store | ||
| - **TasksApp** — server-side tasks | ||
| - **RoutinesApp** — server-side tasks |
There was a problem hiding this comment.
1. Em dash in routinesapp line 📜 Skill insight ✧ Quality
The updated documentation line contains an em dash character (—) in public-facing text, which is disallowed. This can cause inconsistent typography/search behavior and violates the repo style requirement.
Agent Prompt
## Issue description
A modified documentation line includes an em dash (`—`), which is disallowed in public-facing text.
## Issue Context
The PR updates `TasksApp` to `RoutinesApp` in docs, but the updated line still uses an em dash character.
## Fix Focus Areas
- docs/design/remote-desktop-app-audit.md[26-26]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| { id: "channels", name: "Channels", icon: "radio", category: "platform", component: () => import("@/apps/ChannelsApp").then((m) => ({ default: m.ChannelsApp })), defaultSize: { w: 800, h: 500 }, minSize: { w: 450, h: 350 }, singleton: true, pinned: false, launchpadOrder: 9, tier: 3 }, | ||
| { id: "secrets", name: "Secrets", icon: "key-round", category: "platform", component: () => import("@/apps/SecretsApp").then((m) => ({ default: m.SecretsApp })), defaultSize: { w: 750, h: 500 }, minSize: { w: 400, h: 300 }, singleton: true, pinned: false, launchpadOrder: 10, tier: 2, group: "System" }, | ||
| { id: "tasks", name: "Tasks", icon: "calendar-clock", category: "platform", component: () => import("@/apps/TasksApp").then((m) => ({ default: m.TasksApp })), defaultSize: { w: 800, h: 500 }, minSize: { w: 450, h: 350 }, singleton: true, pinned: false, launchpadOrder: 11 }, | ||
| { id: "tasks", name: "Routines", icon: "calendar-clock", category: "platform", component: () => import("@/apps/TasksApp").then((m) => ({ default: m.TasksApp })), defaultSize: { w: 800, h: 500 }, minSize: { w: 450, h: 350 }, singleton: true, pinned: false, launchpadOrder: 11 }, |
There was a problem hiding this comment.
2. Launchpad can't find tasks 🐞 Bug ≡ Correctness
Launchpad search filters only by AppManifest.name, so after renaming the tasks app’s name to “Routines”, searching for "tasks" will no longer surface this app even though its id remains tasks. This regresses app discoverability/backward-compatibility for users/docs still using the old name.
Agent Prompt
### Issue description
The Launchpad search only matches `app.name`, so renaming the Tasks app to `name: "Routines"` makes the app undiscoverable when users search for the legacy term `tasks`.
### Issue Context
- The app manifest keeps `id: "tasks"` but changes `name` to "Routines".
- Launchpad filters with `a.name.toLowerCase().includes(q)` and does not consider `a.id` or legacy keywords.
### Fix Focus Areas
- desktop/src/components/Launchpad.tsx[40-50]
- desktop/src/registry/app-registry.ts[60-65]
### Suggested fix
Update the Launchpad filter to also match on `a.id` (and optionally a small keyword/alias list), e.g.:
- `a.name.toLowerCase().includes(q) || a.id.toLowerCase().includes(q)`
Optionally add explicit legacy keywords (e.g. `tasks`) if you don’t want ids searchable for all apps.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
| - **ProjectsApp** — Kanban + canvas, server-side data | ||
| - **MemoryApp** — memory store | ||
| - **TasksApp** — server-side tasks | ||
| - **RoutinesApp** — server-side tasks |
There was a problem hiding this comment.
3. Docs mention routinesapp 🐞 Bug ⚙ Maintainability
docs/design/remote-desktop-app-audit.md now refers to a RoutinesApp, but the actual implementation/export remains TasksApp. This documentation/code-name mismatch can mislead maintainers trying to locate the referenced app implementation.
Agent Prompt
### Issue description
A design doc now names the app `RoutinesApp`, but there is no such exported component; the app implementation is still `TasksApp`.
### Issue Context
The user-facing app name was renamed to “Routines”, but the code-level symbol/file has not been renamed.
### Fix Focus Areas
- docs/design/remote-desktop-app-audit.md[23-29]
- desktop/src/apps/TasksApp.tsx[50-56]
### Suggested fix
Either:
1) Update the doc to say `TasksApp` (and mention it’s branded as “Routines”), or
2) Perform a full code rename (`TasksApp` -> `RoutinesApp`, file/module rename, registry import updates) and keep an alias export if needed for compatibility.
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (11 files)
Reviewed by step-3.7-flash · Input: 78.3K · Output: 9.9K · Cached: 287K |
CARD TITLE (intent, not commit subject): Rename Tasks app to Routines (#2143)
Autonomous build of board card tsk-fgj5yp.
Files:
docs/design/plan-desktop-shell-core.md | 2 +-
docs/design/remote-desktop-app-audit.md | 2 +-
docs/superpowers/plans/2026-04-12-x-monitor.md | 2 +-
.../specs/2026-04-12-app-runtime-design.md | 2 +-
.../specs/2026-04-12-github-browser-design.md | 2 +-
.../specs/2026-04-12-x-monitor-design.md | 2 +-
docs/taos-agent-manual.md | 2 +-
10 files changed, 20 insertions(+), 56 deletions(-)
Summary by CodeRabbit
UI Updates
Documentation