CES-41 — Export ZIP - #21
Merged
Merged
Conversation
Stream vehicles/fill-ups/maint/settings into a STORE ZIP with manifest.json and README_export.txt. Headers match export-v1 § A1. Photos, drafts, and outbox rows stay out of the archive. Co-authored-by: JMNofziger <JMNofziger@users.noreply.github.com>
Update the delivery plan, Settings UX notes, and add a tests/export pointer. Device 10k timing stays deferred to CES-68. Co-authored-by: JMNofziger <JMNofziger@users.noreply.github.com>
Match SyncClient's baseUrl/bearerToken constructor, implement abandon on in-memory sinks, and drop a leftover duplicate in the photos exclusion test. Analyze is clean. Co-authored-by: JMNofziger <JMNofziger@users.noreply.github.com>
Co-authored-by: JMNofziger <JMNofziger@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.
On-device ZIP export per
docs/specs/export-v1.md§ v1 amendments (2026-08-16).What
Settings → Export data writes a STORE ZIP (
cestovni_export_<hash>_<YYYYMMDD_HHMMSS>.zip) withmanifest.json,README_export.txt, and the five CSVs. Share sheet isshare_plus. Flush is best-effort; export still works offline.Status report
client/lib/export/store_zip_sink.dart) — noarchiveon the write path. Data-descriptor bit so CRC/size are written after each entry. Tests parse the central directory.LedgerTilelabelled Export data plus “Photos are not included.” Foreground-only (progress on the tile). No background task, noPOST_NOTIFICATIONS.app_version= injectedkAppVersion(0.0.1, lockstep with pubspec);app_platform='android';user_key_hash= first 8 hex of SHA-256(settings.id); CSVrow_versionempty /max_row_version_seen: null; outbox count+hash fromOutboxRepository.pendingMutationIds().client/test/export/— CSV rules, A1 headers, golden ZIP + cells, soft-delete/drafts/photos excluded, 3-pending outbox hash, streamingCountingZipSinkover 1 000 lazy rows (addCalls > 1000,maxChunkBytes ≤ 512), atomicity (failed write deletes.tmp), module purity. Settings widget test taps an injected exporter._localcolumns still use the device offset (CES-66).cadence_kmis meters (CES-71 rename later). No import (CES-70).Out of scope
CES-70 import, M3 (CES-42–45), PWA-lite, CES-51, background export, renaming
cadence_km.