rerune 0.11.0
rerune: ^0.11.0 copied to clipboard
OTA localization updates for Flutter apps with build_runner code generation.
0.11.0 #
- BREAKING: backend manifests must include a non-empty
main_languagethat resolves to an entry inlocales; legacy manifests without it are rejected. - BREAKING:
ReRuneManifest(...)now requiresmainLanguage. - Removed the legacy missing-
main_languageresolution path. OTA lookup always resolves requested locale variants, then main-language variants, then the bundled Flutter fallback.
0.10.0 #
- Added OTA missing-key fallback through the manifest's
main_language: requested OTA locale variants -> OTA main-language variants -> bundled Flutter localization. - ICU placeholders, plurals, and selects resolved from the OTA main language now use that supplying locale's formatting rules.
- Manifest parsing and caching now preserve the normalized
main_language. - Excluded the repository's private test app from pub.dev release archives.
0.9.3 #
- Clarified that
MaterialApp.localeis optional and only needed for app-owned language-picker overrides. - Updated the README install snippet to the latest published version.
0.9.2 #
- Added a locale picker to the example app's current-locale status row using
app-owned
LocaleNotifierstate.
0.9.1 #
- Clarified the recommended language-picker docs with an app-owned
LocaleNotifierexample and anullsystem-default picker option.
0.9.0 #
- BREAKING: removed the SDK-owned locale override APIs introduced in
0.8.4:ReRune.locale,ReRune.localeListenable,ReRune.setLocale(...), andReRune.clearLocale(). - ReRune now documents app-owned locale state as the recommended language-picker
integration. Build picker options from
ReRune.supportedLocales, store the selected locale in the app, and pass that value toMaterialApp.locale. ReRuneBuilderagain rebuilds only on localization bundle revisions.- The example welcome screen now displays the resolved locale tag instead of a localized hardcoded language name.
0.8.4 #
- Added SDK-owned locale override state with
ReRune.locale,ReRune.localeListenable,ReRune.setLocale(...), andReRune.clearLocale(). ReRuneBuildernow rebuilds for selected-locale changes as well as localization bundle revisions.- Documented the optional language-picker flow using
ReRune.supportedLocalesplusMaterialApp.locale: ReRune.locale.
0.8.3 #
- Highlighted remote language delivery in the package documentation.
- Documented
ReRune.supportedLocalesas the source of truth for language pickers that include fetched/cached dashboard-only locales.
0.8.2 #
- Added support for dashboard-only locale additions after a successful manifest and ARB fetch, allowing new languages to become available without an app-store release.
ReRune.supportedLocalesnow includes compiled app locales plus fetched/cached dashboard locales.- Generated localization overlays now preserve the requested locale name when falling back through a compiled base locale.
- Manifest locale keys are normalized to Flutter-style locale keys such as
pt_BR. - Added
ReRune.localizationsRevisionListenable;ReRuneBuildernow rebuilds on all localization revisions so rootMaterialAppwidgets can re-resolve newly available dashboard locales. ReRune.setup(...)now returns aFuture<void>that completes after cached manifest/ARB bundles are loaded;checkOnStartrefreshes continue in the background instead of blocking setup.
0.8.1 #
- Clamp oversized periodic refresh intervals on web to the maximum supported timer delay instead of throwing.
- Document the web timer fallback limit in the public update policy API and README.
0.8.0 #
- BREAKING:
ReRuneUpdatePolicynow configures periodic refresh withperiodicIntervalInHoursand/orperiodicIntervalInDays; minute- and second-level intervals are no longer accepted. - BREAKING: runtime now requires manifest locale entries to provide absolute
urlvalues. - BREAKING: removed runtime ARB URL fallback synthesis; ARB fetch uses manifest
urlonly. - Tightened ARB parsing to enforce string message values for non-metadata keys.
- Refactored OTA update workflow and network fetch internals to reduce cyclomatic complexity.
0.6.0 #
- BREAKING: renamed
ReRuneOverlayBuildertoReRuneBuilder.
0.5.0 #
- Added fast CLI codegen command:
dart run rerune. - Added parity guard coverage to ensure CLI and builder generation stay byte-identical.
0.4.1 #
- Excluded internal
docs/session notes from publish artifacts via.pubignore. - Excluded local
build/artifacts from publish artifacts via.pubignore.
0.4.0 #
- BREAKING: removed manual annotation-anchor setup for codegen.
build_runnernow generates ReRune config directly fromapp_localizations.dart.
0.3.0 #
- BREAKING: collapsed repository back to a single package
rerune. - BREAKING: removed split packages (
rerune_core,rerune_gen) and workspace tooling. - Added build_runner codegen directly in
rerune(build.yaml,lib/builder.dart). - BREAKING: removed macro scaffolding APIs; generation is codegen-only.
- BREAKING: setup now accepts generated localizations config via
ReRune.setup(..., localizations: reRuneAppLocalizationsConfig). - Removed macro example and retained one codegen-based example app.
0.2.0 #
- BREAKING: removed CLI wrapper generation workflow (
dart run rerune/flutter pub run rerune). - Added package-owned integration runtime APIs:
ReRune,ReRuneOverlayLocalizationsDelegate<T>, andReRuneOverlayBuilder. - BREAKING:
ReRune.setup(...)now requires supported locales either viasupportedLocales:or by callingReRune.configureLocalizationsOverlay(...)first. - Added macro migration scaffolding APIs:
ReRuneLocalizationsOverlayandReRuneLocalizationsOverlayMacro. - Migrated example app away from generated
rerune_app_localizations.dartto app-owned overlay wiring.
0.1.3 #
- Lowered package SDK constraints to
dart >=3.4.0 <4.0.0andflutter >=3.22.0to avoid unnecessarily requiring Dart 3.9+.
0.1.2 #
- BREAKING: removed generated
ReRune.fetchedRevisionListenable; useReRune.onFetchedTextsAppliedas the single fetched-update event handle. - BREAKING: simplified generated
ReRuneBuilderto a singlebuilder:callback; removedReRuneRefreshModeand refresh mode options. - Updated generator output and example pages/docs to use the single event-stream + builder model.
0.1.1 #
- Added generated
ReRuneBuilderwidget for app-side redraws after OTA changes. ReRuneBuildernow usesbuilder:(Flutter convention) instead ofchild:.ReRuneBuildersupportsReRuneRefreshMode.fetchedUpdatesOnly(default) andReRuneRefreshMode.anyControllerChange.- Updated generated wrapper template and example
BuilderPageto useReRuneBuilderinstead of manualValueListenableBuilderwiring.
0.1.0 #
- BREAKING: removed all
rerune.jsonruntime config support. - BREAKING: removed
projectId,apiKey, andmanifestUrlsetup/constructor inputs. - BREAKING:
ReRuneLocalizationControllernow requiresotaPublishIdand sends it asX-OTA-Publish-Id. - BREAKING:
ReRuneLocalizationControllerand typed builder APIs are no longer exported publicly; use generatedReRune.setup(...)andReRunestatic APIs. - Manifest endpoint is now fixed to
https://rerune.io/api/sdk/translations/manifest?platform=flutter. - ARB fallback endpoint is now
https://rerune.io/api/sdk/translations/flutter/{locale}when manifest locale URL is omitted. - Example app now uses setup-only integration (no direct controller construction).
0.0.4 #
- BREAKING: removed seed ARB support (
seedBundlesandtranslations_path). - Fallback now follows Flutter defaults only: OTA/cache first, then bundled
AppLocalizationsstrings. - BREAKING: runtime config now uses strict precedence
rerune.jsonasset -> constructor (projectId,apiKey). - BREAKING: removed runtime
--dart-definefallback for config resolution. platformis fixed toflutterand is no longer configurable in controller/runtime config.- Added explicit
StateErrorwith debug log when required credentials are missing. - Docs/examples now use
ReRune.setup(...),ReRune.localizationsDelegates, andReRune.supportedLocales. - Clarified that
ReRuneUpdatePolicydefaults tocheckOnStart: true. - Generated
ReRune.setup(...)helper now auto-wires supported locales and initializes OTA. - BREAKING: removed deprecated generated compatibility aliases (
Rerune...Setup,createRerune...Controller). - BREAKING: removed CLI executable alias
generate; useflutter pub run reruneonly. - BREAKING: renamed
OtaLocalizationControllertoReRuneLocalizationController. - BREAKING: renamed
OtaUpdatePolicytoReRuneUpdatePolicy. - BREAKING: renamed
OtaUpdateResulttoReRuneUpdateResult. - BREAKING: renamed
OtaErrorType/OtaErrortoReRuneErrorType/ReRuneError. - BREAKING: renamed
Manifest/ManifestLocaletoReRuneManifest/ReRuneManifestLocale. - BREAKING: renamed
CachedManifest/CachedArbtoReRuneCachedManifest/ReRuneCachedArb. - BREAKING: renamed
CacheStoretoReRuneCacheStoreandcreateDefaultCacheStore()toreRuneCreateDefaultCacheStore(). - BREAKING: renamed
OtaTypedLocalizationBuildertoReRuneBuilder. - BREAKING: renamed typed builder typedefs to
ReRuneDelegateFactory<T>andReRuneLocalizationWidgetBuilder<T>. - Added
ReRuneTextUpdateEventand exported it frompackage:rerune/rerune.dart. - Added optional fetched-only refresh APIs for immediate UI updates after applied OTA text changes:
reRuneFetchedRevision,reRuneFetchedRevisionListenable, andonReRuneFetchedTextsApplied. - Added
ReRuneLocalizationRefreshMode.fetchedUpdatesOnlytoReRuneBuilder. - Existing refresh behavior remains default; fetched-only refresh is opt-in.
- Updated generator output (
rerune_app_localizations.dart) to use renamedReRune*public APIs. - Expanded tests:
- controller tests for fetched-only revision/event behavior,
- new
test/ota_typed_localization_builder_test.dartfor builder refresh modes, - updated example widget test coverage for menu navigation.
- Example app now has a 3-page demo menu:
- manual refresh page,
- event-listener (
onReRuneFetchedTextsApplied) page, ReRuneBuilderpage with fetched-updates-only mode.
- Example manual refresh flow now separates update check from UI refresh and shows update-check results via
SnackBar. - Example pages are split into dedicated files under
example/lib/pages/. - Updated README and example README for renamed APIs and fetched-only refresh usage.
- Updated
AGENTS.mdnaming rules and applied them across the codebase. - Updated license copyright holder to
BasalBit GmbH.
0.0.3 #
- BREAKING: package identity is now
rerune. - BREAKING: public import changed to
package:rerune/rerune.dart. - Added canonical CLI command
flutter pub run rerunefor localization wrapper generation. - Added standard Flutter localization auto-detect from
l10n.yamland defaultgen-l10npaths. - Added
--dart-defineconfig fallback (RERUNE_PROJECT_ID,RERUNE_API_KEY,RERUNE_PLATFORM) sorerune.jsonasset setup is optional.
0.0.2 #
- BREAKING: removed legacy key-based APIs (
OtaLocalizations,OtaLocalizationsDelegate,OtaLocalizationBuilder). - BREAKING:
OtaLocalizationControllerno longer acceptsbaseUrl; API host is fixed tohttps://rerune.io/api. - Added typed
AppLocalizationsoverlay flow withOtaTypedLocalizationBuilder<T>. - Added generator entrypoint for producing typed OTA wrappers.
0.0.1 #
- Initial release of the OTA localization SDK.
- Manifest-based ARB updates with ETag support and local caching.
- Hot-swap localization delegate with Rerune-hosted manifest URLs.