Changelog

What shipped, and when

Every release, straight from the project’s changelog. Latest: v1.35.0 on 4 November 2026.

v1.35.0

Maintenance release — internal changes only.

v1.34.3

Maintenance release — internal changes only.

v1.34.2

Maintenance release — internal changes only.

v1.34.1

Maintenance release — internal changes only.

v1.34.0

New

  • deployAsk for the website host name in install.sh

v1.33.1

Fixed

  • depsBump nodemailer to 10.3.1 for the published advisories

Plus 1 internal change (tests, build and tooling).

v1.33.0

New

  • identityAdd smtp mail provider and bundled postfix relay

v1.32.0

New

  • deployServe the landing site on the apex, app on its own host
  • websiteProduct, use-case and role pages with video slots
  • websiteTurn off contact and waitlist forms until a backend serves them

v1.31.1

Maintenance release — internal changes only.

v1.31.0

New

  • saasHide the admin console entry from non-admins

v1.30.0

New

  • deployInteractive installer for a single server

v1.29.0

New

  • scaleShare rate limits, login backoff, key invalidation and job runs across replicas (#332)

v1.28.1

Fixed

  • billingStale deletion notice after upgrade, read-only plan name, cancellation spacing (#328)

v1.28.0

New

  • billingEmail owners when a downgrade makes history unreadable and before it is deleted
  • billingMake the history retention job interval configurable
  • billingPurge sessions a plan no longer covers once a grace period has run out
  • billingTighten the free plan to 1 host, 1 concurrent session and 10 days of history
  • billingWarn on the billing page what a downgrade or cancellation does to history
  • securityEncrypt ticket content and secrets at rest with per-tenant keys
  • securitySeal names, emails and organisation names with lookup hashes
  • securitySeal ticket keys, votes, board moves, estimate history and names

Fixed

  • billingKeep the analytics plan notice off pages that only borrow analytics
  • billingScope the analytics plan notice to the page that read analytics

Plus 2 internal changes (tests, build and tooling).

v1.27.0

New

  • First-run onboarding and a getting-started checklist

Plus 2 internal changes (tests, build and tooling).

v1.26.0

New

  • Failed-payment banner, grace period and read-only state

Plus 1 internal change (tests, build and tooling).

v1.25.1

Maintenance release — internal changes only.

v1.25.0

New

  • Organisation settings, members and billing pages
  • Slack and teams notifications for team sessions

v1.24.2

Maintenance release — internal changes only.

v1.24.1

Fixed

  • Stack the host session layout and wrap the top bars on phones

v1.24.0

New

  • Participant onboarding tour
  • Shareable read-only stakeholder report

Fixed

  • Add report link to the saas-plugin-orgs isolation fixture

v1.23.0

New

  • billingSync stripe seat quantity with organisation members (bill-07)
  • Session export (csv/json) and bulk ticket import from text or csv

v1.22.0

New

  • frontendRequest host access after sign-up, phone layout for team panels
  • saasGrant host access on request, point denied users at My account

v1.21.1

Maintenance release — internal changes only.

v1.21.0

New

  • saasAccept-invite page, org switcher width, plan prompt only on user action

Fixed

  • backendJson 404 for api routes, team invites without flag, teams on in saas

v1.20.1

Fixed

  • frontendDrop autofocus from the bulk confirm dialogs
  • frontendKeep visible button text in accessible names
  • websiteInclude the search shortcut in the docs search button's name

Plus 1 internal change (tests, build and tooling).

v1.20.0

New

  • frontendMake the team members view scale to large teams
  • frontendRedesign the admin and teams dashboards
  • frontendSearch, paging and bulk actions for team sessions and invites

Fixed

  • frontendKeep the teams page h1 focusable while teams load

Faster

  • backendIndex unindexed lookups, batch the admin users list, cache sqlite statements

v1.19.0

New

  • System-level defaults hosts can override

Fixed

  • depsUpdate lockfile to clear the high and critical audit advisories

Plus 1 internal change (tests, build and tooling).

v1.18.0

New

  • Async estimation voting, reveal and finalise (ft-09)
  • backendCarry async votes into the live round as pre-votes
  • billingCoded plan-limit 402s and upgrade prompt (bill-06)
  • billingCustomer portal endpoint (bill-04)
  • billingStripe tax and vat id collection for uk and eu (bill-11)
  • frontendShow pre-votes in the live round
  • identityOauth2 and multi-tenant provider hooks in the oidc engine
  • identitySign in with github (idn-09)
  • identitySign in with google (idn-07)
  • identitySign in with microsoft entra id (idn-08)
  • identitySign in with provider buttons and group label
  • orgsAdd invitation storage, hashed tokens, account directory and seat events (org-07)
  • orgsAdd last-owner guard, slug rules, ownership transfer and purge to the repo
  • orgsMembers and email invitations api (org-07)
  • orgsOrganisation api with update, soft-delete and transfer ownership (org-06)
  • saasServe /metrics on its own port by default, with no token
  • websiteAdd accessible contact and waitlist pages
  • websiteAdd contact and waitlist function with accessible spam protection
  • websiteAdd draft legal pages for solicitor review

Fixed

  • authRequire an authenticated host to register a developer
  • ciSerialize releases and push the release commit and tag atomically
  • depsBump sharp and source-map-js to clear the high audit advisories
  • websiteKeep draft legal pages out of search until they are signed off

Plus 6 internal changes (tests, build and tooling).

v1.17.5

Maintenance release — internal changes only.

v1.17.4

Fixed

  • depsBump better-sqlite3 to 13

v1.17.3

Maintenance release — internal changes only.

v1.17.2

Fixed

  • backendAccept string chunks in the mock ldap server

v1.17.1

Maintenance release — internal changes only.

v1.17.0

New

  • frontendExpose ImportWizard for plugin reuse
  • frontendMerge ImportWizard plugin export (#61)

Plus 2 internal changes (tests, build and tooling).

v1.16.0

New

  • Add session-scoped ticket comments

Fixed

  • frontendAvoid keyed writes from server ids in the comment store

Plus 2 internal changes (tests, build and tooling).

v1.15.3

Fixed

  • backend,frontendExclude closed sessions from "active" counts
  • frontendPick up an approved host/admin role without a re-login

v1.15.2

Maintenance release — internal changes only.

v1.15.1

Fixed

  • backendKeep in-memory session timestamps in step with the row
  • frontendClarify the GitLab estimate label prefix and spell GitLab
  • frontendKeep cookie-mode logins across page reloads
  • frontendKeep the admin config form in place after a save
  • frontendLand on the admin dashboard after the token sign-in
  • frontendLet a newly approved host open the dashboard
  • frontendMark the current ticket estimated when a round is finalized
  • frontendOnly toast "Time's up!" when the timer actually expires
  • frontendStop showing admin accounts empty admin console pages
  • frontendTruthful feedback on the push-estimate buttons

Plus 6 internal changes (tests, build and tooling).

v1.15.0

New

  • Auth_transport=cookie option with httponly session cookie and csrf
  • Auth-provider extension points and frontend auth slots
  • backendAccess-policy hooks for session and team routes (ctx.policy)
  • backendBroadcaster abstraction and session snapshots (ctx.scale)
  • backendEncryption v2 with kdf, key ids and a rotation command
  • backendEntitlements hook with plan_limit enforcement (ctx.entitlements)
  • backendLifecycle events for plugins (ctx.events)
  • backendReadiness endpoint /api/health/ready that checks the database
  • Host "+30 s" timer extension and participant warning before auto-lock
  • Opentelemetry tracing and sentry error reporting, off unless configured
  • saasEmail verification with single-use hashed tokens
  • saasGeneric oidc engine with pkce, safe account linking and mock server
  • saasOrganisations schema and repository
  • saasPlan entitlements from the organisation's subscription
  • saasRedis broadcaster plugin for multi-replica scale-out
  • saasScaffold billing plugin with shared plans catalogue
  • saasScaffold identity plugin and require an email at registration
  • saasSelf-service forgot and reset password
  • saasStripe customer per org and checkout session endpoint
  • saasTenant context with active-org resolution and org switching
  • saasTenant isolation via access policy and ownership events
  • saasTransactional mail transport with postmark, ses and templates
  • saasVerified stripe webhooks with idempotent subscription state machine
  • websiteChangelog page generated from CHANGELOG.md at build
  • websitePort the home page with an accessible meeting-cost calculator
  • websitePricing page generated from the shared plans catalogue
  • websiteScaffold the astro marketing site with shared tokens and a11y gates
  • websiteSecurity and trust page with cited, implemented claims only
  • websiteStarlight docs site synced from docs/user and docs/admin

Fixed

  • backendKeep the readiness probe timer referenced
  • Close codeql property-injection and request-forgery findings
  • frontendAdmin token autocomplete and show toggle, reset result in a dialog
  • frontendChange-password requirement text, submit validation and sign-out countdown
  • frontendDispatch plugin ws handlers through a map lookup
  • frontendMain landmarks, heading order and a consistent help link
  • frontendStop opacity-dimming text below aa contrast
  • frontendTour overlay keyboard scope, focus restore and labelled heading
  • Session ux bugs (join name, broadcast close, dashboard link, remove confirm, time hint)

Plus 19 internal changes (tests, build and tooling).

v1.14.0

New

  • apiAdd typebox request schemas to account, team, session and host routes
  • backendAdd job scheduler with auth-session and draft cleanup
  • backendAdd per-account login backoff, root-token attempt limit and trust_proxy
  • backendAdd ssrf-safe safefetch for integration egress
  • backendAdd typebox route schemas and ws message validation
  • backendCap login session lifetime and rotate sessions on role grants
  • backendMake the global per-ip rate limit configurable
  • backendProtect /metrics with a bearer token or a separate port
  • backendUpgrade to fastify 5 and node 22
  • dbAdd an opt-in postgres driver (DB_DRIVER=postgres)
  • frontendAdd an escape layer stack and rebuild uidrawer on usedialog
  • frontendAdd per-route page titles and focus the page heading on navigation
  • frontendAdd useannouncer live regions; announce toasts and connection changes
  • frontendApply chart theme defaults and give every chart a text and table alternative
  • frontendMake uimenu a full menu button and use it for the header menu
  • plugin-apiAdd ctx.jobs, ctx.mail and ctx.audit hooks (2.2.0)
  • saasRun the saas image as compiled js and add saas secure defaults
  • sessionAnnounce live session events to screen readers

Fixed

  • authReal login form with per-field errors and focus
  • authStore session admin tokens hashed and compare timing-safely
  • backendCheck account status and role on legacy host and developer tokens
  • backendEncode and validate jira query parameters
  • backendLinear-time parsing of attacker-supplied strings
  • backendMake seed refuse production and mask printed tokens
  • backendReject passwords longer than bcrypt's 72-byte limit
  • backendReplace deprecated disableRequestLogging with logController
  • backendRestrict cors to an explicit origin allow-list
  • backendRetire legacy credentials on password change and reset
  • backendRoute gitlab through safefetch with generic upstream errors
  • backendRoute jira through safefetch with generic upstream errors
  • backendSpend one bcrypt comparison on logins for unknown usernames
  • backendStore bearer tokens as hashes only and clear plaintext columns
  • dbKeep mariadb connections referenced while a query is in flight
  • dbMake the mariadb driver migrate and boot on a fresh database
  • docsContain docs route paths and hide developer docs by default
  • Explicit decrypt errors, require_encryption_key and admin banner
  • frontendAdd contrast tokens for hue text and control borders
  • frontendKeep focus on loading buttons, decorative spinners, named modals
  • frontendKeep pulsing session text at full contrast
  • frontendRecover from failed route chunks and reject protocol-relative redirects
  • frontendRoute panel escape through the layer stack; drop dead reactivate
  • frontendUi kit a11y fixes for field, textarea, tooltip, empty state, table and tabs
  • homeField-level errors, real tabpanels, main landmark
  • hostReject deactivated accounts on every host route
  • Never return decrypted integration tokens to the browser
  • Only store and render http(s) links for imported tickets
  • rolesRestrict host revocation and protect admins' roles
  • Send session admin and draft tokens in headers, not query strings
  • sessionConvey ticket status and presence beyond colour
  • sessionDock the ticket detail panel into the session layout
  • sessionKeyboard path through the relative estimation board
  • sessionKeyboard tabs and resizable separator for ticket details
  • sessionReadable selected tiles and revealed votes as a list
  • sessionSkip link, main landmark and heading outline on session pages
  • sessionsLimit session-code probes and lengthen new codes
  • teamsEnforce session-team ownership on team session routes
  • teamsMake invite redemption atomic and validate invite options
  • teamsScope join-request approve and reject to the url team
  • timerReadable time pill and milestone announcements
  • wsAuthorise host websocket actions by socket identity
  • wsCap connections per ip and per account, key rate limit by identity
  • wsEnforce an origin allow-list and 64 kib max payload on upgrade
  • wsReject malformed websocket messages instead of crashing
  • wsSchema-validate board websocket messages
  • wsSchema-validate voting and config websocket messages

Plus 19 internal changes (tests, build and tooling).

v1.13.0

New

  • backendAdd job scheduler with auth-session and draft cleanup
  • backendAdd typebox route schemas and ws message validation
  • backendUpgrade to fastify 5 and node 22

Fixed

  • backendReplace deprecated disableRequestLogging with logController
  • wsReject malformed websocket messages instead of crashing

Plus 8 internal changes (tests, build and tooling).

v1.12.3

Maintenance release — internal changes only.

v1.12.2

Maintenance release — internal changes only.

v1.12.1

Fixed

  • brandRepair warped card silhouettes in logo assets

v1.12.0

Fixed

  • huskyDon't fail prepare-commit-msg when no tty is attached

Plus 1 internal change (tests, build and tooling).

v1.11.0

New

  • homeShow a member's active sessions across all their teams

v1.10.0

New

  • brandMigrate to the new fanned-cards logo mark

Plus 1 internal change (tests, build and tooling).

v1.9.1

Fixed

  • homeDeclutter hero and fix host-session panel spacing

v1.9.0

New

  • Add SessionStateBadge component
  • Add SessionSummaryRow component
  • homeRedesign hero with two-column layout and RoomPreview
  • libAdd shared formatDate module
  • uiAdd keyboard navigation to UiTabs
  • uiAdd link variant, pill CTAs, aria-busy, and a dev a11y warning
  • uiAdd optional rowAttrs prop to UiDataTable
  • uiAdd success/warning/danger tones to UiCallout
  • uiAdd UiBulkActionBar component
  • uiAdd UiCheckbox component
  • uiAdd UiDataTable component
  • uiAdd UiDrawer component
  • uiAdd UiFilterChips component
  • uiAdd UiPageHeader component
  • uiAdd UiSearchInput component
  • uiAdd UiStatTile component
  • uiAdd UiTextarea component
  • uiExport new work-package 1B components from the barrel
  • uiGive every UiSwitch an accessible name and a 32px hit area
  • uiMake UiInput/UiSelect own their styling and forward aria attrs
  • uiMake UiSpinner's accessible label overridable
  • uiSurface required via UiField's exposed slot props
  • uiWire UiModal focus trap, aria-labelledby, and inert background

Fixed

  • a11yResolve contrast and nested-interactive violations
  • e2eUpdate tests for the ticket-item/remove-button DOM split
  • sessionDocument tile semantics and clean up avatar accessible names
  • sessionReserve board space for the open ticket detail panel
  • sessionRevert TicketDetailPanel/DraggableTicket to fix e2e regressions
  • uiGive UiTooltip a real accessible element instead of ::after
  • uiMake UiBadge uppercase opt-in and enforce a 12px text minimum
  • uiPause toast auto-dismiss on hover/focus and fix roles
  • uiRender interactive UiCard as a real button or anchor
  • uiTeleport UiMenu to body and add full keyboard navigation
  • uiUse a stable module-level counter for UiPanel ids
  • uiWire UiConfirm aria-describedby and focus Cancel for danger tone

Plus 34 internal changes (tests, build and tooling).

v1.8.1

Fixed

  • uiKeep session status pill centered in top bar

v1.8.0

New

  • authAdd LDAP-driven team auto-join

v1.7.0

New

  • authAdd PKI certificate login with optional LDAP role mapping

v1.6.0

New

  • saasAdd single-repo SaaS edition build alongside Core, with JS hardening

Fixed

  • ciBuild backend before typecheck, declare terser explicitly in frontend

v1.5.1

Fixed

  • Resolve planning-poker and admin ui bugs

v1.5.0

New

  • adminAdd admin-editable application configuration

Fixed

  • uiMake UiField's auto-generated id unique per instance

Plus 1 internal change (tests, build and tooling).

v1.4.0

New

  • ticketsAdd priority sort and filter to ticket list

v1.3.2

Maintenance release — internal changes only.

v1.3.1

Fixed

  • ciSkip republishing plugin-api when its version is unchanged

v1.3.0

New

  • jiraAdd standalone mock server for import testing
  • jiraSync ticket priority and support label removal on push-back
  • teamsAdd graph-based metrics to Teams dashboard

Fixed

  • sessionSurvive websocket reconnects without losing state

Plus 2 internal changes (tests, build and tooling).

v1.2.3

Fixed

  • ciBump plugin-api to 1.0.1 to unblock release publish

v1.2.2

Fixed

  • estimationDon't restart voting when reopening an already-estimated ticket

v1.2.1

Maintenance release — internal changes only.

v1.2.0

New

  • teamsAdd team management dashboard; plugin architecture refactor

Fixed

  • estimationLet ticket description fill available space in poker mode

Plus 1 internal change (tests, build and tooling).

v1.1.3

Fixed

  • e2eImprove registration error handling, reduce CI workers, extend password redirect timeout
  • estimationVoted-user tracking, concurrency guards, admin/team/dashboard refactor

v1.1.2

Maintenance release — internal changes only.

v1.1.1

Fixed

  • Close session, ticket removal state consistency, recent sessions, onboarding tour
  • Relative estimation board — unassigned column visibility and drag ghost dismissal

v1.1.0

New

  • Add co-facilitators support

Fixed

  • Update stale e2e suite for removed create-name field and vote counting

v1.0.2

Fixed

  • Persist facilitator Jira/GitLab defaults correctly
  • Prevent ticket loss and visibility bugs in the import wizard flow
  • Render markdown ticket descriptions and contain their height

v1.0.1

Maintenance release — internal changes only.

v1.0.0

Maintenance release — internal changes only.

v0.2.18

New

  • Write estimates back to GitLab on finalize, show existing label value on import
  • Write estimates back to Jira on finalize, show existing field value on import

v0.2.17

New

  • Adopt vue-router with real session URLs and deep links
  • Design foundation — token system, styles split, lucide icons
  • Gitlab integration for issue import, estimate write-back, and resync
  • Redesign the core estimation experience
  • Shared UI component library scaffolding
  • Waiting room for draft sessions + fix stale WebSocket race condition

Fixed

  • Broadcast session reset when the current ticket is removed
  • Facilitator password login and e2e suite repairs

Plus 3 internal changes (tests, build and tooling).

v0.2.16

New

  • Presence cleanup, resizable ticket panel, facilitator broadcast, and Jira resync

v0.2.15

New

  • Redesign website and update branding for dashboard rollout

Fixed

  • ciReinstall from scratch to resolve platform-correct rollup optional dep
  • ciUse npm ci and pin root typescript to fix vue-tsc failure
  • ciUse npm install instead of npm ci to fix rollup optional-dep gap

v0.2.14

New

  • Redesign teams as dashboard view with modal dialogs

v0.2.13

New

  • authFacilitator password change with bcrypt hashing
  • backendAdd ticket estimation history, point spread detection, and facilitator defaults
  • docsRedesign documentation to match app styling with build-time filtering
  • frontendAdd history tab, highlights UI, facilitator defaults, menu icons, and polish

Fixed

  • backendRemove unused beforeEach import in auth.test.ts

v0.2.13

New

  • authFacilitator password change with bcrypt hashing and complexity enforcement (TBD)
  • authAuto-migrate legacy plaintext tokens to bcrypt on first verify

Fixed

  • cssReplace undefined --text-dim var with --text-muted in SuperAdmin and HomePage
  • uxTimer expired toast now auto-dismisses after 4 seconds and triggers on actual expiry
  • clipboardFix copy button false-positive feedback in all 5 copy implementations

v0.2.12

New

  • teamsAdd team support behind ENABLE_TEAMS feature flag

v0.2.11

New

  • initial build of websiteAdded initial public website build

v0.2.10

New

  • Self-service facilitator registration and account management

v0.2.9

New

  • frontendRedesign UI with cool-toned color system and refined typography

Fixed

  • dbSet created_at and updated_at timestamps on facilitator creation

v0.2.8

New

  • Add external database support (MariaDB)

v0.2.7

New

  • frontendRender markdown and Jira wiki in ticket detail panel
  • Implement full dark mode support

Fixed

  • Set theme toggle icon color for dark mode contrast
  • Show theme toggle on all pages

Plus 1 internal change (tests, build and tooling).

v0.2.6

New

  • Add session state override and hide sidebar during relative estimation

v0.2.5

Fixed

  • Restore draft session management with persisted admin token

v0.2.4

Fixed

  • Wire up relative estimation session UI with swimlane board

v0.2.3

Fixed

  • Added missing files

Plus 1 internal change (tests, build and tooling).

v0.2.2

New

  • Add facilitator admin dashboard, session management, and Jira import
  • Add facilitator role with database schema, auth, and API routes

Fixed

  • Add EXTERNAL_FQDN=true to E2E test environment
  • Delete node_modules before install in CI to clear darwin-platform binaries
  • Resolve 4 remaining E2E test selector mismatches
  • Resolve CI typecheck failures
  • Restore docs route source and add Vite proxy for /docs
  • Validate user identity in WebSocket submitEstimate handler

Plus 7 internal changes (tests, build and tooling).

v0.2.1

Maintenance release — internal changes only.

v0.2.0

Breaking changes

  • SUPER_ADMIN_TOKEN env var renamed to ROOT_ADMIN_TOKEN

New

  • Overhaul super admin dashboard with bulk ops, charts, and token rename

Fixed

  • Return to login page after super admin logout

Plus 1 internal change (tests, build and tooling).

v0.1.6

Fixed

  • Guard persist() against closed DB, fix unused vars in tests

Plus 2 internal changes (tests, build and tooling).

v0.1.5

New

  • e2eAdd Playwright test suite with 36 interactive browser tests
  • frontendAdd data-testid attributes to components for e2e testing

Fixed

  • backendPrevent async microtask from persisting on closed DB
  • Resolve merge conflicts and make rate-limit configurable for e2e tests

Plus 2 internal changes (tests, build and tooling).

v0.1.4

Fixed

  • Add input length validation to WebSocket messages
  • Use crypto.randomInt() for session code generation
  • Use sessionStorage instead of localStorage for auth tokens

Plus 1 internal change (tests, build and tooling).

v0.1.3

Fixed

  • backendAdd graceful shutdown, health endpoint, and socketMap usage
  • backendAdd TTL-based session eviction and O(1) disconnectUser
  • backendUse env-based DB path with fallback and add WAL checkpointing

Plus 2 internal changes (tests, build and tooling).

v0.1.2

Fixed

  • backendPersist Jira API token across server restarts
  • backendPrevent double disconnect on WebSocket error
  • frontendPre-populate final estimate input with median value
  • frontendValidate super admin token against server on page load
  • Use relative time for timer to avoid client clock skew

Plus 1 internal change (tests, build and tooling).

v0.1.1

New

  • TIK-0001 Initial commit
  • TIK-0001 Initial commit

Fixed

  • Configure git user identity before standard-version commit
  • Disable husky hooks during release commit in CI
  • Regenerate package-lock.json to resolve npm ci sync failure
  • Use bash-compatible glob for backend test script

Plus 1 internal change (tests, build and tooling).