What's Changed
Features
- Extension tour — interactive onboarding walkthrough via
jupyterlab-tour (optional); guides new users through the toggle, cell border colors, and dependency concepts. Accessible from the Help menu after install
- "No kernel" indicator — when reactive mode is enabled but no kernel is attached, the toolbar label changes to
Reactive (no kernel) and a CSS class is applied to the notebook for styling
cancelPendingAnalysis() / notifyChanged() / hasKernel — new public API on ReactiveNotebookState for cancelling debounce timers before execution, manually triggering UI repaints, and querying kernel availability
Bug Fixes
- Kernel restart now preserves the dependency graph and analysis cache — only runtime execution state is cleared; a lazy rebuild is scheduled so indicators repopulate once the new kernel is idle
- Kernel change (shutdown / switch) no longer wipes the graph and cache — dependency borders stay visible in a dimmed state between sessions
- Batch execution (
Run All) now emits stateChanged when the last cell finishes, so indicators repaint correctly after the full run
- Cell borders only appear for executed cells — after a restart, borders don't show stale state until the user has actually re-run the cell
Tests
- 449-line
reactiveState.spec.ts unit test suite covering execution tracking, kernel restart/shutdown resilience, stale/conflict detection, and batch mode
- 250-line
kernel_resiliency.spec.ts Playwright UI test suite covering restart resilience end-to-end
CI
- Unit tests split into a dedicated parallel
unit-tests job (previously ran inside the build job)
Docs
CONTRIBUTING.md added
- README expanded with demo GIF and updated architecture notes
Install
pip install jupyterlab-ripple==0.1.1