Skip to content

Publish-ready atomic_lib Flutter SDK (precompiled binaries + CI) - #1241

Draft
joepio wants to merge 8 commits into
developfrom
cursor/atomic-flutter-sdk-f2cc
Draft

Publish-ready atomic_lib Flutter SDK (precompiled binaries + CI)#1241
joepio wants to merge 8 commits into
developfrom
cursor/atomic-flutter-sdk-f2cc

Conversation

@joepio

@joepio joepio commented Aug 1, 2026

Copy link
Copy Markdown
Member

Summary

Extracts and renames the Flutter SDK to package:atomic_lib (matches Rust atomic_lib / JS @tomic/lib; atomic_flutter is taken on pub.dev), merges the FFI plugin into one publishable package, and wires Cargokit path A: signed precompiled binaries uploaded to GitHub Releases.

Package

  • Path: dart/atomic_lib/
  • Version: 0.41.0-beta.2 — lockstep with the monorepo via scripts/bump-version.mjs (16 sites; --check covers the pubspec)
  • Single Flutter FFI plugin (no path deps) — required for dart pub publish
  • LICENSE, CHANGELOG.md, example/, rust/cargokit.yaml (public key + release URL prefix)
  • Canvas depends on path: ../dart/atomic_lib

CI

New workflow .github/workflows/atomic_lib_precompile.yml:

  • Dart analyze + test
  • Rust bridge cargo test
  • Precompile on Ubuntu (Linux + Android), macOS, Windows via build_tool precompile-binaries
  • Uploads signed artifacts to precompiled_<crate_hash> releases
  • Triggers on v* / atomic_lib-v* tags and pushes to develop that touch dart/atomic_lib/** or lib/**

Required secret: CARGOKIT_PRIVATE_KEY (set on the repo).

Docs (as if live)

Still before first pub.dev publish

  • Green precompile run on develop (after merge)
  • Verified publisher on pub.dev
  • Generic query/blobs bridge APIs (follow-up — same extract as below)

Next after this merges (do not block publish)

Landed in planning/atomic-flutter-sdk.md “Next after this PR merges”:

  1. Split generic node API out of simple.rs (canvas stays a consumer) → toward AtomicNode
  2. uniffi → Kotlin over that surface (AtomicServer Android host without Flutter)
  3. atomic-android AAR — Binder ContentProvider/AIDL for other apps (android-data-reuse Phase 1)

That substrate also unblocks SearchLauncher/Atomic Launcher (#1252) via APIs at HOME without merging products yet.

Checklist

  • Changelog entry
  • Tests (59 Dart + canvas + rust bridge)
  • Docs / planning updated
  • Version lockstep with monorepo

Test plan

  • flutter analyze + flutter test in dart/atomic_lib
  • node scripts/bump-version.mjs --check 0.41.0-beta.2
  • bump script round-trip includes dart/atomic_lib/pubspec.yaml
  • Manual: precompile workflow after merge; dart pub publish
Open in Web Open in Cursor 

cursoragent and others added 3 commits August 1, 2026 11:53
Move auth, session, sync, pairing UI, drive switching, and the FRB
bridge into dart/atomic_flutter so app builders can depend on one
package without managing a server or rebuilding QR/sync screens.
Canvas now consumes the package and keeps drawing/gallery UI only.

Co-authored-by: Joep Meindertsma <joep@ontola.io>
Co-authored-by: Joep Meindertsma <joep@ontola.io>
Rename the Flutter SDK to atomic_lib (consistent with Rust/JS naming;
atomic_flutter is taken on pub.dev). Merge the FFI plugin into the
package so there is no path dependency for publishing. Wire Cargokit
precompiled binaries (path A) with cargokit.yaml + a GitHub Actions
workflow that signs and uploads release artifacts.

Co-authored-by: Joep Meindertsma <joep@ontola.io>
@cursor cursor Bot changed the title Extract atomic_flutter Dart/Flutter SDK from the canvas app Publish-ready atomic_lib Flutter SDK (precompiled binaries + CI) Aug 1, 2026
cursoragent and others added 4 commits August 1, 2026 12:19
Document atomic_lib as if live on pub.dev: why local-first matters, what
Atomic takes off the plate, and a guided setup → identity → data → sync path.
Wire into SUMMARY, tooling, get-started, and planning checklists.

Co-authored-by: Joep Meindertsma <joep@ontola.io>
Resolve simple conflicts in CHANGELOG.md and README.md: keep the
atomic_lib SDK extraction notes and take develop's beta.2 date.

Co-authored-by: Joep Meindertsma <joep@ontola.io>
Co-authored-by: Joep Meindertsma <joep@ontola.io>
Include dart/atomic_lib/pubspec.yaml in bump-version.mjs --check/bump,
align docs pins, and trigger precompile on v* tags as well as atomic_lib-v*.

Co-authored-by: Joep Meindertsma <joep@ontola.io>
@cursor

cursor Bot commented Aug 4, 2026

Copy link
Copy Markdown

Follow-up after this merges (Android / multi-app) — don't block publish on it

This PR lands the publishable Flutter package:atomic_lib (FRB + Cargokit). The natural next substrate step, which this extract enables, is shared with android-data-reuse.md and the Atomic Launcher exploration (#1252):

  1. Split generic node API from canvas in dart/atomic_lib/rust (db/agent/drive/resource/query/commit/sync) — canvas stays a consumer.
  2. uniffi → Kotlin over that same surface (not FRB) so AtomicServer on Android can host without a Flutter engine.
  3. atomic-android AAR: ContentProvider/AIDL (get / query / commit / subscribe) for other apps (SearchLauncher, canvas client mode, third parties later).

That is android-data-reuse Phase 1. Intents/Binder against that API is the ~80% path for launcher integration; merging SearchLauncher is a later product call.

Also still listed in this PR: generic query/blobs on the Dart bridge — same extract, Dart-facing first if you want pub.dev completeness before Kotlin.

Happy to append a short “Next” section to planning/atomic-flutter-sdk.md + this PR description on the branch if you want it in-tree.

After the Flutter package publishes, extract the generic Rust node API and
add uniffi Kotlin + atomic-android Binder host (android-data-reuse Phase 1).
Do not block pub.dev on that work.

Co-authored-by: Joep Meindertsma <joep@ontola.io>
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.

2 participants