All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.1.0 - 2024-12-22
- Introduce plugin system for adding new commands to the CLI.
- Add CLI commands:
sereto pdf target
,sereto pdf finding-group
to render partial reports. Render
: add methods for selecting recipe
- Breaking: Implement new directory structure for the project.
- Breaking: Rename "informational" risk to "info".
- Breaking: Add
version_description
attribute toVersionConfig
. - Breaking:
ConvertRecipe
now has in addition to input_format also output_format. - Command
sereto pdf report
no longer renders the partial reports.
- Fix target index in
delete_targets_config
- Set correct indexes for partials (target, finding group)
- Fix path to template when reading metadata
- Fix the issue with internal links inside PDF being broken after running
embed_source_archive
- Remove
argon2-cffi
dependency. This was added to thecrytography
library in version 44.0.0.
0.0.17 - 2024-11-29
- Docs: Markdown building blocks (writing findings and their templates).
- Jinja2: add debug extension to generic env.
- REPL: Add
exit
command +debug
command to toggle debug mode. Show debug mode indicator in the prompt.
- Breaking: Modify the structure of
config.json
. - Update REPL to use
click-repl
. - Remove redundancy in Jinja2 rendering.
- Adjust variables passed when rendering Jinja templates.
- Use
prompt_toolkit
for user input. - Make the default TeX rendering less verbose + fail early.
- Remove command output during rendering. We might still need to show the errors in the future.
- Display command execution time.
Config.filter_*
methods now contain parameterinvert
, which allows to invert the filtering logic.- Avoid overriding TeX files if the content was not changed. This should speed up the rendering process as
latexmk
uses the file modification time to decide whether to recompile the document.
- Fix
Config.filter_*
methods to handle correctly None values.
0.0.16 - 2024-10-28
- Provide helper methods to
VersionConfig
for writing the templates -filter_targets
,filter_dates
, andfilter_people
- Docs: start documenting available building blocks for writing the templates
- Use NamedTuple to represent result of key derivation with Argon2
- Use Pydantic's Secret types when dealing with passwords. This prevents the data from being printed in the logs and tracebacks.
- Rename
BaseConfig
class toVersionConfig
- Implement
__str__
method forDate
class - Make sure the source archive always starts with the directory equal to the project ID, even if the user renamed the directory
- Handle more edge cases when extracting the source archive
- Fix
sereto ls
failing when there is a file in the report directory (too strict argument check inProject.is_project_dir
function). - Fix unpacking unencrypted source archive.
- Use filter data when extracting the source archive from tar. This takes care of the following:
- Strip leading slashes (
/
andos.sep
) from filenames. - Refuse to extract files with absolute paths (in case the name is absolute even after stripping slashes, e.g.
C:/foo
on Windows). - Refuse to extract files whose absolute path (after following symlinks) would end up outside the destination.
- Clear high mode bits (setuid, setgid, sticky) and group/other write bits (
S_IWGRP
|S_IWOTH
). - Refuse to extract links (hard or soft) that link to absolute paths, or ones that link outside the destination.
- Refuse to extract device files (including pipes).
- For regular files, including hard links:
- Set the owner read and write permissions (
S_IRUSR
|S_IWUSR
). - Remove the group & other executable permission (
S_IXGRP
|S_IXOTH
) if the owner doesn’t have it (S_IXUSR
).
- Set the owner read and write permissions (
- For other files (directories), set
mode
toNone
, so that extraction methods skip applying permission bits. - Set user and group info (
uid
,gid
,uname
,gname
) toNone
, so that extraction methods skip setting it.
- Strip leading slashes (
0.0.15 - 2024-10-21
- Use
TypeAdapter
instead ofRootModel
in config module. - Type hints: start using Self
- README: rebranding IT Hub -> Digital Hub
- Improve error message for
Config
andSettings
validation - Prefer annotated types over
Field
- Use more
DirectoryPath
andFilePath
instead of plainPath
- Apply args validation for more function (
@validate_call
) - Refactor:
Config.from_file
->Config.load_from
- Refactor:
Settings.from_file
->Settings.load_from
- Refactor:
FindingsConfig.from_yaml_file
->FindingsConfig.from_yaml
- Refactor: fn
write_conifg
->Config.dump_json
- Refactor class
Report
toProject
, which now contains alsosettings
andpath
attributes - Refactor:
Project.load_runtime_vars
->Config.update_paths
- Refactor:
Project.is_report_dir
->Project.is_project_dir
- Refactor: fn
extract_source_archive
->retrieve_source_archive
- Refactor: fn
untar_sources
->extract_source_archive
- Move
config
module intocli
, as it contains only CLI related functions - Reflect changes in the documentation
- Remove artefacts of
sereto.cli.console
- Remove module
cleanup
- Remove unused functions
get_all_projects
,get_all_projects_dict
, andis_settings_valid
0.0.14 - 2024-10-18
- Code refactoring and cleanup, mainly around source archive handling.
- Validate password retrieved from system keyring against
TypePassword
type. - Clarify fn usage:
Report.get_path
->Report.get_path_from_cwd
.
sereto unpack
can now properly handle extracting encrypted or unencrypted archives.
0.0.13 - 2024-10-09
- Improve REPL and use it as the default command for Docker image.
- Code cleanup: docstrings; move
Console
class tosereto.cli.utils
module andhandle_exceptions
decorator tosereto.exceptions
. - Docs: enable privacy plugin.
- Docs: Set CSP and Referrer-Policy headers through the meta tag.
- Remove support for Python 3.10.
0.0.12 - 2024-09-27
- Add a new command
sereto decrypt
to extract the project sources fromsource.sereto
file. - Add a new command
sereto unpack
to extract the project sources from a report's PDF file.
- Keyring: change the location, as the username should not be empty.
- Bump version of keyring and pypdf
0.0.11 - 2024-09-20
- Encrypt the attached source archive
- Docker: use version as tag, format default settings.json
- CI/CD: Fix invalid
${{ github.ref_name#v }}
syntax
0.0.10 - 2024-09-20
- Implement REPL (Read-Eval-Print-Loop) for the CLI.
- Extract only relevant part of the changelog into GH release.
- Docs: Update installation instructions related to Docker and DockerHub.
- Adjust Dependabot to use
versioning-strategy: "increase"
.
0.0.9 - 2024-09-08
- CI/CD: Try to fix Docker pipeline.
- CI/CD: Add checkout action to make the CHANGELOG.md file available.
0.0.8 - 2024-09-08
- CI/CD: Build and push Docker image to Docker Hub.
- Include notes from CHANGELOG.md into GH release notes.
0.0.7 - 2024-09-07
- Tests: Add tests for the
sereto new
command. - Docs: Add section about
sereto.cli.cli
, andsereto.types
to references.
- README: Add PyPI badge, fix link to the installation section in the documentation.
- Docs: Updated the Usage section, especially part "Create Report".
- Define annotated types in separate file.
- CI/CD: Add CNAME file to stop overwriting the custom domain in the GitHub Pages deployment.
0.0.6 - 2024-09-04
- Define a security policy in SECURITY.md file.
- Docs: Add security considerations to the documentation.
- Docker: Update Dockerfile to use low privileged user for running the application.
- README: Getting started section, mainly pointing to the documentation.
0.0.5 - 2024-09-04
- CI/CD: Don't upload the package to TestPyPI, pushing the same version again makes the pipeline fail.
- README: Use different image for dark / light mode. Hopefully this will not break the PyPI rendering.
- README: Add badge with a link to the documentation.
- Docs: Move development instructions from README to the documentation.
- Docs: Adjust link since original content from
report_structure.md
was moved toproject_files.md
.
0.0.4 - 2024-09-03
- Update image in README.md to absolute URL. This is necessary for the PyPI to render the image correctly.
- Add pipeline for building
- Update docs
0.0.2, 0.0.3 - 2024-09-02
We registered a dummy package to PyPI to test the publishing. Therefore a version increment was necessary.
Initial version