Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
19db794
feat: add git status, git remote, worktree, and custom symbol widgets
hangie Mar 23, 2026
e794433
feat: add widget rules engine for conditional property overrides
hangie Mar 23, 2026
f89076b
fix: correct git status detection for unstaged changes and merge conf…
hangie Mar 23, 2026
ca724bb
feat: add conflict detection to git status widget
hangie Mar 23, 2026
d12420e
Merge branch 'feature/new-git-and-worktree-widgets' into feat/rules-e…
hangie Mar 23, 2026
b414953
feat: add string equals/isEmpty operators and use text labels for all…
hangie Mar 23, 2026
188414c
feat: add editorMode state and Tab toggle to ItemsEditor
hangie Mar 23, 2026
fc964e2
fix: auto-reset color mode when navigating to a widget that doesn't s…
hangie Mar 23, 2026
7883042
feat: route keyboard input to handleColorInput in color mode
hangie Mar 23, 2026
4e27c41
refactor: deduplicate onUpdate closure and simplify ESC handling in c…
hangie Mar 23, 2026
4374bb5
feat: add color mode rendering to ItemsEditor
hangie Mar 23, 2026
f9b4f1c
feat: make ItemsEditor help text mode-aware for color mode
hangie Mar 23, 2026
de3a851
feat: remove Edit Colors from main menu (Task 2.1)
hangie Mar 23, 2026
573e535
refactor: remove dead colorLines and colors screen states from App.tsx
hangie Mar 23, 2026
fd03df6
feat: remove ColorMenu component and color-menu mutations
hangie Mar 23, 2026
252c762
chore: update stale ColorMenu references in comments
hangie Mar 23, 2026
fc1c86c
feat: extract rule-level input handlers and formatting into rules-edi…
hangie Mar 23, 2026
74878b6
feat: add rule color, move, add/delete, and editor complete handlers
hangie Mar 23, 2026
b7d8102
feat: add rule-level state and toggle x key to accordion expansion
hangie Mar 23, 2026
f5d673a
feat: add rule-level input routing in ItemsEditor useInput handler
hangie Mar 23, 2026
df58792
feat: add accordion rendering for expanded rules in widget list
hangie Mar 23, 2026
897ece2
feat: add rule-level help text, title bar updates, and color info dis…
hangie Mar 23, 2026
867501c
feat: wire ConditionEditor overlay at rule property level in ItemsEditor
hangie Mar 23, 2026
eaec1be
refactor: delete RulesEditor.tsx, update stale comments
hangie Mar 23, 2026
ed52029
feat: wrap ↑↓ navigation at both widget and rule levels
hangie Mar 23, 2026
3a04275
feat: move type picker to move mode, use ←→ for rules expand/collapse
hangie Mar 23, 2026
84fbb29
feat: update help text for relocated arrow key bindings
hangie Mar 23, 2026
2ec66a7
feat: show placeholder when expanded widget has no rules
hangie Mar 23, 2026
e1a012e
feat: relocate condition editor trigger from rule property mode to mo…
hangie Mar 23, 2026
11b5122
feat: relocate ←→ edit condition hint to rule move mode help text
hangie Mar 23, 2026
cc1dcbf
feat: add ←→ arrow key navigation to LineSelector
hangie Mar 23, 2026
ae4374a
feat: add ← back-navigation from widget level in items editor
hangie Mar 23, 2026
e5606a2
feat: update List component with wrap navigation, arrow key aliases
hangie Mar 23, 2026
1f6f4c5
refactor(LineSelector): remove redundant ←→ handlers, wire onBack to …
hangie Mar 23, 2026
9099ab1
feat: wire onBack to List in all sub-screens for ← arrow navigation
hangie Mar 23, 2026
450cc74
feat: add ← as back-navigation key to GlobalOverridesMenu and Powerli…
hangie Mar 23, 2026
8e9dad1
refactor: remove redundant showBackButton and back value handlers
hangie Mar 23, 2026
3082a14
feat: add confirmation dialog when exiting with unsaved changes
hangie Mar 23, 2026
bf74a28
feat: move condition editor trigger from rule move mode ←→ to rule pr…
hangie Mar 23, 2026
d324d99
feat: update rule-level help text in ItemsEditor
hangie Mar 23, 2026
b9add83
feat: refactor PowerlineSeparatorEditor to use Enter/focus mode for e…
hangie Mar 23, 2026
29b2d18
refactor: normalize keybind matching to lowercase across TUI screens
hangie Mar 23, 2026
091c5fd
fix: change "Enter to move" to "Enter to edit" in ItemsEditor help text
hangie Mar 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .superpowers/brainstorm/1885621-1774257922/.server-info
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"type":"server-started","port":63636,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:63636","screen_dir":"/home/mark/GitHub/ccstatusline-wtree/feat/unified-editing/.superpowers/brainstorm/1885621-1774257922"}
62 changes: 62 additions & 0 deletions .superpowers/brainstorm/1885621-1774257922/accordion-models.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
<h2>Accordion Rules: How should expanded rules look?</h2>
<p class="subtitle">When you press a key on a widget, its rules expand inline below it. But how much detail should each rule show?</p>

<div class="options">
<div class="option" data-choice="a" onclick="toggleSelect(this)">
<div class="letter">A</div>
<div class="content">
<h3>Compact: Condition + Color Preview Only</h3>
<div class="mockup">
<div class="mockup-header">ItemsEditor - Compact Rules</div>
<div class="mockup-body" style="font-family: monospace; font-size: 13px; line-height: 1.6; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div style="color: #888; margin-bottom: 8px;">Edit Line 1</div>
<div><span style="color: #4ade80;">&#9654; </span><span style="color: #4ade80;">1. Model</span> <span style="color: #888;">[cyan]</span></div>
<div style="padding-left: 24px; color: #888;">&#9656; when &gt;50 <span style="color: #ef4444;">&#9632; red</span></div>
<div style="padding-left: 24px; color: #888;">&#9656; when &gt;80 <span style="color: #ef4444;">&#9632; red, bold</span> (hidden)</div>
<div><span> </span>2. GitBranch <span style="color: #888;">[green]</span></div>
<div><span> </span>3. TokensTotal <span style="color: #888;">[white] (2 rules)</span></div>
</div>
</div>
<p>Each rule is one short line. Condition summary + color swatch + key overrides. Quick to scan. Less info but less clutter.</p>
</div>
</div>

<div class="option" data-choice="b" onclick="toggleSelect(this)">
<div class="letter">B</div>
<div class="content">
<h3>Detailed: Full Condition + All Properties</h3>
<div class="mockup">
<div class="mockup-header">ItemsEditor - Detailed Rules</div>
<div class="mockup-body" style="font-family: monospace; font-size: 13px; line-height: 1.6; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div style="color: #888; margin-bottom: 8px;">Edit Line 1</div>
<div><span style="color: #4ade80;">&#9654; </span><span style="color: #4ade80;">1. Model</span> <span style="color: #888;">[cyan]</span></div>
<div style="padding-left: 24px; color: #888;">&#9656; 1. <span style="color: #ef4444;">Model</span> (when self greaterThan 50) <span style="color: #888;">(raw value)</span></div>
<div style="padding-left: 24px; color: #888;">&#9656; 2. <span style="color: #ef4444; font-weight: bold;">Model</span> (when self greaterThan 80) (stop) (hidden)</div>
<div><span> </span>2. GitBranch <span style="color: #888;">[green]</span></div>
<div><span> </span>3. TokensTotal <span style="color: #888;">[white] (2 rules)</span></div>
</div>
</div>
<p>Mirrors current RulesEditor display: styled widget name + full condition text + all property overrides. More info but takes more space.</p>
</div>
</div>

