Skip to content

Releases: strictdoc-project/strictdoc

Requirements and C source files: Resolve definition markers from declarations markers

21 Nov 20:36
32a0ba7
Compare
Choose a tag to compare

This release includes an enhancement to the feature for tracing requirements to C source code.

From now on, if a @relation marker is specified in a C function declaration, StrictDoc will perform its "magic" and automatically connect the referenced requirement to the corresponding C function definition. This allows a @relation marker to be placed in the main documentation block, typically located above C function declarations, while ensuring the requirement is also linked to the function definition.

What's Changed

  • Bump version to 0.2.1 by @stanislaw in #1999
  • backend/sdoc_source_code: recognize function declarations in .c and h files by @stanislaw in #2000
  • backend/sdoc_source_code: make @relation backwards-compatible without the language parsing by @stanislaw in #2002
  • backend/sdoc_source_code: C language: resolve definition markers from declarations markers by @stanislaw in #2003
  • Code climate: backend/sdoc_source_code: rename parts -> functions by @stanislaw in #2005
  • tests/end2end: disable HTML2PDF test on macOS for now by @stanislaw in #2006
  • Code climate: remove unused pylint rule disabler by @stanislaw in #2004
  • tests/integration: make the cache folder local to a test folder by @stanislaw in #2008
  • Bump version to 0.3.0 by @stanislaw in #2010

Full Changelog: 0.2.1...0.3.0

LINKing to documents and Diff/Changelog autoescaping fix

11 Nov 21:24
Compare
Choose a tag to compare

This release includes a new feature, a bug fix, and some documentation updates.

  • The [LINK: ...] feature now supports linking to documents by UID. [@haxtibal]
  • HTML escaping was fixed on the Diff/Changelog screen. [@haxtibal]

The documentation now includes two new pages:

  • The "Feature Map" document provides a high-level overview of the major StrictDoc features from the user's perspective.
  • The Troubleshooting document offers advice on clearing the user cache, one of the common solutions to user issues. We plan to expand this section with more tips over time.

What's Changed

Full Changelog: 0.2.0...0.2.1

Improved tracing in C, Python, and general code parsers

04 Nov 19:50
Compare
Choose a tag to compare

This release introduces several enhancements to the source code processing introduced in release 0.1.0.

The backend now supports improved function tracing in C, Python, and general parsing code:

  • Forward ranges to C functions now include the top comment.
  • Each range type is displayed in the output HTML.
  • The C source code reader has been updated to support file-level scoping.
  • The source code reader now caches parsed objects to disk, improving reading performance.
  • Proper handling of functions inside nested Python classes has been implemented, allowing syntax like Foo.Bar.do_baz. Thanks to @haxtibal for contributing this enhancement.

Additionally, caching has been centralized, and the cache directory is now configurable. The project configuration file now supports a cache_dir option, which can be set to values such as ./output/build. This setting can help make caching artifacts visible alongside documentation artifacts.

What's Changed

  • Forward functions: Search all parent classes by @haxtibal in #1974
  • backend/sdoc_source_code: enable caching of source files by @stanislaw in #1975
  • export/html2pdf: use the cache dir from project config by @stanislaw in #1976
  • export/html: html_templates: use the cache dir from project config by @stanislaw in #1977
  • git_client: use the cache dir from project config by @stanislaw in #1978
  • tasks: server: set --output-path to a local cache folder by @stanislaw in #1979
  • backend/sdoc_source_code: general source code reader: support scope=file by @stanislaw in #1980
  • backend/sdoc_source_code: each range is completed with a type by @stanislaw in #1981
  • backend/sdoc_source_code: forward C function relations: include the top comment to the range by @stanislaw in #1982
  • backend/sdoc_source_code: C reader: recognize scope=file by @stanislaw in #1983

Full Changelog: 0.1.0...0.2.0

Language-specific parsers for Python and C. Tracing requirements to functions and classes.

03 Nov 16:37
5ac32b9
Compare
Choose a tag to compare

This backward-compatible release introduces several new features for tracing requirements to source files:

  • StrictDoc now integrates with Tree-sitter, enabling it to parse multiple programming languages. Using AST information, it achieves more precise tracing of requirements to source code.

  • Language-specific parsers for Python and C have been added, allowing functions (in C and Python) or classes (in Python) to be linked to requirements.

  • Both forward linking of requirements to source files and backward linking of source files to requirements are supported. These features can be used independently or together within the same project.

