Draft
Conversation
Re-add features that were simplified for probemoar merge: Debug/profiling (for development): - WorkerServer.re: Eval timing logging - ScratchMode.re: Round-trip timing - CodeEditable.re: Probe perf profiling UI features: - NutMenu.re: probe_all toggle enabled - ProbeSidebar.re: Full feature set - Probearium/Printarium mode toggle - sketch_view settings panel with all toggles - Full Dynamic Cursor with opacity for items after index - Sample displays in probe list - indicated-call red outline 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The fold projector's hover view was always rendering code as single-line because simple_code hardcoded is_single_line=true. Now view_seg accepts an optional ~single_line parameter (default false) so FoldProj gets multiline display while ProbeProj and TypeProj explicitly use single-line. Changes: - ProjectorBase.re: Add ~single_line to View.seg type - ProjectorView.re: Pass ~single_line through flex_code and mk_view - ProbeProj.re: Create view_seg_single_line wrapper for probe displays - TypeProj.re: Add ~single_line=true for type display - ProbeSidebar.re: Add ~single_line=true for sidebar displays 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## dev #2061 +/- ##
==========================================
+ Coverage 49.52% 49.79% +0.27%
==========================================
Files 241 231 -10
Lines 26676 25727 -949
==========================================
- Hits 13210 12810 -400
+ Misses 13466 12917 -549
🚀 New features to boost your workflow:
|
Each legend item now shows an explanatory tooltip on hover, positioned below the legend panel. Also cleans up Language module prefixes in ProbeSidebar. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When a sample has no environment bindings to display, the context menu actions (Pin/Step into) now stack vertically like a traditional menu instead of horizontally. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Merges latest dev changes and resolves conflicts: - ZipperBase.re: Use dev's extracted Refractor module pattern - Editor.re: Keep dev's comment, add auto_def probe handling - Refractors.re (root): Deleted, functionality moved to ProbePerform.re Adds auto_def field to zipper/Refractors.re for auto-probe-follows-cursor feature, which automatically places an auto-probe on the body of whichever top-level definition the cursor is currently inside. Fixes data flow issue where probes would appear but show no samples until an edit was made. The fix detects ephemeral probe changes in CodeWithStatics and triggers statics recalculation, which updates evaluation targets. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When the cursor is on a secondary (whitespace/comment), the indicated piece has no statics info, causing toplevel_def_body_id to return None. Fix: Fall back to using the parent tile's ID from the zipper's ancestors, which is guaranteed to be a real tile with statics info. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Two new auto-probe behaviors: 1. Test forms: When cursor is inside a test, auto-probe the entire test body. This overrides let behavior, so `test let a = 1 in a pass` with cursor on `a` probes the full test body, not just the let definition. 2. Let delimiter/pattern: When cursor is on the let keyword itself or inside the pattern (not in body), auto-probe the definition. Implementation: - StaticsBase.toplevel_def_body_id: Check for Test/HintedTest as current term or ancestor (priority over Let). Changed Let condition from "cursor in def" to "cursor NOT in body". - ProbePerform.target_subterm_ids: Don't redirect Let→definition when the Let is the body of a Test (so we see test result, not just def). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Rewrote toplevel_def_body_id with a cleaner top-down algorithm: - Walk ancestors from outermost to innermost - For each let, check if child-toward-cursor is the body - If child == body: skip (cursor in body, let doesn't apply) - Otherwise: return that let's def (cursor in def/pattern/on-delimiter) Key insight: the ONLY way to not probe a let's def is if cursor is in its body. Being on the delimiter, pattern, or def all qualify. Fixed edge case: when cursor is directly on a top-level let (no containing let exists), return that let's def as the auto-probe target. Also moved toplevel_def_body_id from StaticsBase.re to ProbePerform.re since it's probe-specific logic, not general statics. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Brings in: - Auto-probe for test forms and let delimiters/patterns - Fix auto-probe disappearing on whitespace/comments - Top-down algorithm for toplevel_def_body_id - Move toplevel_def_body_id from StaticsBase to ProbePerform
…toprobe when active. manual run more for printarium / console log
When a probe (manual or auto) is added, the sample cursor now automatically points to an appropriate sample from that probe once evaluation completes. Uses pending_probe_cursor field to defer until async worker returns results. Picks the lexically first probe with samples and uses closest_to_cursor for conservative sample selection. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- TyDi: min 2-char prefix before showing completions; prioritize keywords over context vars when expected type is unknown - AutoProbe: soft-reject function types (probe if no better alternative) - Elaborator: elaborate first pattern in MultiHole([Pat(p1), ...]) - Abbreviate: show <function> and builtin name instead of <> 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When moving to a function definition with auto-probe mode enabled,
the sample cursor wasn't being set correctly - samples appeared blue
until another action was performed.
Fixes:
- CellEditor: Pass ~auto_probe_mode to second pass in calculate to
prevent clear_auto_def from removing the probe
- CellEditor: Force recalculation when pending_probe_cursor is set
during ResultAction handling
- Editor: Call resolve_pending_probe_cursor after update_auto_def_probe
since editor_effects runs before it
Also:
- ProbeSidebar: Shorten toggle labels ("Auto"/"Manual" -> "A"/"M")
- Test: Fix arrow syntax in recursive test case
- TODO: Commented out profiling code in CodeEditable, WorkerServer,
ScratchMode (to be deleted later)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Member
|
- New ClosureCursorBar component shows call stack as breadcrumbs - Appears below top bar when probes are active - Click entries to jump to syntax location - Add RecordStackFrame to built-in function applications - Fix grid layout for 4-row structure with sidebars Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
After the refactor that changed projector actions from IDs to indices, clicking on probe samples caused a List.nth failure. The issue was that refractor indices were computed from refractor_list in the view layer, but ProjectorPerform.go only received projector_list for index lookup. Added refractor_list parameter to ProjectorPerform.go and use is_refractor(kind) to select the correct list for Focus and SetModel actions. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Click function names → jump to definition/body - Click separators (⟩) → jump to application site - Use λ instead of ⌀ for top-level entry - Add ghost styling to separators - Lower z-index to sit under top bar outline - Various CSS refinements (hover states, colors, border-radius) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Change call_stack type from list(Id.t) to list(stack_frame) where stack_frame = (Id.t, option(string)) to carry function names - Capture function names during evaluation before unboxing discards them - Add SetIndex action for direct sample cursor navigation - Update ClosureCursorBar to use names from call_stack (enables display of function names for calls inside built-in HOFs like map/fold) - Wire up breadcrumb clicks: entries set cursor index + jump to definition, separators set cursor index + jump to call site Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Double chevron (❯❯) before first ghost entry as visual indicator - Add above/below color coding using same pink/blue as sample display - Extract sample position colors to CSS variables for consistency - Ghost entries at 0.7 opacity (blue color distinguishes them) - Fixed-width separators to prevent layout shift Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Show pin icon next to the pinned entry in the breadcrumb bar - Clicking the pin icon removes the pin (toggles it off) - Uses same visual style as sample pin icon (red background) - Pin icon positioned inline before the function name Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Edit pin SVG to use white fill instead of black - Remove filter: invert() hacks from all pin icon CSS - Use direct background colors (var(--R1) for red, var(--T3) for grey) - Simplifies styling and makes colors more predictable Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Adjust pin icon positioning in closure cursor bar - Comment out call_cursor_view in sidebar (TODO: handle autos) - Add plan/closure-cursor-bar-deferred.md with future ideas: - Collapsing recursive runs - Ghost entry toggle - Indicated entry highlighting - Dropdown menus for branching paths - Investigation breadcrumbs for debugging Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
After changing call_stack from list(Id.t) to list(stack_frame) where
stack_frame = (Id.t, option(string)), pin filtering broke because:
- pin_call creates frames with None for function names
- actual samples have real names like Some("map") from evaluation
- structural equality failed: (id, None) != (id, Some("map"))
Fix: Add ids_of_stack helper to extract just IDs, use for comparisons
in filter_by_pin, show_pin, toggle_pin_call, resolve_pending_focus,
and is_in.
Also includes pin icon color fix (red background).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Arrow keys navigate between breadcrumb entries (left = shallower, right = deeper) - Enter jumps to definition and refocuses main editor - Red outline highlights entry when syntax cursor is on its app expression - Top-level lambda now shows focused styling when index is -1 - Various CSS polish: disable focus outline, fix padding, add tooltips - Update deferred ideas documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Lambda now gets text-decoration: underline when focused, matching other entries - Update deferred docs: MVP implemented, focus shortcut TODO with candidates Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Needs investigation - possible mismatch between breadcrumb indicated state and sample indicated state when clicking separators. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When a probe is directly on a function application (e.g., ^^probe(f(5))), the sample dropdown now displays the argument values that were passed. - Store argument values during RecordStackFrame in EvaluatorState - Look up and attach args to samples in both Evaluator.re paths - Display call with values in dropdown (e.g., "f(5)" or multiline for tuples) - Bold parentheses, regular code font for function name - Divider line between call display and environment section Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.
In-progress probes features for study that didn't make it into #1879. See #2058 for future features currently out-of-scope.
STUDY:
TODO:
Tutorial System (for study)
END:
Possibly out of scope:
Unknowns:
Done Tasks:
DONE Features:
DONE Bugs: