Skip to content

v0.5.0 — accounts, poll sharing & transfer, user blocking

Choose a tag to compare

@asm0dey asm0dey released this 23 May 13:37
· 30 commits to main since this release
ea67583

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/account exposes 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(), Testcontainers DockerImageName, 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 V12V15, H2 V4V7 (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