With this release, we are also transitioning to a more semantic versioning-oriented release scheme. From now on, the MAJOR.MINOR.PATCH version components will be maintained according to the recommendations of the semantic versioning specification.

What's Changed

  • Bump version to 0.0.60 by @stanislaw in #1962
  • Feature: Parsing source code functions into requirements graph by @stanislaw in #1956
  • backend/sdoc_source_code: calculate coverage for forward range and function markers by @stanislaw in #1964
  • file_traceability_index: deduplicate requirement links based on functions by @stanislaw in #1965
  • backend/sdoc_source_code: adjust the marker parser to the new @relation syntax by @stanislaw in #1966
  • backend/sdoc_source_code: make the default parser recognize @relation by @stanislaw in #1967
  • backend/sdoc_source_code: support "Class.function" syntax for forward links to Python code by @stanislaw in #1968
  • backend/sdoc_source_code: support scope=class by @stanislaw in #1969
  • html2pdf: update to the newer Chrome web driver API by @stanislaw in #1971
  • backend/sdoc_source_code: enable scope=file marker for Python by @stanislaw in #1970

Full Changelog: 0.0.60...0.1.0

Bugfix release: Project Statistics queries autoescaping fix, query failures on the search screen, small step/bugfix towards supporting TAGs in Web UI

26 Oct 11:03
Compare
Choose a tag to compare

What's Changed

  • pyproject.toml: remove a some unneeded artifacts from the release tar by @stanislaw in #1948
  • Regenerate CHANGELOG by @stanislaw in #1949
  • docs: migrate all FREETEXT to TEXT by @stanislaw in #1950
  • pyproject.toml: remove unneeded lxml dependency by @stanislaw in #1952
  • Fix generated search URLs for project statistics by @haxtibal in #1954
  • Code climate: sdoc_source_code: rename all occurrences: pragma -> marker by @stanislaw in #1955
  • Prevent query failure when node is missing requested field by @mplum in #1958
  • Add 'TAG' as a supported fieldtype for requirement nodes by @mplum in #1959

New Contributors

Full Changelog: 0.0.59...0.0.60

Automatic escaping of Jinja templates, ReqIF improvements, HTML2PDF improvements, passthrough command deprecated

13 Oct 17:35
78f146c
Compare
Choose a tag to compare

This release includes several important improvements. Thanks to @haxtibal for implementing and testing many of the implemented changes.

  • Fixed multiple issues related to the handling of the UID field's format and accepted characters, both on its own and when used as part of LINK and ANCHOR tags. [@haxtibal]

  • Implemented a more consistent and unified approach to escaping Jinja templates. With this change, the Jinja templates that StrictDoc uses for rendering content are now automatically escaped, except for a few known edge cases that have been handled separately. For more details, see the "HTML Escaping" section of the Design Document, which describes the rationale and approach taken. [@haxtibal]

  • Extended the HTML2PDF feature to support the --generate-bundle-document option, which allows generating a single PDF document from all documents in an SDoc documentation tree.

  • Additionally, a project configuration option was added to specify a custom path to the ChromeDriver used by the HTML2PDF printer. [@haxtibal]

  • Enhanced the SDoc-ReqIF-SDoc roundtrip to include relation roles such as Refines, Implements, etc. These roles are now recognized in both directions. This feature was requested by a single user and requires further testing.

  • Deprecated the passthrough command. All passthrough functionality has been moved to the export command under the option --formats=sdoc. Users are encouraged to switch to the export command, as using passthrough will now trigger a deprecation warning. [@haxtibal]

  • Fixed a bug related to editing custom (non-requirement) nodes and adding links between them, based on a report by @elfman2.

  • The Python 3.7 support was removed. The lowest Python baseline will now be 3.8 for some time.

What's Changed

Full Changelog: 0.0.58...0.0.59

0.0.58

25 Jun 18:42
c190b82
Compare
Choose a tag to compare

This is a release with a single fix and a minor documentation update.

The manage auto-uid command is now compatible with grammars that define the UID field as REQUIRED: True. Previously, StrictDoc would raise a validation message if the auto-uid command was run against a document with UID defined as a required field but containing nodes without UID. The new behavior allows the auto-uid command to operate without validation and correctly creates a new UID for the node. Thanks to @simhein for reporting this issue.

