fix: harden native chat, drafts and settings - #4
Draft
649472774 wants to merge 14 commits into
Draft
Conversation
Align AGP built-in Kotlin and Compose plugins, use supported AndroidX versions, add WebKit and Compose test dependencies, restore lint failures, and exclude credential stores from cloud and device backups. Preserve the existing app version and debug package identity. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Keep non-streaming body reads off the caller thread, close responses across callback cancellation races, and cancel the underlying socket through response consumption. Add readiness-gated proxy clients without invalidating live dispatchers and controlled HTTP lifetime regressions. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add generation-safe auth and verified no-backup credential migration; typed cached model discovery without retired fallbacks; SSE error/completion framing; atomic session snapshots, backups, tombstones, summary cache and bounded inactive state. Add content-addressed attachment references, bounded coherent prompt history with retained vision, durable send receipts and awaited UI action APIs. Preserve v0.1.33 JSON and existing public adapters for coordinated UI integration. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Separate Remote browser state, navigation, network routing, transfers and page enhancements from Compose. Keep edge-to-edge permanent, apply native target IME insets, preserve detached documents and recover explicitly from renderer or memory loss. Gate WebView proxy transitions, await browser data clearing, and reject untrusted committed documents. Add focused callback-order, origin, proxy and hermetic device regression coverage. Device acceptance remains with the integration owner; no version or release changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve queued stream deltas before errors, join concurrent logout operations, scope catalog and submissions to account generations, reject changed idempotency payloads, and keep orphaned replies out of unrelated prompt turns. Harden proxy and attachment boundaries and no-follow atomic writes. Add complete regression discovery coverage, portable real-DataStore JVM fixtures, and isolated default-Android-backend plus Keystore instrumentation cases; production key alias and DI defaults are unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use the published OkioStorage and PreferencesSerializer APIs for token/proxy JVM migration fixtures. createWithPath also selects FileStorage under DataStore 1.1.7 and retains the Windows temp-file replacement bug. Keep all persistence assertions and native default-backend instrumentation unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Use full-response cancellation and initialized proxy-aware transport, bounded trusted release downloads, SHA-256 verification and atomic private cache files. Check actual APK package, version, Android requirements and current signer identity before handing control to the system installer. Serialize update operations, retain truthful retry/permission states, and wire shared proxy readiness and model catalog DI. Add controlled JVM and Android fixture coverage without touching a live account or device. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Preserve Chinese-first Material 3 while making the composer, model selection, message actions, settings and files usable across narrow windows and large fonts. Persist bounded draft references before idempotent submission, keep rejected input, and route deletions through the core lifecycle. Add selectable bounded asynchronous Markdown/math, safe file-only exports, explicit loading/offline/error states, retained proxy drafts, and durable logout navigation. Include focused JVM cases and controlled native acceptance fixtures. Version and release ownership remain with integration. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Exercise real login, proxy, account and settings screens at 200 percent font scale using in-memory core fixtures and a network-blocking provider. Cover failed save/logout recovery, unsaved Back decisions, single-target switch semantics and actual-window session-list adaptation without real credentials or shared data. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Replace concurrent first-layout scrollToItem callers with one conflated remeasure-request owner while retaining manual reading and explicit latest intent. Size attachment removal at48dp, prioritize dialog errors, and give proxy decisions a single wrapping action layout. Strengthen controlled instrumentation with owned full-device screenshots, actual IME visibility/screen bounds/native font scale and Back assertions. Prove long-press Copy through the real platform menu and clipboard, scope dialog assertions, and await actual discard completion without weakening thresholds. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Capture the unique Markdown text node instead of an ambiguous root collection that includes selection-handle popups. Keep real native Copy, clipboard and full-device evidence assertions unchanged. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Configure the actual ActivityScenario host synchronously and reaffirm RESIZE after content installation before IME focus. Require retained portrait chrome and bounded send-to-keyboard gap, not only an upper-bound check. Capture physical frames before Compose capture and save before/after window, root-view, inset, rotation, font and activity identity metadata. Keep IME visibility, bounds, Back, clipboard and bitmap ownership assertions intact; no production inset changes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Place the existing title, warning and all decision actions inside one bounded scrollable Material dialog, so large-font landscape windows cannot clip Discard outside the window. Preserve copy, validation and48dp actions; the fixture scrolls to and captures the real actions before requiring exactly one completed exit. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add a separate native regression that performs five real table-to-oversized replacements, checks visible final content and preview notices, recreates the Activity with the same controlled source, and finally destroys it normally. Preserve every existing test and all production/runtime dependencies; use observable completion rather than arbitrary sleeps. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Native UI refinement
Preserves CopilotGo's Chinese-first Material 3 identity and existing subscription model. This is functional hardening, not a replacement mockup.
Integration boundaries
UI implementation checkpoint:
cccef2546df7b6e2fac84fb2a06a9e5cae42f572.Test-only native settings/window follow-up:
0fb10c4.The branch also carries prerequisite copies of the core, Remote and release work. Integration should cherry-pick these UI checkpoints after its existing prerequisite commits, not replay duplicate prerequisite history. No version bump, main merge, release or shared-device operation was performed in this workstream. Remote/MainActivity, updater and core implementations remain owned by their workstreams.
Acceptance
NativeUiAcceptanceTest(13),MarkdownRenderingTest(5),NativeSettingsAcceptanceTest(6). Device execution remains pending.Rendering has explicit preview/resource limits rather than silent truncation: 65,536 source characters, 160 blocks and a shared 512 table-cell budget. Markdown export contains conversation text and attachment names; it does not bundle original attachment files.