Integrate AppFunctions and fix new participants sync#171
Conversation
There was a problem hiding this comment.
Pull request overview
Integrates Android AppFunctions support into the shared integration layer and adjusts sync observation so participant changes trigger event sync, alongside related dependency/CI updates and refreshed public privacy/terms docs.
Changes:
- Add Android AppFunctions entry point + serializable DTOs, wiring into existing event/expense domain APIs.
- Refactor sync observer wiring (introducing an observer-facing delegate seam) so participant list changes also trigger sync; add host-test regression coverage.
- Update build tooling/versions (AppFunctions, KSP, Guava for tests), CI steps, iOS Sentry initialization, and public/privacy documentation.
Reviewed changes
Copilot reviewed 35 out of 35 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| web/public/terms.html | Updates “Last updated” and clarifies privacy/third-party wording. |
| web/public/privacy.html | Updates “Last updated” and refines diagnostics/identifiers disclosures. |
| android/shared/integration/base/src/androidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt | New AppFunctions API surface (events/currencies/debts/participants/expenses). |
| android/shared/integration/base/src/androidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/AppFunctionParticipantMutation.kt | Adds AppFunctions result DTO for participant mutation. |
| android/shared/integration/base/src/androidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/AppFunctionExpenseMutation.kt | Adds AppFunctions result DTO for expense mutation. |
| android/shared/integration/base/src/androidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/AppFunctionEvent.kt | Adds AppFunctions event summary DTO. |
| android/shared/integration/base/src/androidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/AppFunctionDebt.kt | Adds AppFunctions debt line DTO. |
| android/shared/integration/base/src/androidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/AppFunctionCurrency.kt | Adds AppFunctions currency DTO. |
| android/shared/integration/base/src/androidDeviceTest/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctionsTest.kt | Adds device tests for the new AppFunctions API. |
| android/shared/integration/base/build.gradle.kts | Enables KSP/appfunctions deps; configures device test execution for this module. |
| android/shared/feature/sync/src/iosMain/kotlin/com/inwords/expenses/feature/sync/data/EventsSyncManager.ios.kt | Makes iOS sync manager extend observer delegate + overrides methods. |
| android/shared/feature/sync/src/commonMain/kotlin/com/inwords/expenses/feature/sync/domain/EventsSyncObserver.kt | Updates observation pipeline to trigger sync when participants change. |
| android/shared/feature/sync/src/commonMain/kotlin/com/inwords/expenses/feature/sync/data/EventsSyncManagerObserverDelegate.kt | Introduces delegate seam for observer-facing sync methods. |
| android/shared/feature/sync/src/commonMain/kotlin/com/inwords/expenses/feature/sync/data/EventsSyncManager.kt | Updates expect class to extend delegate and override observer methods. |
| android/shared/feature/sync/src/commonMain/kotlin/com/inwords/expenses/feature/sync/api/SyncComponent.kt | Wires observer to delegate seam instead of concrete expect/actual type. |
| android/shared/feature/sync/src/androidMain/kotlin/com/inwords/expenses/feature/sync/data/SyncManager.android.kt | Makes Android sync manager extend observer delegate + overrides methods. |
| android/shared/feature/sync/src/androidHostTest/kotlin/com/inwords/expenses/feature/sync/domain/EventsSyncObserverTest.kt | Adds host-test coverage for participant/expense/refresh-triggered sync. |
| android/shared/feature/sync/build.gradle.kts | Enables host-test target and dependencies for sync module. |
| android/shared/feature/expenses/src/commonTest/kotlin/com/inwords/expenses/feature/expenses/domain/DebtCalculatorTest.kt | Adds test asserting netted barter debt summary output. |
| android/shared/feature/expenses/src/commonMain/kotlin/com/inwords/expenses/feature/expenses/ui/converter/toUi.kt | Adds UI converter for new debt summary model. |
| android/shared/feature/expenses/src/commonMain/kotlin/com/inwords/expenses/feature/expenses/domain/model/BarterAccumulatedDebtSummary.kt | Adds domain model representing a netted debt line. |
| android/shared/feature/expenses/src/commonMain/kotlin/com/inwords/expenses/feature/expenses/domain/DebtCalculator.kt | Exposes barter debt summaries + adds top-level calculator helper. |
| android/shared/feature/events/src/commonMain/kotlin/com/inwords/expenses/feature/events/domain/CreateEventUseCase.kt | Delegates event creation to new parameterized use case. |
| android/shared/feature/events/src/commonMain/kotlin/com/inwords/expenses/feature/events/domain/CreateEventFromParametersUseCase.kt | New use case to create events from explicit parameters (supports AppFunctions). |
| android/shared/feature/events/src/commonMain/kotlin/com/inwords/expenses/feature/events/api/EventsComponent.kt | Wires new create-from-parameters use case into component graph. |
| android/iosApp/iosApp/iOSApp.swift | Initializes Sentry with a production/debug flag at app startup. |
| android/gradle/shared.versions.toml | Adds AppFunctions + Guava; refactors MockK version to version.ref. |
| android/docs/ios-validation-checklist.md | Updates Gradle commands to ./gradlew and clarifies iOS test status. |
| android/docs/ios-app-privacy.md | Updates iOS privacy alignment notes for Sentry initialization. |
| android/benchmarks/databases/tools/.gitignore | Ignores Python __pycache__ for benchmark tooling. |
| android/app/proguard-rules-autotest.pro | Suppresses a new javax.lang.model.element.Modifier warning in autotest builds. |
| android/app/build.gradle.kts | Adds Guava to autotest runtime to support new tooling/deps. |
| android/AGENTS.md | Documents AppFunctions entry point + adds testing guidance for new host/device tests. |
| AGENTS.md | Adds repo-wide guidance: keep production types one per file. |
| .github/workflows/android.yml | Runs AppFunctions device tests in CI and uploads their reports. |
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Show resolved
Hide resolved
...ceTest/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctionsTest.kt
Outdated
Show resolved
Hide resolved
...ceTest/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctionsTest.kt
Outdated
Show resolved
Hide resolved
...ceTest/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctionsTest.kt
Outdated
Show resolved
Hide resolved
...ture/sync/src/iosMain/kotlin/com/inwords/expenses/feature/sync/data/EventsSyncManager.ios.kt
Outdated
Show resolved
Hide resolved
...ature/sync/src/commonMain/kotlin/com/inwords/expenses/feature/sync/data/EventsSyncManager.kt
Show resolved
Hide resolved
...ommonMain/kotlin/com/inwords/expenses/feature/sync/data/EventsSyncManagerObserverDelegate.kt
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3f4f392698
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Outdated
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Show resolved
Hide resolved
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f67cacffae
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Outdated
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Outdated
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Show resolved
Hide resolved
...ndroidMain/kotlin/com/inwords/expenses/integration/base/appfunctions/CommonExAppFunctions.kt
Show resolved
Hide resolved
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4fce042d33
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
No description provided.