Commit Graph
40 Commits
Author SHA1 Message Date
KremeCN ae5bc871e8 fix: address final review findings for provider migration
- Add SessionCoordinator regression test covering switch from an
  authenticated ABox profile to Local experience: remote session is
  logged out and cleared, only Local is the active/observable session,
  credentials are cleared, auto-login disabled, and gateway state stays
  isolated (verified to fail when switch cleanup is removed).
- Replace if/else provider dispatch with exhaustive when over
  ProviderType in all three routing gateways so future enum additions
  fail compilation.
- Silence the known ExperimentalCoroutinesApi opt-in warning in
  ProviderSelectionViewModelTest with a class-level @OptIn.
2026-08-24 23:28:48 +08:00
KremeCN d7f8f8c8e9 docs: align product scope with LAN ABSDK access 2026-08-24 22:28:53 +08:00
KremeCN 6535aeef1a fix: require real ABSDK success before authentication 2026-08-24 21:50:58 +08:00
KremeCN 2ecca00371 feat: route device operations by active provider 2026-08-24 20:56:40 +08:00
KremeCN 4121836947 refactor: offer ABox and local experience providers 2026-08-24 20:07:10 +08:00
KremeCN 45f768208f feat: route provider sessions to ABSDK and simulation 2026-08-24 19:10:46 +08:00
KremeCN d560a78b63 feat: add production local experience simulation 2026-08-24 18:22:20 +08:00
KremeCN 8d5984fb36 fix: remove compatible provider consumers 2026-08-24 17:57:41 +08:00
KremeCN 227120bc11 refactor: remove compatible provider type 2026-08-24 15:59:12 +08:00
KremeCN 8931436338 docs: plan LAN ABSDK and local experience migration 2026-08-24 15:14:53 +08:00
KremeCN 45601d94fa docs: clarify provider-scoped device catalog boundary 2026-08-24 14:58:14 +08:00
KremeCN 7645f60b9c docs: define LAN ABSDK and local experience architecture 2026-08-24 14:55:34 +08:00
KremeCN 6d8f8d3079 fix: surface provider bootstrap failures 2026-08-24 09:51:42 +08:00
KremeCN d0ad601efc fix: bound provider storage retries 2026-08-24 02:31:59 +08:00
KremeCN cf2c59a493 fix: keep provider state during storage outages 2026-08-24 02:17:56 +08:00
KremeCN a0f55b041a fix: align session state across transitions 2026-08-24 01:47:53 +08:00
KremeCN d893a74bec fix: expire and localize login errors 2026-08-24 01:27:00 +08:00
KremeCN 40bbc2f30b fix: scope session errors to active screen 2026-08-24 01:02:58 +08:00
KremeCN 547146792f fix: serialize login submission state 2026-08-24 00:49:42 +08:00
KremeCN 1c5caf5a6b fix: enforce provider availability on restore 2026-08-24 00:33:21 +08:00
KremeCN 03bf28afbc fix: preserve session storage through transient failures 2026-08-24 00:06:59 +08:00
KremeCN 8788fe6ec5 fix: secure login route lifecycle 2026-08-23 23:45:39 +08:00
KremeCN 7cb0480a7a fix: harden provider session restoration 2026-08-23 23:30:11 +08:00
KremeCN 344fa6dafa fix: preserve login input during preference load 2026-08-23 23:02:01 +08:00
KremeCN 3764acb7ec fix: isolate login credentials across providers 2026-08-23 22:25:21 +08:00
KremeCN cc8eeebdc4 feat: add provider login flow 2026-08-23 21:58:04 +08:00
KremeCN 6f7d3248b0 feat: add ABSDK 0630 bridge (#3)
## Summary

- add a pure Kotlin/JVM anti-corruption layer for ABSDK 0630
- serialize blocking SDK calls and enforce one provider-scoped session
- map `ABRet`, raw maps, SDK exceptions, and error codes into typed domain results
- implement session, socket, temperature/humidity, and infrared gateways
- document bytecode-confirmed protocol facts, SDK limitations, and unresolved behavior
- align JVM module bytecode with the Android Java 17 target

## Scope boundaries

- the bridge is not wired into the Android app in this PR; debug continues using Fakes
- `setHostInfo` is intentionally not called or implemented as a provider flow
- logout clears only the bridge-local session because the JAR exposes no logout or token setter
- no real credentials, network calls, or hardware were used in tests
- `docs/requirement_spec.md` and `docs/project_plan.md` are unchanged

## Verification

```text
gradlew.bat --stop
gradlew.bat clean :absdk-bridge:test :domain:test :testing:fakes:test :android:app:lintDebug :android:app:assembleDebug :android:app:assembleRelease build
```

Result: `BUILD SUCCESSFUL`

The public JAR API was also rechecked with `javap`, including the actual `getThStatus(String)` method, absence of a public logout API, `ABRet.getDicDatas()`, `IrInfo.getStatus()`, and `downloadIrCodes(List<IrInfo>)`.
Reviewed-on: #3
Co-authored-by: KremeCN <3265494849@qq.com>
2026-08-23 07:19:05 +08:00
KremeCN e45de7fefe docs: define ABSDK device name identity 2026-08-22 22:29:25 +08:00
KremeCN ca0703a9a3 fix: make infrared downloads provider scoped 2026-08-22 22:21:34 +08:00
KremeCN cbc2dc7ec5 fix: redact passwords from credential strings 2026-08-22 22:14:47 +08:00
KremeCN 117f87f735 feat: establish Android project foundation 2026-08-22 22:06:50 +08:00
KremeCN 0b8c54bd21 docs: update package name to com.flagship.abox.manager 2026-08-22 17:12:49 +08:00
KremeCN 66334cf18e docs: add ABox Manager project plan 2026-08-22 16:04:45 +08:00
KremeCN 6f6f3755b5 docs: archive ABSDK Android sample 2026-08-22 15:48:16 +08:00
KremeCN 3c7c6002df docs: add LoginAsyncTaskDemo layout example 2026-08-22 14:19:11 +08:00
KremeCN 2954b56193 docs: document protected main branch workflow 2026-08-22 14:15:09 +08:00
KremeCN 519e865726 chore: add .gitignore 2026-08-22 14:03:57 +08:00
KremeCN 091103586a chore: add AGENTS.md rule hub with CLAUDE.md and .trae/rules/all.md entrypoints 2026-08-22 13:56:18 +08:00
KremeCN 4ba2508778 docs: add AsyncTask demo for ABSDK login 2026-08-22 12:13:24 +08:00
KremeCN 48f26e8ef8 chore: initial commit 2026-08-22 12:02:45 +08:00