Ordinary Sign out cleared only the QQQ session; the provider session left in the
browser silently signed the same person back in (prompt=login alone was already
observed reusing retained SSO on real Authentik). Sign out now runs the provider
end-session flow when the server supports it, and every sign-in also sends
max_age=0. Stored-session restore after sign-out was checked: not a cause.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Commit 1d3847d deleted the entire tree (2584 files) and added nothing, so main was empty. This restores main to dc43a6a (the PR 22 merge) exactly.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
After the MC9400 in-place 1.0.0 to 1.0.1 update, scan receipts still showed
appVersion 1.0.0: the host sent osVersion/appVersion only at enrollment and
the server never refreshed them. MobileSessionApi now carries both values
(Build.VERSION.RELEASE and BuildConfig.VERSION_NAME, blank values omitted,
200-character cap) on each heartbeat so a mobile-scanners 1.6 server
refreshes the device record; older servers ignore the optional keys.
MobileSessionTest verifies the heartbeat payload carries only the two
version keys and no other device metadata. UI-API.md and SESSION-STATE.md
record the change.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Assert the Echo fixture's available captures and generic hosts' quarantine
behavior. Scope thumbnail and preview checks to the newly uploaded photo.
Update release and installation guidance with signed MC9400 qualification
and the remaining native authentication and publication gates.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
Add scan value and symbology feedback, optional status wallpaper and managed server/orientation configuration, proven AIM profile readback, and administrator-controlled viewing UI. Extend native Echo acceptance for per-scan copies and add an opt-in real-provider Authentik harness isolated to the disposable test package.
Verified: 222 JVM tests, lint with zero errors/warnings, debug/E2E/test APK builds, 23 Node tests and source standards. Updated TC22 Echo acceptance passes ten stages with simulated input/printing. Actual Authentik desktop acceptance passes; native Authentik and physical trigger/print validation remain pending. Normal TC22 updated with the matching signer and data preserved.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Capture exact SDK bytes before callback return and submit them through the existing process API only after same-server mobile-scanners 1.5 discovery. Preserve legacy server payloads and pending event retries; redact capture string representations. Verify 185 JVM tests, zero lint errors or warnings, debug/E2E builds and QA test compilation. Hardware AIM extraction and native delivery qualification remain open; the operator installation is unchanged.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Codex <noreply@openai.com>
Derive Origin from each QQQ request URL after caller headers so strict same-origin servers accept session heartbeats and process actions. Verify 174 JVM tests, lint, APK build, and actual TC22 sign-in, Echo setup and cancellation without clearing data.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Load named possible values through the published process API, honor dependent fields, discard stale responses and keep errors retryable. Add isolated native Echo coverage for setup, two accepted scans, recreation and Apps cancellation.
Validation: 169 JVM tests, zero-warning lint, 8 guard tests, source standards and real TC22 simulated Echo E2E pass; all 86 requests match the published semantic API. Physical printing remains pending.
Co-Authored-By: Claude <noreply@anthropic.com>
Read optional bounded acknowledgmentLabel and Boolean manualEntryEnabled from SCANNER metadata. Existing servers retain Saved scan and manual entry; Echo can show Print queued and hide unsupported manual input. Hardware eligibility, receipt identity and lifecycle are unchanged.
Validation:167 JVM tests, strict Kotlin compilation, lint0errors/0warnings and debug assembly pass. Native Echo acceptance remains with the final real-server integration cohort.
Co-Authored-By: Codex <noreply@openai.com>
Preserve ownership notices, replace wildcard imports, document source contracts, enforce source checks and strict Kotlin warnings, and apply the repository native formatter policy. Correct typed widget state and callback registration with regression coverage.
Add bundled Query artwork, public Dogfooding and Query links, version and license access under Settings About. Validation:163 JVM cases,46 TC22 sample native cases, QA compilation, APK builds and lint0errors/0warnings. Full formatter CI and actual external-provider Android acceptance remain explicit.
Co-Authored-By: Codex <noreply@openai.com>
Replace the raw log dialog with readable full-screen status/activity, filtering and copy/share controls. Persist explicit location choices and request Android permission once for default-on foreground reporting. Verified 159 JVM tests, zero-warning lint, APK builds and the focused TC22 diagnostics interaction test; actual GPS fix and real-provider acceptance remain pending.
Co-Authored-By: Codex (GPT-6) <noreply@openai.com>
Use Portrait when no valid orientation preference is saved; preserve all
explicit user choices, including System default. Cover missing, invalid,
explicit and platform orientation behavior in four focused tests.
Focused tests, debug lint (zero errors/warnings) and debug assembly pass.
A matching-signer in-place TC22 update preserved login/enrollment and
Android reports the normal activity requested portrait. Record exact
physical Code128 evidence and fully green prior native CI separately.
Co-Authored-By: OpenAI Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
Wait for the final signed-out message and enabled login action before
clicking once. Retain fresh-login and new-session assertions in the
real-server session scenario and opt-in device-screen acceptance.
The previous PR native run passed all seven scenarios; its duplicate
push run timed out after clicking the logout label. This test-readiness
correction is independently reviewed and both native test packages
compile. New hosted execution is required; no product fix is claimed.
Record the independent release-automation review, external configuration
gaps and current operator upgrade/projection acceptance boundaries.
Co-Authored-By: OpenAI Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
Wait for applied landscape configuration before explicit recreation and
assert the barcode draft after both transitions. Retain focused unlocked
input requirements while allowing brief physical-test focus changes.
Add a manual-only QA device-screen acceptance path with three actual OS
consent rounds, real Home-frame comparison, Stop, lease expiry and forced
logout. Protect existing app IDs/ports and compile QA tests in CI.
Use non-streaming physical installs and actionable timeout diagnostics.
QA and E2E packages compile, runner syntax/actionlint and opt-in/protected
port negative controls pass. Actual screen consent and synchronized
native scenario execution remain pending; no production code changed.
Co-Authored-By: OpenAI GPT-6.1 (Codex) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
Drain ImageReader continuously while retaining only one latest image,
release replaced buffers, snapshot acquisition time before encoding,
and keep Share disabled until service binding finishes. Pin hosted
acceptance to the verified additive server1.2 source1041693.
Pass137 JVM tests, lint/all package builds, fresh APK inspection and
TC22 ordinary-UID forged-input rejection. Independent follow-up review
found no concrete issue. Paired server consumer/provenance and all15
browser cases pass. Actual OS consent/device capture remains unverified.
Co-Authored-By: OpenAI GPT-6.1 (Codex) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
Add an optional nonexported MediaProjection foreground service, one-time
operator consent and session/lease/mode-bound frame upload. Preserve
legacy app-content defaults and stop capture on bounded lifetime or
host/session loss. Clarify physical scan polling deadline failures.
Initial gates pass135 JVM tests, lint and all package builds. Paired
server39 tests and six real-HTTP cases pass with historical API baselines
preserved. Changed-client static review found no reportable findings.
Actual consent/device acceptance and frame/UI refinements remain open;
this is a source checkpoint, not a production release.
Co-Authored-By: OpenAI GPT-6.1 (Codex) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
Use the optional device-provided EMDK service for normal scanner input,
with exact compile-only SDK provenance and no shipped vendor classes.
Keep synthetic scan broadcasts confined to the disposable E2E variant.
Pause input behind overlays and lost focus, and share live drawer-first
Back routing across every process/application handler and toolbar arrow.
Replace inherited Auth0/Coil prereleases with reviewed stable versions.
Invalidate standard generated notices on dependency graph changes and
retain strict runtime/license checks. Pin hosted acceptance to the
source-qualified API 1.9 core/server tuple with runtime provenance.
Validation: 127 JVM tests, 34 TC22 shared native cases, eight-overlay
native regression, and ordinary-UID/distinct-signer injection rejection
pass. Eight forged broadcasts cause no process/record mutation; a real
manual positive control saves through the API. All package/lint gates,
four-APK notice/DEX/native/manifest inspection, focused independent
source review, workflow syntax and staged secret checks pass.
Actual hardware triggers, configured provider, optional files deployment
and final signing/distribution remain separate documented release gates.
No normal operator installation or data was changed by these tests.
Co-Authored-By: OpenAI GPT-6.1 (Codex) <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
Use one hamburger drawer for apps, Settings and Diagnostics while preserving
guarded process Back, account access and approval restrictions.
Negotiate native OAuth2 login through the explicit UI API 1.9 capability,
server-advertised issuer/callback/prompt policy and AppAuth PKCE. Exchange
codes through QQQ with deferred cookie adoption and bounded cleanup of known
abandoned sessions. Keep TABLE_BASED and shared Auth0 behavior intact.
Add protocol and native regressions, retain bundled AppAuth attribution,
and pin the companion server heartbeat revocation correction in CI.
Co-Authored-By: GPT-6.1 Codex <noreply@openai.com>
Signed-off-by: James Maes <james@kof22.com>
Discover compatible API versions, client channels and mobile extensions before login. Follow server process completion, metadata updates, form rules and cancellation, with isolated native OpenAPI conformance coverage.
Co-Authored-By: OpenAI GPT-6 (Codex) <noreply@openai.com>