Skip to content

Releases: strictdoc-project/strictdoc

Diff screen child relations, faster parallelization on macOS, HTML2PDF fixes, performance improvements

07 Jan 08:10
55dbb3f
Compare
Choose a tag to compare

This release several enhancements, bug fixes, and performance improvements:

  • The Diff screen now supports child relations. Special thanks to @mplum for contributing the core patch.
  • On macOS, the parallelization algorithm now uses "fork" instead of "spawn", leading to a good performance boost.
  • The source file traceability HTML is now incrementally generated, re-rendering only when the source file or its related requirements are modified.
  • The HTML2PDF feature excludes included documents when creating a bundled document. The assumption is that a user is only interested in seeing the final including documents, not the included standalone documents.
  • Asset search optimization: Asset-finding code now filters out irrelevant directories early, avoiding repeated and unnecessary searches, improving efficiency.

What's Changed

  • Bump version to 0.4.0 by @stanislaw in #2038
  • html2pdf: do not export included documents by @stanislaw in #2040
  • tests/integration: move Excel and ReqIF tests to features/ by @stanislaw in #2042
  • Performance: Use 'fork' method for creating processes on macOS by @stanislaw in #2044
  • document_finder: improve the performance of finding assets by @stanislaw in #2043
  • Code climate: source file generator: encapsulate writing to file better by @stanislaw in #2045
  • traceability_index: many_to_many_set: add link edges support by @stanislaw in #2046
  • tests/end2end: helpers: ensure more reliable scrolling when moving grammar fields by @stanislaw in #2047
  • traceability_index: remove legacy SDocNodeConnections by @stanislaw in #2048
  • traceability_index: improvements in the incremental generation by @stanislaw in #2049
  • traceability_index: incremental generation of source files by @stanislaw in #2050
  • traceability_index: incremental generation that does not modify file dates by @stanislaw in #2051
  • Added 'child-relation' to diff view for enhanced change impact visualization by @mplum in #2052
  • HTML2PDF: update to include latest fixes, exclude included documents from bundle document by @stanislaw in #2053
  • Diff: Recognize when child relations are modified by @stanislaw in #2054
  • Bump version to 0.5.0 by @stanislaw in #2055

Full Changelog: 0.4.0...0.5.0

Language-aware C++ parsing, interface with Doxygen, automatic version/date document meta information

25 Dec 17:44
Compare
Choose a tag to compare

This release introduces language-aware tracing between requirements and C++ source code.

Currently, only C++ functions can be traced using a marker like @relation(REQ-1, scope=function). The ability to add markers to classes has not yet been implemented.

A new export format has been added to generate a Doxygen tagfile for a documentation tree. When the tagfile is registered in the Doxygen configuration, requirements can be referenced using Doxygen keywords. For example: \relation{REQ-1, scope=function}. Special thanks to @johanenglund for contributing the idea and helping to implement the solution.

The @-macros @GIT_VERSION, @GIT_BRANCH, @GIT_COMMIT_DATE, and @GIT_COMMIT_DATETIME were introduced to simplify the automatic insertion of document version information and publication dates into published documents.

An edge case for reading source files has been addressed. StrictDoc will now issue a warning if it encounters a binary file instead of a source code file, preventing a crash. [Contributed by @haxtibal]

A user has contributed an example demonstrating how requirements can be generated into an Excel questionnaire for users to fill out, enabling requirements compliance tracking. The example is located at tests/integration/scripting_examples/questionnaires/. [Contributed by @BenGardiner]

Additionally, a minor HTML2PDF formatting issue has been resolved. Previously, the RST admonitions in StrictDoc's own documentation were not rendered correctly when spanning across two pages.

What's Changed

  • Feature: Export Doxygen TAGFILE with a map from requirements to StrictDoc documentation by @stanislaw in #2011
  • bugfix: file_traceability_index: relax the assert on a function definition by @stanislaw in #2015
  • doxygen: Change compound type and file suffix by @johanenglund in #2016
  • marker_parser: Add support for curly braces by @johanenglund in #2017
  • backend/sdoc_source_code: recognize C++ class declarations/definitions by @stanislaw in #2018
  • backend/sdoc_source_code: C++: disambiguate overloaded constructors by @stanislaw in #2019
  • export/html: add .admonition-title as data-no-hanging-selectors for PDF by @stanislaw in #2020
  • docs: update release notes, roadmap, document Doxygen tagfile by @stanislaw in #2021
  • docs: deploy strictdoc's own docs to Read the Docs by @stanislaw in #2023
  • docs: roadmap diagram: update backlog by @stanislaw in #2024
  • backend/sdoc_source_code: C++: recognize functions returning references by @stanislaw in #2027
  • Bugfix: project_statistics: fix the "Sections without any text" metric by @stanislaw in #2028
  • docs: update FAQ by @stanislaw in #2029
  • Code climate: tests/integration: reorganize the test folders around features/ by @stanislaw in #2032
  • export/html: document meta information: recognize @GIT_VERSION and @GIT_BRANCH markers by @stanislaw in #2035
  • Skip binaries in source tree rather than failing by @haxtibal in #2033
  • test/integration: add custom script for exporting questionnaires by @BenGardiner in #2034
  • export/html: document meta information: recognize @GIT_COMMIT_DATE and @GIT_COMMIT_DATETIME markers by @stanislaw in #2036

New Contributors

Full Changelog: 0.3.0...0.4.0

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