@haxtibal contributed a patch to the User Guide that explains the StrictDoc convention of how the single-line (meta information) fields should be used compared to the multiline fields, such as STATEMENT, RATIONALE, COMMENT, etc. Quoting the key part:

Each grammar element must have exactly one content field named STATEMENT, DESCRIPTION or CONTENT. The content field plays a key role in the HTML user interface as well as other export formats.

All fields before the content field are considered meta information. Meta information fields are assumed to be single-line. The content field and all following fields accept single-line and multiline strings.

See the updated User Guide for more details.

What's Changed

Full Changelog: 0.0.57...0.0.58

FREETEXT-TEXT migration, adding LINKs to arbitrary nodes, improved validation messages

23 Jun 13:25
Compare
Choose a tag to compare

This release contains a significant, non-breaking change that affects the entire StrictDoc codebase and the SDoc data model: the FREETEXT-TEXT migration.

The description of the migration and the migration paths are described in the User Guide, https://strictdoc.readthedocs.io/en/stable/strictdoc_01_user_guide.html#freetext-text-migration-june-2024.

StrictDoc_Workspace-FREETEXT-TEXT drawio

/cc @adamgreig @BenGardiner @bernhard-tuvsud @dahbar @elfman2 @fniu @gregshue @haxtibal @i-interprete-on-the-fly @kestewart @lochsh @nicpappler @richardbarlow @RobertoBagnara @simhein @vik378


Other changes in this release:

  • The validation messages for the uniqueness of MID fields were improved for the Document, Section and Requirement/Text nodes. Thanks to @bernhard-tuvsud for the improvement suggestion.

  • Due to the FREETEXT-TEXT migration, it is now possible to add LINKs to arbitrary nodes, such as REQUIREMENT and TEXT. Previously, LINKs could be added only to SECTION nodes. Thanks to @haxtibal for contributing the initial implementation.

  • The UI validations have been added for SingleChoice and MultipleChoice fields. Thanks to @haxtibal for contributing the multiple choice field validation.

  • The experimental Graphviz/Dot traceability graph generator has been removed because this feature didn't show much value, mainly due to the static and non-programmable nature of PDF and SVG outputs produced by Graphviz.


What's Changed

  • UI: Form validation: SingleChoice and REQUIRED fields by @stanislaw in #1829
  • backend/sdoc: validate grammar from file like a normal grammar by @stanislaw in #1831
  • backend/sdoc: instantiate doc/grammar meta models at start time by @stanislaw in #1832
  • backend/sdoc: grammar: teach SDocNodeField to parse FreeText parts by @stanislaw in #1833
  • backend/reqif: --reqif-multiline-is-html: extend the integration test by @stanislaw in #1834
  • tests/integration: add an RST code block test just in case by @stanislaw in #1838
  • backend/sdoc: introduce [TEXT] node by @stanislaw in #1837
  • Feature: LINK to requirements and custom nodes (static export only for now) by @haxtibal in #1835
  • Code climate: remove useless init.py files by @stanislaw in #1840
  • Code climate: Introduce THIS_TEST_FOLDER to increase the portability of most itests by @stanislaw in #1842
  • Feature: [LINK] from all fields of Requirement or other nodes by @stanislaw in #1843
  • export/html, LINK: referenced node shows an anchor link if referenced with [LINK] by @stanislaw in #1844
  • UI: requirement_form_object: improve handling of multiline field boundary by @stanislaw in #1845
  • Code climate: tests/end2end: anchors -> LINK_AND_ANCHOR by @stanislaw in #1846
  • docs: release notes for 0.0.56 by @stanislaw in #1847
  • export/html and UI: Rendering [TEXT] node, basic end2end tests by @stanislaw in #1848
  • UI: Delete section/node: Add validations to the confirmation window by @stanislaw in #1849
  • backend/reqif: when --reqif-multiline-is-xhtml, generate FREETEXT spec type attribute as XHTML by @stanislaw in #1851
  • HTML2PDF: Fail early if feature is not enabled by @haxtibal in #1850
  • UI: Create node: parse and validate LINK/ANCHOR by @stanislaw in #1852
  • UI: Create node: parse, validate, and render LINK/ANCHOR by @stanislaw in #1854
  • html: Rename "parent relations" to "parents" and "child relations" to "children" by @haxtibal in #1855
  • UI: Delete node: incoming links to anchors validation by @stanislaw in #1859
  • UI: Create/Update/Delete node: Implement all existing cases related to LINK/ANCHOR by @stanislaw in #1862
  • UI: HTML markup changes and adjust remaining tests, removing dependencies on FREETEXT by @stanislaw in #1866
  • UI: Diff screen: Ensure escaping of requirement fields by @stanislaw in #1867
  • backend/sdoc: Document: remove .free_texts by @stanislaw in #1868
  • Node machine identifiers (MID): improve uniqueness validation message by @stanislaw in #1869
  • Bump version to 0.0.57a2 by @stanislaw in #1870
  • Remove Graphviz and DocumentDotGenerator by @stanislaw in #1873
  • UI: Edit grammar element relations form: TEXT node can have no relations by @stanislaw in #1871
  • UI: Ensure that documents with HTML markup get rendered correctly when edited by @stanislaw in #1872
  • tasks: remove pylint and flake8, create aliases for most common tasks by @stanislaw in #1874
  • docs: prepare the release notes for FREETEXT-TEXT migration by @stanislaw in #1875
  • UI: Node form validation: allow empty SingleChoice fields when REQUIRED is False by @stanislaw in #1877
  • UI: Support MultipleChoice in requirement form by @haxtibal in #1878
  • UI: Do not auto-generate UID for TEXT nodes for now by @stanislaw in #1879
  • docs: update release notes by @stanislaw in #1880
  • docs: User Guide: implement FREETEXT-TEXT changes by @stanislaw in #1881
  • cli: passthrough: --free-text-to-text option to migrate FREETEXT->TEXT by @stanislaw in #1882
  • docs: User Guide: describe FREETEXT-TEXT migration path by @stanislaw in #1883
  • backend/sdoc: writer: --free-text-to-text for SECTIONs by @stanislaw in #1886
  • export/html: update hints on node control by @mettta in #1885
  • UI: TRM: Exclude text nodes from the list by @stanislaw in #1893

