Core release
Railbase core v0.5.25
Plugin RBAC unification
- Plugin seat-licensing collapsed onto the built-in
internal/rbac— one authorization system (the separate_user_plugin_rolesstore is retired). - No bypass:
system_admin/tenant:ownernow hold every catalogued action explicitly, so every decision is a real grant check. - Plugins declare their own roles in the bundle manifest (
rbac.roles[]); the core registers each as a first-class role on install with its permissions + billable flag. - Manifest mount/auth is authoritative — a non-configurable app-user plugin can't be forced public by an operator override.
- Permissions editable for all roles; Roles drawer rebuilt on the kit composites.
Admin UI conformance
- New eslint rules (drawer-editable-only, no-raw-control, use-email-input) promoted to error; ~30 admin screens migrated onto the shared UI kit (eslint ratchet at baseline 0).
i18n
- Admin + plugin marketplace translated into the 8 remaining locales (ar, bn, es, fr, hi, pt, ur, zh) on the unified Vault-backed catalog, with a deterministic translator + terminology brand-book.
Gate: go build/vet + go test -race ./... green; admin tsc + eslint (baseline 0) + vitest 201 + admin/site builds green.