Compare commits

...

499 Commits

Author SHA1 Message Date
Hailey b685f02a65 add one more usage 2025-03-17 15:02:47 -07:00
Hailey 5568be4bc7 remove .parse usage 2025-03-17 15:00:11 -07:00
Eric Bailey 36a7a8d8c6 Colocate bitdrift in logger, use logger for transport (#7868)
* Colocate bitdrift in logger, use logger for transport

(cherry picked from commit cdd6941fd7)

* Fix mocks, format

(cherry picked from commit 9de88660c6)

* Ok I guess mocks dir doesn't work

(cherry picked from commit 9f37e52011)
2025-02-28 12:46:27 -06:00
Eric Bailey 7c36ea1158 Logger improvements (#7729)
* Remove enablement

* Refactor context and filtering

* Fix imports, simplify transports config

* Migrate usages of debug context

* Re-org, add colors and grouping to console logging

* Remove temp default context

* Remove manual prefix

* Move colorizing out of console transport body

* Reduce reuse

* Pass through context

* Ensure bitdrift is enabled in dev

* Enable Sentry on web only

* Clean up types

* Docs

* Format

* Update tests

* Clean up tests

* No positional args

* Revert Sentry changes

* Clean up context, use it, pass metadata through to Bitdrift

* Fix up debugging

* Clean up metadata before passing to Bitdrift

* Correct transports

* Reserve context prop on metadata and include in transports

* Update tests
2025-02-28 12:09:36 -06:00
surfdude29 9e9ffd5c6e fix label (#7856) 2025-02-28 09:49:01 -08:00
pfrazee 3f963cfed7 Nightly source-language update 2025-02-28 02:33:23 +00:00
Hailey a2b71e3a4b tweak link handling (#7857) 2025-02-27 13:18:30 -08:00
pfrazee a3d36393a1 Nightly source-language update 2025-02-27 02:33:08 +00:00
surfdude29 b996b304c3 Tweak accessibility label and add translation comment (#7843)
* make label clearer

* add translation comment
2025-02-26 07:36:53 -08:00
Minseo Lee ec75cbc01f Modify hosting provider text for better localization (#7847)
* Update HostingProvider.tsx

* Update src/components/forms/HostingProvider.tsx

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2025-02-26 07:36:31 -08:00
Seth Wood b924c53b23 Fix for avatar preloading (#7816)
* mobile avatar profile preloading fix

* updating fix to include moderation

* removing comments, adding disableNavigation to PreviewableUserAvatarProps
2025-02-26 07:33:27 -08:00
Samuel Newman c5b831d5d8 Bump version (#7846) 2025-02-26 06:24:19 -08:00
pfrazee 3795d85591 Nightly source-language update 2025-02-26 02:32:31 +00:00
Samuel Newman 7dc8ba8e4e label pref alignment (#7844) 2025-02-25 19:50:01 -06:00
Samuel Newman 22aee9704c improve toasts on oled dark mode (#7842) 2025-02-25 11:12:38 -08:00
Samuel Newman 3409a72548 Add soft reset to chat list (#7771)
* add soft reset to chat list

* refresh when soft resetting
2025-02-25 10:27:11 -08:00
surfdude29 595a894551 translate hosting provider text (#7834) 2025-02-25 09:54:20 -08:00
Samuel Newman 0d1373bb71 Remove moderatePost_wrapped (#7188)
* rm `moderatePost_wrapped`

* Handle display in app

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-02-25 11:21:00 -06:00
Samuel Newman cc8369e868 Better tablet layout (#7656)
* better tablet layout

* adjust left nav spacing

* add right nav to pwi

* clearer logic

* fix a couple screens that don't need the tablet layout

* fix horiz scroll bar

* fix double trending

* fix ts-ignore

* fix labeller screen

* don't offset things within dialogs

* fix load latest button (and add scale animation)

* center loader on home screen

* adjust break points

* adjust left nav spacing

* fix load latest btn (again)

* add lang select to right nav if left nav is minimal

* fix double scrollbar on tiny screens

* fix scrollbar

* fix type errors
2025-02-25 09:20:37 -08:00
Eric Bailey 0437838649 Fix max height of dialog flatlists (#7839)
* Fix max height of dialog flatlists

* Remove unneeded wrapper to fix Close positioning

* Add wrapper back and fix with position static
2025-02-25 11:12:56 -06:00
Samuel Newman 23f0092440 hackfix likes tab (#7770) 2025-02-25 09:02:08 -08:00
Samuel Newman 9c5d92088d Constrain dropdown height to fit in the screen (#7730)
* constrain dropdown height with css variable

* fix duplicated dependency

* fix pendantic lockfile
2025-02-25 08:08:30 -08:00
Samuel Newman e40656128d #6861: Use available space to make focus on Composer TextInput easier (copy) (#7836)
* 6861: Use available space to make focus on Composer TextInput easier

* Undo web

* bluesky-social#6861: Adjust focus area for native platforms taking Embeds into consideration

* use atoms

* remove empty div

* remove debug atom, whoopsie

---------

Co-authored-by: GrizliK1988 <dgrachikov@gmail.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-02-25 08:07:45 -08:00
pfrazee d76cd88d91 Nightly source-language update 2025-02-25 02:32:46 +00:00
Samuel Newman 6254cf020a Dedupe profile labels (#7833)
* dedupe labels

* apply to postalerts
2025-02-24 14:17:59 -08:00
Hailey 61a14043e5 add to blink (#7788) 2025-02-24 13:59:57 -08:00
surfdude29 3fc4c32ac6 Plural formatting for accessibility unread items strings (#7743) 2025-02-24 13:11:01 -08:00
surfdude29 a383b9ba28 Plural formatting for TimeIndicator accessibilityLabel (#7826) 2025-02-24 13:10:53 -08:00
surfdude29 bf4d3e89c2 Add plural formatting for months in narrow form (#7744) 2025-02-24 13:10:40 -08:00
surfdude29 1fd3af3c46 Tweak app language string in Settings (#7825) 2025-02-24 13:10:00 -08:00
surfdude29 3f879f0315 Tweak prompt title text when removing a feed (#7824) 2025-02-24 13:04:01 -08:00
Samuel Newman 7c14b54ab2 Fix DMs input automatically accepting autocomplete suggestion instead of clearing (#7796)
* fix input not clearing when autocomplete suggestion active

* fix up storybook

* restore web focus hack
2025-02-24 13:03:01 -08:00
surfdude29 9c739912a3 Tweak accessibility strings (#7822) 2025-02-24 12:59:55 -08:00
surfdude29 c4dec63960 Suggested updates to localization doc (#7828)
* update localization doc

* tweak wording order

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-02-24 12:52:39 -08:00
surfdude29 a7e1913e22 move translation tags (#7823) 2025-02-24 12:49:26 -08:00
surfdude29 a1699da1a9 separate strings for translation in ListHiddenScreen.tsx (#7827) 2025-02-24 12:48:42 -08:00
Samuel Newman ae9176c9c2 Basic minimum password requirements, plus field-specific errors (#7811)
* add min password requirement

* add field specific errors

* move email tld check to after other email checks

* add password length check to change password dialog

* Update src/view/com/modals/ChangePassword.tsx

Co-authored-by: Hailey <me@haileyok.com>

* Update src/screens/Signup/StepInfo/index.tsx

Co-authored-by: Hailey <me@haileyok.com>

* fix lint

---------

Co-authored-by: Hailey <me@haileyok.com>
2025-02-24 12:44:21 -08:00
Samuel Newman 3d954a00e0 precache recent profile click (#7831) 2025-02-24 12:39:41 -08:00
Samuel Newman f9392d4a96 Fix optimistic rendering of profile page (#7830)
* don't hold up rendering on starter packs

* add tab based on profile.associated

* move query into component, fix pending states
2025-02-24 11:50:52 -08:00
Paul Frazee bdcddee7a5 Update localization.md to change crowdin links 2025-02-24 08:06:15 -08:00
pfrazee 5c3576dee7 Nightly source-language update 2025-02-24 02:33:53 +00:00
gpp 7a3a1a2bd0 make composer pills tappable when keyboard is active (#7717) 2025-02-23 05:19:58 -08:00
pfrazee e6193d7036 Nightly source-language update 2025-02-22 02:28:50 +00:00
Nicolas Borlet cb85768e9c fix: click on our profile when seeing someone's profile (#7732)
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
Co-authored-by: Hailey <me@haileyok.com>
2025-02-21 11:39:57 -08:00
Samuel Newman ca7116ec3b connect inputs together in signup (#7809) 2025-02-21 11:25:42 -08:00
Samuel Newman 80e59d31d0 npx update-browserslist-db@latest (#7677) 2025-02-21 11:13:21 -08:00
Samuel Newman ca70aacb8a Mute account from post (#7712)
* mute account from post

* move options around
2025-02-21 11:12:51 -08:00
Samuel Newman e6bfeb1bab Fix android datepicker height (#7804)
* fix datepicker height

* fix suffixtext clipping
2025-02-21 11:10:51 -08:00
Samuel Newman 3b4f1e91e3 consistent sentence case captialisation (#7749) 2025-02-21 11:10:33 -08:00
Samuel Newman fff625167f set minimum birthday to 13 years ago (#7808) 2025-02-21 10:59:27 -08:00
Samuel Newman 5d30111b78 Get sheet padding working consistently (#7798)
* tweak height/padding of iOS

* tweak android ratio calculation

* add a bit of extra padding to full height iOS to account for the bit below the safe area
2025-02-21 10:59:08 -08:00
Samuel Newman 798bf47827 fix handle length error message (#7802) 2025-02-21 08:42:21 -08:00
Paul Frazee b0f7f51b04 Set branch to main on crowdin nightly push 2025-02-20 22:15:11 -08:00
Paul Frazee ea9f2dfbdd Fix bad indent 2025-02-20 22:02:26 -08:00
Paul Frazee 1fda7d0553 Add crowdin nightly push (#7799)
* Update crowdin.yml to point to new enterprise endpoint

* Update nightly crowdin action to push source strings to crowdin
2025-02-20 22:00:32 -08:00
pfrazee 7ff65df417 Nightly source-language update 2025-02-20 02:28:35 +00:00
bnewbold f8f88878dc makefile: bump nvm to use node 20 (#7324) 2025-02-19 16:12:51 -08:00
Paul Frazee 8f63cb86b1 Update intl:build to extract for all languages (#7787) 2025-02-19 12:52:58 -08:00
Samuel Newman ed4add7072 improve car dialog styles (#7786) 2025-02-19 12:35:33 -08:00
pfrazee 48fd397d46 Nightly source-language update 2025-02-19 02:28:13 +00:00
Eric Bailey f23a621c7e Remove shadowed follow gate handling (#7774) 2025-02-18 17:25:59 -06:00
Eric Bailey da45c42b6f [APP-1049] show label expiration in frontend (#7738)
* Add support for label exp to LabelsOnMeDialog

* Add exp to PostAlerts, align with LabelsOnMe UI

* Bump weight

* Improve translations

* Expiry should round up

* Add a little visual alignment hack
2025-02-18 09:45:46 -06:00
Eric Bailey 63ba0a436b [APP-1054] Add option to align web dialogs to top (#7760)
* Add option to align web dialogs to top

* Format

* Align all dialogs to top, with relative spacing on larger screens for better balance
2025-02-18 09:45:37 -06:00
Eric Bailey a51fc8e434 @atproto/api@next integration (#7344)
* Bump SDK

* Use consistent type in profile query

* Omit  from constraint for profile shadow

* Replace isRecord with isValidRecord in QuoteEmbed

* Omit type from constraint for old ProfileCard

* Omit type from constraint in profile queries where appropriate

* Use correct type for update profile mutation

* Conslidate and fix check for isValidRecord in Post.tsx

* Replace isRecord with isValidRecord in PostThreadItem

* Remove redundant cast in PostThreadFollowBtn

* Ignore errors in DebugMod screen

* Use matching type in ProfileFollows screen

* Use matching type in ProfileFollowers screen

* Migrate to isValidRecord in PostFeedItem

* Use matching type if PostRepostedBy

* Omit type from constraint in avatar props

* Use matching types in NotificationFeedItem

* Todo

* Use isValidRecord in NotfyFeedItem

* Improve MediaPreview types

* Migrate another isValidRecord in NotificationFeedItem

* Migrate to isValidView in queries/util

* Migrate to isValidRecord in threadgate/util

* Fix types in threadgates

* Fix up types in starter-packs queries

* Todo

* Specify exact types in search-posts

* Use internal type util to align types

* Ditto last

* Migrate postgate/index

* Specify exact types in post-thread

* Use correct type in post-quotes

* FIX potential bug in post-thread

* Use correct type in post-feed

* Add correct type guards to notifications/feed

* Migrate a guard in notifications/util

* Migrate guard in Wizard/State

* [@next] Profile handling, migrate `ProfileCard` (#7347)

* Introduce new utils for profiles, migrate old ProfileCard

* Rename, reorg

* Add parseEmbed utils

* Expand AnyProfileView to include chat profile view, update post shadow to reflect this

* Cast for perf reasons

* Tighten up types now that we have AnyProfileView

* Add fastIsType util

* Use `assertDid`

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Use util types

* Comment

* Use fastIsType where no validation was happening before

* suggestions (#7382)

* suggestions

* Revert unneeded changes

---------

Co-authored-by: Eric Bailey <git@esb.lol>

* Use new util

* Rename to dangerousIsType

* Convert object shape

* Use dangerous util

* Use dangerous util

* Use dangerous util, we can trust post records

* Use dangerous util

* Use AnyProfileVIew

* Convert object shape

* Clean up handling

* Patch moderateProfile to accept known profile views, to discuss

* Add AnyStarterPackView and related, implement in first usage

* Remove validation, fix type, fix ref

* Migrate over list-conversations

* Clarify intent behind precacheProfile and its unstable query cache

* Clean up unstable profile cache

* Fix types during label creation in PwiOptOut (#7346)

* Tighten types in queries/list

* Chat: use correct profile views

* Chat: fix log type check

* Chat: construct lexically correct shape, even though it's only internal usage

* Chat: use correct profile types

* Chat: fix type check in logs

* Starter: use correct profile types

* Starter: use correct profile types

* Starter: tighten types to match lex

* Any profile type will work in blocked-and-muted

* Use dangerous util

* Use dangerousIsType

* Update new ProfileCard to use AnyProfileView

* Use dangerousIsType

* Remove outdated todo

* Use correct profile type

* Use correct profile types

* Tighten up types

* Use dangerousIsType

* Chat: more type fixes

* Remove unused file

* Add a few  utils

* Remove unused file

* Ignore feedPost.__source

* Clean up types, leave validation in critical path

* Use dangerousIstype

* Use ANyProfileView

* Use isValidRecord

* Use dangerousIsType

* Fix types in ListCard

* Fix FeedInterstitials types

* Fix types in FeedCard

* Fix types in dms ReportDialog

* Fix types in SearchablePeopleList

* Fix bad type in composer opts

* Starter: ok these need to be loose too

* Clarify docs

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Less code

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Use package exports

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>

* Use package exports

* Bump sdk, update $Typed imports

* Format

* Format

* Fix weird TS error

* Remove patch

* Beter name

* It's memo, can validate

* Tighten up parseEmbed, dogfood

* Bump sdk

* Use asPredicate

* Loosen types a bit

* use asPredicate

* Fix types

* Use asPredicate

* Use asPredicate

* Use asPredicate

* Clean up upsertProfile types

* Use asPredicate

* Use Un util

* Fix types

* Use new AnyProfileView

* Use dangerousIsType

* Use asPredicate

* Use asPredicate

* Add fallback content-type to pass typecheck

* Clean up upsertProfile types

* Align types

* Use dangerousIsType

* Use dangerousIsType

* Use asPredicate

* Align types

* Convert findLast

* Align types

* Just ignore type errors and use findLast

* Rename atproto -> bsky

* Add validate util

* Fix type error

* Loosen types

* Export post

* rename atp bsky

* Remove unused code

* minor changes

* Bump deps

* Fix types

* Tighten back up loose check

* Tighten back up loose check

* Fix small bug

* Update comment

* Revert change

---------

Co-authored-by: Matthieu Sieben <matthieusieben@users.noreply.github.com>
Co-authored-by: Matthieu Sieben <matthieu.sieben@gmail.com>
2025-02-18 08:54:25 -06:00
Paul Frazee e2c0f78719 Fix mapping (#7767) 2025-02-17 19:55:40 -08:00
Paul Frazee 4146f9fe02 Update i18n release process to solve missing translations (#7766)
* Update release process to avoid untranslated strings

* Run intl:extract:all
2025-02-17 19:52:17 -08:00
pfrazee a28791680f Nightly source-language update 2025-02-18 02:27:08 +00:00
Minseo Lee d805dec08f Fix "log in", "log out" to "sign in", "sign out" (#7739)
* log to sign

* logged to signed
2025-02-17 10:52:06 -06:00
Marc Rousavy 326445d3af Make Android app start faster by disabling JS bundle compression (#7751)
* perf: Disable Android  compression to speed up app startup

* fix: Fix the gradle plugin
2025-02-17 07:31:40 -08:00
pfrazee 40d05ac866 Nightly source-language update 2025-02-15 02:26:52 +00:00
Paul Frazee cb862bffea Update tests 2025-02-14 18:19:47 -08:00
Samuel Newman 1e3b7feccf Screen for searching user's posts (#7622)
* search user's posts screen

* custom placeholder copy if self

* navigate to /profile/:handle

* add name to title

* show header on desktop
2025-02-14 23:22:32 +00:00
Paul Frazee ab4be7a9e1 Add translations missed in last PR (#7748) 2025-02-14 13:06:48 -08:00
Paul Frazee a154459b8f 1.98 release: Pull latest from crowdin (#7746) 2025-02-14 12:03:45 -08:00
Samuel Newman d793abf8cd [Instrumentation] Signin (#7742)
* first pass at instrumenting login

* round time taken
2025-02-14 19:52:53 +00:00
Samuel Newman 11616846ca Reenable router events (#7735)
* reenable router events

* remove  field
2025-02-14 19:50:08 +00:00
pfrazee a14704ddfe Nightly source-language update 2025-02-14 02:28:00 +00:00
Eric Bailey 22a902e0de Bitdrift integration (#7728)
* update bitdrift to 0.6.7 and enable iOS network integration (#7575)

* update bitdrift to 0.6.5 and enable iOS network integration

* Update src/lib/bitdrift.ts

Co-authored-by: Mark <40143016+Maker-Mark@users.noreply.github.com>

* update to 0.6.7

---------

Co-authored-by: Mark <40143016+Maker-Mark@users.noreply.github.com>

* deps: Bump bitdrift to 0.6.8, fixes iOS network instrumentation bug (#7725)

Co-authored-by: Eric Bailey <git@esb.lol>

* Add stable ID copy, add todo

* Nits

* Temp enable

* Temp debug

* Revert some debug

* Revert unnecessary change

* Use new gates

* Add anon ID to version string

---------

Co-authored-by: Snow Pettersen <snowp@lyft.com>
Co-authored-by: Mark <40143016+Maker-Mark@users.noreply.github.com>
2025-02-13 15:59:30 -06:00
Eric Bailey 99051f0ab1 Use effective filtering for feeds (#7736) 2025-02-13 15:57:55 -06:00
Minseo Lee f45f9afab7 Update PostInteractionSettingsDialog.tsx (#7726) 2025-02-13 14:48:44 -06:00
Samuel Newman a3f79cc714 Revert "fix quote & feed padding not being pressable (#7694)" (#7733)
This reverts commit 521a764d4f.
2025-02-13 14:56:12 +00:00
pfrazee ae8ddc2c41 Nightly source-language update 2025-02-13 02:27:57 +00:00
Tom Sherman d56efe250e Add dev mode for easy copying of at:// URIs and DIDs (#7723)
* Add dev mode for easy copying at:// URIs and DIDs

* Use storage API

* Share text instead of URL

* Cleanup persisted schema

* Change translation msg
2025-02-13 01:11:13 +00:00
Samuel Newman db25f95c33 Improved search language select (#7591)
* replace with Menu

* new icon for native

* hackfix radix dropdown height

* fix jsx

* reduce language names with lots of variants to what firefox returns from Intl.DisplayNames

* more language label simplifications

* add collision padding

* adjust spacing around and left align title
2025-02-13 00:00:45 +00:00
Samuel Newman b37199a5a0 Improved search page (#7590)
* search input revamp

* fix web

* rm "useThemeNew"

* fix overlap during transition

* animate header properly

* reduce gap

* animate cancel button in

* don't move search bar when focused

* remove cancel button animation
2025-02-12 22:48:29 +00:00
Samuel Newman 1a3ecdf6ec Animate drawer menu on mobile web (#7711)
* slide in/out drawer

* increase width slightly

* exponential easing function
2025-02-12 21:51:16 +00:00
Samuel Newman 66f5e3a833 Special treatment for recommended starter packs (#7706)
* special treatment for recommended starter packs

* update subtitle when SPs in recommended

* fix item height
2025-02-12 21:34:21 +00:00
Samuel Newman 5a865a504c invert new postonboarding gate (#7695) 2025-02-12 21:33:24 +00:00
Samuel Newman ff2a82d358 Animate dropdown menus (#7704)
* animate dropdowns

* rm unused animation
2025-02-12 21:20:08 +00:00
Samuel Newman 5d3e2e1467 Better animations for dialogs, animate web composer (#7703)
* animation atoms, use for modals

* respect reduced motion

* simplify animtions

* fix atoms
2025-02-12 21:18:26 +00:00
Samuel Newman 521a764d4f fix quote & feed padding not being pressable (#7694) 2025-02-12 19:17:58 +00:00
Samuel Newman 7d694f605a ungate trending (#7696) 2025-02-12 16:00:56 +00:00
Samuel Newman 0d1d0d8fbb run prettier (#7727) 2025-02-12 15:38:04 +00:00
pfrazee 1ffdd668dc Nightly source-language update 2025-02-11 22:26:28 +00:00
Paul Frazee 94e35ee3ea Add deploy key to nightly commit (#7722) 2025-02-11 14:22:59 -08:00
Eric Bailey 459611ca7a [APP-1031] Add new followerRule to threadgate settings (#7681)
* Add new followerRule to threadgate settings

* Handle WhoCanReply copy

* Handle follow case

* fix ci

* Revert "Handle follow case"

This reverts commit bc454dad89.

* Hide Follow button if followedBy rule enabled

* Revert "Revert "Handle follow case""

This reverts commit cadc46d2dc.

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2025-02-11 14:07:10 -08:00
Paul Frazee 03f75e8ff4 Fix bug in GH action nightly-update-source-languages.yaml 2025-02-11 13:52:28 -08:00
Paul Frazee 3ab5c6a71f More i18n process updates (#7720)
* Modify intl:extract to only target english, the source language

* Add github action to regularly update english .po file

* Update localization doc
2025-02-11 13:47:46 -08:00
Paul Frazee accd1834b3 Run intl:extract on english to see if crowdin picks up on the changes 2025-02-11 13:11:25 -08:00
Minseo Lee b1cc4a5e9f Refine accessibilityHint (#7554)
* `accessibilityHint`

* accessibilityHint

* Update

Co-Authored-By: jason-me <mail@jason-hester.me>

* Update LoginForm.tsx

---------

Co-authored-by: jason-me <mail@jason-hester.me>
2025-02-11 13:07:00 -08:00
Paul Frazee eabe3ed231 Add language: Interlingua (#7715)
* Add language: Interlingua

* Add ia entry in dates
2025-02-11 12:51:19 -08:00
Samuel Newman 98b7e95b46 Fix unknown threadgates causing crashes (#7692)
* fix unknown threadgates

* don't fuck with the styles
2025-02-07 22:56:37 +00:00
surfdude29 7d6adb416a Update Settings.tsx (#7690) 2025-02-07 15:23:34 +00:00
Armaan A 729b9c9cc0 apply background style to discord/gorhom bottom sheet (#7523) 2025-02-07 15:13:08 +00:00
Samuel Newman 4b706c9519 Per-user search history (#7588)
* per-user search history

* move to mmkv with cool new hook

* revert accidental changes

This reverts commit 27c89fa645eff0acb7a8fd852203ff1ea3725c69.

* restore limits
2025-02-07 11:18:51 +00:00
Paul Frazee b12d39b4cf Updated i18n process (#7684)
* Update documentation

* Update crowdin.yml for cli usage

* Add more info about crowdin cli setup

* Add intl:pull and intl:push commands
2025-02-06 12:46:10 -08:00
Hailey be1285ea36 simplify ui (#7670) 2025-02-06 12:40:16 -06:00
Eric Bailey 9cd4f92027 [APP-1013] Configure and apply default post interaction settings from user preferences (#7664)
* Add interaction settings screen

* Move header out of interaction settings form

* WIP hook it up

* Thread through default settings into composer

* Update copy pasta

* Handle edited state

* Copy feedback

* Sentence case

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update copy

* Bump SDK

* Fix new type error

* Less in your face

* Remove new dep

* Add slot

* Copy edit

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2025-02-06 11:51:40 -06:00
Samuel Newman 1db2668a96 Improved service handle validation logic (#7657)
* fix validation logic for 3p pdses

* fix bad import

* add service handle validation test
2025-02-06 14:55:57 +00:00
Paul Frazee 00c08ba525 Clean out translation lines which no longer apply (#7668) 2025-02-05 15:05:11 -08:00
FalKoopa 445997bfd3 Update messages.po (#7627) 2025-02-05 15:02:47 -08:00
Michele Locati 2e96de5bc7 Update Italian translations (#7601)
* Update Italian translations

* Update Italian translations

---------

Co-authored-by: GitHub <noreply@github.com>
2025-02-05 15:02:24 -08:00
f e l p s 232ddb5d9c PT-BR Translation update (#7582)
* PT-BR Translation update to 1.95.0

* PT-BR Translation update to 1.95.0

* Added more translations to new features
Fixed more inconsistencies

* Added more translations to new features
Fixed more inconsistencies

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2025-02-05 15:01:51 -08:00
Paul Frazee 6250dd2206 Update Basque localization for 1.97.0 (supersedes #7580) (#7666) 2025-02-05 15:00:27 -08:00
Christian Schmidt 3619125d76 Update Danish localization for 1.97.0 (#7579)
* Add missing strings

* Align "community guidelines"

* Typo in "feedback"

* "Kutlur"
2025-02-05 14:54:09 -08:00
nilaallj e68fbd000c Updated Swedish translations for v.1.97 (#7573)
* New translations for 1.97.0

* Minor correction

* Some minor improvements + fixed typos
2025-02-05 14:53:36 -08:00
Paul Frazee f3550f53eb Update Crowdin configuration file 2025-02-05 11:57:13 -08:00
Paul Frazee e0aecc6a60 Update Crowdin configuration file 2025-02-05 11:46:19 -08:00
André Fernandes 856c799065 Wrap error messages in Layout.Center (#7655)
* Added Portal to ErrorMessage to stack it on top of the view

* Changing Portal solution for Layout.Center according to PR suggestion
2025-02-05 18:12:50 +00:00
André Fernandes 9433975984 Adding webp to regex list. Added function return type for consistency with the rest of the functions (#7649) 2025-02-05 14:54:52 +00:00
Samuel Newman c3d732a76f bump version (#7650) 2025-02-04 21:42:13 +00:00
Hailey 78419beeb0 use did for userID (#7647) 2025-02-04 11:16:15 -08:00
dan bbe2c10866 Upgrade RN to 0.76.6 (#7557)
* Bump RN to 0.76.6

* Rename patch
2025-02-03 17:41:08 -06:00
Samuel Newman 0e4406c0dd Update expo-blur (#7596)
* update expo-blur

* Revert "update expo-blur"

This reverts commit 0546946f7b.

* update yarn minor version and expo-blur
2025-02-03 17:37:02 -06:00
Samuel Newman 083a5c9667 Fix slow Hosting Provider dialog (#7594)
* avoid portal perf pitfall

* add dep array
2025-02-03 22:50:21 +00:00
Samuel Newman 24a4ab2b0f make convo menu lazy (#7604) 2025-02-03 22:50:02 +00:00
Samuel Newman 32b28d6662 Fix convo header loading state (#7603)
* get initial convo state from cache

* undo useConvoQuery changes

* fix shadowing situation with new hook
2025-02-03 22:37:24 +00:00
Samuel Newman fa8607b861 Spring cleaning (#7640)
* delete breakpoint layouts

* delete empty file

* delete legacy radio buttons

* delete selectable button

* rm radio buttons from debug

* delete storage.ts

* delete type-assertions.ts
2025-02-03 22:18:13 +00:00
Samuel Newman 23e62b18de Date input improvements (#7639)
* add max date, use modern field for birthday input

* rm legacy date input

* handle simplifying to simpleDateString internally

* update jsdoc
2025-02-03 20:27:58 +00:00
Eric Bailey 25991af722 Add example account store (#7641)
* Add example account store

* Format
2025-02-03 14:22:49 -06:00
Samuel Newman d0ff6dcba0 rm refs in render (#7589) 2025-02-03 20:20:15 +00:00
Samuel Newman 2523740bdc change search cancel behaviour (#7624) 2025-02-03 11:38:36 -08:00
Samuel Newman b27a11cc10 reduce padding on video overlay (#7617) 2025-02-03 11:38:09 -08:00
surfdude29 1ec0d11727 Typo fix (#7637)
* Update ReportDialog.tsx

* Update fr/messages.po

* Update it/messages.po

* Update ja/messages.po

* Update ko/messages.po

* Update zh-CN/messages.po

* Update zh-HK/messages.po

* Update zh-TW/messages.po
2025-02-03 13:06:37 +00:00
Samuel Newman ea932534df no follow self (#7606) 2025-01-27 13:37:44 -08:00
Hailey ebb6d5cc0f env var tweaks (#7457)
* add new events

* Discard changes to package.json

* Discard changes to src/lib/constants.ts

* Discard changes to src/state/feed-feedback.tsx

* Discard changes to yarn.lock

* remove unused event
2025-01-26 15:40:02 -08:00
Paul Frazee 355c50fc0f Test fix 2025-01-24 12:30:22 -08:00
Christian Schmidt 68c4737b82 Add Danish localization (#7220)
* Add Danish localization

* Fix

* Update src/locale/locales/da/messages.po

Co-authored-by: Frudrax Cheng <i@cynosura.one>

* Typo

* Inconsistent translation of "draft"

* Do not use "post" as verb

* Change "post"/"repost" to "opslag"/"videredeling"

* Fix "About"

* Fix

* Add to iOS config

* Sort alphabetically

* Typo fixes by @kseistrup

* Fix gender of "opslag"

* Plural

* "videredeling" > "deling"

* Be specific that ÆØÅ is not allowed

* Add new strings from main

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
2025-01-24 11:55:25 -08:00
nilaallj 9cb3b59963 Add Swedish localization (#7232)
* Adding Swedish translation

* Fixes and improvements

* Fixes and improvements

* Fixed inconsistencies + some other improvements

* Made some improvements, added missing translations and added Swedish to app.config.js

* Force push to resolve conflicts in messages.po
2025-01-24 11:54:45 -08:00
Michele Locati 630a8c3dc9 Update Italian translations (#7328)
* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

---------

Co-authored-by: GitHub <noreply@github.com>
2025-01-24 11:45:24 -08:00
Ivan Beà 001afcd6fc Update catalan messages.po (#7327)
Just a few new strings
Please take a look at it @jordimas @darccio @surfdude29 @rortan134 @magarcia @aryiu
2025-01-24 11:44:40 -08:00
Minseo Lee 9b961fb6d7 Update Korean localization for v1.97.0 (#7392)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2025-01-24 11:42:42 -08:00
Kevin Scannell f23f49c245 Irish translation update (#7406) 2025-01-24 11:42:21 -08:00
Valtteri Laitinen fa0628b787 Update Finnish localization (#7414) 2025-01-24 11:42:05 -08:00
Dovgonosyk d2ff104cfd Update Ukrainian translation (#7439)
Co-authored-by: Ukrainians <github-actions@github.com>
2025-01-24 11:41:28 -08:00
REALSOULMAN 24afc9c89a Add Basque language ('eu') (#7479)
* Add Basque language

* Contributor's changes
2025-01-24 11:40:20 -08:00
Snipufin 4703f3214e Update messages.po (#7496)
Changed StepFinished "Avaa" to "Avoin": the StepFinished screen is using Open as an adjective and not as a verb like the Finnish version currently does.
2025-01-24 11:38:35 -08:00
Islam Rustamov 2dcebeb518 Update Russian phrase (#7507) 2025-01-24 11:38:13 -08:00
smileyhead 49541029fe Update Hungarian translation for 1.96.6 (#7527) 2025-01-24 11:37:33 -08:00
Vinh Pham e09cd31b2a chore: update vi localization to v1.96.6 of the app (#7537) 2025-01-24 11:36:40 -08:00
axiand 06c1c7951d Polish translations for 1.97 (#7548)
* re-extract + fill in missing translations

* prune dead strings
2025-01-24 11:34:03 -08:00
hogaza 9849a6c71d Spanish localization for 1.97.0 (#7564)
* Updates and missing translations.

Added some missing translations, corrected a few inconsistencies (paquete inicial; video) and edited to strings to use gender-neutral language.

* Update src/locale/locales/es/messages.po

Thanks @surfdude29 for pointing this out

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2025-01-24 11:33:44 -08:00
Frudrax Cheng 5c3d609d1b Update Chinese & Cantonese localization for 1.97 (#7394)
* Update translates from crowdin

* Improved translations

* Provider related translations

* Improved translations

* Improved translations

* Update translates from crowdin

* Track #7190 & Improved translations

* CN: Translated Trending Video Strings & TW: Improved translations

* TW: Translated Trending Video Strings

* Update transtales from crowdin

* Ready for 1.97

* Track #7566

* CN: Fix typo
2025-01-24 11:33:20 -08:00
Takayuki KUSANO 02416c70fb Update Japanese translation for v1.97 (#7393)
* Update translation

* Update translation

* Update translation

* Update translation

* Update translation

* Update translation

* Update translation

* Fixed

* Update for v1.97

* update translation
2025-01-24 11:33:03 -08:00
Stanislas Signoud 203a8c0eb4 French localization for v1.97 (#7546)
* Extract new strings to be translated in FR

* Translate strings in French for v1.97

* Remove legacy, now unused strings in fr locale

* Fix misusage of flux instead of fil

* Extract new strings again for v1.97

* Translate appeal-related string in French for v1.97
2025-01-24 11:32:42 -08:00
Samuel Newman 0d9dae5a01 fix hcap clipping (#7567) 2025-01-23 23:49:08 +00:00
Samuel Newman f1d120d416 Takendown state + in-app takedown appeals (#7566)
* takendown screen

* add form, move button inline

* expect type error

* display error

* disable submit if too long

* move around all the ctas

* typos, rm layoutanimation, fix link

* use REASONAPPEAL
2025-01-23 22:33:28 +00:00
Samuel Newman 084d11c63a add ban-ts-comment rule as warn (#7541) 2025-01-23 16:32:24 +00:00
Matthieu Sieben 346a7387f6 Remove "bsky.network" from preconnect (#7559) 2025-01-23 12:42:07 +00:00
dan 16abe45bb2 Trim leading whitespace-only lines (#7555) 2025-01-23 12:02:50 +00:00
Frudrax Cheng 53d4854ee6 Fix typo (#7553) 2025-01-22 22:25:35 +00:00
dan dca97b7eb4 Tweak adjustment in the formula (#7547)
* Remove ts-ignore

* Tweak OP like adjustment
2025-01-22 21:13:21 +00:00
Samuel Newman 74bb65714b Post-report menu (#7446)
* post-report block/delete dialog

* fix

* default checked

* web styles

* add icon to send button

* wire everything up

* optimisically leave convo

* hide pending-leave convos

* Capitalize action labels

* Code style

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-01-22 21:03:31 +00:00
dan 638008c781 Only show pins on Posts and Replies (#7544) 2025-01-22 20:01:37 +00:00
Samuel Newman 9e1cd11e22 fix deprecation warning (#7540) 2025-01-22 18:58:42 +00:00
dan d4cf6752dd Minor video feed refactor (#7536)
* Remove useless TS checks

* Remove default argument
2025-01-22 18:39:57 +00:00
Eric Bailey 6538013484 Add videos tab to profile (#7517)
* Add videos tab to profile

* Modify sourceContext for author feeds

* Use actual typecast, better name for feedUri

* Make EOF conditional

* Clearer condition

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-01-22 00:45:33 +00:00
dan 1403570a6a Adjust decay formula (#7535) 2025-01-22 00:25:41 +00:00
dan 99d23d65e2 Bump to 1.97.0 (#7533) 2025-01-21 22:05:33 +00:00
Eric Bailey 9df5caf3c5 Update hashtag menu to use Menu, convert to native link for additional a11y and click handling (#7529)
* Make tag a normal link on web

* Replace old TagMenu with new RichTextTag component, expand and improve click utils

* Clarify intents

* Ensure we're passing down hint

* ope

* DRY
2025-01-21 21:56:01 +00:00
surfdude29 c8d062f1ae Tweak Cantonese language tag (#7440) 2025-01-21 21:37:44 +00:00
Samuel Newman f0cc83154b move indicatorStyle to List (#7526) 2025-01-21 21:36:09 +00:00
dan f5b277c9f8 [Experiment] Add Video feed on signup (#7531) 2025-01-21 20:56:08 +00:00
Snow Pettersen 5f9f81f86c Reenable bitdrift (#7405) 2025-01-21 20:44:31 +00:00
Chris Kanich 8e00f044fe show video feeds from posts even if they are replies (#7516)
* show video feeds from posts even if they are replies

* only show feed post in VideoFeed
2025-01-21 20:08:37 +00:00
Samuel Newman 45b5af604a render adjacent players on ios (#7525) 2025-01-21 18:59:13 +00:00
Eric Bailey bdda3020f6 Some immersive video a11y fixes (#7528)
* Add playing/paused handling to tap area

* Show text and remove expand button if screen reader enabled

* Clarify actions

* DRY
2025-01-21 12:05:46 -06:00
Paul Frazee 76885f8592 1.96.7 2025-01-21 08:45:16 -08:00
dan 2e8f2d58ec Fix crash when nothing is pinned (#7510) 2025-01-20 21:00:40 +00:00
Dan Abramov fe9bb792aa Fix log source 2025-01-20 20:59:11 +00:00
dan bf95345b33 Replace hackfix for gestures with upstream fix (#7503)
* Bump pager

* Revert "[Android] Try to disambiguate taps from swipes (#7448)"

This reverts commit 96054f4add.

---------

Co-authored-by: gpp-0 <gpp.cat.io@gmail.com>
2025-01-20 17:16:11 +00:00
dan 5090426f9c Fix tabbar swipe conflicting with drawer (#7501) 2025-01-20 02:33:55 +00:00
dan 49b1944225 Fix Discover posts showing up in Following with no explanation (#7500) 2025-01-20 02:11:15 +00:00
Dan Abramov 99e16f459d Fix PWI 2025-01-20 01:30:44 +00:00
Hailey 34582edf3e yolo (#7499)
* tweaks to constants (#7478)

* add did

* use correct did

* typo

* tweak

* Prevent Drawer gesture conflicting with Suggestions scroll (#7468)

* Extract BlockDrawerGeesture

* Block drawer when scrolling interstitials

(cherry picked from commit 9e3f2f4374)

* yolo interstitial

* yolo mode

* right swipe

* fix nav gesture

* vibe controls

* collapsible post text

* rm blurview, cover for tall videos

* smarter video source handling

* use thumbnails, improve perf significantly

* better android loading

* improve aspect ratio

* optimize source changes

* rm spinner on ios

* whoops, remove debug `false`

* FIX WRONG VIDEOS SHOWING UP

* don't spring on way down

* release video players when leaving screen

* remove jank animation

* Add grid

* improve contract, fix double tap

* Filter out posts without videos

* Only do grid on native

* Pipe through feedSourceUri and link to feed

* Handle passed through params

* Partial revert, just filter posts to start at index

* Clean up cards, remove entry interstitial

* Tweak handle

* Change constant name

* Rename some things

* Make types legit

* Clean up more naming

* Add placeholder for grid view

* Handle web, set up new organization

* Begin work on Header

* Replace types

* Squashed commit of the following:

commit 3d1be4c0f1
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 01:08:05 2025 +0000

    extend animation

commit c9f199413b
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 01:01:24 2025 +0000

    fix gap

commit 22e520795f
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:50:16 2025 +0000

    thinner bar, format time

commit c32427f214
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:47:57 2025 +0000

    fix 2 in 3 screens

commit cbf84c08d6
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:45:46 2025 +0000

    rm unneeded var

commit 7e0e100177
Author: Samuel Newman <mozzius@protonmail.com>
Date:   Fri Jan 17 00:41:18 2025 +0000

    scrubberrrrr

* use white with opacity rather than gray

* Simultaneous gesture

* cleanup attempt

* fix jank

* link to profile on press

* fix jitter fr this time

* mostly fix android flicker

* Maybe fix row generation

* Add content hider to video card

* emoji in post text

* reduce update rate

* fix type error

* Fix grid layout trailing single item

* Add Discover interstitial, settings, includes pin for now

* Explore interstitial, handle dimissal, pinning, compact card

* Only use grid placeholder on native

* Update events

* Add feature gate

* android nav bar fixes + lower update speed

* fix interval + decel rate on interstitials

* attempt to fix broken scrub on android (not working)

* follow button

* Part out the interstitials for perf, add view more

* Remove prod web route

* Wrap interstitials with BlockDrawerGesture

* Bring video cropping in line with images (#7462)

* Mimic image cropping for videos on web

* Same on native

* Rename variables for clarity

* Fix Android scrubbing

* Add FeedFeedbackProvider

* Remove swipe gesture

* fix light status bar behaviour

* bump

* feedback

* Copy pasta to new location

* Copy pasta part deux

* Filter only videos

* Make whole text clickable to expand

(cherry picked from commit 4cf31120779f4e06eb4c296b3d4b53814d432b07)

* move scrubber to own file

* end card

* add icon to end card

* add min view time to viewability config

* play haptic on like

* tweak feedback

* tweak feedback again

* Moderation

(cherry picked from commit 6b6b471cfb363031284b3e7a1f6e0ade3ac4ae47)

* remove bad check

* fix feedback for new video grid

* change prop name to items as well

* Simplify logic

* Fix mod footer

* Give scrubber more space on android

* Add subtle track behind scrubber, adjust opacity

* wire in feed context again...

* Add better a11y desc to card

* Fix key issue

* Update a11y copy

* Fix scrubber height

* improve scrubber animation

* Make follow button more obvious

* Make header back button more clear

* Disable interactions with actual video el

* keep content away from the bottom safe area

* fix blur

* fix moderation issue

* improve contrast on mod screen

* Make moderation static per item

* Memoize rows

* Optimizations

* Take video moderation into account

* Only blur titles for list blur

* Change copy

* Bump blur radius

* animate text in both directions

* Rm unused field

* Filter by root early

* Refactor for clarity

* add compose prompt to scrubber

* rm log

* tweak gradient

* Bump SDK, use contentMode to power video feed

* Ensure ProfileFeed view also supports video feed

* improve scrubber on android

* rm border from footer

* Update prod video feed did

* Separate caches

* Add lil hover to View More

* Fix undefined logic, remove header for interstitial

* Ungate

* Fix stuckness

* remove extra useless map

* Fix effect cleanup

* Send seen without cleanup

* Simplify react stuff

* Earlier early return to avoid loading flash

* remove scrubber placeholder

* Remove opacity hack

* Render useEvent conditionally

* Fix Android flash

---------

Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2025-01-19 17:17:41 -08:00
dan cb02065550 Revert "[Android] Fix taps triggering while swiping (#7459)" (#7498)
This reverts commit 5130d19ebd.
2025-01-20 01:03:42 +00:00
Eric Bailey 3e0ac0a066 Bring video cropping in line with images (#7462)
* Mimic image cropping for videos on web

* Same on native
2025-01-18 02:09:44 +00:00
Hailey 6f3f11671d tweaks to constants (#7478)
* add did

* use correct did

* typo

* tweak
2025-01-17 12:19:16 -08:00
devin ivy ec9cafdbbd bskyweb: do not serve cache headers on non-2XX for static assets (#7469) 2025-01-17 17:36:58 +00:00
dan c84158fa8b Remove test gates (#7477) 2025-01-17 17:36:37 +00:00
James Saunders f5d28de793 bump license year (#7474) 2025-01-17 09:00:25 -08:00
gpp 5130d19ebd [Android] Fix taps triggering while swiping (#7459)
* [Android] Fix taps triggering while swiping

* Revert "[Android] Try to disambiguate taps from swipes (#7448)"

This reverts commit 96054f4add.

* Update patch to match callstack/react-native-pager-view#961

* Make it symmetrical

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2025-01-17 02:02:59 +00:00
dan 9e3f2f4374 Prevent Drawer gesture conflicting with Suggestions scroll (#7468)
* Extract BlockDrawerGeesture

* Block drawer when scrolling interstitials
2025-01-17 01:17:13 +00:00
Paul Frazee 39ed104935 Small test update 2025-01-16 16:54:58 -08:00
Paul Frazee 92852ed5d9 1.96.5 2025-01-16 15:16:41 -08:00
Eric Bailey 974bd76e98 Disable 2025-01-16 16:56:51 -06:00
Eric Bailey 6d61e60717 Install new deps
(cherry picked from commit 04d8b3e9a8)
2025-01-16 15:39:06 -06:00
Samuel Newman c7666917f2 more deps
(cherry picked from commit 9b8f20f191)
2025-01-16 15:39:02 -06:00
Eric Bailey e01fc2fbaf Only apply CDN fix to webpack in prod (#7461) 2025-01-15 19:35:00 +00:00
Jaz beb1f2367a Set webpack public path to auto to load from CDN (hopefully) (#7449) 2025-01-15 14:17:32 +00:00
dan 96054f4add [Android] Try to disambiguate taps from swipes (#7448) 2025-01-15 13:44:42 +00:00
Samuel Newman 479a4a92e1 Account quick switch on web (#7190)
* account quick switch on web

* dont show line if one account

* switch account label text

* add chevron hover state

* swagged up hover state

* add icons

* tune scale anim and respect prefers-reduced-motion

* fix reduced motion

* fix placeholder position

* move menu components out to separate component

* Pipe through outer handlers to Button

* Abstract lag in control.isOpen state

* add profile info into empty space

* fix tablet

* Alternative

* Revert "Alternative"

This reverts commit 050ab9595ef3bbc32529ad6588e4690d37539fbe.

* maybe fix flicker issue

* just do 50ms when not active

* delay other animations

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2025-01-14 12:53:13 +00:00
Islam Rustamov 1fc889b883 Remove unnecessary addEventListener call for video (#7433) 2025-01-14 11:42:50 +00:00
Samuel Newman 82881d1410 add correct error reporting for blank password (#7391)
* add correct error reporting for blank password

* fix prettier

---------

Co-authored-by: zuccs <daniel@zuccon.com>
2025-01-13 17:43:18 +00:00
Samuel Newman d7f5ee8415 Conversation-level reporting by reporting most recent message available (#7423)
* report latest message via convo menu

* check all messages we have

* fix types

* rm convo warning
2025-01-10 23:35:21 +00:00
Samuel Newman 42a4468265 Fix invalid password error message (#7425) 2025-01-10 22:18:36 +00:00
dan 08c6ac7c89 Fix web crash (#7426) 2025-01-10 20:39:22 +00:00
dan 6ca97406c1 A simpler fix for trending swipe issue (#7424) 2025-01-10 18:06:07 +00:00
Samuel Newman a7da646286 [ELI5] Validate too long handles in signup (#7422)
* validate too long handles in signup

* make change handle screen generic
2025-01-10 17:57:10 +00:00
Hailey d79c66af8a add back statsig gate testing (#7404) 2025-01-10 09:45:58 -08:00
dan 02dbcc134e Fix trending swipe gesture (#7417) 2025-01-10 00:32:08 +00:00
Eric Bailey 72dc508cb7 Move intent dialogs inside Alf, but above intent handlers (#7416) 2025-01-09 15:34:00 -06:00
Samuel Newman 3b9a51c43f Fix Android composer padding: Director's Cut (#7412)
* fix android 15 composer padding

* while I'm here, alf some bits and pieces

* add comments
2025-01-09 18:06:24 +00:00
Samuel Newman e5c587450f fix padding on android 15 (#7411) 2025-01-09 17:29:33 +00:00
Samuel Newman b49e93d58f Downgrade paste input dependency (#7410)
* downgrade paste input

* rm wnitespace
2025-01-09 16:47:37 +00:00
Samuel Newman d10cbb8f42 Fix avatar shape in Account switch menu (#7388) 2025-01-09 00:19:59 +00:00
Samuel Newman a0393fcd48 [ELI5] change sign in to create account (#6931)
* change sign in to create account

* alf buttons on native bottom bar

* manually edit .po file
2025-01-08 22:13:24 +00:00
Samuel Newman 7c8c78b18f [ELI5] Tweaks to hosting provider (#6935)
* minimal hosting provider

* change wording and move back up

* first time user nudge

* move tip

* reexport ticket svg

* fix ticket fr this time

* text tweak + add minHeight
2025-01-08 19:22:04 +00:00
dan 40ab77781c Delete <AppProfiler> (#7403) 2025-01-08 18:59:39 +00:00
Christian Schmidt aa3d8c5230 Preconnect to public.api.bsky.app (#7396) 2025-01-08 17:21:21 +00:00
Roland Crosby c564981405 Add key to invalidate spinner when theme changes (#7351) 2025-01-08 00:13:03 +00:00
Samuel Newman f61390fdf4 Hide menu button when search is focused (#7373)
* hide menu btn when cancel is shown

* remove useless ts-ignores
2025-01-07 22:21:58 +00:00
dan f3229d554b Bump version to 1.97.0 (#7386) 2025-01-07 21:14:14 +00:00
Dan Abramov 89353c6f22 Remove unused default argument 2025-01-07 21:07:06 +00:00
Jonathan Herbert cdd7d040b9 Fix moveToPermanentPath ext Default Missing '.' (#7281) 2025-01-07 19:13:01 +00:00
Samuel Newman fe8d3b081c Fix double text input in composer (#7381)
* upgrade paste input

* override how backing uitextinput is created

* different approach
2025-01-07 18:29:27 +00:00
Hailey 615bbc3532 bump version (#7337) 2025-01-02 16:10:34 -08:00
bnewbold 59709ad8d8 bump golang version to v1.23 (#7325) 2025-01-02 12:57:03 -08:00
dan 85ad52e398 Add loading state to new trending interstitial (#7332) 2025-01-02 20:20:40 +00:00
dan 3e0ed3b834 Remove upstreamed drawer patch (#7331)
* Remove upstreamed drawer patch

* Bump more
2025-01-02 20:20:30 +00:00
dan c11a90124c Fix key issue in trending topics (#7329) 2025-01-02 17:27:15 +00:00
Stanislas Signoud 9f075b1340 Localize lang selectors according to the app language (#6207)
* Localize lang selectors according to the app language

* Explicitly ignore RangeError when translating locale names
2024-12-31 13:27:14 -08:00
Paul Frazee 09297d92cb Release 1.96.3 (#7318)
* Run intl extract

* 1.96.3
2024-12-31 13:06:33 -08:00
Yiannis Mertzanis 2300410b4d Add Greek Language ('el') Support and Internationalization (#6677)
* Add Greek language support to the application

* Add support for Greek language in date handling and tests

* Update Greek locale file with translator and team information

* Add support for Greek language in date handling and tests

* Add support for Greek language in app configuration, and updated translation from the reviewers' comments

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-31 12:28:17 -08:00
f e l p s 30d110dbcd PT-BR Translation update (#6975)
* PT-BR Translation update to 1.95.0

* PT-BR Translation update to 1.95.0

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-31 12:25:42 -08:00
Virenbar af94b79e2c Update Russian localization (#7116)
* Update messages.po

* Update messages.po

* Update messages.po (е -> ё)

* Update messages.po (plurals)

* Update messages.po

* Update messages.po

More е -> ё
Fix some strings

* Update messages.po

* Update messages.po

* Update messages.po (draft)

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: ponfertato <ponfertato@ya.ru>
2024-12-31 12:20:38 -08:00
Takayuki KUSANO 6e94de9f83 Update Japanese translation (#7170)
* Update translation

* Update translation
2024-12-31 12:20:01 -08:00
Minseo Lee 9dc04bbfb0 Update Korean localization (#7171)
* Update messages.po

* Update messages.po

* Update src/locale/locales/ko/messages.po

Co-authored-by: Akamig <akamig@posteo.net>

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

---------

Co-authored-by: Akamig <akamig@posteo.net>
2024-12-31 12:19:43 -08:00
Ivan Beà eb3bfc9ff0 Update catalan messages.po for 1.96.0 (#7182)
* Update catalan messages.po

Ready for 1.96.0
Please take a look at it @jordimas @darccio @surfdude29 @rortan134 @magarcia @aryiu

* Update messages.po

Tema del moment per Trending Topic segons optimot https://aplicacions.llengua.gencat.cat/llc/AppJava/index.html;jsessionid=43E324EDAEFCD750A95579FEB9B5A164?action=Principal&method=detall&input_cercar=trending+topic&numPagina=1&database=TERMCAT&idFont=3279826&idHit=3279826&tipusFont=Diccionaris+terminol%F2gics+del+TERMCAT&numeroResultat=8&databases_avansada=&categories_avansada=&clickLink=detall&titol=tema+del+moment&tematica=Tecnologies+de+la+informaci%F3+i+la+comunicaci%F3&t%C3%ADtol=tema%20del%20moment&tipusCerca=cerca.tot
2024-12-31 12:19:22 -08:00
Valtteri Laitinen ad42a9297a Update Finnish localization (#7183)
* Remove obsolete Finnish strings

* Update and adjust Finnish locale
2024-12-31 12:18:43 -08:00
Michele Locati 97288983c3 Update Italian translations (#7184)
* Update po from Transifex

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

* Update Italian translations

---------

Co-authored-by: GitHub <noreply@github.com>
2024-12-31 12:18:16 -08:00
voitech 0118fe75e0 Update Polish translation (#7206)
Translated new strings and corrected various errors.
2024-12-31 12:16:18 -08:00
smileyhead e44726529c Update Hungarian translation for 1.96 (#7219)
* Update Hungarian translation for 1.96

* Update Hungarian translation
2024-12-31 11:40:12 -08:00
Gerson Lázaro 619da81911 Fix Spanish translations for some messages (#7233)
* Fix Spanish translations for some messages

* Fix minor issues in es localization
- Use "etiqueta" instead of "tag"
- Use "eliminar" instead of "remover"
- Unify "entrar en pantalla completa"
- Use "Clic" instead of "Click"
- Use "paquete de inicio" instead of "pack de inicio"
- Unify use of "trasladado" instead of "mudado"
- Unify use of "solo" instead of "sólo"
- Unify use of "feed" instead of "noticias"
- Unify use of quotes for "me gusta" as "likes"
- Improve sentences using "2FA"
- Unify sentences mentioning quote posts (citas)
- Other small inconsistencies
- Tú vs usted inconsistencies:
  - agregue -> agrega
  - inténtelo -> inténtalo
  - cierre -> cierra
  - su -> tu
  - complete -> completa
  - comience -> comienza
  - seleccionaba -> seleccionabas
  - intentaba -> intentabas
  - puede -> puedes
- Inconsistencies to discuss and solve
  - Post: use of "post" and "publicación"
  - Repost: use of "repost"/"repostear" and "republicación"/"republicar"
  - Add: use of "agregar"/"agrega" and "añadir"/"añade"
  - Feed: use of Feeds in uppercase
  - Video: use of vídeo (es-ES) or video
  - User and account ("usuario" and "cuenta")
  - Punctuation consistency
  - Uppercase and lowercase consistency

* Fix typos and improve Spanish localization in messages.po

---------

Co-authored-by: Daniel García Ruano <dgruano.code@gmail.com>
2024-12-31 11:36:33 -08:00
Frudrax Cheng cf1ccdf8e3 Update Chinese & Cantonese localization (#7235)
* Update translates from crowdin

* Convert language codes from RFC-1766 to RFC-4646

* Update translates from crowdin

* Update deviceLocales.ts

* Revert 'changes zh-HK to yue'

* Fix zh-HK messages.po

* Revert 'en/messages.po'

* Update deviceLocales.ts

* Revert code comments

* Update translates from crowdin

* zh-TW: Improved translations
2024-12-31 11:34:48 -08:00
Stanislas Signoud 444c4a944e Update French translation (1.96.3 or 1.97) (#7299)
* Bump locales in French

* Translate French strings for 1.97 (or 1.96.3)
2024-12-31 11:30:49 -08:00
Lucasofchirstms 8af540f284 Update messages.po (#7305) 2024-12-31 11:27:56 -08:00
Hailey 6c40efb3a3 change copy on list blocked (#7316) 2024-12-31 11:24:50 -08:00
Paul Frazee 2dc6932f29 Rework discover-feed trending interstitial (#7314)
* Rework discover-feed trending interstitial to take one row

* Fix loading state

* Try putting it at the top

* Color consistency

* Tweak some spacing

* Show trending when progress guide is there
2024-12-31 09:44:52 -08:00
Eric Bailey c6d26a0a9c Some metrics (#7294)
* Add trending metrics

* Progress guide events

* Fix naming, improve existing events
2024-12-27 14:21:17 -08:00
Eric Bailey 8b7a331815 Fix mute words in trending (#7293) 2024-12-27 14:19:02 -08:00
Hailey d27ed32188 bump video version, fix android crash (#7292) 2024-12-27 13:10:01 -08:00
Samuel Newman 6c9e1d4837 Unlock orientation when lightbox is open (#7257)
* unlock orientation when lightbox is open

* rm outer safe area view, make sure alt text is safe

* restore safe area view for android 14 and below

* lock orientation on launch for android

* set system ui background to black when lightbox is open

* reset state on relayout

* catch async functions with noops

* rm superfluous catches

* Delay unlock until after animation

* Simplify how key is determined

* Make landscape backdrop opaque

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-24 20:05:54 +00:00
Minseo Lee f05962a492 Fix Nepali language code (#7265)
* Replace `np` with `ne`

* Reorder
2024-12-24 16:54:05 +00:00
Samuel Newman 2b28c85b43 Cropper - opt out of edge-to-edge enforcement on Android 15 (#7254)
* opt out of edge-to-edge enforcement

* revert unintended change
2024-12-23 18:17:09 +00:00
Ahmed Soliman 1e4ea1a271 checking list/feed owner on empty state when prompting to add users (#7247) 2024-12-23 17:42:10 +00:00
Barry Pollard 08a5f7a0bd Correct font preload (#7249) 2024-12-23 17:41:00 +00:00
Samuel Newman 5020e4233a make horizontal scrollview touch edges (#7256) 2024-12-23 15:58:54 +00:00
Christian Schmidt 190c7d6ed8 Extend clickable area to height of container (#7248) 2024-12-23 15:12:38 +00:00
Christian Schmidt 9d4ae02300 Make "Retry" translatable (#7243) 2024-12-22 17:45:08 +00:00
Christian Schmidt fa2072cefa Apply avatar moderation to quote post (#7229) 2024-12-20 23:15:45 +00:00
Dan Abramov 3aa1a5f884 Bump 2024-12-20 21:34:10 +00:00
Dan Abramov 7d86bba7f1 Fix Android save to camera permissions 2024-12-20 21:34:10 +00:00
Samuel Newman f5a9ac1313 fix lightbox on android 15 (#7221) 2024-12-20 20:39:18 +00:00
Samuel Newman c5421596a8 fix recent searches tap handling (#7214) 2024-12-20 20:37:55 +00:00
Samuel Newman 8f7a6e5ffc add default empty state text (#7212) 2024-12-20 20:33:34 +00:00
Hailey aeb78daf84 bump package (#7223) 2024-12-20 20:15:21 +00:00
Eric Bailey 8116d12c15 Fix Emoji picker focus (#7217)
* Only portal the emoji picker where needed

* Add optional portal prop to emoji picker

* Use FocusScope to our advantage

* Pare back, add guards, fix focus trap

* Don't return focus to emoji button

* Set DM input position on emoji insert

* Let the caller determine next focus node

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-20 19:59:33 +00:00
dan 8a3dfcb9d0 Don't add unused keydown listeners (#7218) 2024-12-20 18:00:30 +00:00
Samuel Newman 6afa44ddcb Moderate composer quote (#7213)
* moderate composer quote

* consistency with other uses
2024-12-20 16:57:19 +00:00
dan ab0697a0ec Bump clamp max value (#7198) 2024-12-19 23:14:33 +00:00
Dan Abramov 7f63679a5e Fix build 2024-12-19 21:57:45 +00:00
Hailey 975e61d450 bump (#7197) 2024-12-19 13:51:18 -08:00
dan 10981eec50 Proper fix for iOS cropper being stuck (#7194)
* Revert "Add iOS hack to fix cropper failing to show (#7191)"

This reverts commit 25d20c6395.

* Proper fix
2024-12-19 21:47:00 +00:00
dan fb920f89d1 Revert "Fix post time localization on Android (#6742)" (#7196)
This reverts commit b1b6affb71.
2024-12-19 21:45:44 +00:00
dan 25d20c6395 Add iOS hack to fix cropper failing to show (#7191)
* Add iOS hack to fix cropper failing to show

* Make it 800
2024-12-19 21:12:58 +00:00
Dan Abramov a3031de19b Tweak GH action 2024-12-19 05:50:37 +00:00
Dan Abramov 59739a6088 Tweak GH action 2024-12-19 05:36:19 +00:00
Dan Abramov 24540400d9 Try to fix action 2024-12-19 05:24:05 +00:00
Dan Abramov 513a188a21 Add a GitHub Action verifying lockfile against base 2024-12-19 05:14:15 +00:00
dan 29dad38ab7 Add lockfile lint (#7177) 2024-12-19 04:01:21 +00:00
dan c390c32788 Remove unreliable repository (#7176) 2024-12-19 04:00:27 +00:00
dan c2ca84c636 Temporarily remove Bitdrift (#7173)
* Temporarily remove Bitdrift

* Rm plugin
2024-12-19 01:16:32 +00:00
Paul Frazee e2dfe3f438 Fix translation file 2024-12-18 17:07:41 -08:00
Hailey 9ebd362224 add key (#7169) 2024-12-18 16:17:55 -08:00
Paul Frazee 25f3aeaa08 Release 1.96.0 (#7168)
* Update test

* Run intl extract

* Update join count
2024-12-18 15:56:42 -08:00
Mert Şişmanoğlu 6e58a1e8e1 Update Turkish(tr) translations 62% (#6386)
* Update Turkish(tr) translations

* Update Turkish(tr) translations

- Accessibility Page fully translated
- Some error and warning messages
- Some PostInteraction components

* Update Turkish(tr) translations

- Po-Revision-Date, Last-Translator, Language-Team update
- Translate most of the Chat, Message, Conversation messages

* Update Turkish(tr) translations

- useTimeAgo time conventions
- FeedItem messages
- Verification warnings

* Update Turkish(tr) translations

- n days ago, n hours ago
- Newskie
- Post and Feed actions
- Some of the Starter Pack

* Update Turkish(tr) translations

- Use `kaydoldu` instead of `kayıt oldu`

* Fix typo "{}sn" in Turkish(tr) translations

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* fix turkish(tr) translations 'reply' word

- Use 'yanıt' instead of 'cevap'

* Update src/locale/locales/tr/messages.po

Co-authored-by: Burak Güner <md.burak.guner@gmail.com>

* Update Turkish(tr) translations for improved clarity and accuracy

* Update Turkish(tr) translations

* Update Turkish(tr) translations for various phrases and improve clarity

- learn more
- moderation things

* Update Turkish(tr) translations

* Update Turkish(tr) translations

* Update Turkish(tr) translations

* Update src/locale/locales/tr/messages.po

Co-authored-by: Burak Güner <md.burak.guner@gmail.com>

* Update src/locale/locales/tr/messages.po

Co-authored-by: Burak Güner <md.burak.guner@gmail.com>

* Update Turkish (tr) translations in messages.po

%62 done

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Burak Güner <md.burak.guner@gmail.com>
2024-12-18 15:47:26 -08:00
Softastur 62f43ee15a Update ast locale translation (#6905)
* Update ast locale translation

This commit updates strings and fixes some errors.

* Update messages.po

Fixes a critical translation error

* Update messages.po

Fixed a mistake

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-18 15:46:50 -08:00
smileyhead 2e598f7bd7 Update Hungarian translation to 1.95 (#6869)
* Fetch newest translations

* Translate new strings

* Apply fixes to strings

Reworded the ‘Deleted’ string and the body text placeholders of the ‘Who can interact with this post?’ dialogue.

* Unify wording/cases of toast messages

The wording of responsive toasts such as ‘Message deleted’ have all been changed to a case like ‘You have deleted this message’. Wording messages in the former way sounds very ‘un-Hungarian,’ so I have gone through the code to find any toast messages not worded this way.

There are a few exceptions, however:
- Error messages – these are already proper, full sentences and do not sound odd when translated as-is.
- ‘Copied to clipboard’, QR code-related toasts – keeping the original case sounded more appropriate here.

* Small correction

Noticed I've accidentally translated ‘About’ as ‘Help’

* Pull newest strings

* Translate new strings
2024-12-18 15:45:55 -08:00
Juan Pablo Martínez 2aeb098b4e Update AN to 1.95.0 [ER]. (#6857)
Co-authored-by: Guido Leenders <guido.leenders@invantive.com>
2024-12-18 15:44:04 -08:00
Guido Leenders 1eb17ac9fa Update NL to 1.95.0 [ER]. (#6855) 2024-12-18 15:43:04 -08:00
Eric Bailey 3408d47a1b Remove deactivate dialog link from delete modal (#7167)
* Rm closeModal

* rm link
2024-12-18 23:42:02 +00:00
Luan 64dbaed24c Update Portuguese localization (#6793)
* Update messages.po

* Update messages.po
2024-12-18 15:35:26 -08:00
Ankit Bhandari bdae89b67b Nepali Translation (divyaswormakai's reviewed & some changes) (#7033)
* feat: prepare necesaary files

* fix: message file for nepali translation

* feat: language file update

* feat: add missing pieces

* feat: one and other updates

* additional changes

---------

Co-authored-by: Divyaswor Makai <makaidivya@gmail.com>
2024-12-18 15:34:50 -08:00
Stanislas Signoud 0e7ad19830 French translations (for v1.96) (#6991)
* Bump translation strings for fr

* Translate new strings in French

* Fix a few problems and typos in existing fr locale

- Archivé par followed by a date do not make sense
- l’arrive is clearly a typo, and I rewrote it so it feels better in French
- Ex. with this casing is not frequent, so I moved it at the end (no terseness required here)
- Feedback is now translated using a common translation of those in other UIs
- Removed "Les" in "Les mots" as it's a menu item
- Plus aucune is correct but too formal and weird so switching to Pas d’autre

* Remove all legacy, commented strings

* Use guillemets on fr string about app icons

* Fix translation of “Back” to “Retour” in french

Originally fixed by @lsaudon in #6778, thanks :)

Co-authored-by: Lucas SAUDON <lucas.saudon@beta.gouv.fr>

* Improve fr translations thanks to @CerryTsuki input

* Remove even more legacy strings in fr translations

* Bump translation strings for fr (again)

* Attempt to translate new strings in fr

* Improve 'Archived from' translation in fr

* Bump translation strings for fr (yet again)

* Translate new strings in French

* Get rid of recently removed strings in fr

* Stay consistent when translating handle

---------

Co-authored-by: Lucas SAUDON <lucas.saudon@beta.gouv.fr>
2024-12-18 15:34:06 -08:00
Lucas O. S. c9aa2b1e30 Fix spanish translation (#6984) 2024-12-18 15:33:38 -08:00
roth 323c974c6b Add Khmer Localization (#6914)
* add khmer language

* update translate

* update translate

* add missing localization key

* update khmer wording

* update khmer wording

* add missing translate

* add missing translate

* chore: add khmer local date-time format

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-18 15:33:19 -08:00
voitech 9b35521d3c Updated Polish translation (#6862)
* Updated Polish translation

* Update pl/messages.po

@axiand Thanks for such a detailed analysis and all the suggestions! I've already corrected the mistakes you pointed out.

- The word "repost" was initially translated as "opublikować ponownie," but after consulting members of the Polish community, they agreed that "repostować" would be more appropriate. Personally, I would leave it as is or change it to "opublikować ponownie," but that is a longer phrase and might not fit well in certain interface elements.  
- Similarly, with the word "czat"—in my opinion, it aligns better with the app, whereas I translated "conversation" as "rozmowa."  
- "Obserwować wzajemnie" doesn't sound very natural in Polish, which was even noted by users who reverted to the English interface because of it. The phrases "również Cię obserwuje" and "również obserwuj" fully capture the meaning of the English original and look good as notifications in the app.  
- `L414-440`, `1618` – without the word "zostało," the phrasing lacks clarity.  
- `L600`, `1796`, `2804`, `4056`, `7552` and `L718`, `1316`, `2219`, `4662-4667`, `6056`, `6714` – my changes are linguistically correct and look better. The previous formulations were often ambiguous and unclear. I fixed the errors found in these sections.  
- `L1447` – I reverted to the previous version.  
- I changed "kod potwierdzający" to "kod weryfikacyjny" because it sounds more natural and clear.  
- I changed "lista moderowana" to "lista moderacji" as per your suggestion. In Polish, "lista moderacji" sounds like the list belongs to people involved in moderation. It also gives the impression that it might be a list showing moderators or moderation-related services. "Lista moderowana" suggests that someone is overseeing the moderation of the list. I'm still not entirely sure what the intended meaning is or what the audience is meant to understand from the name.  
- I changed "rolka aparatu" to "galeria zdjęć."
- I changed "obrazki" to "zdjęcia".

* Update messages.po

Suggested changes were made.
Changed “użytkownik” to “osoba” where it was logical for consistency. Removed where it was not needed.

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-18 15:32:27 -08:00
dan 45c6308607 Don't hide recommended (#7166)
* Don't hide recommended

* Rm unused
2024-12-18 23:31:18 +00:00
Valtteri Laitinen 65eccc79aa Update and improve Finnish locale (#6840)
* Update and improve Finnish locale

* Remove obsolete Finnish strings
2024-12-18 15:30:59 -08:00
Frudrax Cheng 8f171451ef Update Chinese & Cantonese localization (#6839)
* Update translates from crowdin

* zh-CN: Improved translations

* Both: Improved translations

* TW & HK: Improved translations

* CN: Re-translate 'Quote posts enabled'

* TW: Improved translations

* CN: Unify the translations of 'label'

* CN: Fix grammar

* CN & HK: Improved translation

* TW: Improved translations

* Update translates from crowdin

* Translated new Layout & Improved zh-TW translations

* zh-CN: Unified label translation

* zh-HK: Fix translation

* zh-TW: Improved translation

* Update from crowdin

* Improved translation

* Update translates from crowdin

* Update from crowdin

* Update the latest translations

* Update translations according #7065

* zh-TW: Improved translations

* Update translates from crowdin

* zh-HK: Improved translations

* Update translates from crowdin

* Improved translations

* zh-CN & zh-HK: Improved translations

* zh-CN: Re-translated 'Bluesky is better with friends!'

* Update translates from crowdin

* Translated #7128

* Remove placeholder

* Translated #7144 #7147

* Improved translations

* Improved translations#2

* zh-CN: Improved translations
2024-12-18 15:30:32 -08:00
Vinh Pham ac42f90e4d enhance translations, add new translation tags (#6838) 2024-12-18 15:30:00 -08:00
Ivan Beà 2e72b0a7a2 Update catalan messages.po (#6811)
* Update catalan messages.po

No new lines to translate this one, just fixing some minor errors

Please take a look at it @jordimas @darccio @surfdude29 @rortan134 @magarcia @aryiu

* Update messages.po
2024-12-18 15:29:34 -08:00
Minseo Lee bc948cb725 Update Korean localization (#6799)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-12-18 15:29:13 -08:00
Michele Locati e7a34669ff Update Italian translations (#6775)
* Update Italian translations

* Translate "Discover Feed"

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update translations from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

* Update po from Transifex

---------

Co-authored-by: GitHub <noreply@github.com>
2024-12-18 15:28:45 -08:00
hogaza 4697b92b6a Spanish localization - completion and some fixes (#6691)
* Updates and missing translations.

Added some missing translations, corrected a few inconsistencies (paquete inicial; video) and edited to strings to use gender-neutral language.

* Update src/locale/locales/es/messages.po

Thanks @surfdude29 for pointing this out

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/es/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-18 15:28:19 -08:00
Takayuki KUSANO d42f768347 Update Japanese translation (#6620)
* Update Japanese translation

* Update

* Remove obsoleted entries

* Update translation

* minimize diff to main

* apply middlingphys's review, erase obsoleted messages.

* Traslate new messages (app icon)

* modified on feedback

* Update translation

* Update translation

* Update translation

* translate new messages on new screen

* Remove the typo entry fixed by #7064

* Update translation

* Update translaiton

* Update translation

* Update translation

* Update translation

* Translate new progress guide
2024-12-18 15:25:17 -08:00
Claudiu Cristea afd338b0f3 Romanian localization (#6456)
* Empty

* First pass

* More colloquial Romanian

* Add Romanian lanaguage

* Romanian specfic plural with 3 variants

* Adjustments

* Chat > Conversație

* Keep code alphabetical order

* Update messages.po

* Add 'ro' to app.config.js

* Regenerate and finish RO

* Update messages.po

* Fixing a previous wrong conflict resolution

* Adapt after #6742

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Alex <alextec70@outlook.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-18 15:24:38 -08:00
Dan Abramov 2d1a5e71ab Remove X from recommended 2024-12-18 22:48:09 +00:00
Eric Bailey 925a240ec4 Fork close logic for android to match previous usage (#7165) 2024-12-18 22:22:16 +00:00
Eric Bailey 62daf047ca Adjust height of radio (#7164) 2024-12-18 20:25:54 +00:00
Samuel Newman 674153c725 move header inside sticky area (#7163) 2024-12-18 20:15:05 +00:00
Eric Bailey c8e307b5cf Trending tracking 2 (#7162)
* Move

(cherry picked from commit bfb96f4ce2)

* Add to recommeded too

(cherry picked from commit e6844883a6)

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-18 19:55:59 +00:00
dan a7f763faf2 Add reply sorting in-thread (#7156)
* Add button

* Extract component

* Make it work

* Extract and use RadioCircle

* Add tree/list setting

* Prefer local state

* Factor out threadViewPrefs

* Fix optimistic stuff

* Revert RadioButton changes

* Tweak radio styles, add Menu.LabelText

* Labels

* Margins

* Update copy

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-18 19:50:37 +00:00
Samuel Newman 4097fe07c5 make trending buttons pressable scale (#7160) 2024-12-18 19:48:24 +00:00
Eric Bailey e7b015f53f Trending tracking (#7161)
* Add hide to Explore

* Event for show

* Add hide events to each location
2024-12-18 11:37:46 -08:00
Samuel Newman 05c43ed998 Better list empty state (#7157)
* render header conditionally, use modern footer

* move add button to empty state if empty

* center align empty state

* Tweak add people btn

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-12-18 11:03:53 -08:00
Hailey 5c4f870898 change stale time to three minutes (#7158) 2024-12-18 10:58:26 -08:00
Samuel Newman 3481d16577 Remove header subtitle from list-related screens (#7154)
* rm subtitle, add admonition

* rm top border from empty state

* Minimal approach

* Revert uneeded change

* Even more minimal

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-18 10:23:40 -08:00
Samuel Newman 2d827430ee Web sticky headers for most screens (#7153)
* web sticky headers, with opt-out for notifs

* rm from postthread

* Fix jump

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-18 16:58:20 +00:00
Paul Frazee 3262b83420 Fix tests 2024-12-17 21:29:45 -08:00
Paul Frazee ff02868afc Layout tweaks (#7150)
* Reduce weight of right sidebar active feed

* ProfileFeedHeader tweaks

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-17 19:50:59 -08:00
Eric Bailey a2019aceec Trending (Beta) (#7144)
* Add WIP UIs for trending topics and suggested starterpacks

* Disable SPs for now

* Improve explore treatment a bit, add some polish to cards

* Add tiny option in RightNav

* Add persisted option to hide trending from sidebar

* Add to settings, abstract state, not updating in tab

* Fix up hide/show toggle state, WITH broadcast hacK

* Clean up persisted code, add new setting

* Add new interstitial to Discover

* Exploration

* First hack at mute words

* Wire up interstitial and Explore page

* Align components

* Some skeleton UI

* Handle service config, enablement, load states, update lex contract

* Centralize mute word handling

* Stale time to 30m

* Cache enabled value for reloads, use real data for service config

* Remove broadcast hack

* Remove titleChild

* Gate settings too

* Update package, rm langs

* Add feature gate

* Only english during beta period

* Hook up real data

* Tweak config

* Straight passthrough links

* Hook up prod agent

* Fix no-show logic

* Up config query to 5 min

* Remove old file

* Remove comment

* Remove stray flex_1

* Make trending setting global

* Quick placeholder state

* Limit # in sidebar, tweak spacing

* Tweak gaps

* Handle hide/show of sidebar

* Simplify messages

* Remove interstitial

* Revert "Remove interstitial"

This reverts commit 1358ad47fd.

* Only show interstitial on mobile

* Fix gap

* Add explore page recommendations

* [topics] add topic screen (#7149)

* add topic screen

* decode

* fix search query

* decode

* add server route

* Fix potential bad destructure (undefined)

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-12-17 19:45:39 -08:00
Eric Bailey a07949ec8e Fix emoji picker position (#7146) 2024-12-17 21:12:53 -06:00
dan 65d4416f9e Tweak Follow dialog Search placeholder (#7147) 2024-12-18 02:53:42 +00:00
Samuel Newman 0cbb03cd14 New progress guide - 10 follows (#7128)
* new follow-10 progress guide

* find follows dialog

* wip tabs

* flatlist version with search

* hardcode out jake gold

* lazy load followup suggestions

* Update src/components/ProgressGuide/FollowDialog.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* comment out replacing, enable paging

* rm autofocus

* find shadow profiles in paginated search

* clear search when press tabs

* better tab a11y

* fix label

* adjust scroll indicator insets

* do the same scroll indicator adjustment for searchable people list

* hardcode jake to just be 'tech'

* Retain state on close/reopen

* only change follow btn color when not followed

* add guide to inside dialog

* fix task alignment

* Enable contextual suggestions

* WIP: show multiple suggestions

* Rework so it animates well

* Show more items

* remove card style

* move tabs to own component

* split out header top

* scroll active tab into view

* rm log

* Improve perf a bit

* boost popular interests over alphabetical ones

* scroll active tab into view

* revert back to round buttons

* Fix overrenders of the tab bar items

* Fix unintended animation

* Scroll initial into view if needed

* Unlift state, the dialog thing breaks lifting

* Persist simply

* Fix empty state

* Fix incorrect gate exposure

* Fix another bad useGate

* Nit

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-17 17:13:18 +00:00
dan 32611391a3 Pipe statsig events to logger (#7141)
* Pipe statsig events to logger

* Log rich objects to bitdrift

* Fix tests

* Consolidate mocks, fix tests

* Reduce log trash on native
2024-12-17 12:22:09 +00:00
dan 07b7250682 Fix notifications borders (#7140) 2024-12-17 11:22:49 +00:00
dan 31d2aa6716 Refetch empty feed on focus (#7139) 2024-12-17 11:09:06 +00:00
dan 20d4266e2f Read storage on window.onstorage (#7137) 2024-12-17 03:13:51 +00:00
dan c9e429760d [ELI5] Tweak wording on the signup screen (#7136)
* Tweak signup wordings

* Update translations
2024-12-17 00:11:21 +00:00
Samuel Newman be33c626b0 alf error screen (#7135) 2024-12-17 00:11:03 +00:00
Samuel Newman 1a160df396 add safe area view to profile error screen (#7134) 2024-12-17 00:02:56 +00:00
dan de97c07c63 Adjust gates (#7132)
* Remove dead gate

* Adjust gates

* No need to disable exposures
2024-12-16 22:26:40 +00:00
Samuel Newman c339dc5b05 disable automaticallAdjustsScrollIndicatorInsets (#7131) 2024-12-16 22:06:15 +00:00
dan 3ed237b629 Bump more native deps (#7129)
* Undo expo modules patch

* Upgrade expo modules release

* Patch facebook/react-native#46944

* Remove explicit prebuild config dep

* Bump to rm duplicates
2024-12-16 21:46:39 +00:00
dan 21c288272d Update more Expo packages (#7127)
* Bump Expo resolutions

* Bump packages

* Bumpy bump
2024-12-16 17:35:44 +00:00
Karol Stawowski c4fffba11b feat: widen recent search profile link for mobile devices (#7119)
* feat: widen recent search profile link for mobile devices

* chore: apply style to non-mobile screens
2024-12-16 16:53:00 +00:00
dan e4e5a589b1 Fix video uploads on native (#7126)
* Fix duplicate expo-modules-core

* Patch expo/expo#33621
2024-12-16 15:42:29 +00:00
Frudrax Cheng b1b6affb71 Fix post time localization on Android (#6742)
* Fix post time localization on native

* Fix timezone

* Revent time.ts

* Add time.android.ts

* Add missing 'an' and 'ast'

* Revent PostThreadItem.tsx

* Resolve duplicate versions in lockfile

* Move to time.native.ts

* Follow #7055 to upgrade intl-datetimeformat version

* Remove time.native.ts
2024-12-16 14:25:59 +00:00
dan 1ac307bc42 [Experiment] Remove "Load Latest" button (#7120)
* Remove "show latest" behind the gate

* Add HomeBadgeProvider

* Update provider state from home feed tabs

* Add Home badge to native

* Add Home badge to mobile web

* Add Home badge to desktop web
2024-12-15 20:30:17 +00:00
dan 80c0125d6b Fix image upload on native (#7121) 2024-12-15 17:42:45 +00:00
Eric Bailey c959dc351f ProfileFeed cleanups (#7115)
* Clean up feed load state

* Fix feed info dialog load state
2024-12-14 15:30:01 -06:00
Ben Harris b806f3e85d apply fonts to TextField (#6288)
system fonts were leaking. i'm sure there's a better way to apply this
without duplicating but idk it works
2024-12-14 03:02:12 +00:00
dan c5e60ba006 Fix posting images on web (#7105)
* Fix uploadBlob to handle blob: URI

* Patch expo-image-manipulator to support "compress" argument

* Narrow down the fix
2024-12-14 02:25:32 +00:00
dan 55222c5b0e Fix z-indexes to make tabbar scroll on Android (#7102) 2024-12-14 00:01:31 +00:00
Eric Bailey ca8ca903b2 Add some helper text for custom domains (#7103)
* Add some helper text for custom domains

* endsWith

* ope
2024-12-13 23:05:53 +00:00
dan da6bcc54cf Tweak ProfileList design (#7100)
* Remove "No description"

* Move Lists about into header

* Remove pager with one tab

* Layout tweaks
2024-12-13 21:38:43 +00:00
dan adbc27059a Add Emily to discover debug (#7101) 2024-12-13 21:16:25 +00:00
Eric Bailey ce69e052b7 Allow non-graph emoji to inherit parent color (#7096) 2024-12-13 12:36:00 -06:00
dan f6aecf5c28 Give minWidth to tab indicator only (#7095) 2024-12-13 18:20:48 +00:00
Eric Bailey 41228dce19 Better alignment on web (#7098) 2024-12-13 18:20:38 +00:00
dan 356dad1932 Remove the environment indirections (#7089)
* Use raw underlying globals for environment

* Set dev EXPO_PUBLIC_ENV by exclusion
2024-12-13 17:16:53 +00:00
dan e2a7965e43 Gate bitdrift integration (#7088)
* Move Statsig init call earlier

* Gate Bitdrift init call

* Remove IS_TEST env constant

* Mock statsig
2024-12-13 17:14:41 +00:00
Brad Estey 5655241bef Uppercase the auth factor token in input value to match the email casing. (#7094) 2024-12-13 17:14:31 +00:00
dan add7a91d54 Fix web Home header (#7086)
* Fix header disappearing on web

* Make border nicer
2024-12-12 21:57:26 +00:00
dan 8a790cdd7f Revert "Edit string to avoid churning translations (#6737)" (#7087)
This reverts commit 9d3bdbb2b9.
2024-12-12 21:52:51 +00:00
surfdude29 10dd0f76eb mark string for localization (#7083) 2024-12-12 21:50:30 +00:00
dan 6e20893a0c Fix double border due to progress guide (#7084) 2024-12-12 15:16:15 -06:00
Hailey 2276cb0e75 Fix share button not working for some users (#5849)
* fix share button

* Revert "fix share button"

This reverts commit 3521c241729dc9bbe3dd7b62fc6e3e61e011cdf9.

* tweak

* Clean up context

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-12 13:50:29 -06:00
Eric Bailey 2808f8b73d New profile feed header (#7056)
* Init hacking

* Lil baby button checkpoint

* Playing around

* Revert "Playing around"

This reverts commit f58a7fafa1.

* Mostly there

* Cleanups

* Cleanup

* Fix report dialog nesting

* Remove transform on native

* Rename header

* Fix layout, overflowing FAB buttons

* Remove hack

* Couple of fixes

* Keep Pin primary CTA (#7061)

* Update src/screens/Profile/components/ProfileFeedHeader.tsx

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Simplify, use old string

* Wrap Trans better

---------

Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-12-12 11:48:26 -06:00
Samuel Newman ffc63dc85f [Layout] Bleed profile banner into safe area (#6967)
* bleed profile banner into safe area

(cherry picked from commit 50b3a4d0c6fd94b583ffe4efa65de35c81ae7f4e)

* pointer events none when hidden

(cherry picked from commit bae2c7b2dd6d7f858a98812196628308c0877755)

* fix web

(cherry picked from commit e3f9597170375f2903b6e567b963f008ec95aed1)

* add status bar shadow

* rm log

* rm mini header

* speed up animation

* pass bool rather than int in light status bar
2024-12-12 17:46:19 +00:00
Samuel Newman 4b32b0a71b Increase scrubber height if touch device (#7081)
* further increase target area of scrubber

* make scrubber bigger if touch device

---------

Co-authored-by: Antonio Sarcevic <sarcevicantonio@gmail.com>
2024-12-12 17:42:36 +00:00
dan f8cdd6b9ae [Notifications] Add a Mentions tab (#7044)
* Split out NotificationsTab

* Remove unused route parameter

* Refine the split between components

* Hoist some logic out of NotificationFeed

* Remove unused option

* Add all|conversations to query, hardcode "all"

* Add a Conversations tab

* Rename to Mentions

* Bump packages

* Rename fields

* Fix oopsie

* Simplify header

* Track active tab

* Fix types

* Separate logic for tabs

* Better border for first unread

* Highlight unread for all only

* Fix spinner races

* Fix fetchPage races

* Fix bottom bar border being obscured by glimmer

* Remember last tab within the session

* One tab at a time

* Fix TS

* Handle all RQKEY usages

* Nit
2024-12-12 17:37:07 +00:00
Samuel Newman 10e241e7eb followersCount -> followsCount (#7080) 2024-12-12 17:21:28 +00:00
dan 88166926fa Make the pager take full width (#7066)
* Wide tabs for web

* Wide tabs on mobile

* Tweak min for profile

* Driveby border fix

* Fix single tab indicator
2024-12-12 15:35:56 +00:00
dan 704e36c280 Fix web build (#7069)
* Fix web build

* Fix circular deps

* Hoist log functions
2024-12-12 05:00:09 +00:00
Snow Pettersen 20ac42a5a3 configure the bitdrift Capture SDK (#6979)
* configure bitdrift Capture SDK

* remove console log

* use the new url

* add patch to fix devtool interaction

* update patches

* fix patch

* add BITDRIFT_API_KEY to .env.example
2024-12-12 04:28:15 +00:00
dan c8745a9ab0 Cache Reanimated worklets (#7068)
* Undo perf hackfix

* Bump Reanimated to include https://github.com/software-mansion/react-native-reanimated/pull/6758

* Bump to 3.17.0-nightly-20241211-17e89ca24
2024-12-12 04:20:22 +00:00
Minseo Lee 084905c146 refine plural marks (#7065) 2024-12-12 03:48:02 +00:00
Frudrax Cheng ddeadc21a0 Update PostRepostedBy.tsx (#7064) 2024-12-12 01:56:43 +00:00
Samuel Newman e49dad2889 Nicer app icon screen (#6972)
* wip exploration

* list format instead of grid

* fix normalising default name

* adjust margins

* Rework the app icon link

* Decrease app icon size

* Adjust some spacing

* Move some things around to fix web errors

* Fix pathname

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-11 22:33:45 +00:00
dan 69f22b9dba Point "Continue thread" at last shown post (#7060) 2024-12-11 22:29:57 +00:00
Samuel Newman 48346edde6 More exact counts (#7059)
* post liked by

* rm unnecessary layout.center

* do post quotes/reposts

* set height of header to prevent layout shifts
2024-12-11 22:24:22 +00:00
Samuel Newman 89c6ca94fe Followers/following exact count (#7057)
* followers exact count in heading

* exact count for following

* move files to new dir

* use <Plural>
2024-12-11 21:12:58 +00:00
dan 7db5882ea2 Merge pull request #7058 from bluesky-social/fix-profile-empty-space-nobio 2024-12-11 21:01:56 +00:00
Dan Abramov c55063d262 Reduce excessive empty space on profile with no bio 2024-12-11 20:35:13 +00:00
Samuel Newman b081f8f8d9 Remove rounding mode hack (#7055)
* bump formatjs and remove hack

* maybe fix tests?

* Revert "maybe fix tests?"

This reverts commit f1b448e5b8.

* rm test
2024-12-11 19:13:09 +00:00
かっこかり de15f8e2d3 feat(embed): Add support for dark mode (#6912)
* feat(embed): Support dark mode (wip)

* finishing up the implementation

* fix tailwind color selector

* tweak design

* refactor: unify types

* fix

* fix english grammar

* refactor: unify types

* tweak design

* remove the customization part
2024-12-11 16:31:29 +00:00
dan 48c5341644 Fix iOS build (#7042) 2024-12-10 22:17:27 +00:00
dan 86155986af Fix composer shortcut detaching a reply (#7041) 2024-12-10 21:19:53 +00:00
Barry Pollard bee50c3954 Font loading improvements (#6993)
* Font loading improvements

* Reconvert with missing files

* Update bskyweb/templates/base.html

Co-authored-by: Rick Viscomi <rviscomi@users.noreply.github.com>

* Update bskyweb/templates/base.html

Co-authored-by: Rick Viscomi <rviscomi@users.noreply.github.com>

* Run web-build to update hashes

* Revert Android to otf

* Use Inter woff2 files

---------

Co-authored-by: Rick Viscomi <rviscomi@users.noreply.github.com>
2024-12-10 21:17:58 +00:00
rcombs 6308e91de6 LoginForm: enable autocomplete on 2FA code field (#7019)
This should (fingers crossed) work in Safari, at least.
2024-12-10 21:16:45 +00:00
Renan Mav b7ddb07d90 fix: typo in filename list-converations (#7036) 2024-12-10 20:59:35 +00:00
dan d00879e628 Disambiguate feed component naming (#7040)
* Rename posts/Feed* -> posts/PostFeed*

* Rename notifications/Feed* -> notifications/NotificationFeed*
2024-12-10 20:57:53 +00:00
Eric Bailey e052f5e198 Refactor sidebar (#6971)
* Refactor RightNav

(cherry picked from commit 96bb02acfd2d7452df18a0e7410e6a7169a583ed)

* Better gutter handling

* Clean up styles

* Memoize breakpoints

* Format

* Comment

* Loosen spacing, handle overflow, smaller text to match prod

* Fix circular imports on native

* Return 0 instead of undefined for easier calculations

* Re-assign

* Fix

* Port over fix from subs/base

* Space out right nav feeds, widen sidebar to match prod

* Fix lost padding on home header

* Fix perf by not actually linking to new URL

* Remove underline on focus

* Foramt

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-10 20:52:30 +00:00
dan f34e8d8cdf Limit feed prefetching to native (#7038) 2024-12-10 18:23:23 +00:00
dan 46e1e5cee6 Fix drawer swipe (#7007)
* Fix drawer swipe

* Remove existing setDrawerSwipeDisabled management

This is already pretty error-prone. And with tracking whether we're idle it's going to get more complicated. Let's pause and think.

* Move setDrawerSwipeDisabled logic into Pager

* Remove win/2 threshold

It feels super arbitrary and breaks muscle memory. If the gesture is reliable, we shouldn't need it.

* Maybe work around iOS freeze

* Tweak gestures, add comments

* Tune gestures
2024-12-10 04:40:40 +00:00
Dmitry Grachikov fec3352b68 Access content of extended block properly (block.Super instead of super()) (#7026) 2024-12-09 22:23:36 +00:00
Eric Bailey bc4b4a3cfe Add isSelfHosted to SessionAccount (#7028)
* Add isSelfHosted to SessionAccount

* Update snaps
2024-12-09 13:43:16 -06:00
Eric Bailey 63c0c7e621 Add back button to desktop threads (#7010) 2024-12-08 14:44:01 -06:00
dan ea6ac25684 Revert "[Video] Revert safari hackfix (#5367)" (#7001)
This reverts commit 94e7bfbe40.
2024-12-07 17:10:13 +00:00
Eric Bailey 296aab4736 Fix squashed content on mod screens (#7004)
* Fix squashed content on mod screens

* Fix lint
2024-12-07 17:09:46 +00:00
Samuel Newman 5297973f68 [ELI5] Change feed page copy (#6932) 2024-12-07 11:50:50 +00:00
Eric Bailey d05217e560 Immediately parse pre-filled links in composer state (#6974)
* Immediately parse pre-filled links in composer state

* Add hack to fix PasteInput height bug

* Parse out ext links separately from post links
2024-12-06 22:43:49 +00:00
Eric Bailey 8c68093d24 Add useFormatCurrency hook (#6978) 2024-12-06 16:29:34 -06:00
dan cd4c14e8db Update view shot (#6995) 2024-12-06 22:14:05 +00:00
dan d7b492e89a Remove icon (#6994)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-12-06 20:37:46 +00:00
Hailey 1f6acc11ab clean rn 0.76 upgrade (#6887)
* package upgrades

* upgrade system ui

* update patches

* rename patch

* rm

* use .set/.set

* resolve yarnlock

* fix accidentally removed package

* fix use permissions hook

* fix some type errors

* type fixes

* more tweaking

* clean

* Discard changes to src/screens/Onboarding/StepProfile/index.tsx

* oops

* fix splash

* use ios/android in config

* Fix tests

* add back patch

* add to rn patch

* fullscreen?

* Revert "add to rn patch"

This reverts commit 4716d2c643.

* try this

* test with revert

* test

* maybe this

* fix config

* Bump @react-native-picker/picker

* Bump some packages

* Rm unused

* Update lockfile

* Rename expo-notifications+0.29.8.patch.md to expo-notifications+0.29.10.patch.md

* Update react-native+0.76.3.patch.md

* Update react-native+0.76.3.patch.md

* Inline splash configs

Jumping around the file is annoying and makes it harder to understand how this is structured.

* Start fixing Android splash

* Downgrade compressor

This version isn't building for me due to https://github.com/numandev1/react-native-compressor/issues/322.

* Make Android splash empty for now

* Work around a bug

* Bump the compressor

* Bump again

* Include splash fixes

* Try updating

* No custom Android splash

* Revert to using icons

* welp

* Fix sizes

* Make sizing work

* Bump size

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-12-06 17:52:08 +00:00
Eric Bailey 3ab6c435df Trim back prefs exposure in NUXs, make naming more friendly (#6980) 2024-12-06 09:42:42 -06:00
Eric Bailey 143e2c802d [Layout] Base (#6907)
* Add common gutter styles as hook

* Add computed scrollbar gutter CSS vars

* Add new layout components

* Replace layout components in settings screens

* Remove old back button

* Invert web border logic for easier migration

* Clean up Slot API

* Port over FF handling of scrollbar offset

* Trade boilerplate for ease of use

* Limit to one line

* Allow two lines, fix wrapping

* Fix alignment

* sticky headers

* set max with on header and center

* [Layout] Notifications Header (#6910)

* Replace notifications screen header

* fix cropped indicator

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* Replace Hashtag header (#6928)

* [Layout] ChatList header (#6929)

* Replace ChatList header

* update chat settings as well

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* Add web borders to Chat settings

* Remove unused var

* Move ChatList header outside center

* Replace empty chat layout

* fix breakpoints

* [Layout] Scrollbar gutters (#6908)

* Fix sidebar alignment

* Make sure scrollbars don't hide

* Gift left nav more space

* Use stable one-edge, update logic in RightNav

* Ope

* Increase width

* Reset

* Add transform to sidebars

* Remove bg in sidebars

* Handle shifts in layout components

* Replace scroll-removal handling

* Make react-remove-scroll an explicit dep

* Remove unused script

* use correct scroll insets (#6950)

* [Layout] Feeds headers (#6913)

* Replace ViewHeader internals, duplicate old ViewHeader

* Replace Feeds header

* Replace SavedFeeds header

* Visual alignment

* Uglier but clear

* Use old ViewHeader for SavedFeeds

* use Layout.Center instead of Layout.Content

* use left-aligned header for feed edit

* delete unused old view header

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>

* [Layout] Every other screen (#6953)

* attempt to fix double borders on every other screen

* delete ListHeaderDesktop

* delete `SimpleViewHeader` and fix screens (#6956)

* Make Layout.Center not full height

* Refactor List to use Layout.Center, remove built-in borders

* Fix Home screen

* Refactor PagerWithHeader to use Layout components

* Replace components in ProfileFeed and ProfileList

* Borders on Profile

* Search screen replacements

* use new header for profile subpage header (#6958)

* Search AutocompleteResults

* use new header for starter pack wizard (#6957)

* Fix post thread

* Enable borders by default

* Moderation muted and blocked accounts

* Fix scrollbar offset on Labeler

* Remove ScrollView from Moderation

* Remove ScrollView from Deactivated

* Remove ScrollView from onboarding

* Remove ScrollView from SignupQueued

* Mark deprecations

* fix lint

* Fix double borders on profile load

* Remove unneeded CenteredView from noty Feed

* Remove double Center layout on Notifications screen

* Remove double Center layout on ChatList screen

* Handle scrollbar offset in chat

* Use new atom for other scrollbar offsets

* Remove borders from old views

* Better doc

* Remove temp migration prop

* Fix new atom usage on native

* Clean up Hashtag screen

* Layout docs

* Clarify usage in Pager

* Handle nested offset contexts

* Clean up Layout

* fix feeds page

* asymmetric header on native (#6969)

* Reusable header const

* Fix up home header

* Add back button to convo

* Add hitslop to header buttons

* Comment

* Better handling on native for new atom

* Format

* Fix nested flatlist on mod screens

* Use react-remove-scroll-bar directly

* Fix notification count overflow on web

* Clarify doc

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-12-05 18:59:26 -06:00
Eric Bailey 8467dfd452 Add some icons (#6976) 2024-12-05 18:15:30 -06:00
Foster 0ee20731d4 adjust feed scroll bar top offset (#6940)
Co-authored-by: skipness <ckhf@proton.me>
2024-12-04 21:42:15 +00:00
Laurence Gonsalves 4582a9cf1f Fix oEmbed provider_url and provider_name (#6942)
Fixes https://github.com/bluesky-social/social-app/issues/6941
2024-12-04 17:21:52 +00:00
Samuel Newman df3b43bb64 simplify date picker theme (#6926) 2024-12-03 23:57:26 +00:00
Paul Frazee 0c71f8196f Add link-click metrics (#6934)
* Add link-click metrics

* Fix conditional
2024-12-03 15:03:22 -08:00
Samuel Newman 79f807dc4f ALF TabBar (#6924)
* alf tabbar

* reduce indicator height
2024-12-03 18:03:43 +00:00
David Buchanan 3607cfb991 Update VideoClip icon - Fix pixel grid alignment (#6923)
* Update VideoClip.tsx

* minify path
2024-12-03 17:42:53 +00:00
Ryan McLeod 147efb628a Fix title/buttons in date picker not being visible on Android in dark mode (#6880) 2024-12-03 02:25:10 +00:00
dan 84f4afd3d7 Fix scroll gesture alignment (#6898) 2024-12-03 01:35:36 +00:00
dan cd811114ef [Nicer Tabs] New native pager (#6868)
* Remove tab bar autoscroll

This will be replaced by a different mechanism.

* Track pager drag gesture in a worklet

* Track pager state change in a worklet

* Track offset relative to current page

* Sync scroll to swipe

* Extract TabBarItem

* Sync scroll to swipe properly

* Implement all interactions

* Clarify more hacks

* Simplify the implementation

I was trying to be too smart and this was causing the current page event to lag behind if you continuously drag. Better to let the library do its job.

* Interpolate the indicator

* Fix an infinite swipe loop

* Add TODO

* Animate header color

* Respect initial page

* Keep layouts in a shared value

* Fix profile and types

* Fast path for initial styles

* Scroll to initial

* Factor out a helper

* Fix positioning

* Scroll into view on tap if needed

* Divide free space proportionally

* Scroll into view more aggressively

* Fix corner case

* Ignore spurious event on iOS

* Simplify the condition

Due to RN onLayout event ordering, we know that by now we'll have container and content sizes already.

* Change boolean state to enum

* Better syncing heuristic

* Rm extra return
2024-12-03 01:29:45 +00:00
dan 5a313c2d10 [Nicer Tabs] Fork TabBar, simplify Pager (#6762)
* Fork TabBar.web.tsx

* Trim dead code from both forks

* Remove onPageSelecting event

It's difficult to tell what exactly it's supposed to represent, and in practice it's not really used aside from logging. Let's rip it out for now to keep other changes simpler.

* Remove early onPageSelected call

It was added to try to do some work eagerly when we're sure which way the scroll is snapping. This is not necessarily a good idea though. It schedules a potentially expensive re-render right during the deceleration animation, which is not great. Whatever we're optimizing there, we should optimize smarter (e.g. prewarm just the network call). The other thing it used to help with is triggering the pager header autoscroll earlier. But we're going to rewrite that part differently anyway so that's not relevant either.

* Prune more dead code from the native version

We'll have to revisit this when adding tablet support but for now I'd prefer to remove a codepath that is not being tested or ever run.

* Use regular ScrollView on native

The Draggable thing was needed for web-only behavior so we can drop it in the native fork.
2024-12-03 01:12:58 +00:00
dan 996871d88b Prefetch adjacent Home pages (#6904) 2024-12-03 01:11:11 +00:00
Hailey 2f10be2cfe remove masked view dependency (#6886) 2024-12-02 16:16:39 -08:00
surfdude29 770eeb59ca Add new languages to CFBundleLocalizations key (#6835)
* Order tweak in lingui.config.js

* Add new languages to `CFBundleLocalizations` key

* Order tweak in dates.ts

* hyphen to en-dash

* change two `zh` tags to use script rather than region

* `zh_HK` ➡️ `yue-Hant`

* `pt` ➡️ `pt-BR`
2024-12-02 17:28:11 +00:00
dan 5f4a0f2881 "Contain" images with missing dimensions instead of cropping them (#6828)
* Show unknown aspect as "contain" for autosize

* Fix a flash of wrong position when opening in lightbox

* Fix last frame flash on Android
2024-11-28 23:29:45 +00:00
dan d08ce0d473 Fix stuck lightbox (#6816)
* Fix lightbox getting stuck by fixing rAF order

If you spam opening lightbox too fast, the effect that calls rAF will clean up and set up again midflight. Unfortunately, due to rAF order being unreliable, it may fire in reverse order, causing "open, open, close" instead of "open, close, open", so it would get stuck closed. This fixes the rAF order.

* Don't allow opening another lightbox while it's open
2024-11-28 16:55:05 +00:00
Samuel Newman 0aee6390fa ensure black root view on iOS (#6813) 2024-11-28 15:41:33 +00:00
Foster 84796c1bcf fix iOS language picker style in dark mode (#6804)
Co-authored-by: skipness <ckhf@proton.me>
2024-11-28 14:31:10 +00:00
dan 6a2067a761 Revert "Revert "bump version to 1.96 (#6781)" (#6790)" (#6794)
This reverts commit c9d86de152.
2024-11-27 22:05:31 +00:00
dan c9d86de152 Revert "bump version to 1.96 (#6781)" (#6790)
This reverts commit b2c232e9fd.
2024-11-27 19:21:08 +00:00
Samuel Newman 29b3b3db30 YT embed tweak (#6789)
* tweak css

* fix typo

* More tweak

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-27 19:19:36 +00:00
dan 47cbdfecb3 Fix web build by removing app icon settings (#6784) 2024-11-27 15:34:12 +00:00
dan 763a5d5ab5 Fix gap between Write Your Reply and bottom bar on web (#6783)
* Fix gap between Write Your Reply and bottom bar on web

* rm log
2024-11-27 14:54:09 +00:00
Samuel Newman 6a29296ae0 [Subs] Custom app icons (#6758)
* custom icons

* rm default

* clouds.jpg

* use cross-platform fork

* minor fixes for android

* update dynamic icon lib

* gate app icon settings behind discover debug dids

* rename clouds

* Bop it

* Update default ios icon as well

* Remove old icon

* Update logo placement

* update to latest expo-dynamic-app-icon

* fix android icon sizes

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-11-27 14:41:18 +00:00
Samuel Newman c7d57b6374 css color transitions on left nav (#6768) 2024-11-27 14:34:07 +00:00
Frudrax Cheng 91fffd3cd2 Fix ast (#6774) 2024-11-27 14:17:44 +00:00
Samuel Newman b2c232e9fd bump version to 1.96 (#6781) 2024-11-27 14:12:04 +00:00
Paul Frazee 2a575addba Fix import sort 2024-11-26 19:32:19 -08:00
Paul Frazee 6d290591da Release 1.95 take2 (#6771)
* Run intl extract

* Update join count
2024-11-26 19:27:44 -08:00
Softastur 1edebc5dc7 Add "ast" locale support (#6411)
* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" locale support

* Add "ast" translations

This commit adds preliminary translation support for "ast" locale. Around 20% is translated.

* Update "ast" locale translations

* Update "ast" translations

Fixes minor spelling mistakes and translates many strings more

* Update messages.po

With this commit we reach the 55% of strings translated after the last code sync

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-11-26 19:14:43 -08:00
Juan Pablo Martínez 5929c2678c Add Aragonese language ('an') support and l10n (#6638)
* Update languages.ts

* Update i18n.web.ts

* Update i18n.ts

* Update helpers.ts

* Create messages.po

* Update lingui.config.js

* Update dates.ts

* Add files via upload

* Update src/components/hooks/dates.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/components/hooks/dates.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update i18n.ts

* Update messages.po

* Update src/locale/i18n.ts

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-11-26 19:06:47 -08:00
Ivan Beà 8cbe68306d Update catalan messages.po (#6682)
* Update catalan messages.po

Back to 100% translated.
Applied pending corrections by @darcio and @jordimas https://static.softcatala.org/quality/bluesky_social_app.html

Please take a look at it @ivanbea @jordimas @darccio @surfdude29 @rortan134 @magarcia

* Update catalan messages.po

Change all "arxiu" to "fitxer" as suggested by @jordimas

* Update catalan messages.po

Suggestions by @aryiu
2024-11-26 19:03:19 -08:00
Michele Locati 95e1b21788 Update Italian translations (#6717) 2024-11-26 19:02:09 -08:00
Guido Leenders b9db950d52 Informal tone and other improvements to Dutch (#6724)
* Informal tone [ER].

* More improvements [ER].

* Improvements by Flitskikker [ER].
2024-11-26 19:01:02 -08:00
Nando eb9dfba9f4 Improve German translation (#6750) 2024-11-26 18:54:18 -08:00
Frudrax Cheng 7860b790dc Update Chinese & Cantonese localization (#6754)
* Update translates from crowdin

* zh-CN: Re-translate 'Welcome, friend!'

* zh-CN: Improved translations

* Fix translate 'Threaded'

* zh-CN: Improve spelling and grammar

* Translated 'Allow quote posts'

* zh-CN: Better translation of 'from'

* zh-CN: Improved quantifiers

* zh-CN: Improved translations

* Update translates from crowdin

* Update translates from crowdin

* Improved translation
2024-11-26 18:53:44 -08:00
Samuel Newman 8825d6b1a7 Lightbox status bar behaviour (#6637)
* lightbox status bar

* add hideTransitionAnimation="slide"

* move navigation bar logic to util
2024-11-26 23:59:31 +00:00
dan 2c2d12b394 Fix stutter when swiping feeds on Android (#6765) 2024-11-26 23:56:57 +00:00
Samuel Newman 736ea3f49d Fix Android keyboard bug when opening a sheet (#6739)
* reimplement KeyboardStickyView

* fix missing arg
2024-11-26 15:57:21 +00:00
Samuel Newman ce1b04b925 Fix <List> types (#6756)
* fix List and ScrollView types

* add comment

* rm omitting ref
2024-11-26 15:55:27 +00:00
rshigg 56a88098d2 focus search input on soft reset in mobile (#5732) 2024-11-25 22:04:06 +00:00
dan 61e97d6962 Fix camera orientation on Android (#6729) 2024-11-25 21:08:14 +00:00
dan 9d3bdbb2b9 Edit string to avoid churning translations (#6737) 2024-11-25 20:49:43 +00:00
dan c6c6c91d7b Revert "Pass referrer on native (with an opt out) (#6648)" (#6732)
This reverts commit ac5b2cf31f.
2024-11-25 20:30:33 +00:00
Samuel Newman b0c36383a9 Ensure react-native-keyboard-controller enabled state doesn't get overwritten (#6727)
* revert to prev state instead of false

* add dep array

* use ref counting approach

* patch keyboard controller to allow changing the enabled prop

* remove state from patch

* change patched prop name

* remove Math.max check, log if < 0

* use noop provider

* rm patch, use `useRef`

* Style nits

* Rm on web

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-25 20:30:15 +00:00
Adam Rowe 6c81090021 Dismiss keyboard on drag in starter pack screens (#6537) 2024-11-25 19:04:28 +00:00
Kirill Zyusko 723bbfc58a fix: keyboard handler memoization (#6719)
* fix: keyboard handler memoization

* fix: return missing dependency
2024-11-25 15:03:55 +00:00
Evan 5164ca6288 Make quote post enabled switch label text static (#6720)
* Make quote post enabled switch label text static

* Update PostInteractionSettingsDialog.tsx

* meh this is better

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-11-25 13:24:00 +00:00
dan b9406aa011 Don't re-sort already fetched post thread items (#6698)
* Don't reorder already seen posts in PostThread

* Add sorting by generation

* Rip out stable order cache

It doesn't make sense because sort() doesn't call the callback for all A/B pairs, and the server returning a different ordering will cause cache misses which means there'll be no stability anyway.

* Make hotness deterministic per fetched at

* Cache random scores while in thread

* Reorder for clarity
2024-11-24 19:10:54 +00:00
surfdude29 371e6ad333 Fix glitches in gl/messages.po (#6702)
* fix glitches in gl/messages.po

* Fix italian

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-11-24 17:41:36 +00:00
dan a21e2b45db Fix format number polyfill for gl locale (#6680) 2024-11-24 17:15:08 +00:00
Paul Frazee 8c43acc1d3 Run intl:extract (#6678) 2024-11-23 16:42:43 -08:00
Paul Frazee 7782517a91 Merge branch 'monty241-main' into main 2024-11-23 16:34:31 -08:00
Paul Frazee a55444a53a Add 'nl' to lingui config 2024-11-23 16:34:11 -08:00
Paul Frazee 8fc4f68e69 Update src/locale/i18n.ts 2024-11-23 16:21:36 -08:00
Paul Frazee 32bf8122e8 Merge branch 'main' into main 2024-11-23 16:20:24 -08:00
Gonzalo Riestra b4d07c4112 Improve spanish translation of repost (#6395)
Use "republicar" instead of "volver a publicar"
2024-11-23 15:57:54 -08:00
Claudiu Cristea 1e168fd1e1 There’s no Moldavian/Moldovan language (#6427) 2024-11-23 15:56:21 -08:00
xurxogp 7e7910edf7 Added Galician language localization (#6463)
* Update languages.ts

added galician language

* Update i18n.web.ts

added import of galician translations file

* Update i18n.ts

added galician language

* Update helpers.ts

added galician to sanitizeLanguage function

* galician messages

First commit

* Second commit

* Third commit

* fourth commit

* fifth commit

* Update lingui.config.js

change to make available Galician language

* galician translation by Carlos Vieito and Alexandre Espinosa

---------

Co-authored-by: Alexandre Espinosa Menor <aemenor@gmail.com>
2024-11-23 15:54:59 -08:00
Martin Garcia af4db872b5 Update catalan messages.po (#6485)
* Update catalan messages.po

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

* Update src/locale/locales/ca/messages.po

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-11-23 15:53:38 -08:00
Michele Locati 54d52b8172 Update Italian translations (#6487)
* Update Italian translations

* Fix typo

* Update messages.po

* yarn intl:extract

* Update italian translation

* Fix typo

* In Italy we almost never use Title Case

* @marcomaroni-github suggestions

* Add more strings, remove "per favore"

* Update narrow "# hours"

* Fix plural rules, translate remaining strings

* Update translations with @arestifop suggestions

* Update translations

* Update translations

---------

Co-authored-by: Lucaterzo <49860098+Lucaterzo@users.noreply.github.com>
Co-authored-by: Alessio <alessio.restifo@gmail.com>
2024-11-23 15:51:57 -08:00
Minseo Lee 1059088cf1 Update Korean localization (#6523)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-11-23 15:51:00 -08:00
Quang Phan 796d04b59f Vietnamese Localization (Continued from #2524) (#6564)
* Add Vietnamese localization

* Complete Vietnamese Translations

* Add date localization for Vietnamese

* Fix typos and wording in Vietnamese translation

* Update Vietnamese translation

* Add @vinhphm to Vietnamese translator list

---------

Co-authored-by: CromNguyen <nguyenthietmanh98@gmail.com>
2024-11-23 15:50:32 -08:00
FalKoopa 9bf7e278e7 Updated Hindi UI for Version 1.94 (#6566)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po
2024-11-23 15:49:39 -08:00
cereza d0089a9335 updated & added missing strings in FR locale (#6596)
* updated FR locale

* removed my name from Language-Team

i'm not sure if this is a list of every translation contributors or if this is the main people who handle translations, so i've decided to remove it for the time being

* replaced "fil d'actu Following" with "fil des abonnements"

i thought i did that already oops

* fixed DID mistranslation

i thought it stood for Direct Inward Dialing

* applied suggestions from @signez

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* replaced spaces to non breaking spaces where necessary

might have some missing, i'll patch these up while fixing apostrophes

* fixed apostrophes

i also swapped "Changer l'e-mail" with "Changer votre e-mail", thought since it was an account-related thing, IIRC most of the account settings (handle, password, etc.) are possessive towards the user so i thought it'd be better to keep it consistent

* removed the period at the start

why is that here get that outta here

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* applied suggestions from @surfdude29

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>

* Fix the remaning 'like' mentions in French

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-11-23 15:48:52 -08:00
codehead 21a5140704 Translate missing strings. (#6599)
Co-authored-by: Javier Arturo Rodriguez <javier@rodriguez.org.mx>
2024-11-23 15:47:42 -08:00
Luan 468de4c6db Update Portuguese localization (#6603)
* Update PT-BR messages.po

* Apply suggestions from code review

Co-authored-by: Paul Frazee <pfrazee@gmail.com>

* Apply suggestions from code review

* Apply suggestions from code review

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-11-23 15:46:38 -08:00
Frudrax Cheng 260eb59530 Update Chinese & Cantonese localization (#6626)
* Update translates from crowdin

* Completed the translations for video and HTTP referer control

* Improved translation

* Fix several translation issues

* Improved Cantonese translations
2024-11-23 15:14:53 -08:00
Kevin Scannell 69e5174057 Update Irish translation (#6668) 2024-11-23 15:12:22 -08:00
dan 9f070834dd Fix skeleton alignment (#6676) 2024-11-23 22:10:53 +00:00
dan aa58216b6d Fix jumpy web animation for modal backdrop (#6673) 2024-11-23 21:36:35 +00:00
Nick Perez fdc3f0f17d perf: optimizations for composer with Tiptap (#6315)
* chore: update tiptap packages

* perf: reduce number of re-renders

* refactor: apply min height without a layout effect

* Remove stale zeed-dom resolution

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 21:07:37 +00:00
Khuddite 0395ba3e79 derive bottom padding from header height for profiles list (#6152) 2024-11-23 20:20:09 +00:00
Bas van den Wollenberg b892d8be08 Fix media query used to prevent enter sending DM on mobile web (#6669) 2024-11-23 20:11:13 +00:00
Luke Lucas 9663b3e855 fix: nothing selected bug (#6260)
* fix: nothing selected bug

* fix: consolidate related logic for audience settings

* simplify

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 20:07:44 +00:00
Khuddite f802f81fa6 Fix broken pagination for lists tab on profile page (#6221)
* set onEndReachedThreshold to 2 for ProfileLists

* Add a footer for ProfileLists component for consistency

* Remove logs

* Revert onEndReachedThreshold change on Feed component

* Fix threshold defaults to match native

* Align lists and feedgens

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 19:52:36 +00:00
Roland Crosby 30af267bb4 Fix hovered repost button styling when logged out (#6222) 2024-11-23 19:17:29 +00:00
dan b1c1c49897 Fix avi button hitslops (#6662)
* Remove web hack from non-web file

* Remove hitSlop on the wrong Pressable

It is not doing anything useful.

* Extend avi column to prevent hit rect clipping

You can't click outside the parent on Android.

* Bump pressed opacity to .8

* Slightly reduce avi button hitslops

* Asymmetric hit slop
2024-11-23 19:13:17 +00:00
Khuddite e428474478 Fix inconsistent number formatting between mobile and web (#6384)
* Manual truncation & identify factor points for each lang

* Reduce indirection

* Add test

Co-authored-by: khuddite <biliie811028@hotmail.com>

* Handle big numbers, clarify special case

* Clarify the reason

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 19:12:25 +00:00
Horus Lugo 4dd62e24ea Fix Newline handling in Web's Composer (#6658) 2024-11-23 17:34:16 +00:00
Frudrax Cheng d29599fa6c Fix translate button not working (#6657)
* Update PostThreadItem.tsx

* Fix in-app browser usage

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-11-23 17:25:14 +00:00
Trivikram Kamat e9a792e4c1 Bump @atproto/dev-env to align with @atproto/api (#6652) 2024-11-23 14:01:05 +00:00
dan 631277dc3d Add a hotness thread sort (#6649)
* Add a hotness thread sort

* Bump @atproto/api
2024-11-23 03:27:17 +00:00
dan ac5b2cf31f Pass referrer on native (with an opt out) (#6648)
* Pass referer on native

* Add ChainLink3

* Add an opt out for sending utm

* Remove noreferrer on links

We do have <meta name="referrer" content="origin-when-cross-origin"> in HTML, should be sufficient.

* Narrow down the condition slightly

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-11-22 23:28:45 +00:00
dan fee2f5daa2 Remove indirection, insert between slices (#6645) 2024-11-22 22:01:52 +00:00
Guido Leenders 523d1f01a5 Change translation of "appeal" [ER]. 2024-11-18 15:07:04 +01:00
Guido Leenders 93dec879ad Included review remarks by SleeplessByte [ER]. 2024-11-17 21:10:49 +01:00
Guido Leenders f139bcbcd4 Fix typo [PR]. 2024-11-14 10:52:08 +01:00
Guido Leenders 2cb6e713bb First completion [ER]. 2024-11-14 10:49:23 +01:00
Guido Leenders 6aa44d681d More Dutch translations [ER]. 2024-11-14 10:05:30 +01:00
Guido Leenders 1b87351d38 More Dutch translations [ER]. 2024-11-13 23:48:45 +01:00
Guido Leenders ef14faaa58 More Dutch translations [ER]. 2024-11-13 17:23:04 +01:00
Guido Leenders 54a4a6c161 More Dutch translations [ER]. 2024-11-13 14:17:36 +01:00
Guido Leenders 8754527aa6 More Dutch translations [ER]. 2024-11-13 12:15:15 +01:00
Guido Leenders be429d5750 More translations [ER]. 2024-11-12 19:48:17 +01:00
Guido Leenders 874a624e25 Add first translation of Dutch [ER]. 2024-11-12 16:19:30 +01:00
Guido Leenders 5910f78329 Revert changes to packages.json [PR]. 2024-11-12 10:00:01 +01:00
Guido Leenders b6fdde2f04 Allow use of Dutch translations [ER]. 2024-11-12 09:45:10 +01:00
681 changed files with 204337 additions and 91242 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
# Copy this to `.env` and `.env.test` files
BITDRIFT_API_KEY=
SENTRY_AUTH_TOKEN=
EXPO_PUBLIC_ENV=development
EXPO_PUBLIC_LOG_LEVEL=debug
EXPO_PUBLIC_LOG_DEBUG=
EXPO_PUBLIC_BUNDLE_IDENTIFIER=
-13
View File
@@ -80,19 +80,6 @@ module.exports = {
],
'simple-import-sort/exports': 'error',
'react-compiler/react-compiler': 'warn',
'no-restricted-imports': [
'error',
{
paths: [
{
name: '@atproto/api',
importNames: ['moderatePost'],
message:
'Please use `moderatePost_wrapped` from `#/lib/moderatePost_wrapped` instead.',
},
],
},
],
},
ignorePatterns: [
'**/__mocks__/*.ts',
@@ -64,6 +64,7 @@ jobs:
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "$json" > google-services.json
- name: 🏗️ EAS Build
+1
View File
@@ -76,6 +76,7 @@ jobs:
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
- name: 🏗️ EAS Build
@@ -69,6 +69,9 @@ jobs:
- name: Lint check
run: yarn lint
- name: Lint lockfile
run: yarn lockfile-lint
- name: Prettier check
run: yarn prettier --check .
@@ -101,6 +104,7 @@ jobs:
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "$json" > google-services.json
- name: 🏗️ Create Bundle
@@ -196,6 +200,7 @@ jobs:
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json
- name: 🏗️ EAS Build
@@ -222,7 +227,7 @@ jobs:
concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}-build-android
cancel-in-progress: false
needs: [ bundleDeploy ]
needs: [bundleDeploy]
# Gotta check if its NOT '[]' because any md5 hash in the outputs is detected as a possible secret and won't be
# available here
if: ${{ inputs.channel != 'production' && needs.bundleDeploy.outputs.changes-detected }}
@@ -273,6 +278,7 @@ jobs:
echo "${{ secrets.ENV_TOKEN }}" > .env
echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
echo "BITDRIFT_API_KEY=${{ secrets.BITDRIFT_API_KEY }}" >> .env
echo "$json" > google-services.json
- name: 🏗️ EAS Build
+2 -2
View File
@@ -19,7 +19,7 @@ jobs:
- name: Set up Go tooling
uses: actions/setup-go@v3
with:
go-version: '1.22'
go-version: '1.23'
- name: Dummy Static Files
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/css/blah.txt && touch bskyweb/static/media/blah.txt
- name: Check
@@ -36,7 +36,7 @@ jobs:
- name: Set up Go tooling
uses: actions/setup-go@v3
with:
go-version: '1.22'
go-version: '1.23'
- name: Dummy Static Files
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/css/blah.txt && touch bskyweb/static/media/blah.txt
- name: Lint
+3 -1
View File
@@ -28,6 +28,8 @@ jobs:
attempt_delay: 2000
- name: Lint check
run: yarn lint
- name: Lint lockfile
run: yarn lockfile-lint
- name: Prettier check
run: yarn prettier --check .
- name: Check & compile i18n
@@ -54,4 +56,4 @@ jobs:
run: yarn intl:build
- name: Run tests
run: |
NODE_ENV=test EXPO_PUBLIC_ENV=test yarn test --forceExit
NODE_ENV=test yarn test --forceExit
@@ -0,0 +1,49 @@
name: Nightly Update Source Languages
on:
schedule:
- cron: '0 2 * * *' # run at 2 AM UTC
workflow_dispatch:
jobs:
extract-languages:
name: Nightly Update Source Languages
runs-on: ubuntu-latest
permissions:
# Give the default GITHUB_TOKEN write permission to commit and push the
# added or changed files to the repository.
contents: write
steps:
- name: Check out Git repository
uses: actions/checkout@v3
with:
ssh-key: ${{secrets.GH_ACTION_DEPLOY_KEY}}
- name: Install node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
command: yarn --frozen-lockfile
attempt_limit: 3
attempt_delay: 2000
- name: Extract language strings
run: yarn intl:extract
- name: Create commit
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: Nightly source-language update
file_pattern: ./src/locale/locales/en/messages.po
- name: Push source lang to Crowdin
uses: crowdin/github-action@v2
with:
upload_sources: true
upload_sources_args: "-b main"
upload_translations: false
push_translations: false
push_sources: false
create_pull_request: false
env:
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
+46
View File
@@ -0,0 +1,46 @@
name: Lockfile
on:
pull_request:
concurrency:
group: '${{ github.workflow }}-${{ github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
verify-yarn-lock:
name: No manual yarn.lock edits
runs-on: ubuntu-latest
steps:
- name: Check out PR HEAD
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Fetch base branch
run: git fetch origin ${{ github.base_ref }} --depth=1
- name: Install node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Reset yarn.lock to base
run: git show "origin/${{ github.base_ref }}:yarn.lock" > yarn.lock
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
# Fine to skip scripts since we don't run any code
command: yarn install --ignore-scripts
attempt_limit: 3
attempt_delay: 2000
- name: Verify yarn.lock
run: |
git diff --quiet --exit-code || {
echo '::error::`yarn.lock` does not match what Yarn would generate given the base `yarn.lock` and the head `package.json`.'
echo '::error:: - If this is intentional, you can ignore this check.'
echo '::error:: - If this is unintentional, apply the following diff:'
git --no-pager diff
exit 1
}
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.22-bullseye AS build-env
FROM golang:1.23-bullseye AS build-env
WORKDIR /usr/src/social-app
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.22-bullseye AS build-env
FROM golang:1.23-bullseye AS build-env
WORKDIR /usr/src/social-app
+1 -1
View File
@@ -1,4 +1,4 @@
Copyright 20232024 Bluesky PBC
Copyright 20232025 Bluesky PBC
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:
+3 -3
View File
@@ -20,7 +20,7 @@ build-web-embed: ## Compile web embed bundle, copy to bskyweb/embedr* directorie
.PHONY: test
test: ## Run all tests
NODE_ENV=test EXPO_PUBLIC_ENV=test yarn test
NODE_ENV=test yarn test
.PHONY: lint
lint: ## Run style checks and verify syntax
@@ -37,6 +37,6 @@ deps: ## Installs dependent libs using 'yarn install'
.PHONY: nvm-setup
nvm-setup: ## Use NVM to install and activate node+yarn
nvm install 18
nvm use 18
nvm install 20
nvm use 20
npm install --global yarn
+1 -2
View File
@@ -10,8 +10,7 @@ appId: xyz.blueskyweb.app
id: "e2eOpenLoggedOutView"
- tapOn:
id: "createAccountButton"
- tapOn:
id: "selectServiceButton"
- tapOn: "Bluesky Social"
- tapOn:
id: "customSelectBtn"
- tapOn:
+6 -9
View File
@@ -26,7 +26,7 @@ appId: xyz.blueskyweb.app
- tapOn: "Save"
- assertNotVisible:
id: "createOrEditListModal"
- tapOn: "About"
- tapOn: "People"
- assertVisible: "Good Ppl"
- assertVisible: "They good"
@@ -74,7 +74,6 @@ appId: xyz.blueskyweb.app
- tapOn: "Delete List"
- tapOn:
id: "confirmBtn"
- assertVisible: "This list is empty!"
- tapOn:
label: "Create a new curatelist"
@@ -93,14 +92,12 @@ appId: xyz.blueskyweb.app
- tapOn: "Save"
- assertNotVisible:
id: "createOrEditListModal"
- tapOn: "About"
- tapOn: "People"
- assertVisible: "Good Ppl"
- assertVisible: "They good"
- tapOn: "About"
- tapOn: "People"
- tapOn:
label: "Adds users on curatelists from the list"
id: "addUserBtn"
- tapOn: "Start adding people"
- assertVisible:
id: "listAddUserModal"
- tapOn:
@@ -145,7 +142,7 @@ appId: xyz.blueskyweb.app
id: "e2eGotoLists"
- tapOn: "Good Ppl"
- tapOn: "About"
- tapOn: "People"
- assertVisible:
label: "Removes users on curatelists from the list"
id: "user-bob.test"
@@ -163,7 +160,7 @@ appId: xyz.blueskyweb.app
- tapOn:
label: "Adds and removes users on curatelists from the profile"
id: "bottomBarSearchBtn"
- tapOn: "Search"
- tapOn: "Search for posts, users, or feeds"
- inputText: "bob"
- tapOn:
id: "searchAutoCompleteResult-bob.test"
+9 -17
View File
@@ -11,14 +11,12 @@ appId: xyz.blueskyweb.app
# Pin alice's feed
- extendedWaitUntil:
visible:
id: "viewHeaderDrawerBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
visible: "Open drawer menu"
- tapOn: "Open drawer menu"
- tapOn:
id: "profileCardButton"
- tapOn:
id: "profilePager-selector-4"
id: "profilePager-selector-5"
- tapOn: "alice-favs"
- tapOn: "Pin to Home"
- tapOn:
@@ -32,8 +30,7 @@ appId: xyz.blueskyweb.app
text: "alice-favs"
# Set alice-favs first
- tapOn:
id: "viewHeaderDrawerBtn"
- tapOn: "Open drawer menu"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
@@ -44,8 +41,7 @@ appId: xyz.blueskyweb.app
- tapOn:
label: "Save button"
id: "saveChangesBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
- tapOn: "Go back"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "alice-favs"
@@ -54,8 +50,7 @@ appId: xyz.blueskyweb.app
text: "Following"
# Set following first
- tapOn:
id: "viewHeaderDrawerBtn"
- tapOn: "Open drawer menu"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
@@ -66,8 +61,7 @@ appId: xyz.blueskyweb.app
- tapOn:
label: "Save button"
id: "saveChangesBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
- tapOn: "Go back"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "Following"
@@ -76,8 +70,7 @@ appId: xyz.blueskyweb.app
text: "alice-favs"
# Remove following
- tapOn:
id: "viewHeaderDrawerBtn"
- tapOn: "Open drawer menu"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
@@ -88,8 +81,7 @@ appId: xyz.blueskyweb.app
- tapOn:
label: "Save button"
id: "saveChangesBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
- tapOn: "Go back"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "alice-favs"
+4 -2
View File
@@ -21,13 +21,15 @@ appId: xyz.blueskyweb.app
label: "Feeds button disappears after pinning a feed"
id: "bottomBarProfileBtn"
- tapOn:
id: "profilePager-selector-4"
id: "profilePager-selector-5"
- tapOn: "alice-favs"
- tapOn: "Pin to Home"
- tapOn:
id: "bottomBarHomeBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
id: "bottomBarHomeBtn"
- tapOn:
id: "bottomBarHomeBtn"
- assertNotVisible: "Feeds ✨"
- tapOn:
+1 -1
View File
@@ -14,7 +14,7 @@ appId: xyz.blueskyweb.app
id: "e2eGotoModeration"
- tapOn:
id: "moderationlistsBtn"
- tapOn: "New"
- tapOn: "New list"
- tapOn:
id: "editNameInput"
- inputText: "Muted Users"
+1 -1
View File
@@ -15,7 +15,7 @@ appId: xyz.blueskyweb.app
id: "bottomBarSearchBtn"
- tapOn:
id: "bottomBarSearchBtn"
- tapOn: "Search"
- tapOn: "Search for posts, users, or feeds"
- inputText: "b"
- tapOn:
id: "searchAutoCompleteResult-bob.test"
+2 -2
View File
@@ -12,8 +12,8 @@ appId: xyz.blueskyweb.app
# Navigate to another user profile via autocomplete
- tapOn:
id: "bottomBarSearchBtn"
- assertVisible: "Search"
- tapOn: "Search"
- assertVisible: "Search for posts, users, or feeds"
- tapOn: "Search for posts, users, or feeds"
- inputText: "b"
- tapOn:
id: "searchAutoCompleteResult-bob.test"
+2
View File
@@ -6,6 +6,8 @@ appId: xyz.blueskyweb.app
- waitForAnimationToEnd
- tapOn: "http://localhost:8081"
- waitForAnimationToEnd
- extendedWaitUntil:
visible: "Continue"
- swipe:
from: "Bluesky"
direction: DOWN
+42
View File
@@ -0,0 +1,42 @@
import {IsValidHandle, validateServiceHandle} from '#/lib/strings/handles'
describe('handle validation', () => {
const valid = [
['ali', 'bsky.social'],
['alice', 'bsky.social'],
['a-lice', 'bsky.social'],
['a-----lice', 'bsky.social'],
['123', 'bsky.social'],
['123456789012345678', 'bsky.social'],
['alice', 'custom-pds.com'],
['alice', 'my-custom-pds-with-long-name.social'],
['123456789012345678', 'my-custom-pds-with-long-name.social'],
]
it.each(valid)(`should be valid: %s.%s`, (handle, service) => {
const result = validateServiceHandle(handle, service)
expect(result.overall).toEqual(true)
})
const invalid = [
['al', 'bsky.social', 'frontLength'],
['-alice', 'bsky.social', 'hyphenStartOrEnd'],
['alice-', 'bsky.social', 'hyphenStartOrEnd'],
['%%%', 'bsky.social', 'handleChars'],
['1234567890123456789', 'bsky.social', 'frontLength'],
[
'1234567890123456789',
'my-custom-pds-with-long-name.social',
'frontLength',
],
['al', 'my-custom-pds-with-long-name.social', 'frontLength'],
['a'.repeat(300), 'toolong.com', 'totalLength'],
] satisfies [string, string, keyof IsValidHandle][]
it.each(invalid)(
`should be invalid: %s.%s due to %s`,
(handle, service, expectedError) => {
const result = validateServiceHandle(handle, service)
expect(result.overall).toEqual(false)
expect(result[expectedError]).toEqual(false)
},
)
})
+141 -47
View File
@@ -1,26 +1,6 @@
const pkg = require('./package.json')
const SPLASH_CONFIG = {
backgroundColor: '#ffffff',
image: './assets/splash.png',
resizeMode: 'cover',
}
const DARK_SPLASH_CONFIG = {
backgroundColor: '#001429',
image: './assets/splash-dark.png',
resizeMode: 'cover',
}
const SPLASH_CONFIG_ANDROID = {
backgroundColor: '#0c7cff',
image: './assets/splash.png',
resizeMode: 'cover',
}
const DARK_SPLASH_CONFIG_ANDROID = {
backgroundColor: '#0f141b',
image: './assets/splash-dark.png',
resizeMode: 'cover',
}
const DARK_SPLASH_ANDROID_BACKGROUND = '#0f141b'
module.exports = function (config) {
/**
@@ -35,9 +15,9 @@ module.exports = function (config) {
*/
const PLATFORM = process.env.EAS_BUILD_PLATFORM
const IS_DEV = process.env.EXPO_PUBLIC_ENV === 'development'
const IS_TESTFLIGHT = process.env.EXPO_PUBLIC_ENV === 'testflight'
const IS_PRODUCTION = process.env.EXPO_PUBLIC_ENV === 'production'
const IS_DEV = !IS_TESTFLIGHT || !IS_PRODUCTION
const ASSOCIATED_DOMAINS = [
'applinks:bsky.app',
@@ -70,11 +50,8 @@ module.exports = function (config) {
runtimeVersion: {
policy: 'appVersion',
},
orientation: 'portrait',
icon: './assets/icon.png',
icon: './assets/app-icons/ios_icon_default_light.png',
userInterfaceStyle: 'automatic',
splash: SPLASH_CONFIG,
// hsl(211, 99%, 53%), same as palette.default.brandText
primaryColor: '#1083fe',
ios: {
supportsTablet: false,
@@ -95,34 +72,43 @@ module.exports = function (config) {
CFBundleSpokenName: 'Blue Sky',
CFBundleLocalizations: [
'en',
'an',
'ast',
'ca',
'da',
'de',
'el',
'es',
'eu',
'fi',
'fr',
'ga',
'gl',
'hi',
'hu',
'ia',
'id',
'it',
'ja',
'km',
'ko',
'ne',
'nl',
'pl',
'pt',
'pt-BR',
'ro',
'ru',
'sv',
'th',
'tr',
'uk',
'zh_CN',
'zh_HK',
'zh_TW',
'vi',
'yue',
'zh-Hans',
'zh-Hant',
],
},
associatedDomains: ASSOCIATED_DOMAINS,
splash: {
...SPLASH_CONFIG,
dark: DARK_SPLASH_CONFIG,
},
entitlements: {
'com.apple.developer.kernel.increased-memory-limit': true,
'com.apple.developer.kernel.extended-virtual-addressing': true,
@@ -159,10 +145,10 @@ module.exports = function (config) {
// Dark nav bar in light mode is better than light nav bar in dark mode
androidNavigationBar: {
barStyle: 'light-content',
backgroundColor: DARK_SPLASH_CONFIG_ANDROID.backgroundColor,
backgroundColor: DARK_SPLASH_ANDROID_BACKGROUND,
},
android: {
icon: './assets/icon.png',
icon: './assets/app-icons/android_icon_default_light.png',
adaptiveIcon: {
foregroundImage: './assets/icon-android-foreground.png',
monochromeImage: './assets/icon-android-foreground.png',
@@ -188,10 +174,6 @@ module.exports = function (config) {
category: ['BROWSABLE', 'DEFAULT'],
},
],
splash: {
...SPLASH_CONFIG_ANDROID,
dark: DARK_SPLASH_CONFIG_ANDROID,
},
},
web: {
favicon: './assets/favicon.png',
@@ -213,6 +195,7 @@ module.exports = function (config) {
channel: UPDATES_CHANNEL,
},
plugins: [
'expo-video',
'expo-localization',
USE_SENTRY && [
'@sentry/react-native/expo',
@@ -231,10 +214,9 @@ module.exports = function (config) {
newArchEnabled: false,
},
android: {
compileSdkVersion: 34,
targetSdkVersion: 34,
buildToolsVersion: '34.0.0',
kotlinVersion: '1.8.0',
compileSdkVersion: 35,
targetSdkVersion: 35,
buildToolsVersion: '35.0.0',
newArchEnabled: false,
},
},
@@ -248,12 +230,19 @@ module.exports = function (config) {
},
],
'react-native-compressor',
[
'@bitdrift/react-native',
{
networkInstrumentation: true,
},
],
'./plugins/starterPackAppClipExtension/withStarterPackAppClip.js',
'./plugins/withAndroidManifestPlugin.js',
'./plugins/withAndroidManifestFCMIconPlugin.js',
'./plugins/withAndroidStylesWindowBackgroundPlugin.js',
'./plugins/withAndroidStylesAccentColorPlugin.js',
'./plugins/withAndroidSplashScreenStatusBarTranslucentPlugin.js',
'./plugins/withAndroidNoJitpackPlugin.js',
'./plugins/withNoBundleCompression.js',
'./plugins/shareExtension/withShareExtensions.js',
'./plugins/notificationsExtension/withNotificationsExtension.js',
'./plugins/withAppDelegateReferrer.js',
@@ -261,8 +250,8 @@ module.exports = function (config) {
'expo-font',
{
fonts: [
'./assets/fonts/inter/InterVariable.ttf',
'./assets/fonts/inter/InterVariable-Italic.ttf',
'./assets/fonts/inter/InterVariable.woff2',
'./assets/fonts/inter/InterVariable-Italic.woff2',
// Android only
'./assets/fonts/inter/Inter-Regular.otf',
'./assets/fonts/inter/Inter-Italic.otf',
@@ -273,6 +262,111 @@ module.exports = function (config) {
],
},
],
[
'expo-splash-screen',
{
ios: {
enableFullScreenImage_legacy: true,
backgroundColor: '#ffffff',
image: './assets/splash.png',
resizeMode: 'cover',
dark: {
enableFullScreenImage_legacy: true,
backgroundColor: '#001429',
image: './assets/splash-dark.png',
resizeMode: 'cover',
},
},
android: {
backgroundColor: '#0c7cff',
image: './assets/splash-android-icon.png',
imageWidth: 150,
dark: {
backgroundColor: '#0c2a49',
image: './assets/splash-android-icon-dark.png',
imageWidth: 150,
},
},
},
],
[
'@mozzius/expo-dynamic-app-icon',
{
/**
* Default set
*/
default_light: {
ios: './assets/app-icons/ios_icon_default_light.png',
android: './assets/app-icons/android_icon_default_light.png',
prerendered: true,
},
default_dark: {
ios: './assets/app-icons/ios_icon_default_dark.png',
android: './assets/app-icons/android_icon_default_dark.png',
prerendered: true,
},
/**
* Bluesky+ core set
*/
core_aurora: {
ios: './assets/app-icons/ios_icon_core_aurora.png',
android: './assets/app-icons/android_icon_core_aurora.png',
prerendered: true,
},
core_bonfire: {
ios: './assets/app-icons/ios_icon_core_bonfire.png',
android: './assets/app-icons/android_icon_core_bonfire.png',
prerendered: true,
},
core_sunrise: {
ios: './assets/app-icons/ios_icon_core_sunrise.png',
android: './assets/app-icons/android_icon_core_sunrise.png',
prerendered: true,
},
core_sunset: {
ios: './assets/app-icons/ios_icon_core_sunset.png',
android: './assets/app-icons/android_icon_core_sunset.png',
prerendered: true,
},
core_midnight: {
ios: './assets/app-icons/ios_icon_core_midnight.png',
android: './assets/app-icons/android_icon_core_midnight.png',
prerendered: true,
},
core_flat_blue: {
ios: './assets/app-icons/ios_icon_core_flat_blue.png',
android: './assets/app-icons/android_icon_core_flat_blue.png',
prerendered: true,
},
core_flat_white: {
ios: './assets/app-icons/ios_icon_core_flat_white.png',
android: './assets/app-icons/android_icon_core_flat_white.png',
prerendered: true,
},
core_flat_black: {
ios: './assets/app-icons/ios_icon_core_flat_black.png',
android: './assets/app-icons/android_icon_core_flat_black.png',
prerendered: true,
},
core_classic: {
ios: './assets/app-icons/ios_icon_core_classic.png',
android: './assets/app-icons/android_icon_core_classic.png',
prerendered: true,
},
},
],
['expo-screen-orientation', {initialOrientation: 'PORTRAIT_UP'}],
[
'react-native-vision-camera',
{
enableLocation: false,
cameraPermissionText: 'Bluesky needs access to your camera.',
enableMicrophonePermission: true,
microphonePermissionText:
'Bluesky needs access to your microphone.',
},
],
].filter(Boolean),
extra: {
eas: {
Binary file not shown.

After

Width:  |  Height:  |  Size: 783 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 714 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 468 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 671 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 467 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 379 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 389 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 452 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="m15.604 2.47-.642 1.112a5 5 0 0 1 2.05 4.034H7.005c0-1.658.809-3.123 2.05-4.034L8.41 2.47a.313.313 0 0 1 .542-.313l.627 1.086a5 5 0 0 1 2.428-.63c.882 0 1.709.23 2.428.63l.627-1.085a.31.31 0 0 1 .426-.115.31.31 0 0 1 .115.428ZM9.506 5.114a.625.625 0 1 0 1.25 0 .625.625 0 0 0-1.25 0Zm3.753 0a.625.625 0 1 0 1.25 0 .625.625 0 0 0-1.25 0ZM3.878 8.866a1.251 1.251 0 0 1 2.501 0v5.004a1.252 1.252 0 0 1-2.501 0V8.866Zm13.759 0a1.251 1.251 0 0 1 2.501 0v5.004a1.251 1.251 0 0 1-2.501 0V8.866ZM7.005 17.622h1.25v3.128a1.251 1.251 0 0 0 2.502 0v-3.128h2.502v3.128a1.251 1.251 0 0 0 2.501 0v-3.128h1.25V8.241H7.006v9.381Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 756 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M14.57 4.348c.65-.775 1.11-1.85 1.11-2.926 0-.149-.013-.3-.04-.422-1.057.04-2.314.708-3.072 1.592-.595.68-1.15 1.756-1.15 2.846 0 .164.027.327.04.38.066.012.175.027.283.027.948 0 2.14-.638 2.83-1.497Zm4.835 3.847.052-.035c-1.407-2.03-3.546-2.084-4.14-2.084-.911 0-1.726.325-2.411.598-.497.198-.925.368-1.271.368-.383 0-.822-.178-1.311-.377-.618-.25-1.317-.534-2.087-.534C5.64 6.13 3 8.296 3 12.379c0 2.545.975 5.227 2.182 6.954C6.224 20.803 7.13 22 8.43 22c.616 0 1.068-.193 1.543-.395.526-.225 1.082-.462 1.922-.462.849 0 1.356.223 1.845.437.455.2.895.393 1.58.393 1.42 0 2.353-1.292 3.246-2.586 1.003-1.47 1.422-2.913 1.435-2.98-.081-.027-2.802-1.13-2.802-4.246 0-2.51 1.855-3.734 2.207-3.966Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 838 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M11.293 4.293a1 1 0 0 1 1.414 0l4 4a1 1 0 0 1-1.414 1.414L12 6.414 8.707 9.707a1 1 0 0 1-1.414-1.414l4-4Zm-4 10a1 1 0 0 1 1.414 0L12 17.586l3.293-3.293a1 1 0 0 1 1.414 1.414l-4 4a1 1 0 0 1-1.414 0l-4-4a1 1 0 0 1 0-1.414Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 363 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4 12a8 8 0 1 1 16 0 8 8 0 0 1-16 0Zm8-10C6.477 2 2 6.477 2 12s4.477 10 10 10 10-4.477 10-10S17.523 2 12 2Zm1 6a1 1 0 1 0-2 0v4a1 1 0 0 0 .293.707l2.5 2.5a1 1 0 0 0 1.414-1.414L13 11.586V8Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 332 B

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M7 2a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0V3a1 1 0 0 1 1-1Zm4 0a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V3a1 1 0 0 1 1-1Zm4 0a1 1 0 0 1 1 1v2a1 1 0 1 1-2 0V3a1 1 0 0 1 1-1ZM4 9a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2h.5a3.5 3.5 0 1 1 0 7H18v4a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V9Zm12 0H6v11h10V9Zm2 5h.5a1.5 1.5 0 0 0 0-3H18v3Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 437 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M3 4a1 1 0 0 1 1-1h13a1 1 0 0 1 .707.293l3 3A1 1 0 0 1 21 7v13a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4Zm6 15h6v-5H9v5Zm8 0v-6a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v6H5V5h2v3a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V5.414l2 2V19h-2ZM15 5H9v2h6V5Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 361 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M6 4.667A2.667 2.667 0 0 1 8.667 2c1.34 0 2.538.608 3.333 1.564A4.32 4.32 0 0 1 15.333 2 2.667 2.667 0 0 1 18 4.667c0 .859-.25 1.66-.681 2.333H20a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-7V7h.667A2.333 2.333 0 0 0 16 4.667.667.667 0 0 0 15.333 4 2.333 2.333 0 0 0 13 6.333V7h-2v-.667A2.333 2.333 0 0 0 8.667 4 .667.667 0 0 0 8 4.667 2.333 2.333 0 0 0 10.333 7H11v4H4a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1h2.681A4.3 4.3 0 0 1 6 4.667ZM11 13H4v7a1 1 0 0 0 1 1h6v-8Zm9 0h-7v8h6a1 1 0 0 0 1-1v-7Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 617 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#1185FE" d="M6.335 4.212c2.293 1.76 4.76 5.327 5.665 7.241.906-1.914 3.372-5.482 5.665-7.241C19.319 2.942 22 1.96 22 5.086c0 .624-.35 5.244-.556 5.994-.713 2.608-3.315 3.273-5.629 2.87 4.045.704 5.074 3.035 2.852 5.366-4.22 4.426-6.066-1.111-6.54-2.53-.086-.26-.126-.382-.127-.278 0-.104-.041.018-.128.278-.473 1.419-2.318 6.956-6.539 2.53-2.222-2.331-1.193-4.662 2.852-5.366-2.314.403-4.916-.262-5.63-2.87C2.35 10.33 2 5.71 2 5.086c0-3.126 2.68-2.144 4.335-.874Z"/></svg>

After

Width:  |  Height:  |  Size: 557 B

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M6.5 4.999Zm0 0a.1.1 0 0 1-.016.024.2.2 0 0 1-.152.043q.086.014.168.032V7.5a1 1 0 0 1-.33.742c-.543.49-.917 1.176-1.23 2.036a1 1 0 0 1-.94.657H3V14h1a1 1 0 0 1 .866.5c.436.754.879 1.195 1.637 1.636A1 1 0 0 1 7 17v2h2a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2h2v-2.537a1 1 0 0 1 .332-.744A4.98 4.98 0 0 0 19 11.999 5 5 0 0 0 14 7H9.474a1 1 0 0 1-.893-.55v-.001l-.001-.002-.005-.008L9.474 6l-.9.438h.001v.002l.002.001.001.003.002.003v.003a2.6 2.6 0 0 0-.443-.538c-.319-.298-.839-.648-1.637-.814V5Zm2.082 1.452ZM9.5 4.447c.211.196.379.387.508.553H14a7 7 0 0 1 6.72 8.96 1.003 1.003 0 0 0 1.146-1.46 1 1 0 1 1 1.731-1 3 3 0 0 1-3.714 4.286A7 7 0 0 1 19 16.888V19a2 2 0 0 1-2 2h-2a2 2 0 0 1-2-2h-2a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2v-1.45A5.8 5.8 0 0 1 3.448 16H3a2 2 0 0 1-2-2v-3.065a2 2 0 0 1 2-2h.324c.286-.649.657-1.291 1.176-1.852V5c0-1.047.89-2.12 2.161-1.907 1.33.223 2.248.805 2.839 1.354ZM8.25 12a1.25 1.25 0 1 0 0-2.5 1.25 1.25 0 0 0 0 2.5Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" d="M7.5 2a1 1 0 0 0-1 1v3.997a6.25 6.25 0 0 1-1.83 4.42l-.377.376A1 1 0 0 0 4 12.5V15a1 1 0 0 0 1 1h6v5a1 1 0 1 0 2 0v-5h6a1 1 0 0 0 1-1v-2.5a1 1 0 0 0-.293-.707l-.376-.377a6.25 6.25 0 0 1-1.831-4.42V3.001a1 1 0 0 0-1-1h-9Z"/></svg>

After

Width:  |  Height:  |  Size: 323 B

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 4c0-1.012.894-2.187 2.237-1.846a5.002 5.002 0 0 1 3.218 7.119 4 4 0 0 1 2.345 4.976A3.501 3.501 0 0 1 18.5 21h-13a3.5 3.5 0 0 1-1.3-6.75 4 4 0 0 1 2.052-4.848A4 4 0 0 1 10 4h2.001Zm-4.187 7.009A2 2 0 0 0 6 13c0 .366.098.706.271 1H12a1 1 0 1 1 0 2H5.5a1.5 1.5 0 0 0 0 3h13a1.5 1.5 0 1 0 0-3H17a1 1 0 1 1 0-2h.729A1.96 1.96 0 0 0 18 13a2 2 0 0 0-2-2h-2a1 1 0 1 1 0-2h1.236a3.002 3.002 0 0 0-1.243-4.832A2 2 0 0 1 12 6h-2a2 2 0 0 0-1.728 3.009H9a1 1 0 0 1 0 2H7.813Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 610 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" stroke="#000" stroke-linejoin="round" d="M4 5.5a.5.5 0 0 0-.5.5v2.535a.5.5 0 0 0 .25.433A3.5 3.5 0 0 1 5.5 12a3.5 3.5 0 0 1-1.75 3.032.5.5 0 0 0-.25.433V18a.5.5 0 0 0 .5.5h16a.5.5 0 0 0 .5-.5v-2.535a.5.5 0 0 0-.25-.433A3.5 3.5 0 0 1 18.5 12a3.5 3.5 0 0 1 1.75-3.032.5.5 0 0 0 .25-.433V6a.5.5 0 0 0-.5-.5H4ZM2.5 6A1.5 1.5 0 0 1 4 4.5h16A1.5 1.5 0 0 1 21.5 6v3.17a.5.5 0 0 1-.333.472 2.501 2.501 0 0 0 0 4.716.5.5 0 0 1 .333.471V18a1.5 1.5 0 0 1-1.5 1.5H4A1.5 1.5 0 0 1 2.5 18v-3.17a.5.5 0 0 1 .333-.472 2.501 2.501 0 0 0 0-4.716.5.5 0 0 1-.333-.471V6Zm12 2a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0Zm0 4a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0Zm0 4a.5.5 0 1 1 1 0 .5.5 0 0 1-1 0Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M3 4a1 1 0 0 0-1 1v4.17a1 1 0 0 0 .667.944 2.001 2.001 0 0 1 0 3.772A1 1 0 0 0 2 14.83V19a1 1 0 0 0 1 1h18a1 1 0 0 0 1-1v-4.17a1 1 0 0 0-.667-.944 2.001 2.001 0 0 1 0-3.772A1 1 0 0 0 22 9.17V5a1 1 0 0 0-1-1H3Zm1 4.535V6h16v2.535A4 4 0 0 0 18 12c0 1.482.805 2.773 2 3.465V18H4v-2.535A4 4 0 0 0 6 12a4 4 0 0 0-2-3.465ZM15 15a1 1 0 1 0 0 2 1 1 0 0 0 0-2Zm-1-3a1 1 0 1 1 2 0 1 1 0 0 1-2 0Zm1-5a1 1 0 1 0 0 2 1 1 0 0 0 0-2Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 756 B

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

+1
View File
@@ -4,6 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bluesky Embed</title>
<link rel="preconnect" href="https://public.api.bsky.app">
<link rel="apple-touch-icon" sizes="180x180" href="/static/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/favicon-16x16.png">
+1
View File
@@ -4,6 +4,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bluesky Embed</title>
<link rel="preconnect" href="https://public.api.bsky.app">
<link rel="apple-touch-icon" sizes="180x180" href="/static/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/favicon-16x16.png">
+3 -1
View File
@@ -20,6 +20,7 @@ window.addEventListener('message', event => {
return
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const id = (event.data as {id: string}).id
if (!id) {
return
@@ -33,6 +34,7 @@ window.addEventListener('message', event => {
return
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const height = (event.data as {height: number}).height
if (height) {
embed.style.height = `${height}px`
@@ -47,7 +49,7 @@ window.addEventListener('message', event => {
* @returns
*/
function scan(node = document) {
const embeds = node.querySelectorAll('[data-bluesky-uri]')
const embeds = node.querySelectorAll<HTMLIFrameElement>('[data-bluesky-uri]')
for (let i = 0; i < embeds.length; i++) {
const id = String(Math.random()).slice(2)
+17
View File
@@ -0,0 +1,17 @@
export function applyTheme(theme: 'light' | 'dark') {
document.documentElement.classList.remove('light', 'dark')
document.documentElement.classList.add(theme)
}
export function initColorMode() {
applyTheme(
window.matchMedia('(prefers-color-scheme: dark)').matches
? 'dark'
: 'light',
)
window
.matchMedia('(prefers-color-scheme: dark)')
.addEventListener('change', mql => {
applyTheme(mql.matches ? 'dark' : 'light')
})
}
+1 -1
View File
@@ -37,7 +37,7 @@ export function Container({
return (
<div
ref={ref}
className="w-full bg-white hover:bg-neutral-50 relative transition-colors max-w-[600px] min-w-[300px] flex border rounded-xl"
className="w-full bg-white text-black hover:bg-neutral-50 dark:bg-dimmedBg dark:hover:bg-dimmedBgLighten relative transition-colors max-w-[600px] min-w-[300px] flex border dark:border-slate-600 dark:text-slate-200 rounded-xl"
onClick={() => {
if (ref.current && href) {
// forwardRef requires preact/compat - let's keep it simple
+20 -14
View File
@@ -78,9 +78,9 @@ export function Embed({
return (
<Link
href={`/profile/${record.author.did}/post/${getRkey(record)}`}
className="transition-colors hover:bg-neutral-100 border rounded-lg p-2 gap-1.5 w-full flex flex-col">
className="transition-colors hover:bg-neutral-100 dark:hover:bg-slate-700 border dark:border-slate-600 rounded-lg p-2 gap-1.5 w-full flex flex-col">
<div className="flex gap-1.5 items-center">
<div className="w-4 h-4 overflow-hidden rounded-full bg-neutral-300 shrink-0">
<div className="w-4 h-4 overflow-hidden rounded-full bg-neutral-300 dark:bg-slate-700 shrink-0">
<img
src={record.author.avatar}
style={isAuthorLabeled ? {filter: 'blur(1.5px)'} : undefined}
@@ -88,7 +88,7 @@ export function Embed({
</div>
<p className="line-clamp-1 text-sm">
<span className="font-bold">{record.author.displayName}</span>
<span className="text-textLight ml-1">
<span className="text-textLight dark:text-textDimmed ml-1">
@{record.author.handle}
</span>
</p>
@@ -209,7 +209,7 @@ function Info({children}: {children: ComponentChildren}) {
return (
<div className="w-full rounded-lg border py-2 px-2.5 flex-row flex gap-2 bg-neutral-50">
<img src={infoIcon} className="w-4 h-4 shrink-0 mt-0.5" />
<p className="text-sm text-textLight">{children}</p>
<p className="text-sm text-textLight dark:text-textDimmed">{children}</p>
</div>
)
}
@@ -308,7 +308,7 @@ function ExternalEmbed({
return (
<Link
href={content.external.uri}
className="w-full rounded-lg overflow-hidden border flex flex-col items-stretch"
className="w-full rounded-lg overflow-hidden border dark:border-slate-600 flex flex-col items-stretch"
disableTracking>
{content.external.thumb && (
<img
@@ -317,11 +317,11 @@ function ExternalEmbed({
/>
)}
<div className="py-3 px-4">
<p className="text-sm text-textLight line-clamp-1">
<p className="text-sm text-textLight dark:text-textDimmed line-clamp-1">
{toNiceDomain(content.external.uri)}
</p>
<p className="font-semibold line-clamp-3">{content.external.title}</p>
<p className="text-sm text-textLight line-clamp-2 mt-0.5">
<p className="text-sm text-textLight dark:text-textDimmed line-clamp-2 mt-0.5">
{content.external.description}
</p>
</div>
@@ -345,23 +345,29 @@ function GenericWithImageEmbed({
return (
<Link
href={href}
className="w-full rounded-lg border py-2 px-3 flex flex-col gap-2">
className="w-full rounded-lg border dark:border-slate-600 py-2 px-3 flex flex-col gap-2">
<div className="flex gap-2.5 items-center">
{image ? (
<img
src={image}
alt={title}
className="w-8 h-8 rounded-md bg-neutral-300 shrink-0"
className="w-8 h-8 rounded-md bg-neutral-300 dark:bg-slate-700 shrink-0"
/>
) : (
<div className="w-8 h-8 rounded-md bg-brand shrink-0" />
)}
<div className="flex-1">
<p className="font-bold text-sm">{title}</p>
<p className="text-textLight text-sm">{subtitle}</p>
<p className="text-textLight dark:text-textDimmed text-sm">
{subtitle}
</p>
</div>
</div>
{description && <p className="text-textLight text-sm">{description}</p>}
{description && (
<p className="text-textLight dark:text-textDimmed text-sm">
{description}
</p>
)}
</Link>
)
}
@@ -406,7 +412,7 @@ function StarterPackEmbed({
return (
<Link
href={starterPackHref}
className="w-full rounded-lg overflow-hidden border flex flex-col items-stretch">
className="w-full rounded-lg overflow-hidden border dark:border-slate-600 flex flex-col items-stretch">
<img src={imageUri} className="aspect-[1.91/1] object-cover" />
<div className="py-3 px-4">
<div className="flex space-x-2 items-center">
@@ -415,7 +421,7 @@ function StarterPackEmbed({
<p className="font-semibold leading-[21px]">
{content.record.name}
</p>
<p className="text-sm text-textLight line-clamp-2 leading-[18px]">
<p className="text-sm text-textLight dark:text-textDimmed line-clamp-2 leading-[18px]">
Starter pack by{' '}
{content.creator.displayName || `@${content.creator.handle}`}
</p>
@@ -425,7 +431,7 @@ function StarterPackEmbed({
<p className="text-sm mt-1">{content.record.description}</p>
)}
{!!content.joinedAllTimeCount && content.joinedAllTimeCount > 50 && (
<p className="text-sm font-semibold text-textLight mt-1">
<p className="text-sm font-semibold text-textLight dark:text-textDimmed mt-1">
{content.joinedAllTimeCount} users have joined!
</p>
)}
+10 -8
View File
@@ -38,7 +38,7 @@ export function Post({thread}: Props) {
<div className="flex-1 flex-col flex gap-2" lang={record?.langs?.[0]}>
<div className="flex gap-2.5 items-center cursor-pointer">
<Link href={`/profile/${post.author.did}`} className="rounded-full">
<div className="w-10 h-10 overflow-hidden rounded-full bg-neutral-300 shrink-0">
<div className="w-10 h-10 overflow-hidden rounded-full bg-neutral-300 dark:bg-slate-700 shrink-0">
<img
src={post.author.avatar}
style={isAuthorLabeled ? {filter: 'blur(2.5px)'} : undefined}
@@ -53,7 +53,7 @@ export function Post({thread}: Props) {
</Link>
<Link
href={`/profile/${post.author.did}`}
className="text-[15px] text-textLight hover:underline line-clamp-1">
className="text-[15px] text-textLight dark:text-textDimmed hover:underline line-clamp-1">
<p>@{post.author.handle}</p>
</Link>
</div>
@@ -69,15 +69,15 @@ export function Post({thread}: Props) {
<Link href={href}>
<time
datetime={new Date(post.indexedAt).toISOString()}
className="text-textLight mt-1 text-sm hover:underline">
className="text-textLight dark:text-textDimmed mt-1 text-sm hover:underline">
{niceDate(post.indexedAt)}
</time>
</Link>
<div className="border-t w-full pt-2.5 flex items-center gap-5 text-sm cursor-pointer">
<div className="border-t dark:border-slate-600 w-full pt-2.5 flex items-center gap-5 text-sm cursor-pointer">
{!!post.likeCount && (
<div className="flex items-center gap-2 cursor-pointer">
<img src={likeIcon} className="w-5 h-5" />
<p className="font-bold text-neutral-500 mb-px">
<p className="font-bold text-neutral-500 dark:text-neutral-300 mb-px">
{prettyNumber(post.likeCount)}
</p>
</div>
@@ -85,17 +85,19 @@ export function Post({thread}: Props) {
{!!post.repostCount && (
<div className="flex items-center gap-2 cursor-pointer">
<img src={repostIcon} className="w-5 h-5" />
<p className="font-bold text-neutral-500 mb-px">
<p className="font-bold text-neutral-500 dark:text-neutral-300 mb-px">
{prettyNumber(post.repostCount)}
</p>
</div>
)}
<div className="flex items-center gap-2 cursor-pointer">
<img src={replyIcon} className="w-5 h-5" />
<p className="font-bold text-neutral-500 mb-px">Reply</p>
<p className="font-bold text-neutral-500 dark:text-neutral-300 mb-px">
Reply
</p>
</div>
<div className="flex-1" />
<p className="cursor-pointer text-brand font-bold hover:underline hidden min-[450px]:inline">
<p className="cursor-pointer text-brand dark:text-brandLighten font-bold hover:underline hidden min-[450px]:inline">
{post.replyCount
? `Read ${prettyNumber(post.replyCount)} ${
post.replyCount > 1 ? 'replies' : 'reply'
+4
View File
@@ -5,3 +5,7 @@
.break-word {
word-break: break-word;
}
:root {
color-scheme: light dark;
}
+1
View File
@@ -13,6 +13,7 @@ export function labelsToInfo(
return 'Adult Content'
case 'nudity':
return 'Non-sexual Nudity'
case 'gore':
case 'graphic-media':
return 'Graphic Media'
default:
+18 -13
View File
@@ -6,6 +6,7 @@ import {useEffect, useMemo, useRef, useState} from 'preact/hooks'
import arrowBottom from '../../assets/arrowBottom_stroke2_corner0_rounded.svg'
import logo from '../../assets/logo.svg'
import {initColorMode} from '../color-mode'
import {Container} from '../components/container'
import {Link} from '../components/link'
import {Post} from '../components/post'
@@ -21,6 +22,8 @@ export const EMBED_SCRIPT = `${EMBED_SERVICE}/static/embed.js`
const root = document.getElementById('app')
if (!root) throw new Error('No root element')
initColorMode()
const agent = new BskyAgent({
service: 'https://public.api.bsky.app',
})
@@ -108,7 +111,7 @@ function LandingPage() {
}, [uri])
return (
<main className="w-full min-h-screen flex flex-col items-center gap-8 py-14 px-4 md:pt-32">
<main className="w-full min-h-screen flex flex-col items-center gap-8 py-14 px-4 md:pt-32 dark:bg-dimmedBgDarken dark:text-slate-200">
<Link
href="https://bsky.social/about"
className="transition-transform hover:scale-110">
@@ -121,20 +124,22 @@ function LandingPage() {
type="text"
value={uri}
onInput={e => setUri(e.currentTarget.value)}
className="border rounded-lg py-3 w-full max-w-[600px] px-4"
className="border rounded-lg py-3 w-full max-w-[600px] px-4 dark:bg-dimmedBg dark:border-slate-500"
placeholder={DEFAULT_POST}
/>
<img src={arrowBottom} className="w-6" />
<img src={arrowBottom} className="w-6 dark:invert" />
{loading ? (
<Skeleton />
<div className="w-full max-w-[600px]">
<Skeleton />
</div>
) : (
<div className="w-full max-w-[600px] gap-8 flex flex-col">
{!error && thread && uri && <Snippet thread={thread} />}
{!error && thread && <Post thread={thread} key={thread.post.uri} />}
{error && (
<div className="w-full border border-red-500 bg-red-50 px-4 py-3 rounded-lg">
<div className="w-full border border-red-500 bg-red-500/10 px-4 py-3 rounded-lg">
<p className="text-red-500 text-center">{error}</p>
</div>
)}
@@ -149,15 +154,15 @@ function Skeleton() {
<Container>
<div className="flex-1 flex-col flex gap-2 pb-8">
<div className="flex gap-2.5 items-center">
<div className="w-10 h-10 overflow-hidden rounded-full bg-neutral-100 shrink-0 animate-pulse" />
<div className="w-10 h-10 overflow-hidden rounded-full bg-neutral-100 dark:bg-slate-700 shrink-0 animate-pulse" />
<div className="flex-1">
<div className="bg-neutral-100 animate-pulse w-64 h-4 rounded" />
<div className="bg-neutral-100 animate-pulse w-32 h-3 mt-1 rounded" />
<div className="bg-neutral-100 dark:bg-slate-700 animate-pulse w-64 h-4 rounded" />
<div className="bg-neutral-100 dark:bg-slate-700 animate-pulse w-32 h-3 mt-1 rounded" />
</div>
</div>
<div className="w-full h-4 mt-2 bg-neutral-100 rounded animate-pulse" />
<div className="w-5/6 h-4 bg-neutral-100 rounded animate-pulse" />
<div className="w-3/4 h-4 bg-neutral-100 rounded animate-pulse" />
<div className="w-full h-4 mt-2 bg-neutral-100 dark:bg-slate-700 rounded animate-pulse" />
<div className="w-5/6 h-4 bg-neutral-100 dark:bg-slate-700 rounded animate-pulse" />
<div className="w-3/4 h-4 bg-neutral-100 dark:bg-slate-700 rounded animate-pulse" />
</div>
</Container>
)
@@ -220,7 +225,7 @@ function Snippet({thread}: {thread: AppBskyFeedDefs.ThreadViewPost}) {
ref={ref}
type="text"
value={snippet}
className="border rounded-lg py-3 w-full px-4"
className="border rounded-lg py-3 w-full px-4 dark:bg-dimmedBg dark:border-slate-500"
readOnly
autoFocus
onFocus={() => {
@@ -228,7 +233,7 @@ function Snippet({thread}: {thread: AppBskyFeedDefs.ThreadViewPost}) {
}}
/>
<button
className="rounded-lg bg-brand text-white color-white py-3 px-4 whitespace-nowrap min-w-28"
className="rounded-lg bg-brand text-white py-3 px-4 whitespace-nowrap min-w-28"
onClick={() => {
ref.current?.focus()
ref.current?.select()
+6 -3
View File
@@ -4,6 +4,7 @@ import {AppBskyFeedDefs, AtpAgent} from '@atproto/api'
import {h, render} from 'preact'
import logo from '../../assets/logo.svg'
import {initColorMode} from '../color-mode'
import {Container} from '../components/container'
import {Link} from '../components/link'
import {Post} from '../components/post'
@@ -21,6 +22,8 @@ if (!uri) {
throw new Error('No uri in path')
}
initColorMode()
agent
.getPostThread({
uri,
@@ -55,13 +58,13 @@ function PwiOptOut({thread}: {thread: AppBskyFeedDefs.ThreadViewPost}) {
<img src={logo} className="h-6" />
</Link>
<div className="w-full py-12 gap-4 flex flex-col items-center">
<p className="max-w-80 text-center w-full text-textLight">
<p className="max-w-80 text-center w-full text-textLight dark:text-textDimmed">
The author of this post has requested their posts not be displayed on
external sites.
</p>
<Link
href={href}
className="max-w-80 rounded-lg bg-brand text-white color-white text-center py-1 px-4 w-full mx-auto">
className="max-w-80 rounded-lg bg-brand text-white text-center py-1 px-4 w-full mx-auto">
View on Bluesky
</Link>
</div>
@@ -77,7 +80,7 @@ function ErrorMessage() {
className="transition-transform hover:scale-110 absolute top-4 right-4">
<img src={logo} className="h-6" />
</Link>
<p className="my-16 text-center w-full text-textLight">
<p className="my-16 text-center w-full text-textLight dark:text-textDimmed">
Post not found, it may have been deleted.
</p>
</Container>
+8
View File
@@ -1,11 +1,19 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
darkMode: ['variant', [
'&:is(.dark *):not(:is(.dark .light *))',
]],
theme: {
extend: {
colors: {
brand: 'rgb(10,122,255)',
brandLighten: 'rgb(32,139,254)',
textLight: 'rgb(66,87,108)',
textDimmed: 'rgb(174,187,201)',
dimmedBgLighten: 'rgb(30,41,54)',
dimmedBg: 'rgb(22,30,39)',
dimmedBgDarken: 'rgb(18,25,32)',
},
},
},
+1 -2
View File
@@ -1,4 +1,3 @@
{
"compilerOptions": {
"target": "ES5",
@@ -20,5 +19,5 @@
"jsxFragmentFactory": "Fragment",
"downlevelIteration": true
},
"include": ["src", "vite.config.ts"]
"include": ["src", "snippet", "vite.config.ts"]
}
+5 -3
View File
@@ -1,9 +1,10 @@
import {Express} from 'express'
import {AppContext} from '../context.js'
import {default as create} from './create.js'
import {default as createShortLink} from './createShortLink.js'
import {default as health} from './health.js'
import {default as redirect} from './redirect.js'
import {default as shortLink} from './shortLink.js'
import {default as siteAssociation} from './siteAssociation.js'
export * from './util.js'
@@ -11,7 +12,8 @@ export * from './util.js'
export default function (ctx: AppContext, app: Express) {
app = health(ctx, app) // GET /_health
app = siteAssociation(ctx, app) // GET /.well-known/apple-app-site-association
app = create(ctx, app) // POST /link
app = redirect(ctx, app) // GET /:linkId (should go last due to permissive matching)
app = redirect(ctx, app) // GET /redirect
app = createShortLink(ctx, app) // POST /link
app = shortLink(ctx, app) // GET /:linkId (should go last due to permissive matching)
return app
}
+24 -31
View File
@@ -6,47 +6,40 @@ import {Express} from 'express'
import {AppContext} from '../context.js'
import {handler} from './util.js'
const INTERNAL_IP_REGEX = new RegExp(
'(^127.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$)|(^10.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$)|(^172.1[6-9]{1}[0-9]{0,1}.[0-9]{1,3}.[0-9]{1,3}$)|(^172.2[0-9]{1}[0-9]{0,1}.[0-9]{1,3}.[0-9]{1,3}$)|(^172.3[0-1]{1}[0-9]{0,1}.[0-9]{1,3}.[0-9]{1,3}$)|(^192.168.[0-9]{1,3}.[0-9]{1,3}$)|^localhost',
'i',
)
export default function (ctx: AppContext, app: Express) {
return app.get(
'/:linkId',
'/redirect',
handler(async (req, res) => {
const linkId = req.params.linkId
const contentType = req.accepts(['html', 'json'])
let link = req.query.u
assert(
typeof linkId === 'string',
'express guarantees id parameter is a string',
typeof link === 'string',
'express guarantees link query parameter is a string',
)
const found = await ctx.db.db
.selectFrom('link')
.selectAll()
.where('id', '=', linkId)
.executeTakeFirst()
if (!found) {
// potentially broken or mistyped link
link = decodeURIComponent(link)
let url: URL | undefined
try {
url = new URL(link)
} catch {}
if (
!url ||
(url.protocol !== 'http:' && url.protocol !== 'https:') || // is a http(s) url
(ctx.cfg.service.hostnames.includes(url.hostname.toLowerCase()) &&
url.pathname === '/redirect') || // is a redirect loop
INTERNAL_IP_REGEX.test(url.hostname) // isn't directing to an internal location
) {
res.setHeader('Cache-Control', 'no-store')
if (contentType === 'json') {
return res
.status(404)
.json({
error: 'NotFound',
message: 'Link not found',
})
.end()
}
// send the user to the app
res.setHeader('Location', `https://${ctx.cfg.service.appHostname}`)
return res.status(302).end()
}
// build url from original url in order to preserve query params
const url = new URL(
req.originalUrl,
`https://${ctx.cfg.service.appHostname}`,
)
url.pathname = found.path
res.setHeader('Cache-Control', `max-age=${(7 * DAY) / SECOND}`)
if (contentType === 'json') {
return res.json({url: url.href}).end()
}
res.setHeader('Location', url.href)
return res.status(301).end()
}),
+54
View File
@@ -0,0 +1,54 @@
import assert from 'node:assert'
import {DAY, SECOND} from '@atproto/common'
import {Express} from 'express'
import {AppContext} from '../context.js'
import {handler} from './util.js'
export default function (ctx: AppContext, app: Express) {
return app.get(
'/:linkId',
handler(async (req, res) => {
const linkId = req.params.linkId
const contentType = req.accepts(['html', 'json'])
assert(
typeof linkId === 'string',
'express guarantees id parameter is a string',
)
const found = await ctx.db.db
.selectFrom('link')
.selectAll()
.where('id', '=', linkId)
.executeTakeFirst()
if (!found) {
// potentially broken or mistyped link
res.setHeader('Cache-Control', 'no-store')
if (contentType === 'json') {
return res
.status(404)
.json({
error: 'NotFound',
message: 'Link not found',
})
.end()
}
// send the user to the app
res.setHeader('Location', `https://${ctx.cfg.service.appHostname}`)
return res.status(302).end()
}
// build url from original url in order to preserve query params
const url = new URL(
req.originalUrl,
`https://${ctx.cfg.service.appHostname}`,
)
url.pathname = found.path
res.setHeader('Cache-Control', `max-age=${(7 * DAY) / SECOND}`)
if (contentType === 'json') {
return res.json({url: url.href}).end()
}
res.setHeader('Location', url.href)
return res.status(301).end()
}),
)
}
+1
View File
@@ -97,6 +97,7 @@ const hideAvatarLabels = new Set([
'nudity',
'sexual-figurative',
'graphic-media',
'gore',
'self-harm',
'sensitive',
'security',
+1 -1
View File
@@ -24,7 +24,7 @@ Then build and copy over the big 'ol `bundle.web.js` file:
### Golang Daemon
Install golang. We are generally using v1.22+.
Install golang. We generally develop against the current stable release of the language, as declared in `go.mod`.
In this directory (`bskyweb/`):
+16 -7
View File
@@ -214,15 +214,21 @@ func serve(cctx *cli.Context) error {
e.GET("/iframe/youtube.html", echo.WrapHandler(staticHandler))
e.GET("/static/*", echo.WrapHandler(http.StripPrefix("/static/", staticHandler)), func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
path := c.Request().URL.Path
maxAge := 1 * (60 * 60) // default is 1 hour
c.Response().Before(func() {
if c.Response().Status >= 300 {
return
}
// all assets in /static/js, /static/css, /static/media are content-hashed and can be cached for a long time
if strings.HasPrefix(path, "/static/js/") || strings.HasPrefix(path, "/static/css/") || strings.HasPrefix(path, "/static/media/") {
maxAge = 365 * (60 * 60 * 24) // 1 year
}
path := c.Request().URL.Path
maxAge := 1 * (60 * 60) // default is 1 hour
c.Response().Header().Set("Cache-Control", fmt.Sprintf("public, max-age=%d", maxAge))
// all assets in /static/js, /static/css, /static/media are content-hashed and can be cached for a long time
if strings.HasPrefix(path, "/static/js/") || strings.HasPrefix(path, "/static/css/") || strings.HasPrefix(path, "/static/media/") {
maxAge = 365 * (60 * 60 * 24) // 1 year
}
c.Response().Header().Set("Cache-Control", fmt.Sprintf("public, max-age=%d", maxAge))
})
return next(c)
}
})
@@ -235,6 +241,7 @@ func serve(cctx *cli.Context) error {
// generic routes
e.GET("/hashtag/:tag", server.WebGeneric)
e.GET("/topic/:topic", server.WebGeneric)
e.GET("/search", server.WebGeneric)
e.GET("/feeds", server.WebGeneric)
e.GET("/notifications", server.WebGeneric)
@@ -257,6 +264,7 @@ func serve(cctx *cli.Context) error {
e.GET("/settings/privacy-and-security", server.WebGeneric)
e.GET("/settings/content-and-media", server.WebGeneric)
e.GET("/settings/about", server.WebGeneric)
e.GET("/settings/app-icon", server.WebGeneric)
e.GET("/sys/debug", server.WebGeneric)
e.GET("/sys/debug-mod", server.WebGeneric)
e.GET("/sys/log", server.WebGeneric)
@@ -275,6 +283,7 @@ func serve(cctx *cli.Context) error {
e.GET("/profile/:handleOrDID/follows", server.WebGeneric)
e.GET("/profile/:handleOrDID/followers", server.WebGeneric)
e.GET("/profile/:handleOrDID/known-followers", server.WebGeneric)
e.GET("/profile/:handleOrDID/search", server.WebGeneric)
e.GET("/profile/:handleOrDID/lists/:rkey", server.WebGeneric)
e.GET("/profile/:handleOrDID/feed/:rkey", server.WebGeneric)
e.GET("/profile/:handleOrDID/feed/:rkey/liked-by", server.WebGeneric)

Some files were not shown because too many files have changed in this diff Show More