Skip to content

Commit 7eb17dc

Browse files
committed
feat: Add settings navigation from SignIn screen and BackHandler
- A settings icon button has been added to the `SignInScreen` top app bar, allowing navigation to the settings screen. - The `SignInViewModel` now handles `OnSettingsClick` and `OnSignInClick` actions. - A `BackHandler` has been added to the `SettingsScreen` to handle back navigation, returning to the splash/main screen if the back stack is empty. feat: Introduce macOS code signing - Added macOS code signing to the desktop build process. - Introduced a new script (`import_macos_dev_id_cert.sh`) to import the Developer ID certificate into a temporary keychain on macOS runners. - Created `keystore.properties` for desktop and encrypted it for CI. - Updated the `desktop.yaml` workflow to decrypt secrets and execute the certificate import script for macOS jobs. - Added `macOS_development.p12` to `.gitignore`. refactor: Replace Napier with Kermit for logging - The logging library has been migrated from Napier to Kermit across the entire project. - Napier dependencies (`io.github.aakira:napier`) have been replaced with Kermit (`co.touchlab:kermit`). - `Napier.x(...)` calls have been updated to `Logger.x { ... }` using lambda syntax for lazy message evaluation. - `CrashlyticsAntilog` has been replaced with `kermit-crashlytics`. - `NapierKoinLogger` has been replaced with `kermit-koin`. - Custom `PrintAntilog` for tests has been replaced with a Kermit `PrintLogWriter`. chore: Update dependencies and Gradle version - Upgraded Gradle Wrapper from `9.2.0` to `9.2.1`. - Bumped various library versions in `libs.versions.toml`, including KSP, Room, and AndroidX libraries. - Bumped app version to `8.4.7`. - Enabled Gradle's type-safe project accessors in `settings.gradle.kts`. chore: Update GitHub Actions and CI scripts - Updated `actions/checkout` from `v5` to `v6` in all workflows. - Added caching for Kotlin/Native to the `kmp.yml` workflow. - Introduced a script to extract the Kotlin version for more precise cache keys. - Renamed encrypted `keystore.properties.gpg` to `android.keystore.properties.gpg` for clarity. - Added a `build_quick.sh` script to speed up local builds by excluding iOS-specific tasks. - Added `desktop.keystore.properties.gpg` and `macOS_development.p12.gpg` to encryption/decryption scripts. docs: Improve documentation and clean up README - Moved detailed screenshots from the main `README.md` to a separate `docs/screenshoots/screenshots.md` file. - Added a `MANUAL_BUILD_INSTALL.md` guide with detailed instructions for all platforms. - Updated `CONTRIBUTING.md`, `ARCHITECTURE.md`, `AGENTS.md`, and module READMEs to reflect the new logging library and build process changes.
1 parent 46c329b commit 7eb17dc

File tree

110 files changed

+1052
-973
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+1052
-973
lines changed
Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
#!/bin/sh
22

33
echo "28d0921e0d134ac1655c3b93e675ed50aa77233d02966130beff857fb60cf4f6 ./app/android/keystore.properties" | sha256sum -c -
4-
54
echo "cc018f4fb00ec66cf3b8d918ce4db107945502ab7c47dd0c33fc10e56d79d1a2 ./app/android/note_room_key_store.jks" | sha256sum -c -
6-
75
echo "58e5bdf33538df1638858d0f8a8bba8161f29b4846a7b6d0aaba3279650aa04a ./app/android/fastlane/api-7350020584032910214-328107-d8d3807d1e1a.json" | sha256sum -c -
86

97
echo "7b9f841129997ddb098e03dd7099a3341dbfa012c31e4cb465b92ddd476cca7a ./app/iosApp/fastlane/28F5CB4337.json" | sha256sum -c -
10-
118
echo "e36a29b3964c8bd90030f93ac986a39510185df582a783f1b946e6127a005e38 ./app/iosApp/fastlane/ios_distribution.p12" | sha256sum -c -
12-
139
echo "4fb66d6fbe9fc4a544303e6e516da2ee3314187e28fc5aacb9631f9b42b511b0 ./app/iosApp/fastlane/NoteDelight_Distribution_Profile.mobileprovision" | sha256sum -c -
10+
11+
echo "5439f53423060953d110cb3217e089b23da20aa7559e80b32767184f2516bba0 ./app/desktop/keystore.properties" | sha256sum -c -
12+
echo "97f56f5e6e5bcefb738333f22170be94e0196c34958d778067295697a30f5068 ./app/desktop/macOS_development.p12" | sha256sum -c -

.github/scripts/decrypt_secret.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# --batch to prevent interactive command --yes to assume "yes" for questions
55

66
gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
7-
--output ./app/android/keystore.properties ./.github/secrets/keystore.properties.gpg
7+
--output ./app/android/keystore.properties ./.github/secrets/android.keystore.properties.gpg
88

99
gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
1010
--output ./app/android/note_room_key_store.jks ./.github/secrets/note_room_key_store.jks.gpg
@@ -20,3 +20,9 @@ gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
2020

