Skip to content

Commit d4cb7f5

Browse files
committed
feat: add SQLite console and platform-aware version checks
- Implement a custom SQL console feature with domain, presentation, and UI modules, enabling ad-hoc SQLite queries across all platforms. - Add `ConsoleSurface`, a Compose Multiplatform terminal UI with theme-aware syntax coloring, multi-line input support, and scrollback history. - Introduce a typed `Platform` enum to replace the `platformName()` function for better type safety and platform-specific logic. - Update `CheckSqlCipherVersionUseCase` to support `sqlite3mc_version()` checks on Desktop and Web platforms. - Refactor `AdaptiveFrame` to utilize `WindowSizeClass` breakpoints for improved responsive layouts. - Replace custom `BackHandler` with `NavigationBackHandler` from `androidx.navigationevent`. - Enhance the vendored SQLDelight Paging3 extension with async-driver support for `generateAsync = true`. - Add an Android APK release workflow to GitHub Actions and update installation documentation. - Update project version to `8.5.4` and bump various dependencies, including Gradle (9.4.1), Kotlin (2.3.20), and KSP (2.3.6). - Update `.gitignore` to exclude AI-related directories (`.claude/`, `.codex/`).
1 parent 3e526d6 commit d4cb7f5

103 files changed

Lines changed: 2613 additions & 176 deletions

File tree

Some content is hidden

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

