From 1bc83c62a577c211939b52a779061e4dc76bec1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Tue, 31 Mar 2026 04:01:01 +0200 Subject: [PATCH] feat(studio): timeline hidden by default with toggle in header + player (#142) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary The timeline is now hidden by default. A toggle button appears in both the header (alongside panel toggles) and the player controls bar. Both sync the same state and turn teal when the timeline is visible. ## Changes - **`timelineVisible` state** in `App.tsx`, defaults to `false` - **Header toggle**: icon button between sidebar toggle and Renders button - **Player controls toggle**: icon button at the right end of the controls bar - **NLELayout**: `timelineVisible` and `onToggleTimeline` props gate the timeline + resize divider - **Player controls stay visible**: moved from inside the timeline section to inside the preview area, so hiding the timeline doesn't hide play/seek/timecode ## Behavior | State | Preview | Player controls | Timeline | |---|---|---|---| | Timeline hidden (default) | Full height | βœ… Visible | Hidden | | Timeline visible | Shorter | βœ… Visible | Shown with resize handle | Both toggle buttons show identical teal active state (`#3CE6AC/10` bg + `#3CE6AC/30` border). πŸ€– Generated with [Claude Code](https://claude.com/claude-code) --- packages/studio/src/App.tsx | 26 +++++ .../studio/src/components/editor/FileTree.tsx | 83 ++++++-------- .../studio/src/components/nle/NLELayout.tsx | 102 ++++++++++-------- .../src/player/components/PlayerControls.tsx | 31 ++++++ 4 files changed, 146 insertions(+), 96 deletions(-) diff --git a/packages/studio/src/App.tsx b/packages/studio/src/App.tsx index bc9504808..f8ffb5699 100644 --- a/packages/studio/src/App.tsx +++ b/packages/studio/src/App.tsx @@ -286,6 +286,7 @@ export function StudioApp() { const [rightWidth, setRightWidth] = useState(400); const [leftCollapsed, setLeftCollapsed] = useState(false); const [rightCollapsed, setRightCollapsed] = useState(true); + const [timelineVisible, setTimelineVisible] = useState(false); const panelDragRef = useRef<{ side: "left" | "right"; startX: number; @@ -575,6 +576,29 @@ export function StudioApp() { + + )} ); });