Commit graph

3556 commits

Author SHA1 Message Date
Igor Ilic
fbe0b6e2ce
Merge branch 'dev' into fix-only-context 2025-09-25 11:50:41 +02:00
EricXiao
a57c5d7b05
Merge branch 'dev' into feat/add-pdfproloader 2025-09-25 17:48:29 +08:00
Nikoloz Turazashvili
1fc8e5ad08 feat: Add Windows compatibility and error handling improvements
- Fix Windows process termination using taskkill instead of killpg
- Add Windows-compatible npm detection and commands
- Fix Next.js SSR error with dynamic imports
- Improve cloud API error handling for local mode
- Add frontend connection retry mechanism with 5 retries
- Fix string formatting in prompt loading
- Add cognee CLI entry point alongside cognee-cli

Resolves Windows compatibility issues and improves error handling
across CLI and frontend components.
2025-09-25 03:51:01 +07:00
Vasilije
300b774252
feat: Revise README for installation and CLI usage (#1463)
Updated installation instructions and usage examples in README.

<!-- .github/pull_request_template.md -->

## Description
<!--
Please provide a clear, human-generated description of the changes in
this PR.
DO NOT use AI-generated descriptions. We want to understand your thought
process and reasoning.
-->

## Type of Change
<!-- Please check the relevant option -->
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ X] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [ ] **I have tested my changes thoroughly before submitting this PR**
- [ ] **This PR contains minimal changes necessary to address the
issue/feature**
- [ ] My code follows the project's coding standards and style
guidelines
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added necessary documentation (if applicable)
- [ ] All new and existing tests pass
- [ ] I have searched existing PRs to ensure this change hasn't been
submitted already
- [ ] I have linked any relevant issues in the description
- [ ] My commits have clear and descriptive messages

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-24 20:46:30 +02:00
Vasilije
9c3fa87e5c
Revise README for SDK and use-case links
Updated README to reflect changes in SDK usage and links.
2025-09-24 20:29:09 +02:00
Vasilije
2437892766
Remove beta launch announcement from README
Removed announcement for Cogwit beta launch.
2025-09-24 20:26:30 +02:00
Vasilije
9705b09ec9
Revise CLI commands section in README
Reorganize CLI usage section in README for clarity.
2025-09-24 20:25:47 +02:00
Vasilije
6a75a1646c
Update README.md 2025-09-24 20:20:54 +02:00
Vasilije
c4b2ce0d1a
Revise README for self-hosted and hosted platform
Updated sections on self-hosted package and hosted platform.
2025-09-24 20:19:58 +02:00
Vasilije
8adfa8e2a5
Simplify data sync instructions in README
Updated instructions for syncing data with Cogwit API.
2025-09-24 20:18:23 +02:00
Vasilije
e286949af8
Restore contributing section in README.md 2025-09-24 20:17:25 +02:00
Vasilije
e62339d333
Revise cognee usage details in README
Updated the features and benefits of using cognee in the README.
2025-09-24 20:16:31 +02:00
Vasilije
867e216bef
Enhance README with cognee usage details
Expanded the 'Using cognee' section with details on self-hosted package and production readiness.
2025-09-24 20:12:40 +02:00
Vasilije
311085b2f3
Update usage instructions in README
Clarified instructions for using the self-hosted package and deployment.
2025-09-24 20:07:22 +02:00
Vasilije
694fc7fb5b
Remove contributors section from README
Removed contributors section from README.
2025-09-24 20:06:19 +02:00
Vasilije
99efc0b2b9
Update README with usage and installation details
Added section on using Cognee and installation instructions.
2025-09-24 19:58:30 +02:00
Vasilije
7620f46820
Change section headers from H2 to H4 2025-09-24 19:43:25 +02:00
Vasilije
2769b5b9ef
feat: Revise README for installation and CLI usage
Updated installation instructions and usage examples in README.
2025-09-24 19:42:27 +02:00
Vasilije
384af0fff2
chore: update pr template (#1462)
<!-- .github/pull_request_template.md -->

## Description
<!-- 
Please provide a clear, human-generated description of the changes in
this PR.
DO NOT use AI-generated descriptions. We want to understand your thought
process and reasoning.
-->

## Type of Change
<!-- Please check the relevant option -->
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Changes Made
<!-- List the specific changes made in this PR -->
- 
- 
- 

## Testing
<!-- Describe how you tested your changes -->

## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [ ] **I have tested my changes thoroughly before submitting this PR**
- [ ] **This PR contains minimal changes necessary to address the
issue/feature**
- [ ] My code follows the project's coding standards and style
guidelines
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added necessary documentation (if applicable)
- [ ] All new and existing tests pass
- [ ] I have searched existing PRs to ensure this change hasn't been
submitted already
- [ ] I have linked any relevant issues in the description
- [ ] My commits have clear and descriptive messages

## Related Issues
<!-- Link any related issues using "Fixes #issue_number" or "Relates to
#issue_number" -->

## Additional Notes
<!-- Add any additional notes, concerns, or context for reviewers -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-24 16:56:56 +02:00
Vasilije
904354c6d4
feat: add new tutorial notebook (#1461)
<!-- .github/pull_request_template.md -->

## Description
<!-- 
Please provide a clear, human-generated description of the changes in
this PR.
DO NOT use AI-generated descriptions. We want to understand your thought
process and reasoning.
-->

## Type of Change
<!-- Please check the relevant option -->
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Changes Made
<!-- List the specific changes made in this PR -->
- 
- 
- 

## Testing
<!-- Describe how you tested your changes -->

## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [ ] **I have tested my changes thoroughly before submitting this PR**
- [ ] **This PR contains minimal changes necessary to address the
issue/feature**
- [ ] My code follows the project's coding standards and style
guidelines
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added necessary documentation (if applicable)
- [ ] All new and existing tests pass
- [ ] I have searched existing PRs to ensure this change hasn't been
submitted already
- [ ] I have linked any relevant issues in the description
- [ ] My commits have clear and descriptive messages

## Related Issues
<!-- Link any related issues using "Fixes #issue_number" or "Relates to
#issue_number" -->

## Additional Notes
<!-- Add any additional notes, concerns, or context for reviewers -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-24 16:56:30 +02:00
Hande
fcbb0a8c56 chore: update pr template 2025-09-24 16:20:26 +02:00
Hande
bd09db0718 feat: add new tutorial notebook 2025-09-24 16:14:28 +02:00
Boris Arzentar
9715c0106e
fix: add env variable for changing frontend app url 2025-09-24 10:49:40 +02:00
Chaitany
03858bc06b
fix: Fixes get_filtered_graph_data in kuzu adapter
output format is same as the othere adpaters get_filtered_graph_data.

<!-- .github/pull_request_template.md -->

## Description
<!-- 
Please provide a clear, human-generated description of the changes in
this PR.
DO NOT use AI-generated descriptions. We want to understand your thought
process and reasoning.
-->


## Type of Change
<!-- Please check the relevant option -->
- [-] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Changes Made
<!-- List the specific changes made in this PR -->
Only minimal changes are made in the file for adapter for kuzu database.

## Testing
<!-- Describe how you tested your changes -->

## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [-] **I have tested my changes thoroughly before submitting this PR**
- [-] **This PR contains minimal changes necessary to address the
issue/feature**
- [-] My code follows the project's coding standards and style
guidelines
- [-] I have added tests that prove my fix is effective or that my
feature works
- [-] I have added necessary documentation (if applicable)
- [-] All new and existing tests pass
- [-] I have searched existing PRs to ensure this change hasn't been
submitted already
- [-] I have linked any relevant issues in the description
- [-] My commits have clear and descriptive messages

## Related Issues
<!-- Link any related issues using "Fixes #issue_number" or "Relates to
#issue_number" -->
#1436 
## Additional Notes
<!-- Add any additional notes, concerns, or context for reviewers -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.

---------

Co-authored-by: hajdul88 <52442977+hajdul88@users.noreply.github.com>
2025-09-24 09:43:23 +02:00
Vasilije
26c1a2c3a1
fix: Resolve issue with MCP on main branch (#1456)
<!-- .github/pull_request_template.md -->

## Description
Temporary fix for MCP on main

## Type of Change
<!-- Please check the relevant option -->
- [x] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Changes Made
Update Cognee version for MCP

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [x] **I have tested my changes thoroughly before submitting this PR**
- [x] **This PR contains minimal changes necessary to address the
issue/feature**
- [x] My code follows the project's coding standards and style
guidelines
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added necessary documentation (if applicable)
- [ ] All new and existing tests pass
- [x] I have searched existing PRs to ensure this change hasn't been
submitted already
- [ ] I have linked any relevant issues in the description
- [ ] My commits have clear and descriptive messages

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-23 20:05:57 +02:00
Igor Ilic
49fd2ab4bd chore: Update lock files 2025-09-23 19:26:09 +02:00
Igor Ilic
e951a7956d fix: Resolve issue with MCP on main branch 2025-09-23 19:16:40 +02:00
Igor Ilic
a9c507b36e fix: Remove creation of default user during search 2025-09-23 18:43:05 +02:00
Andrej Milicevic
0dce0fb1d3 Delete extra copy of alice text file 2025-09-23 18:03:37 +02:00
EricXiao
2b8ad7213b
Merge branch 'dev' into feat/add-pdfproloader 2025-09-23 23:44:40 +08:00
Daulet Amirkhanov
38b83a5ec1
fix: handle reasoning_effort gracefully across models (#1447)
<!-- .github/pull_request_template.md -->

## Description
The async LLM client fails with non-reasoning models like gpt-4o with
the error: `Completion error: litellm.BadRequestError: OpenAIException -
Unrecognized request argument supplied: reasoning_effort`.

This PR add a sets the `drop_params` config to True to drop all
unsupported model configs instead of catching with a try-except block.

Additionally, the `reasoning_effort` wasn't being set for the sync
client. It adds the parameter for both async & sync for consistency.

## Type of Change
<!-- Please check the relevant option -->
- [x] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Changes Made
- Set `litellm.drop_params=True` to auto-drop unsupported parameters
- Changed `reasoning_effort` from `extra_body` to a direct parameter
- Add `reasoning_effort` to the sync client
- Removed redundant retry for `reasoning_effort`

## Testing
<!-- Describe how you tested your changes -->

## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [ ] **I have tested my changes thoroughly before submitting this PR**
- [ ] **This PR contains minimal changes necessary to address the
issue/feature**
- [ ] My code follows the project's coding standards and style
guidelines
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added necessary documentation (if applicable)
- [ ] All new and existing tests pass
- [ ] I have searched existing PRs to ensure this change hasn't been
submitted already
- [ ] I have linked any relevant issues in the description
- [ ] My commits have clear and descriptive messages

## Related Issues
<!-- Link any related issues using "Fixes #issue_number" or "Relates to
#issue_number" -->

## Additional Notes
<!-- Add any additional notes, concerns, or context for reviewers -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-23 16:16:46 +01:00
Daulet Amirkhanov
726f49c8ab
Merge branch 'dev' into fix/reasoning-effort-parameter 2025-09-23 16:01:22 +01:00
Igor Ilic
afa47c28b0 fix: Resolve issue with only_context 2025-09-23 13:41:12 +02:00
Vasilije
f3e04142ca
fix: added auto tagging (#1424)
<!-- .github/pull_request_template.md -->

## Description

Added auto tagging so that core team PRs always get the same lable
<!-- 
Please provide a clear, human-generated description of the changes in
this PR.
DO NOT use AI-generated descriptions. We want to understand your thought
process and reasoning.
-->

## Type of Change
<!-- Please check the relevant option -->
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Changes Made
<!-- List the specific changes made in this PR -->
- 
- 
- 

## Testing
<!-- Describe how you tested your changes -->

## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [ ] **I have tested my changes thoroughly before submitting this PR**
- [ ] **This PR contains minimal changes necessary to address the
issue/feature**
- [ ] My code follows the project's coding standards and style
guidelines
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added necessary documentation (if applicable)
- [ ] All new and existing tests pass
- [ ] I have searched existing PRs to ensure this change hasn't been
submitted already
- [ ] I have linked any relevant issues in the description
- [ ] My commits have clear and descriptive messages

## Related Issues
<!-- Link any related issues using "Fixes #issue_number" or "Relates to
#issue_number" -->

## Additional Notes
<!-- Add any additional notes, concerns, or context for reviewers -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-23 13:17:03 +02:00
Andrej Milicevic
541377a9de chore: Delete unused test, fix formatting. 2025-09-23 12:51:40 +02:00
Andrej Milicevic
9b6e1a8f0c test:Add tests for limit=None search 2025-09-23 12:46:51 +02:00
EricXiao
86d40f1db9 Merge branch 'dev' into feat/add-pdfproloader
Signed-off-by: EricXiao <taoiaox@gmail.com>
2025-09-22 21:00:23 +08:00
Vasilije
c329e3a1b4
Baml refactor (#1354)
<!-- .github/pull_request_template.md -->

## Description
Refactor BAML and LLMGateway to reduce code duplication and allow
dynamic response model generation for BAML

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-22 11:58:00 +02:00
Igor Ilic
87c79b52e3 chore: format files 2025-09-22 11:33:19 +02:00
Igor Ilic
023f5ea632 Merge branch 'dev' into baml-refactor 2025-09-22 11:25:59 +02:00
Igor Ilic
f4a7945473 refactor: Move creation of baml dynamic type to own file 2025-09-22 11:20:48 +02:00
Andrej Milicevic
bd6efe8a21 fix: Return some code I mistakenly deleted. 2025-09-22 10:10:39 +02:00
EricXiao
7fae75d020 make advanced pdf loader optional
Signed-off-by: EricXiao <taoiaox@gmail.com>
2025-09-22 15:07:58 +08:00
oryx1729
1f63b6db55 Make ruff happy 2025-09-20 17:02:31 -07:00
oryx1729
766b300fbc fix: handle reasoning_effort parameter gracefully across models
- Set litellm.drop_params=True to auto-drop unsupported parameters
- Changed reasoning_effort from extra_body to direct parameter
- Added reasoning_effort to both async and sync methods
- Removed redundant retry logic for unsupported parameters
- Ensures compatibility with models that don't support reasoning_effort

This fixes errors when using models that don't support the reasoning_effort
parameter while maintaining the optimization for models that do support it.
2025-09-20 16:35:51 -07:00
EricXiao
d12ec0bc4f Merge branch 'dev' into feat/add-pdfproloader
Signed-off-by: EricXiao <taoiaox@gmail.com>
2025-09-20 17:26:03 +08:00
EricXiao
6107cb47ca Implement Advanced PDF Loader with unstructured library support
- Added AdvancedPdfLoader class for enhanced PDF processing using the unstructured library.
- Integrated fallback mechanism to PyPdfLoader in case of unstructured library import failure or exceptions.
- Updated supported loaders to include AdvancedPdfLoader.
- Added unit tests for AdvancedPdfLoader to ensure functionality and error handling.
- Updated poetry.lock and pyproject.toml to include new dependencies and versions.

Signed-off-by: EricXiao <taoiaox@gmail.com>
2025-09-20 17:03:00 +08:00
Vasilije
f14751bca7
Clarify UI running instructions in README
Updated instructions to include setting LLM_API_KEY before running the UI.
2025-09-19 18:26:19 +02:00
Chaitany
96eb0d448a
feat(#1357): Lexical chunk retriever (#1392)
<!-- .github/pull_request_template.md -->

## Description
<!-- 
Please provide a clear, human-generated description of the changes in
this PR.
DO NOT use AI-generated descriptions. We want to understand your thought
process and reasoning.
-->
I Implemented Lexical Chunk Retriever In the LexicalRetriever class is
Inherite the BaseRetriever and The DocumentChunk are lazy loaded when
first time query is made because it save time during object
initialization
and the function get_context and the get_completion are Implemented same
as the ChunksRetriever the only diffrence is that the DocumentChunk are
converted to match the output type of the ChunksRetriever using function
get_own_properties in the utils.

## Type of Change
<!-- Please check the relevant option -->
- [-] Bug fix (non-breaking change that fixes an issue)
- [-] New feature (non-breaking change that adds functionality)
- [-] Breaking change (fix or feature that would cause existing
functionality to change)
- [-] Documentation update
- [-] Code refactoring
- [-] Performance improvement
- [-] Other (please specify):

## Changes Made
<!-- List the specific changes made in this PR -->
- Added LexicalRetriever base class with customizable tokenizer & scorer
     - Implemented caching of DocumentChunk tokens and payloads 
- Added robust initialization with error handling and logging -
Implemented get_context with top_k ranking and optional scores
- Implemented get_completion consistent with BaseRetriever interface
- Added JaccardChunksRetriever demo using set/multiset Jaccard
similarity
- Support for stopwords and multiset frequency-aware similarity -
Integrated logging for initialization, scoring, and retrieval

## Testing

- Manual tests: initialized retriever, retrieved chunks with toy corpus
    - Edge cases: empty corpus, empty query, scorer/tokenizer errors 
    - Verified Jaccard similarity results for single/multiset cases 
    - Code formatted and linted


## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [-] **I have tested my changes thoroughly before submitting this PR**
- [-] **This PR contains minimal changes necessary to address the
issue/feature**
- [-] My code follows the project's coding standards and style
guidelines
- [-] I have added tests that prove my fix is effective or that my
feature works
- [-] I have added necessary documentation (if applicable)
- [-] All new and existing tests pass
- [-] I have searched existing PRs to ensure this change hasn't been
submitted already
- [-] I have linked any relevant issues in the description
- [-] My commits have clear and descriptive messages

## Related Issues
<!-- Link any related issues using "Fixes #issue_number" or "Relates to
#issue_number" -->
Relates to  #1392
## Additional Notes
<!-- Add any additional notes, concerns, or context for reviewers -->
Int the cognee/modules/chunking/models/DocumentChunk.py
don't remove the optional  from is_part_of attributes.

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.

---------

Co-authored-by: Andrej Milicevic <milicevicandrej@yahoo.com>
Co-authored-by: Igor Ilic <30923996+dexters1@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Igor Ilic <igorilic03@gmail.com>
Co-authored-by: Vasilije <8619304+Vasilije1990@users.noreply.github.com>
Co-authored-by: Boris <boris@topoteretes.com>
Co-authored-by: lxobr <122801072+lxobr@users.noreply.github.com>
2025-09-19 18:24:33 +02:00
Boris
b7cec1b77d
version 0.3.4 (#1433)
<!-- .github/pull_request_template.md -->

## Description
<!-- 
Please provide a clear, human-generated description of the changes in
this PR.
DO NOT use AI-generated descriptions. We want to understand your thought
process and reasoning.
-->

## Type of Change
<!-- Please check the relevant option -->
- [ ] Bug fix (non-breaking change that fixes an issue)
- [ ] New feature (non-breaking change that adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [ ] Documentation update
- [ ] Code refactoring
- [ ] Performance improvement
- [ ] Other (please specify):

## Changes Made
<!-- List the specific changes made in this PR -->
- 
- 
- 

## Testing
<!-- Describe how you tested your changes -->

## Screenshots/Videos (if applicable)
<!-- Add screenshots or videos to help explain your changes -->

## Pre-submission Checklist
<!-- Please check all boxes that apply before submitting your PR -->
- [ ] **I have tested my changes thoroughly before submitting this PR**
- [ ] **This PR contains minimal changes necessary to address the
issue/feature**
- [ ] My code follows the project's coding standards and style
guidelines
- [ ] I have added tests that prove my fix is effective or that my
feature works
- [ ] I have added necessary documentation (if applicable)
- [ ] All new and existing tests pass
- [ ] I have searched existing PRs to ensure this change hasn't been
submitted already
- [ ] I have linked any relevant issues in the description
- [ ] My commits have clear and descriptive messages

## Related Issues
<!-- Link any related issues using "Fixes #issue_number" or "Relates to
#issue_number" -->

## Additional Notes
<!-- Add any additional notes, concerns, or context for reviewers -->

## DCO Affirmation
I affirm that all code in every commit of this pull request conforms to
the terms of the Topoteretes Developer Certificate of Origin.
2025-09-19 18:15:56 +02:00