Skip to content

Releases: fiftynotai/fifty_flutter_kit

fifty_storage v0.1.0

31 Dec 16:34

Choose a tag to compare

fifty_storage v0.1.0

Initial release of the secure storage package for the Fifty ecosystem.

Overview

fifty_storage provides a unified storage solution for Flutter apps, combining:

  • Secure token storage for authentication credentials (via flutter_secure_storage)
  • Preferences storage for app settings (via get_storage)

Originally extracted from fifty_arch to enable standalone use.

Features

  • TokenStorage contract - Abstract interface for secure credential storage, enabling custom implementations and easy testing
  • SecureTokenStorage - Platform-native secure storage implementation
    • Singleton pattern with in-memory caching
    • Synchronous reads after initialization
    • Platform secure storage (Keychain/Keystore)
  • PreferencesStorage - Lightweight key-value storage for settings
    • Configurable container name via configure()
    • Theme mode, language code, and user ID support
    • Clear all preferences utility
  • AppStorageService - Unified facade combining both storage types
    • Single initialization for both storage types
    • Simplified API for common storage operations
  • Comprehensive test suite with mocking support
  • Full documentation with usage examples

Platform Support

Platform Secure Storage Backend
iOS Keychain
Android Android Keystore (EncryptedSharedPreferences)
macOS Keychain
Linux libsecret
Windows Windows Credentials

Installation

Git Dependency:

dependencies:
  fifty_storage:
    git:
      url: https://github.com/fiftynotai/fifty_eco_system.git
      path: packages/fifty_storage

Path Dependency (Monorepo):

dependencies:
  fifty_storage:
    path: ../fifty_storage

Quick Start

import 'package:fifty_storage/fifty_storage.dart';

void main() async {
  // Configure container name (optional)
  PreferencesStorage.configure(containerName: 'my_app');

  // Initialize all storage
  await AppStorageService.instance.initialize();

  // Use preferences
  AppStorageService.instance.themeMode = 'dark';

  // Use secure token storage
  await AppStorageService.instance.setAccessToken('jwt_token');
  final token = AppStorageService.instance.accessToken;
}

Documentation

See README.md for complete documentation.

Ecosystem

Part of the Fifty Ecosystem:

  • fifty_tokens, fifty_theme, fifty_ui, fifty_arch
  • fifty_cache, fifty_audio_engine, fifty_speech_engine
  • fifty_sentences_engine, fifty_map_engine

fifty_connectivity v0.1.0 - Initial Release

31 Dec 19:41

Choose a tag to compare

Overview

Network connectivity monitoring with intelligent reachability probing (DNS/HTTP). Part of the Fifty ecosystem.

This package provides real-time network connectivity detection with intelligent reachability verification, going beyond simple transport-layer checks to ensure true internet connectivity.

Key Features

Core Services

  • ReachabilityService - DNS lookup and HTTP health check probing for true internet detection
  • ConnectionViewModel - GetX-based reactive connection state management
  • ConnectionActions - UX orchestration singleton for connection events

UI Widgets

  • ConnectionOverlay - Overlay widget with animated status badge
  • ConnectionHandler - Switcher widget that renders based on connection state
  • ConnectivityCheckerSplash - Configurable splash screen with connectivity check

Configuration

  • ConnectivityConfig - Centralized configuration for labels, navigation, and assets
  • ConnectionBindings - GetX dependency injection with optional telemetry callbacks

Design Decisions

Decoupled Architecture

  • Uses ConnectivityConfig.navigateOff callback for navigation (no RouteManager dependency)
  • Uses ConnectivityConfig.logoBuilder for splash logo (no AssetsManager dependency)
  • All labels externalized via static properties for i18n support
  • Depends on fifty_utils for Duration.format() extension

FDL Compliance

  • Kinetic Brutalism aesthetic with Orbital Command theme
  • Uses fifty_tokens and fifty_ui for consistent styling
  • Dark mode primary with crimson glow for offline states

Connectivity Types

Type Description
wifi Connected via Wi-Fi
mobileData Connected via cellular data
connecting Probing connectivity
disconnected No network transport
noInternet Transport available but no internet reachability

Dependencies

dependencies:
  connectivity_plus: ^6.1.0
  get: ^4.6.6
  fifty_tokens: ^0.2.0
  fifty_ui: ^0.5.0
  fifty_utils: ^0.1.0

Installation

dependencies:
  fifty_connectivity:
    path: ../fifty_connectivity

Quick Start

