Commits
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Align the "connected at" / event badge with the current-event checkbox,
which both now select the most-recent record via FindForTarget. Previously
the badge used first-match-in-listRecords-order, which could disagree when a
target had multiple connection records.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds SetConnectionEvent handler and route to toggle whether a viewer's
connection record with a target DID is tagged with their current event.
The event URI is always re-derived server-side from checkin.Current;
the client only sends {"associate": bool}.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add CurrentEventURI, CurrentEventName, ConnRecordURI, and AssociatedWithCurrent
fields to ProfileView, conditionally render a "met at <event>" checkbox inside
the .pv-notes-section when both fields are non-empty, and include connection-event.js.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Replace the inline map-building block in Put with a call to the
buildConnectionValue helper, eliminating the duplication flagged
in code review. Normalization of rec.ConnectedAt (zero → now)
is preserved before the helper call.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Design for a checkbox on the connection profile page that tags a
quest.atmo.connection record in the user's PDS with the event they're
currently checked into (in-place putRecord, reversible).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Up to 5 {label,url} links per event, edited in admin forms, synced to
the PDS record on create AND edit, shown above the progress bar on the
event detail page.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mobile-only camera-launch button on profile and event screens.
Captures via <input capture="environment">; no QR decode (v1 stub).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
D1: Pass viewer DID to detailLocal so follow-up notes are loaded correctly
D2: Check hideBadges flag before rendering badges in local profile
E: Connection test updated for new db parameter on Put()
B: Local→ATProto connection reciprocity
- New migration 019_pending_local_connections.sql for pending local reciprocal connections
- Add Queue.EnqueueLocal() for local-initiated pending connections
- Update Connect handler to detect local viewers via ResolveIdentity
- Add connectLocalToATProto method for local→ATProto connection flow
- Update ConnectFlushLocal to support both local and ATProto viewers
- Add self-connect guard for ATProto viewers connecting to linked local IDs
- Migrate pending_local_connections during graduation in LinkLocalToATProto
C: Badge awards for local users
- Add AwardLocal() for writing badge awards to local SQLite cache
- Add AwardConnectionMilestonesLocal() variant
- Award badges in ConnectLocal, ConnectFlushLocal, EventScanCheckin, EventFlushLocal
- Add checkin.CurrentForLocal() for string DID lookups
- Remove early-return delete in notes.Put() so empty rows persist as bookmarks
- Update test to expect row to persist instead of being deleted
- Add db *sql.DB parameter to connection.Put() and write bookmark row
- Write bookmark in WriteLocal() for local connections
- Write bookmark for duplicate-skipped connections in drain.go
- Update all callers of connection.Put() to pass db
Fill in three remaining routes from the old atmoquest app that were
missing after the feature-folded migration:
- features/about/{routes.go, pages/about.templ}: short "What's
ATProto?" explainer page linked from the guest landing.
- features/demo/routes.go: Datastar SSE clock endpoint that streams
the current UTC time into the statusbar #clock once a second.
- router/router.go: register the two new feature subrouters and add
the /healthz probe endpoint.
- features/index/pages/index.templ: restore the live clock by binding
#clock to data-on-load="@get('/demo/clock')" on both the authed
and guest statusbars (was a static --:--:-- placeholder).
Build clean, all tests pass, smoke-tested on :9090:
/healthz 200
/about-atproto 200 (2369 bytes)
/demo/clock SSE patch frames streaming
/ 200 (guest landing unchanged)
Align the "connected at" / event badge with the current-event checkbox,
which both now select the most-recent record via FindForTarget. Previously
the badge used first-match-in-listRecords-order, which could disagree when a
target had multiple connection records.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Adds SetConnectionEvent handler and route to toggle whether a viewer's
connection record with a target DID is tagged with their current event.
The event URI is always re-derived server-side from checkin.Current;
the client only sends {"associate": bool}.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
B: Local→ATProto connection reciprocity
- New migration 019_pending_local_connections.sql for pending local reciprocal connections
- Add Queue.EnqueueLocal() for local-initiated pending connections
- Update Connect handler to detect local viewers via ResolveIdentity
- Add connectLocalToATProto method for local→ATProto connection flow
- Update ConnectFlushLocal to support both local and ATProto viewers
- Add self-connect guard for ATProto viewers connecting to linked local IDs
- Migrate pending_local_connections during graduation in LinkLocalToATProto
C: Badge awards for local users
- Add AwardLocal() for writing badge awards to local SQLite cache
- Add AwardConnectionMilestonesLocal() variant
- Award badges in ConnectLocal, ConnectFlushLocal, EventScanCheckin, EventFlushLocal
- Add checkin.CurrentForLocal() for string DID lookups
- Remove early-return delete in notes.Put() so empty rows persist as bookmarks
- Update test to expect row to persist instead of being deleted
- Add db *sql.DB parameter to connection.Put() and write bookmark row
- Write bookmark in WriteLocal() for local connections
- Write bookmark for duplicate-skipped connections in drain.go
- Update all callers of connection.Put() to pass db
Fill in three remaining routes from the old atmoquest app that were
missing after the feature-folded migration:
- features/about/{routes.go, pages/about.templ}: short "What's
ATProto?" explainer page linked from the guest landing.
- features/demo/routes.go: Datastar SSE clock endpoint that streams
the current UTC time into the statusbar #clock once a second.
- router/router.go: register the two new feature subrouters and add
the /healthz probe endpoint.
- features/index/pages/index.templ: restore the live clock by binding
#clock to data-on-load="@get('/demo/clock')" on both the authed
and guest statusbars (was a static --:--:-- placeholder).
Build clean, all tests pass, smoke-tested on :9090:
/healthz 200
/about-atproto 200 (2369 bytes)
/demo/clock SSE patch frames streaming
/ 200 (guest landing unchanged)