Skip to content

Commit 996a726

Browse files
committed
build: release 0.9.0-alpha
1 parent fc0559d commit 996a726

3 files changed

Lines changed: 305 additions & 180 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 50 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,43 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [Unreleased]
8+
## [0.9.0-alpha] - 2026-08-23
9+
10+
### BREAKING CHANGES
11+
12+
- Switch encryption format to streaming AES-GCM with per-chunk nonces; existing data from previous versions cannot be decrypted
13+
14+
### Added
15+
16+
- Implement safe backup write by writing to a temporary file and atomically
17+
replacing the final archive to avoid TOCTOU issues and partial files.
18+
- Introduce a cross-process lock via a .lock file and atomic write of
19+
metadata.json to prevent corruption during concurrent updates.
920

1021
### Changed
1122

1223
- Migrated to src layout from flat layout.
24+
- Updated dependencies:
25+
26+
```
27+
Updated annotated-doc v0.0.4 -> v0.0.5
28+
Updated cffi v2.0.0 -> v2.1.1
29+
Removed click v8.3.3
30+
Updated coverage v7.13.5 -> v7.15.4
31+
Updated cryptography v47.0.0 -> v50.0.0
32+
Updated hypothesis v6.152.4 -> v6.165.10
33+
Updated markdown-it-py v4.0.0 -> v4.2.0
34+
Updated packaging v26.2 -> v26.3
35+
Updated pygments v2.20.0 -> v2.21.0
36+
Updated pytest v9.0.3 -> v9.1.1
37+
Updated ruff v0.15.12 -> v0.16.4
38+
Updated typer v0.25.1 -> v0.27.1
39+
Updated typing-extensions v4.15.0 -> v4.16.0
40+
```
41+
42+
### Fixed
43+
44+
- Skip unrecognised filenames when pruning
1345

1446
## [0.8.1-alpha] - 2026-05-04
1547

@@ -27,12 +59,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2759
### Added
2860

2961
- **SHA256 Integrity Verification:** Added comprehensive file integrity verification system
30-
- Calculate and store SHA256 hash of backup archives (.tar.zst)
31-
- Calculate and store SHA256 hash of encrypted files (.enc)
32-
- Calculate and store SHA256 hash of decrypted files
33-
- Verify decrypted file integrity against original backup archive hash
34-
- All hashes stored in metadata.json v2.0 with appropriate naming
35-
- Added 28 new tests for hash utilities and metadata v2.0
62+
- Calculate and store SHA256 hash of backup archives (.tar.zst)
63+
- Calculate and store SHA256 hash of encrypted files (.enc)
64+
- Calculate and store SHA256 hash of decrypted files
65+
- Verify decrypted file integrity against original backup archive hash
66+
- All hashes stored in metadata.json v2.0 with appropriate naming
67+
- Added 28 new tests for hash utilities and metadata v2.0
3668
- Pure Python encryption using the `cryptography` library - no more external OpenSSL binary dependency
3769
- AES-256-GCM authenticated encryption provides both confidentiality and integrity verification
3870
- PBKDF2-HMAC-SHA256 key derivation with 600,000 iterations (OWASP recommended)
@@ -61,17 +93,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6193
- Simplified zsh completion installation for better portability
6294
- Added installation options for uv tool including development mode and legacy removal
6395
- Upgraded dependencies:
64-
- Updated click v8.3.1 -> v8.3.3
65-
- Updated coverage v7.13.4 -> v7.13.5
66-
- Updated cryptography v46.0.5 -> v47.0.0
67-
- Updated hypothesis v6.151.6 -> v6.152.4
68-
- Updated packaging v26.0 -> v26.2
69-
- Updated pygments v2.19.2 -> v2.20.0
70-
- Updated pytest v9.0.2 -> v9.0.3
71-
- Updated pytest-cov v7.0.0 -> v7.1.0
72-
- Updated rich v14.3.2 -> v15.0.0
73-
- Updated ruff v0.15.1 -> v0.15.12
74-
- Updated typer v0.23.0 -> v0.25.1
96+
- Updated click v8.3.1 -> v8.3.3
97+
- Updated coverage v7.13.4 -> v7.13.5
98+
- Updated cryptography v46.0.5 -> v47.0.0
99+
- Updated hypothesis v6.151.6 -> v6.152.4
100+
- Updated packaging v26.0 -> v26.2
101+
- Updated pygments v2.19.2 -> v2.20.0
102+
- Updated pytest v9.0.2 -> v9.0.3
103+
- Updated pytest-cov v7.0.0 -> v7.1.0
104+
- Updated rich v14.3.2 -> v15.0.0
105+
- Updated ruff v0.15.1 -> v0.15.12
106+
- Updated typer v0.23.0 -> v0.25.1
75107

76108
### Removed
77109

‎pyproject.toml‎

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = 'AutoTarCompress'
3-
version = '0.8.1-alpha'
3+
version = '0.9.0-alpha'
44
license = { text = "GPL-3.0-or-later" }
55
description = 'The script compresses specific directories into tar files, and it is able to encrypt them using the OpenSSL Python library. It also allows for decryption and extraction of the created files.'
66
keywords = ["tar", "compress", "backup"]
@@ -66,7 +66,13 @@ AutoTarCompress_LOG_DIR = { value = "/tmp/pytest-of-{USER}-logs/autotarcompress"
6666
[tool.ruff]
6767
line-length = 79
6868
indent-width = 4
69-
include = ["pyproject.toml", "src/**/*.py", "scripts/**/*.py", "autotarcompress/**/*.py", "tests/**/*.py"]
69+
include = [
70+
"pyproject.toml",
71+
"src/**/*.py",
72+
"scripts/**/*.py",
73+
"autotarcompress/**/*.py",
74+
"tests/**/*.py",
75+
]
7076

7177
[tool.ruff.format]
7278
# Like Black, use double quotes for strings.
@@ -145,8 +151,8 @@ lines-between-types = 0
145151

146152
[tool.ruff.lint.per-file-ignores]
147153
"scripts/*.py" = [
148-
"INP001", # Scripts are standalone, not part of a package
149-
"T201", # print() is expected in CLI scripts
154+
"INP001", # Scripts are standalone, not part of a package
155+
"T201", # print() is expected in CLI scripts
150156
]
151157
"test_*.py" = [
152158
"S101", # asserts allowed in tests...

0 commit comments

Comments
 (0)