Skip to content

Claude/modest carson com5t3 - #8

Merged
injoon5 merged 14 commits into
mainfrom
claude/modest-carson-com5t3
Aug 16, 2026
Merged

Claude/modest carson com5t3#8
injoon5 merged 14 commits into
mainfrom
claude/modest-carson-com5t3

Conversation

@injoon5

@injoon5 injoon5 commented Aug 16, 2026

Copy link
Copy Markdown
Owner

No description provided.

claude and others added 14 commits August 16, 2026 11:25
Move the paste, file-download and homepage masthead off scoped/component
CSS onto Tailwind utilities. The Markdown-generated prose classes stay in
app.css — they style server-rendered HTML with no Svelte markup to carry
utilities.

Refinements on the public (slightly playful) surfaces:
- file page: download arrow nudges down on hover (the direction a
  download travels); hero card rises in on load
- paste page: Copy button morphs to a check on success at a fixed width
  so it never resizes mid-press; body rises in
- one shared `rise` entrance token, collapsing to instant under
  reduced motion

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
Remove the scoped <style> blocks from the shared UI primitives:

- AssetInput dropzone → utilities with a conditional dragging state
- Chart readout/plot/axis/dates → utilities; SVG axis labels use
  fill-* + tnum
- BarList: the reserved-height list body, footer, "View all" button and
  ranked rows move to utilities; the bottom-sheet <dialog> keeps its full
  enter/exit choreography — @starting-style, ::backdrop and allow-discrete
  now expressed with Tailwind's starting:/backdrop:/open:/transition-discrete
  variants (verified: emits @starting-style{ [open]::backdrop{opacity:0} })

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
- admin/+layout: the bottom-bar↔sidebar nav shell moves to utilities; the
  shared nav-stop styling is a script constant (like Button's variant maps)
- admin/+page: the master–detail drill-down, the reflowing 2-col card ↔
  5-col row grid, badges and the kbd hint all become utilities. Show/hide is
  driven by a group/layout data-detail variant; the phone-only pane entrance
  is a `max-lg:animate-pane-rise` token (keyframe in app.css)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
Every remaining scoped <style> block is gone — the whole app is now
Tailwind utilities plus the Markdown-generated prose classes in app.css.

- styles.ts gains the master-detail shell (masterLayout, listPane,
  detailAside, backLink, dataRow, badge, kbd). The Links, Pastes and Files
  lists were three copies of the same 190-line block; they now share it,
  which is exactly the drift styles.ts exists to prevent. Each list appends
  only its own md:grid-cols-… for the columns a wide screen has room for.
- api: copy-paste snippet as a constant, verb/field styling to utilities
- home PageEditor / FileList (grid-template-areas → arbitrary), analytics
  range tabs + stat cards, FileForm dropzone all migrated

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
Prose and gallery images bordered in --border-subtle, a cool near-neutral;
against a photo's edge a tinted stroke picks up the surface tone and reads
as a rim of dirt. A dedicated --img-outline (pure black at 0.1 in light,
white at 0.1 in dark) replaces it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
A fresher, more tactile take on the link buttons, inspired by the Honk
aesthetic — playful but restrained, carried by layout and typography.

- Each icon sits in a filled, squircle chip tinted to its brand hue. One
  rule per tint: the chip mixes a muted hue into the current --surface and
  --text, so light/dark both work from a single definition (no second
  palette). The renderer tags each button with a data-tint by icon name.
- The card keeps the widget's own 22px squircle instead of clipping it back,
  and the label steps up to 17px/600 for a friendlier read.
- The chip tips and grows a touch on hover — the one playful beat.
- Labels are strong body text again: `.prose a` was styling them as blue
  underlined links, which fought the card being one big target.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
- The icon chip had ~13px above and below but ~9.6px to its left: the two
  text lines were taller than the chip, so vertical centring floated it.
  Tighter leading on the label and sub makes the chip the tallest element,
  so its inset is now the padding on all three sides (measured 9.6px each).
- Instagram's tint moves from pink to green.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
Typeface
- Replace Inter with Interlude, a variable UI face (OFL): one latin cut
  (wght + opsz, 131KB) plus a Korean Hangul cut that loads only on pages
  that actually set Korean, via unicode-range. Bolder masthead and h2 for a
  clearer hierarchy in the new face.

Markdown components
- :::messages (alias :::chat) — an iMessage-style thread after gandan.dev,
  used as a narrative device: blue sent bubbles right, grey received left,
  a tail on the last bubble of each run. The block widens into the page
  gutter so a tail on an edge bubble has room instead of clipping.
- :::poll — result bars with a highlighted, clamped winner.
Both are pure server-rendered HTML + CSS (no JS on /) and escape author text.
iMessage colours are a token pair so the received grey and tail cut-out
follow the theme; sent blue holds on both.

Everything is one variable font and Tailwind, no script on the public page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
The two-piece tail was undersized and mis-carved, rendering as a bulbous
nub. Rebuilt with the canonical proportions — a 20px coloured corner with an
elliptical bottom radius, bitten by a page-coloured cut-out — so the last
bubble of each run gets a clean flick on both themes. The block's gutter is
widened enough that the flick is never clipped at the column edge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
The CSS pseudo-element tail could never be gandan's long, elegant curl, and
was rendering as a nub. Port gandan's actual technique instead: a flat pill
plus SVG end-caps (rounded, or the taller tail cap on a run's last bubble),
lifted verbatim from their MessageBubbles component. The pill rides above the
caps (their z-10 trick) so an overlapping cap never clips the text; caps are
filled by CSS so sent/received and light/dark all track. Tests updated for
the cap markup.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VLQ8mwty2M9epwbLzs2k3Y
Drop :::messages/:::chat and :::poll from the markdown renderer,
their CSS, and the tests that covered them. Unknown leftover blocks
render as ordinary prose.

Co-authored-by: Injoon Oh <injoon5@icloud.com>
node:sqlite on Node 22 treats ?N placeholders as named parameters, so
spreading bind args throws. Bind them as {"?1": v, ...} in the suite;
D1 still gets the same SQL positionally.

Co-authored-by: Injoon Oh <injoon5@icloud.com>
svelte-check rejected Record<string, unknown> against StatementSync.run.

Co-authored-by: Injoon Oh <injoon5@icloud.com>
Remove message bubbles and poll shortcodes
@injoon5
injoon5 merged commit 82eb243 into main Aug 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants