Commit Graph

3436 Commits

Author SHA1 Message Date
Claude 6b69667567 Settle the compose pill: border follows the pill, less width change, light tint
- Blend the bar's top border away from the pill's own visibility rather than
  a per-screen border contribution. The latter was faded on a spring when a
  screen was popped, so the border flashed back mid-pop between two screens
  that both show the pill.
- Give the current label a small head start when picking the most present
  screen, so the two cannot trade places repeatedly as they cross.
- Grow the up-state side inset to 16pt so the pill changes width less on its
  way down to the safe-area inset.
- Add a half-strength tint to the clear glass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QoggCVt9XgpKbjrTZjoJD9
2026-09-07 22:09:59 +00:00
Claude 64ae8d201a Tune the compose pill: bar-attached gradient, clear glass, no scale
- Draw the fade behind the pill as part of the bottom bar, from transparent
  to the bar's background, so it meets the bar seamlessly and slides and
  fades with it instead of travelling with the pill.
- Sit the pill almost on the bar, as the thread prompt did.
- Use the clear glass style without a tint.
- Drop the scale and the drop-while-fading motion; the pill now only
  translates down into the bar's space, keeping its equal edge insets there.
- Sample each screen's presence directly in the registry instead of via a
  mirrored shared value per screen. The mirrors updated a frame apart, so the
  summed visibility dipped mid-transition between two screens that both show
  the pill, which read as a jitter.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QoggCVt9XgpKbjrTZjoJD9
2026-09-07 21:54:57 +00:00
Claude 6d455c9098 Replace the compose FAB with a Liquid Glass compose pill in the bottom bar
## Summary

- Remove the compose FAB, the new chat FAB, the "load latest" button and the
  Discover/Following inline composer prompt. The new chat entry point still
  needs a replacement.
- Add `features/composePrompt`: screens register a pill config (label,
  accessibility text, an `open` callback) and the bottom bar renders a single
  pill driven by that context. Registration follows the screen's presence, so
  the pill fades in and out with pushes, pops and swipe-back, and the label
  switches to whichever screen is most present mid-transition. The bar's top
  border hides while a pill is registered.
- The pill is a Liquid Glass view with `isInteractive`, toggling its glass
  style with the system animation as it comes and goes, with a gradient behind
  it that fades further than the thread version so content shows through the
  glass. It includes the camera and gallery buttons from the old feed prompt.
- When the bottom bar hides, the pill drops into the bar's space and scales
  down, inset equally from the left, right and bottom edges so its corners sit
  concentric with the device bevels; while the bar shows it hugs the edges.
- Home, Notifications, Feeds, custom feeds and lists open the composer; a
  profile pre-fills a mention as the FAB did; a thread opens the reply
  composer, including media picked from the pill.

## Test plan

- [ ] Home: pill above the bar; tap opens composer; camera/gallery open with media
- [ ] Home: scroll down hides the bar and the pill drops, shrinks and sits inset from the bevels; scroll up restores it
- [ ] Push a thread from Home: label crossfades to "Write your reply" mid-transition; tap opens the reply composer
- [ ] Thread with replies disabled: pill fades out on push and back in on pop
- [ ] Profile of another user: composer opens with their handle
- [ ] Search tab / Messages tab: pill fades out; pill fades back when returning
- [ ] Conversation screen: pill fades out while the bar slides away
- [ ] Android / iOS < 26: plain pill fallback fades in and out
- [ ] Mobile web: pill shows above the web bottom bar

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QoggCVt9XgpKbjrTZjoJD9
2026-09-07 21:25:55 +00:00
Claude 6671bd9f42 Fix stuck bottom bar on Home and use the Reanimated 4 spring curve
The header and bottom bar were being handed the same `withSpring()` animation
object. Animation objects carry their own state, so the second shared value
to receive it could stop partway, leaving the bar stuck half hidden after a
slow scroll on Home. Each shared value now gets its own animation.

Shell show/hide springs now share one config based on Reanimated 4's default
critically damped curve, with the perceptual duration shortened from 550ms to
400ms.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JWQciPDiipBhqiW922Nivs
2026-09-07 20:50:38 +00:00
Claude 2dc7071e7d Sync the bottom bar to screen transitions and scroll
## Summary

