Conversation
📝 WalkthroughWalkthroughAdds a reproducible "showcase" demo mode: new Changes
Sequence DiagramsequenceDiagram
actor User
participant CLI as "npm CLI"
participant Launch as "scripts/showcase/launch.js"
participant Setup as "scripts/showcase/setup.js"
participant Seed as "scripts/showcase/seed/data/*"
participant Tmp as "/tmp/maestro-showcase"
participant Dev as "npm run dev (dev server)"
User->>CLI: npm run dev:showcase [--theme] [--size]
CLI->>Launch: run launch.js + args
Launch->>Setup: exec setup.js with args
Setup->>Tmp: remove & recreate demo dir
Setup->>Seed: read seed JSON and group-chats
Seed-->>Setup: provide files
Setup->>Tmp: copy JSONs & group-chats
alt --theme provided
Setup->>Tmp: patch maestro-settings.json (activeThemeId)
end
alt --size provided
Setup->>Tmp: validate & patch maestro-window-state.json
end
Setup-->>Launch: exit success
Launch->>Dev: spawn dev server with MAESTRO_DEMO_DIR=/tmp/maestro-showcase
Dev->>Tmp: dev server reads demo directory
Dev-->>User: demo environment served
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 8
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CONTRIBUTING.md`:
- Around line 685-687: The docs reference two different theme source locations;
pick one canonical theme module (where ThemeId and the theme palette objects
actually live) and update both the short guide and the "Adding a New Theme"
section to point to that single module; specifically, ensure the reference that
names the ThemeId type and the theme definitions (the themes module) and the
theme test reference (the test that asserts available ThemeIds) are
consistent—either switch all docs to the shared themes module and theme-types
symbol or switch them all to the renderer constants symbol, and update any
mention of ThemeId, theme definitions, and the theme test to the chosen
canonical location.
In `@scripts/showcase/generate-seed.js`:
- Around line 1161-1162: The seed metadata currently bakes absolute source-tree
locations into logPath and imagesDir (set using groupChatDir), which will point
back to scripts/showcase/seed/data after copying; change generation in
generate-seed.js so logPath and imagesDir are stored as relative paths (e.g.,
relative to DATA_DIR or the chat root) or emit placeholders that
scripts/showcase/setup.js rewrites during install; update the code that sets
logPath and imagesDir (the variables named logPath, imagesDir, groupChatDir) to
compute and save relative paths instead of path.join(groupChatDir, ...), or add
a rewrite step in setup.js that replaces those fields the same way $CWD is
handled.
- Around line 953-964: The fixture currently uses the misspelled agent name
'Stript MCP' and path 'stript-mcp' (see the object with name: 'Stript MCP', cwd:
'/tmp/showcase-projects/stript-mcp', and keys like OTHER_CONVERSATIONS['Stript
MCP']); update all occurrences to the correct spelling 'Stripe MCP' and rename
the folder/key to 'stripe-mcp' so the display name, lookup key
(OTHER_CONVERSATIONS[...] reference) and cwd/path are consistent; ensure you
update the object name, the cwd value, and any OTHER_CONVERSATIONS index usage
to the exact new string 'Stripe MCP'/'stripe-mcp'.
In `@scripts/showcase/plan.md`:
- Around line 236-257: The "Updating Seed Data" section is outdated and refers
to scripts/showcase/seed/base/ which is not used; remove or replace this section
to describe the real seed maintenance workflow: explain that seed JSONs live in
scripts/showcase/seed/data/ and that you should edit those files directly or run
the generate-seed.js script (referenced by name) to regenerate curated seed
artifacts, and remove any instructions about copying /tmp/maestro-demo into
scripts/showcase/seed/base/ or launching Maestro for Electron internals.
- Around line 5-6: The plan text claims seed data is copied from
scripts/showcase/seed/base/ (Electron internals) but setup.js (the script
referenced in the project) only copies from scripts/showcase/seed/data/ and
explicitly states "No base/Electron seed directory needed"; update the plan in
scripts/showcase/plan.md so it accurately reflects the implementation (either
remove the reference to seed/base/, state that setup.js only uses seed/data/, or
note that the original design changed and base/ was discarded), and also update
the other referenced sections (lines noted around 148-153 and 203-206) to be
consistent with setup.js's behavior and paths.
In
`@scripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/metadata.json`:
- Around line 42-43: The metadata.json contains hardcoded absolute developer
paths for the keys "logPath" and "imagesDir"; update these values to use a
portable placeholder (e.g., "$CWD" or a relative path under a configurable base
like "/tmp/maestro-showcase") and then modify the setup script (setup.js) to
resolve that placeholder at runtime (as maestro-sessions.json does) so the
actual filesystem path is injected when seeding; ensure the keys "logPath" and
"imagesDir" are updated in the JSON and that setup.js replaces the placeholder
with the target directory before writing/using the files.
In `@scripts/showcase/setup.js`:
- Around line 104-126: Wrap the JSON.parse calls that read settingsFile and
windowStateFile in try-catch blocks to handle malformed JSON: catch the error
thrown by JSON.parse when reading settings (variable settings after
fs.readFileSync(settingsFile,...)) and windowState (variable windowState after
fs.readFileSync(windowStateFile,...)), log a clear diagnostic including which
file failed and the parse error, and exit with a non-zero status
(process.exit(1)). Ensure the surrounding logic that updates
settings.activeThemeId and windowState.width/height only runs when the parse
succeeds.
In `@THEMES.md`:
- Line 111: Update the theme table row that currently shows the label "Github"
to use the correct capitalization "GitHub" (the code sample `npm run
dev:showcase -- --theme github-light --size 1796x1151` remains unchanged);
search for the string "Github" in THEMES.md (e.g., the table row containing `|
Github | `...`) and replace it with "GitHub" to match the platform's
official spelling.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 9393fb67-0f79-47eb-8bd5-96c0c5600980
⛔ Files ignored due to path filters (1)
scripts/showcase/screenshot.pngis excluded by!**/*.png
📒 Files selected for processing (14)
CONTRIBUTING.mdTHEMES.mdpackage.jsonscripts/showcase/generate-seed.jsscripts/showcase/launch.jsscripts/showcase/plan.mdscripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/metadata.jsonscripts/showcase/seed/data/maestro-agent-session-origins.jsonscripts/showcase/seed/data/maestro-claude-session-origins.jsonscripts/showcase/seed/data/maestro-groups.jsonscripts/showcase/seed/data/maestro-sessions.jsonscripts/showcase/seed/data/maestro-settings.jsonscripts/showcase/seed/data/maestro-window-state.jsonscripts/showcase/setup.js
scripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/metadata.json
Outdated
Show resolved
Hide resolved
|
Hey @scriptease — thank you for this contribution! The showcase mode is a great idea and the implementation is thorough. The seed data, deterministic ID generation, and CLI arg support ( One issue I spotted that needs fixing before we can merge: Hardcoded paths in The "logPath": "/Users/florian/github/Maestro/scripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/chat.log",
"imagesDir": "/Users/florian/github/Maestro/scripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/images"These should use Similarly, Everything else looks solid — the documentation updates to THEMES.md and CONTRIBUTING.md are clean, and the overall architecture (seed data → setup → launch) is nice. Just need that path fix and we should be good to go! |
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (2)
scripts/showcase/plan.md (1)
5-6:⚠️ Potential issue | 🟡 MinorPlan content is out of sync with the implemented showcase flow.
This still documents
seed/basecopying and an olddev:showcasecommand, but the current implementation usesscripts/showcase/launch.jsandscripts/showcase/seed/data/only (with Electron internals created in/tmp/maestro-showcaseat runtime). Please update these sections to match the shipped scripts.Also applies to: 202-205, 213-214, 236-255
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@scripts/showcase/plan.md` around lines 5 - 6, The plan currently documents an outdated flow (referencing seed/base and an npm run dev:showcase command) but the shipped implementation uses scripts/showcase/launch.js and only scripts/showcase/seed/data/, with Electron internals created at runtime under /tmp/maestro-showcase; update the plan text to remove any mention of copying seed/base and the old dev:showcase command and instead describe the actual flow: that scripts/showcase/launch.js is the launcher, it overlays configs from scripts/showcase/seed/data/, and the runtime creates the /tmp/maestro-showcase internals on each run, and make the same corrections in the other affected sections (the later paragraphs currently describing seed/base and the old command).THEMES.md (1)
111-111:⚠️ Potential issue | 🟡 MinorUse
GitHubcapitalization in the theme table.Please rename
GithubtoGitHubin this row for consistent platform naming.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@THEMES.md` at line 111, Change the table row that currently uses the string "Github" to use the correct capitalization "GitHub" — locate the row containing the command snippet `npm run dev:showcase -- --theme github-light --size 1796x1151` and replace the left-column label "Github" with "GitHub" so platform naming is consistent.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@scripts/showcase/plan.md`:
- Around line 148-153: The fenced code blocks in the plan document (the
triple-backtick diagram showing scripts/showcase/seed/data →
(scripts/showcase/setup.js) → /tmp/maestro-showcase/) lack explicit language
tags and have inconsistent opening/closing fences; update each fenced block
(including the other occurrence around lines 232-242) to use consistent
triple-backticks and add an explicit language token such as "text" or "bash"
(e.g., ```text or ```bash) so markdownlint MD040 is satisfied and rendering
remains stable.
---
Duplicate comments:
In `@scripts/showcase/plan.md`:
- Around line 5-6: The plan currently documents an outdated flow (referencing
seed/base and an npm run dev:showcase command) but the shipped implementation
uses scripts/showcase/launch.js and only scripts/showcase/seed/data/, with
Electron internals created at runtime under /tmp/maestro-showcase; update the
plan text to remove any mention of copying seed/base and the old dev:showcase
command and instead describe the actual flow: that scripts/showcase/launch.js is
the launcher, it overlays configs from scripts/showcase/seed/data/, and the
runtime creates the /tmp/maestro-showcase internals on each run, and make the
same corrections in the other affected sections (the later paragraphs currently
describing seed/base and the old command).
In `@THEMES.md`:
- Line 111: Change the table row that currently uses the string "Github" to use
the correct capitalization "GitHub" — locate the row containing the command
snippet `npm run dev:showcase -- --theme github-light --size 1796x1151` and
replace the left-column label "Github" with "GitHub" so platform naming is
consistent.
🪄 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: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
Run ID: 5d64272d-dbf9-482e-a10f-1986ab61d749
⛔ Files ignored due to path filters (1)
scripts/showcase/screenshot.pngis excluded by!**/*.png
📒 Files selected for processing (14)
CONTRIBUTING.mdTHEMES.mdpackage.jsonscripts/showcase/generate-seed.jsscripts/showcase/launch.jsscripts/showcase/plan.mdscripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/metadata.jsonscripts/showcase/seed/data/maestro-agent-session-origins.jsonscripts/showcase/seed/data/maestro-claude-session-origins.jsonscripts/showcase/seed/data/maestro-groups.jsonscripts/showcase/seed/data/maestro-sessions.jsonscripts/showcase/seed/data/maestro-settings.jsonscripts/showcase/seed/data/maestro-window-state.jsonscripts/showcase/setup.js
✅ Files skipped from review due to trivial changes (9)
- package.json
- scripts/showcase/seed/data/maestro-window-state.json
- CONTRIBUTING.md
- scripts/showcase/seed/data/maestro-claude-session-origins.json
- scripts/showcase/seed/data/maestro-agent-session-origins.json
- scripts/showcase/seed/data/maestro-groups.json
- scripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/metadata.json
- scripts/showcase/seed/data/maestro-settings.json
- scripts/showcase/seed/data/maestro-sessions.json
🚧 Files skipped from review as they are similar to previous changes (3)
- scripts/showcase/launch.js
- scripts/showcase/setup.js
- scripts/showcase/generate-seed.js
Add a curated demo environment for screenshots and presentations. Includes seed data generator, setup script with --theme and --size CLI args, and a launcher that forwards parameters to the dev server. THEMES.md updated with per-theme showcase commands.
There was a problem hiding this comment.
♻️ Duplicate comments (2)
scripts/showcase/plan.md (2)
148-153:⚠️ Potential issue | 🟡 MinorAdd a language token to the pipeline code fence.
Line 148 opens a fenced block without a language, which triggers MD040.
Proposed fix
-``` +```text scripts/showcase/seed/data/ ← Curated JSON configs + group chat data │ ▼ (scripts/showcase/setup.js) /tmp/maestro-showcase/ ← Fresh copy on every launch (Electron creates its own internals)</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@scripts/showcase/plan.mdaround lines 148 - 153, The markdown fenced code
block starting withthat contains the showcase path snippet should include a language token to satisfy MD040; change the opening fence fromtotext (i.e., update the code fence that wraps the lines "scripts/showcase/seed/data/ … /tmp/maestro-showcase/") so the block is fenced astext and the closing fence
remains ``` to fix the lint warning.</details> --- `235-259`: _⚠️ Potential issue_ | _🟡 Minor_ **Fix the unlabeled 4-backtick fence (or remove it) to avoid broken rendering.** Line 235 starts another fenced block without a language; this makes the “Updating Seed Data” and “Open Questions” sections render as code. <details> <summary>Proposed fix</summary> ```diff -```` - --- ## Updating Seed Data @@ - Should there be a theme override for projector readability (larger font, higher contrast)? - Should the fake file tree data be statically baked in, or should it be generated from the actual repo at copy time? -```` ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@scripts/showcase/plan.mdaround lines 235 - 259, Remove or correct the stray
4-backtick fence (````) that begins before the horizontal rule so the
"Updating Seed Data" and "Open Questions" sections are not rendered as a code
block; specifically locate the unlabeled fence token (````) that precedes
the---divider and either delete it or replace it with a proper closing fence
(e.g., remove the extra backtick so the block uses matching triple backticks or
close the open fence) so the headers render as normal Markdown.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In@scripts/showcase/plan.md:
- Around line 148-153: The markdown fenced code block starting with
that contains the showcase path snippet should include a language token to satisfy MD040; change the opening fence fromtotext (i.e., update the code fence that wraps the lines "scripts/showcase/seed/data/ … /tmp/maestro-showcase/") so the block is fenced astext and the closing fence remains ``` to fix the lint
warning.- Around line 235-259: Remove or correct the stray 4-backtick fence (
````)
that begins before the horizontal rule so the "Updating Seed Data" and "Open
Questions" sections are not rendered as a code block; specifically locate the
unlabeled fence token (````) that precedes the---divider and either
delete it or replace it with a proper closing fence (e.g., remove the extra
backtick so the block uses matching triple backticks or close the open fence) so
the headers render as normal Markdown.</details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: Path: .coderabbit.yaml **Review profile**: CHILL **Plan**: Pro **Run ID**: `61a64461-fdfd-467f-b1b5-741288aef453` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between 3b534bf3e1fbafaa0a35de6863cc3361ad840c52 and 3e951b667a98b571c129636ffa2f7eb48765de6d. </details> <details> <summary>⛔ Files ignored due to path filters (1)</summary> * `scripts/showcase/screenshot.png` is excluded by `!**/*.png` </details> <details> <summary>📒 Files selected for processing (14)</summary> * `CONTRIBUTING.md` * `THEMES.md` * `package.json` * `scripts/showcase/generate-seed.js` * `scripts/showcase/launch.js` * `scripts/showcase/plan.md` * `scripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/metadata.json` * `scripts/showcase/seed/data/maestro-agent-session-origins.json` * `scripts/showcase/seed/data/maestro-claude-session-origins.json` * `scripts/showcase/seed/data/maestro-groups.json` * `scripts/showcase/seed/data/maestro-sessions.json` * `scripts/showcase/seed/data/maestro-settings.json` * `scripts/showcase/seed/data/maestro-window-state.json` * `scripts/showcase/setup.js` </details> <details> <summary>✅ Files skipped from review due to trivial changes (11)</summary> * package.json * scripts/showcase/seed/data/maestro-window-state.json * CONTRIBUTING.md * scripts/showcase/seed/data/maestro-claude-session-origins.json * scripts/showcase/seed/data/maestro-agent-session-origins.json * scripts/showcase/seed/data/group-chats/00000000-0000-4000-a000-00000000005b/metadata.json * THEMES.md * scripts/showcase/launch.js * scripts/showcase/seed/data/maestro-settings.json * scripts/showcase/seed/data/maestro-sessions.json * scripts/showcase/seed/data/maestro-groups.json </details> <details> <summary>🚧 Files skipped from review as they are similar to previous changes (2)</summary> * scripts/showcase/setup.js * scripts/showcase/generate-seed.js </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
Addressed and pushed |

#745 Inspired me to build a feature to showcase the app (with fake data) to match the screenshots @pedramamini used in the THEMES.md for future themes to have a nice screenshot.
npm run dev:showcase -- --size 1796x1151The default theme
Before (original):

After (npm run dev:showcase -- --size 1796x1151):

Tested it with
npm run dev:showcase -- --theme winampAnd here is the result from @kianhub pull request:
Summary by CodeRabbit
New Features
Documentation