Skip to content

chore: backmerge - #728

Merged
r0ssing merged 56 commits into
mainfrom
dev
Aug 21, 2026
Merged

chore: backmerge#728
r0ssing merged 56 commits into
mainfrom
dev

Conversation

@r0ssing

@r0ssing r0ssing commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

backmerge of release v1.3.0

r0ssing and others added 30 commits July 15, 2026 19:19
chore: backmerge main into dev
casts to double precision instead of numeric, since lib/pq
doesn't decode numeric and was returning raw bytes, which
failed the float64 type assertion and got silently nulled.

fixes #707
fix: numeric fields exporting as null in parquet export
feat(portal): Home page with charts..
fix(formplayer): Updated sub-observation table sort to use numerical …
…tey (to satisfy AJD validation as unanswered instead of null), but then re-running clear-on-hide after merge of off-screen properties to ensure they don't come back as zombies
fix(formplayer): Clear fields on hide (cascading)
…idation-display

feat(formplayer): Better display of validation errors on finalize screen
fix(desktop): Fix issue with injected dev scripts
…int-monorepo

chore(deps): update dependency typescript-eslint to v8.66.0
Christian Stærk and others added 26 commits August 6, 2026 14:43
feat(formulus): Added IOS metadata necessary for Apple AppStore submission
…ut-digest

chore(deps): update actions/checkout digest to 11d5960
…java-digest

chore(deps): update actions/setup-java digest to cf277c6
chore(deps): enable Renovate automerge for patch and digest updates
feat(desktop): Add export functionality
…ting

The observation pull cursor was persisted only after every page had been
applied and the attachment manifest had been processed. Any interruption —
lost connection, crash, cancel, or an attachment failure — therefore discarded
the whole pull, and the next attempt started again from version zero. On a
large repository over a field connection that can mean sync never completes,
and because push runs after pull, local records are never uploaded either.

Persist the cursor after each page instead. This cannot skip records:
change_cutoff is the same watermark the loop already uses to request the next
page, so a resumed run asks the server exactly what this run would have asked
next, and applyServerChanges upserts.

Also move the cursor write ahead of processAttachmentManifest, since
attachments carry their own cursor and should not be able to force a full
observation re-pull; refuse to loop when the server reports more pages without
a cutoff that advances past `since`, which previously re-requested the same
page indefinitely; and log page counts rather than whole pages of observation
records, which were being written to logcat.

Co-authored-by: Cursor <cursoragent@cursor.com>
fix: More robust index building after sync
…pport

feat(formulus): add log viewer to Help&Support
fix(formulus): Include bundled sqlite package (jsi)
@r0ssing
r0ssing merged commit 38edff9 into main Aug 21, 2026
71 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.

3 participants