diene_auth_engine 1.0.2
diene_auth_engine: ^1.0.2 copied to clipboard
Logto auth flows, per-resource tokens, claims-first per-backend onboarding, deferred login, and Doc B landscape selection for Flutter applications.
Changelog #
All notable changes to this package are documented here. Releases are managed from conventional commits by the repository release workflow.
1.0.2 - 2026-07-27 #
1.0.1 - 2026-07-27 #
1.0.0 - 2026-07-27 #
๐ Documentation ๐ #
- auth-engine: package docs, usage skill, and parity notes (24d1ec9)
- auth-engine: runnable package example (988209e)
โจ Features โจ #
- shared: add agnostic standards payload (2d65acb)
- probes: add nix root suite (27e4184)
- dart-lib: add pure-Dart publishable library template package (47a4837)
- probes: add shared authoring helpers (f20d53f)
- auth-engine: bind C0 conformance to the frozen identity fixture (a1e2240)
- materialize atomi/nix sample (yes_basic_yes_llm) as chain root (24105ef)
- materialize workspace spine baseline (f74cf31)
- shared-wo-docker: remove Docker axis (b125b74)
- shared-wo-docker-helm: remove Helm axis (e01fe36)
- auth-engine: transplant onto dart-lib as a Flutter package (267d8a4)
- dart-lib: wire Dart CI, release, and OIDC publish machinery (770b8ec)
๐ Bug Fixes ๐ #
- probes: attribute actionlint smoke overlap (bfb0271)
- nix: check precommit from repository root (c6046ac)
- nix: enforce root formatter probes (3b4188a)
- probes: isolate cross-template mutations (f8169d0)
- auth-engine: repair coverage collection and ledger partition (49356c3)
- auth-engine: restore deadcode entrypoint, give pana Flutter SDK (07ab458)
- dart-lib: use credentialed pub.dev publishing (#107) (796d025)
๐งช Tests ๐งช #
- dart-lib: add TEMPLATE-ONLY CyanPrint probe matrix (6a1f748)
- auth-engine: close the meta coverage ledger at 100% (1e1c79c)
- auth-engine: cover the last reachable unit ledger lines (751b80e)
- auth-engine: cover the LogtoAuthProvider token seams (a1fb2b2)
- auth-engine: cover the residual unit ledger gaps (080802d)
- auth-engine: cover the three zero-coverage platform adapters (106749c)
- dart-lib: fix dead-code and credential-policy mutation sabotages (f1737e9)
- dart-lib: fix deadcode-whole-package sabotage target (226e3d2)
- dart-lib: fix probe baselines for gitlint hook and pana (1519f9a)
- auth-engine: record the ClipboardCarrierReader constructor (387f5da)
- dart-lib: restore workspace deps for skills-freshness sandbox (9a2e5bf)
Release highlights #
- Add the Logto sign-in surface: the
AuthProviderseam with its only v1 implementationLogtoAuthProvider, andSessionControllerowning the token lifecycle โ interactivesignIn(with deferred-loginextraParams), rotatingrefreshwith reuse detection, the silentonAppOpenre-mint, andsignOut. - Enforce the C0 ยง12 token lifetimes rather than trusting them: access tokens at
most 10 minutes, refresh tokens at most 14 days rotating, re-mint on open
(
TokenLifetimes). A provider handing back a longer-lived token is rejected. - Add per-resource tokens:
ResourceKeyas the full(platform, landscape, service, resourceName)identity whoseaudienceis the per-landscape LPSM JWTaud, plus theIAuthretrieval seam andAuthCoordinatorwith a per-key cache, expiry-aware refresh, single-flight refresh-race handling, and the eagerfetchAllTokensbatch. - Add the claims-first onboarding phase machine, keyed per backend:
RegisteredBackend/BackendRegistrydeclare the client tree, andMultiBackendOnboardingruns one independentOnboardingMachineper backend from a single deduplicated registry-union acquisition. There is deliberately no singleton onboarded flag. - Inspect the exact C0 ยง8 registration claim (
<platform>_<service>with the JSON string"true") as the gating truth everywhere (Claims); useGET /User/Meonly for the absent-claim create-time race (404โPOST /User, tolerating409) and treat a later401/404as an ordinary error viamarkStaleClaim(). - Add the deferred-login mobile client (C0 ยง7):
AppHandoffCarrierparsing for the canonicalatomi-app-handoff:v1:<nonce>text, the Android Install Referrer field, and the iOS clipboard;DeferredLoginClientmarking the carrier processed before redeem;HttpAppHandoffApiagainstPOST {mount}/redeem; and the single no-oracleappHandoffExpiredfailure. - Add returnTo deeplink continuation (
ReturnTo): capture, login-redirect construction, and post-login resolution preserving path and query exactly, rejecting absolute, protocol-relative, and back-slash open-redirect inputs. - Add the sign-up-only Doc B landscape selector (C0 ยง10):
LandscapeSelectorDocrecursively rejects any address/issuer/URL leak at any depth,LandscapeSelectorClientpings each listed region and picks the fastest healthy one, andHttpLandscapeSelectorSourceenforces the baked endpoint-suffix allowlist before fetching. - Add C0 ยง13 home-claim resolution (
HomeClaimResolver): the authoritative JWThome_landscapeclaim decides the home, the Doc B selector runs only when it is absent, the localHomeClaimStoreis a non-authoritative mirror, and the post-OnboardSync claim is confirmed from a force-fresh claim-bearing token โ failing closed rather than mirroring a local selection. - Add
SignInCoordinatortying the full flow together: resolve โ login โ re-read the issued claim โ per-backend onboarding โ confirm the written home claim โ resume the exact returnTo route. - Export the engine-owned
authEngineconfig block schema next to the code that reads it (AuthEngineConfig,AppHandoffConstants); theconfiglib composes and validates it and never owns it. - Ship the dependency-light
test_helper.dartsub-library: fake IdP/token seams, per-backend onboarding-phase fakes, deferred-login carrier/redeem stubs, Doc B and home-claim fakes,AuthFixturesbuilders, and plain-throwAuthExpectassertions with no test-framework dependency. - Depend on the Flutter SDK โ the one deliberate deviation from the pure-Dart
siblings, recorded with its two
dev_dependenciesconsequences and the cross-family parity deltas indoc/diene_auth_engine.md.