Changelog
v2.1.2 — Upcoming
Fix Prefix admin
The admin route now accepts the provided prefix, routes are no longer hardcoded to /admin
v2.1.1 — 2026/05/02
Fix Responsive
Responsive admin — Several visual elements to fix on mobile/tablet.
Fix Admin view
Admin search — Debounce 300-500ms; WHERE on all model columns when list_display is empty, otherwise WHERE on list_display columns only. Current bug: falls back to id only when list_display is empty.
Fix Admin view
Admin filter persistence — Preserve search, filter_*, page, sort_by in the return URL after edit/delete. Current behavior: everything resets after redirect.
Fix Coverage test
Re-evaluate current rate (many features added since last audit). Target: 82% minimum line coverage.(try it)
Fix Multiple fix Makemigrations
derive_form bug fixes This release fixes a series of bugs in the derive_form proc-macro, uncovered while testing against a real project. No public API changes. Migration fixes unique_together and indexes defined in meta { } were silently ignored — SQL constraints are now correctly generated PascalCase model names in relations produced wrong module paths (super::menuimage instead of super::menu_image)
Fix Multiple fix Makemigrations
Entity generation fixes fk() in v2 blocks was silently ignored The skip attribute was unknown to the parser Decimal was missing from partial update and form mapping functions many_to_many syntax with a junction table was incorrect
Fix Multiple fix Makemigrations
Compilation fixes sea_query::ForeignKeyAction not found — re-exported from runique::migration rust_decimal::Decimal not found — replaced with sea_orm::prelude::Decimal .references_column() replaced with .to_column() via_self in ManyToMany relations generated the wrong variant name
Feature Forms
#[form] field override — field_override("name", |f| f.label("...").placeholder("...")) to configure label/placeholder on fields generated by the proc-macro.
Feature DIspatch_email
Add Email client SMTP/Console backends — Async email sending via lettre with configurable backend via EMAIL_BACKEND env var. Add Email builder — Fluent API for to, subject, html, text, reply_to; Tera template rendering with context! macro support. Add dispatch_email() — Shorthand helper for plain-text email sends in one call.
Feature Admin view
Admin history — CRUD action log per user: who changed what and when.
v2.1.0 — 2026/04/26
Fix Csp
Add the integration of integrity and crossorigin attributes in the static tag. The syntax of the tag changes from `{% static %}` to "{% static %}".
Fix Admin view
Group action available — bulk update fields directly from the list view via predefined selects (is_active, is_staff, etc.)
Fix add_js on Forms
The form function used to add a JS file now also adds CSP.
Fix Forms
Removal of Forms setters and getters in favor of using cleaned_{type}
Fix https
Following HTTPS production testing (~2h downtime), HTTP/1 and HTTP/2 support was fixed, removing the need for Nginx.
Feature Forms
Prisme refactor — form extraction integrated into Request Prisme removed as an Axum extractor. The pipeline (Sentinel → Aegis → CSRF) now runs automatically inside Request::from_request. Handlers access submitted form data via let form: MyForm = req.form() — no more Prisme parameter needed.
v2.0.0 — 2026/04/14
Feature derive_form
### Breaking Change — Semantic field types (derive_form 2.0.0) The DSL now uses semantic field types instead of raw SQL types. `String`, `i32`, `VARCHAR(n)` and other SQL primitives are removed from the `fields:` block and replaced by meaningful types that describe what the field is, not how it is stored. **Before:** fields: { username: String [max_length: 150, required] } **After:** fields: { username: text [max_length: 150, required] } The parser now automatically generates both the correct SQL schema (adapted per database engine detected from `.env`) and the form field code. No more duplicate declarations between model and form.
Fix Runique
Follows derive_form 2.0.0. All projects using model!{} macros must migrate their field declarations to the new semantic syntax. The framework itself gains no breaking changes beyond the DSL — middleware, admin, forms engine, and templates are unchanged. A migration guide will be provided covering the type mapping from 1.x SQL types to 2.0 semantic types.
v1.1.54 — 2026/04/11
Feature Admin view
Admin — permissions: removed from admin!{}: The permissions: [...] field is no longer accepted by the admin!{} macro. Remove it from all resource declarations — access control is now fully managed from the admin panel via scoped permissions. See the Permissions documentation.
Fix Admin view
search & filters (HTMX): Fetch-based admin list view with filter persistence. Includes search bar functionality, partially powered by HTMX.
Feature Admin view
Supports grouped/permission for actions (e.g. bulk delete/edit) in the admin view.
Fix Admin view
Admin — CSRF on login with DB sessions: Fixed CSRF token validation on the admin login page when using database-backed sessions.
Fix Macro search
Macro wrapping sea-orm queries, simplified and intuitive syntax
Fix Deriv_form
Modified — Procedural macro deriv_form to support Sea-ORM relations Updated — search! macro to align with deriv_form changes
Fix Logout
logout (session not cleared): Fixed an issue where users remained authenticated after logout. The session is now properly invalidated server-side, and the cookie is correctly cleared.
Fix Migration
table relationship order: Fixed table relationship ordering issues during creation. The CLI now generates migrations in the correct dependency order.
Fix Admin view
resource-level permissions system: Replaces static permissions: [...] with a database-driven system managed from the admin panel. Scoped permissions use resource_key and access_type (view / write). Write access is enforced server-side before every POST operation.
Fix Admin view
configure {} block in admin!{}: Allows configuring display options (list_display, list_exclude, list_filter) for any registered resource, including builtins. Admin — builtin resources (users, droits, groupes): Automatically registered with full CRUD support. No manual admin!{} declaration required.
Fix Admin view
resource_order([...]) allows controlling navigation order in the admin panel.
Fix Admin view
user creation flow: Users are created inactive and activated only after password setup via email reset flow. Login is blocked until activation is complete. separate create_form: support: Allows defining a dedicated form for creation, enabling password reset flow integration.
Fix Logger
Configurable logging (log_error, log_db, log_security, etc.) with builder error
Fix Macro search
up to take a relationship declaration
v1.1.53 — 2026/03/21
Fix Versionning Css
CSS versioning is now based on the file size.
Fix pagination
Pagination in the admin view is now functional and configurable in `admin.rs`.
Fix Boolean field
An unchecked boolean field is now treated as `false` rather than absent — the `required` validation no longer requires the box to be checked.
Fix Admin view
Restore template overriding functionality through the builder in the admin panel, and separate the demo logic from it
Fix Role vue admin
The addition of access permissions in the admin view is now functional; the documentation will provide more detailed information.
Fix Exercice interactif
Interactive exercise based on a prompt, connected to an AI, offering exercises on the current course -> in beta on the demo
Fix Password
The password field has been removed from the admin edit view. Password changes will now be handled through a dedicated email-based reset form.
Fix trim
Passwords and other database entries are now automatically passed through a `trim`, preventing any discrepancies caused by accidental spaces.
Fix Invalidation de session
Ability to choose whether to invalidate an active session when logging in from another device.
v1.1.51 — 20/03/2026
Fix Version derive_form -> Runique
The release order was reversed, publishing Runique 1.1.50 with the wrong version of `derive_form` 1.1.33 instead of 1.1.34.
v1.1.50 — 2026-03-20
Fix FileField — validation des restrictions
Invalid files are automatically deleted from the disk if validation fails. Submissions without a file no longer create orphaned files. The `upload_to()` function sets the exact path, and files are only moved in `finalize()` after successful validation.
Fix RuniqueForm::clear() + Forms::clear_values()
Clears all field values (except CSRF) and resets `submitted` to `false`. Requires `&mut self` — can be called from a handler or from `save(&mut self)`.
Feature derive_form — option file()
Models can now accept a file upload link.
v1.1.49 — 2026-03-19
Fix Makemigrations — ordre FK et updated_at
The new tables are topologically sorted before generation. `updated_at` is generated with `ON UPDATE CURRENT_TIMESTAMP` (MySQL) or a trigger (PostgreSQL). The diff detects columns that have gained or lost `DEFAULT CURRENT_TIMESTAMP`.
Fix is_valid() bloquait tous les formulaires
`set_expected_value()` has been removed from `Forms::new()`. CSRF is already validated upstream in Prisme — double validation was causing every submission to be rejected, even with correct data.