Commit Graph

20 Commits

Author SHA1 Message Date
Samuel Newman 4616e50d4b chat event bus: tolerate mid-flight session bundle swaps
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:20:11 +03:00
Samuel Newman f1afc3c47c match app-password errors on the typed lex error, not raw message equality
isErrorMaybeAppPasswordPermissions compared getErrorName against
'TokenInvalid', a code the PDS never sends - the string fallback was
doing all the work. The real wire shape is the GENERIC 'InvalidToken'
code (also used for malformed/expired tokens) with the app-password
specifics only in the message, so the typed path now matches code AND
message ('Bad token scope' / 'Bad token method').

Deactivated and DeactivateAccountDialog used raw switch(e.message)
equality; both now go through the helper. Tests updated to pin the
actual PDS wire shape (and reject plain malformed-token errors).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:19:43 +03:00
Samuel Newman 57a6168bbc address claude review: getErrorStatus in feed 429 check, fix reportSubject docs
- PostFeedErrorMessage read error?.status directly; only
  XrpcResponseError carries .status now, so route through
  getErrorStatus() like the rest of detectKnownError (also drops an
  oxlint no-unsafe-member-access suppression).
- reportSubject.ts docblocks contradicted each other about cid
  branding; l.CidString is a plain (unbranded) string alias, so the
  file docstring now says so and the strongRef comments agree.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:19:43 +03:00
Samuel Newman 8ee62d67bd finish phase 4: drop @atproto/api dependency, lex-only errors, delete toLex and legacy validators
oxlint-suppressions.json gains a baseline entry for webpack.config.js: the
file was never previously staged/linted (lint script covers src+modules
only), and editing it exposed its pre-existing violations to lint-staged.
All suppressed counts are pre-existing; this change only removes a line.
2026-07-30 18:18:38 +03:00
Samuel Newman 300a50b69a migrate runtime call sites to lex clients and sdk actions
Phase 3 tasks 3-7 (parallel wave): composer/post pipeline on
pdsClient/appviewClient with structural+instance blob guards and a golden
CID fixture test; chat Convo/EventBus/queries on the dedicated chat client;
preferences sugar to SDK actions on the PDS client; remaining state/queries
producers (usePostThread unspecced flip, video scoped-token clients,
notifications, starter packs, lists) to client.call; UI runtime sweep
(AtUri from @atproto/syntax, moderation fns from @bsky.app/sdk/moderation,
SDK RichText, ozone reason tokens, guard rewrites via #/types/bsky).

Intermediate checkpoint (hooks skipped): ~114 typecheck errors remain in
cross-boundary consumer files, resolved by the type-only codemod next.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:12:10 +03:00
Samuel Newman bf8b6bc0c7 rework session layer on PasswordSession + three-client pattern
- PasswordSession (@atproto/lex-password-session) is now the single auth
  core; SessionAgent bridges it to the base Agent from @atproto/api so
  the ~148 useAgent() consumer files keep working unchanged
- SessionBundle carries {session, agent, accountClient, appviewClient};
  useLexClient() now returns the authed appview client, new
  useAppviewClient()/usePdsClient() hooks
- reducer: OpaqueSessionBundle, new replaced-current-bundle action for
  network-free cross-tab same-did sync (PasswordSession is immutable, so
  the bundle is rebuilt instead of mutated in place)
- moderation: AtpAgent.configure -> Client.configure + Agent.configure,
  per-account labelers on both the bridge and the appview client
- push-token unregistration uses temporary PasswordSessions
- hard-tail migrations: SignupQueued refresh via resumeSession shim,
  useBeginAgeAssurance scoped-token raw Client, useAccountEmailState
  reads currentAccount
- PDS routing preserved on the no-network resume fast path by
  synthesizing a minimal didDoc from the persisted pdsUrl

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 18:06:58 +03:00
Samuel Newman 17c1ee4869 Handle PR OTA version mismatches and failures (#11330) 2026-07-30 07:40:49 -07:00
DS Boyce b4bad1187a Indicate if someone followed you via a starter pack (#11320) 2026-07-29 12:11:28 -07:00
DS Boyce e375ceb5b8 Update empty state for starter pack search (#11325) 2026-07-29 10:59:01 -07:00
DS Boyce a5f0e8839a Update trending topics UI (#11304) 2026-07-27 16:34:15 -07:00
DS Boyce 10b027c35b Sort follows and following behind gate (#11237) 2026-07-23 09:02:35 -07:00
DS Boyce f38f84e1a3 Enable sharing a post to a new group chat (#11191) 2026-07-22 15:54:46 -07:00
DS Boyce 8ca8176eb1 Update presentation of trending feeds (#11206) 2026-07-22 14:35:45 -07:00
DS Boyce cbf0d89128 Remove console.log, address lint (#11228) 2026-07-21 23:25:01 +03:00
DS Boyce 1803de03a4 Lighten blue (link) text for dim and dark themes (#11164) 2026-07-20 09:29:58 -07:00
RetroSunstar 54a1d81936 Remove success toast from Bookmark Button (#11054)
Co-authored-by: Eric Bailey <git@esb.lol>
2026-07-16 10:33:49 -05:00
DS Boyce a0c75944a3 Don't suggest retrying an unretryable error (#11159) 2026-07-15 11:27:19 -07:00
DS Boyce 3c5c11c002 Add setting for opting in to beta features (#11123) 2026-07-15 06:06:54 -07:00
DS Boyce 4778142ee8 Create primary tooltip variant (#11140) 2026-07-14 05:57:11 -07:00
Samuel Newman fa27d446d8 Migrate to Oxlint (#10384)
Co-authored-by: DS Boyce <260543580+ds-boyce@users.noreply.github.com>
2026-07-10 12:27:00 -07:00