Refresh PRAW with a calmer Manus-inspired workspace shell - #8
Open
texiwustion wants to merge 13 commits into
Open
Refresh PRAW with a calmer Manus-inspired workspace shell#8texiwustion wants to merge 13 commits into
texiwustion wants to merge 13 commits into
Conversation
The shell integration script assumed preexec/precmd hook arrays already existed, which let zsh emit bad math expression errors on clean startup. Initializing those arrays keeps PRAW's own startup path quiet and stops accidental session-output pollution before the user runs a command. Constraint: Keep the existing shell integration approach and prompt marker flow intact Rejected: Rewrite zsh hook registration around add-zsh-hook | larger behavior change than needed for the regression Confidence: high Scope-risk: narrow Reversibility: clean Directive: If zsh hook registration changes again, keep a runtime test that asserts startup produces no shell math errors Tested: cargo test; npm test; npm run typecheck; npm run build Not-tested: Finder-launched macOS bundle runtime after this exact patch
The redesign needs a stable product lens before implementation starts. This spec locks the chosen direction: Manus-inspired restraint, graphite-blue dual themes, quieter pane chrome, and a more intentional treatment of transcript, live console, and shell-output context. Constraint: Must preserve PRAW's terminal-native workspace semantics rather than imitating a marketing page structure Rejected: Directly clone Manus page styling verbatim | would blur product identity and confuse component semantics Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep future UI edits aligned with this token-first, restraint-first direction unless a new design spec explicitly replaces it Tested: Manual spec self-review for scope, consistency, and ambiguity Not-tested: Implementation viability against current CSS until planning/execution
The redesign now has a concrete task sequence: lock expectations in tests, rebuild tokens, refactor shell CSS, polish transcript/live console/settings, then verify and publish. This keeps the visual rewrite incremental instead of turning into an unbounded styling sweep. Constraint: Must preserve ongoing branch momentum while keeping each redesign slice reviewable Rejected: Implement the visual rewrite in one large styling pass | too hard to verify or bisect if regressions appear Confidence: high Scope-risk: narrow Reversibility: clean Directive: Follow the plan task order unless new evidence shows a dependency was misunderstood Tested: Manual plan review for task order, file scope, and verification coverage Not-tested: Actual implementation outcomes until execution
This first visual pass swaps the harsher black-box shell language for a graphite-blue system, softens pane chrome, and makes transcript context blocks feel intentional instead of error-like. It keeps the same workspace semantics while moving the product closer to the Manus-inspired restraint captured in the design spec. Constraint: Preserve current pane and terminal behavior while changing mostly tokens, copy, and CSS surfaces Rejected: Rebuild component structure around a brand-new layout shell | too much behavior risk for the first polish pass Confidence: medium Scope-risk: moderate Reversibility: clean Directive: Keep future polish passes additive to this token system instead of reintroducing hard black borders or loud accent states Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Human visual QA in a real desktop window after this exact CSS pass
The first visual pass widened split dividers and rounded every pane edge, but those choices conflicted with the layout engine's fixed 6px divider math and left inner flush seams vulnerable. This follow-up keeps the calmer visual language while restoring geometry consistency and cleaning up shared-edge radii. Constraint: Must preserve the current layout engine's divider calculations without reopening geometry code Rejected: Change SPLIT_DIVIDER_SIZE_PX and all related layout assumptions to match the CSS experiment | unnecessary behavior risk for a polish-only fix Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep divider sizing and pane seam styling coordinated with layout geometry any time pane chrome changes Tested: npm test; npm run typecheck; npm run build Not-tested: Manual drag-resize feel in a real desktop window after this seam fix
The first Manus-inspired pass still left two sharp edges: the light palette felt too cold-blue, and blank startup noise could still materialize as shell-output blocks across panes. This follow-up shifts light mode toward a bone-white workspace, softens divider polish, and suppresses whitespace-only startup transcript blocks so the interface feels more intentional. Constraint: Keep genuine non-command shell output visible while filtering only empty startup clutter Rejected: Hide all session-scoped shell output by default | would bury legitimate shell context and make debugging harder Confidence: high Scope-risk: narrow Reversibility: clean Directive: If shell-output presentation changes again, keep behavior tests around whitespace-only startup suppression Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Manual visual QA across multiple pane split topologies after the warmer light-theme pass
Startup shell chrome still felt too present: panes could open with shell output labels and prompt residue, and the rounded geometry remained softer than desired. This pass suppresses all pre-first-command startup transcript blocks, warms light mode further toward bone white, and tightens the shared radius scale so the workspace opens quieter and more composed. Constraint: Preserve post-command session output behavior while keeping first-open panes visually blank Rejected: Special-case only '%' prompts in transcript rendering | too brittle compared with suppressing all pre-first-command startup output Confidence: high Scope-risk: narrow Reversibility: clean Directive: Treat the pre-first-command workspace as a blank canvas unless a future product decision explicitly reintroduces startup context Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Manual visual QA of nested split layouts after the tighter radius pass
The seam presentation only marked the trailing child edge as flush, which left the original pane with a square cut whenever a split was created. This update marks both sides of each shared seam, keeps a tighter seam radius instead of flattening it entirely, and adds a final light polish pass to the pane chrome and settings surfaces so the workspace reads calmer. Constraint: Keep the existing layout geometry and divider hit targets intact Rejected: Widen the divider gutter or rewrite LayoutTree structure | too much layout risk for a visual defect Confidence: high Scope-risk: narrow Reversibility: clean Directive: Shared seam styling depends on both adjacent panes receiving flush masks; do not revert to one-sided masks without rechecking split visuals Tested: npm test Tested: npm run typecheck Tested: npm run build Tested: cargo test
Deferred live-console capture was replaying the echoed command line back into the finished command block, and ANSI-only prompt residue could still create an empty shell-output block after completion. This made simple commands like cd feel wrong even though the shell session itself was healthy. The fix normalizes deferred command output at command-end, drops a leading echoed command line when it matches the submitted command, trims a stray bare prompt symbol, and ignores visually blank post-command output after stripping ANSI escape sequences. Constraint: Preserve legitimate non-command session output after a user has run commands Rejected: Hide all session-scoped output blocks | would discard real shell context that still matters Confidence: medium Scope-risk: narrow Reversibility: clean Directive: Keep transcript cleanup tied to shell echo/prompt artifacts only; do not broaden the heuristics without a concrete reproduction Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Manual GUI confirmation on the user's exact local shell prompt theme
The previous pane styling was still carrying too much of the softer workspace language. After visual review, the pane shell now leans into GitHub-like card chrome: paler utility headers, tighter title weight, quieter action buttons, and cleaner white pane bodies. The split seam keeps the same resize hit area but reduces the visible separator to a very thin line, while the seam masks stay rounded and restrained so split panes do not collapse back into harsh square cuts. Constraint: Keep resize affordances usable while making the seam itself visually minimal Rejected: Turn the seam into a thicker pill divider | looked decorative and too heavy for the requested GitHub direction Confidence: medium Scope-risk: narrow Reversibility: clean Directive: If pane chrome is refined again, keep the seam line optically thin and avoid reintroducing wrapper chips around header actions Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Manual pixel-level comparison against the user's local split layout on every theme
The seam still reacted too loudly on hover because both the divider and edge-resize handles were drawing visual affordances. That made the split feel thicker than intended even after the GitHub-style pane cleanup. This change removes the visual hover/active overlays from seam-adjacent resize affordances and leaves only the cursor feedback. It also reworks AI workflow panes so they stay within the same GitHub-like card system: normal pane body, gentler header tint, and a compact AI state marker instead of a special badge block. Constraint: Preserve resize usability without adding visual noise at the seam Rejected: Keep a highlighted seam only while dragging | still read as unnecessary decoration next to the requested ultra-thin divider Confidence: high Scope-risk: narrow Reversibility: clean Directive: Treat AI mode as a pane state, not a separate visual surface family, unless product semantics change materially Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Manual visual review on the user's exact display scaling and theme mix
The user preferred a GitHub-like focus treatment where the pane stays structurally quiet and the header carries the focus signal. The previous version still left a pane-wide accent ring that read too much like a code editor selection state. This change removes the active-pane outer accent treatment and shifts focus emphasis into the header background and divider line. AI workflow panes follow the same rule with their own gentler tint, so focus stays consistent without turning AI panes into separate chrome. Constraint: Preserve a clearly readable active pane state without reverting to heavy pane-wide outlines Rejected: Keep both header emphasis and outer accent ring | visually redundant and louder than requested Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep future focus tweaks localized to header rhythm first; only reintroduce pane-wide emphasis with a fresh visual need Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Manual review against every pane density/state combination in the running app
The previous AI pane highlight was still leaning too blue and a little too present in the header. The updated treatment follows the approved Whisper Lavender direction: lighter violet tint, gentler active emphasis, and a calmer AI label tone. To make the visual change actually reach existing local setups, the old built-in blue AI defaults are migrated to the new lavender defaults during config normalization, while still preserving user-chosen custom colors. Constraint: Preserve AI color configurability while ensuring legacy default blue installations adopt the new visual direction Rejected: Hardcode a fixed purple only in CSS | would leave existing saved default-blue configs unchanged and create a mismatch with settings Confidence: high Scope-risk: narrow Reversibility: clean Directive: Keep AI pane distinction in the header layer; do not spread lavender tint into the full pane body unless product semantics change Tested: npm test; npm run typecheck; npm run build; cargo test Not-tested: Manual review on a machine with a deliberately custom non-default AI theme color
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary\n- fix the zsh startup hook regression that leaked math errors into fresh sessions\n- document the Manus-inspired workspace direction and execution plan\n- ship the first graphite-blue workspace refresh across tokens, pane chrome, transcript copy, and live console styling\n- keep layout divider sizing aligned with existing geometry while softening pane seams\n\n## Testing\n- npm test\n- npm run typecheck\n- npm run build\n- cargo test\n