void main() {
  // Initialize bindings
  ConnectionBindings().dependencies();
  
  // Configure navigation
  ConnectivityConfig.navigateOff = (route) async {
    Get.offAllNamed(route);
  };
  
  runApp(
    ConnectionOverlay(
      child: GetMaterialApp(home: HomePage()),
    ),
  );
}

Test Coverage

  • 10 unit tests for config, enums, and service instantiation
  • Widget tests integrated into fifty_arch test suite (114+ passing)

Documentation

See the README for full API documentation and usage examples.


Part of the Fifty Ecosystem - 12 packages for building robust Flutter applications.

fifty_arch v0.7.0

31 Dec 20:03

Choose a tag to compare

fifty_arch v0.7.0

Connectivity module extracted to standalone fifty_connectivity package.

Changes

  • Added fifty_connectivity v0.1.0 as dependency
  • Removed 8 internal connectivity files (now in fifty_connectivity)
  • Re-exports all connectivity APIs for backwards compatibility
  • Pre-configured ConnectivityConfig.navigateOff with RouteManager.off()

Migration

No API changes required. If you were importing directly from modules/connections/, update to use package:fifty_connectivity/fifty_connectivity.dart.

Ecosystem Dependencies

Package Version Purpose
fifty_tokens v0.2.0 Design tokens
fifty_theme v0.1.0 Theme system
fifty_ui v0.5.0 UI components
fifty_cache v0.1.0 HTTP caching
fifty_storage v0.1.0 Secure storage
fifty_utils v0.1.0 Utilities
fifty_connectivity v0.1.0 Network monitoring

Test Results

All 114+ tests passing.


Full Changelog: fifty_arch-v0.6.0...fifty_arch-v0.7.0

fifty_speech_engine v0.1.0 - Initial Release

30 Dec 13:36

Choose a tag to compare

fifty_speech_engine v0.1.0

Unified speech interface for Flutter games and applications.


Overview

Fifty Speech Engine combines Text-to-Speech (TTS) and Speech-to-Text (STT) into a single, easy-to-use interface. Part of the Fifty Design Language ecosystem.


Highlights

  • Unified API - Single engine for both TTS and STT
  • Locale-aware - Configure once, works everywhere
  • Queue Support - STT results queued to prevent overlap
  • Continuous Listening - Dictation mode for longer input
  • Callback-based - Clean result handling

Features

FiftySpeechEngine

Main unified controller combining TTS and STT capabilities.

TtsManager

  • Flutter TTS integration
  • Language and voice configuration
  • Speech completion callbacks
  • Dynamic language switching

SttManager

  • Speech recognition with queue support
  • Partial and final result handling
  • Continuous listening mode (dictation)
  • Error callback handling

SpeechResultModel

  • Text and final flag properties
  • Factory constructors for convenience

Platform Support

Platform TTS STT Notes
Android Yes Yes Requires RECORD_AUDIO permission
iOS Yes Yes Requires microphone usage description
macOS Yes Yes Requires audio-input entitlement
Linux Yes Limited STT requires libspeechd
Web Yes Yes Browser-dependent

Installation

Add to your pubspec.yaml:

dependencies:
  fifty_speech_engine:
    git:
      url: https://github.com/fiftynotai/fifty_eco_system.git
      path: packages/fifty_speech_engine

Quick Start

import 'package:fifty_speech_engine/fifty_speech_engine.dart';

// 1. Create engine with locale
final engine = FiftySpeechEngine(
  locale: Locale('en', 'US'),
  onSttResult: (text) async => print('Heard: \$text'),
  onSttError: (error) => print('Error: \$error'),
);

// 2. Initialize
await engine.initialize();

// 3. Speak text
await engine.speak('Hello! How can I help you?');

// 4. Listen for voice input
await engine.startListening(continuous: true);

// 5. Clean up
engine.dispose();

Example App

The package includes a comprehensive demo application:

  • Architecture: MVVM + Actions pattern (Kalvad)
  • TTS Panel: Text input with speak/stop controls
  • STT Panel: Continuous and single-phrase modes
  • Languages: 9 supported languages
  • Styling: FDL integration (fifty_ui, fifty_theme, fifty_tokens)
cd packages/fifty_speech_engine/example
flutter pub get
flutter run

Documentation


Ecosystem

Package Version Description
fifty_tokens v0.2.0 Design tokens
fifty_theme v0.1.0 Theme provider
fifty_ui v0.4.0 Component library
fifty_audio_engine v0.7.0 Audio engine
fifty_speech_engine v0.1.0 Speech engine

