Skip to content

shareable links, no release flags, and a shaded sphere - #32

Merged
Fanoflix merged 1 commit into
mainfrom
shareable-links
Sep 7, 2026
Merged

shareable links, no release flags, and a shaded sphere#32
Fanoflix merged 1 commit into
mainfrom
shareable-links

Conversation

@Fanoflix

@Fanoflix Fanoflix commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Release flags are gone

Every tool is public. VITE_RELEASED, the unlock key, the features/flags module, .env.example and the workflow env block have all been removed — nothing needs setting on the host any more.

Links are postable now

Deep links were served by 404.html. That works for a person (the client router picks the URL up) but a crawler sees a 404 and renders no unfurl at all, which made every tool link unusable in a post.

  • Each route prerenders to real HTML at a 200
  • Each carries its own <title>, description and OG tags — six posts unfurling with identical copy reads as spam by the third
  • A 1200×630 card sits behind og:image, with twitter:card on summary_large_image instead of the small square. Source SVG kept in scripts/og-card.svg

Anti-aliasing: shaded sphere

New scene, and the new default. The silhouette is still pure coverage — supersampling does the whole job on the edge, Samples still behaves exactly as before — and only the interior is shaded from the reconstructed normal.

This forced a real change: render now returns coverage alongside the pixels, because findEdge used to infer edges from mid-grey pixels and most of a shaded sphere is mid-grey while fully covered. There's a test asserting that trap exists so it can't silently regress.

Low-res video

  • Transport bar overlaid on the screen where a player's controls belong, fading in on hover and focus
  • Volume is controllable; dragging the slider unmutes, dragging to zero mutes. Still muted by default
  • Resize handle moved clear of the bar. Its hover state changes colour, not size — it sat flush against a scrolling container's padding edge, so scale-110 pushed it one pixel over, which summoned both scrollbars and shifted the layout

A real bug

The drop zone required a matching MIME type and silently dropped everything else. The OS frequently declines to identify a file: .mov often arrives as application/octet-stream, and files out of an archive arrive with no type at all. Both failed with nothing on screen to explain it. It now falls back to the extension when the browser hasn't actually identified the file.

Also

  • Dithering opens with an image rather than an empty canvas (an original render, nothing licensed)
  • AGENTS.md registration steps updated: the flag touchpoint is replaced by page meta + PRERENDERED_PATHS

Checks

typecheck clean · lint 0 errors · prettier clean · 176 tests · build emits all 9 routes plus 404.html

Removes the staged-launch machinery entirely — every tool is public now, so
`VITE_RELEASED`, the unlock key and the whole `features/flags` module are gone
along with the env files and workflow wiring that fed them.

Makes tool links actually postable. Deep links used to be served by `404.html`:
fine for a person, since the client router picks the URL up, but a crawler sees
a 404 and renders no unfurl at all. Each route now prerenders to real HTML with
its own title, description and OG tags, and there is a 1200x630 card behind
`og:image` with `summary_large_image` so a link stops unfurling as bare text.

Also:

- dithering opens with an image instead of an empty canvas
- anti-aliasing gets a shaded sphere scene, and opens on it. The silhouette is
  still pure coverage, so supersampling does the whole job on the edge; only
  the interior is shaded. `render` now returns coverage alongside the pixels
  because `findEdge` can no longer infer edges from colour — most of a shaded
  sphere is mid-grey while fully covered.
- low-res video gets a proper transport bar overlaid on the screen, with a
  working volume control, fading in on hover and on focus
- the screen's resize handle moves clear of that bar. Its hover state changes
  colour rather than size: it sat flush against a scrolling container's padding
  edge, so a scale was enough to summon scrollbars and shift the layout.
- the drop zone stops silently rejecting valid files. It required a matching
  MIME type, but the OS often declines to identify one — `.mov` frequently
  arrives as `application/octet-stream` — so it now falls back to the extension.
@Fanoflix
Fanoflix merged commit c231a68 into main Sep 7, 2026
1 check passed
@Fanoflix
Fanoflix deleted the shareable-links branch September 7, 2026 08:57
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.

1 participant