• fsylvain released this 2026-09-30 03:11:37 +02:00 | 92 commits to main since this release

    RenewCMS now knows who owns the workspace. The owner manages invites, including cancelling and renewing them, while every admin keeps the same access to content. A new Settings page shows which build is running.

    New

    Owner and admin roles

    • The first registered account is the owner. Everyone who joins through an invite is an admin.
    • Only the owner can send, cancel or renew invites. Admins keep the same access to articles, images, the Users list, their Profile and Settings.
    • There is exactly one owner. Roles can't be changed or transferred yet.
    • Existing installs are migrated automatically: the oldest account becomes the owner and every other account an admin.

    Invite management

    • Pending invites get a Cancel invite action on the Users page. The invite link stops working.
    • Expired invites get a Renew invite action. It sends a new email with a new personal link valid for 3 days, and the old link stays dead.

    Users list

    • The Users table and the mobile card list now show Email, Display name (a dash when empty), Role, Invite status and Created.
    • A new role badge tells the owner and admins apart.

    Settings page

    • A new Settings page at /settings sits after Integration in the sidebar and the mobile drawer. It shows the version of the running build.

    Improvements and fixes

    • The desktop account menu's icons, labels and check mark are now centred in their 32 px rows.
    • The account menu follows the redesigned board: System, Light and Dark stay in both the menu and the mobile sheet.
    • The article editor's toolbar scrolls horizontally on mobile instead of overflowing.
    • The editor's last-saved label now moves from minutes to hours and days instead of counting minutes only.

    API

    • DELETE /v1/user/invite/{id} cancels a pending invite and returns 204.
    • POST /v1/user/invite/{id}/renew returns 200 with a new code, sets expires_at to now plus 3 days and created_at to now, and resends the invitation email.
    • Changed: POST /v1/user/invite is now owner-only, like the two endpoints above. Other users get 403 with "Only the owner can do this."
    • GET /v1/settings (authenticated, verified users) returns the running build's version.
    • Changed: user objects from GET /v1/user/, GET /v1/auth/me and POST /v1/auth/verify now include role (owner or admin).

    Upgrading

    • Replace the binary and restart. Your .env and SQLite file stay as they are.
    • The database migrates itself on startup. It adds a role column to users and fills it in: the account with the lowest id becomes the owner, every other account an admin. A database that already has roles is left unchanged. Back up your SQLite file first as a precaution.
    • Behaviour change: admins who joined through a v2.3.0-beta invite can no longer send invites.
    • No new environment variables.

    Known limitations

    • No endpoint changes or transfers the owner role, and users can't be removed yet.
    Downloads