|
| 1 | +# Closure Cursor Bar |
| 2 | + |
| 3 | +## Status: Implemented, needs testing |
| 4 | + |
| 5 | +## What was done |
| 6 | + |
| 7 | +1. **Created `ClosureCursorBar.re`** - New component that displays call stack breadcrumbs |
| 8 | + - Shows function names from applications in the call stack |
| 9 | + - Uses arrow separators between entries |
| 10 | + - Highlights the "focused" entry (at sample_cursor.index) |
| 11 | + - Shows ghosted entries beyond current index |
| 12 | + - Only appears when probes exist |
| 13 | + - Shows "⌀" when at top level (empty call stack) |
| 14 | + - Click on entry jumps to that syntax location |
| 15 | + |
| 16 | +2. **CSS in `style.css`** - Added closure cursor bar styling |
| 17 | + - Positioned in row 2 of a 4-row grid layout |
| 18 | + - Matches top bar aesthetics |
| 19 | + - Hidden when no probes exist (via `.hidden` class) |
| 20 | + |
| 21 | +3. **Modified `Page.re`** - Integrated closure cursor bar into page layout |
| 22 | + - Bar is rendered between top bar and main content |
| 23 | + |
| 24 | +4. **Modified `Transition.re`** - Added `RecordStackFrame` to built-in function applications |
| 25 | + - Both print and other built-in functions now record stack frames |
| 26 | + |
| 27 | +5. **Fixed grid layout** - Added grid positioning to `#sidebars` in `style.css` |
| 28 | + |
| 29 | +## What needs testing |
| 30 | + |
| 31 | +- Closure cursor bar appearance when probes are active |
| 32 | +- Click-to-jump functionality |
| 33 | +- Breadcrumb display with nested function calls |
| 34 | +- Ghost indicator for entries beyond current index |
| 35 | + |
| 36 | +## Known limitations (documented in code) |
| 37 | + |
| 38 | +- Function names show "?" for applications inside built-in function implementations |
| 39 | + (e.g., recursive calls within `map`) because those app_ids aren't in info_map |
| 40 | +- Future enhancement: Augment RecordStackFrame to carry function name directly |
| 41 | + |
| 42 | +## Files changed |
| 43 | + |
| 44 | +- `src/web/app/probesystem/ClosureCursorBar.re` (new) |
| 45 | +- `src/web/www/style.css` |
| 46 | +- `src/web/www/style/sidebar.css` |
| 47 | +- `src/web/app/Page.re` |
| 48 | +- `src/language/dynamics/transition/Transition.re` |
0 commit comments