Skip to content

feat(ui): refresh onboarding with refined ProductOS UX - #158

Merged
AssafMiron merged 49 commits into
mainfrom
ux-accomplish-inspired-ui
May 11, 2026
Merged

AssafMiron merged 49 commits into
mainfrom
ux-accomplish-inspired-ui

Conversation

@aviatam

@aviatam aviatam commented May 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Refreshes the welcome/onboarding surface with a refined dark hero, pill messaging, CTA hierarchy, and action-oriented Copilot preview
  • Clarifies product-vs-app settings language across the workspace
  • Adds SVG and PNG UI mockups for review
  • Adds a Product Home flow and responsive/color QA hardening for mobile, tablet, and desktop widths

Screenshots / Mockups

Welcome — refined ProductOS entry

Welcome — refined ProductOS entry

Workspace — Product settings

Workspace — Product settings

Existing ProductOS hero asset

ProductOS hero asset

Verification

  • npm run build ✅
  • npx playwright test e2e/layout.spec.ts ✅ 5 passed
  • npx playwright test e2e/projects.spec.ts e2e/settings.spec.ts ✅ 8 passed, 1 skipped
  • npm run test:backend ✅ 44 passed

Summary by CodeRabbit

  • Documentation

    • Added a comprehensive UX Flow Map & Ambiguity Audit and a Product UX Change Map with priorities and implementation guidance.
  • New Features

    • Product Home screen with readiness summary, recommended tasks, and next-best-action.
    • Richer Welcome layout with clearer CTAs.
    • Chat prefill support and “Try” hint chips to populate example prompts.
  • UX / Copy

    • Global terminology changed from “Project” to “Product”; improved empty states and labels.
  • Interaction

    • Enhanced confirmation dialog (typed confirmation + deletion scope) and refined responsive layout behavior.
  • Tests

    • E2E tests updated/expanded for product flows and horizontal overflow checks.

@aviatam
aviatam requested a review from AssafMiron as a code owner May 9, 2026 07:47
@coderabbitai

coderabbitai Bot commented May 9, 2026 •

Copy link
Copy Markdown
Contributor

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a UX flow audit and change map; standardizes UI copy to "Product" and "App settings"; introduces ProductHome and MainPanel responsive/stacked layout; refactors Welcome; adds chat hint chips and workflow delete confirmation; updates E2E tests and skill-import API payload.

Changes

ProductOS Terminology & Welcome Page Redesign