License

MIT License


Part of the Fifty Design Language ecosystem.

fifty_sentences_engine v0.1.0

30 Dec 15:58

Choose a tag to compare

fifty_sentences_engine v0.1.0

Initial Release - Queue-based sentence and dialogue processing engine for games and interactive applications.

Highlights

  • SentenceEngine - Core queue-based processor with status tracking and flow control
  • SentenceInterpreter - Instruction handler for read, write, ask, wait, navigate
  • SentenceQueue - Optimized queue with front/back/ordered operations
  • SafeSentenceWriter - Deduplication for idempotent rendering
  • BaseSentenceModel - Abstract interface for custom sentence models

Example Application

Comprehensive example demonstrating:

  • MVVM + Actions architecture
  • FDL styling with fifty_tokens, fifty_theme, fifty_ui
  • 19-sentence interactive demo story
  • Queue visualization and flow control buttons

Platform Support

Platform Status
Android Supported
iOS Supported
macOS Supported
Linux Supported
Windows Supported
Web Supported

Key Features

Queue-Based Processing

final engine = SentenceEngine(
  onStatusChange: (status) => print('Status: $status'),
  onSentencesChanged: (sentences) => updateUI(sentences),
);

engine.queue.pushBackAll(storyDialogue);
engine.process();

Instruction Handling

final interpreter = SentenceInterpreter(
  onRead: (s) async => await tts.speak(s.text),
  onWrite: (s) async => displayDialogue(s.text),
  onAsk: (s) async => showChoices(s.choices),
  onWait: (s) async => waitForTap(),
  onNavigate: (s) async => goToPhase(s.phase),
);

Migration from erune_sentences_engine

If upgrading from erune_sentences_engine:

  1. Update package import to fifty_sentences_engine
  2. Replace GetxController usage with callback parameters
  3. Use onSentencesChanged callback instead of RxList

Documentation

Full Changelog

See CHANGELOG.md

fifty_map_engine v0.1.0

30 Dec 18:21

Choose a tag to compare

fifty_map_engine v0.1.0

Flame-based interactive grid map rendering for Flutter games.

Features

  • FiftyMapController - UI-friendly facade for map manipulation
  • FiftyMapBuilder - FlameGame implementation with pan/zoom gestures
  • FiftyMapWidget - Flutter widget embedding the map
  • FiftyMapEntity - Data model for map entities with JSON serialization
  • FiftyEntitySpawner - Factory for spawning components with custom type registration
  • FiftyAssetLoader - Asset registration and bulk loading
  • FiftyMapLoader - JSON map data loading and serialization

Components

  • FiftyBaseComponent - Abstract base for all entity components
  • FiftyStaticComponent - Static entities (furniture, doors)
  • FiftyMovableComponent - Movable entities with animation support
    • Movement: moveTo, moveUp, moveDown, moveLeft, moveRight
    • Effects: attack (bounce), die (fade out)
    • Sprite swap at runtime
  • FiftyRoomComponent - Room containers with child spawning
  • FiftyEventComponent - Event markers and overlays
  • FiftyTextComponent - Text overlays
  • FiftyRenderPriority - Z-ordering for render layers

Camera Controls

  • Smooth pan with single finger drag
  • Pinch-to-zoom anchored at midpoint (0.3x - 3.0x range)
  • Programmatic zoom in/out/reset
  • Center on all entities or specific entity

Platform Support

  • Android
  • iOS
  • macOS
  • Linux
  • Windows
  • Web

Example App

Includes FDL-styled example app with:

  • MVVM + Actions architecture pattern
  • Interactive map with pan/zoom controls
  • Entity manipulation (add, remove, move)
  • Camera controls (zoom in/out, center)
  • D-pad movement controls
  • Status bar with state indicators

Installation

```yaml
dependencies:
fifty_map_engine: ^0.1.0
```

Quick Start

```dart
import 'package:fifty_map_engine/fifty_map_engine.dart';

// Create controller
final controller = FiftyMapController();

// Use in widget
FiftyMapWidget(
controller: controller,
assets: ['assets/sprites/character.png'],
)
```


Full Changelog: See CHANGELOG.md

fifty_audio_engine v0.7.0

27 Dec 03:34

Choose a tag to compare

fifty_audio_engine v0.7.0

Initial release as part of the Fifty Design Language ecosystem.


