Skip to content

Commit bcb647d

Browse files
authored
release: v1.2.0 with SafeBoxEngine, faster writes, and concurrency-stable crypto (#96)
1 parent 50dd8cd commit bcb647d

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,37 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [1.2.0] - 2025-09-01
6+
7+
### Added
8+
- **Getter APIs:** `SafeBox.get(fileName)` and `SafeBox.getOrNull(fileName)` for singleton-style retrieval. ([#64](https://github.com/harrytmthy/safebox/issues/64))
9+
10+
### Changed
11+
- **Namespace update:** Published under `io.github.harrytmthy`. ([#45](https://github.com/harrytmthy/safebox/issues/45))
12+
- **Single instance per filename:** `SafeBox.create(...)` is atomic and idempotent. Repeated calls return the same instance. ([#58](https://github.com/harrytmthy/safebox/issues/58))
13+
- **SharedPreferences parity for reads:** `getXxx()` now blocks until the initial load completes. ([#71](https://github.com/harrytmthy/safebox/issues/71))
14+
- **Centralized runtime orchestration:** New internal `SafeBoxEngine` owns in-memory entries, the initial-load barrier, write sequencing, and AEAD dead-entry purge scheduling. ([#84](https://github.com/harrytmthy/safebox/issues/84), [#82](https://github.com/harrytmthy/safebox/issues/82))
15+
- **Faster engine writes:** Shrinks critical sections and lowers lock contention during bursty apply or commit. ([#92](https://github.com/harrytmthy/safebox/issues/92))
16+
- **Docs refreshed:** README and KDocs updated with v1.2.0 benchmarks. ([#63](https://github.com/harrytmthy/safebox/issues/63), [#89](https://github.com/harrytmthy/safebox/issues/89))
17+
18+
### Fixed
19+
- **AEADBadTagException under concurrency:** ChaCha20-Poly1305 guarded by a process-wide mutex. Removes MAC failures and dead entries during mixed read and write workloads. ([#90](https://github.com/harrytmthy/safebox/issues/90))
20+
- **Persisted clear flag:** Reusing an editor after `clear()` no longer keeps clearing on later commits. ([#86](https://github.com/harrytmthy/safebox/issues/86))
21+
- **Stability carry-overs:** Serialized cryptography and safe purge of unreadable values. ([#72](https://github.com/harrytmthy/safebox/issues/72))
22+
23+
### Deprecated
24+
- **CipherPool and CipherPoolExecutor:** Removal planned in v1.3. ([#78](https://github.com/harrytmthy/safebox/issues/78))
25+
- **AAD-taking factory:** AAD is ignored in v1.2 and removal is planned in v1.3. ([#72](https://github.com/harrytmthy/safebox/issues/72))
26+
- **`setInitialLoadStrategy(...)`:** No-op in v1.2 and removal planned in v1.3. ([#68](https://github.com/harrytmthy/safebox/issues/68))
27+
28+
### Removed
29+
- **SafeBoxStateManager:** Responsibilities moved into `SafeBoxEngine`. ([#84](https://github.com/harrytmthy/safebox/issues/84))
30+
- **SingletonCipherPoolProvider:** Stale internal helper removed. ([#78](https://github.com/harrytmthy/safebox/issues/78))
31+
32+
### Internal
33+
- **CI:** Gradle caching improvements. ([#47](https://github.com/harrytmthy/safebox/issues/47))
34+
- **Rename:** `SafeBoxExecutor` to `CipherPoolExecutor`. ([#49](https://github.com/harrytmthy/safebox/issues/49))
35+
536
## [1.2.0-rc01] - 2025-08-31
637

738
### Fixed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Compared to EncryptedSharedPreferences:
5353

5454
```kotlin
5555
dependencies {
56-
implementation("io.github.harrytmthy:safebox:1.2.0-rc01")
56+
implementation("io.github.harrytmthy:safebox:1.2.0")
5757
}
5858
```
5959

safebox/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ plugins {
2323
}
2424

2525
group = "io.github.harrytmthy"
26-
version = "1.2.0-rc01"
26+
version = "1.2.0"
2727

2828
android {
2929
namespace = "com.harrytmthy.safebox"

0 commit comments

Comments
 (0)