Layer / File(s) Summary
UX Flow Audit & Change Map
docs/ux-flow-map.md, docs/ux-change-map.md, docs/README.md
Adds a UX audit with severity legend, per-area Mermaid flow diagrams, ambiguity register, redesign north star, and an ordered change map with implementation plan; README link added.
TopBar / MenuBar / Sidebar
src/components/workspace/TopBar.tsx, src/components/workspace/MenuBar.tsx, src/components/workspace/Sidebar.tsx
Standardizes visible terminology to "Product" and "App settings"; updates Sidebar responsive labels, flyout width clamping, delete dialog scope/typed-confirm wiring, TopBar empty state and settings aria/title, and File menu labels.
Project Create Dialog
src/components/workspace/ProjectFormDialog.tsx
Updates dialog header, name/goal labels and placeholders, and starter skills label from "Project" → "Product".
Project Settings
src/pages/ProjectSettings.tsx
Converts ProjectSettings initialization and UI copy to Product wording across headings, labels, templates, override badges, and save button.
Workspace wiring & MainPanel prop changes
src/pages/Workspace.tsx, src/components/workspace/MainPanel.tsx
Adds product-home doc generation, routes document opens through handleDocumentOpen, adds onOpenProductSettings and onSendPrompt props, prefers product-home on product select, and updates many toast/messages to "Product".
MainPanel layout & Empty State
src/components/workspace/MainPanel.tsx
Adds viewportWidth tracking and stacked content mode for narrow viewports, conditional chat resizer, applies computed chatStyle to chat container, includes product-home in special-doc logic, and replaces plain empty-state text with a styled Sparkles callout.
Product Home page
src/pages/ProductHome.tsx
New ProductHome component with onboarding fallback, stats, "Recommended Tasks" and "Next best action" UI, readiness list, and handlers for opening files/chats/settings, creating products, and sending prompts.
Welcome Page Data-Driven Redesign
src/pages/Welcome.tsx
Refactors the welcome page into a branded, data-driven layout: new icon/Button imports, taskChips/differentiators/capabilities arrays, hero CTAs, Copilot task card with chips, differentiators list, and capabilities grid.
Chat prefill & Hints
src/components/workspace/ChatPanel.tsx
Adds support for chat:prefill-query, a "Try" hint-chip row that populates the input, and updates the chat placeholder.
Workflow deletion & Confirmation
src/components/workflow/WorkflowList.tsx, src/components/ui/ConfirmationDialog.tsx
Replaces browser confirm(...) with a state-driven ConfirmationDialog (supports typed-confirm and deletion scope); WorkflowList uses workflowPendingDelete and the dialog for deletions; create/empty-state copy updated.
Approval Card UI
src/components/workspace/ApprovalCard.tsx
Restyles approval card, expands iconography, and reformats payload detail rendering per action type with updated labels and CTAs.
Settings Pages
src/pages/GlobalSettings.tsx, src/components/settings/SystemSettings.tsx, src/components/settings/ArtifactSettings.tsx
GlobalSettings gains optional initialProjectId and syncs selection; SystemSettings and ArtifactSettings rename copy from projects→products and update dialog/toast/helper text.
API / Backend
src/api/server.ts, node-backend/server.mjs
Client skillsApi.importSkill now accepts npxCommand and posts { npxCommand }; backend /api/skills/import accepts legacy skill_command; /api/settings/usage can be project-scoped; /api/files/exists returns 200+false for missing files; server imports importSkill.
Node backend libs
node-backend/lib/skills.mjs, node-backend/lib/workflows.mjs
listSkills/getSkillById now support flat *.md skills; listWorkflows/getWorkflow scan .metadata/workflows and .workflows, deduplicate, skip malformed JSON, and fallback read paths.
Runtime API
src/api/runtime.ts
runtimeApi.getUsageStatistics now forwards optional projectId to settingsApi.getUsageStatistics(projectId).
E2E tests
e2e/layout.spec.ts, e2e/projects.spec.ts, e2e/settings.spec.ts
Adds expectNoHorizontalOverflow helper and a responsive product-home test; renames Project CRUD suite to Product CRUD; updates New Product tests and selecting-product → product-home test; broadens settings selector to match "App Settings".

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested reviewers

  • AssafMiron

Poem

🐰 From "project" to "product" the labels prance,
An audit maps the flows, a clearer stance,
Sparkles guide the empty page's light,
Chips whisper hints and make the chat feel right. ✨