Highlights

  • Three-Channel Audio Architecture - BGM, SFX, and Voice channels with specialized optimizations
  • Rebranded from arkada_sound_engine - Full ecosystem integration with fifty_tokens
  • FiftyMotion Token Integration - Fade timing aligned with design system motion tokens
  • Comprehensive Example App - MVVM + Actions architecture showcasing all features
  • Multi-Platform Support - Android, iOS, macOS, Linux, Windows, Web

Features

FiftyAudioEngine

Main singleton controller for all audio operations.

BgmChannel

Background music with:

  • Playlist management with shuffle
  • Automatic crossfade 3 seconds before track end
  • Persistent volume and state

SfxChannel

Sound effects with:

  • Pooled playback (4 concurrent players per sound)
  • 150ms throttle per group to prevent spam
  • Low-latency player mode

VoiceActingChannel

Voice-over with:

  • Automatic BGM ducking (fade to 30%)
  • URL streaming support
  • Ducking hooks for custom behavior

FadePreset

7 preset configurations aligned with FiftyMotion tokens:

  • fast (150ms) - UI feedback
  • panel (300ms) - Panel reveals
  • normal (800ms) - Scene transitions
  • cinematic (2000ms) - Dramatic moments
  • ambient (3000ms) - Environmental changes
  • buildTension (1200ms) - Boss entrances
  • smoothExit (1000ms) - Scene fade outs

Example App

Comprehensive demo app demonstrating all audio engine capabilities:

  • BGM Controls - Playlist, volume, mute, shuffle, track selection
  • SFX Controls - Sound groups, single play, volume, rapid-fire demo
  • Voice Controls - Playback with ducking toggle
  • Global Controls - Master mute, fade presets (5 levels), stop all
  • Real Audio - URL streaming with royalty-free samples
  • iOS Compatible - MP3 audio sources for full platform support
  • FDL Compliant - 12+ fifty_ui components integrated

Installation

dependencies:
  fifty_audio_engine:
    git:
      url: https://github.com/fiftynotai/fifty_eco_system.git
      path: packages/fifty_audio_engine

Quick Start

import 'package:fifty_audio_engine/fifty_audio_engine.dart';

// Initialize
await FiftyAudioEngine.instance.initialize([
  'assets/bgm/title.mp3',
  'assets/bgm/gameplay.mp3',
]);

// Play BGM
FiftyAudioEngine.instance.bgm.playNext();

// Fire SFX
FiftyAudioEngine.instance.sfx.play('assets/sfx/click.wav');

// Play voice (auto-ducks BGM)
FiftyAudioEngine.instance.voice.playVoice('https://cdn.example.com/vo/greeting.mp3');

Platform Support

Platform Status
Android Supported (API 21+)
iOS Supported (12.0+)
macOS Supported (10.11+)
Linux Supported
Windows Supported
Web Supported

Documentation


Briefs Completed

  • BR-011 - fifty_audio_engine package (rebranded from arkada_sound_engine)
  • BR-012 - Example app with MVVM + Actions architecture

fifty_ui v0.4.0 - Form Components

26 Dec 21:48

Choose a tag to compare

fifty_ui v0.4.0 - Form Components

The Fifty UI component library expands with powerful form components following the Fifty Design Language.

New Components

FiftySwitch

Kinetic toggle switch with brutalist aesthetic and snap animation.

  • Snap animation - 150ms with overshoot spring effect
  • Three sizes - Small (36x20), Medium (48x24), Large (60x32)
  • FDL styling - Crimson thumb when active, HyperChrome when inactive
  • Optional label - Text label support for accessibility

FiftySlider

Brutalist range selector for value input.

  • Thin track - Clean design with crimson active fill
  • Square thumb - Brutalist aesthetic with rounded corners
  • Value label - Optional display on hover/drag
  • Discrete divisions - Support for stepped values

FiftyDropdown

Terminal-styled dropdown selector.

  • TextField appearance - Looks like FiftyTextField with chevron indicator
  • Slide animation - Smooth slide-down for menu expansion
  • Crimson highlight - Hover effect on menu items
  • Check mark - Visual indicator for selected item
  • Icon support - Optional icons for dropdown items

Test Coverage

  • 50 new widget tests for form components
  • All components tested for accessibility
  • Animation and interaction tests included

Example App

The example gallery has been updated with form component demos showcasing all variants and configurations.


Full Changelog: CHANGELOG.md

Previous Release: v0.3.0

fifty_ui v0.3.0

26 Dec 20:15

Choose a tag to compare

fifty_ui v0.3.0

Component enhancements release delivering FDL-compliant UI improvements.

Features

