Lossless Changelog
product

id.didi.sh

lossless-group/id-didi-shmain

2026-08-23 · 1 entry2026-08-21 · 1 entry2026-08-20 · 1 entry2026-07-06 · 7 entries2026-07-06 · 17 commits · 14,614 code · 407 context · 778 changelog2026-08-21 · 30 commits · 4,189 code · 3,037 context · 402 changelog
Jan 20252026Sept 2026
  • colour = whenJan 2025 → Sept 2026

130 commits · +28,884 lines

Code
23k79%
Context
5k16%
Changelog
2k6%

First example of event diary share

The site said one login and had nowhere to perform one. Now there is a sign-in, and an account page you can actually act on.

Michael Staton
  • Changelog
  • Id-Didi-Sh
  • Auth
  • Entities
  • Identity-Service

Lend a key, keep the receipts

Paste an API key, lend it to a project you're not on, and watch what it pays for. Borrowers spend it; they never see it.

Michael Staton
  • Progress-Update
  • Identity-Service
  • BYOK
  • Credentials

Entities land flat, and invites reach strangers

Tenancy stops being a hierarchy nobody's collaborations fit: organization, workspace and project become three labels on one flat table, with no parent_id and no inheritance. Membership removal never cascades, and the API says out loud what a removal did not do. Adding an email that has no didi account now sends an invite from no-reply@didi.sh and attaches the membership when it's redeemed.

Michael Staton
  • Progress-Update
  • Identity-Service
  • Entities
  • Invites
  • Tenancy

Repo scaffold — the identity plane gets its home

id-didi-sh exists: the repo for the didi.sh identity service, scaffolded with the tree's universal directories, a README that carries the contract and the increment plan, and a CLAUDE.md that marks this as the Lossless tree's polyglot (Elixir) exception.

Michael Staton
  • Progress-Update
  • Scaffold
  • Identity-Service
  • Didi-Platform
  • Elixir

Walking skeleton — magic link to signed cookie, proven live

Increment 1 ships the same day as the scaffold: a Phoenix app with the full identity schema, an Ed25519 keypair behind a JWKS endpoint, and the whole magic-link → didi_session cookie → /api/me → refresh → logout loop — 19 tests green and every step proven against the live server by a curl script.

Michael Staton
  • Progress-Update
  • Walking-Skeleton
  • Identity-Service
  • Elixir
  • Phoenix
  • EdDSA
  • +1

Credential-posture splash — the one-login pitch goes public

The repo gets its GitHub Pages presence: an Astro splash dressed as an identity document — guilloche engraving, a SPECIMEN ID card as the hero object, stamp chrome — pitching one login to fast-track DD-ready materials, with the three services near-copied from ai-labs/splash and a CTA pointed at id.didi.sh.

Michael Staton
  • Progress-Update
  • Splash
  • GitHub-Pages
  • Astro
  • Didi-Platform
  • Credential-Posture

Deployed — the identity service goes live on Fly

The walking skeleton left the laptop: id-didi-sh runs on Fly.io in lax with the libSQL file on a mounted volume, secrets set without ever being displayed, JWKS serving the production Ed25519 key at id-didi-sh.fly.dev — and a TLS cert issued for id.didi.sh, two DNS records away from the real domain.

Michael Staton
  • Progress-Update
  • Deploy
  • Fly-Io
  • Identity-Service
  • Elixir
  • Vercel
  • +1

One person, many addresses — email aliases land

A didi.sh ID now carries alt emails: a magic link to any alias authenticates the same didi_id. Normalized from the start (a user_emails table, globally unique across primaries and aliases) instead of merge-chained after the fact — the fullstack-vc lesson, applied preemptively.

Michael Staton
  • Progress-Update
  • Identity-Service
  • Email-Aliases
  • Schema

Production magic links land in a real inbox

Steps 1 and 2 of the humain-vc unlock close on production: a hand-rolled Resend adapter over Req delivers real sign-in emails from the deployed service, orgs and memberships exist with mix tasks to seed them, and production carries Michael's full identity — plus two infrastructure bugs found and fixed along the way.

Michael Staton
  • Progress-Update
  • Email
  • Resend
  • Organizations
  • Memberships
  • Fly-Io
  • +1

id.didi.sh is live — the full loop, clicked

DNS validated, the Let's Encrypt cert issued, and the operator clicked a production magic link end to end: an email from no-reply@didi.sh, the scanner-proof /access confirm page at https://id.didi.sh, and a didi_session cookie scoped to .didi.sh. The platform's one-login promise works in production, on the canonical URL, same day the domain was bought.

Michael Staton
  • Progress-Update
  • Milestone
  • Identity-Service
  • DNS
  • TLS
  • Didi-Platform