Skip to content

epic: agent styling — aurora background, softer radii, popular actions carousel - #256

Merged
0xApotheosis merged 11 commits into
mainfrom
epic/agent-styling
Sep 8, 2026
Merged

0xApotheosis merged 11 commits into
mainfrom
epic/agent-styling

Conversation

@twblack88

@twblack88 twblack88 commented May 25, 2026

Copy link
Copy Markdown
Contributor

Summary

Rolls up the epic/agent-styling branch into main. Three big changes are bundled here:

1. Aurora shader background on the empty chat state (#250, #246)

  • Animated WebGPU aurora (via shaders.com) behind the empty chat state on desktop, with a CSS radial-gradient fallback on mobile/no-WebGL.
  • Header and bottom chrome get a bg-background/80 backdrop-blur-md glass treatment when the empty state is visible.
  • Resolved three rendering bugs along the way: missing three dep (added to deps + optimizeDeps), a WebGL context leak from isWebGLAvailable() running every render (cached + released via WEBGL_lose_context), and invalid WGSL identifiers from Math.random()-generated node IDs (fixed by passing explicit id: 'aurora').

2. Softer border radii (#254, #242, closes #242)

  • Global --radius bumped from 0.5rem0.75rem.
  • Composer textarea goes from rounded-lgrounded-2xl for a softer, more modern feel.

3. Popular actions carousel (#255, #247)

  • New PopularActionsCarousel.tsx on the empty-chat state with auto-advance, dot navigation, and pause-on-interaction.
  • POPULAR_ACTIONS order in Chat.tsx reshuffled so the carousel sequence reads more clearly.

Test plan

  • Empty chat state: aurora animates on desktop, gradient fallback shows on mobile / when WebGL is unavailable
  • No WebGL context warnings in console; aurora survives Strict Mode double-mount in dev
  • Sending a message hides the aurora and switches to the normal chat view
  • Composer textarea and other --radius-driven components look correctly rounded across viewports
  • Popular actions carousel auto-advances, pauses on interaction, dot nav works, and the new order reads correctly
  • bun run lint, bun run type-check, bun test all pass

Built with Claude

Summary by CodeRabbit

  • New Features
    • Added Aurora background effect with WebGL rendering and CSS fallback support.
    • Added popular actions carousel for suggested interactions in the chat interface.
  • UI/Style Updates
    • Dashboard header now features a translucent background with blur effect and border.
    • Increased default border radius throughout the app for a more rounded appearance.
    • Input composer styled with more pronounced rounded corners.

Review Change Stack

Summary by CodeRabbit

  • New Features

    • Added an Aurora visual background to the empty chat state, with graceful fallback support and reduced-motion compatibility.
    • Introduced a responsive popular-actions carousel with pagination, auto-advance, and improved accessibility.
    • Added adaptive header and composer transparency for empty conversations.
  • UI Improvements

    • Updated default corner rounding across the application.
    • Increased the composer input’s corner radius.
    • Improved carousel behavior for mobile, touch, keyboard navigation, and reduced-motion preferences.

twblack88 and others added 10 commits May 11, 2026 09:59
Co-authored-by: Cursor <cursoragent@cursor.com>
Uses shaders.com <Shader><Aurora> instead of react-three/fiber — no GLSL,
no render loop, WebGPU-first with WebGL2 fallback built in. ShapeShift
brand palette (purple-500 / green-500 / purple-300) with slow drift.

Gated behind useIsMobile (768px) and a WebGL capability check; falls back
to a CSS radial-gradient on mobile or when WebGL is unavailable. Shader
chunk is lazy-loaded so it doesn't hit the main bundle.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ttom

Animation fix: shaders.com IntersectionObserver only calls startAnimation()
on a not-visible → visible transition. Mounting with display:none then
flipping to block on the next animation frame forces that transition.

UI: header, suggestion strip, and composer get bg/80 backdrop-blur-md
so the aurora bleeds through. Header and suggestion strip get a border
to ground them visually against the background.

Built with Claude
The shaders/react Shader component has a StrictMode bug: cleanup doesn't
reset isInitializedRef, so the second (real) mount returns early from
initializeRenderer() and the animation loop never starts.

Switch to createShader() from shaders/js — a plain async function we
call in a useEffect with proper cancel/destroy handling. Lifecycle is
now fully under our control and StrictMode-safe.

Also cranked props: intensity 90, speed 3.5, waviness 70, curtainCount 4.

Built with Claude
…leak, WGSL id

- Add `three` as direct dep so Vite can resolve `three/tsl` (was only in
  bun's internal cache, not on the node_modules resolution path)
- Add `optimizeDeps: { include: ['three'] }` to vite config so Vite
  pre-bundles it before the dynamic `import('shaders/js')` fires
- Cache `isWebGLAvailable()` at module scope and immediately release the
  test context via WEBGL_lose_context — previously leaked one context per
  render, exhausting the browser limit and killing the aurora's context
- Pass explicit `id: 'aurora'` on the shader component so the library
  doesn't auto-generate an ID containing a dot (Math.random()), which
  produced invalid WGSL struct member names and crashed the GPU pipeline
- Add `.nx/` to .gitignore

Built with Claude
Replace static welcome suggestion buttons with a horizontally scrolling popular actions carousel that auto-advances, pauses during hover/focus/touch interaction, and supports mobile swipe navigation.

Co-authored-by: Cursor <cursoragent@cursor.com>
Observe the canvas's parent container and call shader.resize() explicitly
so the WebGL aurora re-renders to full size after layout changes (e.g.
the sidebar opening/closing). The shader library pins the canvas to fixed
pixels and watches the frozen canvas for resizes, so CSS-driven changes
never reached it.

Also make the mobile CSSFallback more vibrant with layered radial
gradients matching the Aurora palette, instead of a faint two-layer wash.

Built with Claude
@vercel

vercel Bot commented May 25, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
shapeshift-agentic Ready Ready Preview Sep 8, 2026 12:45am UTC

Request Review

@coderabbitai

coderabbitai Bot commented May 25, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 0773ed54-8d63-4176-9d91-02de0ba24497

📥 Commits

Reviewing files that changed from the base of the PR and between 71fd57b and 40c4445.

📒 Files selected for processing (4)
  • apps/agentic-chat/src/app/dashboard/page.tsx
  • apps/agentic-chat/src/components/AuroraBackground.tsx
  • apps/agentic-chat/src/components/PopularActionsCarousel.tsx
  • apps/agentic-chat/src/hooks/useMediaQuery.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/agentic-chat/src/app/dashboard/page.tsx

Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

This PR updates the agentic-chat empty state with an Aurora background, a responsive popular-actions carousel, conditional translucent surfaces, and improved shader fallback handling. It also adds media-query support, shader dependencies, Vite optimization, and Nx cache exclusions.

Changes

Aurora-enhanced empty state with action carousel

Layer / File(s) Summary
WebGL Aurora background with CSS fallback
apps/agentic-chat/src/components/AuroraBackground.tsx, apps/agentic-chat/src/hooks/useMediaQuery.ts
Adds synchronized media-query state. Manages shader readiness, initialization timeouts, WebGL context loss, disposal, reduced-motion fallback, and a 700ms canvas transition.
Responsive popular actions carousel
apps/agentic-chat/src/components/PopularActionsCarousel.tsx
Groups actions into responsive pages. Tracks page scrolling, pauses auto-advance during interaction, supports reduced motion, and adds carousel accessibility metadata and pagination.
Chat empty-state integration
apps/agentic-chat/src/components/Chat.tsx
Replaces welcome suggestions with POPULAR_ACTIONS, renders AuroraBackground and PopularActionsCarousel, and applies translucent composer styling when the chat is empty.
Border radii and header styling
apps/agentic-chat/src/styles.css, apps/agentic-chat/src/components/Composer.tsx, apps/agentic-chat/src/app/dashboard/page.tsx
Increases --radius, applies rounded-2xl to the composer, and changes the dashboard header background based on message state.
Dependencies and build support
apps/agentic-chat/package.json, apps/agentic-chat/vite.config.mjs, apps/agentic-chat/vite.config.mts, .gitignore
Adds shaders, pre-bundles three with Vite, and ignores Nx cache paths.

Estimated code review effort: 3 (Moderate) | ~30 minutes

Merge Risk: ⚪ Minimal · up to 40c44

The empty-state styling, fallback rendering, and carousel changes have no unresolved material risk identified in the reviewed scope.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant Chat
  participant AuroraBackground
  participant ShaderInstance
  participant PopularActionsCarousel

  User->>Chat: Open an empty chat
  Chat->>AuroraBackground: Render background
  AuroraBackground->>ShaderInstance: Initialize shader when supported
  ShaderInstance-->>AuroraBackground: Report ready or fail
  AuroraBackground-->>Chat: Show canvas or CSS fallback
  Chat->>PopularActionsCarousel: Render popular actions
  PopularActionsCarousel-->>User: Show responsive action pages
  User->>PopularActionsCarousel: Select an action
  PopularActionsCarousel->>Chat: Submit selected action
Loading

Suggested reviewers: 0xapotheosis

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The pull request includes changes unrelated to linked issue [#242], including the aurora background, popular actions carousel, shader dependency, Vite optimization, and media-query hook. Split the aurora background and popular actions carousel work into separate pull requests, or link issues that explicitly cover those objectives.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 4 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main changes: the aurora background, softer radii, and popular actions carousel.
Linked Issues check ✅ Passed The changes satisfy issue [#242] by increasing the global --radius token and changing the main composer to rounded-2xl. The token also supports softer default radii for other surfaces.
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch epic/agent-styling

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

A rabbit reads each line,
The patch grows clear beneath the moon,
Small changes hop in place,
Tests guard the garden path,
Reviews bloom before the dawn.

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 `@apps/agentic-chat/src/app/dashboard/page.tsx`:
- Line 16: The header's glass styling is always applied; change the JSX in
page.tsx so the <header> element conditionally includes the glass classes
("bg-background/80 backdrop-blur-md") only when the empty-chat state is true
(e.g., use the existing emptyChat / isEmptyChat boolean or selector used to
render the empty state); when not empty, render the header with the normal
non-glass classes (keep border, sizing, and layout classes intact) so the header
appearance matches active chat screens.
🪄 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: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3a6f2d92-89cb-42cf-9e3f-ba34542218e8

📥 Commits

Reviewing files that changed from the base of the PR and between bdab872 and 71fd57b.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (10)
  • .gitignore
  • apps/agentic-chat/package.json
  • apps/agentic-chat/src/app/dashboard/page.tsx
  • apps/agentic-chat/src/components/AuroraBackground.tsx
  • apps/agentic-chat/src/components/Chat.tsx
  • apps/agentic-chat/src/components/Composer.tsx
  • apps/agentic-chat/src/components/PopularActionsCarousel.tsx
  • apps/agentic-chat/src/styles.css
  • apps/agentic-chat/vite.config.mjs
  • apps/agentic-chat/vite.config.mts

Comment thread apps/agentic-chat/src/app/dashboard/page.tsx Outdated

@0xApotheosis 0xApotheosis left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Three reproducible UI issues below. Build, lint, type-check and all 825 tests pass locally; live chat still needs API keys.

Comment thread apps/agentic-chat/src/components/PopularActionsCarousel.tsx Outdated
Comment thread apps/agentic-chat/src/components/AuroraBackground.tsx
Comment thread apps/agentic-chat/src/components/PopularActionsCarousel.tsx Outdated
@0xApotheosis
0xApotheosis dismissed their stale review September 8, 2026 00:44

Addressed in 40c4445. Build, lint, type-check, 434 tests and browser regression checks pass, including live Venice chat.

@0xApotheosis
0xApotheosis merged commit 5065ff9 into main Sep 8, 2026
4 checks passed
@0xApotheosis
0xApotheosis deleted the epic/agent-styling branch September 8, 2026 00:48
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.

Soften border radii across primary surfaces

2 participants