Skip to content

Conversation

@Negabinary
Copy link
Contributor

@Negabinary Negabinary commented Nov 21, 2025

Adds a log replay feature to Hazel, when the setting is enabled, a log replay panel appears on the right of the screen

@codecov
Copy link

codecov bot commented Nov 21, 2025

Codecov Report

❌ Patch coverage is 0% with 49 lines in your changes missing coverage. Please review.
✅ Project coverage is 50.30%. Comparing base (77ab798) to head (2302144).

Files with missing lines Patch % Lines
src/web/app/editors/result/StepperEditor.re 0.00% 12 Missing ⚠️
src/web/app/editors/stepper/StepperBase.re 0.00% 8 Missing ⚠️
src/haz3lcore/zipper/action/Perform.re 0.00% 4 Missing ⚠️
src/util/JsUtil.re 0.00% 4 Missing ⚠️
src/web/Settings.re 0.00% 4 Missing ⚠️
src/web/app/editors/stepper/MissingStep.re 0.00% 3 Missing ⚠️
src/haz3lcore/zipper/action/Action.re 0.00% 2 Missing ⚠️
src/web/Store.re 0.00% 2 Missing ⚠️
src/web/app/editors/result/EvalResult.re 0.00% 2 Missing ⚠️
src/web/app/editors/stepper/InductionStep.re 0.00% 2 Missing ⚠️
... and 4 more
Additional details and impacted files
@@            Coverage Diff             @@
##              dev    #2026      +/-   ##
==========================================
- Coverage   50.38%   50.30%   -0.08%     
==========================================
  Files         230      230              
  Lines       25365    25387      +22     
==========================================
- Hits        12780    12772       -8     
- Misses      12585    12615      +30     
Files with missing lines Coverage Δ
src/web/Updated.re 0.00% <0.00%> (ø)
src/web/app/editors/result/Theorems.re 1.49% <0.00%> (ø)
src/haz3lcore/zipper/action/Action.re 0.00% <0.00%> (ø)
src/web/Store.re 9.67% <0.00%> (ø)
src/web/app/editors/result/EvalResult.re 1.27% <0.00%> (ø)
src/web/app/editors/stepper/InductionStep.re 35.48% <0.00%> (ø)
src/web/app/sidebar/SidebarModel.re 0.00% <0.00%> (ø)
src/web/view/NutMenu.re 0.00% <0.00%> (ø)
src/web/app/editors/stepper/MissingStep.re 12.64% <0.00%> (ø)
src/haz3lcore/zipper/action/Perform.re 24.63% <0.00%> (-1.52%) ⬇️
... and 4 more

... and 14 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Negabinary Negabinary linked an issue Nov 25, 2025 that may be closed by this pull request
Base automatically changed from theorem-capture to dev November 25, 2025 20:25
@Negabinary Negabinary force-pushed the theorem-capture-replay branch 3 times, most recently from 5160845 to adc4b95 Compare February 3, 2026 22:05
@claude
Copy link

claude bot commented Feb 3, 2026

Code review

Found 1 issue during review:


Inconsistent mode switch handling in Editors.re

Location: src/web/app/editors/Editors.re:188

Issue: The case (SwitchMode(Tutorial), Tutorial(_)) now calls raise_invalid_action, while the analogous cases for Scratch, Documentation, and Exercises modes all call return_quiet.

Context:

| (SwitchMode(Scratch), Scratch(_))
| (SwitchMode(Documentation), Documentation(_))
| (SwitchMode(Exercises), Exercises(_)) => model |> return_quiet
| (SwitchMode(Scratch), _) =>
Model.Scratch(
ScratchMode.Store.load()
|> ScratchMode.Model.unpersist(~settings=globals.settings.core),
)
|> return
| (SwitchMode(Documentation), _) =>
Model.Documentation(
ScratchMode.StoreDocumentation.load()
|> ScratchMode.Model.unpersist(~settings=globals.settings.core),
)
|> return
| (SwitchMode(Tutorial), Tutorial(_)) => model |> raise_invalid_action
| (SwitchMode(Tutorial), _) =>

The code shows:

| (SwitchMode(Scratch), Scratch(_))
| (SwitchMode(Documentation), Documentation(_))
| (SwitchMode(Exercises), Exercises(_)) => model |> return_quiet

But for Tutorial on line 188:

| (SwitchMode(Tutorial), Tutorial(_)) => model |> raise_invalid_action

Problem: Switching to Tutorial mode when already in Tutorial mode will raise an InvalidAction exception, while the same operation for any other mode silently succeeds as a no-op.

Suggested fix: Change line 188 to use return_quiet for consistency:

| (SwitchMode(Tutorial), Tutorial(_)) => model |> return_quiet

@Negabinary Negabinary force-pushed the theorem-capture-replay branch 3 times, most recently from 203ca88 to 47c799b Compare February 5, 2026 20:27
@Negabinary Negabinary changed the base branch from dev to stepper-select-by-range February 5, 2026 20:28
@Negabinary Negabinary changed the base branch from stepper-select-by-range to fix-case-unrol February 5, 2026 20:41
@Negabinary Negabinary marked this pull request as ready for review February 5, 2026 20:42
Base automatically changed from fix-case-unrol to dev February 5, 2026 20:50
@Negabinary Negabinary force-pushed the theorem-capture-replay branch from 7e93e63 to 3f66008 Compare February 10, 2026 16:46
Copy link
Member

@cyrus- cyrus- left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • log replay should stop when it runs out of messages (I believe fixed during meeting)
  • add export button back to the log panel
  • fix indentation of the import & reset button

okay with merging once those are addressed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Undo is not logged

2 participants