Skip to content

Releases: fluttersdk/magic

v1.0.0-alpha.13

16 Apr 14:01
945a9d1

Choose a tag to compare

v1.0.0-alpha.13 Pre-release
Pre-release

✨ New Features

  • Routing: Add currentPath getter to MagicRouter — returns the current route path without query string, complementing the existing currentLocation property

🐛 Bug Fixes

  • Routing: Use GoRouter.pop() instead of Navigator.pop() in back() — syncs router state and preserves custom page transitions on reverse animation. Add StateError guard when router is not initialized, consistent with to() and replace()

🔧 Improvements

  • Skill: Optimize magic-framework skill for Claude Code progressive disclosure — split frontmatter, extract templates to references, compress sections (669 → 416 lines). Add version frontmatter and source-to-skill mapping in release command
  • Deps: Bump magic version constraint in example app

Full Changelog: 1.0.0-alpha.12...1.0.0-alpha.13

v1.0.0-alpha.12

09 Apr 14:39
6d92122

Choose a tag to compare

v1.0.0-alpha.12 Pre-release
Pre-release

✨ New Features

  • Broadcasting: Client-side activity monitor — detects silent connection loss using Pusher protocol activity_timeout and pusher:ping/pusher:pong. Automatically reconnects when the server stops responding
  • Broadcasting: Random jitter (up to 30%) on reconnection backoff delay — prevents thundering herd when many clients reconnect simultaneously after a server restart
  • Broadcasting: Configurable connection establishment timeout (default 15s) — prevents indefinite hang when server doesn't complete the Pusher handshake. Automatically triggers reconnect on timeout

Full Changelog: v1.0.0-alpha.11...1.0.0-alpha.12

v1.0.0-alpha.9

07 Apr 14:24
339be2d

Choose a tag to compare

v1.0.0-alpha.9 Pre-release
Pre-release

🐛 Bug Fixes

  • Broadcasting: Auth failures in private/presence channels now surface via Log.error() and interceptor onError() chain instead of being silently swallowed. Reconnect resubscribes all channels with awaitonReconnect stream emits only after completion. Per-channel error handling ensures one auth failure does not block other channels. (#45)
  • Database: sqlite3.wasm now loads via absolute URI (/sqlite3.wasm) instead of relative — fixes 404s on deep routes when using path URL strategy. (#46)

Full Changelog: 1.0.0-alpha.8...1.0.0-alpha.9

v1.0.0-alpha.11

07 Apr 20:59
ce1474c

Choose a tag to compare

v1.0.0-alpha.11 Pre-release
Pre-release

🐛 Bug Fixes

  • Routing: Fix intermittent page title loss on web — Flutter's Title widget was overwriting TitleManager's route-level title on didChangeDependencies() rebuilds. Use onGenerateTitle to keep both in sync

⚠️ Breaking Changes

  • file_picker: Upgrade from ^10.3.10 to ^11.0.2 — migrates to static API (FilePicker.platform removed). Consumers using FilePicker.platform directly (via magic.dart re-export) must switch to static calls (FilePicker.pickFiles(), FilePicker.getDirectoryPath(), FilePicker.saveFile()). Includes Android path traversal security fix (CWE-22) and WASM web support

Full Changelog: 1.0.0-alpha.10...1.0.0-alpha.11

v1.0.0-alpha.10

07 Apr 16:15
6b5c900

Choose a tag to compare

v1.0.0-alpha.10 Pre-release
Pre-release

✨ New Features

  • Routing: Route-level page title management with TitleManager singleton. Per-route titles via RouteDefinition.title(), automatic suffix pattern via MagicApplication(titleSuffix:), declarative MagicTitle widget for data-dependent titles, and imperative MagicRoute.setTitle() / MagicRoute.currentTitle API. Title resolution: MagicTitle > setTitle > RouteDefinition.title > MagicApplication.title. (#49)

🔧 Improvements

  • Dependencies: Bump magic_cli to ^0.0.1-alpha.6 (scaffold templates now include .title() and titleSuffix)

Full Changelog: 1.0.0-alpha.9...1.0.0-alpha.10

1.0.0-alpha.6

04 Apr 22:22
bea108c

Choose a tag to compare

1.0.0-alpha.6 Pre-release
Pre-release

✨ Features

  • Http Faking: Http.fake() — Laravel-style HTTP faking for testing with URL pattern stubs, callback stubs, and assertion methods (#18)
  • Facade Faking: Auth.fake(), Cache.fake(), Vault.fake(), Log.fake() — in-memory fakes with assertion helpers (#19)
  • Fetch Helpers: fetchList() / fetchOne() on MagicStateMixin — auto state management with defensive type guards (#20)
  • MagicTest: MagicTest.init() / MagicTest.boot() + package:magic/testing.dart barrel (#21)

🐛 Bug Fixes

  • Log.channel(): Returns LoggerDriver instead of LogManager (#27)
  • Http.response() null data: Sentinel pattern for null vs omitted distinction (#26)
  • URL pattern escaping: RegExp.escape() for stub patterns (#26)
  • fetchList/fetchOne defensive guards: Type-check response data, filter non-Map elements (#28)
  • Publish fix: Move flutter_test to dependencies for pub.dev validation (#30)

Full Changelog: 1.0.0-alpha.5...1.0.0-alpha.6

v1.0.0-alpha.5

29 Mar 13:57
a044e68

Choose a tag to compare

v1.0.0-alpha.5 Pre-release
Pre-release

🐛 Bug Fixes

  • Route Back Navigation: MagicRoute.back() now works after go()-based navigation (cross-shell). Maintains lightweight history stack with automatic fallback. Optional fallback parameter for explicit control. (#11)

Full Changelog: 1.0.0-alpha.4...1.0.0-alpha.5

v1.0.0-alpha.4

28 Mar 22:01
bbc0411

Choose a tag to compare

v1.0.0-alpha.4 Pre-release
Pre-release

🔧 Improvements

  • Localization Hot Restart: Translation JSON changes now reflect on hot restart during development. Uses fetch with cache-busting on web and best-effort disk reads on desktop, bypassing Flutter's asset bundle cache. Zero impact on release builds.

Full Changelog: 1.0.0-alpha.3...1.0.0-alpha.4

v1.0.0-alpha.3

24 Mar 19:23

Choose a tag to compare

v1.0.0-alpha.3 Pre-release
Pre-release

🐛 Bug Fixes

  • Logo on pub.dev: Use absolute URL for logo image so it renders correctly on pub.dev

🔧 Improvements

  • TDD Development Flow: Added strict TDD rules and verification cycle to CLAUDE.md

Full Changelog: 1.0.0-alpha.2...1.0.0-alpha.3

v1.0.0-alpha.2

24 Mar 19:14

Choose a tag to compare

v1.0.0-alpha.2 Pre-release
Pre-release

⚠️ Breaking Changes

  • Pub.dev Migration: Replaced git submodule path dependencies with pub.dev hosted packages (fluttersdk_wind: ^1.0.0-alpha.4, magic_cli: ^0.0.1-alpha.3). Removed plugins/ directory entirely.
  • SDK Bump: Dart >=3.11.0 <4.0.0, Flutter >=3.41.0 (previously Dart >=3.4.0, Flutter >=3.22.0)

✨ New Features

  • Launch Facade: URL, email, phone, and SMS launching via url_launcher
  • Form Processing: process(), isProcessing, and processingListenable on MagicFormData
  • Reactive Auth State: stateNotifier on Guard contract and BaseGuard
  • Query Parameters: Request.query(), Request.queryAll, MagicRouter.queryParameter()
  • Localization Interceptor: Automatic Accept-Language and X-Timezone headers on HTTP requests
  • Theme Persistence: Auto-persist dark/light theme preference via Vault
  • Validation Helpers: clearErrors() and clearFieldError() on ValidatesRequests
  • Route Names: Route name registration on RouteDefinition

🐛 Bug Fixes

  • Auth default config now properly wrapped under 'auth' key
  • Session restore guards against missing userFactory
  • FileStore exported from barrel file
  • Renamed internal references from fluttersdk_magic to magic

🔧 Improvements

  • Dependency upgrades: go_router ^17.1.0, sqlite3 ^3.2.0, share_plus ^12.0.1, file_picker ^10.3.10, flutter_lints ^6.0.0
  • Rewrote Magic CLI documentation with all 16 commands
  • Wind UI docs moved to wind.fluttersdk.com
  • Example app rebuilt with fresh flutter create and magic install
  • CI pipeline: upgraded GitHub Actions, added validate gate to publish workflow
  • Claude Code: path-scoped .claude/rules/ for 8 domains, auto-format/analyze hooks

Full Changelog: v1.0.0-alpha.1...1.0.0-alpha.2