New Contributors

Full Changelog: 0.0.56...0.0.57

Bugfix release: Edge cases of [GRAMMAR] and Composable Documents, ReqIF, HTML2PDF UTF8 support on Windows

02 Jun 21:38
06ce5cd
Compare
Choose a tag to compare

This is an intermediate bugfix release before the release which will contain major changes.

The following issues have been fixed:


What's Changed

  • Bump version 0.0.54 by @stanislaw in #1776
  • Technical debt: document_screen_view_object: encapsulate render moved node update by @stanislaw in #1778
  • Composable Documents: copy assets in a redundant way for included documents by @stanislaw in #1780
  • Bump version to 0.0.55a1 by @stanislaw in #1781
  • Code climate: fix mypy version guard by @stanislaw in #1782
  • Code climate: enable attr-defined and no-any-return check by @stanislaw in #1783
  • Code climate: enable remaining mypy checks by @stanislaw in #1784
  • Code climate: sdoc/models/document: fix no-untyped-call by @stanislaw in #1785
  • Code climate: sdoc/models/document: fix no-untyped-def by @stanislaw in #1786
  • Code climate: sdoc/models/section: remove unused code by @stanislaw in #1787
  • backend/reqif: reqif_to_sdoc: simplify iteration by @stanislaw in #1789
  • backend/reqif: reqif_to_sdoc: simplify iteration further by @stanislaw in #1791
  • CI: drop Python 3.7 from macOS jobs by @stanislaw in #1793
  • backend/reqif: export: --multiline-is-xhtml option by @stanislaw in #1792
  • backend/reqif: reqif_to_sdoc_converter.py: fix arg-type issues by @stanislaw in #1794
  • backend/reqif: reqif_to_sdoc_converter.py: fix no-untyped-call issues by @stanislaw in #1795
  • backend/reqif: fix the XHTML namespace by @stanislaw in #1796
  • backend/reqif: update to the latest ReqIF library by @stanislaw in #1797
  • pickle: catch AttributeErrors on schema changes, raise AssertionError otherwise by @stanislaw in #1798
  • pickle_cache: reuse between Document and DocumentGrammar for caching both by @stanislaw in #1799
  • backend/reqif: --reqif-enable-mid option to allow bi-directional IDENTIFIER-MID mapping by @stanislaw in #1800
  • backend/reqif: --reqif-import-markup option to specify HTML or other options when importing by @stanislaw in #1802
  • Bump version to 0.0.55 by @stanislaw in #1803
  • tests/integration: add several tests to ensure auto-uid / composable documents intersection by @stanislaw in #1805
  • Composable documents: edge case when a single document path is provided for a document that depends on other documents by @stanislaw in #1807
  • backend/reqif: exporting grammar types by @stanislaw in #1809
  • backend/reqif: further tweaks for multi-document ReqIF bundles by @stanislaw in #1811
  • Experimental features: Nestor requirements graph visualizer by @stanislaw in #1810
  • Code climate: document_finder: fix all "no-untyped-call" mypy issues by @stanislaw in #1812
  • Code climate: document_finder: fix all "no-untyped-def" mypy issues by @stanislaw in #1813
  • Code climate: parallelizer: fix all "no-untyped-call" mypy issues by @stanislaw in #1814
  • Bump version to 0.0.56a1 by @stanislaw in #1815
  • html2pdf: specify UTF-8 encoding when writing HTML file by @stanislaw in #1816
  • Code climate: strictdoc/cli/main.py: fix all mypy issues by @stanislaw in #1817
  • Code climate: strictdoc/helpers/parallelizer.py: fix all mypy issues by @stanislaw in #1818
  • Code climate: strictdoc/backend/sdoc/models/node.py: fix no-untyped-call and no-untyped-def mypy issues by @stanislaw in #1819
  • pyproject.toml: update python-datauri by @DomenicP in #1820
  • backend/sdoc: finish migration, removing all instances of REFS by @stanislaw in #1821
  • backend/sdoc: SDocField: improve handling of single/multiline fields by @stanislaw in #1822
  • backend/sdoc: remove the last few occurences of REFS by @stanislaw in #1824
  • cli: remove the legacy argument: --experimental-enable-file-traceability by @stanislaw in #1825
  • Code climate: backend/sdoc: free_text: fix all mypy issues by @stanislaw in #1826
  • backend/sdoc: allow using "DESCRIPTION" or "CONTENT" field instead of "STATEMENT" by @stanislaw in #1827
  • Bump version to 0.0.56a3 by @stanislaw in #1828

