Save source descriptions, add "Why it's #N", fix IGDB studio names

Descriptions
- Items keep the source's description (TMDB/TheTVDB overview, IGDB
  summary, Wikipedia intro) in a new items.description column
  (migration 3); editable in the item form
- Deezer/MusicBrainz track counts and album names are now display-only
  hints, not saved as descriptions

Why it's #N
- The owner's note is presented as "Why it's #N" in the editor and the
  public detail view, above an "About" section with the description

IGDB developers
- IGDB credits internal divisions ("Nintendo EAD", "Nintendo EPD
  Production Group No. 8"). A developer whose name shares its first word
  with its parent company is credited to the parent ("Nintendo");
  independently named studios keep their name (Retro Studios, Naughty
  Dog, Landfall Games)
- Fall back to the publisher when IGDB lists no developer

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
cdnutterandClaude Opus 5.5 committed 2026-09-24 18:05:20 -07:00
1 parent 3923444b3b
commit 7320e3f707
16 files changed
+207 -44

No files matched your search

+8 -4
View File
@@ -120,13 +120,15 @@ code { font: 0.9em ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; bac
/* ---------- profile / home ---------- */
.profile { display: flex; align-items: center; gap: 28px; padding-top: 56px; padding-bottom: 28px; }
/* Profile pictures: the image as-is, just cropped to a circle. The flat
accent fill only shows behind the initial when there's no picture. */
.avatar {
flex: none; display: grid; place-items: center; overflow: hidden; border-radius: 50%;
background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 45%, var(--bg)));
color: var(--accent-text); font-weight: 700;
background: var(--accent); color: var(--accent-text); font-weight: 700;
}
.avatar:has(img) { background: none; }
.avatar img { width: 100%; height: 100%; object-fit: cover; }
.avatar--lg { width: 112px; height: 112px; font-size: 44px; box-shadow: 0 0 0 4px var(--bg), 0 0 0 5px var(--border); }
.avatar--lg { width: 112px; height: 112px; font-size: 44px; }
.profile-name { font-size: clamp(30px, 5vw, 46px); font-weight: 780; }
.profile-tagline { margin-top: 8px; color: var(--muted); font-size: 17px; max-width: 60ch; }
.profile-stats { margin-top: 12px; color: var(--faint); font-size: 14px; }
@@ -331,8 +333,10 @@ dialog[open] { animation: pop 0.18s cubic-bezier(.2,.8,.2,1); }
.dlg-meta { display: grid; grid-template-columns: auto 1fr; gap: 6px 16px; margin: 4px 0 0; font-size: 14px; }
.dlg-meta dt { color: var(--faint); }
.dlg-meta dd { margin: 0; }
.dlg-why h3, .dlg-about h3 { font: 700 11.5px/1.2 var(--font); text-transform: uppercase; letter-spacing: 0.08em; color: var(--faint); margin: 6px 0 8px; }
.dlg-desc { color: var(--muted); font-size: 14.5px; line-height: 1.6; white-space: pre-line; }
.dlg-note {
margin: 4px 0 0; padding: 14px 16px; border-left: 3px solid var(--accent);
margin: 0; padding: 14px 16px; border-left: 3px solid var(--accent);
background: var(--accent-soft); border-radius: 0 var(--radius) var(--radius) 0;
font-size: 15px; white-space: pre-line;
}