🚥 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: a refresh of the onboarding/welcome surface with refined ProductOS UX, which is a primary focus across multiple files including Welcome.tsx and documentation.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ux-accomplish-inspired-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 and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 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/ux-flow-map.md`:
- Line 151: The markdown table cell showing the logical operator in the docs can
be mis-parsed; update the cell that references handleProjectSelect and the
expression involving firstChat and first document by replacing the literal "||"
with an escaped form (e.g. use the HTML entity for pipe) so the operator renders
correctly inside the table cell—modify the table row that mentions
handleProjectSelect / firstChat || first document to use the escaped pipe
sequence instead and keep the surrounding explanatory text intact.
🪄 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

Run ID: d7d951bd-8684-4677-9f7d-e0bc143f7dde

📥 Commits

Reviewing files that changed from the base of the PR and between 43a0796 and e81faf7.

⛔ Files ignored due to path filters (4)
  • docs/mockups/welcome-accomplish-inspired.png is excluded by !**/*.png
  • docs/mockups/welcome-accomplish-inspired.svg is excluded by !**/*.svg
  • docs/mockups/workspace-product-settings.png is excluded by !**/*.png
  • docs/mockups/workspace-product-settings.svg is excluded by !**/*.svg
📒 Files selected for processing (7)
  • docs/README.md
  • docs/ux-flow-map.md
  • src/components/workspace/MainPanel.tsx
  • src/components/workspace/ProjectFormDialog.tsx
  • src/components/workspace/Sidebar.tsx
  • src/components/workspace/TopBar.tsx
  • src/pages/Welcome.tsx

Comment thread docs/ux-flow-map.md Outdated

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
docs/ux-change-map.md (1)

57-59: ⚡ Quick win

Normalize file-path notation in “Main surfaces”

This section mixes repo-relative paths and filename-only references (e.g., Line 57 vs Line 58/59). Standardizing on repo-relative paths will make implementation handoff less ambiguous.

🤖 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/ux-change-map.md` around lines 57 - 59, The "Main surfaces" table mixes
repo-relative paths and filename-only references; update all filename-only
entries to repo-relative paths for consistency. Edit the table rows referencing
Welcome.tsx and ProviderSettings.tsx so they read src/pages/Welcome.tsx and
src/pages/ProviderSettings.tsx, and ensure other entries (e.g., Onboarding.tsx,
App.tsx) use the repo-relative form (src/pages/Onboarding.tsx, src/App.tsx) so
every cell follows the same convention.
🤖 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/ux-change-map.md`:
- Line 123: Update the table row containing "P2 | Make rail tooltips always
clear | Every rail icon should have a precise tooltip and active state. |
`Sidebar.tsx` | Low risk polish." to hyphenate the compound adjective by
replacing "Low risk polish." with "Low-risk polish."; locate the entry by
searching for the exact row text or the `Sidebar.tsx` reference and modify the
final cell accordingly.
- Line 26: The P0 legend in the table is a fragment; rewrite the P0 row so it is
a self-contained full sentence that clearly states the priority and required
action (e.g., "P0 — Safety, trust, and scope clarity: must be resolved before
broad release."). Update the P0 table cell text (the "P0" legend entry) to this
full-sentence form to improve scanability and consistency with other legend
rows.

---

Nitpick comments:
In `@docs/ux-change-map.md`:
- Around line 57-59: The "Main surfaces" table mixes repo-relative paths and
filename-only references; update all filename-only entries to repo-relative
paths for consistency. Edit the table rows referencing Welcome.tsx and
ProviderSettings.tsx so they read src/pages/Welcome.tsx and
src/pages/ProviderSettings.tsx, and ensure other entries (e.g., Onboarding.tsx,
App.tsx) use the repo-relative form (src/pages/Onboarding.tsx, src/App.tsx) so
every cell follows the same convention.
🪄 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

Run ID: ca351611-4629-4fea-adee-0ce1d9ad1dd7

📥 Commits

Reviewing files that changed from the base of the PR and between e81faf7 and 63c08c0.

📒 Files selected for processing (2)
  • docs/README.md
  • docs/ux-change-map.md
✅ Files skipped from review due to trivial changes (1)
  • docs/README.md

Comment thread docs/ux-change-map.md Outdated
Comment thread docs/ux-change-map.md Outdated
@aviatam aviatam changed the title feat(ui): refresh onboarding with Accomplish-inspired UX feat(ui): refresh onboarding with refined ProductOS UX May 9, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 3

♻️ Duplicate comments (2)
docs/ux-change-map.md (2)

25-25: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Grammar: Make the P0 legend a complete sentence.

The P0 row in the priority legend table reads as a fragment. Consider rephrasing to: "P0 — Safety, trust, and scope clarity that should be addressed before broad release."

🤖 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/ux-change-map.md` at line 25, Update the P0 legend text in the priority
table (the row starting with "P0") so it becomes a complete sentence; replace
the fragment "Safety / trust / scope clarity. Should be addressed before broad
release." with "P0 — Safety, trust, and scope clarity that should be addressed
before broad release." to fix the grammar.

122-122: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Grammar: Hyphenate the compound adjective.

The phrase "Low risk polish" should use a hyphen: "Low-risk polish."

