Skip to content

Releases: quizdock/quiz-dock

QuizDock v0.7.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 10:18

Full Changelog: v0.7.0...v0.7.1

QuizDock v0.7.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 01:46
05dc01b

🎧 Video & sound in questions — experimental

The headline of 0.7: questions you hear and watch, in the room and from home.

  • Video (MP4) and sound (MP3) in any question, brought to the same loudness from one question to the next (EBU R128, per quiz), the sound drawn as a waveform with a playhead that follows the projection on every screen. A media longer than its question stretches it, plus a pause, so nothing is cut mid-play.
  • Remote participants: someone joining from home says so and gets the whole question on their device, video and sound included. Who hears the sound is set per quiz, per question and, in the lobby, per session.
  • Started together: every device reads the server's clock and starts the media on the same instant. Each one fetches the next question's media ahead, from the lobby, and the room waits a moment for a device still loading.
  • Listen first, then answer: a question can keep its answers closed until the media has played, then give everyone the full time.
  • Carried by the quiz bundle (version 3) and by templates.

Experimental: tested in Chromium browsers, not yet on iPhone (Safari). Read the audio & video guide before relying on it in front of a room.

Also in this release

  • A calmer editor: what is set once and read rarely folds away (sound, a question's media, points, the answer explanation, a slide's display time), and each fold says what it is set to.
  • Upgrading: migrations run on start as usual. Back up PostgreSQL first: ./quizdock upgrade 0.7.0.

What's Changed

  • feat(media): video and sound in questions — phase 1 (in the room) by @fchaussin in #44
  • feat(live): remote participants, per-device preloading and media readiness — media phase 4 by @fchaussin in #45
  • feat(live): media phase 4 into main (remote participants, preloading, readiness) by @fchaussin in #46
  • feat(live): media start together on every device, and listen-first questions — media phase 5 by @fchaussin in #47
  • feat(editor): fold what is secondary, one group per domain; docs ready for v0.7.0 by @fchaussin in #48

Full Changelog: v0.6.0...v0.7.0

QuizDock v0.6.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 22:09

Who may host, who takes part, and what a session records about them — plus the question image finally reaching the people the question is for.

Highlights

