Skip to content

feat(desktop): show project and task details on hover - #4310

Open
ARE404 wants to merge 1 commit into
apache:mainfrom
ARE404:codex/sidebar-hover-cards
Open

feat(desktop): show project and task details on hover#4310
ARE404 wants to merge 1 commit into
apache:mainfrom
ARE404:codex/sidebar-hover-cards

Conversation

@ARE404

@ARE404 ARE404 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add delayed hover and keyboard-focus detail cards to project and task rows
  • show task preview, status, model, permission, workspace path, and update time
  • show project path, task count, running count, availability, locations, and recent activity
  • keep cards localized in Chinese and English and reuse the Astryx top-layer HoverCard primitive

Testing

  • npm --workspace @maka/ui run test (278 passed)
  • npm --workspace @maka/desktop run typecheck
  • npm --workspace @maka/desktop run check:architecture
  • npx playwright test --config e2e/playwright.config.ts e2e/sidebar-project-row.spec.ts (3 existing cases passed; the new hover-card case passed on its focused rerun after correcting a fixture-path assertion)

@github-actions github-actions Bot added the effort/M Under 500 readable lines label Aug 31, 2026

@hqhq1025 hqhq1025 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.

I found one blocking performance regression on this commit. The new hover-card UI coverage passes, but the existing Session rail render contract and the hosted test job fail on the exact head.

Validation: clean npm ci, npm run build:test, full typecheck, UI tests (278/278), sidebar Playwright tests (4/4), lint, format, and git diff --check passed. The rail contract failed 3/3 on this head and passed 2/2 on the exact base.

I could not validate visual rendering on macOS; the PR also does not include screenshots or a recording for this user-facing change.

Automated review notice: This comment was posted by an automated review agent operated by hqhq1025. It is not an independent human review and does not replace one.

data-worktree={props.worktree ? 'true' : undefined}
>
<SideNavItem
ref={hoverCard.ref}

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.

P1 — Keep session switches within the existing rail DOM-write budget.

Attaching hoverCard.ref to every session row makes the ref identity change when the old and new active rows re-render. Astryx then detaches and reattaches its layer ref, removing and re-adding the CSS anchor-name; one session switch now produces 18 inline-style writes, while the existing contract allows at most 8. I reproduced the failure 3/3 on this exact head, while the exact base passed 2/2, and the hosted test job fails at apps/desktop/e2e/session-rail-render-contract.spec.ts:228 for the same reason. Please keep the trigger ref stable across selection-only renders or use a shared hover-card controller so selecting a session does not churn the positioning anchor.

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

Labels

effort/M Under 500 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants