Skip to content

Preserve imported words and bound speech download lifetimes - #1

Merged
RaycarlLei merged 1 commit into
mainfrom
fix/import-preserves-user-data
Sep 8, 2026
Merged

RaycarlLei merged 1 commit into
mainfrom
fix/import-preserves-user-data

Conversation

@RaycarlLei

Copy link
Copy Markdown
Owner

Importing a replacement for a bundled word appeared to succeed, but the following home refresh wrote the sample back over it. Sample initialization now inserts missing meanings without changing existing content or progress. Imports accept one S6 object or an array, validate all entries before writing, and enforce the bytes actually read. Import results and refresh failures are separate UI states, so a retry clears the loading error while preserving committed counts.

Speech downloads previously reset their timeout for every received chunk. One deadline now covers headers and the entire body; expiry aborts the request, cancels body consumption and closes its owned client. This change also raises the declared http minimum to the already-locked 1.6.0 API used for cancellation.

Validation: Flutter 3.44.0 analysis and all 93 tests passed locally. Regression tests exercise actual home imports, automatic refresh, retry and a partial SQLite write failure, plus slow and malformed gateway responses. Public-tree and redacted Gitleaks history/staged checks passed. CI checks Flutter 3.44.0 and 3.47.2, with an Android debug build and downloadable artifact on 3.47.2.

The committed lockfile was resolved with Flutter 3.44.0; seven framework/test dependencies therefore match that SDK's pins. The newer CI SDK resolves its required framework pins separately. These changes are not claimed as http security upgrades. APKs are development builds, not signed store releases. Gateway tests inject the HTTP transport; they do not constitute a network soak test.

@RaycarlLei
RaycarlLei merged commit 780feb0 into main Sep 8, 2026
2 checks passed
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.

1 participant