<div class="option" data-choice="c" onclick="toggleSelect(this)">
<div class="letter">C</div>
<div class="content">
<h3>Hybrid: Compact by default, expand selected rule</h3>
<div class="mockup">
<div class="mockup-header">ItemsEditor - Hybrid Rules</div>
<div class="mockup-body" style="font-family: monospace; font-size: 13px; line-height: 1.6; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div style="color: #888; margin-bottom: 8px;">Edit Line 1</div>
<div><span style="color: #4ade80;">&#9654; </span><span style="color: #4ade80;">1. Model</span> <span style="color: #888;">[cyan]</span></div>
<div style="padding-left: 24px; color: #888;"> &#9656; when &gt;50 <span style="color: #ef4444;">&#9632; red</span></div>
<div style="padding-left: 24px;"><span style="color: #d946ef;"> &#9654;</span> <span style="color: #ef4444; font-weight: bold;">Model</span> <span style="color: #888;">(when self greaterThan 80) (stop) (hidden)</span></div>
<div style="padding-left: 24px; color: #d946ef; font-size: 12px;"> &#8593;&#8595; select, &#8592;&#8594; edit condition, Tab: color mode, (s)top, (h)ide</div>
<div><span> </span>2. GitBranch <span style="color: #888;">[green]</span></div>
<div><span> </span>3. TokensTotal <span style="color: #888;">[white] (2 rules)</span></div>
</div>
</div>
<p>Unselected rules show compact view. The selected rule shows full detail + inline help text. Best of both: scannable list, detailed editing.</p>
</div>
</div>
</div>
96 changes: 96 additions & 0 deletions .superpowers/brainstorm/1885621-1774257922/full-design-v2.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
<h2>Accordion Rules Editor: Full Design (v2)</h2>
<p class="subtitle">Fixed: Selection arrow stays in a fixed column. Indented rules have their own arrow column.</p>

<div class="section">
<h3>1. Normal Widget View (no rules expanded)</h3>
<div class="mockup">
<div class="mockup-header">Edit Line 1</div>
<div class="mockup-body" style="font-family: monospace; font-size: 13px; line-height: 1.7; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div style="color: #888; margin-bottom: 4px;">&uarr;&darr; select, &larr;&rarr; type picker, (a)dd, (d)elete, (x) rules, Tab: color mode, ESC: back</div>
<div><span style="color: #4ade80;">&#9654; </span><span style="color: #4ade80;">1. Model</span> <span style="color: #888;">[cyan] (2 rules)</span></div>
<div><span style="color: #888;"> </span> 2. GitBranch <span style="color: #888;">[green]</span></div>
<div><span style="color: #888;"> </span> 3. TokensTotal <span style="color: #888;">[white] (1 rule)</span></div>
<div><span style="color: #888;"> </span> 4. Separator |</div>
<div><span style="color: #888;"> </span> 5. SessionCost <span style="color: #888;">[yellow]</span></div>
</div>
</div>
<p>&uarr;&darr; navigates widgets. Arrow column is fixed at left edge.</p>
</div>

<div class="section">
<h3>2. Press <code>x</code> &mdash; Rules expand, focus shifts into rules</h3>
<div class="mockup">
<div class="mockup-header">Edit Line 1 &mdash; Rules for Model</div>
<div class="mockup-body" style="font-family: monospace; font-size: 13px; line-height: 1.7; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div style="color: #888; margin-bottom: 4px;">&uarr;&darr; select, &larr;&rarr; edit condition, (a)dd, (d)elete, (s)top, (h)ide, Tab: color mode, ESC: collapse</div>
<div><span style="color: #888;"> </span> 1. Model <span style="color: #666;">[cyan]</span></div>
<div><span style="color: #888;"> </span> <span style="color: #4ade80;">&#9654; </span>1. <span style="color: #ef4444;">Model</span> <span style="color: #888;">(when self &gt; 50) (raw value)</span></div>
<div><span style="color: #888;"> </span> <span style="color: #888;"> </span> 2. <span style="color: #ef4444; font-weight: bold;">Model</span> <span style="color: #888;">(when self &gt; 80) (stop) (hidden)</span></div>
<div><span style="color: #888;"> </span> 2. GitBranch <span style="color: #888;">[green]</span></div>
<div><span style="color: #888;"> </span> 3. TokensTotal <span style="color: #888;">[white] (1 rule)</span></div>
</div>
</div>
<p>Rules are permanently indented under the parent widget. The rule arrow column is offset from the widget arrow column. The parent widget loses its arrow (no longer selected). &uarr;&darr; navigates rules only.</p>
</div>

