fix: Continuous harden — OCC, load resilience, metadata, snippets - #20
Merged
Conversation
Preserve project_id/updated_at on PageDetail so the UI does not wipe grouping after getPage. Fail soft on boot (allSettled), guard cell/panel mutations, clamp fontScale, bound title/project_id, and colorize TikZ only within the same option bracket. Co-Authored-By: Kimi Code <noreply@example.com>
Serialize page autosaves and always refresh version from the server; retry once on 409 using conflict current. Make replace_document OCC atomic under the event-store lock. Refresh version after diagram cell inserts, restore, and export freezes. Fix fit_line/simple_table templates and harden lab-canvas error paths. Co-Authored-By: Kimi Code <noreply@example.com>
Persist unsaved lab cell source before leaving lab mode (toolbar, shortcuts, command palette, settings, and unmount). Resync page latex/version after flush. insert/update cell APIs return version for OCC; snippets and templates pass version on replace. Co-Authored-By: Kimi Code <noreply@example.com>
move_cell includes event-log version so lab mode can keep activeVersion aligned without a full page reload. Co-Authored-By: Kimi Code <noreply@example.com>
Rewrite the project README as a research-oriented handbook: full TOC, gallery assets, mermaid event-sourcing and layered diagrams, PyPI/CLI/API surfaces, twelve diagram presets, security invariants, and citation block. Sober monochrome GitHub badges and figures; no emoji. Co-Authored-By: Kimi Code <noreply@example.com>
Capture live workbench, diagrams, parameters, lab mode, settings and cells from Vite+API; expand architecture mermaid diagrams; document keyboard shortcuts; add README.es.md as full Spanish twin with shared gallery assets and GitHub badge set. Co-Authored-By: Kimi Code <noreply@example.com>
Translate remaining mixed English paragraphs, feature rows, module map, export tables, roadmap status labels, contributing and acknowledgements into academic Spanish while keeping code and identifiers intact. Co-Authored-By: Kimi Code <noreply@example.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.
Summary
Production hardening pass after v0.3.0: fix real data-loss races, API metadata gaps, and catalog bugs.
Correctness / data loss
activeVersionon success, retry once on 409 using servercurrentEventStore.append(..., expected_version=)under page lock (no TOCTOU between check and write)insertCell, time-travel restore, and export freezeAPI / UI resilience
PageDetailincludesproject_id+updated_at(frontend no longer forcesproject_id: null)Promise.allSettledso one failing endpoint does not blank the whole UILABLOG_PORTparseCatalog
fit_line(.formatcollision with f-string braces)simple_tableextra\\producing broken LaTeXTest plan
pytest -q— 209 passed, coverage ≥80%cd ui && npm test -- --run— 26 passednpx tsc --noEmit+ pre-commit hooks (ruff, mypy, tsc, oxlint)