What's new
Self-service signup & email verification
Users can register themselves from the login page. An email verification step is required before the account is activated. Admins control availability via Admin → Settings → Authentication: enable signup, restrict to specific email domains, or open registration to anyone.
API Keys
Admins can now create and revoke long-lived API keys from Admin → API Keys. Keys are prefixed GHD_, stored as SHA-256 hashes, and shown exactly once at creation.
Auto-assignment
New tickets are automatically assigned following a three-tier chain:
- CTI-scoped group — group whose scope covers the ticket's category/type
- Global group fallback (
auto_assign_group_idsetting) - Round-robin user list (
auto_assign_user_idssetting) - Unassigned if nothing is configured
Ticket list & dashboard improvements
- Dashboard status cards now link directly to a filtered ticket list
- Admin dashboard shows a By Client section for quick per-user ticket views
- Ticket list supports bulk status changes across selected tickets
- Reporter filter: admins can filter the ticket list by submitter
- Staff/admin default view resets to their own work queue (assigned + groups) instead of all tickets
- Status dropdown added to the ticket detail sidebar for quick in-place changes
Manual ticket close
Admins can close a Resolved ticket immediately via the Close Ticket button or POST /api/tickets/:id/close, bypassing the reopen window.
Bug fixes
- Logo now updates in the sidebar after re-upload (versioned URL on upload)
- MCP server
/mcp/sseroute now resolves correctly - Allowed email domains textarea no longer loses the cursor on every keystroke
- Empty ticket list no longer returns
nullinstead of[]
Chore
- Removed redundant GitHub Pages deploy workflow (Cloudflare deploys automatically from the
gh-pagesbranch) - Axios bumped to 1.16.0