<div class="section">
<h3>3. Navigating to rule 2</h3>
<div class="mockup">
<div class="mockup-header">Edit Line 1 &mdash; Rules for Model</div>
<div class="mockup-body" style="font-family: monospace; font-size: 13px; line-height: 1.7; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div style="color: #888; margin-bottom: 4px;">&uarr;&darr; select, &larr;&rarr; edit condition, (a)dd, (d)elete, (s)top, (h)ide, Tab: color mode, ESC: collapse</div>
<div><span style="color: #888;"> </span> 1. Model <span style="color: #666;">[cyan]</span></div>
<div><span style="color: #888;"> </span> <span style="color: #888;"> </span> 1. <span style="color: #ef4444;">Model</span> <span style="color: #888;">(when self &gt; 50) (raw value)</span></div>
<div><span style="color: #888;"> </span> <span style="color: #4ade80;">&#9654; </span>2. <span style="color: #ef4444; font-weight: bold;">Model</span> <span style="color: #888;">(when self &gt; 80) (stop) (hidden)</span></div>
<div><span style="color: #888;"> </span> 2. GitBranch <span style="color: #888;">[green]</span></div>
<div><span style="color: #888;"> </span> 3. TokensTotal <span style="color: #888;">[white] (1 rule)</span></div>
</div>
</div>
<p>Arrow moves down to rule 2. Nothing else shifts. The indentation is fixed &mdash; only the arrow position changes.</p>
</div>

<div class="section">
<h3>4. Tab to color mode (on rule 2)</h3>
<div class="mockup">
<div class="mockup-header">Edit Line 1 &mdash; Rules for Model <span style="color: #d946ef;">[COLOR MODE - FOREGROUND]</span></div>
<div class="mockup-body" style="font-family: monospace; font-size: 13px; line-height: 1.7; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div style="color: #888; margin-bottom: 4px;">&larr;&rarr; cycle foreground, (f) bg/fg, (b)old, (r)eset, Tab: property mode, ESC: property mode</div>
<div style="color: #888; margin-bottom: 4px;">Current foreground (3/16): <span style="color: #ef4444;">Red</span></div>
<div><span style="color: #888;"> </span> 1. Model <span style="color: #666;">[cyan]</span></div>
<div><span style="color: #888;"> </span> <span style="color: #888;"> </span> 1. <span style="color: #ef4444;">Model</span> <span style="color: #888;">(when self &gt; 50) (raw value)</span></div>
<div><span style="color: #888;"> </span> <span style="color: #d946ef;">&#9654; </span>2. <span style="color: #ef4444; font-weight: bold;">Model</span> <span style="color: #888;">(when self &gt; 80) (stop) (hidden)</span></div>
<div><span style="color: #888;"> </span> 2. GitBranch <span style="color: #888;">[green]</span></div>
</div>
</div>
<p>Magenta arrow for color mode. Color info shown. Everything else stays put.</p>
</div>

<div class="section">
<h3>5. ESC Layering</h3>
<div class="mockup">
<div class="mockup-header">Navigation Stack</div>
<div class="mockup-body" style="font-family: monospace; font-size: 14px; line-height: 2.2; background: #1a1a2e; color: #e0e0e0; padding: 16px;">
<div>Rule color mode &nbsp;&nbsp;&nbsp;<span style="color: #f59e0b;">&rarr; ESC &rarr;</span>&nbsp;&nbsp; Rule property mode</div>
<div>Rule property mode &nbsp;<span style="color: #f59e0b;">&rarr; ESC &rarr;</span>&nbsp;&nbsp; Collapse rules (widget level)</div>
<div>Widget color mode &nbsp;&nbsp;<span style="color: #f59e0b;">&rarr; ESC &rarr;</span>&nbsp;&nbsp; Widget items mode</div>
<div>Widget items mode &nbsp;&nbsp;<span style="color: #f59e0b;">&rarr; ESC &rarr;</span>&nbsp;&nbsp; Line Selector</div>
</div>
</div>
</div>

<div class="options">
<div class="option" data-choice="approve" onclick="toggleSelect(this)">
<div class="letter">&#10003;</div>
<div class="content">
<h3>Design looks correct</h3>
<p>Ready to write up as a spec</p>
</div>
</div>
<div class="option" data-choice="revise" onclick="toggleSelect(this)">
<div class="letter">&#9998;</div>
<div class="content">
<h3>Needs changes</h3>
<p>I'll describe what to adjust in the terminal</p>
</div>
</div>
</div>
Loading