Changelog¶
(v*) and apply to the entire monorepo.
2.6.0¶
Unreleased. Covers every change since
v2.5.0(PR #168).
Added¶
CaDecon noise-constrained sparsity — an optional
noise_constrainedspike-inference mode that picks the binarization threshold as the sparsest spike support whose residual still reaches the data-derived noise floor, instead of the fit-maximizing threshold. Knob-free and off by default; suppresses spurious low-SNR spikes. Exposed through the WASM solver, the CaDecon UI, and thecalab.solve_tracePython binding (PR #168)
2.5.0 - 2026-07-08¶
Covers PRs #153–#167 (all merged 2026-07-08).
Added¶
CaDecon bi-exponential fit outcome surfaced as
FitMode(TwoComponent/SlowOnly/Degenerate/Empty) on the kernel result; Pythonfit_biexponentialnow returns an 8-tuple (trailingfit_modestring) andBiexpFitResultgained afit_modefield; KernelDisplay warns when subset fits are degenerate (PR #162)CaDecon convergence redesign — converge in kernel shape space (peak time + FWHM asymptote) with median-tail kernel selection and both filters on by default (PR #154), plus an asymptote dashboard charting the four convergence signals (PR #155)
Shared uPlot chart primitives in
@calab/ui/chart— colorblind-safe Okabe-Ito palette (TRACE_COLORS,GROUND_TRUTH_COLORS,KERNEL_FIT_COLORS,METRIC_COLORS,subsetColor), viridis colormap (VIRIDIS_LUT,viridisRGB/viridisCss), tick math (niceTicks), and axis/cursor/range helpers (chartAxis,labeledAxis,syncCursor,safeRange) (PRs #158, #159, #160)
Changed¶
CaDecon raster overview uses the shared viridis colormap and drops the intensity colorbar (activity is assumed to span 0→full; absolute values are not meaningful) (PR #159)
calab-solvertuning-constant hygiene: introducedSeedConfig, sharedbaseline::DEFAULT_BASELINE_QUANTILE, and a namedBASELINE_EMA_WEIGHT; deduplicated the bi-exponential fast-component grid bounds so the grid search and golden-section refinement cannot drift (no behavior change) (PR #163)Tooling: ignore local Python virtualenvs
.venv*/(PR #156)Documentation: reconciled repo docs with the CaDecon review series (PR #164), aligned the CaDecon tutorials with it (PR #165), and backfilled the changelog from git history (PR #167)
Fixed¶
calab-solverFFI boundaries (WASM and PyO3) reject non-finite (NaN/Inf) input traces with an explicit error instead of returning garbage results (PR #161)Solver: banded AR(2) forward model aligned via a one-sample source delay so the reconvolution matches the double-exponential kernel (PR #157)
CaDecon: correct per-subset kernel attribution + init/variance robustness (PR #153)
2.4.0 - 2026-03-20¶
Covers the entire 2.4.x line (PRs #99–#152). Reconstructed from git history; closely-related PRs are consolidated into single bullets for readability.
Added¶
calabPython package — CaDecon Python bridge with config, autorun, progress, and auto-export (PRs #108, #109); headless-browser batch mode + InDeCa PyO3 bindings (PR #110)Shared Rust simulation module producing synthetic ground-truth traces, exposed to both Python and WASM (PR #113)
Solver: peak-seeded initial-kernel auto-estimation (PR #103); an independent fast component in the bi-exponential fit (PR #105); a
skipparameter for bi-exponential fitting (PR #99)Migrated the kernel parameterization from (tau_rise, tau_decay) to (t_peak, FWHM) (PR #104)
CaDecon tutorial set (PR #151)
Draggable minimap edges on the trace overview (PR #145)
Sphinx + ReadTheDocs documentation site for the Python package (PR #115)
Changed¶
Performance: CaDecon iteration hot paths (PR #107); solver cleanup/dedup/optimize (PR #106); snappier Peak/FWHM slider drag (PR #134)
Tooling: ESLint/Prettier/lint-surface cleanup (PR #120); prune unused exports and internalize test-only surface (PR #125); bump GHA for Node 24 and clear reactivity lint (PR #133); gitignore the whole
.claude/directory (PR #135)CI: Rust + Python lint/type jobs, a build matrix, and SHA-pinned actions (PR #124)
Tests: smoke / export-roundtrip / sub-frame-timing / warm-start quick-wins (PR #127); CaDecon iteration-manager state transitions (PR #128); iteration- store & multi-cell-store reactivity (PR #129); geo-session edge function + RLS policy matrix (PR #130); bridge timeout & mid-run crash detection (PR #131)
Documentation: separated CaTune and CaDecon into dedicated guides (PR #117); promoted CaDecon to stable + root README update (PR #118); reviewed/improved all Python docs (PR #116)
Fixed¶
Address pre-merge audit findings — WASM drift, RLS PII, FFI panics, config, tests (PR #150)
Solver: corrected a binning-induced time offset in iterative kernel fitting (PR #102); golden-section refinement bug fix (PR #147)
CaTune: GT marker alignment + spectrum/zoom-window perf sweep (PR #142); repair tutorial highlighting after the Peak/FWHM migration (PR #143)
Headless: prevent resource leaks on browser start/close failures (PR #121)
Logic + UX polish — tau constraints, bridge errors, reactivity (PR #126)
Community: show bridge/training submissions and hide demo presets under User data (PR #152)
CI deploy: bump the install-action pin to fix a wasm-pack 404 (PR #148)
Security¶
Hardened the bridge URL, added localhost bridge auth, and secured the geo-session edge function (PR #122)
Locked down analytics row-level security (PR #123)
2.3.0 - 2026-02-26¶
Covers the entire 2.3.x line (PRs #85–#96). Reconstructed from git history.
Added¶
CaDecon — a new app for automated calcium deconvolution (the InDeCa algorithm) that estimates the kernel and deconvolution parameters directly from the data, no manual tuning required: app scaffold + data loading + subset UI, the InDeCa compute engine with warm-start, visualization / QC distributions / drill-down, community-database integration, and ground-truth overlay (PRs #85, #86, #87, #88, #90, #91)
Usage analytics extended to track CaDecon submissions (PR #93)
Changed¶
CaDecon left-sidebar layout/UX (PR #89); convergence-UI improvements and kernel-estimation groundwork, including rise-time-collapse mitigation (PR #94)
CaTune: log-scale DualRangeSlider, card-grid fix, tutorial baseline docs (PR #96)
Performance: FISTA pipeline (SIMD, loop fusion, Fenwick baseline) (PR #92)
Fixed¶
Solver: alpha/PVE double-counting and energy-pooling correctness (PR #91)
2.2.0 - 2026-02-23¶
Covers the entire 2.2.x line (PRs #65–#84). Reconstructed from git history.
Added¶
calabPython package greatly expanded — PyO3 bindings, CaImAn/Minian loaders, browser bridge, and a CLI (PR #66)Community: DataSource tracking + bridge export button & heartbeat detection (PR #67)
Solver: banded AR(2) O(T) convolution + box constraint (PR #78)
Dynamic worker-pool scaling with a URL override (PR #77)
Admin dashboard: analytics breakdowns and bulk moderation (PR #69)
Chart/UX: transient-zone visual indicator (PR #81)
Tutorials: Python Package tutorial (PR #68); Python syntax highlighting in code blocks (PR #75)
Changed¶
Moved the Rust solver to
crates/solver/with dual WASM (jsbindings) / PyO3 (pybindings) Cargo features (PR #65)Replaced the export-to-Python page with a dismissible modal (PR #79)
Fixed¶
CaTune: minimap no longer pushes the zoom window off-screen (PRs #70, #82); clamp rise/decay sliders to prevent a negative kernel (PR #83)
Analytics: reliable session-duration tracking via heartbeat (PR #84)
2.1.0 - 2026-02-20¶
Covers the 2.0.8, 2.0.9, and 2.1.x patch line (PRs #58–#64). Reconstructed from git history.
Added¶
Usage-analytics pipeline + admin dashboard (PR #62)
Shared auth menu in the header across all CaLab apps (PR #61)
Community: highlight your own submissions in the scatter plot (PR #63)
Comprehensive README files across all packages and apps (PR #58)
Changed¶
Made
@calab/communityapp-agnostic (PR #60)Documentation: improved tutorial terminology and scientific accuracy (PR #59)
Fixed¶
Codebase-wide quality sweep — 26 fixes (PR #64)
2.0.6 - 2026-02-19¶
Changed¶
Extracted
FftConvolverfrom Solver to enable split borrows in Rust WASM (PR #56)Replaced AR model reference with double-exponential time constants in CaTune description
Fixed¶
Consistent CaLab version display across all pages (PR #57)
2.0.5 - 2026-02-19¶
Added¶
Screenshots and version superscript to landing page (PR #55)
Changed¶
Extracted shared
Card,CardGrid, andTutorialcomponents to@calab/ui(PR #54)Renamed package scope from
@catuneto@calab(PR #53)
2.0.4 - 2026-02-19¶
Added¶
Unit tests for
@calab/core(~48 tests) and@calab/community(~22 tests) (PRs #48, #49)Shared
CompactHeadercomponent in@calab/ui(PR #50)base.cssaggregate import for shared stylesGlob-based
build-apps.mjsand dynamiccombine-dist.mjsfor app auto-discovery (PR #51)App template (
apps/_template) anddocs/NEW_APP.mdguide (PR #52)This changelog
Changed¶
Barrel exports trimmed to only externally consumed symbols (PR #47)
CI build step uses
build:appsinstead of hardcoded app names
Fixed¶
@calab/iomissing directvalibotdependency (phantom dep via@calab/core) (PR #47)
2.0.3 - 2026-02-18¶
Changed¶
Extracted chart logic to
@calab/computeand shared CSS to@calab/ui(PR #46)Removed dead code — unused exports, signals, props, barrel re-exports (PR #45)
Naming, import, and minor cleanup across monorepo
Fixed 5 architecture boundary issues from codebase audit
Optimized build pipeline and CI caching
Fixed¶
AR2 dt mismatch, ESLint rule override, CaRank missing memo (PR #45)
2.0.2 - 2026-02-18¶
Fixed¶
Capitalize app names in deploy URLs (CaTune, CaRank)
2.0.1 - 2026-02-18¶
Fixed¶
Bundle worker properly for production builds
2.0.0 - 2026-02-18¶
Major restructuring into a monorepo with reusable packages.
Added¶
@calab/core— WASM adapter, export schema, types (PR #42, #43)@calab/compute— worker pool, warm-start cache (PR #43)@calab/io— file parsers, validation, export (PR #43)@calab/community— Supabase DAL, submission logic (PR #43)@calab/tutorials— tutorial definitions, progress persistence (PR #43)@calab/ui— DashboardShell, DashboardPanel, VizLayout (PR #44)CaRank app — trace quality ranking with file import and SNR ranking (PR #44)
Multi-app build pipeline with
combine-distscript and base pathsnpm workspaces monorepo structure (PR #42)
Changed¶
Moved CaTune app into
apps/catune/workspaceRenamed Python package from
catunetocalabRenamed repo references from CaTune to CaLab
Stabilized tooling and codified conventions (Prettier, ESLint, CI) (PR #41)