Product roadmap
May 2026 · CalVer 26.05.xx
Planning view for May 2026 calver (26.05.xx). The copy players see in “What’s New” stays friendly and outcome-led; this page is the engineering and product planning view.
Shipped highlights live in the app under What’s New. When you cut a release, bump the current version and add a release entry there.
v26.05.02
@-mentions in posts and comments
Let people tag friends with @username, resolve links to profiles, and persist mentions so tagged users can find the conversation later.
Mention notifications (email)
Send mention alerts by email with sensible deduping, a clear one-line context, and a link straight to the post or comment.
Post permalinks, single-post page, and share cards
Stable URLs for every post; a dedicated post page with full detail (body, image, attachment, comments); reuse the preview pipeline for social shares on desktop and mobile.
Comment threading on home
Full thread UX: replies under comments, collapsible branches, and inline Reply—aligned with existing depth limits—and optimistic updates that still feel instant.
v26.05.03
Better post card, comment section and post page
Currently the design of the post card, post page and comment thread is not good looking. We need to improve the design (both ui and ux) of these components and pages. On post page make the post wider, and also comment section, currently they have very narrow width. Better reaction bar design (remove user selectable text, because when user holds to react it selects the text), better reactors list and dialog. Make reaction button smaller etc. Fix most of the ui and ux of these sections.
“Following” home feed tab
Add a filter on the home timeline so logged-in users can choose “Everyone” vs “People I follow,” reusing follow relationships already in the product. On following tab, query must have feed=following sync with nuqs.
Pack and topic discussion sections
Surface the same comment system used for posts on published pack and topic pages so communities can discuss sets outside the home feed.
Search posts from home search
Extend the glass search with a dedicated post result type: recent public posts with icons, snippets, and deep links, capped for performance. Posts will be searched by their 'body'.
Bookmark posts
Let logged-in users save posts from the feed to revisit later via a simple list (e.g. profile or settings)—no moderation pipeline required. Bookmarking should be optimistically updated on the ui.
Better profile page
The profile page is getting bigger and bigger. We need to implement tabs for the profile pages of users. Currently on profile page there are - Header (user info, follow/settings buttons), badges section, progress section, my packs section, stats section, published packs section, recent games section and sign out button at the end. Keep the sign out button on all tabs footers (likely in layout) and header, also make the progress section below the header and always visible. Then create badges, stats, packs, and games tabs. Tabs must be synced with query tab=... with nuqs. And most importantly Feed tab (at the first place) where people see user's posts.
Better pack/topic/question pages
Like profile pages, packs/topics/questions pages also need tabs. Keeb the header, main stats and play button. Add analytics and content tab. (content is topics for pack, questions for topic - question itself won't have content), and new tab Discussion which we will implement comments for.
v26.05.04
Host lobby QR code
Show a scannable QR on the host screen that encodes the existing join URL so in-person players can enter without typing the room code.
Spoiler settings discoverability
Short in-product explainer for spoiler-aware play: what each mode does, who sees muted buzzers, and when to pick each option.
“Play again” from recap
From the finished-game screen, one control to spin up a fresh lobby with the same pack (and sensible defaults) so groups can chain sessions quickly.
Player presence on the game
Show presence indicator of players for both host and other players. Presence should be updated in real time. Green means the player is currently on the game/website, orange means the player is not on the website. Using Ably for this, would be suitable.
Reactions on comments
Currently we can react to posts, but not to comments. Just like posts, we should be able to react to comments and replies.
Posts and Comments info on dashboard
Add Posts and Comments sections to /dashboard (/dashboard/posts and /dashboard/comments). Show proper info on columns. Also, add total posts count and total comments count on user table columns (also sorting by these counts).
v26.05.05
Export pack and topic to files
Download a pack or single topic in formats aligned with import—e.g. CSV, JSON, TXT, and Markdown—using the same validation shape as the import studio.
Profile “draft packs” lane
A compact strip or section on the profile for drafts and in-progress work, jumping straight into edit or publish flows.
Better stats of users on home, and profile page
Not only the design of the stats (which can be more compact while revealing more info) but also the actual stats itself must be improved. Better analytics with the data we have. Averages, totals, for games, hosting, playing, answering, clicking, per packs, topics, questions, rooms etc.
Better badges section on badges page, and profile page
Badges page currently just list down badges (and have search). And individual badge page just list down earners. There are no filtering, sorting, or ranking etc. We need these features on both pages. Also better design for the profile badges section, when there will be 40-50 badges, the profile page will be huge. Also an individual badge earn page, to share an earning badge with friends.
Update roles on /dashboard/users
Admins (not moderators) must be able to update the role of other users (not admins). They can make users/moderators -> users/moderators/admins. When a role of a user updated, he/she should be logged out from any session.
Badge detail share previews
Improve Open Graph and in-app share for individual badges so clips and group chats show the right art and description.
Better ELO system
In this task, there are two important sections. The first one is that, each individual ELO gain/loss must be stored on game data for user, so on the profile he/she can analyze the ups and downs through time or per game his ELO, also on game stats players can see other players' gains/losses. And second thing is the calculation of ELO. Gaining or losing ELO must be dependent on the each opponent's ELO, correct/incorrect answers, ranking, score etc.
Better xDR system
DR (Difficulty Rate) for packs, topics and questions must be radically improved. DR of a pack and topic is easy. They are just average of their individual content. DR of a question is important. The ELO of answerers, correct/incorrect answers, and even not-clicked players. If a player with high ELO did not click to the question, it means that question is somewhat difficult.
See who reacted on a post or comment
Reaction breakdown dialog must list the actual reactors (avatar, name, @username, reaction emoji) — both an aggregated 'everyone' view and per-emoji filters that link straight to each profile.
v26.05.06
“Dominator” badge
Award when the winner’s score is materially ahead of second place (tune thresholds from real game distributions so it stays rare but achievable). When the first place is 2x more than second place, it should be awarded. Requirements: There must be at least 3 players, and minimum 5 topics played.
“Survivor” badge
Award when the winner edges out second place by a very small margin—celebrate clutch finishes without encouraging sandbagging. When the first place is 500 points more than second place (500 included), it should be awarded. Requirements: There must be at least 3 players, and minimum 5 topics played.
Weekly or seasonal leaderboard snapshot
Optional time-boxed ladder (e.g. “this week’s XP”) that resets on a schedule, without erasing lifetime boards. Snapshots by Week/Month/Year/All Time.
Send Email Notifications for Reactions and Comments/Replies
Send email notifications when someone reacted to your post (not comment). Send email notifications when someone commented on your post (for posts, only 1st level comments get notifications), or replied to your comment/reply.
Better Overview page for dashboard
Currently dashboard has just links to other pages of dashboard. We need to improve design, and add there at least 5-6 sections (one of them can be quick links and current one), but others overall website stats on games, users, packs etc. Like a real dashboard.
v26.05.07
In-app notification center
A bell on home and a `/notifications` route that lists every alert: mentions, reactions, comments, replies, follows, pack publishes, game starts, and game results. Each row deep-links to the right place (post, comment, pack, or game) and respects per-user settings.
Per-user Ably inbox channel
Server publishes to a per-user `user:<id>:inbox` channel on every create/seen/read event, scoped via Ably token capability. The bell badge updates instantly across tabs without polling, and a fresh load resyncs from the API.
Granular notification preferences
New `/settings/notifications` tab. Filterable categories (mentions, reactions on posts/comments, comments on posts, replies) carry an `all / followers / off` selector for both in-app and email; binary categories (follows, pack publishes, game start/finish) are simple in-app + email toggles.
Master mute switch + delivery gating
`Pause everything (except security)` kill-switch feeds the dispatcher and email helpers. Existing reaction / comment / reply / mention / follow emails now check `shouldSendCategoryEmail` before sending so prefs win immediately.
Email quiet hours with timezone + wrap-around
Pick a start, end, and IANA timezone (window can wrap past midnight). Inside the window emails are dropped while the in-app row still lands so users catch up the moment they open the bell. Quiet hours only affect email — never in-app.
Grouping with optimistic seen/read
Multiple raw rows with the same `groupKey` collapse into a single expandable feed row while `seenAt IS NULL`; a fresh group starts after seen. Opening the bell calls `markAllSeen` optimistically (badge clears instantly), and per-row `markRead` snapshots the list cache for instant feedback.
Cross-tab badge sync
`notification:new`, `notification:seen`, and `notification:read` events keep the unread count consistent across every open tab — open the bell on one tab and the badge clears on every other.
v26.05.08
Pack directory advanced filters
Filter and sort published packs by language, difficulty band, minimum topic count, recency, and simple “hide ones I’ve finished” style toggles where data allows.
Host keyboard shortcuts companion
A lightweight cheat sheet (and optional ⌘/Ctrl-? overlay) for hosts in live games: pause, skip, next, buzzer actions—aligned with real bindings.
Multi-select in pack topic list
Select several topics at once for batch delete, reorder shortcuts, or bulk jump into edit—less friction for large packs.
Profile play streaks
Show a compact streak or activity strip from real sessions so regular players get visible momentum without new competitive ladders.
Add `totalViews` to posts
Add `totalViews` integer to posts. Add a client-side intersection observer to increment `totalViews` when the post is visible in the viewport (minimum 50% of the post must be visible [post header, body and image sections] and 1 second). Keep seen posts on sessionStorage to prevent double counting. In feed, post page, users posts etc. it should work anywhere where posts are visible.
Post insights page
For post authors put a link on post actions menu, Insights. On insights page post will be seen and some analytics like Total views, reactions breakdown, comments breakdown, view-to-engagement ratio, bookmarks details etc. And some rankings like top 5 commenters (users with most comments), first 5 reactors, first 5 commenters, and some other rankings.
v26.05.09
Header navigation bar
Currently there is no header navigation bar (we only have bottom bar). We need to add a header (not-fixed) navigation bar. We currently display search bar and notifications bell on home page header, and because we don't have navbar we cannot show them on other pages, with navbar on layout we will be able to show them on all pages. There will be search bar, notifications bell, and hamburger menu. Hamburger menu will have: Badges (/badges), History (/history), Roadmap (/roadmap), What's New (/whats-new), Privacy Policy (/legal/privacy-policy), Terms of Service (/legal/terms-of-service), and Sign Out button (for authenticated users). Privacy policy/roadmap/whats-new and terms pages can be on footer of the menu with smaller text and muted colors.
PWA polish
Install prompt, standalone display mode, and shell caching for static assets so return visits feel app-like on phones. Better manifest. Swipe down to refresh for standalone display mode. If possible, usage of mobile features.
Image pipeline for posts
Consistent max dimensions, modern formats where supported, and placeholder blur for post images to reduce layout shift.
v26.05.10
Posts and Comments Scoring
Read /POST_COMMENT_SCORING.md for the details. Add scoring info to post insights as well.
Feed virtualization
Virtualize long home timelines to keep scroll performance steady on mid-range devices during busy evenings. Integrate virtualization with cursor pagination.
v26.05.11
Richer stats dashboard for creators
Authors see return players, completion funnels per topic, and difficulty trends over time on pack and topic analytics pages.
Richer oEmbed and link previews
Improve how external sites and messagers render Xamsa links—packs, games, profiles—with consistent metadata and artwork.
Custom pack cover image
Optional hero art on pack pages (upload + crop) so authors can brand listings and shares without new collection features.
v26.05.12
What’s New and Post feeds RSS feed
A public RSS mirror of release entries so blogs and power users can follow updates outside the app.
Mobile navigation refinements
Bottom nav or thumb-friendly patterns for feed ↔ play ↔ profile; reduce tap depth to start hosting from home.
No target version yet
These are on the roadmap; we have not committed them to a specific CalVer patch yet.
Audio sounds
Add audio sounds on game buzzes, correct/incorrect marks, next/skip questions, finish games etc. Make it like a real game.
Live stats on game
Currently players and host can see the stats only after the game ends. Host and players should be able to see some (not whole) stats while playing the game.
AI-assisted practice host (experiment)
A clearly labeled opt-in mode where an AI host advances flow, reveals prompts, marks correct or incorrect, skips when allowed, and validates free-text answers with high bar accuracy—only shippable when quality matches human hosting for the supported pack types.
Seasonal spotlights and weekend cups
Time-boxed featured ladders or highlighted pack rows (without full playlist collections) to give the community recurring reasons to gather.
Accessibility pass (WCAG-oriented)
Keyboard paths for feed composer, reactions, and game host controls; focus management in dialogs; contrast fixes in charts.
Data export for accounts
GDPR-style export: profile, posts, comments, and game history in one downloadable archive.
Github Login
Add Github login to the website. Users can login with or link their Github account.
Apple Login
Add Apple login to the website. Users can login with or link their Apple account.