Skip to content

Commit a22cbe8

Browse files
authored
refactor: Deprecate harrytmthy-dev namespace (#46)
1 parent 3061ff3 commit a22cbe8

File tree

8 files changed

+56
-50
lines changed

8 files changed

+56
-50
lines changed

.github/CODEOWNERS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
# Make @harrytmthy-dev the code owner of all files
2-
* @harrytmthy-dev
1+
# Make @harrytmthy the code owner of all files
2+
* @harrytmthy

.github/FUNDING.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
github: harrytmthy-dev
1+
github: harrytmthy

CHANGELOG.md

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,63 +5,63 @@ All notable changes to this project will be documented in this file.
55
## [1.1.0] - 2025-06-11
66

77
### Added
8-
- **SafeBoxStateManager**: A centralized lifecycle controller that manages `STARTING`, `WRITING`, `IDLE`, and `CLOSED` states per SafeBox instance. It tracks concurrent edits and ensures deterministic closure via `closeWhenIdle()`. ([#17](https://github.com/harrytmthy-dev/safebox/issues/17))
9-
- **SafeBoxGlobalStateObserver**: Observes SafeBox state transitions globally by file name. Useful for debugging or monitoring multiple files. ([#12](https://github.com/harrytmthy-dev/safebox/issues/12))
8+
- **SafeBoxStateManager**: A centralized lifecycle controller that manages `STARTING`, `WRITING`, `IDLE`, and `CLOSED` states per SafeBox instance. It tracks concurrent edits and ensures deterministic closure via `closeWhenIdle()`. ([#17](https://github.com/harrytmthy/safebox/issues/17))
9+
- **SafeBoxGlobalStateObserver**: Observes SafeBox state transitions globally by file name. Useful for debugging or monitoring multiple files. ([#12](https://github.com/harrytmthy/safebox/issues/12))
1010
- **SafeBoxStateListener**: Per-instance listener for tracking lifecycle changes.
11-
- **SafeBoxBlobFileRegistry**: Prevents multiple SafeBox instances from accessing the same file simultaneously, resolving potential file channel conflicts. ([#10](https://github.com/harrytmthy-dev/safebox/issues/10))
12-
- **SafeBoxExecutor**: Internal single-thread executor that supports background crypto operations and is publicly reusable for extensions. ([#30](https://github.com/harrytmthy-dev/safebox/pull/30))
13-
- **CipherPool**: A coroutine-friendly pool for reusing `Cipher` instances across threads. Helps prevent race conditions and improves crypto throughput. ([#25](https://github.com/harrytmthy-dev/safebox/issues/25))
14-
- **SafeBoxMigrationHelper**: Migrate from `EncryptedSharedPreferences` using standard `SharedPreferences` API. ([#13](https://github.com/harrytmthy-dev/safebox/pull/13))
11+
- **SafeBoxBlobFileRegistry**: Prevents multiple SafeBox instances from accessing the same file simultaneously, resolving potential file channel conflicts. ([#10](https://github.com/harrytmthy/safebox/issues/10))
12+
- **SafeBoxExecutor**: Internal single-thread executor that supports background crypto operations and is publicly reusable for extensions. ([#30](https://github.com/harrytmthy/safebox/pull/30))
13+
- **CipherPool**: A coroutine-friendly pool for reusing `Cipher` instances across threads. Helps prevent race conditions and improves crypto throughput. ([#25](https://github.com/harrytmthy/safebox/issues/25))
14+
- **SafeBoxMigrationHelper**: Migrate from `EncryptedSharedPreferences` using standard `SharedPreferences` API. ([#13](https://github.com/harrytmthy/safebox/pull/13))
1515

1616
### Changed
17-
- **ChaCha20CipherProvider**: Now backed by `CipherPool` for thread-safe encryption and decryption. ([#25](https://github.com/harrytmthy-dev/safebox/issues/25))
18-
- **SafeSecretKey**: Rewritten for concurrency using short-lived heap caches and reduced synchronized scope. ([#26](https://github.com/harrytmthy-dev/safebox/issues/26))
19-
- **SecureRandomKeyProvider**: Improved concurrency behavior when retrieving or decrypting keys. ([#26](https://github.com/harrytmthy-dev/safebox/issues/26))
20-
- **BouncyCastleProvider**: Lazy-injected only when ChaCha20 isn't available, preserving host app provider configs. ([#1](https://github.com/harrytmthy-dev/safebox/issues/1))
21-
- **compileSdkVersion** bumped to `36`. ([#2](https://github.com/harrytmthy-dev/safebox/issues/2))
17+
- **ChaCha20CipherProvider**: Now backed by `CipherPool` for thread-safe encryption and decryption. ([#25](https://github.com/harrytmthy/safebox/issues/25))
18+
- **SafeSecretKey**: Rewritten for concurrency using short-lived heap caches and reduced synchronized scope. ([#26](https://github.com/harrytmthy/safebox/issues/26))
19+
- **SecureRandomKeyProvider**: Improved concurrency behavior when retrieving or decrypting keys. ([#26](https://github.com/harrytmthy/safebox/issues/26))
20+
- **BouncyCastleProvider**: Lazy-injected only when ChaCha20 isn't available, preserving host app provider configs. ([#1](https://github.com/harrytmthy/safebox/issues/1))
21+
- **compileSdkVersion** bumped to `36`. ([#2](https://github.com/harrytmthy/safebox/issues/2))
2222

2323
### Security
24-
- **XOR-based key masking**: `SafeSecretKey` is now masked in memory using a SHA-256-derived mask. Prevents native memory inspection of raw DEK. ([#23](https://github.com/harrytmthy-dev/safebox/issues/23))
25-
- **On-demand cipher creation**: `AesGcmCipherProvider` no longer holds long-lived `Cipher` instances. ([#28](https://github.com/harrytmthy-dev/safebox/issues/28))
24+
- **XOR-based key masking**: `SafeSecretKey` is now masked in memory using a SHA-256-derived mask. Prevents native memory inspection of raw DEK. ([#23](https://github.com/harrytmthy/safebox/issues/23))
25+
- **On-demand cipher creation**: `AesGcmCipherProvider` no longer holds long-lived `Cipher` instances. ([#28](https://github.com/harrytmthy/safebox/issues/28))
2626

2727
### Docs
28-
- Added **v1.1.0 benchmark results** showing faster performance across `get()`, `put()`, and `commit()` operations. ([#35](https://github.com/harrytmthy-dev/safebox/issues/35))
29-
- Enabled [**GitHub Sponsors**](https://github.com/sponsors/harrytmthy-dev) with the new `Support SafeBox` section. ([#37](https://github.com/harrytmthy-dev/safebox/issues/37))
30-
- Added project metadata badges: Build, License, and Version. ([#39](https://github.com/harrytmthy-dev/safebox/issues/39))
28+
- Added **v1.1.0 benchmark results** showing faster performance across `get()`, `put()`, and `commit()` operations. ([#35](https://github.com/harrytmthy/safebox/issues/35))
29+
- Enabled [**GitHub Sponsors**](https://github.com/sponsors/harrytmthy) with the new `Support SafeBox` section. ([#37](https://github.com/harrytmthy/safebox/issues/37))
30+
- Added project metadata badges: Build, License, and Version. ([#39](https://github.com/harrytmthy/safebox/issues/39))
3131

3232
## [1.1.0-rc01] - 2025-06-09
3333

3434
### Added
35-
- **CipherPool**: A coroutine-friendly, thread-safe pool for reusing `Cipher` instances across threads, backed by a load-factor-based expansion strategy. Prevents cryptographic race conditions in read-heavy workloads. ([#25](https://github.com/harrytmthy-dev/safebox/issues/25))
36-
- **SafeBoxExecutor**: Internal singleton executor to support background concurrency operations like CipherPool scaling. Publicly reusable for custom extensions. ([#30](https://github.com/harrytmthy-dev/safebox/pull/30))
35+
- **CipherPool**: A coroutine-friendly, thread-safe pool for reusing `Cipher` instances across threads, backed by a load-factor-based expansion strategy. Prevents cryptographic race conditions in read-heavy workloads. ([#25](https://github.com/harrytmthy/safebox/issues/25))
36+
- **SafeBoxExecutor**: Internal singleton executor to support background concurrency operations like CipherPool scaling. Publicly reusable for custom extensions. ([#30](https://github.com/harrytmthy/safebox/pull/30))
3737

3838
### Changed
39-
- **ChaCha20CipherProvider** now uses `CipherPool` for safe concurrent encryption/decryption. ([#25](https://github.com/harrytmthy-dev/safebox/issues/25))
40-
- **SafeSecretKey**: Now supports concurrent access by reducing synchronized scope, caching the unmasked key in a short-lived atomic heap reference. ([#26](https://github.com/harrytmthy-dev/safebox/issues/26))
41-
- **SecureRandomKeyProvider**: Key caching and unmasking now support concurrent access patterns without blocking parallel threads. ([#26](https://github.com/harrytmthy-dev/safebox/issues/26))
42-
- **BouncyCastle provider initialization** is now safer and more flexible: `CipherPool` lazily injects the provider only when ChaCha20 is not available, reducing the risk of overwriting external configurations. ([#1](https://github.com/harrytmthy-dev/safebox/issues/1))
43-
- **compileSdk bumped to 36**: Ensure SafeBox stays forward-compatible with the latest Android APIs. ([#2](https://github.com/harrytmthy-dev/safebox/issues/2))
39+
- **ChaCha20CipherProvider** now uses `CipherPool` for safe concurrent encryption/decryption. ([#25](https://github.com/harrytmthy/safebox/issues/25))
40+
- **SafeSecretKey**: Now supports concurrent access by reducing synchronized scope, caching the unmasked key in a short-lived atomic heap reference. ([#26](https://github.com/harrytmthy/safebox/issues/26))
41+
- **SecureRandomKeyProvider**: Key caching and unmasking now support concurrent access patterns without blocking parallel threads. ([#26](https://github.com/harrytmthy/safebox/issues/26))
42+
- **BouncyCastle provider initialization** is now safer and more flexible: `CipherPool` lazily injects the provider only when ChaCha20 is not available, reducing the risk of overwriting external configurations. ([#1](https://github.com/harrytmthy/safebox/issues/1))
43+
- **compileSdk bumped to 36**: Ensure SafeBox stays forward-compatible with the latest Android APIs. ([#2](https://github.com/harrytmthy/safebox/issues/2))
4444

4545
### Security
46-
- **XOR-based in-memory masking** added to `SafeSecretKey`, preventing runtime memory inspection of the raw DEK. The key is stored in masked form using a SHA-256 hash of the encrypted DEK as its mask. ([#23](https://github.com/harrytmthy-dev/safebox/issues/23))
47-
- **On-demand Cipher creation** for `AesGcmCipherProvider`, eliminating long-lived `Cipher` references that may retain sensitive key material. ([#28](https://github.com/harrytmthy-dev/safebox/issues/28))
46+
- **XOR-based in-memory masking** added to `SafeSecretKey`, preventing runtime memory inspection of the raw DEK. The key is stored in masked form using a SHA-256 hash of the encrypted DEK as its mask. ([#23](https://github.com/harrytmthy/safebox/issues/23))
47+
- **On-demand Cipher creation** for `AesGcmCipherProvider`, eliminating long-lived `Cipher` references that may retain sensitive key material. ([#28](https://github.com/harrytmthy/safebox/issues/28))
4848

4949
## [1.1.0-beta01] - 2025-06-04
5050

5151
### Added
52-
- **SafeBoxStateManager** is now the sole authority over lifecycle states (`STARTING`, `WRITING`, `IDLE`, `CLOSED`). It tracks concurrent edits, coordinates safe apply/commit transitions, and guarantees deterministic closure in `closeWhenIdle()`. ([#17](https://github.com/harrytmthy-dev/safebox/issues/17))
53-
- **Write guard after closure:** Once `SafeBox` transitions to `CLOSED`, all subsequent write operations (`apply()` or `commit()`) are safely blocked. Prevents late `WRITING` emissions and ensures lifecycle integrity. ([#19](https://github.com/harrytmthy-dev/safebox/issues/19))
52+
- **SafeBoxStateManager** is now the sole authority over lifecycle states (`STARTING`, `WRITING`, `IDLE`, `CLOSED`). It tracks concurrent edits, coordinates safe apply/commit transitions, and guarantees deterministic closure in `closeWhenIdle()`. ([#17](https://github.com/harrytmthy/safebox/issues/17))
53+
- **Write guard after closure:** Once `SafeBox` transitions to `CLOSED`, all subsequent write operations (`apply()` or `commit()`) are safely blocked. Prevents late `WRITING` emissions and ensures lifecycle integrity. ([#19](https://github.com/harrytmthy/safebox/issues/19))
5454

5555
### Fixed
56-
- GPG signing and secret injection issues in the Maven publish pipeline, resolving deployment failure from alpha02. ([PR #16](https://github.com/harrytmthy-dev/safebox/pull/16))
56+
- GPG signing and secret injection issues in the Maven publish pipeline, resolving deployment failure from alpha02. ([PR #16](https://github.com/harrytmthy/safebox/pull/16))
5757

5858
## [1.1.0-alpha02] - 2025-06-02
5959

6060
### Added
61-
- **SafeBoxBlobFileRegistry** prevents multiple `SafeBox` instances from accessing the same blob file. This enforces a **single-instance-per-file** constraint internally, resolving the risk documented in [#3](https://github.com/harrytmthy-dev/safebox/issues/3). ([#10](https://github.com/harrytmthy-dev/safebox/issues/10))
62-
- **SafeBoxStateListener** for tracking `SafeBox` lifecycle states (`STARTING`, `IDLE`, `WRITING`, `CLOSED`). It can be attached per-instance via `SafeBox.create(...)` or registered globally via `SafeBoxGlobalStateObserver`. ([#12](https://github.com/harrytmthy-dev/safebox/issues/12))
63-
- **SafeBoxGlobalStateObserver** tracks `SafeBox` state transitions by file name, with support for multiple listeners. ([#12](https://github.com/harrytmthy-dev/safebox/issues/12))
64-
- `SafeBox#closeWhenIdle()` defers closure until all pending writes are complete, preventing premature teardown in async environments. ([#12](https://github.com/harrytmthy-dev/safebox/issues/12))
61+
- **SafeBoxBlobFileRegistry** prevents multiple `SafeBox` instances from accessing the same blob file. This enforces a **single-instance-per-file** constraint internally, resolving the risk documented in [#3](https://github.com/harrytmthy/safebox/issues/3). ([#10](https://github.com/harrytmthy/safebox/issues/10))
62+
- **SafeBoxStateListener** for tracking `SafeBox` lifecycle states (`STARTING`, `IDLE`, `WRITING`, `CLOSED`). It can be attached per-instance via `SafeBox.create(...)` or registered globally via `SafeBoxGlobalStateObserver`. ([#12](https://github.com/harrytmthy/safebox/issues/12))
63+
- **SafeBoxGlobalStateObserver** tracks `SafeBox` state transitions by file name, with support for multiple listeners. ([#12](https://github.com/harrytmthy/safebox/issues/12))
64+
- `SafeBox#closeWhenIdle()` defers closure until all pending writes are complete, preventing premature teardown in async environments. ([#12](https://github.com/harrytmthy/safebox/issues/12))
6565

6666
### Behavior Changes
6767
- Calling `SafeBox.create(...)` before closing the existing instance with the same file name now throws `IllegalStateException`.

CONTRIBUTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Thank you for considering contributing! SafeBox welcomes improvements, bug fixes
55
## Local Setup
66

77
```bash
8-
git clone https://github.com/harrytmthy-dev/safebox.git
8+
git clone https://github.com/harrytmthy/safebox.git
99
```
1010

1111
### Update pre-hook path
@@ -53,7 +53,7 @@ CI runs instrumented tests automatically on:
5353

5454
## Contributor Etiquette
5555

56-
- Discuss major changes or feature proposals first via [Issues](https://github.com/harrytmthy-dev/safebox/issues).
56+
- Discuss major changes or feature proposals first via [Issues](https://github.com/harrytmthy/safebox/issues).
5757
- Be respectful during reviews! We're building something safe and friendly.
5858
- If anything is unclear, don't hesitate to ask!
5959

@@ -79,7 +79,7 @@ Update the following files in the same commit:
7979
Update the version in the `Installation` section:
8080

8181
```kotlin
82-
implementation("io.github.harrytmthy-dev:safebox:1.2.0-alpha01")
82+
implementation("io.github.harrytmthy:safebox:1.2.0-alpha01")
8383
```
8484

8585
- **`:safebox/build.gradle.kts`**

README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# SafeBox
22

3-
[![Build](https://img.shields.io/github/actions/workflow/status/harrytmthy-dev/safebox/ci.yml?branch=main&label=build&logo=githubactions&logoColor=white&style=flat-square)](https://github.com/harrytmthy-dev/safebox/actions)
4-
[![License](https://img.shields.io/github/license/harrytmthy-dev/safebox?label=license&color=blue&style=flat-square)](https://github.com/harrytmthy-dev/safebox/blob/main/LICENSE)
5-
[![Release](https://img.shields.io/github/v/release/harrytmthy-dev/safebox?include_prereleases&label=release&color=orange&style=flat-square)](https://github.com/harrytmthy-dev/safebox/releases)
3+
[![Build](https://img.shields.io/github/actions/workflow/status/harrytmthy/safebox/ci.yml?branch=main&label=build&logo=githubactions&logoColor=white&style=flat-square)](https://github.com/harrytmthy/safebox/actions)
4+
[![License](https://img.shields.io/github/license/harrytmthy/safebox?label=license&color=blue&style=flat-square)](https://github.com/harrytmthy/safebox/blob/main/LICENSE)
5+
[![Release](https://img.shields.io/github/v/release/harrytmthy/safebox?include_prereleases&label=release&color=orange&style=flat-square)](https://github.com/harrytmthy/safebox/releases)
66

77
A secure, blazing-fast alternative to `EncryptedSharedPreferences`, designed for Android projects which demand both **speed** and **security**.
88

@@ -53,10 +53,16 @@ Compared to EncryptedSharedPreferences:
5353

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

60+
### ⚠️ Heads up
61+
62+
The `io.github.harrytmthy-dev` namespace is now **deprecated**. Starting from `v1.2.0-alpha01`, SafeBox will be published under the canonical Maven group `io.github.harrytmthy`.
63+
64+
Please update your dependencies accordingly.
65+
6066
## Basic Usage
6167

6268
First, provide SafeBox as a singleton:
@@ -251,7 +257,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, formatting, testing, and PR gu
251257

252258
If SafeBox helped secure your app or saved your time, consider sponsoring to support future improvements and maintenance!
253259

254-
[![Sponsor](https://img.shields.io/badge/sponsor-%F0%9F%92%96-blueviolet?style=flat-square)](https://github.com/sponsors/harrytmthy-dev)
260+
[![Sponsor](https://img.shields.io/badge/sponsor-%F0%9F%92%96-blueviolet?style=flat-square)](https://github.com/sponsors/harrytmthy)
255261

256262
## License
257263

docs/MIGRATION.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,6 @@ SafeBoxMigrationHelper.migrate(from = encryptedPrefs, to = safeBox)
6060

6161
- SafeBox is open-source and MIT licensed
6262
- Fully tested, memory-safe, and designed for offline-first applications
63-
- Already published to [Maven Central](https://central.sonatype.com/artifact/io.github.harrytmthy-dev/safebox)
63+
- Already published to [Maven Central](https://central.sonatype.com/artifact/io.github.harrytmthy/safebox)
6464

65-
Looking to contribute? Found an edge case? Let us know or [open an issue](https://github.com/harrytmthy-dev/safebox/issues).
65+
Looking to contribute? Found an edge case? Let us know or [open an issue](https://github.com/harrytmthy/safebox/issues).

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-
4949
kotlinx-coroutines-test = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-test", version.ref = "kotlinxCoroutines" }
5050
protobuf-kotlin-lite = { group = "com.google.protobuf", name = "protobuf-kotlin-lite", version.ref = "protobuf" }
5151
protobuf-protoc = { group = "com.google.protobuf", name = "protoc", version.ref = "protobuf" }
52-
safebox = { group = "io.github.harrytmthy-dev", name = "safebox", version.ref = "safebox" }
52+
safebox = { group = "io.github.harrytmthy", name = "safebox", version.ref = "safebox" }
5353
timber = { group = "com.jakewharton.timber", name = "timber", version.ref = "timber" }
5454

5555
[plugins]

safebox/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ plugins {
2222
id("com.vanniktech.maven.publish")
2323
}
2424

25-
group = "io.github.harrytmthy-dev"
25+
group = "io.github.harrytmthy"
2626
version = "1.1.0"
2727

2828
android {
@@ -102,15 +102,15 @@ mavenPublishing {
102102

103103
developers {
104104
developer {
105-
id.set("harrytmthy-dev")
105+
id.set("harrytmthy")
106106
name.set("Harry Timothy Tumalewa")
107107
email.set("harrytmthy@gmail.com")
108108
}
109109
}
110110

111111
scm {
112-
connection.set("scm:git:git://github.com/harrytmthy-dev/safebox.git")
113-
developerConnection.set("scm:git:ssh://github.com:harrytmthy-dev/safebox.git")
112+
connection.set("scm:git:git://github.com/harrytmthy/safebox.git")
113+
developerConnection.set("scm:git:ssh://github.com:harrytmthy/safebox.git")
114114
url.set("https://github.com/harrytmthy/safebox")
115115
}
116116
}

0 commit comments

Comments
 (0)