Skip to content

fix(web): unify deliverables double shell - #275

Merged
iamjr15 merged 1 commit into
mainfrom
fix/deliverables-double-shell
Aug 13, 2026
Merged

fix(web): unify deliverables double shell#275
iamjr15 merged 1 commit into
mainfrom
fix/deliverables-double-shell

Conversation

@iamjr15

@iamjr15 iamjr15 commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Summary

  • give every Deliverables block the same two-layer shell used by message status surfaces
  • extract the shell framing into a shared primitive instead of duplicating visual classes
  • preserve existing artifact metadata, image preview, Files, and download behavior

Architecture

MessageDoubleShell owns the outer 2px frame, inset surface, radius relationship, background gradient, and entrance animation. MessageStatusShell supplies status-specific padding and tone; DeliverablesBlock supplies artifact-specific spacing.

Decisions Made

Decision Choice Alternative Reason
Shared styling boundary Reusable message-shell primitive Copy status classes into Deliverables Prevents the two surfaces drifting again
Artifact internals Leave cards and actions unchanged Restyle each artifact row The defect is the containing shell, not its interaction model

No schema, migration, environment, Worker, or deployment-topology changes.

Verification

  • pnpm lint
  • pnpm typecheck
  • pnpm turbo build --force
  • pnpm deadcode (passes with the existing Knip configuration hint)
  • pnpm architecture:check
  • pnpm turbo skills:build
  • production browser QA will verify the released shell at desktop and narrow chat widths
  • production paid video QA will exercise generation, preview, Files, download, activity trace, timing, and console

Share the inset message-shell primitive with Deliverables.
Artifact cards now match status surfaces without duplicated styling.
@iamjr15
iamjr15 merged commit 39a26fa into main Aug 13, 2026
4 checks passed
@iamjr15
iamjr15 deleted the fix/deliverables-double-shell branch August 13, 2026 08:56
iamjr15 added a commit that referenced this pull request Aug 13, 2026
## Why

Production video generation sent two incompatible Veo options: an
explicit audio toggle even though Veo 3.1 audio is native, and forced
1080p for four- and six-second clips even though 1080p requires eight
seconds. Successful videos were also presented as generic files despite
the product contract promising an in-chat preview.

## What changed

- align text, reference-image, and extension requests with their
mode-specific Veo 3.1 configuration
- reject invalid non-eight-second reference and extension requests
before provider billing
- keep short text generations on the provider-default 720p path for
lower latency
- lazy-load generated video previews from signed output URLs and add
direct Files access
- share viewport preview state between image and video deliverables
- retain the shared double-shell Deliverables treatment merged in #275

## Architecture and migration effects

No database migration or new environment variable. The Google AI BYOK
boundary and R2 artifact ownership are unchanged.

## Verification

- `pnpm lint`
- `pnpm typecheck`
- `pnpm turbo build --force`
- `pnpm deadcode` (existing Knip ignore hint only)
- `pnpm architecture:check`
- `pnpm turbo skills:build`
- schema probe: 4-second text accepted, 8-second extension accepted,
4-second extension rejected
- production acceptance test will run after the exact merged SHA is
deployed to Cloudflare and Vercel
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.

1 participant