2121
gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
2222
--output ./app/iosApp/fastlane/NoteDelight_Distribution_Profile.mobileprovision ./.github/secrets/NoteDelight_Distribution_Profile.mobileprovision.gpg
23+
24+
gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
25+
--output ./app/desktop/keystore.properties ./.github/secrets/desktop.keystore.properties.gpg
26+
27+
gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" \
28+
--output ./app/desktop/macOS_development.p12 ./.github/secrets/macOS_development.p12.gpg

.github/scripts/encrypt_secret.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# --batch to prevent interactive command --yes to assume "yes" for questions
55

66
gpg --symmetric --cipher-algo AES256 --batch --yes --passphrase="$LARGE_SECRET_PASSPHRASE" \
7-
--output ./.github/secrets/keystore.properties.gpg ./app/android/keystore.properties
7+
--output ./.github/secrets/android.keystore.properties.gpg ./app/android/keystore.properties
88

99
gpg --symmetric --cipher-algo AES256 --batch --yes --passphrase="$LARGE_SECRET_PASSPHRASE" \
1010
--output ./.github/secrets/note_room_key_store.jks.gpg ./app/android/note_room_key_store.jks
@@ -20,3 +20,9 @@ gpg --symmetric --cipher-algo AES256 --batch --yes --passphrase="$LARGE_SECRET_P
2020

2121
gpg --symmetric --cipher-algo AES256 --batch --yes --passphrase="$LARGE_SECRET_PASSPHRASE" \
2222
--output ./.github/secrets/NoteDelight_Distribution_Profile.mobileprovision.gpg ./app/iosApp/fastlane/NoteDelight_Distribution_Profile.mobileprovision
23+
24+
gpg --symmetric --cipher-algo AES256 --batch --yes --passphrase="$LARGE_SECRET_PASSPHRASE" \
25+
--output ./.github/secrets/desktop.keystore.properties.gpg ./app/desktop/keystore.properties
26+
27+
gpg --symmetric --cipher-algo AES256 --batch --yes --passphrase="$LARGE_SECRET_PASSPHRASE" \
28+
--output ./.github/secrets/macOS_development.p12.gpg ./app/desktop/macOS_development.p12
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# This script extracts the Kotlin version from gradle/libs.versions.toml
5+
# and prints it to stdout.
6+
#
7+
# It is intended to be used from GitHub Actions to build cache keys that
8+
# depend only on the Kotlin version.
9+
10+
# Resolve repository root assuming the script is located at .github/scripts/
11+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12+
REPO_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
13+
VERSIONS_FILE="$REPO_ROOT/gradle/libs.versions.toml"
14+
15+
if [[ ! -f "$VERSIONS_FILE" ]]; then
16+
echo "gradle/libs.versions.toml not found at: $VERSIONS_FILE" >&2
17+
exit 1
18+
fi
19+
20+
# Find the line like: kotlin = "2.2.21"
21+
LINE="$(grep -E '^kotlin *= *"' "$VERSIONS_FILE" | head -n1 || true)"
22+
23+
if [[ -z "$LINE" ]]; then
24+
echo 'Could not find a line with kotlin = "..." in gradle/libs.versions.toml' >&2
25+
exit 1
26+
fi
27+
28+
# Extract the value between quotes
29+
VERSION="$(sed -E 's/.*"([^"]+)".*/\1/' <<< "$LINE")"
30+
31+
if [[ -z "$VERSION" ]]; then
32+
echo 'Failed to extract Kotlin version from line:' >&2
33+
echo "$LINE" >&2
34+
exit 1
35+
fi
36+
37+
echo "$VERSION"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
KEYCHAIN_NAME="build.keychain-db"
5+
KEYCHAIN_PASSWORD=""
6+
KEYCHAIN_PATH="$HOME/Library/Keychains/$KEYCHAIN_NAME"
7+
P12_PATH="./app/desktop/macOS_development.p12"
8+
9+
# Create keychain if it doesn't exist yet
10+
if [ ! -f "$KEYCHAIN_PATH" ]; then
11+
security create-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_NAME"
12+
fi
13+
14+
# Make sure keychain doesn't auto-lock during the build
15+
# -l : lock after timeout
16+
# -u : lock when user logs out
17+
# -t : timeout in seconds (here: 6 hours)
18+
security set-keychain-settings -lut 21600 "$KEYCHAIN_PATH"
19+
20+
# Add keychain to the search list and make it default for this session
21+
security list-keychains -s "$KEYCHAIN_PATH" $(security list-keychains | sed 's/[\",]//g')
22+
security default-keychain -s "$KEYCHAIN_PATH"
23+
security unlock-keychain -p "$KEYCHAIN_PASSWORD" "$KEYCHAIN_PATH"
24+
25+
# Import Developer ID certificate
26+
security import "$P12_PATH" \
27+
-k "$KEYCHAIN_PATH" \
28+
-P "$LARGE_SECRET_PASSPHRASE" \
29+
-A \
30+
-T /usr/bin/codesign \
31+
-T /usr/bin/productbuild \
32+
-T /usr/bin/security
33+
34+
# Allow non-interactive access for codesign / productbuild / notarytool
35+
security set-key-partition-list \
36+
-S apple-tool:,apple: \
37+
-s \
38+
-k "$KEYCHAIN_PASSWORD" \
39+
"$KEYCHAIN_PATH"
-1 Bytes
Binary file not shown.
Binary file not shown.
166 Bytes
Binary file not shown.
Binary file not shown.
300 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)