Repository navigation
feat(editor): integrate Key23 authentic 3D keycaps customizer & keyboard timeline track - #2406
emirhangungormez wants to merge 9 commits into
Conversation
…rtcut parsing, theme-aware export, prevent double render
|
Thanks for the contribution. Before review we need Greptile at 5/5 and green CI. The exported video needs to match the editor preview, and the open Greptile points (3D toggle not reaching the overlay, Ctrl/Cmd-click selection) need fixing. Please also drop the third-party branding from the UI and the unrelated CameraSelect/MicrophoneSelect changes, then request a Greptile re-review. |
…nputs, fix multi-select & types
|
@richiemcilroy Thanks for the feedback! All requested items have been addressed in
@greptileai review |
| let (theme_bg_hex, theme_text_hex) = match settings.theme.as_str() { | ||
| "black" | "dark" => ("#1A1A1E", "#F5F5F7"), | ||
| "retro_beige" | "retro" => ("#DCD6C8", "#2A2A2A"), | ||
| "white" => ("#EFEFEF", "#1A1A1A"), | ||
| "ocean" => ("#2563EB", "#FFFFFF"), | ||
| "emerald" => ("#059669", "#FFFFFF"), | ||
| "amber" => ("#D97706", "#FFFFFF"), | ||
| "rose" => ("#E11D48", "#FFFFFF"), | ||
| "purple" => ("#7C3AED", "#FFFFFF"), | ||
| "cyberpunk" => ("#0D0D15", "#00FFA3"), | ||
| _ => (settings.background_color.as_str(), settings.color.as_str()), | ||
| }; |
There was a problem hiding this comment.
Export ignores custom colors When a user chooses Text Color or Background Color in the editor, every selectable theme—including the default white theme—replaces those settings with fixed colors during export. Unless the segment has a color override, the exported keyboard display does not use the colors the user chose.
Prompt To Fix With AI
This is a comment left during a code review.
Path: crates/rendering/src/layers/keyboard.rs
Line: 374-385
Comment:
**Export ignores custom colors** When a user chooses Text Color or Background Color in the editor, every selectable theme—including the default white theme—replaces those settings with fixed colors during export. Unless the segment has a color override, the exported keyboard display does not use the colors the user chose.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.There was a problem hiding this comment.
Fixed in 7d56741d9. The export layer now checks whether custom colors (settings.color / settings.background_color) have been set by the user and prioritizes them, only falling back to theme palette defaults when no custom colors are specified.
@greptileai review
There was a problem hiding this comment.
The fix covers custom colors that differ from the legacy defaults, but it still cannot distinguish an explicitly selected default color from an untouched setting.
For example, with the white theme, selecting #FFFFFF in the Text Color picker leaves settings.color == "#FFFFFF", so fallback_text uses the theme’s #1A1A1A instead of the user-selected white. Likewise, explicitly selecting #000000 as the Background Color is replaced by #EFEFEF.
Please track whether each color was explicitly customized (or represent colors as optional overrides) and use the theme palette only when no override exists. This fix is therefore only partial.
|
Fixed the export color fallback in @greptileai review |
|
Fixed in @greptileai review |
…avoid color collisions
|
Fixed in @greptileai review |
|
@richiemcilroy All feedback points have been addressed and Greptile review is now completely clear (0 comments / green). Ready for your review whenever you have a chance! |
1 similar comment
|
@richiemcilroy All feedback points have been addressed and Greptile review is now completely clear (0 comments / green). Ready for your review whenever you have a chance! |
|
Thanks @emirhangungormez! Greptile is at 4/5 here. We only merge once Greptile reaches 5/5, so please address its findings in the summary above (or reply to them if you think one is wrong), then comment |
…lign preview palette
|
@emirhangungormez is attempting to deploy a commit to the Cap Software Inc Team on Vercel. A member of the Team first needs to authorize it. |
|
Fixed in 99d7148.
@greptileai review |
|
Resolved in c26a6e7 and 99d7148. Keycap previews (including individual keycap surfaces, classic box style, and the floating pod chassis) now dynamically reflect user-selected custom text and background colors ( @greptileai review |
|
@greptileai review |
|
All review feedback and potential edge cases have been resolved (Greptile confidence 5/5). The PR is clean and ready for final maintainer review and merge! 🚀@richiemcilroy |
feat(editor): integrate Key23 keycap design system & keyboard timeline track
Motivation
I use Cap daily for screen recordings. The current keyboard shortcut display shows plain text in a rounded box — functional but visually flat. This PR integrates Key23, an open-source keycap design system I maintain, to offer themed keycap styles in the editor.
What this PR does
Frontend (SolidJS/TypeScript):
Keyboardtab in the editor sidebar for configuring keycap appearancekeyboard-overlaycomponent that renders styled keycaps on the video canvasKeyboardTrackin the timeline for managing keyboard shortcut segmentsBackend (Rust):
KeyboardSettingsinconfiguration.rswithstyle,theme,keycap_mode,show_chassiskeyboard.rsso exported videos use matching colorsKnown limitations & Future work
Testing done
biome check— 0 errorscargo checkoncrates/projectRelated Issue: #2409


Confidence Score: 5/5
The PR appears safe to merge within its documented preview/export limits.Summary
The PR adds themed keyboard keycaps, sidebar controls, and matching export colors. The latest change makes classic boxes and floating chassis use the selected colors.
Reviews (8) · Last reviewed commit: "fix(editor): apply custom colors to clas..." · Reviewed by Greptile