🤖 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/ux-change-map.md` at line 122, The table row describing the priority
entry uses "Low risk polish" and needs the compound adjective hyphenated; update
the text to "Low-risk polish" in the markdown table entry (the row referencing
`Sidebar.tsx`) so the phrasing is grammatically correct.
🧹 Nitpick comments (3)
e2e/layout.spec.ts (1)

83-84: ⚖️ Poor tradeoff

Consider: Hardcoded color check may be brittle.

The assertion expect(headingColor).toBe('rgb(255, 255, 255)') verifies the heading is white, which is correct for the current dark theme. However, this check will break if theme colors are adjusted in the future. Consider whether this is essential to verify or could be replaced with a contrast-ratio check.

src/components/workspace/MainPanel.tsx (2)

23-23: ⚡ Quick win

Use the frontend alias for the new ProductHome import.

This new relative import breaks the repo’s frontend import convention and makes later moves/refactors harder.

Suggested change
-import ProductHome from '../../pages/ProductHome';
+import ProductHome from '@/pages/ProductHome';

As per coding guidelines, Use @/ path alias for all internal module imports in React/TypeScript frontend code (maps to ./src/).

🤖 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 `@src/components/workspace/MainPanel.tsx` at line 23, Replace the relative
import of ProductHome in MainPanel.tsx with the frontend path alias; update the
import statement that currently references '../../pages/ProductHome' to use
'@/pages/ProductHome' so it follows the repo convention for internal module
imports and remains resilient to future moves/refactors (locate the import line
for ProductHome in the MainPanel component and change the path accordingly).

279-281: ⚡ Quick win

Prefer semantic color tokens in the new empty-state styling.

The new callout adds hard-coded white/emerald utilities, which will drift from the app theme faster than the existing semantic tokens.

As per coding guidelines, Use Tailwind CSS with custom HSL color variables for styling in React components.

🤖 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 `@src/components/workspace/MainPanel.tsx` around lines 279 - 281, The
empty-state span in MainPanel.tsx uses hard-coded white/emerald utilities (the
span with className containing border-white/10, bg-white/[0.045], and the
Sparkles using text-emerald-300); replace these with the app’s semantic Tailwind
token classes (use the HSL-based custom variables for border, background and
icon color tokens used elsewhere, e.g., border-[token], bg-[token],
text-[token]) so the callout follows theme tokens instead of raw colors while
keeping the same layout and the Sparkles icon.
🤖 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 `@src/components/workspace/MainPanel.tsx`:
- Around line 278-282: The empty-state callout guarded by openDocuments.length
=== 0 never appears because the tabs/editor shell is only mounted when
hasContentArea is true; update MainPanel to render the callout when the content
area is not mounted (e.g., when !hasContentArea) or move the span out of the
hasContentArea-dependent shell so it is rendered whenever openDocuments.length
=== 0 regardless of hasContentArea; locate the check using the openDocuments
array and the hasContentArea flag in the MainPanel component and adjust the
conditional logic to ensure the callout is displayed in the empty state.

In `@src/pages/Workspace.tsx`:
- Around line 70-75: getProductHomeDocument currently bakes
WorkspaceProject.name into the Document.name causing stale tab labels after a
rename; change the flow so the Document id remains `product-home-${project.id}`
but its name is not permanently baked (e.g., leave name empty or use a neutral
label) and ensure the UI computes the visible tab label from the current
WorkspaceProject map at render time (or update open documents on rename).
Specifically, update getProductHomeDocument to stop embedding project.name and
modify the tab rendering logic (or the project rename handler) to derive or
refresh the label for any open document whose id matches
`product-home-${project.id}` using the latest WorkspaceProject.name so tabs
always show the current product name.
- Around line 378-383: The current branch that opens the product home only runs
when activeDocument is falsy or is a welcome/product-settings document, so if a
file from product A is open and the user selects product B the code leaves
activeDocument pointing at A and MainPanel shows “File Unavailable.” Update the
conditional around getProductHomeDocument/setOpenDocuments/setActiveDocument to
also trigger when activeDocument exists but belongs to a different product (e.g.
compare activeDocument.productId (or activeDocument.projectId) against
projectWithDocs.id) so selecting a new product always replaces open/active
document with that product's home; keep using getProductHomeDocument,
setOpenDocuments and setActiveDocument to perform the swap.

---

Duplicate comments:
In `@docs/ux-change-map.md`:
- Line 25: Update the P0 legend text in the priority table (the row starting
with "P0") so it becomes a complete sentence; replace the fragment "Safety /
trust / scope clarity. Should be addressed before broad release." with "P0 —
Safety, trust, and scope clarity that should be addressed before broad release."
to fix the grammar.
- Line 122: The table row describing the priority entry uses "Low risk polish"
and needs the compound adjective hyphenated; update the text to "Low-risk
polish" in the markdown table entry (the row referencing `Sidebar.tsx`) so the
phrasing is grammatically correct.

---

Nitpick comments:
In `@src/components/workspace/MainPanel.tsx`:
- Line 23: Replace the relative import of ProductHome in MainPanel.tsx with the
frontend path alias; update the import statement that currently references
'../../pages/ProductHome' to use '@/pages/ProductHome' so it follows the repo
convention for internal module imports and remains resilient to future
moves/refactors (locate the import line for ProductHome in the MainPanel
component and change the path accordingly).
- Around line 279-281: The empty-state span in MainPanel.tsx uses hard-coded
white/emerald utilities (the span with className containing border-white/10,
bg-white/[0.045], and the Sparkles using text-emerald-300); replace these with
the app’s semantic Tailwind token classes (use the HSL-based custom variables
for border, background and icon color tokens used elsewhere, e.g.,
border-[token], bg-[token], text-[token]) so the callout follows theme tokens
instead of raw colors while keeping the same layout and the Sparkles icon.
🪄 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

Run ID: 64b4ce9d-1ba4-4bde-93bc-eb0529c04cbb

📥 Commits

Reviewing files that changed from the base of the PR and between 63c08c0 and d35478e.

⛔ Files ignored due to path filters (3)
  • docs/mockups/welcome-productos-refined.png is excluded by !**/*.png
  • docs/mockups/welcome-productos-refined.svg is excluded by !**/*.svg
  • docs/mockups/workspace-product-settings.svg is excluded by !**/*.svg
📒 Files selected for processing (14)
  • docs/ux-change-map.md
  • e2e/layout.spec.ts
  • e2e/projects.spec.ts
  • e2e/settings.spec.ts
  • src/components/workflow/WorkflowList.tsx
  • src/components/workspace/ChatPanel.tsx
  • src/components/workspace/MainPanel.tsx
  • src/components/workspace/MenuBar.tsx
  • src/components/workspace/ProjectFormDialog.tsx
  • src/components/workspace/Sidebar.tsx
  • src/pages/ProductHome.tsx
  • src/pages/ProjectSettings.tsx
  • src/pages/Welcome.tsx
  • src/pages/Workspace.tsx
✅ Files skipped from review due to trivial changes (2)
  • src/components/workspace/ProjectFormDialog.tsx
  • src/components/workspace/ChatPanel.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/pages/Welcome.tsx

Comment thread src/components/workspace/MainPanel.tsx
Comment thread src/pages/Workspace.tsx
Comment thread src/pages/Workspace.tsx Outdated
AssafMiron
AssafMiron previously approved these changes May 9, 2026
AssafMiron added 2 commits May 9, 2026 16:08
- Updated frontend API client (src/api/server.ts) to send 'npxCommand' instead of 'skill_command' to match backend expectation.\n- Enhanced backend route handler (node-backend/server.mjs) to support 'skill_command' as a fallback for backward compatibility.\n- Fixed 400 Bad Request error when attempting to import skills via the Import Skill dialog.
- Updated /api/settings/usage backend route to support project_id filtering
- Fixed getUsageStatistics API bridge to correctly pass the project ID parameter
- Enhanced Billing dashboard to automatically select and filter by the active product context
- Resolved discrepancy between Sidebar project cost and App Settings global usage totals

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
node-backend/server.mjs (1)

1023-1024: ⚡ Quick win

Consider clarifying the error message to reflect all accepted field names.

The error message states "npxCommand is required", but the route accepts the command from any of three fields: npxCommand, command, or skill_command. This could confuse API consumers trying to debug failed requests.

💬 Suggested improvement
-    if (!npxCommand) return sendError(res, 400, 'npxCommand is required');
+    if (!npxCommand) return sendError(res, 400, 'npxCommand, command, or skill_command is required');
🤖 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 `@node-backend/server.mjs` around lines 1023 - 1024, The error message
currently returned by the check that uses the local variable npxCommand (const
npxCommand = body.npxCommand || body.command || body.skill_command) is
misleading; update the sendError call to mention all accepted field names
(npxCommand, command, or skill_command) so clients know which properties are
valid. Locate the check that uses npxCommand and replace the message passed to
sendError(res, 400, ...) with a clearer message like "one of npxCommand,
command, or skill_command is required" while leaving the logic (the variable
npxCommand and the truthy check) unchanged.
🤖 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.

Nitpick comments:
In `@node-backend/server.mjs`:
- Around line 1023-1024: The error message currently returned by the check that
uses the local variable npxCommand (const npxCommand = body.npxCommand ||
body.command || body.skill_command) is misleading; update the sendError call to
mention all accepted field names (npxCommand, command, or skill_command) so
clients know which properties are valid. Locate the check that uses npxCommand
and replace the message passed to sendError(res, 400, ...) with a clearer
message like "one of npxCommand, command, or skill_command is required" while
leaving the logic (the variable npxCommand and the truthy check) unchanged.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: be3b9a37-09fb-4ba5-8d3f-0b8f159e0b9c

📥 Commits

Reviewing files that changed from the base of the PR and between d35478e and f55157f.

📒 Files selected for processing (8)
  • docs/ux-change-map.md
  • docs/ux-flow-map.md
  • e2e/layout.spec.ts
  • node-backend/server.mjs
  • src/api/server.ts
  • src/components/workspace/ChatPanel.tsx
  • src/components/workspace/MainPanel.tsx
  • src/pages/Workspace.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
  • src/components/workspace/ChatPanel.tsx
  • src/components/workspace/MainPanel.tsx

AssafMiron added 8 commits May 9, 2026 16:29
- Added high-impact 'Recommended Tasks' to Product Home dashboard
- Implemented task click-to-prompt bridge to AI Copilot
- Passed prompt handler through MainPanel to ProductHome
- Optimized dashboard layout for command center feel
- Upgraded ConfirmationDialog with type-to-confirm and deletion scope summary
- Enforced typed confirmation for Product and Workflow deletion
- Added detailed deletion scope for products (files, artifacts, workflows count)
- Refined ApprovalCard for stronger visual trust boundaries and premium feel
- Added 'Privileged Action' badges to agent approval requests
- Updated 'Projects Directory' to 'Products Storage Path' in System Settings
- Normalized descriptions in Artifact Settings to use 'Product' instead of 'Project'
- Verified consistent terminology across primary UI settings components
AssafMiron and others added 21 commits May 9, 2026 17:52
- Dispatched a new custom window event 'productos:chat-prefill-prompt' to allow users to review and edit prompts generated by recommended tasks before sending them to Copilot.
- Removed duplicate backend file fetch calls in Workspace initialization to further improve switching speed.
…R D)

- Added layout mode state (Split/Full/Hidden) to MainPanel for dynamic workspace sizing.
- Implemented 'ToolLogBlock' in ChatPanel to collapse verbose execution logs.
- Added header controls to ChatPanel for toggling layout modes.
- Fixed syntax errors and unclosed tags in ChatPanel UI.
- Implemented confidence-based and date-based sorting in ArtifactList.
- Normalized artifact type labels (e.g., Roadmap vs Roadmaps) in ArtifactList and Sidebar.
- Updated deletion copy to 'Delete Artifact' for improved consistency.
- Added descriptive subtitle to ArtifactList section.
…list view (PR E)

- Replaced single-form workflow builder with a guided 4-step stepper (Details, Steps, Test, Schedule).
- Enhanced WorkflowList with color-coded status indicators (Completed/Failed).
- Added run history link and last-run timestamps to workflow items.
- Standardized 'Create' button copy to match the guided flow.
- Deduplicate skills by ID in listSkills()
- Give precedence to directory-based skills over file-based ones
- Update deleteSkill() to handle both storage formats safely
- Replace native window.confirm with ConfirmationDialog for app shutdown and new chat
- Modernize icons to TriangleAlert and CircleAlert (using aliases for compatibility)
- Implement mandatory type-to-confirm pattern for app termination
- Update Sidebar and ChatPanel to leverage standardized safety dialogs
- Update error messages and placeholders to use Product terminology for consistent UX
- Clear usage statistics when loading a new product context to prevent stale display
- Improve error handling and initial state synchronization for the usage dashboard
- updated deleteProjectViaUI to handle type-to-confirm dialogs
- added centralized createWorkflowViaBuilder helper to handle 4-step wizard
- refactored workflows and deep_check specs to use new helpers
- added robust input filling with retries and step waits
…d in usage API

- Replace direct path.join calls in workflows.mjs with shared path utilities from paths.mjs\n- Add getWorkflowsMetadataDir and getDotWorkflowsDir to paths.mjs\n- Rename ensureDirectoryStructure to initializeDirectoryStructure for consistency\n- URL-encode projectId in getUsageStatistics to handle reserved characters safely
@aviatam

aviatam commented May 11, 2026

Copy link
Copy Markdown
Collaborator Author

Reviewed. I cannot approve my own PR from this account, but I checked the large UX/onboarding refresh: CI is passing, no secrets found, and it removes the stray test_output.txt. One thing to keep an eye on: this skips the token saver toggle e2e test, so I would want a follow-up test path if that behavior still matters.

@AssafMiron
AssafMiron merged commit db23eb1 into main May 11, 2026
2 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Jul 28, 2026
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.

2 participants