* Remove remaining usages of old post thread query
* Add PostThreadContext, cache mutator for threadgates on threads, pipe it through
* Replace getPostThread in threadgate query
* Replace in initQuote handling, which isn't even used rn...
* Missing import
* Revert ext change
* the reply button should open the replies to a post, not present a text input for you to enter your Big Thought into. i think a lot of people don’t even realize that the point has already been written
* Feature gate, fix event
---------
Co-authored-by: Eric Bailey <git@esb.lol>
When the user clicks the search button next to "Discover New Feeds" or "Suggested Accounts" on the Explore page, we'll auto-select the respective search results tab (feeds or users).
* use 16kb-compatible fork of react-native-mmkv
* avoid using package alias
* specify ndk version
* Revert "specify ndk version"
This reverts commit 577393518e.
* add compiler flags to mmkv build (bump version)
* move fork to bsky repo/npm org
* Rip out the network hack in favor of bluesky-social/atproto#4238
* Bump api pkg
* Debug code
* Revert "Debug code"
This reverts commit 38445f31f4.
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* tighten eslint config to catch unused `useLingui`s
* fix now-invalid uses of _
* remove unused function that produces a ton of eslint warnings
* upgrade react compiler plugin
* feat: don't retain accepted language suggestion after finishing or exiting post (#8886)
* feat: don't retain accepted language suggestion after finishing or exiting post
* fix: rebase fixes
* fix: rebase fixes
* chore: lint
* Rename onChange for clarity
* Improve logic in composer
* Handle user override more explicitly
* Drill in onSelectLanguage callback into dialog too
* Fix typo
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* Make text crystal clear
* Handle multiple languages
---------
Co-authored-by: Elijah Seed-Arita <elijaharita@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* constraint video max height to 14/9
* Apply new default to web video embed too
* Retain web handling
* Rename prop for clarity
* Align no-crop handling on native/web
* make it always constrained
---------
Co-authored-by: Eric Bailey <git@esb.lol>
Enable rich link previews when feed URLs are shared in iMessage, Slack, and other social platforms. Adds feed title, description, creator info, and avatar images to improve sharing experience.
* Translation comment
* Fix error handling in starter pack generation
* Allow access to DM settings for age restricted users
* Leave post stat unit formatting up to translators
* tweak string in BlockedGeoOverlay.tsx
* tweak string in AgeAssuranceAccountCard.tsx
* tweak string and labels in DeviceLocationRequestDialog.tsx
* prettier
* add missing `.` in DeviceLocationRequestDialog.tsx
* Adds welcome modal to logged-out homepage
* Adds metrics and feature gate for welcome modal
* Slightly smaller text for mobile screens to avoid wrapping
* Remove unused SVG
* Adds text gradient and "X" close button
* Fix color on "Already have an account?" text
* tweak hooks, react import
* rm stylesheet
* use hardcoded colors
* add focus guards and scope
* no such thing as /home
* reduce spacign
* use css animations
* use session storage
* fix animation fill mode
* add a11y props
* Fix link/button color mismatch, reduce gap between buttons, show modal until user dismisses it
* Fix "Already have an account?" line left-aligning in small window sizes
* Adds "dismissed" and "presented" metric events
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Previously, pins were included for both 'posts_with_replies' and
'posts_and_author_threads' filters. This change restricts pin inclusion
to only the 'posts_and_author_threads' filter, ensuring correct feed
behavior and reducing unnecessary data in other filter modes.
* get e2e image picker working
* verify create account actually reaches onboarding
* wait for image to actually be attached before posting
* wait until login finishes before moving on
* sign out before switch accounts then wait until logged in
* disable onboarding experiments in e2e
* add testId to handle availability checkmark
* fix too long username
* update thread muting test to reflect current behaviour
* hackfix for the british english translation
* unflake the onboarding tests
* fix curate list flow
* admit defeat on the most list one
* Bump picker, add patch for next version
* Revert "Bump picker, add patch for next version"
This reverts commit a4aab0bdcd.
* Update to latest picker@next
* add context in VerificationsDialog.tsx
* add context in VerifierDialog.tsx
* add context in VerificationSettings.tsx
* add context in EditProfileDialog.tsx
* add context and tweak label in ChangeHandleDialog.tsx
* tweak label in ContentHider.tsx
Replaces NoSnippetWrapper with a dataSet prop on the root View to
control the nosnippet attribute for discover feeds. This simplifies the
component structure and improves maintainability by reducing unnecessary
wrappers.
* [APP-1303] Redesign/refactor post language select (#8884)
* Nightly source-language update
* Nightly source-language update
* [APP-1303] Redesign/refactor post language select
* update: stylesheets.create to use the latest structure
* update styles to modern structure
* update: dialog breakpoints on web and delete depricated language modals
* remove unused post languages settings dialog
* restructure Post languages dialog
* place the Dialog.Close inside the Dialog.ScrollableInner
* add: language search
* update search and language variables for clarity
* fix: memoize language state lists
* chore: add comments
* update proper colors to the background
* add back older error boundary
* add: tweaks to the mobile and web responsiveness
* add tweaks to center the container
* update labels
* update button and border
* added translation updates
* Update: text input to reuse search input
* remove unused file
* update: web breakpoints
* run eslint and prettier
---------
Co-authored-by: Elijah Seed-Arita <elijaharita@gmail.com>
Co-authored-by: Anastasiya Uraleva <anastasiya@Anastasiyas-MacBook-Pro.local>
Co-authored-by: Anastasiya Uraleva <anastasiya@Mac.localdomain>
* rm old file
* sort out styles, add FlatListFooter component
* rm cancel button in favor of search input X
* get dialog height working on iOS
* delete `DropdownButton`
* hide scroll indicators on android
* ios scroll indicator insets
* get footer sorta working on android
* change button color on press
* rm empty file
---------
Co-authored-by: Anastasiya Uraleva <anastasiyauraleva@gmail.com>
Co-authored-by: Elijah Seed-Arita <elijaharita@gmail.com>
Co-authored-by: Anastasiya Uraleva <anastasiya@Anastasiyas-MacBook-Pro.local>
Co-authored-by: Anastasiya Uraleva <anastasiya@Mac.localdomain>
* Split out into macro component
* Add Action component
* Add fallback
* add button to view post after sending
* Dismiss toast when clicking action button
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* update vite+typescript
* update atproto api to latest, split out utils
* add checkmark to post
* add checkie to embed
* revert change to example post
* fix ext link color
* Delete root PostThread component
* Remove PostThreadItem, migrate DebugMod to use new components
* Remove other unused components
* Move PostThreadFollowBtn to new home
* Move PostThreadComposePrompt to new home
* Remove gate
* Keep naming in DebugMod
* rm v1 prefs
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
- Rename filter from 'canonical' to 'canonicalize_url' to follow Pongo2
naming conventions
- Update function name from filterCanonical to filterCanonicalizeURL
- Update template usage in post.html and profile.html
- Update test function name and all references
Refactored the "See more accounts you might like" card to use ButtonIcon
and ButtonText for improved consistency and accessibility. Updated
styles for better alignment, spacing, and visual hierarchy. Navigates to
the Explore page when pressed.
Use canonical filter on requestURI in canonical link tag while preserving
original URL with parameters for og:url metadata. This provides clean
canonical URLs for search engines while maintaining full Open Graph URLs.
Uses canonical filter for canonical link tags while preserving original URLs with parameters for og:url metadata, improving SEO through proper URL canonicalization
Addresses community feedback about canonical URLs being misleading
when they include UTM parameters. The new Pongo2 filter creates
clean canonical URLs while preserving tracking parameters for
social sharing.
Updated ViewMoreCard to use a Button component instead of a styled View
for the 'View more' action. This improves accessibility and consistency
with other interactive elements in TrendingVideos.
Moved the 'View more' card logic into a separate ViewMoreCard component
for better separation of concerns and readability.
Updated imports to use named React hooks instead of React namespace. To
modernise this old component per the new guidelines.
Some browsers exit fullscreen when the escape key is pressed without `preventDefault()` being called; we don't want that when we're handling the press ourselves.
* Integrate Sonner for toasts
* Fix animation on iOS
* Refactor API
* Update e2e file
* [APP-1318] Post composer: combine image & video buttons (#8710)
* add: select media btn
* udpate: compose post with combined image and video support
* add: video combine button with edge cases
* add select media btn
* test: select media btn
* add: media button update
* remove unused files and update toast on android
* update: make strings shorter
* add: ValidatedVideoAsset type
* update link comments and add toast support for native and web
* rebase latest toast and update toast structure
* remove unused prop
* fix types
* undo changes to yarn.lock
* remove: support for mkv files
* update: eslint and prettier
(cherry picked from commit f69779ee130f07e1c49219b53117e3bdd1a9f81b)
* Add missing props to launchImageLibraryAsync
(cherry picked from commit 2e80ae561fd66850f787cac0aae0fa5a6980f8f5)
* Rough out new approach
(cherry picked from commit 9add225160e7e407befc73e9cdd9743a30cdf1cd)
* Comments and cleanup
(cherry picked from commit e69bd186e7335372f440c446ae6643ed0fb15db9)
* Handle native case
(cherry picked from commit 74e38acdfd9181d0557426691fcbcbf0800481ca)
* Refactor
(cherry picked from commit 68aea496db8df54dba5f58da267ad962c28ef995)
* Rename
(cherry picked from commit 8609e59ad14219e7378ee6cb9514d633ce7efc27)
* Cleanup, comments
(cherry picked from commit 6c9c98648e37257285a9c8caeb1eadcc56c81402)
* Rename
(cherry picked from commit 66e3db539d5baa41436c9e49af06e87a78e9e7e1)
* Handle selectionLimit on Android
(cherry picked from commit 251f06dd5e65a7083b810bad3d81114b2fe9ab39)
* create composer images in parallel
(cherry picked from commit 70ea79d9d76d99e9c99a7d2296caed84c718650e)
* Update toast API usage
(cherry picked from commit e370018b8ed8cdfd7675c9634058c72cb59d39de)
* Ensure once one type of media is selected, you can only select more of that type
(cherry picked from commit 1a9e6e0cdb5234667f08e3dd9107ae598941fc23)
* Remove TODO and debug code
* Add more descriptive a11y label to button
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* Add back post success toast
* Include mimeType in toast error
* Remove unneeded toast
* Clarify hint
* Typo
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* allow gifs on native, just treat as images
* disable haptic toast
* allow gifs on native, treat as videos
* only do keyboard dismiss on native
* tweak pasting logic
* hide web scrubber in certain situations
* Update MaxImages translation
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* Add plural formatting to a11y hint translation
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* fix suggestion
* Protect against no valid assets selected
* Handle conversion of too-big assets on web
* Reorder
* Bump expo-image-picker to include bug/perf improvements
See https://github.com/expo/expo/blob/main/packages/expo-image-picker/CHANGELOG.md#1700--2025-08-13
* Handle edge case validations
* Ok actually bump expo-image-picker
* Comment
* HEIC support Android
* Fix handling for new picker version, improve size validation
* Remove getVideoMetadata handling, no longer needed
* Handle web video duration
* Update src/view/com/composer/SelectMediaButton.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
---------
Co-authored-by: Anastasiya Uraleva <anastasiyauraleva@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* set size=small buttons to `text_sm`
* change to `leading_snug`
* add gap to repost buttons
* Add medium-weight font, use for buttons (#8819)
* add medium weight inter
* add medium font to buttons
* Adjust bold weights
* Fix ref
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Align with designs
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* add context and comment for translators to button text in email verification dialog
* shorten comment
* add comment for other string
* tweak comment
* tweak again
* use intents to translate text on android
* clean up config plugins
* restore day night plugin
just to be safe
* leave a comment for why we can't open translate directly
* add todo
* fix lockfile lint
* check handle as you type
* metrics
* add metric types
* fix overflow
* only check reserved handles for bsky.social, fix test
* change validation check name
* tweak input
* move ghosttext component to textfield
* tweak styles to try and match latest
* add suggestions
* improvements, metrics
* share logic between typeahead and next button
* Apply suggestions from code review
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* update checks, disable button if unavailable
* convert to lowercase
* fix bug with checkHandleAvailability
* add gate
* move files around to make clearer
* fix bad import
* Fix flashing next button
* Enable for TF
---------
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Eric Bailey <git@esb.lol>
* Only enable policy update overlay once the actual Overlay mounts (after onboarding and all that)
* Disable policy overlay in e2e
* Add comments
* Add extra insurance
* Rm log
* Fix shared prefs test
* Fix login flows by optionally closing 'Remember password' system dialog
* Return missing testID
* Bump dev-env
* Only enable policy update overlay once the actual Overlay mounts (after onboarding and all that)
* Disable policy overlay in e2e
* Add comments
* Add extra insurance
* Rm log
* Rm gradient buttons from Storybook
* TEMP move storybook button section
* Remove gradient_sky
* Remove actual defs for gradient_sky and gradient_primary
* Remove other gradient defs
* Remove gradient support entirely
* Deprecate 'variant' in favor of 'color'
* Fork base styles codepath to make variant deprecation more obvious
* Remove text styles for when no color is set, never been used
* Fork text styles codepath to make variant deprecation more obvious
* Revert temp storybook commit, remove deprecated values
* Replace remaining gradient button usage
* Update Buttons storybook section
* Update tiny styles
* Update small styles
* Update large sizes
* Ensure proper alignment of buttons in storybook
* Update button colors
* Rename negative_secondary to negative_subtle
* Remove unnecessary select()
* Update icon size and gap
* Update negative_subtle styles
* Custom button colors
* Add borderCurve
* update: toast colors for accessibility
* update: toast color codes from figma
* condense the colors to remove select calls that are unecessary
* remove unused select
* Revert "[APP-1083] bug fix: videos not accurately autoplaying on web (#8692)"
This reverts commit 9aa35e9fbb.
* fix overflow hidden breaking the video viewport observer
* update: auto play video on web with intersection position
* place back the threshold: 0.5
* update: optimize the intersection observer with a throttled scroll listener
---------
Co-authored-by: Anastasiya <anastasiya@Mac.localdomain>
Co-authored-by: Anastasiya <anastasiya@Anastasiyas-MacBook-Pro.local>
* Rm gradient buttons from Storybook
* TEMP move storybook button section
* Remove gradient_sky
* Remove actual defs for gradient_sky and gradient_primary
* Remove other gradient defs
* Remove gradient support entirely
* Deprecate 'variant' in favor of 'color'
* Fork base styles codepath to make variant deprecation more obvious
* Remove text styles for when no color is set, never been used
* Fork text styles codepath to make variant deprecation more obvious
* Revert temp storybook commit, remove deprecated values
* Replace remaining gradient button usage
* Reorg
* Move animation into css file
* Update style comment
* Extract core component, use platform-specific wrappers
* Pull out platform specific styles
* Just move styles into Toast component itself
* Rename cleanup
* Update API
* Add duration optional prop
* Add some type docs
* add exp eased slide aniamtions
* Make toasts full width on mobile web
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* Clean up env files
* Use new env in Sentry setup file
* Use new env in Bitdrift setup file
* Use new env in chat proxy header
* Prefix Bitdrift key with EXPO_PUBLIC
* Deprecate SENTRY_RELEASE since we use package.json now
* Use existing EXPO_PUBLIC_BUNDLE_IDENTIFIER short commit has as Sentry dist value
* Fix missing bundle identifier for Render deploys
* Deprecate SENTRY_DIST in favor of EXPO_PUBLIC_BUNDLE_IDENTIFIER
* Prefix SENTRY_DSN with EXPO_PUBLIC to match others
* Remove debugging field
* Replace NODE_ENV in places where its safe
* Self review
* Properly patch Sentry package
* Echo variables to .env in Dockerfile instead of passing to shell script
* Make sure EXPO_PUBLIC_ENV is set for web container builds
* Update IS_TESTFLIGHT to include testflight-android
* Slice bundle hash to match other platforms, needed for render.com deployments
* [APP-1331] Migrate `app-info` to new env (#8703)
* Move env files into directory with platform specific files
* Migrate usages of app-info to new env
* Fix bad import
* Update BUNDLE_DATE format comment
* Trim RENDER_GIT_COMMIT to first 7 to match --short sha
* Clarify build process env vars and ensure they are explicitly passed in
* Revert Sentry patch as a result of prev commit
* Update webpack Sentry dist value based on prev commits
* Add PACKAGE_VERSION and replace in statsig to fix conflict
* Fix render substitution syntax
* Remove invalid syntax
* Remove unnecessary testflight check
* Just use long commit hash
* Slice full hash for display in app
* Fix missing space in ios workflow
* Pass in sentry CLI env vars, align matching values
* Align on RELEASE_VERSION
* Add new env setup to missed OTA spot
* Update webpack to use same SENTRY_RELEASE var
* Just fallback to package version for Render deploys
* Remove TF check for BUNDLE_DATE
* Set EXPO_PUBLIC_ENV for bundle update
* Consistent naming "Env"
* Add comment
* Use RELEASE_VERSION instead of package.json
* Update PR comment CI
* make sure request is fetched before returning true
* Ensure preferences object skips equality checks if overridden
---------
Co-authored-by: Eric Bailey <git@esb.lol>
Changed the TrendingVideos dismiss button to use solid variant and
square shape for improved visibility. Also set ButtonIcon size to "sm"
for better alignment with the new button style.
Reduced top padding from large to small and updated horizontal padding
handling for the TrendingVideos component. Increased card gap and snap
interval from small to medium.
Added a border and low contrast border color to CompactVideoPostCard,
CompactVideoPostCardPlaceholder, and TrendingVideos card components for
improved visual separation.
Added a small shadow (shadow_sm) to the CompactVideoPostCard and the
"View more" card in TrendingVideos for improved visual depth and
consistency. This enhances the card appearance and aligns with the
design system.
Added overflow_hidden to the main container and set overflow_visible on
the FlatList to ensure proper display of horizontally scrolling cards.
This resolves clipping issues and improves the visual layout of trending
videos.
Added the `overflow_visible` atom to the atoms utility object for
setting CSS overflow to 'visible'. This complements the existing
`overflow_hidden` atom and improves flexibility for layout styling.
* replace resumeSession with getSession
* copy lil type tweak from the other PR
* Add partialRefreshSession to session API context, use session state to infer state further down tree
* Review
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* feat(ui): add showLikeCount flag to CompactVideoPostCard
Introduced a showLikeCount flag to control the display of like count in
the CompactVideoPostCard component. The like count is now only shown if
both likeCount > 0 and showLikeCount are true. This allows for more
flexible UI configurations and easier toggling of like count visibility.
* fix(ui): hide gradient shadow when hiding like count
* fix(ui): increase trending video profile pic size from 20 -> 24
* fix(ui): add small drop shadow to trending video profile pic
* fix(ui): a.shadow_sm -> t.atoms.shadow_sm based on PR feedback
"Following" has different translations as a name of a feed and the state of following someone in other languages like Turkish. This allows "Following" as a feed name translated correctly.
(cherry picked from commit d92a7f163ed9e28ee4ebab230758b1f00bdd9966)
Co-authored-by: Sedat Kapanoğlu <sedat@kapanoglu.com>
The colons in file names break Windows compatibility and prevent Bluesky from being developed on Windows. (Regression: Bluesky Git repository always shows missing files on Windows #8263)
* add getInitialURL
* get deep linking working
* actually handle as push instead
* push to route instead of setting initial path
* pop to on top of notifications
* fix comment
* change chat-message handling
* add metrics
* don't reopen due to notif multiple times
* extract data from notification differently on android
* sorry sorry annoying naming nits, align logger
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* fix quote padding not being pressable
* fix list padding not being pressable
* Fix unnecessary loading of feeds (#8578)
* stop layout shifts in feed loading
* don't load feed data if we already have it
* adjust styles, alf stuff
* remove unused button, massively simplify
* fix layout shifting in notifs
* use feedcard for feed post embeds
* use bold text to match other style
* use Link component rather than jank Pressable
* prevent nested anchors in notifs
* match following text size
* add space between content hider
* Better dead feed handling (#8579)
* add space between content hider
* add handling for feeds that fail to load
* cleanError, in case of network funkiness
* handle deleted lists
* split out missingfeed
* Working overlay, WIP
* Ok working with no overlay and global gesture handler
* Ok pretty good on native
* Cleanup
* Cleanup
* add animation
* add transform origin to animation
* Some a11y
* Improve colors
* Explicitly wrap gesture handler
* Add easier abstraction
* Web
* Fix animation
* Cleanup and remove provider
* Include demo for now
* Ok diff interface to avoid collapsed views
* Use dimensions hook
* Adjust overlap, clarify intent of consts
* Revert testing edits
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* Temp ignore a couple logs
* Add debug for unknown notifications
* Nvm let's do this in Sentry
* Downgrade two DMs network related issues
* Check for network errors before sending in Convo
* Do the same for event bus
* Fix mistake
* Move all dialogs within NavigationContent on native
* Ok leave old ModalsContainer alone for now
* Do the same on web
* Gate browser consent dialog just to be clear
* use button instead of TextLink for show more
* Match post text size, provide interaction feedback
* Move to new Post components dir
* Prettier
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* add hover to anchor display name / handle
* use newer link component
* Wrap using a single hover element
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Direct port of embeds to new arch
(cherry picked from commit cc3fa1f6cea396dd9222486c633a508bfee1ecd6)
* Re-org
* Split out ListEmbed and FeedEmbed
* Split out ImageEmbed
* DRY up a bit
* Port over ExternalLinkEmbed
* Port over Player and Gif embeds
* Migrate ComposerReplyTo
* Replace other usages of old post-embeds
* Migrate view contexts
* Copy pasta VideoEmbed
* Copy pasta GifEmbed
* Swap in new file location
* Clean up
* Fix up native
* Add back in correct moderation on List and Feed embeds
* Format
* Prettier
* delete old video utils
* move bandwidth-estimate.ts
* Remove log
* Add LazyQuoteEmbed for composer use
* Clean up unused things
* Remove remaining items
* Prettier
* Fix imports
* Handle nested quotes same as prod
* Add back silenced error handling
* Fix lint
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* lift up useFullscreen, hide mediainsetborder when fullscreen
* Revert "lift up useFullscreen, hide mediainsetborder when fullscreen"
This reverts commit 66b1765719.
* just move border outside of div that gets fullscreened
* WIP
* Sorting working
* Rough handling of hidden/muted
* Better muted/hidden sorting and handling
* Clarify some naming
* Fix parents
* Handle first reply under highlighted/composer
* WIP RaW
* WIP optimistic
* Optimistic WIP
* Little cleanup, inserting dupes
* Re-org
* Add in new optimistic insert logic
* Update types
* Sorta working linear view optimistic state
* Simple working version, no pref for OP
* Working optimistic reply insertions, preference for OP
* Ensure deletes are coming through
* WIP scroll handling
* WIP scroll tweaks
* Clean up scrolling
* Clean up onPostSuccess
* Add annotations
* Fix highlighted post calc
* WIP kill me
* Update APIs
* Nvm don't kill me
* Fix optimistic insert
* Handle read more cases in tree view
* Basically working read more
* Handle linear view
* Reorg
* More reorg
* Split up thread post components
* New reply tree layout
* Fix up traversal metadata
* Tighten some spacing
* Use indent ya idiot
* Some linear mode cleanup
* Fix lines on read more items
* Vibe coding to success
* Almost there with read mores
* Update APIs
* Bump sdk
* Update import
* Checkpoint new traversal
* Checkpoint cleanup
* Checkpoint, need to fix blocked posts
* Checkpoint: think we're good, needs more cleanup
* Clean it up
* Two passes only
* Set to default params, update comment
* Fix render bug on native
* Checkpoint parent rendering, can opt for slower handling here
* Clean up parent handling, reply handling
* Fix read more extra space
* Fix read more in linear view
* Fix hidden reply handling, seen count, before/after calc
* Update naming
* Rename Slice to ThreadItem
* Add basic post and anchor skeletons
* Refactor client-side hidden
* WIP hidden fetching
* Update types
* Clean up query a bit
* Scrolling still broken
* Ok maybe fix scrolling
* Checkpoint move state into meta query
* Don't load remote hidden items unless needed
* skeleton view
* Reset hidden items when params change
* Split up traversal and avoid multiple passes
* Clean up
* Checkpoint: handling exhausted replies
* Clean up traversal functions further
* Clean up pagination
* Limit optimistic reply depth
* Handle optimistic insert in hidden replies
* Share root query key for easier cache extraction
* Make blurred posts not look like ass
* Fix double deleted item
* Make optimistic deleted state not look like crap in tree view
* Fix parents traversal 4 real
* Rename tree post
* Make optimistic deletions of linear posts not look bad
* Rename linear post components
* Handle tombstone views
* Rename read more component
* Add moreParents handling
* Align interaction states of read more
* Fix read more on FF
* Tree view skeleton
* Reply composer skele
* Remove hack for showing more replies
* Checkpoint: sort change scrolling fixed
* Checkpoint: learned new things, reset to base
* Feature gate
* Rename
* Replace show more
* Update settings screen
* Update pkg and endpoint
* Remove console
* Eureka
* Cleanup last commit
* No tests atm
* Remove scroll provider
* Clean up callbacks, better error state
* Remove todo
* Remove todo
* Remove todos
* Format
* Ok I think scrolling is solid
* Add back mobile compose input
* Ok need to compute headerHeight every time
* Update comments
* Ok button up web too
* Threads v2 tweaks (#8467)
* fix error screen collapsing
* use personx icon for blocked posts
* Remove height/width
* Revert unused Header change
* Clarify code
* Relate consts to theme values
* Remove debug code
* Typo
* Fix debounce of threads prefs
* Update metadata comments, dev mode
* Missed a spot
* Clean up todo
* Fix up no-unauthenticated posts
* Truncate parents if no-unauth
* Update getBranch docs
* Remove debug code
* Expand fetching in some cases
* Clear scroll need for root post to fix jump bug
* Fix reply composer skeleton state
* Remove uneeded initialized value
* Add profile shadow cache
* Some metrics
* prettier tweak
* eslint ignore
* Fix optimistic insertion
* Typo
* Rename, comment
* Remove wait
* Counter naming
* Replies seen counter for moderated sub-trees
* Remove borders on skeleton
* Align tombstone with optimistic deletion state
* Fix optimistic deletion for thread
* Add tree view icon
* Rename
* Cleanup
* Update settings copy
* Header menu open metric
* Bump package
* Better reply prompt (#8474)
* restyle reply prompt
* hide bottom bar border for cleaner look
* use new border hiding hook in DMs
* create `transparentifyColor` function
* adjust padding
* fix padding in immersive lpayer
* Apply suggestions from code review
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* Integrate post-source
(cherry picked from commit fe053e9b38395a4fcb30a4367bc800f64ea84fe9)
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* Implemented #2406: Instant Feed Update on Mute or Moderation Action
Posts from muted or blocked users are now removed immediately from
the feed. This is achieved by extending the usePostShadow hook to
check if the post author is muted or blocked and return
POST_TOMBSTONE accordingly.
A unit test was also added to validate the new logic.
Co-authored-by: Pedro Macedo <pedrosantosmacedo@tecnico.ulisboa.pt>
* remove useless tests
---------
Co-authored-by: Pedro Macedo <pedrosantosmacedo@tecnico.ulisboa.pt>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* add pwi warning to share menu, remove prompt
* add pwi label to web, remove prompt
* add an option to the PWI menu
* conditionally reorder items on web
* move post ctrls to #/components
* restructure post controls, basic share menu
* add border radius to searchable people list for android
* Revert "add border radius to searchable people list for android"
This reverts commit 417449086e25b82f5683b12f6405d972f48ce50e.
* add copy link to native share menu
* reorg files again
* open native share menu on long press
* Translation comments
Thanks @surfdude29
* abs path
* update type imports, remove forwardRef
* rm react import
* equal spacing of buttons, extract disco debug
* add better icon
* add right offset to share button for visual alignment
* Add recent chats to share menu (#7853)
* add recent chats to share menu
* Update RecentChats.tsx
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* Update RecentChats.tsx
* add fading edge on andriod
* tweak scrollview
* Add metrics and A/B alt icon to share menu (#8401)
* add metrics
* add a/b tested alt icon
---------
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
* More descriptive share text/icon on web (#7854)
* more descriptive share text on web
* revert dev mode changes
* add missing import
* use modified share icon everywhere
* Add back conflicting changes
---------
Co-authored-by: Eric Bailey <git@esb.lol>
---------
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
* radix select component on web
* native implementation (wip)
* fix sheet height/padding
* tone down web styles
* react 19 cleanup
* replace primary language select
* change style on native
* get auto placeholder working
* more style tweaks
* replace app language dropdown
* replace rnpickerselect with native select
* rm react-native-picker-select dependency
* rm placeholder, since a value is always selected
* docblock for renderItem
* add more docblocks
* add style prop to item
* pass selectedValue through renderItem
* fix context
* Style overflow buttons
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* use binary search for compressImage
* use binary search for doResize (mobile version)
* use binary search for doResize (web version)
* use safeDeleteAsync in compressImage
---------
Co-authored-by: nguyen <nguyensvo123@gmail.com>
* add stateful dialog control hook
* add new alf'd consent
* make secondary_inverted buttons clearer
* contingency for opening a link from another dialog
* rm old modal
* Differentiate buttons more
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* keep all radix deps aligned by using single package
* import directly from `radix-ui` or `radix-ui/internal`
* prevent radix leaking into native build
* Prevent issuing verifications for users without display names
* Wait for success before closing, show errors
* Update icons
* WIP adjust size
* Adjust check size in feeds
* Add back unused icon
* Format
* WIP
* Alignment with icon
* Add create/remove prompts
* Fill out check dialog a bit
* Reorg
* Handle was verified state
* Add warning to edit profile
* Add warning to handle dialog
* Decent alignment in posts on all platforms
* Refactor alignment for posts, chatlist, hover card
* Disable on profile
* Convo header
* Compute simple verification state
* Add other icon, rename, integrate
* Swap in simple state for profile edits
* Clean up utility hooks
* Add verifications UI to dialog
* Add edu nux
* Revert change
* Fix wrapping of check on profile
* Rename
* Fix gap under PostMeta
* Update check dialogs
* Handle takendown verifiers in check dialog
* alf composer reply to
* Refactor verification state
* Add create/remove mutations, non-functional for now
* Fix up post-rebase
* Add check to first author noty
* Do cache updates after mutations
* DRY up hook, add to profile updates too
* Add to drawer
* Update account list
* Adapt to new types
* Hook up mutations
* Use profile shadow in feeds
* Add to settings
* Shadow currentAccountProfile
* Add invalid state to verifications
* Fix alignment and overflow in Settings and Drawer
* Re-integrate post rebase
* Remove debug code
* Update copy
* Add unverified notification support
* Remove link
* Make sure dialog closes
* Update URL
* Add settings screen
* Integrate new setting into verification states
* Add metrics, bump package, fix bad import
* NUX fixes
* Update copy
* Fixes
* Update types
* fix search autocomplete
* fix lint
* add display name warning to new dialog
* update default prefs
* Add parsing support for notifications
* Bump pkg
* Tweak noty styles
* Adjust check alignment
* Tweak check alignment
* Fix badge for verifier
* Modify copy
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
* move to dialogs dir
* make searchable people list more generic
* new list-add-remove-users dialog
* update header text
* fix header on android
* delete old modal
* reduce spacing on items
* Replace usages of old ProfileCard
* Replace Pills with Labels component
* Replace impl of ProfileCardWithFollowButton
* Remove never-used LikesDialog
* Handle missing mod opts
* Add missing profile hover
* use modern button in listmembers
* remove follow button from muted accounts list
---------
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
* Tests fix
* Move the hosting provider text in account creation into the inside of the button to improve translation handling (close#8166)
* Pull latest translations
* Revert the 'you are creating an account' change entirely; it doesnt work
* Increase number of accounts suggested in the follow dialog progress guide
* Increase the bottom pad on the dialog flatlist component
* Format
---------
Co-authored-by: Eric Bailey <git@esb.lol>
* Only show suggested users for non-english users
* Fall back to searching for users for non-english speakers
* Disable other queries if full experience is disabled
* Bump package
* If no content langs, use full exp
* Hover on sugg account
* Add subtle hover to all components except feed
* Use skeleton states for refetch on focus
* Empty results state for sugg users
* Filter out pinned posts from feed previews
* Add trending header if not top module
* Tighten up spacing
* Fetch 10 profiles
* Update interests copy
* Remove refetch on focus
* Add PTR
* use a map
* Update src/screens/Search/modules/ExploreInterestsCard.tsx
* fix web double border
---------
Co-authored-by: Hailey <me@haileyok.com>
* Fix interests card spacing
* Space out AvatarStack
* SP icon size
* Visual alignment of tab bar and headers
* Tweak spacing around search input
* Drop text size in sp card overflow count
* Tweak
An OTA deployment has been requested and is now running for `${{ steps.pr-info.outputs.head-sha }}`.
[Here is some music to listen to while you wait...](https://www.youtube.com/watch?v=VBlFHuCzPgY)
---
*Generated by [PR labeler](https://github.com/expo/expo/actions/workflows/pr-labeler.yml) 🤖*
- name:Check for EXPO_TOKEN
run:>
if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
exit 1
fi
- name:⬇️ Checkout
uses:actions/checkout@v4
with:
ref:${{ steps.pr-info.outputs.head-sha }}
- name:🔧 Setup Node
uses:actions/setup-node@v4
with:
node-version-file:.nvmrc
cache:yarn
- name:Install dependencies
run:yarn install --frozen-lockfile
- name:Lint check
run:yarn lint
- name:Lint lockfile
run:yarn lockfile-lint
- name:🔤 Compile translations
run:yarn intl:build 2>&1 | tee i18n.log
- name:Check for i18n compilation errors
run:if grep -q "invalid syntax" "i18n.log"; then echo "\n\nFound compilation errors!\n\n" && exit 1; else echo "\n\nNo compilation errors!\n\n"; fi
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also open source, but in [a different git repository](https://github.com/bluesky-social/atproto).
This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), which are also open source, but in [a different git repository](https://github.com/bluesky-social/atproto).
There is a small amount of Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application.
@@ -19,7 +19,7 @@ The [Build Instructions](./docs/build.md) are a good place to get started with t
The Authenticated Transfer Protocol ("AT Protocol" or "atproto") is a decentralized social media protocol. You don't *need* to understand AT Protocol to work with this application, but it can help. Learn more at:
- [Overview and Guides](https://atproto.com/guides/overview)
- [Github Discussions](https://github.com/bluesky-social/atproto/discussions) 👈 Great place to ask questions
- [GitHub Discussions](https://github.com/bluesky-social/atproto/discussions) 👈 Great place to ask questions
- [Blogpost on self-authenticating data structures](https://bsky.social/about/blog/3-6-2022-a-self-authenticating-social-protocol)
@@ -27,6 +27,7 @@ The Bluesky Social application encompasses a set of schemas and APIs built in th
## Contributions
> [!NOTE]
> While we do accept contributions, we prioritize high quality issues and pull requests. Adhering to the below guidelines will ensure a more timely review.
**Rules:**
@@ -42,7 +43,7 @@ The Bluesky Social application encompasses a set of schemas and APIs built in th
- Open an issue and give some time for discussion before submitting a PR.
- Stay away from PRs like...
- Changing "Post" to "Skeet."
- Refactoring the codebase, e.g., to replace MobX with Redux or something.
- Refactoring the codebase, e.g., to replace React Query with Redux Toolkit or something.
- Adding entirely new features without prior discussion.
Remember, we serve a wide community of users. Our day-to-day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth. That's what forking is for!
@@ -59,7 +60,7 @@ Please be sure to:
## Security disclosures
If you discover any security issues, please send an email to security@bsky.app. The email is automatically CCed to the entire team and we'll respond promptly.
If you discover any security issues, please send an email to security@bsky.app. The email is automatically CC'd to the entire team and we'll respond promptly.
## Are you a developer interested in building on atproto?
@@ -69,6 +70,8 @@ Bluesky is an open social network built on the AT Protocol, a flexible technolog
See [./LICENSE](./LICENSE) for the full license.
Bluesky Social PBC has committed to a software patent non-aggression pledge. For details see [the original announcement](https://bsky.social/about/blog/10-01-2025-patent-pledge).
## P.S.
We ❤️ you and all of the ways you support us. Thank you for making Bluesky a great place!
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.