Skip to content

ladder: rung 2 -- bookmarks - #90

Draft
Yaraslaut wants to merge 1 commit into
ladder-foundationfrom
ladder-bookmarks
Draft

ladder: rung 2 -- bookmarks#90
Yaraslaut wants to merge 1 commit into
ladder-foundationfrom
ladder-bookmarks

Conversation

@Yaraslaut

Copy link
Copy Markdown
Member

What

Rung 2 of the application ladder: bookmarks, anchored on linkding. Split out of #41 into its own PR, targeting #88's ladder-foundation branch since it depends on the shared testkit/CMake infra there.

Draft until #88 merges — retarget to master and un-draft once it does.

Contents

examples/bookmarks/ in full: bookmark/tag/shared-feed/auth models, DTOs, entities, schema migration, Netscape-bookmarks import/export, server, Qt/QML GUI, and tests — 65 files.

Includes fixes folded in during review of the combined branch:

  • BookmarkModel/SharedFeedModel/TagModel acquire connections from Lightweight::GlobalDataMapperPool() per execute() call rather than holding one for its own lifetime (WithMapper removed).
  • GetChangesSince's millisecond cursor boundary race (issue GetChangesSince's millisecond cursor comparison can miss a same-millisecond write #43): since/asOf become a compound ChangesCursor (timestamp + same-instant id tie-break) instead of a bare Timestamp, so a write landing in the exact same millisecond as the previous poll's cursor is no longer silently dropped.

Verification

Configured and built standalone against the ladder-foundation base with -DMORPH_LADDER_RUNGS=bookmarks (no other rung present). Full suite passes: 826 assertions in 121 test cases (SQLite default). Spec-citation and test-type-name lints clean.

Split out of application-ladder (originally bundled with pastebin/polls
and the shared foundation in #41) into its own PR against the rung-0
foundation (#88). Includes the pool-migration and cursor-race fixes
folded in during review of the combined branch:

- BookmarkModel/SharedFeedModel/TagModel acquire connections from
  Lightweight::GlobalDataMapperPool() per execute() call rather than
  holding one for its own lifetime (WithMapper removed).
- GetChangesSince's millisecond cursor boundary race fixed (originally
  landed on master as its own commit; carried forward here since
  bookmarks is where the fix lives).

Verified standalone against the ladder-foundation base: configures and
builds with -DMORPH_LADDER_RUNGS=bookmarks and no other rung present.
Full suite passes: 826 assertions in 121 test cases (SQLite default).
Spec-citation and test-type-name lints clean.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@codecov

codecov Bot commented Aug 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

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