NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Offline-first Flutter sync SDK for SQLite ↔ server. Simple API: init, register/login, save/edit/remove, and sync.
Last release 14 days ago
24 Sep 2026
Too new to tell
only 2 release windows
Nearly every release is documented
notes for 30 of 30 stable releases
Nothing withdrawn
no release was ever pulled
2 months old
30 releases · first in 2026
One column per month.
Strictly scope getPreference() to the configured user prefix (${prefix}_$key) to prevent key collisions with custom developer preferences.
getPreference() to the configured user prefix (${prefix}_$key) to prevent key collisions with custom developer preferences.Enhanced multi-device sync reliability and synchronization robustness.
Added forgotPassword() / apiForgotPassword() — request password reset OTP / email link.
forgotPassword() / apiForgotPassword() — request password reset OTP / email link.verifyOtp() / apiVerifyOtp() — verify reset OTP.resetPassword() / apiResetPassword() — update password with verified OTP and auto-save token if returned.Added clearAuthToken() — clears JWT only; local DB, sync queue, profile prefs, and serverTime stay.
clearAuthToken() — clears JWT only; local DB, sync queue, profile prefs, and serverTime stay.init(onUnauthorized: ...) — on protected API 401/403, token is cleared once and callback runs (login/register/social-login excluded).Added 'data' to default userFallbacks in BfsResponseKeyMap (now defaults to ['user', 'data']).
'data' to default userFallbacks in BfsResponseKeyMap (now defaults to ['user', 'data']).Updated documentation with User Profile SharedPreferences storage examples and clean response key configuration.
Save user profile fields in SharedPreferences exclusively using prefix (${prefix}_$key) to prevent key collision with app developer's preferences.
${prefix}_$key) to prevent key collision with app developer's preferences.responseKeys.user / fallback candidates during pull and pull-latest sync.userFields mapping.Optional authRequired + responseKeys on init() — defaults match current API (email/password, token/users).
authRequired + responseKeys on init() — defaults match current API (email/password, token/users).fluttertoast); errors still throw / reach onFail.Full pull (GET /sync/get) runs only when cached serverTime is empty; otherwise skipped. Use force: true / forcePullAll: true to override.
GET /sync/get) runs only when cached serverTime is empty; otherwise skipped. Use force: true / forcePullAll: true to override.Endpoints aligned with live API:
POST /sync/pushGET /sync/get?page=&limit= (full pull)GET /sync/pull-latest?serverTime=DELETE /delete-accountSocial login uses raw JSON like Postman (POST /social-login); normal login stays form-data — both APIs work independently.
POST /social-login); normal login stays form-data — both APIs work independently.user and users keys.Pull latest matches Postman: GET /sync/pull-latest?serverTime=... (legacy POST /sync/pull-updates still on server).
GET /sync/pull-latest?serverTime=... (legacy POST /sync/pull-updates still on server).Login always sends Postman-style multipart/form-data with flat fields (email, password).
multipart/form-data with flat fields (email, password).Register / social-login always send Postman-style multipart/form-data: data (JSON text) + file fields (avatar).
multipart/form-data: data (JSON text) + file fields (avatar).Easy DB: init(tables: {...}) auto-creates SQLite tables (uuid PK added automatically).
init(tables: {...}) auto-creates SQLite tables (uuid PK added automatically).BfsDbHelper / BfsManager.openDatabase() and demo in example/README.md.Docs: added multiple-file upload examples (List + JSON string) in README, developer guide, and example.
Developer-friendly API: init, register/login/logout/deleteAccount, save/edit/remove, and single sync(type:).
init, register/login/logout/deleteAccount, save/edit/remove, and single sync(type:).BfsSyncType (sync, all, push, latest) and isLoggedIn.socialLogin helper.Added local sync queue optimization/compaction rules in insertLocal to merge redundant pending insert, update, and delete tasks.
insertLocal to merge redundant pending insert, update, and delete tasks.getTaskByUuid, updateTask, and deleteById to SyncTaskDb.Added a shared checkFileExists helper utility.
checkFileExists helper utility.await file.exists() validation.Updated _extractSyncFiles in ApiService to support extracting multiple file paths represented as a List or JSON array of strings in sync payload.
_extractSyncFiles in ApiService to support extracting multiple file paths represented as a List or JSON array of strings in sync payload.Made _parseResponse asynchronous and await all SharedPreferences write operations for users profile data to guarantee profile fields are fully updated
_parseResponse asynchronous and await all SharedPreferences write operations for users profile data to guarantee profile fields are fully updated and readable before API resolution.Added getPreference method to BfsManager to directly retrieve cached user profile preferences by column name or key.
getPreference method to BfsManager to directly retrieve cached user profile preferences by column name or key.Added apiLogout method to call the /logout endpoint, clear cached auth tokens, and clear the local sync task queue and database tables.
apiLogout method to call the /logout endpoint, clear cached auth tokens, and clear the local sync task queue and database tables.apiDeleteAccount method to call the /delete-account endpoint, clear cached auth tokens, and wipe local database tables for user privacy.clearLocalDatabase helper method to dynamically find and truncate all user database tables.clearAllTasks to SyncTaskDb.Removed the UNIQUE constraint from the uuid column in the tb_sync_task table and added database upgrade support to version 2.
uuid column in the tb_sync_task table and added database upgrade support to version 2.insertLocal method to extract and use the record's actual uuid from the data payload map.Added serverTime response tracking in pullAll initial sync to cache the lastSyncTime correctly for subsequent pullUpdates.
Updated package home page README.md with the latest step-by-step Gujarati integration guide.
Added support for dynamic column file detection on nested push sync payloads.
Restructured step-by-step Gujarati integration guide in README.md.
Added complete Gujarati integration and usage documentation to README.md.
Initial release of the bfs_manager SQLite-to-Server synchronization package.
Your coding agent can read these notes before it upgrades. Set up the MCP server →