Roles and participants (#38)

  • host becomes an assignable role: user:set-role <sub|email> host grants quiz management without handing out admin, which was the only workaround so far. The grant is sticky — it survives an expired, taken-over or released host seat, which also fixes an operator admin being silently dropped by those three paths.
  • Under AUTH_MODE=oidc, participants authenticate too: the token opens the application, the PIN opens one session. Join pages redirect to sign-in and come back to the invitation, so a scanned QR code still lands on the right session. Their results are attached to their account.
  • Personalised tracking is a per-session switch. Off, no individual result is archived — only the per-question aggregates and the session summary. The live game is untouched: leaderboard and podium still run.
  • The display name can come from the account rather than a typed nickname, at the host's choice, and OIDC_NAME_CLAIM points at whichever claim carries it.
  • The notice shown to participants says which of these cases applies, in the wording that fits — including when there is no account at all.

Question media (#41, reported by @holjab)

The image attached to a question was rendered only in the host console: it was invisible to the participants and on the projected screen. It now shows on both, capped on the phone so the answer buttons stay where the thumb expects them.

Demo instances

A public demo now lists on its home page what it does not do — one host at a time, no media upload, the hourly wipe — and says that a self-hosted instance has none of those limits. The all-in-one image adds its own.

Upgrading

Two migrations, both additive — nothing is converted, nothing to do by hand. Back up PostgreSQL first and do not roll back once they have run.

Migration What it adds
20260922160000_assignable_host_role user.assigned_role, the role an operator granted. Accounts that are admin today are carried over as an admin grant, since that role was already sticky.
20260922180000_personal_tracking game_session_log.personal_tracking, default true — sessions archived so far kept individual results, so they read as they always did.

Before you upgrade an OIDC instance: participants now need an account. If your identity provider only has accounts for hosts, create them, or keep AUTH_MODE=none for those sessions. AUTH_MODE=none is unchanged — the PIN stays the only barrier.

API: quiz.visibility is no longer part of the documented API or the generated client. The column is untouched and the field is still on the wire; anything reading it should stop — its meaning is being settled in #39 / #21.

Full Changelog: v0.5.1...v0.6.0

QuizDock v0.5.1

Choose a tag to compare

@github-actions github-actions released this 21 Sep 12:06
90bfc8f

What's Changed

  • README: link to the public demo instance by @fchaussin in #29
  • docs(readme): restructure — hero GIF, main features first, local vs OIDC, fewer badges by @fchaussin in #30
  • fix(docker): bake the schema engine matching the runtime so migrate works offline by @fchaussin in #32
  • feat(i18n): zh-TW review by noeFly (#16) landed on current main by @fchaussin in #33
  • fix(security): clear the 48 code-scanning alerts — :latest was the standalone image by @fchaussin in #36

Full Changelog: v0.5.0...v0.5.1

QuizDock v0.5.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 00:05
98f8767

What's Changed

  • feat: enforce roles, intentional local host seat, standards-only OIDC, admin CLI by @fchaussin in #17
  • fix(i18n): zh-TW falls back to en, not zh; locale consistency check in CI by @fchaussin in #18
  • UX batch: quiz import/export, live typography & reveal, participant screens, answer rules by @fchaussin in #22
  • UX batch 2: live typography & reveal, host navigation, scoring variants, seat menu, routes by @fchaussin in #24
  • Release version, invitation address, live/editor fixes by @fchaussin in #25
  • Demo mode for a public instance by @fchaussin in #26
  • feat(cli): quiz export / import + store fields in the bundle by @fchaussin in #27
  • docs: pre-0.5.0 audit — Keycloak link, CLI quiz export / import mentions by @fchaussin in #28

Full Changelog: v0.4.2...v0.5.0

Upgrading

Four migrations, applied automatically on start (migrate service or the :standalone entrypoint). Back up PostgreSQL first, as always.

  • 20260918120000_add_host_seat — new table host_seat (local mode: who holds the host seat, until when). Additive.
  • 20260919140000_text_outline_default_onslide.text_outline and question.text_outline now default to true. Data touched: the built-in sample quizzes (Discover France, Discover Taiwan) are switched to the new default; every other row keeps its setting.
  • 20260920090000_question_scoring — new enum value points_mode.fixed, new enum question_scoring and column question.scoring (default standard). Additive.
  • 20260920150000_quiz_store_fields — new columns on quiz: slug, namespace, revision, domain, tags, license (all nullable or defaulted). Additive.

Nothing to do by hand. The :standalone image and the compose stack upgrade the same way: ./quizdock upgrade 0.5.0, or pull the tag and up again (see Upgrading).

Operators: the in-image CLI gains qd quiz:list, qd quiz:export, qd quiz:import (relayed by ./quizdock quiz:export <id> <file.zip> / quiz:import <file> <sub|email>).

QuizDock v0.4.2

Choose a tag to compare

@github-actions github-actions released this 16 Sep 23:52
4adf8eb

⬆️ Upgrading from 0.4.1

No database migration, no new configuration knob, live contract unchanged: pull the new tag and restart.

✨ Highlights

  • Traditional Chinese (zh-TW) follow-up to the locale contributed by @noeFly in #1: the dashboard now loads the zh-TW dictionary (it was showing Simplified Chinese), nickname typo fixed, and the 143 keys added since (slides, backgrounds, drafts, feedback, navigation…) are translated — machine-assisted with Taiwan usage, native review welcome.
  • Locale parity test — every language must carry exactly the keys of en; the failure message lists what is missing or orphaned.

What's Changed

  • fix(i18n): zh-TW follow-up — dashboard import, typo, 143 missing keys, parity test by @fchaussin in #15

Full Changelog: v0.4.1...v0.4.2

QuizDock v0.4.1

Choose a tag to compare

@github-actions github-actions released this 16 Sep 23:25
fef747e

⬆️ Upgrading from 0.4.0

No database migration and no new configuration knob: pull the new tag and restart. Media on MEDIA_DIR is untouched.

The live contract is unchanged (game:outline and the active-games list simply gain a quizId field); a page reload of projected screens and participant phones is enough.

✨ Highlights

  • Traditional Chinese (zh-TW) locale — first external contribution, thanks @noeFly (#1).
  • Slide text size — S / M / L picker (20 / 30 / 40 px on the stage) next to the alignment control; body text no longer defaults to a tiny size.
  • Drafts — question, slide and quiz-settings forms keep their in-progress state in the browser until saved or discarded; reload or close the tab without losing work.
  • Participants — nickname remembered between games, feedback comment kept until sent, Leave action and "Join another game" after the podium.
  • Host console — breadcrumb back to the editor, sticky action rows, same explanatory confirmation as the editor before recording all answers.
  • Dashboard — badge showing how many sessions of a quiz are currently running.
  • Editor — one-line description of the selected question type's behaviour; page titles per route.

What's Changed

  • feat(i18n): add zh-TW translations by @noeFly in #1
  • 0.4.1: slide text size, drafts, navigation, console polish by @fchaussin in #14

New Contributors

  • @noeFly made their first contribution in #1

Full Changelog: v0.4.0...v0.4.1

QuizDock v0.4.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 22:08
c52a5f3

⬆️ Upgrading from 0.3.x

This release adds 11 database migrations, applied automatically on start (migrate service of docker-compose.prod.yml, or the :standalone entrypoint). Before pulling the new tag:

  1. Back up PostgreSQLdocker compose -f docker-compose.prod.yml exec postgres pg_dump -U live quizdock > backup.sql. One migration converts data: existing content slides become block compositions (title → heading, media → image block or background, body → text).
  2. No rollback to 0.3.x once migrated (slide title/body/layout columns are dropped) — restore the backup instead.
  3. Nothing manual otherwise. Media on MEDIA_DIR is untouched.

New knobs (optional): GAME_AUTO_ADVANCE_MS (default 5000), GAME_READ_DELAY_MS (default 3000) — see configuration.

Live contract bumped to 0.3.0 (SLIDE_SHOW state, slide:show event, backgrounds on question:start): projected screens and participant phones must load the same version as the server — a page reload is enough.

✨ Highlights

  • Quiz builder reworked — master/detail editor, drag-and-drop ordering, in-place title, unsaved-change guards, confirmation before deleting, status bar with live PIN and access screens.
  • Rich text — Markdown with a visual editor (bold, lists, code, inline images) for prompts, options, descriptions.
  • Answer explanations shown at the reveal, per-question reveal delay in automatic mode.
  • Content slides between questions — block composer (headings, text, images, 2–3 columns with splits), per-block alignment, 16:9 preview, display time (default / manual / custom).
  • Backgrounds (image or gradient generator) with text contrast, for slides and questions.
  • Options — up to 8, distinct colour/shape pairs, drag-and-drop.
  • Player feedback — per-quiz on/off, paginated reviews page with star distribution.

What's Changed

  • fix(security): remediate transitive HIGH/CRITICAL CVEs, scan before audit gate by @fchaussin in #3
  • feat(frontend): Markdown fields with WYSIWYG editor by @fchaussin in #9
  • feat: answer explanation shown at reveal by @fchaussin in #10
  • feat: per-question reveal delay in auto mode by @fchaussin in #11
  • feat: content slides in the quiz sequence by @fchaussin in #12
  • Builder rework: master/detail editor, slide composer, backgrounds, feedback by @fchaussin in #13

New Contributors

Full Changelog: v0.3.2...v0.4.0

QuizDock v0.3.2

Choose a tag to compare

@fchaussin fchaussin released this 25 Jun 07:05

v0.3.2

Security remediation + continuous scanning.

  • fix(security): bump vulnerable transitive deps via pnpm overrides (patch/minor, same major)
    • ws 8.20.1 → 8.21.0 (GHSA-96hv-2xvq-fx4p, high)
    • multer 2.1.1 → 2.2.0 (GHSA-72gw-mp4g-v24j, high)
    • js-yaml 4.1.1 → 4.2.0 · @hono/node-server → 1.19.14
    • pnpm audit --prod now clean; tests green (137 backend + 54 frontend)
  • ci: Security workflow — pnpm audit gate + Trivy fs/image scans (SARIF → Security tab)
  • docs: SECURITY.md + docs/security/ point-in-time audit (2026-06-25)

Images

fchaussin/quizdock:0.3.2 · :latest · :standalone-0.3.2 · :standalone (multi-arch amd64/arm64)

QuizDock v0.3.1

Choose a tag to compare

@fchaussin fchaussin released this 25 Jun 07:05

v0.3.1

All-in-one image for beginners + documentation split.

  • feat(deploy): all-in-one :standalone image — Postgres + Redis bundled, one docker run
  • docs: detailed configuration, branding & OIDC guide
  • docs: split developer vs user/integrator docs (docs/self-hosting/)
  • docs: 1024×768 screenshots gallery + full badge row + Docker Hub overview

Images

fchaussin/quizdock:0.3.1 · :standalone-0.3.1 (multi-arch amd64/arm64)

docker run -p 18080:3000 -v quizdock:/data fchaussin/quizdock:standalone-0.3.1