Backport #2328: feat(web-shared): RelativeTimeCard with shared ContextCard provider#2392
Backport #2328: feat(web-shared): RelativeTimeCard with shared ContextCard provider#2392github-actions[bot] wants to merge 2 commits into
Conversation
…2328) * feat(web-shared): RelativeTimeCard with shared ContextCard provider Add a ContextCard provider/trigger and rebuild the timestamp tooltip as a RelativeTimeCard, giving animated, collision-aware morphing hover cards. Mount the shared provider in EventListView and AttributePanel. Co-authored-by: Cursor <cursoragent@cursor.com> * Match vercel/front timestamp format for run/activity fields Render absolute Created/Started/Completed (and sibling) timestamps using date-fns in vercel/front's request/activity format (e.g. "JUN 10 10:16:02.69 GMT-4") via the shared formatLocalMillisecondTime helper. Co-authored-by: Cursor <cursoragent@cursor.com> * fix(web-shared): register dark-theme/light-theme Tailwind variants The context-card arrow tip stroke uses `dark-theme:[--context-card-tip-stroke:#252525]`, but Tailwind v4 has no built-in `dark-theme` variant, so the utility was silently dropped and the stroke fell back to its light `#DBDBDB` value — rendering as a white caret in dark mode. Register the `dark-theme`/`light-theme` custom variants in styles.css (mirroring vercel/front's geistcn tailwind.css, extended to match the `.dark`/`[data-theme="dark"]` selectors this package and next-themes use). Co-authored-by: Cursor <cursoragent@cursor.com> * fix(web-shared): match context card shadow to vercel/front The --ds-shadow-tooltip token was guessed when added standalone, producing an oversized/heavy drop shadow. Reproduce front's exact resolved value for both light and dark themes (including the background-border layer). Co-authored-by: Cursor <cursoragent@cursor.com> * fix(web-shared): bridge context card hover gap to stop flicker The card is positioned `sideOffset` away from the trigger, leaving a transparent un-hoverable gap that caused the hover card to flicker (open → close → open) when moving the cursor onto it. Add a transparent hover bridge inside the floating wrapper that extends the hover surface by `sideOffset` to meet the trigger edge, keeping the visual spacing while making the hover surface continuous. Co-authored-by: Cursor <cursoragent@cursor.com> * Revert "fix(web-shared): bridge context card hover gap to stop flicker" This reverts commit 2b961b1. * docs: simplify changeset description Co-authored-by: Cursor <cursoragent@cursor.com> * docs: remove vercel/front references from comments Co-authored-by: Cursor <cursoragent@cursor.com> * fix(web-shared): only clear active context card when the active trigger unmounts The unmount cleanup had an inverted guard: an unmounting inactive trigger would clear the shared active card, hiding another trigger's card (and an unmounting active trigger left a stale card). Guard on === id instead. Co-authored-by: Cursor <cursoragent@cursor.com> * docs: remove theme-variant comment Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Cursor <cursoragent@cursor.com> Signed-off-by: Mitul Shah <mitulxshah@gmail.com>
🦋 Changeset detectedLatest commit: eda6b21 The changes in this PR will be included in the next version bump. This PR includes changesets to release 16 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
🧪 E2E Test Results❌ Some tests failed Summary
❌ Failed Tests▲ Vercel Production (11 failed)astro (1 failed):
example (1 failed):
express (1 failed):
fastify (1 failed):
hono (1 failed):
nextjs-turbopack (1 failed):
nextjs-webpack (1 failed):
nitro (1 failed):
nuxt (1 failed):
sveltekit (1 failed):
vite (1 failed):
💻 Local Development (12 failed)astro-stable (1 failed):
express-stable (1 failed):
fastify-stable (1 failed):
hono-stable (1 failed):
nextjs-turbopack-canary (1 failed):
nextjs-turbopack-stable (1 failed):
nextjs-webpack-canary (1 failed):
nextjs-webpack-stable (1 failed):
nitro-stable (1 failed):
nuxt-stable (1 failed):
sveltekit-stable (1 failed):
vite-stable (1 failed):
📦 Local Production (12 failed)astro-stable (1 failed):
express-stable (1 failed):
fastify-stable (1 failed):
hono-stable (1 failed):
nextjs-turbopack-canary (1 failed):
nextjs-turbopack-stable (1 failed):
nextjs-webpack-canary (1 failed):
nextjs-webpack-stable (1 failed):
nitro-stable (1 failed):
nuxt-stable (1 failed):
sveltekit-stable (1 failed):
vite-stable (1 failed):
🐘 Local Postgres (12 failed)astro-stable (1 failed):
express-stable (1 failed):
fastify-stable (1 failed):
hono-stable (1 failed):
nextjs-turbopack-canary (1 failed):
nextjs-turbopack-stable (1 failed):
nextjs-webpack-canary (1 failed):
nextjs-webpack-stable (1 failed):
nitro-stable (1 failed):
nuxt-stable (1 failed):
sveltekit-stable (1 failed):
vite-stable (1 failed):
🪟 Windows (1 failed)nextjs-turbopack (1 failed):
🌍 Community Worlds (103 failed)mongodb (17 failed):
redis (13 failed):
turso (73 failed):
📋 Other (6 failed)e2e-local-dev-nest-stable (1 failed):
e2e-local-dev-tanstack-start-stable (1 failed):
e2e-local-postgres-nest-stable (1 failed):
e2e-local-postgres-tanstack-start-stable (1 failed):
e2e-local-prod-nest-stable (1 failed):
e2e-local-prod-tanstack-start-stable (1 failed):
Details by Category❌ ▲ Vercel Production
❌ 💻 Local Development
❌ 📦 Local Production
❌ 🐘 Local Postgres
❌ 🪟 Windows
❌ 🌍 Community Worlds
❌ 📋 Other
❌ Some E2E test jobs failed:
Check the workflow run for details. |

Automated backport of #2328 to
stable(backport job run).AI recommendation: This is a self-contained UI feature addition in
@workflow/web-shared, which is fully maintained onstable— the modified files (timestamp-tooltip.tsx,event-list-view.tsx,attribute-panel.tsx,styles.css) all exist there, and the base versions of the key files matchstableexactly. It also includes real bug fixes (dark-theme Tailwind variant registration, active-card unmount guard) that improve existing tooltip behavior. Note: the newcontext-card.tsximportsuse-reduced-motionfromsrc/hooks/, which is absent onstable, so the backport may need that hook brought along during conflict resolution.Merge conflicts were resolved by AI (opencode with
anthropic/claude-fable-5). Please review the conflict resolution carefully before merging.