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.02Live now

  • @-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.03Live now

  • 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.04Live now

  • 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.05Live now

  • 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.06Live now

  • “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.07Live now

  • 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.08Live now

  • 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.