FiftyButton Enhancements

  • isGlitch - RGB chromatic aberration effect on hover
  • shape - Choose between sharp (4px radius) or pill (100px radius)

FiftyTextField Enhancements

  • borderStyle - Control border: full, bottom, or none
  • prefixStyle - Terminal prefix: chevron (">"), comment ("//"), custom
  • cursorStyle - Cursor appearance: line, block, or underscore

FiftyCard Enhancements

  • hasTexture - Halftone dot pattern overlay
  • hoverScale - Configurable scale factor on hover

FiftyBadge Enhancements

  • FiftyBadge.tech() - Gray tech labels
  • FiftyBadge.status() - Green status with glow
  • FiftyBadge.ai() - IgrisGreen AI indicator

FiftyLoadingIndicator Enhancements

  • FiftyLoadingStyle.sequence - Cycle through text sequences
  • sequences - Custom sequence list

Accessibility

  • All components respect MediaQuery.disableAnimations

Quality

  • 124 tests passing
  • Zero analyzer warnings
  • Full FDL compliance

Installation

dependencies:
  fifty_ui:
    git:
      url: https://github.com/fiftynotai/fifty_eco_system.git
      path: packages/fifty_ui
      ref: fifty_ui-v0.3.0

See CHANGELOG.md for full details.

fifty_theme v0.1.0

25 Dec 00:14

Choose a tag to compare

fifty_theme v0.1.0

Release Date: 2025-12-25

Transform design tokens into production-ready Flutter themes.


Highlights

fifty_theme is the theming layer of the Fifty Design Language (FDL) ecosystem. It converts fifty_tokens into complete Material 3 ThemeData, ready for use in any Flutter application.

Key Features

  • Complete Material 3 Theme - Dark and light modes with full component coverage
  • 25+ Component Themes - Buttons, cards, inputs, navigation, and more
  • Zero Elevation Design - No drop shadows; uses crimson glow for focus states
  • Binary Typography - Monument Extended (Hype) + JetBrains Mono (Logic)
  • Custom Theme Extension - Access Fifty-specific colors, glows, and motion tokens
  • OLED Optimized - True black backgrounds for power efficiency

Quick Start

import 'package:fifty_theme/fifty_theme.dart';

MaterialApp(
  theme: FiftyTheme.dark(),  // Dark mode is PRIMARY
  home: MyApp(),
);

What's Included

Core Classes

Class Purpose
FiftyTheme Main entry point - dark() and light() factory methods
FiftyColorScheme Maps fifty_tokens colors to Material ColorScheme
FiftyTextTheme Binary type system with Hype and Logic fonts
FiftyComponentThemes 25+ pre-configured component themes
FiftyThemeExtension Custom properties (igrisGreen, glows, motion)

Theme Extension Properties

Access via Theme.of(context).extension<FiftyThemeExtension>():

  • Colors: igrisGreen, success, warning
  • Glows: focusGlow, strongFocusGlow
  • Durations: instant, fast, compiling, systemLoad
  • Curves: standardCurve, enterCurve, exitCurve

Design Philosophy

The theme follows Fifty Design Language (FDL) principles:

  1. Dark mode is PRIMARY - Not an afterthought, the canonical experience
  2. No shadows, only glow - Crimson glow replaces drop shadows
  3. Compact density - Information-dense bento-grid layouts
  4. Zero elevation - Flat surfaces with border outlines
  5. Kinetic typography - Bold headlines, functional body text

Test Coverage

  • 109 tests passing
  • All components verified
  • Both dark and light modes tested
  • Theme extension interpolation tested

Dependencies

  • flutter SDK >=3.0.0
  • fifty_tokens ^0.2.0

Font Requirements

Ensure these fonts are configured in your pubspec.yaml:

  • Monument Extended (for headlines)
  • JetBrains Mono (for body text)

Installation Note

This package currently uses a path dependency for fifty_tokens (monorepo development). For standalone use:

# Option 1: Git dependency
dependencies:
  fifty_theme:
    git:
      url: https://github.com/fifty-dev/fifty_eco_system.git
      path: packages/fifty_theme

# Option 2: After pub.dev publishing
dependencies:
  fifty_theme: ^0.1.0

Related Packages

Package Status Description
fifty_tokens v0.2.0 Design tokens (foundation)
fifty_theme v0.1.0 Flutter theming (this release)
fifty_ui Coming soon Component library

Full Changelog

See CHANGELOG.md for complete details.


Part of the fifty.dev ecosystem

The interface is the machine. Make it feel alive.