Skip to content

Lazy loading for large documents

Latest

Choose a tag to compare

@stanislaw stanislaw released this 11 Aug 21:27
· 13 commits to main since this release
a03c4ec

This release contains the following enhancements:

1) Both the web interface and the static HTML export now render large
documents in lazily loaded chunks. Documents containing more than
lazy_document_loading_threshold nodes (200 by default, configurable in
strictdoc_config.py, 0 disables chunking) initially load only the first chunk
of nodes together with the table of contents, and the remaining chunks are
fetched automatically as the user scrolls. This keeps documents with
thousands of requirements responsive both in the editing GUI and in the
static export. Lazily loaded documents preserve the content currently
visible to the user when placeholders are replaced by rendered chunks of
different heights, viewport positioning is coordinated with node creation,
deletion, moving, and editing, and the table of contents stays in sync with
the user's scroll position instead of racing a lazy chunk load.

2) The JUnit XML test report reader now maps testcase <properties> to
fields on generated TEST_RESULT nodes.

3) Fixed: the TABLE VIEW now renders the Relation cell as non-editable for node
types whose grammar does not declare relations.

4) A "Restore UID" button appears next to a requirement's UID field when a
rename is rejected because the requirement still has parent/child relations,
letting the user put the original UID back without retyping it or closing the
form.

5) Fixed: the diff tab no longer fails to render when viewing a static page
export.

6) Fixed: a table caption no longer inflates the table's width when printing.

7) Fixed: the node edit form's tab badge now counts invalid fields instead
of error messages, so it no longer overcounts when a single field has
multiple validation errors.

8) Fixed: node dropdown menus near the bottom of the scroll area are now
kept fully visible instead of being clipped.


What's Changed

  • feat(test-reports): map JUnit testcase properties by @LunaMeerkats in #3072
  • docs: document favicon_path and custom_css_path project config options by @mettta in #3078
  • chore: bump github/codeql-action from 4 to 4.37.3 in the github-actions group by @dependabot[bot] in #3079
  • docs: restructure task.md WHY/HOW sections to match task template by @mettta in #3081
  • fix: keep node dropdown menus fully visible near the bottom of the scroll area by @mettta in #3082
  • fix: count invalid fields, not error messages, in form tab badge by @mettta in #3084
  • feat: add UID restore button for rejected relation-blocked renames by @mettta in #3085
  • Fix editable Relation field for nodes without relations by @mettta in #3080
  • chore: add two basic writing guidelines to the Dev Guide and AGENTS by @stanislaw in #3086
  • chore: bump github/codeql-action from 4.37.3 to 4.37.6 in the github-actions group by @dependabot[bot] in #3090
  • chore: add Nix flake by @stanislaw in #3091
  • feat(server): lazily load large documents in chunks in the web GUI by @mettta in #3071
  • feat: lazy loading of static HTML documents by @stanislaw in #3093
  • chore: ignore any '_draft/' inside developer folder by @mettta in #3096
  • feat(export/html): stabilize scroll position for lazy chunks in static export by @mettta in #3095
  • fix(export/html): stop table caption from inflating table width in print by @mettta in #3097
  • fix(export/html): fix TOC navigation race with stale lazy chunk loads by @mettta in #3098
  • fix(export/html): Fix diff tab not rendering with static page export by @kratochvil-jan in #3099
  • chore: scope hatch build include to per-target (sdist vs wheel) by @stanislaw in #3101
  • release: bump version to 0.28.0 by @stanislaw in #3100

New Contributors

Full Changelog: 0.27.1...0.28.0