v0.5.0 — accounts, poll sharing & transfer, user blocking
Highlights
This release turns single-presenter polls into a multi-presenter, account-aware system: presenters get real sessions and passwords, polls can be shared with or handed over to colleagues, and a bootstrap admin can manage accounts.
Presenter accounts & sessions
- Spring Session JDBC store with a Caffeine read cache and a session registry.
- Self-service password change — changing your password signs out your other sessions but keeps the current one.
GET /api/admin/accountexposes the signed-in presenter and whether they are the bootstrap admin.
Poll sharing & transfer
- Share a poll with another presenter as a collaborator: collaborators can edit the poll and run it from their own Slidev deck.
- Transfer a poll to hand ownership over outright (confirmed by typing the new owner's name).
- Owner-only actions (delete, transfer, manage collaborators) are gated on ownership; shared polls are flagged in the poll list via
isOwner. - Deck tokens record who minted them; removing a collaborator revokes the deck tokens they created.
User management (bootstrap admin)
- The first account created by the setup wizard is the bootstrap admin.
- Admin can reset another presenter's password and block / unblock accounts.
- Blocking immediately ends that presenter's sessions and revokes their deck tokens; a blocked account cannot sign in until unblocked (
USER_BLOCKED).
Fixes
- Collaborators can now sign into the deck. Deck login selected the poll from owner-only polls, so a presenter who only collaborated (owned no poll) got
401 AUTH_REQUIRED; it now selects from visible (owned-or-collaborated) polls. Covered by a regression integration test and a Playwright e2e. - Repo-wide static-analysis cleanup: JSpecify nullability on Spring filters, Jackson
asString(), TestcontainersDockerImageName, try-with-resources for leaked resources, CSS generic-font fallbacks, an unresolved CSS variable, and FK-safe test isolation.
Upgrade notes
- New Flyway migrations are applied automatically on startup: PostgreSQL
V12–V15, H2V4–V7(Spring Session tables,poll_collaborators,deck_tokens.minted_by,admin_user.blocked_at). No manual steps. - No breaking API changes for voters or existing single-presenter decks.
Backend image: ghcr.io/asm0dey/slidev-polls:v0.5.0 · npm: @slidev-polls/*@0.5.0
Full changelog: v0.4.2...v0.5.0