.github/workflows/android.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ on:
55
tags:
66
- android/*
77

8+
permissions:
9+
contents: write
10+
packages: read
11+
812
jobs:
913
build_unit_test_publish_job:
1014
name: Build -> Unit-test -> Publish
@@ -18,7 +22,7 @@ jobs:
1822
distribution: 'oracle'
1923
java-version: 17
2024
- name: Setup Gradle
21-
uses: gradle/actions/setup-gradle@v5
25+
uses: gradle/actions/setup-gradle@v6
2226
with:
2327
cache-read-only: false
2428
cache-overwrite-existing: true
@@ -29,9 +33,13 @@ jobs:
2933
- name: Build and Upload to Google Play
3034
working-directory: ./app/android
3135
run: fastlane build_bundle_publish
36+
- name: Release
37+
uses: softprops/action-gh-release@v3
38+
with:
39+
files: app/android/build/outputs/apk/release/*.apk
3240
- name: Archive build artifacts
3341
if: ${{ always() }}
34-
uses: actions/upload-artifact@v5
42+
uses: actions/upload-artifact@v7
3543
with:
3644
name: build-artifacts
3745
path: |

.github/workflows/desktop.yaml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ on:
55
tags:
66
- desktop/*
77

8+
permissions:
9+
contents: write
10+
packages: read
11+
812
jobs:
913
build_job:
1014
name: Package
@@ -22,7 +26,7 @@ jobs:
2226
distribution: 'oracle'
2327
java-version: 17
2428
- name: Setup Gradle
25-
uses: gradle/actions/setup-gradle@v5
29+
uses: gradle/actions/setup-gradle@v6
2630
with:
2731
cache-read-only: false
2832
cache-overwrite-existing: true
@@ -44,7 +48,7 @@ jobs:
4448
if: matrix.os != 'macos-latest'
4549
run: ./gradlew packageReleaseDistributionForCurrentOS
4650
- name: Release
47-
uses: softprops/action-gh-release@v2
51+
uses: softprops/action-gh-release@v3
4852
with:
4953
files: |
5054
app/desktop/build/compose/binaries/main-release/deb/*.deb

.github/workflows/ios.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
name: iOS CD
22

3+
permissions:
4+
contents: read
5+
36
on:
47
push:
58
tags:
@@ -19,7 +22,7 @@ jobs:
1922
distribution: 'oracle'
2023
java-version: 17
2124
- name: Setup Gradle
22-
uses: gradle/actions/setup-gradle@v5
25+
uses: gradle/actions/setup-gradle@v6
2326
with:
2427
cache-read-only: false
2528
cache-overwrite-existing: true
@@ -46,7 +49,7 @@ jobs:
4649
run: fastlane appstore_publish_deliver_lane
4750
- name: Archive build artifacts
4851
if: ${{ always() }}
49-
uses: actions/upload-artifact@v5
52+
uses: actions/upload-artifact@v7
5053
with:
5154
name: test-artifacts
5255
path: |

.github/workflows/kmp.yml

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ on:
88
- '**'
99
pull_request:
1010

11+
permissions:
12+
contents: read
13+
1114
jobs:
1215
build_job:
1316
name: Build (Unit-tests & Android-Lint)
@@ -17,14 +20,14 @@ jobs:
1720
- name: Check out
1821
uses: actions/checkout@v6
1922
- name: Gradle Wrapper Validation
20-
uses: gradle/actions/wrapper-validation@v5
23+
uses: gradle/actions/wrapper-validation@v6
2124
- name: Set up JDK 17
2225
uses: actions/setup-java@v5
2326
with:
2427
distribution: 'oracle'
2528
java-version: 17
2629
- name: Setup Gradle
27-
uses: gradle/actions/setup-gradle@v5
30+
uses: gradle/actions/setup-gradle@v6
2831
with:
2932
cache-read-only: false
3033
cache-overwrite-existing: true
@@ -42,7 +45,7 @@ jobs:
4245
run: ./gradlew build
4346
- name: Archive build-output artifacts
4447
if: always()
45-
uses: actions/upload-artifact@v5
48+
uses: actions/upload-artifact@v7
4649
with:
4750
name: output-build-artifacts
4851
path: |
@@ -70,7 +73,7 @@ jobs:
7073
distribution: 'oracle'
7174
java-version: 17
7275
- name: Setup Gradle
73-
uses: gradle/actions/setup-gradle@v5
76+
uses: gradle/actions/setup-gradle@v6
7477
with:
7578
cache-read-only: false
7679
cache-overwrite-existing: true
@@ -112,7 +115,7 @@ jobs:
112115
script: ./gradlew :app:android:connectedCheck
113116
- name: Archive ui-tests-output artifacts
114117
if: always()
115-
uses: actions/upload-artifact@v5
118+
uses: actions/upload-artifact@v7
116119
with:
117120
name: output-ui-tests-artifacts-${{ matrix.api-level }}-${{ matrix.target }}
118121
path: |

.github/workflows/web.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
distribution: 'oracle'
3232
java-version: 17
3333
- name: Setup Gradle
34-
uses: gradle/actions/setup-gradle@v5
34+
uses: gradle/actions/setup-gradle@v6
3535
with:
3636
cache-read-only: false
3737
cache-overwrite-existing: true
@@ -45,7 +45,7 @@ jobs:
4545
run: gradle app:web:wasmJsBrowserDistribution
4646
- name: Setup Pages
4747
if: ${{ steps.build.outcome != 'failure' || steps.dist.outcome != 'failure' }}
48-
uses: actions/configure-pages@v5
48+
uses: actions/configure-pages@v6
4949
- name: Upload artifact
5050
if: ${{ steps.build.outcome != 'failure' || steps.dist.outcome != 'failure' }}
5151
uses: actions/upload-pages-artifact@v4
@@ -61,4 +61,4 @@ jobs:
6161
steps:
6262
- name: Deploy to GitHub Pages
6363
id: deployment
64-
uses: actions/deploy-pages@v4
64+
uses: actions/deploy-pages@v5

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,7 @@ kotlin-js-store/
8484
### desktop
8585
# Code signing files (macOS)
8686
/app/desktop/macOS_development.p12
87+
88+
# AI
89+
.claude/
90+
.codex/

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
### Project Structure & Module Organization
1111
- Core: `core/domain`, `core/presentation`, `core/data/db-sqldelight` (default), `core/data/db-room` (optional), `core/test`.
12+
- Features: `feature/backup/{domain,ui}`, `feature/console/{domain,presentation,ui}`, `feature/file-explorer/data`.
1213
- UI: `ui/shared` (common Compose code and resources), `ui/test` (multiplatform Compose UI tests), `ui/test-jvm` (JVM-specific UI test utilities).
1314
- Apps: `app/android`, `app/desktop`, `app/web`, `app/ios-kit` (CocoaPods framework), `app/iosApp` (Xcode project).
1415
- Tooling: `build-logic` (Gradle conventions), `thirdparty` (vendored modules), `gradle/libs.versions.toml` (versions).

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,27 @@ 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.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [8.5.4] - 2026-04-18
9+
10+
### Features
11+
- Add SQL console feature for running ad-hoc queries against the app database
12+
- Support SQLite3MC version checks on Desktop and Web platforms
13+
14+
### Refactoring
15+
- Rework `AdaptiveFrame` to use `WindowSizeClass` breakpoints for adaptive layouts
16+
- Replace custom `BackHandler` with `NavigationBackHandler`
17+
- Replace `platformName()` function with a typed `Platform` enum
18+
- Refactor `SqlDelightDbHolder` logging
19+
20+
### Documentation
21+
- Update SQLDelight Paging3 fork documentation and metadata
22+
23+
### Chores
24+
- Add Android APK release workflow and installation guide
25+
- Update Gradle Wrapper, KSP, androidSqlCipher, kotlinx-serialization, and other dependencies in `libs.versions.toml`
26+
- Bump GitHub Actions (`upload-artifact` 5→7, `configure-pages` 5→6, `deploy-pages` 4→5, `gradle/actions` 5→6, `softprops/action-gh-release` 2→3) and iOS `addressable` 2.8.4→2.9.0
27+
- Update `.gitignore` to exclude AI-related directories
28+
829
## [8.5.3] - 2026-03-10
930

1031
### Features

SECURITY.md

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
Only the latest released version of NoteDelight receives security updates.
6+
Older releases will not be patched; please upgrade to the latest version
7+
before reporting a vulnerability.
8+
9+
| Version | Supported |
10+
| ------- | ------------------ |
11+
| 8.5.x | :white_check_mark: |
12+
| < 8.5 | :x: |
13+
14+
## Reporting a Vulnerability
15+
16+
**Please do not report security vulnerabilities through public GitHub
17+
issues, discussions, or pull requests.**
18+
19+
Instead, report them privately using one of the following channels:
20+
21+
- **GitHub Security Advisories** (preferred): open a private report at
22+
https://github.com/softartdev/NoteDelight/security/advisories/new
23+
- **Email**: send details to artik222012@gmail.com. If you wish to encrypt
24+
your report, request a PGP key in your first message.
25+
26+
Please include as much of the following as you can:
27+
28+
- A description of the issue and the affected component (Android, iOS,
29+
desktop, or shared module).
30+
- The version / commit of NoteDelight you tested against.
31+
- Step-by-step instructions to reproduce the issue.
32+
- Proof-of-concept code, logs, or screenshots, if available.
33+
- The potential impact (data disclosure, code execution, bypass of the
34+
note password, etc.).
35+
36+
### What to expect
37+
38+
- **Acknowledgement** within 72 hours of your report.
39+
- **Initial assessment** (accepted / needs more info / declined) within
40+
7 days.
41+
- **Status updates** at least every 14 days while the issue is being
42+
worked on.
43+
- **Fix and disclosure**: once a fix is ready, a new release will be
44+
published and the advisory made public. Reporters who wish to be
45+
credited will be acknowledged in the advisory and CHANGELOG.
46+
47+
### Scope
48+
49+
In scope:
50+
51+
- The NoteDelight Android, iOS, web, and desktop apps built from this
52+
repository.
53+
- The shared Kotlin Multiplatform modules, including note storage and
54+
encryption.
55+
56+
Out of scope:
57+
58+
- Vulnerabilities in third-party dependencies that are already tracked
59+
upstream (please report those to the upstream project; you may still
60+
notify us so we can bump the dependency).
61+
- Issues that require a physical, already-unlocked device with the app
62+
open.
63+
- Social-engineering or phishing attacks against users or maintainers.

app/android/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ android {
2525
applicationId = "com.softartdev.noteroom"
2626
minSdk = libs.versions.minSdk.get().toInt()
2727
targetSdk = libs.versions.targetSdk.get().toInt()
28-
versionCode = 853
29-
versionName = "8.5.3"
28+
versionCode = 854
29+
versionName = "8.5.4"
3030
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
3131
testInstrumentationRunnerArguments["clearPackageData"] = "true"
3232
vectorDrawables.useSupportLibrary = true

0 commit comments

Comments
 (0)