Skip to content

Commit a202aa9

Browse files
committed
feat: Implement adaptive UI for tablets and large screens
This commit introduces a major feature enhancement by implementing an adaptive user interface that provides a two-pane layout for tablets and larger screens, significantly improving the user experience on these devices. The presentation layer has been refactored to use a unidirectional data flow with sealed `Action` interfaces, simplifying event handling and making the UI more predictable. ### Adaptive UI - Implemented `AdaptiveScreen` using `ListDetailPaneScaffold` to display a list-detail layout. - Integrated `ThreePaneScaffoldNavigator` for managing navigation between the list and detail panes. - Introduced `AdaptiveInteractor` to coordinate the selected note state between `MainViewModel` and `NoteViewModel`. - Updated `MainScreen` and `NoteDetail` to work within the adaptive layout, including selection highlighting in the note list. - Added a placeholder for the detail pane when no note is selected. ### Refactor: Unidirectional Data Flow with Action Interfaces - Refactored all ViewModels (`Main`, `Note`, `Settings`, `Security`, `Dialogs`) to use a single `onAction(Action)` method for handling UI events. - Defined sealed `Action` interfaces for each screen to provide type-safe, explicit event handling. - Removed multiple lambda callbacks from `Result` state classes, simplifying Composable function signatures and improving state management. ### Web (WASM) - Fixed the WebAssembly compilation error by implementing a robust Webpack plugin (`SQLJsWasmFixPlugin`) to normalize `sql-wasm.wasm` paths. - The plugin handles various incorrect path patterns and ensures all required `sql.js` files are correctly copied and referenced. - The web app is now fully functional on GitHub Pages. ### Documentation & Housekeeping - Added comprehensive `README.md` files for every module in the project, detailing their architecture, purpose, and usage. - Created guides for architecture, testing, version management, and AI agent contributions in the `/docs` directory. - Upgraded Gradle and multiple library dependencies to their latest versions. - Cleaned up the CI workflow for the web build and removed redundant build attempts in the KMP workflow.
1 parent 246a5d2 commit a202aa9

File tree

104 files changed

+9914
-489
lines changed

Some content is hidden

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

104 files changed

+9914
-489
lines changed

.github/workflows/kmp.yml

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,7 @@ jobs:
2828
with:
2929
cache-read-only: false
3030
cache-overwrite-existing: true
31-
- name: Build (1st attempt)
32-
id: build_1
33-
continue-on-error: true
34-
run: ./gradlew build
35-
- name: Build (2nd attempt)
36-
id: build_2
37-
if: ${{ steps.build_1.outcome == 'failure' }}
38-
continue-on-error: true
39-
run: ./gradlew build
40-
- name: Build (3rd attempt)
41-
if: ${{ steps.build_2.outcome == 'failure' }}
31+
- name: Build
4232
run: ./gradlew build
4333
- name: Archive build-output artifacts
4434
if: always()

.github/workflows/web.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Web CD
22

33
on:
44
push:
5-
branches: ["master", "dev", "wasmJS"]
5+
branches: ["master", "dev", "wasmJS", "web"]
66

77
# Allows you to run this workflow manually from the Actions tab
88
workflow_dispatch:

.gitignore

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ out/
1818
.gradle/
1919
build/
2020

21+
# Kotlin metadata files
22+
/.kotlin/
23+
24+
# macOS indexing file
25+
.DS_Store
26+
2127
# Local configuration file (sdk path, etc)
2228
local.properties
2329
# Signing keys.
@@ -70,5 +76,3 @@ app/android/note_room_key_store.jks
7076
/app/iosApp/fastlane/28F5CB4337.json
7177
/app/iosApp/fastlane/ios_distribution.p12
7278
/app/iosApp/fastlane/NoteDelight_Distribution_Profile.mobileprovision
73-
74-
/.kotlin/

AGENTS.md

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
# Repository Guidelines
22

3-
## Project Structure & Module Organization
3+
> **📚 For comprehensive documentation**, see:
4+
> - [CONTRIBUTING.md](CONTRIBUTING.md) - Full contribution guide with code style and architecture
5+
> - [docs/](docs/) - Detailed architecture, testing, and AI agent guides
6+
> - Module READMEs - Each module has detailed documentation in its folder
7+
8+
## Quick Reference
9+
10+
### Project Structure & Module Organization
411
- Core: `core/domain`, `core/presentation`, `core/data/db-sqldelight` (default), `core/data/db-room` (optional), `core/test`.
512
- UI: `ui/shared` (common Compose code and resources), `ui/test-jvm` (JVM Compose UI test utilities).
613
- Apps: `app/android`, `app/desktop`, `app/web`, `app/ios-kit` (CocoaPods framework), `app/iosApp` (Xcode project).
@@ -37,3 +44,9 @@
3744
- Never commit secrets or real keystores; keep `keystore.properties` and `local.properties` local.
3845
- `google-services.json` should contain non-sensitive config only; sanitize before sharing.
3946
- Keep SDK/JDK versions in sync with `libs.versions.toml`; avoid editing CI-only settings locally.
47+
48+
## Additional Resources
49+
- **Architecture**: [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) - Clean Architecture, MVVM, dependency flow
50+
- **Testing**: [docs/TESTING_GUIDE.md](docs/TESTING_GUIDE.md) - Testing pyramid, patterns, tools
51+
- **AI Agents**: [docs/AI_AGENT_GUIDE.md](docs/AI_AGENT_GUIDE.md) - Comprehensive guide for AI contributors
52+
- **Module Docs**: Each module folder contains a detailed README.md

0 commit comments

Comments
 (0)