Skip to content

README intro.gif: green macOS wallpaper + richer mouse/command demo - #44

Merged
echobt merged 4 commits into
mainfrom
cursor/readme-intro-gif-macos-012f
Sep 7, 2026
Merged

README intro.gif: green macOS wallpaper + richer mouse/command demo#44
echobt merged 4 commits into
mainfrom
cursor/readme-intro-gif-macos-012f

Conversation

@echobt

@echobt echobt commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Summary

README docs/media/intro.gif composites the signed lock TUI onto a photographed green forest desktop, with a pointer that walks titlebar → composer → slash palette → /model → Shell tool row → idle composer.

Mathis override LOCK GO: banner-green focus accent (#1F4945). Not violet (#A78BFA). Focus / selected rows stay banner green. This PR does not restyle the lock.

CLI_INTRO_GIF_READY

Greptile P1 (fixed)

Preview downscaling no longer rebinds the manifest terminal height. scripts/ansi-frames-to-gif.py now uses a preview-local preview_height so later ANSI frames stay 120×40 (composed 1416×1140), not padded to ~805 rows.

Source-policy fix

lock_boards.rs grew 3975 → 3993 lines when the hero storyboard gained Palette/Model/Shell/Composer arms. CI Source/dependency policy treats that as a line-count regression (target 1000; growth past the previous size fails).

HeroScene + paint_hero now live in readme_hero_boards.rs (43 lines). lock_boards.rs is 3969, below the main baseline. Visual lock painting is unchanged.

What changed

  • docs/media/macos-wallpaper-green.jpg — green forest photo, free license (Unsplash sunlight-through-trees still).
  • scripts/compose-macos-terminal.pydesktop_backdrop cover-crops that photo; menu bar + Dock + window shadow stay; capture pixels stay 1:1. animate_mouse follows storyboard labels (titlebar, composer/slash, brief clicks, arc back).
  • src/cortex-tui/src/readme_hero.rs + readme_hero_boards.rs — storyboard is splash → type the rate-limit prompt → working → slash palette → /model → Shell → composer. Signed lock chrome (inky + banner-green focus; mint only on / +diff). No retired welcome-card splash.
  • scripts/ansi-frames-to-gif.py — preview resize uses preview_height; manifest height stays 40.
  • Regenerated via ./scripts/render-demo-gif.sh. python3 scripts/check-macos-demo.py passes: photo backdrop, 1:1 CLI pixels, titlebar+terminal pointer, 110 frames / 9.2s / 0.41 MiB.
  • Preview stills: docs/media/intro-preview/.

Test plan

  • Compose smoke: photo backdrop, desktop 1416×1140, CLI crop identical to the raw capture
  • cargo fmt --all -- --check — CI Format green
  • cargo test -p cortex-tui readme_hero — 9 passed (banner-green caret #1F4945 asserted; no mint leak)
  • python scripts/readiness/quality.py --base origin/main — 0 regressions (lock_boards 3969 is existing debt, not growth)
  • TUI / snapshot tests — CI TUI checks green
  • ./scripts/render-demo-gif.sh then python3 scripts/check-macos-demo.py
  • ./scripts/clippy.sh — CI Clippy green
  • cargo test --workspace — CI Test green
  • cargo audit — CI Security Audit green; no dependency changes
  • Source/dependency policy — CI job green after the split
  • Local QA: official pipeline only; no hand-made screenshot GIF
  • Greptile P1: preview downscale no longer overwrites manifest height

Attestation (required)

I attest that:

  • Security reviewed — auth, exec/sandbox, path traversal, network egress, and secret handling in this diff were reviewed. No secrets, tokens, or keyring dumps are in the change.
  • Product-facing errors — user-visible failures use Cortex product copy. API-down paths say The coding service is temporarily unavailable. No raw provider, SDK, or transport names.
  • TUI verifiedreadme_hero unit tests (9/9) plus official render-demo-gif.sh output. Banner-green caret (#1F4945) asserted. No TTY interactive run.
  • Tests added — unit tests cover the new storyboard beats (palette/model/shell/composer) and ban Cortex Cloud handoff copy. No mocks that report success.
  • No secrets — no API keys, WorkOS secrets, R2/AWS credentials, or .env files are included.

Risk

Docs/media, offline demo compositing, and an internal module split only. No auth, exec policy, sandbox, or API-contract impact. Lock-screenshot window-only path (--raw without desktop) is unchanged. Colors are not part of this fix. Preview-height isolation is script-local and does not change lock chrome.

Open in Web Open in Cursor 

cursoragent and others added 3 commits September 7, 2026 22:27
Replace the synthetic teal desktop with a photographed forest backdrop,
walk the pointer through titlebar/composer/slash/tools, and extend the
signed lock storyboard past splash → type → working.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
Render the expanded lock storyboard through the official pipeline and
keep a 10-step pointer orbit so holds stay unique after GIF quantisation.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
Move HeroScene/paint_hero into readme_hero_boards so lock_boards stays
under its main-line count and the source-policy gate stops regressing.
Banner-green focus is unchanged.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
@echobt
echobt marked this pull request as ready for review September 7, 2026 22:44
@greptile-apps

greptile-apps Bot commented Sep 7, 2026

Copy link
Copy Markdown

Greptile Summary

Summary

The demo GIF renderer now creates preview images, but resizing the first preview overwrites the terminal height used for subsequent ANSI frames. This makes later frames drastically taller than the initial frame, so the generated animation is inconsistent and must be corrected before merging.

Confidence Score: 4/5

Not safe to merge until the preview resize no longer changes the terminal height used to render later frames.

A focused execution reproduced one user-visible rendering failure and verified that isolating the preview resize height restores consistent frame dimensions.

Files Needing Attention: scripts/ansi-frames-to-gif.py

T-Rex T-Rex Logs

What T-Rex did

  • Produced a focused executable reproduction for preview height corruption.
  • Inspected logs showing the current renderer produces mismatched frame dimensions after preview downscaling.
  • Observed a temporary local fix that preserves uniform frame dimensions.
  • Validated a second posted P1 finding with no additional artifacts.
  • Changed code in scripts/ansi-frames-to-gif.py to compute height from the preview dimensions and verified that both frames render with uniform dimensions.

View all artifacts

T-Rex Ran code and verified through T-Rex

Comments Outside Diff (1)

  1. General comment

    P1 Preview downscaling overwrites the ANSI manifest height for subsequent frames

    • Bug
      • With a default 120×40 manifest and previews enabled, generating the first splash preview downsizes the composed 1416×1140 image to 1000×805 and stores 805 in height. The next ANSI frame is consequently parsed at 120×805 and padded from 40 source rows to 805 rows, producing a 1416×17970 composed frame while the prior frame is 1416×1140.
    • Cause
      • scripts/ansi-frames-to-gif.py:477 reuses the outer manifest height variable as temporary preview-resize state. parse_ansi(ansi, width, height) on the next loop consumes the modified value.
    • Fix
      • Use a preview-local name at lines 477–478, e.g. preview_height = round(preview.height * 1000 / preview.width) and preview.resize((1000, preview_height), Image.LANCZOS), leaving the manifest height unchanged.

    T-Rex Ran code and verified through T-Rex

Reviews (1): Last reviewed commit: "fix(tui): split hero scenes out of lock_..." | Re-trigger Greptile

Comment thread scripts/ansi-frames-to-gif.py Outdated
Preview downscaling rebound the manifest terminal height, so later
ANSI frames were padded to ~805 rows. Keep a preview-local height.

Co-authored-by: Mathis <echobt@users.noreply.github.com>
@echobt
echobt merged commit dfc5e62 into main Sep 7, 2026
15 checks passed
echobt added a commit that referenced this pull request Sep 8, 2026
Bump 0.1.9 → 0.1.10 after intro.gif LOCK GO (#44). SDK sync, splash chrome wrap, schema refresh.
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