CHANGELOG

Changelog

All notable changes to MVC::Keayl are recorded here. The format groups entries under Added, Changed, Fixed, and Removed.

v0.9.1 (2026-07-11)

Added

  • Multipart form parsing: a multipart/form-data request body parses text fields and file fields, each file becoming a { filename, content, type } hash whose content is the raw upload as a Blob, so binary uploads reach controller parameters byte-for-byte.

  • Model and form translation on the i18n backend: human-attribute-name, human-model-name, translate-error, form-label, form-placeholder, and submit-default, each accepting the model as a class or an instance.

Changed

  • Development defaults to a log level that shows request logging, so a locally booted app logs each request without extra configuration. Other environments stay silent unless log-level is set.

Fixed

  • Class-level controller traits (is layout, is protect-from-forgery, is filter-parameters, is wrap-parameters, and a class-level helper-method declaration) were silently dropped when the controller was precompiled in its own module. They are now stored on the class itself and survive precompilation.

v0.9.0 (2026-06-25)

First public release. MVC::Keayl is the web layer of a Rails-style stack for Raku, pairing with ORM::ActiveRecord for models and Template::HAML for views.

Added

  • Request and Response wrappers over the underlying HTTP server.

  • Rack-like middleware stack and endpoint protocol, with built-in middleware for static file serving, host authorization, request logging, request IDs, SSL redirection, and secure headers.

  • Abstract server adapter contract, with a Cro-based default adapter and an in-memory test adapter.

  • Routes file DSL with resourceful routes, mounts, redirects, path patterns, and URL helpers.

  • Base controller with per-request state, action dispatch, and filters.

  • Inline controller DSL through method and class traits: is before-action, is after-action, is around-action, is rescue-from, is helper-method, is layout, is protect-from-forgery, is rate-limit, is wrap-parameters, is filter-parameters, is add-flash-types, and is http-basic-authenticate-with.

  • View resolution, pluggable view handlers with a HAML handler, and view caching.

  • URL, asset, date/time, form, number, options, tag, and text view helpers.

  • Custom view helper modules from app/helpers, with an ApplicationHelper and per-controller <Name>Helper loaded into the view context and reloaded on change in development.

  • Cookie jar with signed and encrypted variants.

  • Session abstraction with cookie-backed and server-side stores.

  • Flash messages that survive one redirect.

  • CSRF authenticity tokens and forgery protection.

  • Parameter filtering to redact sensitive values from logs.

  • Transport and host security: SSL enforcement, host authorization, and secure headers.

  • Secrets resolution, credentials, and key derivation.

  • Content negotiation with MIME types, respond-to, and an API controller base.

  • Conditional GET, cache headers, fragment caching, and response streaming.

  • Application object with configuration loading, boot, and request dispatch.

  • Internationalization with locales and pluralization.

  • HTTP authentication helpers.

  • Logging, instrumentation and notifications, error reporting, and a developer exception page.

  • Background jobs with async, inline, test, and database queue adapters, plus GlobalID serialization.

  • Mailer with file, SMTP, and test delivery, previews, and a delivery job.

  • Action Mailbox for routing and ingesting inbound mail.

  • Action Text for rich text content.

  • Active Storage with services, attachments, variants, and blob serving.

  • Cable with channels, connections, in-memory and external pub/sub, and broadcasting.

  • Live streaming responses.

  • Asset pipeline with serving and asset helpers.

  • Health check and PWA controllers.

  • Mountable engines.

  • CLI with code generators and test support utilities.

MVC::Keayl v0.9.1

Model-View-Controller web framework

Authors

  • Greg Donald

License

Artistic-2.0

Dependencies

Cro::HTTPCrypt::RandomDigest::HMACDigest::SHA1::NativeOpenSSLMIME::Base64YAMLishORM::ActiveRecord:auth<zef:gdonald>Template::HAML:auth<zef:gdonald>

