Unicord
New tier list
Shipping in phases

What’s changed

Every phase ships something usable on its own. Corrections stay on the record rather than being quietly edited away — where a plan turned out wrong, the entry says so.

Phase 4shipped
Shipped

Share links, remix, and a page for every board

A published board gets a permanent link, server-rendered from one read — no catalog API calls on the public page.

  • Publish dialog with title, description and public / unlisted / private
  • Remix opens anyone’s board as your own copy
  • /tierlists lists what you have published, with copy-link, edit and delete

Shipped before Phase 2, which is the one thing the plan said not to do: published documents now have to be backfilled when the generalized item model lands, instead of the migration being a pure client-side function.

f3972d2
Phase 1.6shipped
Shipped

The editor moved to /tierlist and / became a feed

A newsfeed-style landing page: hero, chronological feed of recently published boards, announcements, quick links.

  • Server-rendered, with the search term in the query string
  • Sort tabs are plain links, so the page needs no client bundle
c3236ed
Phase 1.6record
Fix

The Share and PNG buttons had invisible borders

The button base set a transparent border that silently beat every variant’s. A property now belongs to exactly one layer: if variants set it, the base must not.

c3236ed
Phase 1.5shipped
Shipped

Optional sign-in with Google and GitHub

Accounts gate nothing except publishing. The app still runs with no backend configured — the account UI simply hides itself.

9b5d0eb
Phase 1record
Correction

Tier reordering shipped after all

It was listed as deliberately skipped. It is in the build: drag a row by its label, or use the arrows.

11405ee
Phase 1record
Fix

Covers stopped failing at random

Cover art is only sent cross-origin headers when the request carries an Origin, and the browser cache does not key on request mode — so a cached copy poisoned every later load. One cache-busting retry clears it.

5367350
Phase 1record
Correction

The catalog is a drag source, not a drop target

Results come from the API, so “drag a title back into the results” means nothing. Removal happens on the card and in the detail modal instead.

  • The catalog shows trending when the box is empty, so the grid is never blank
  • The tool rail’s last slot is Load save file, not a settings gear
Phase 1shipped
Shipped

The editor, end to end and entirely client-side

Search a real catalog, drag titles into tiers, undo, autosave, export. The whole product for a single user, with no account.

  • Drag between any row and the pool, and reorder within a row
  • Detail modal per cover: synopsis, score, studio, genres, outbound links
  • Autosave to this device, plus .json export and import
  • Export a PNG of the whole board
d9ae800
Phase 0shipped
Shipped

Scaffold

Next.js 16 App Router, TypeScript, Tailwind v4, dnd-kit, deployed.

The plan required an `images.remotePatterns` entry for s4.anilist.co. It was never needed — the app uses plain <img>, not next/image.

69cfe31