From 81cd719327265bebee489d7bc58497f67a50ec3d Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Tue, 6 Oct 2026 14:34:02 -0400 Subject: [PATCH] =?UTF-8?q?rename:=20Android=20is=20Inkwell=20=E2=80=94=20?= =?UTF-8?q?package,=20applicationId,=20uniffi=20class,=20assets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Step 4 of milestone 481 (Scribe note 5071: a full rename). - namespace and applicationId com.fabledsword.inkwell; the Kotlin package moves with them, and ktlint re-sorted the imports the rename reordered (checked locally with CI's ktlint 1.4.0 and detekt 1.23.7, both clean) - uniffi: class Inkwell in com.fabledsword.inkwell.core, InkwellApplication, InkwellTheme, Theme.Inkwell, log tags, prefs and work names, client agent inkwell-android - the lane publishes inkwell.apk / inkwell-android.json; fetch-clients, guard-forward, publish-release and write-manifest read the same names A new applicationId is a new app. The old ThoughtSync app keeps its own store and stays installed beside it. Notes cross over by syncing, and the old app is then removed by hand. Kept: the signing keyAlias is still "thoughtsync". It names the key inside the existing keystore, and the key, and so the certificate, are unchanged. Co-Authored-By: Claude Opus 5.5 --- .forgejo/workflows/android.yml | 26 ++++++------ android/app/build.gradle.kts | 15 ++++--- android/app/proguard-rules.pro | 2 +- android/app/src/main/AndroidManifest.xml | 6 +-- .../{thoughtsync => inkwell}/AppUpdate.kt | 6 +-- .../{thoughtsync => inkwell}/BuildIdentity.kt | 2 +- .../InkwellApplication.kt} | 18 ++++---- .../{thoughtsync => inkwell}/MainActivity.kt | 42 +++++++++---------- .../ReminderNotification.kt | 6 +-- .../ReminderReceiver.kt | 12 +++--- .../{thoughtsync => inkwell}/Reminders.kt | 18 ++++---- .../{thoughtsync => inkwell}/SyncSchedule.kt | 6 +-- .../{thoughtsync => inkwell}/SyncSettings.kt | 4 +- .../{thoughtsync => inkwell}/SyncWorker.kt | 8 ++-- .../{thoughtsync => inkwell}/UpdateOutcome.kt | 2 +- .../UpdateReceiver.kt | 6 +-- .../{thoughtsync => inkwell}/ui/BlockBody.kt | 4 +- .../ui/BoardScreen.kt | 8 ++-- .../ui/BoardViewModel.kt | 20 ++++----- .../ui/DerivedTint.kt | 2 +- .../ui/EditorAction.kt | 2 +- .../ui/EditorBlock.kt | 6 +-- .../ui/EditorChrome.kt | 6 +-- .../ui/EditorPickers.kt | 8 ++-- .../ui/ErrorBanner.kt | 4 +- .../ui/FlushOnStop.kt | 2 +- .../ui/ForegroundTransitions.kt | 2 +- .../ui/LinkPreviewRow.kt | 6 +-- .../{thoughtsync => inkwell}/ui/NoteCard.kt | 14 +++---- .../ui/NoteEditorScreen.kt | 6 +-- .../{thoughtsync => inkwell}/ui/NoteTint.kt | 2 +- .../{thoughtsync => inkwell}/ui/Panel.kt | 4 +- .../{thoughtsync => inkwell}/ui/PlainField.kt | 2 +- .../ui/ReminderNotice.kt | 6 +-- .../ui/SyncPairing.kt | 8 ++-- .../{thoughtsync => inkwell}/ui/SyncScreen.kt | 10 ++--- .../{thoughtsync => inkwell}/ui/SyncText.kt | 8 ++-- .../ui/SyncViewModel.kt | 18 ++++---- .../{thoughtsync => inkwell}/ui/TagsScreen.kt | 6 +-- .../ui/TagsViewModel.kt | 12 +++--- .../{thoughtsync => inkwell}/ui/Theme.kt | 6 +-- .../{thoughtsync => inkwell}/ui/Time.kt | 2 +- .../{thoughtsync => inkwell}/ui/UpdateCard.kt | 8 ++-- .../ui/UpdateViewModel.kt | 14 +++---- android/app/src/main/res/values/colors.xml | 2 +- android/app/src/main/res/values/themes.xml | 2 +- .../ui/DerivedTintTest.kt | 2 +- android/config/detekt.yml | 2 +- android/ffi/src/lib.rs | 38 ++++++++--------- android/ffi/uniffi.toml | 4 +- android/settings.gradle.kts | 2 +- desktop/packaging/publish-release.sh | 4 +- desktop/packaging/write-manifest.sh | 2 +- packaging/fetch-clients.sh | 4 +- packaging/guard-forward.sh | 4 +- 55 files changed, 222 insertions(+), 219 deletions(-) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/AppUpdate.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/BuildIdentity.kt (96%) rename android/app/src/main/java/com/fabledsword/{thoughtsync/ThoughtSyncApplication.kt => inkwell/InkwellApplication.kt} (78%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/MainActivity.kt (95%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ReminderNotification.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ReminderReceiver.kt (86%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/Reminders.kt (96%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/SyncSchedule.kt (96%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/SyncSettings.kt (95%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/SyncWorker.kt (92%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/UpdateOutcome.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/UpdateReceiver.kt (94%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/BlockBody.kt (99%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/BoardScreen.kt (99%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/BoardViewModel.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/DerivedTint.kt (99%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/EditorAction.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/EditorBlock.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/EditorChrome.kt (99%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/EditorPickers.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/ErrorBanner.kt (96%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/FlushOnStop.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/ForegroundTransitions.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/LinkPreviewRow.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/NoteCard.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/NoteEditorScreen.kt (99%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/NoteTint.kt (99%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/Panel.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/PlainField.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/ReminderNotice.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/SyncPairing.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/SyncScreen.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/SyncText.kt (93%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/SyncViewModel.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/TagsScreen.kt (99%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/TagsViewModel.kt (96%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/Theme.kt (95%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/Time.kt (98%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/UpdateCard.kt (97%) rename android/app/src/main/java/com/fabledsword/{thoughtsync => inkwell}/ui/UpdateViewModel.kt (96%) rename android/app/src/test/java/com/fabledsword/{thoughtsync => inkwell}/ui/DerivedTintTest.kt (99%) diff --git a/.forgejo/workflows/android.yml b/.forgejo/workflows/android.yml index c66f999..72e3e8f 100644 --- a/.forgejo/workflows/android.yml +++ b/.forgejo/workflows/android.yml @@ -134,7 +134,7 @@ jobs: echo "code=$code" >> $GITHUB_OUTPUT if [ -n "${ANDROID_KEYSTORE_BASE64:-}" ]; then - printf '%s' "$ANDROID_KEYSTORE_BASE64" | base64 -d > /tmp/thoughtsync-release.jks + printf '%s' "$ANDROID_KEYSTORE_BASE64" | base64 -d > /tmp/inkwell-release.jks echo "variant=Release" >> $GITHUB_OUTPUT echo "label=release" >> $GITHUB_OUTPUT # DEBUG profile, in a release APK, deliberately — see the note above @@ -143,7 +143,7 @@ jobs: # outright (run 4077). Unpicking that is worth doing and is not worth # blocking signed builds on. echo "profile=debug" >> $GITHUB_OUTPUT - echo "keystore=/tmp/thoughtsync-release.jks" >> $GITHUB_OUTPUT + echo "keystore=/tmp/inkwell-release.jks" >> $GITHUB_OUTPUT echo "apk=android/app/build/outputs/apk/release/app-release.apk" >> $GITHUB_OUTPUT echo "Signed release build — $version (versionCode $code)" else @@ -167,7 +167,7 @@ jobs: # from the built .so. Run as its own step so a Rust failure is legible as a # Rust failure instead of arriving inside a Gradle stack trace. - name: Build the native library and bindings - run: ./gradlew generateUniffiBindings -PTHOUGHTSYNC_CARGO_PROFILE=${{ steps.build.outputs.profile }} + run: ./gradlew generateUniffiBindings -PINKWELL_CARGO_PROFILE=${{ steps.build.outputs.profile }} # The image's PINNED CLIs, not Gradle plugins. ci-rust-android carries both # (M12 step 3) precisely so this lane needs no second image, and going @@ -193,7 +193,7 @@ jobs: # not exist (run 4082). It costs one extra Kotlin compile and buys the # type-check on the debug variant, which is the one an emulator build # would use. - run: ./gradlew testDebugUnitTest -PTHOUGHTSYNC_CARGO_PROFILE=${{ steps.build.outputs.profile }} + run: ./gradlew testDebugUnitTest -PINKWELL_CARGO_PROFILE=${{ steps.build.outputs.profile }} - name: Assemble the APK env: @@ -203,9 +203,9 @@ jobs: ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} run: | ./gradlew assemble${{ steps.build.outputs.variant }} \ - -PTHOUGHTSYNC_CARGO_PROFILE=${{ steps.build.outputs.profile }} \ - -PTHOUGHTSYNC_VERSION_NAME=${{ steps.build.outputs.name }} \ - -PTHOUGHTSYNC_VERSION_CODE=${{ steps.build.outputs.code }} + -PINKWELL_CARGO_PROFILE=${{ steps.build.outputs.profile }} \ + -PINKWELL_VERSION_NAME=${{ steps.build.outputs.name }} \ + -PINKWELL_VERSION_CODE=${{ steps.build.outputs.code }} # Prints the certificate the APK was actually signed with, so the operator # can compare it against the fingerprint recorded when the key was @@ -226,10 +226,10 @@ jobs: if: steps.build.outputs.keystore != '' run: | mkdir -p dist - cp "app/build/outputs/apk/release/app-release.apk" dist/thoughtsync.apk - size="$(wc -c < dist/thoughtsync.apk | tr -d ' ')" - sha="$(sha256sum dist/thoughtsync.apk | cut -d' ' -f1)" - cat > dist/thoughtsync-android.json < dist/inkwell-android.json < + colour is Inkwell" across the three surfaces. --> #F5C518 diff --git a/android/app/src/main/res/values/themes.xml b/android/app/src/main/res/values/themes.xml index 5aa64e5..8a67a7e 100644 --- a/android/app/src/main/res/values/themes.xml +++ b/android/app/src/main/res/values/themes.xml @@ -6,5 +6,5 @@ truth in XML — the same reason the desktop reads its live theme rather than hardcoding a window colour. --> -