Provides

  • MVC::Keayl
  • MVC::Keayl::APIController
  • MVC::Keayl::ActionText
  • MVC::Keayl::ActionText::Repository
  • MVC::Keayl::ActionText::RichTextable
  • MVC::Keayl::Adapter
  • MVC::Keayl::Adapter::Cro
  • MVC::Keayl::Adapter::Test
  • MVC::Keayl::Application
  • MVC::Keayl::Assets
  • MVC::Keayl::Assets::Serving
  • MVC::Keayl::CLI
  • MVC::Keayl::CSRF
  • MVC::Keayl::Cable::Broadcasting
  • MVC::Keayl::Cable::Channel
  • MVC::Keayl::Cable::Connection
  • MVC::Keayl::Cable::PubSub
  • MVC::Keayl::Cable::PubSub::External
  • MVC::Keayl::Cable::PubSub::InMemory
  • MVC::Keayl::Cache
  • MVC::Keayl::Caching
  • MVC::Keayl::Config
  • MVC::Keayl::Controller
  • MVC::Keayl::Cookies
  • MVC::Keayl::Credentials
  • MVC::Keayl::Dispatcher
  • MVC::Keayl::Endpoint
  • MVC::Keayl::Engine
  • MVC::Keayl::ErrorReporter
  • MVC::Keayl::ErrorReporting
  • MVC::Keayl::Errors
  • MVC::Keayl::ExceptionPage
  • MVC::Keayl::Flash
  • MVC::Keayl::HealthController
  • MVC::Keayl::Helpers::Asset
  • MVC::Keayl::Helpers::DateTime
  • MVC::Keayl::Helpers::Form
  • MVC::Keayl::Helpers::Number
  • MVC::Keayl::Helpers::Options
  • MVC::Keayl::Helpers::Tag
  • MVC::Keayl::Helpers::Text
  • MVC::Keayl::Helpers::Url
  • MVC::Keayl::HttpAuthentication
  • MVC::Keayl::I18n
  • MVC::Keayl::I18n::Locale
  • MVC::Keayl::I18n::Pluralization
  • MVC::Keayl::Job
  • MVC::Keayl::Job::GlobalID
  • MVC::Keayl::Job::QueueAdapter
  • MVC::Keayl::Job::QueueAdapter::Async
  • MVC::Keayl::Job::QueueAdapter::Database
  • MVC::Keayl::Job::QueueAdapter::Inline
  • MVC::Keayl::Job::QueueAdapter::Test
  • MVC::Keayl::Live
  • MVC::Keayl::LogEvent
  • MVC::Keayl::Logger
  • MVC::Keayl::Mail
  • MVC::Keayl::Mailbox
  • MVC::Keayl::Mailbox::Ingress
  • MVC::Keayl::Mailbox::Router
  • MVC::Keayl::Mailer
  • MVC::Keayl::Mailer::Delivery
  • MVC::Keayl::Mailer::Delivery::File
  • MVC::Keayl::Mailer::Delivery::SMTP
  • MVC::Keayl::Mailer::Delivery::Test
  • MVC::Keayl::Mailer::DeliveryJob
  • MVC::Keayl::Mailer::Preview
  • MVC::Keayl::Middleware
  • MVC::Keayl::Middleware::Database
  • MVC::Keayl::Middleware::HostAuthorization
  • MVC::Keayl::Middleware::Logger
  • MVC::Keayl::Middleware::RequestId
  • MVC::Keayl::Middleware::SSL
  • MVC::Keayl::Middleware::SecureHeaders
  • MVC::Keayl::Middleware::Static
  • MVC::Keayl::MiddlewareStack
  • MVC::Keayl::Mime
  • MVC::Keayl::Notifications
  • MVC::Keayl::PWAController
  • MVC::Keayl::ParameterFilter
  • MVC::Keayl::Parameters
  • MVC::Keayl::Params
  • MVC::Keayl::Request
  • MVC::Keayl::Response
  • MVC::Keayl::Router
  • MVC::Keayl::Routing
  • MVC::Keayl::Routing::Mount
  • MVC::Keayl::Routing::PathPattern
  • MVC::Keayl::Routing::Redirect
  • MVC::Keayl::Routing::Resources
  • MVC::Keayl::Routing::Route
  • MVC::Keayl::Routing::RouteMatch
  • MVC::Keayl::Routing::UrlHelpers
  • MVC::Keayl::SafeString
  • MVC::Keayl::Secrets
  • MVC::Keayl::Session
  • MVC::Keayl::Storage
  • MVC::Keayl::Storage::Attached
  • MVC::Keayl::Storage::Repository
  • MVC::Keayl::Storage::Service
  • MVC::Keayl::Storage::Serving
  • MVC::Keayl::Storage::Variant
  • MVC::Keayl::TestSupport
  • MVC::Keayl::View
  • MVC::Keayl::View::Context
  • MVC::Keayl::View::Handler
  • MVC::Keayl::View::Handler::HAML

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.