- Hook the bottom bar up to react-native-screens' transition progress. Every `Layout.Screen` now exposes a `presence` shared value (via `useScreenPresence`) that follows the native push/pop/swipe frame by frame, so screens with `minimalShell` hide and reveal the bar in sync with the transition instead of after it. Fixes the delayed tab bar when leaving a conversation.
- Replace the minimal-shell and hide-border refcounts with a small registry that sums 0..1 contributions on the UI thread. The bottom bar border now fades with the screen rather than toggling.
- Bring back the scroll-linked bottom bar on Home (removed in #5203). The header and footer share the same drag-linked value, and the bar is revealed on feed change, blur, and app foreground so badges aren't missed. Web included.

## Test plan

- [ ] Swipe back from a conversation: bar tracks the swipe, including a cancelled swipe
- [ ] Back button from a conversation: bar animates with the pop
- [ ] Push a profile over a conversation and pop back
- [ ] Post thread: bottom bar border fades in/out with the screen
- [ ] Home: scroll down hides header and bar together, scroll up shows them
- [ ] Home: scrolled down, swipe into a convo and back - no jump
- [ ] Home: bar reappears on feed switch, on leaving Home, and on foregrounding the app
- [ ] Deep link / notification into a conversation from another tab
- [ ] Mobile web: bar hides/shows on scroll and on conversation screen
- [ ] Rapid swipe-back and swipe-back while scrolling (software-mansion/react-native-reanimated#9402, software-mansion/react-native-screens#2659)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JWQciPDiipBhqiW922Nivs
2026-09-07 19:43:30 +00:00
Tomasz Zawadzki 52345ad3ca Use useEffectEvent for effects with deliberately narrow deps (#11550)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-07 03:18:08 -07:00
Spence Pope ee32926ed5 Restore expanded post styles (#11668)
Co-authored-by: Eric Bailey <git@esb.lol>
2026-09-04 22:23:54 -05:00
DS Boyce e595243b1f Add more data to trending metrics (#11565) 2026-09-04 16:11:20 -07:00
DS Boyce edcd363fcb Use title case for Starter Pack (#11653) 2026-09-03 12:26:51 -07:00
Samuel Newman 58ca227922 APP-2977: Handle AppView polling errors (#11590) 2026-09-03 01:00:56 +03:00
Samuel Newman 457b2be680 APP-2997: Handle age assurance data load failures (#11612)
Co-authored-by: Eric Bailey <git@esb.lol>
2026-09-02 11:35:14 -07:00
DS Boyce e08bcd0228 Create moderation inbox reports list (#11570) 2026-09-02 10:02:21 -07:00
DS Boyce 701d7c4659 Fix localization for Following and Discover feed names (#11572) 2026-09-02 09:24:34 -05:00
DS Boyce 2ffa02c82a Fix post view attribution for feed replies (#11622) 2026-09-01 13:59:31 -07:00
Samuel Newman 35705ff8bf Fix bottom sheet content width on Android tablets (native-owned canvas sizing) (#11396) 2026-09-01 17:04:08 +03:00
DS Boyce 96e6baa47b Stabilize native composer focus (#11624) 2026-08-31 21:54:13 -07:00
Eric Bailey c634d9b1be Revert "APP-2974: Avoid composer layout animations"
This reverts commit 2e08b90837.
2026-08-31 18:59:01 -05:00
Eric Bailey 2e08b90837 APP-2974: Avoid composer layout animations 2026-08-31 18:58:25 -05:00
Tomasz Zawadzki bfde8e60c2 Unblock React Compiler for 5 components by removing render-phase mutation (#11543)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2026-08-31 23:03:13 +02:00
DS Boyce 0a00392b65 Swap order of Keep editing and Discard buttons (#11606) 2026-08-31 11:52:56 -07:00
DS Boyce 0f121427fb Preserve composer focus when adding thread posts (#11605) 2026-08-31 09:37:55 -07:00
Spence Pope 4495462f84 Add known likers to feed posts (#11595) 2026-08-31 10:56:30 -04:00
Tomasz Zawadzki f9cf58ea44 Unblock React Compiler for 23 components across ten small causes (#11542)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-31 06:49:57 -07:00
Tomasz Zawadzki 8bf5696d3c Unblock React Compiler for 18 components with value blocks inside try (#11548)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-31 06:47:42 -07:00
Samuel Newman 89509073f5 Remove Live Now new-feature nudge (#11604) 2026-08-31 06:09:30 -07:00
Samuel Newman e39d308fb7 APP-2976: Remove react-native-compressor remnants (#11588) 2026-08-28 08:25:53 -07:00
Samuel Newman 41f2d203c3 Handle AppView errors after quote posts (#11579) 2026-08-27 11:06:58 -05:00
rafael cfd6d1e07e Fix pagination (#11448)
Co-authored-by: Eric Bailey <git@esb.lol>
2026-08-27 10:35:38 -05:00
Tomasz Zawadzki 296b74d781 Unblock React Compiler for 13 components by hoisting finally blocks (#11540)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-27 08:06:01 -07:00
Samuel Newman a9c502c8cf Remove multipart upload and 10-minute video feature gates (#11528)
Co-authored-by: Claude <noreply@anthropic.com>
2026-08-25 14:38:33 -07:00
DS Boyce f968c9e721 Add OP thread numbering to feed posts (#11472) 2026-08-25 11:48:27 -07:00
Samuel Newman f87fdd2ea2 Enable React Native strict TypeScript API (#11459) 2026-08-25 09:40:14 +03:00
DS Boyce 6f46927c28 Overfetch trending topics before filtering (#11477) 2026-08-24 11:39:46 -07:00
Spence Pope 5e01a6c7ee Explain trending topics in options menu (#11521) 2026-08-23 20:23:38 -04:00
Tomasz Zawadzki a892057e29 Fix "Tried to synchronously call a Remote Function" crash (#11517)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 17:56:50 +02:00
Samuel Newman 11c80a1fbd Fix profile handle resolution errors (#11503) 2026-08-19 07:34:45 -07:00
Tomasz Zawadzki 0e04159335 Unblock React Compiler for PostFeed (#11451)
Co-authored-by: Oleksii Bulenok <oleksii.bulenok@swmansion.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-19 06:28:53 -07:00
Oleksii Bulenok 45aa1a67b0 Expo 57 (#11334)
Co-authored-by: Tomek Zawadzki <tomekzawadzki98@gmail.com>
Co-authored-by: vineyardbovines <spencerfpope@gmail.com>
2026-08-18 10:46:11 -04:00
Spence Pope 7f59d8fcfb APP-2859 Add web list performance telemetry (#11486) 2026-08-18 09:26:50 -04:00
Spence Pope df3cea1c78 APP-2884: Avoid base64 reads for web videos (#11493) 2026-08-18 09:26:26 -04:00
Oleksii Bulenok e87ec032cd Truncate gif alt text to 2000 symbols (#11488) 2026-08-18 11:29:23 +02:00
Samuel Newman 70195d7059 Drop accidental eslint dependency (#11460) 2026-08-14 00:21:52 -07:00
Samuel Newman bb33eb91cb [SDK] Use finalised package (#11398) 2026-08-13 12:26:23 -07:00
Samuel Newman 3677c98873 [SDK] Validate and brand the persisted account did (#11387)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 12:26:22 -07:00
Samuel Newman 9fe0084874 [SDK] Remove @atproto/api (#11386)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 12:26:22 -07:00
Samuel Newman 54da80dfb0 [SDK] Delete the bridge agent and rework the session bundle onto lex clients (#11385)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 12:26:22 -07:00
Samuel Newman 59d2bf09d7 [SDK] Swap moderation to @bsky.app/sdk and move labeler config to Client statics (#11383) 2026-08-13 12:26:21 -07:00
Samuel Newman a4f2811f39 [SDK] Add refreshSession and migrate the session-pinned infra (#11381)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 12:26:20 -07:00
Samuel Newman 0c93d1e416 [SDK] Migrate the post pipeline and blob uploads (#11380)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 12:26:20 -07:00
Samuel Newman ca226f589d [SDK] Migrate the gate records to raw repo calls on the pds client (#11378)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 12:26:19 -07:00