New Contributors

Full Changelog: 0.0.54...0.0.56

ReqIF export/import improvements

15 May 21:03
Compare
Choose a tag to compare

What's Changed

  • Bump version 0.0.54 by @stanislaw in #1776
  • Technical debt: document_screen_view_object: encapsulate render moved node update by @stanislaw in #1778
  • Composable Documents: copy assets in a redundant way for included documents by @stanislaw in #1780
  • Bump version to 0.0.55a1 by @stanislaw in #1781
  • Code climate: fix mypy version guard by @stanislaw in #1782
  • Code climate: enable attr-defined and no-any-return check by @stanislaw in #1783
  • Code climate: enable remaining mypy checks by @stanislaw in #1784
  • Code climate: sdoc/models/document: fix no-untyped-call by @stanislaw in #1785
  • Code climate: sdoc/models/document: fix no-untyped-def by @stanislaw in #1786
  • Code climate: sdoc/models/section: remove unused code by @stanislaw in #1787
  • backend/reqif: reqif_to_sdoc: simplify iteration by @stanislaw in #1789
  • backend/reqif: reqif_to_sdoc: simplify iteration further by @stanislaw in #1791
  • CI: drop Python 3.7 from macOS jobs by @stanislaw in #1793
  • backend/reqif: export: --multiline-is-xhtml option by @stanislaw in #1792
  • backend/reqif: reqif_to_sdoc_converter.py: fix arg-type issues by @stanislaw in #1794
  • backend/reqif: reqif_to_sdoc_converter.py: fix no-untyped-call issues by @stanislaw in #1795
  • backend/reqif: fix the XHTML namespace by @stanislaw in #1796
  • backend/reqif: update to the latest ReqIF library by @stanislaw in #1797
  • pickle: catch AttributeErrors on schema changes, raise AssertionError otherwise by @stanislaw in #1798
  • pickle_cache: reuse between Document and DocumentGrammar for caching both by @stanislaw in #1799
  • backend/reqif: --reqif-enable-mid option to allow bi-directional IDENTIFIER-MID mapping by @stanislaw in #1800
  • backend/reqif: --reqif-import-markup option to specify HTML or other options when importing by @stanislaw in #1802

Full Changelog: 0.0.54...0.0.55