Skip to content

v3.0.0 - Ash Framework Migration

Latest

Choose a tag to compare

@benswift benswift released this 22 Oct 00:04
· 999 commits to main since this release

PANIC! v3.0.0 - Ash Framework Migration (October 2024)

Major architectural migration to the Ash Framework, representing a complete modernization of PANIC!'s codebase.

Architecture

  • SQLite + Ash Framework + GenServer
  • Declarative resource definitions with Ash
  • Integrated authentication via AshAuthentication

Major Changes

  • Ecto contexts → Ash domains: Business logic now organized in declarative domains
  • Ecto schemas → Ash resources: Data modeling with powerful built-in querying
  • Custom auth → AshAuthentication: Standardized authentication with multiple strategies
  • Finitomata FSM → GenServer-based NetworkRunner: Simplified process architecture
  • Terminology update: 'Prediction' → 'Invocation' for clearer semantics

Benefits of Ash Framework

  • Declarative resource definitions: Attributes, relationships, and actions defined in one place
  • Powerful query interface: Composable queries with filtering, sorting, and loading
  • Built-in authorization: Policy-based access control integrated into resources
  • Code interfaces: Type-safe functions generated from resource definitions
  • Extensibility: Easy to add new capabilities through Ash's extension system

Technical Improvements

  • Better separation of concerns with domain-driven design
  • More maintainable codebase with less boilerplate
  • Type-safe interfaces throughout the application
  • Improved test architecture using Ash generators

This version brings PANIC! into the modern Elixir ecosystem while maintaining backward compatibility with SQLite data storage. The Ash Framework provides a solid foundation for future development and makes the codebase significantly more maintainable.