Skip to content

feat(api): add compatibility with Chronos oRPC backend - #41

Merged
nemvince merged 9 commits into
mainfrom
feat/chronos-orpc-compat
Oct 19, 2026
Merged

nemvince merged 9 commits into
mainfrom
feat/chronos-orpc-compat

Conversation

@merenyimiklos

Copy link
Copy Markdown
Contributor

Summary

Updates Mergen to support the new Chronos oRPC backend introduced in [filcdev/filc#401](filcdev/filc#401).

Changes

  • Updated the OpenAPI specification and generated Kotlin API client.
  • Adapted API response handling to the new response format without the { success, data } envelope.
  • Added environment-based configuration for API endpoints and Microsoft Entra authentication.
  • Separated local development settings from production configuration.
  • Prevented local environment configuration from being committed.

Verification

  • Android debug build successful
  • Android lint successful
  • Manual testing against the local Chronos backend successful
  • Unit tests — Gradle Test Executor startup issue (GradleWorkerMain not found)

Notes

Depends on the backend changes from filcdev/filc#401. The mobile changes should be deployed together with the compatible backend API.

Local development configuration is excluded from version control.

merenyimiklos and others added 9 commits October 14, 2026 00:30
* Delete `DEV_DISTRIBUTION.md` containing developer distribution guidelines.
* Delete `FILC_DESIGN_PORT.md` detailing legacy visual design port specifications.
* Add `buildProfile` parameter to `GenerateMergenEnvironment` task supporting `local` and `production` profiles.
* Enforce production profile and validate HTTPS origin and Entra UUIDs for release tasks.
* Read production environment settings from `.env.production` using `MERGEN_RELEASE_*` keys.
* Update default API origin in `.env.example` to point to local emulator backend (`http://10.0.2.2:3001`).
* Split the `require` exception message string into multiple lines to improve readability in `composeApp/build.gradle.kts`.
… backend

Regenerate the Kotlin client from the merged Chronos oRPC OpenAPI document
(filcdev/filc#401 + #415; 132 paths), adopt it across the app through a single
ChronosApi facade in data/, and drop the hand-written FilcPublicApi,
ChronosPublicApi and the empty generated test stubs.

- sessionAuth in the generated ApiClient is a cookie carried by the shared
  authenticated Ktor client, not a filc.session_token query param
- ApiClient.BASE_URL points at MergenEnvironment.API_BASE_URL; JSON is compact
- generated models with unserializable anyOf placeholders fixed to JsonElement
- moved lessons now carry full lesson objects instead of lessonNames
Reformat all Kotlin sources so the Kotlin Linting (CLI) check passes:
trailing commas, import ordering, expression wrapping, unused imports.
Generated api/** sources are formatted too for consistency, even though
the lint workflow excludes them.
- mise.toml pins java 21, gradle 8.14.3, ruby 3.3, ktlint 1.1.1,
  github-cli and android-sdk, plus an sdk-components task for the
  Android platform AGP compiles against
- drop the Gradle wrapper (gradlew, gradle/wrapper) and the checked-in
  ktlint binary (.local-tools/ktlint-1.1.1); builds and the Xcode
  framework phase use the mise-installed gradle
- CI: replace setup-java/setup-ruby with mise-action, install fastlane
  gems with actions/cache keyed on Gemfile.lock, and skip local build/
  output in the ktlint command
- lint hygiene: .editorconfig disables rules under build/ so bare
  `ktlint` and `ktlint --format` runs match CI, and pin packageOfResClass
  so generated Compose resources use hu.petrik.filcapp.generated.resources
  instead of the underscore package derived from rootProject.name
- bump actions to latest majors: checkout v7, upload-artifact v7,
  download-artifact v8, cache v6, setup-gradle v6 (cache-provider: basic
  keeps the actions/cache behavior) and pin all refs by SHA
GitHub's automatic dependency submission (Security and quality ->
Advanced Security) requires a Gradle wrapper: without one it falls back
to the runner's Gradle 9.8.1, which AGP 8.11.2 cannot run on, so the
check failed on every push. Generate and submit the snapshot ourselves
with the Gradle installed by mise instead, so no wrapper is needed.

Runs on pushes to all branches, mirroring where the automatic submission
used to run. Disable the automatic one in repository settings so it stops
failing.
Without a Gradle wrapper, gradle/actions/dependency-submission@v6
refuses to run: "Specify 'gradle-version' for projects without Gradle
wrapper configured". Read the version from mise.toml at runtime so it
stays the single source of truth; the action caches the distribution
download between runs.
@nemvince
nemvince requested a review from busyLambda October 17, 2026 10:43
@nemvince
nemvince merged commit db9b23c into main Oct 19, 2026
7 checks passed
@nemvince
nemvince deleted the feat/chronos-orpc-compat branch October 19, 2026 19:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants