What's New at Affinity Cardworks
A running changelog. We update this post from time to time as the site grows — newest changes up top. Got a bug or a wish? Drop us a line on the Contact page.
How we version
The little version number in the footer follows semantic versioning: MAJOR.MINOR.PATCH.
- We're currently in the 0.x series, the site is feature-complete and live for browsing, galleries, custom prints, and roleplay chat, but we're still pre-launch.
- v1.0.0 is reserved for the day we flip on live checkout (Bankful payments). That's our "we're officially open" milestone.
- Until then, each batch of features bumps the minor number (0.8 → 0.9), and fixes bump the patch number.
Every deployed build also carries the exact commit it was built from, so when we say "fixed in v0.9.0" we mean a specific, reproducible build.
Unreleased
v0.16.0 — Know your numbers
July 2026
A back office grows around the storefront: analytics for the studio and every seller, checkout promo codes, a faceted way to browse the gallery, a tightened money trail, and a much leaner set of menus.
Analytics (admin & sellers)
- A new analytics dashboard. Admins get a platform-wide Analytics page and every seller gets their own My Analytics page, both with a date-range picker (last 7 / 30 / 90 days, year-to-date, all time). At the top, headline tiles — revenue, orders, average order value, earnings — then revenue and orders over time as charts, your top-selling gallery cards and custom prints, and a cart → order conversion snapshot. Revenue counts an order once it's shipped or completed (the same point earnings accrue), so the numbers reconcile with payouts.
- Sellers see only their own data. A seller's dashboard is scoped to their storefront — their orders, their top items, their earnings — and never anyone else's. Admins see the whole platform, including the commission the platform earned.
- Roleplay engagement (admin). The admin view also charts active chats, messages, active users, credits consumed (broken down by where they went), provider-token usage, and credit-pack sales — so decisions about print runs, pricing, and which themes to commission aren't made blind.
(Under the hood this is a read-only view over existing data — no new tracking, no schema change. Page-view tracking and a back-in-stock waitlist would each be their own future feature.)
Browse the gallery
- Browse & filter the gallery. The old Character Finder is now a full faceted browse: filter by theme/tag, material, finish, "in stock", "for sale", and "serialized"; narrow by series, source, or studio; and sort by Featured, Newest, or Most popular. Everything runs server-side and paged, so even a big catalog stays fast. Filtered views are shareable — the filters live in the URL, so you can send a link straight to "in-stock holo cards, newest first."
- Card themes/tags. Sellers can now tag cards with themes and franchises (grouped under Anime, Comics, Gaming, or general Themes), managed alongside materials and finishes and assigned from the card editor. These power the new theme filter.
Store
- Discount codes at checkout. You can now enter a promo code on the checkout page and see the discount applied before you pay. Codes come in three flavours — percentage off, a fixed amount off, or free shipping — and can be scoped to gallery cards, custom prints, or a specific seller's items. Each code can carry a usage limit, a per-member cap (e.g. once per customer), a minimum order, and an active date window. Everything is validated on our server at checkout, so the discount you see is exactly what's charged — and the discount is taken before tax, the way it should be. (Codes are created by admins; member-referral codes are coming next.)
A tighter money trail (sellers & studio)
- Shipping is the seller's. A seller keeps the buyer's shipping payment and pays the real postage, so their shipping margin — up or down — is theirs. What the studio recovers is now driven by the actual carrier label cost, not the checkout estimate, and re-buying or upgrading a label recovers correctly (this fixes a case where a second label didn't record its cost).
- No money left behind on refunds & cancels. Voiding a shipping label credits the seller the postage back, cancelling an order reverses that seller's whole accrued position to zero, and a buyer refund is recorded against the order — so an undone sale doesn't leave stray earnings or liabilities on the books.
- Earnings never outrun confirmed funds. A seller's balance only accrues once an order's payment is settled, with groundwork already in place for a real payment gateway's processing fees (dormant until live checkout arrives).
- A whole-platform money picture for the owner. A new Site Earnings page shows the commission the platform itself has earned, and the Payouts page gains per-seller manual adjustments (a signed amount with a required reason) and an expandable reconciliation view that squares the whole ledger against payments.
- Sellers see their net before they ship. The order-management dialog now breaks down estimated earnings — sale, minus commission, minus the postage the platform fronts, equals projected net — computed from the very same math that books the ledger on ship, so the estimate can't drift from what's actually paid out.
Roleplay chat
- See exactly what each reply cost. Every AI reply now carries a small 🪙 chip next to the 🧠 recall chip. Tap it to open "This reply's cost" — the credits charged for that message, whether that was billed from the model's exact usage or a conservative estimate (when a connection dropped mid-reply), the token breakdown (prompt / response / total), and the reply length. If you've ever wondered whether a turn charged you twice, you can now check any reply's spend right in the transcript.
Leaner menus
- Tidier navigation. The sprawling Admin, Seller and Account menus fold into deep-linkable, tabbed hubs — the Admin group drops from 16 links to 5 and the Seller group from 12 to 5 — so everything's still a click or two away, just from a much shorter menu. My Earnings now sits with the other sales views under the Sales hub, where it belongs.
Fixes
- "Remember me" survives site updates. Ticking "remember me" now keeps you signed in across a deploy, instead of quietly logging you out the next time the site updates.
v0.15.0 — Shared worlds
June 2026
Lore that lives beyond a single character.
Roleplay chat
- Reusable lorebooks you can attach to any conversation. A lorebook is a library of world facts — places, factions, history, rules — that the character quietly recalls when they're relevant, without spending tokens to send the whole thing every turn. Until now lore was baked into a single character; now there are standalone lorebooks you can attach to a conversation from the new 📖 Lorebooks panel in chat. Attach as many as you like, drag them into a precedence order, and flip any one on or off for that conversation without detaching it. A character's own built-in lore always takes precedence over attached books, and it's guaranteed a couple of slots every turn so it's never crowded out. However many books you attach, the amount of lore injected per turn stays capped — so it never bloats the prompt or slows replies; the most relevant entries simply win the slots. When semantic matching is available, "relevant" means meaning, not just a literal keyword hit, so a callback phrased a different way still surfaces the right lore. (Authoring lorebooks is an admin tool for now; any lorebook marked public is available for members to attach.)
- Import lorebooks from JSON, many at once. The admin Lorebooks page now has an Import JSON button that takes multiple
.jsonfiles at once — one lorebook per file. It auto-detects the two common export shapes (the SillyTavern World Info format and the V3character_bookformat), so you can drop in a folder of books freely mixing both and it sorts out the field differences for you (a character card with an embedded book works too). Each file gets a review row — name and entry count — before you commit, and the whole batch imports at your chosen visibility in one pass.
Roleplay characters (admin)
- Import characters faster, and in bulk. The admin redemption-character page now imports a SillyTavern card (PNG or pasted JSON) with a proper preview-then-confirm step — review the persona, art, tags, and the mature (18+) toggle before committing. Characters can now be created without an unlock card and linked to cards later. And a new bulk importer stages many cards at once and imports them all in one pass — built for seeding a large catalogue. Drop in a whole folder of card files, freely mixing PNG cards and individual
.jsoncharacter files, or paste a JSON array — everything stages together. - Manage a big character catalogue at a glance. The admin Characters list is now a proper sortable, searchable data table — sort by name, author, unlock-card count, or last-updated; search across name, tag, and author; filter by whether a character is linked to an unlock card; and page through 25/50/100/all at a time. Select several at once for bulk actions — set or merge tags, set or clear the author, assign unlock cards, or delete — so curating hundreds of characters no longer means editing them one by one.
Roleplay chat
- Take a tour. New to roleplay? A "Take a tour" button on the roleplay page opens a guided, hands-off walkthrough — a staged demo conversation with a friendly spotlight that steps you through each feature in turn: how replies read and how to swipe between alternatives, the message composer, choosing who you are (personas), pinning facts to memory, steering the scene with an author's note, the long-term "remembered scenes", and the 🧠 recall chip. Nothing to set up and nothing you can break — it's a fixed demo, so even features you've never triggered yet are right there to see.
- See what your character just remembered. When a reply draws on long-term memory, a small 🧠 chip with a count appears beneath it. Tap it to open "Recalled for this reply" — the remembered scenes (by title) and any pinned facts the character leaned on for that exact message. Each row stays tucked away until you expand it, and the chip only shows up when something was actually recalled.
Fixes
- No more déjà vu in your character's memories. Sometimes a character would file away the same scene two or three times over — the same first meeting or heist remembered in slightly different words. Characters now know which scenes they've already remembered and summarise only what's genuinely new, and a near-duplicate is caught and skipped before it's ever saved. Your "Remembered scenes" list stays clean, one entry per actual moment.
- Roleplay scene tracker now shows real names. The little scene-tracker chip above the chat (location, who's present, mood) was printing raw placeholders like
{{user}}and{{char}}instead of your persona's name and the character's name. It now reads naturally — e.g. "Present: Maya, Elara" — like the rest of the conversation. - Notification deep links now work every time. Clicking a notification that points to a specific card (for example, "your card sold") opens that card reliably — previously it only worked once per page load, and afterwards the link quietly did nothing until you refreshed.
- The Blog now has its own colour in the menu. Each section of the navigation menu carries a little coloured stripe so you can tell zones apart at a glance — and Blog was the odd one out with no colour. It now wears a distinct lilac stripe, matching the rest.
v0.14.0 — Pictures in posts
June 2026
The blog can now tell its story with pictures, not just words.
Blog
- Upload images right inside the post editor and drop them anywhere in your writing. Each upload gives you a one-click "Copy Markdown" snippet to paste where you want the picture.
- Uploaded images are automatically converted to WebP, so posts stay sharp but load fast.
- Post images follow the same privacy as the post itself — a draft's images stay private until the post is published.
- The editor preview now updates as you type.
- Posts support fenced code blocks (
```), shown as a tidy bordered block with the language label and a one-click Copy button — and long lines wrap instead of scrolling off the side.
v0.13.0 — Story moments, for everyone
June 2026
The roleplay story-moment achievements are out of beta — every member can now earn them — and there are lots more to discover.
- Available to all members (previously beta-only): your characters notice meaningful moments as they happen and reward them.
- New moments to earn, including: sharing a secret, setting off on an adventure, a marriage proposal, raising a toast, facing danger side by side, giving a gift, sharing a dance, and a heartfelt goodbye — alongside the originals (first kiss, made them laugh, said "I love you", and making up after a fight).
- Whole-arc moments count too: some achievements (like going on an adventure) are recognised when a long scene is committed to your character's long-term memory — not just from a single message — so a story that unfolds over many turns still gets its due.
v0.12.0 — Your memories, and the scene around you
June 2026
More control over what your characters remember, and a sharper sense of place.
Memories panel
- Open the memory button in any chat to see the scenes your character has remembered — each with a title and summary. Edit one to correct a detail, pin it so it's always kept in mind, or forget it to remove it. Your own pinned facts live here too.
Scene tracker
- A small "current scene" chip now shows where you are, the time of day, who's present, and the mood — kept up to date automatically as the story moves, so characters stay grounded in the moment across long scenes.
Achievement
- Unforgettable — earned when you talk with a character long enough that they form a lasting memory of it.
v0.11.0 — Characters that remember
June 2026
Roleplay characters now keep a real long-term memory of your story together.
Chat memory
- As a conversation grows, the older scenes are distilled into discrete, titled memories instead of one ever-blurrier summary. When something from earlier becomes relevant again, the character recalls that specific moment — so long stories stay coherent and personal.
- Recall is semantic, not just keyword-based: mention "that fight by the water" and the character can surface the docks argument from many scenes ago, even if you don't use the same words.
- The most recent scenes are always kept in mind, so continuity never depends on luck.
Chat polish
- Characters are better at staying themselves — they no longer drift into adopting your persona's profession or abilities as their own.
Elsewhere
- The blog is now reachable straight from the main menu.
v0.10.0 — Achievements, profiles & your collection
June 2026
A big batch: a brand-new achievements system, public member profiles, a closer look at your collection, and a round of roleplay-chat reliability and polish.
Achievements
- Earn badges for milestones across the site — your first conversation, chatting with lots of characters, growing your collection, your first order, your first custom print, and more. Each badge grants a few bonus credits, just once.
- A celebratory popup announces a freshly-earned badge wherever you are on the site, showing the art, the credits granted, and how rare it is among members.
- Beta members can also earn special story-moment achievements that notice meaningful roleplay beats.
- Choose which badges appear on your profile from My Achievements.
Your profile
- New public profile pages at
/u/your-name. Private by default — you decide whether to make yours public and whether to show your "member since" date. Your earned badges appear here when it's public. - Change your password while logged in from the new Security page (previously only the forgot-password email could do that).
Collection
- Tap any collected card to open it full-size with its details and stats: how many were printed, how many have been registered, how many collectors own one, and how rare it is across the membership.
- Every card's image is now frozen the moment it's made, so your collection always shows your edition's artwork — even if the design is later re-drawn or the original listing comes down. (Previously, cards from private or retired sets could show no image at all.)
Roleplay chat
- The "Chat" button now always reopens your one-on-one conversation with a character, instead of sometimes dropping you back into a group chat.
- More reliable under load: a stalled reply now fails fast and retries automatically instead of leaving you on the typing dots — and a turn that never lands isn't charged.
- Locked characters you can unlock by redeeming specific cards now appear in their own teaser section, so you can see what's out there and how to get it.
- If the model's content policy blocks a reply, you now get an honest message (and no charge) instead of the character silently going quiet.
- "Higher quality" (thinking) and web search are now part of an opt-in beta program while we tune them.
Fixes & behind the scenes
- Redeeming a card linked to a roleplay character now reliably unlocks that character — including cards re-issued under the same number.
- Tidied a stray double "#" in the admin card-linking labels.
- The blog is now reachable straight from the main menu, feeds a self-maintaining sitemap, and returns proper "not found" responses for unpublished posts, so search engines see it correctly.
- Fixed an admin-side crash when opening certain chat transcripts, and added moderation tooling for reviewing flagged turns.
v0.9.0 — Roleplay chat, AffinityAI & buying credits
June 2026
The big one: a full SillyTavern-style roleplay chat built on character cards, plus the tools to create and pay for it.
Chat & characters
- Browse, import, and create roleplay characters — including importing standard character cards and V3 lorebooks (
character_book). - A real chat experience: streaming replies, an animated typing indicator, regenerate / swipe / edit / delete turns, personas, and per-character memory.
- Multiple chat sessions per character with a tab switcher, so you can keep different storylines going.
- Group chat — bring several characters into one conversation.
- Smarter writing: quote-aware narration/dialogue formatting,
{{char}}/{{user}}substitution, reply-length shaping, and Continue-on-cutoff so replies don't end mid-sentence. - Auto-summarized long-term memory and typo-tolerant lorebook keyword matching.
- "Higher quality" (thinking) and web-search toggles for richer responses.
- 👍 Like characters and sort by Most liked; a tavern-style browse page.
AffinityAI
- An optional AI assistant for building characters — inline panel for new and existing characters, richer generated cards, web-search grounding, and an NSFW toggle.
Credits
- Buy credits directly with volume-discount packs, an explicit-consent dialog, and honest pricing badges.
- Admins can grant or adjust a member's chat credits.
Cards & redemption
- QR card redemption to unlock collection items and chat credits, with a multi-card unlock flow.
- Admin Card Redemptions page, batch minting, and bulk cleanup of orphaned tokens.
Polish & fixes
- Carousel banners now lock to a clean 3:1 at every width, with a built-in image cropper.
- Hardened redemption against "database is locked" errors under load.
- Numerous chat reliability fixes (discarding failed turns, clearer errors, NSFW content no longer rejected in error).
v0.8.0 — Galleries, sharing & the seller marketplace
June 2026
Turned the gallery into a real, shareable, multi-seller space.
- Multi-seller marketplace with a single-seller mode — the owner is just the first seller.
- Gallery access levels (Draft / Private / Members / Public) with sharing, display names, and moderation notes & appeals.
- Reviewer sharing: invite someone as a Viewer or Reviewer on a private set, with attributed review notes, @mentions, likes, edits, and notifications.
- Set manager upgrades: pagination, CSV import/export with selectable columns, upsert-by-card-number, bulk delete, and an Insights tab.
- A Review Activity view to find review notes by author across every set.
- Owner-only rework tools: flag cards for rework, filter by them, and withhold reworked cards from sale.
v0.7.0 — Custom Prints v2 & the layered designer
June 2026
A ground-up rebuild of custom prints around a real layered, two-sided design tool.
- Layered, two-sided design model with a server-side compositor and proofing.
- A full designer: layer panel, drag/reorder, rename/copy, text, shapes, and transform tools, fit/fill, per-layer ink density, and white-ink (spot) mask authoring.
- Variants & finishes: a material/substrate list and a separate holo-finish list, each with sample images, per-option pricing, applied to both custom products and gallery cards.
- Template downloads, draft thumbnails, and a lot of QA hardening across several rounds.
v0.6.0 — The vaporwave era & Affinity Cardworks
June 2026
The site got its look and its name.
- Vaporwave aesthetic: a repaletted theme, day/night modes, and tasteful glitch flourishes — readable shopping pages, decoration that stays out of the way.
- Rebrand to Affinity Cardworks.
- Required material + finish selection at add-to-cart (defaults to the topmost option).
- Fixed the gallery lightbox on mobile.
v0.5.0 — Trust, safety & accounts
June 2026
Everything that makes a storefront feel safe and legitimate.
- Age verification via didit.me — NSFW content gated only when a visitor's US state requires it, and an admin "hide all NSFW" master switch.
- Account hardening: password policy, account lockout, forgot-password, email confirmation (session-aware, with resend), and a working login/register flow.
- Trust pages: Contact, Returns, Shipping, plus a branded 404 and error page.
- SEO & social: meta tags,
robots.txt, and a sitemap. - Operability: structured logging, error-email alerts, a live-tail log viewer with history and filtering, security response headers (CSP), SMTP email, and a User Management dashboard.
v0.4.0 — Selling for real
June 2026
- Shopping cart, checkout, and order management.
- Shippo integration: label purchase, 4×6 labels with auto-open, address validation, tracking webhooks that auto-update order status, and printable packing slips.
- Sales tax collected per state, plus a checkout shipping fee.
- Branded favicon and full icon set.
Older work predates this changelog. Thanks for following along — the road to v1.0 (live checkout) is short now. 💖
