Compare commits

...

789 Commits

Author SHA1 Message Date
Eric Bailey 90dc3edc5b Use Inter variable font 2024-09-30 12:40:16 -05:00
Hailey 587c0c6257 Rework native autocomplete (#5521)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-27 15:26:28 -07:00
Samuel Newman 4b5d6e6efb Pinned posts (#5055)
* add to dropdown menu

* use normal profile mutation hook

* add pin as reason

* request pins

* shadow update

* rm logs

* get prev pinned from getProfile

* fix toasts

* invalidate after appview ready

* don't mutate params

* rm log

* use checkCommited rather than manual whenAppViewReady

* move to mutation

* even more optimistic optimistic update

* allow pins in `posts_and_author_threads`

* update @atproto/api

* add reasonPin type

* fix strange type error in unrelated query

* another missing type
2024-09-28 00:50:32 +03:00
Hailey f68b15219f Remove Segment (#5518) 2024-09-27 14:01:57 -07:00
Hailey bcd096b85a Fix alignment of cancel button on search (#5520) 2024-09-27 09:55:47 -07:00
Hailey d8f72c1ee1 [Share Extension] Support on Android for sharing videos to app (#5466) 2024-09-27 09:54:37 -07:00
Samuel Newman 4553e6b649 Ignore bogus onScroll values (#5499) 2024-09-27 10:09:00 +01:00
Hailey dd2fedb2e6 add podcasts to spotify embeds (#5514) 2024-09-27 16:19:12 +09:00
Hailey c7b48cbdca Tweak font size of "Write your reply" (#5513) 2024-09-26 21:01:57 -07:00
Hailey 389e6f1509 Lazy load ViewShot (#5517)
* lazy one spot

* lazy signup

* fix type

* tweak type, fix missing viewshot type

* only import type oops
2024-09-27 12:52:32 +09:00
Hailey dd1944e9b8 [Share Extension] Support images/movies from other apps like iMessage (#5515) 2024-09-26 19:57:16 -07:00
Samuel Newman 77c4a9922f tab change on press rather than pressIn (#5508) 2024-09-26 21:05:12 +01:00
Hailey a61b75be57 Add margin to bottom of search input (#5510) 2024-09-26 12:57:54 -07:00
Hailey 7ee67e4e7e [Share Extension] Move away from deprecated API, implement JS side of things (#5509) 2024-09-26 12:37:51 -07:00
Eric Bailey 175df72972 Fix weird button wrapping on splash (#5507)
* Fix weird button wrapping on splash

* Web
2024-09-26 12:58:47 -05:00
Hailey 863764b3fe [Share Extension] Use the proper identifier for if statement on iOS (#5505) 2024-09-26 10:51:22 -07:00
Eric Bailey 702dfa8536 Fix handle collapse on Android (#5504) 2024-09-26 12:47:27 -05:00
Eric Bailey 1ae7fa6363 Adjust header offset (#5501) 2024-09-27 01:59:04 +09:00
Eric Bailey 960f4450ee Adjust dialog timing (#5502) 2024-09-27 01:58:47 +09:00
Eric Bailey 5a142161cb Remove 10milly dialog, revert header logo changes (#5503) 2024-09-26 11:47:13 -05:00
Eric Bailey 27e09e7adc Fix font loading (#5500) 2024-09-27 01:30:00 +09:00
Eric Bailey 23dd638f6a Clean up left nav on web (#5488)
* Tweak nav item count style

* Fix nav item icon width and alignment

* Just refactor the thing

* New compose button

* Z index

* Rounded

* Tweak gradient

* Tweak gradient

* Tweak gradient

* Solid

* Adjust position of counter

* Always a circle
2024-09-26 10:57:45 -05:00
Eric Bailey 1895ae2e69 Adjust line height to not cut off emoji (#5496) 2024-09-26 23:59:47 +09:00
Eric Bailey 179a913f20 Emoji in account list (#5497) 2024-09-26 23:59:32 +09:00
Igor Adrov 625d7460d8 Make the counter more rounded (#5083) 2024-09-26 09:48:12 -05:00
Samuel Newman f2a69c4528 add emoji prop to composer reply to text (#5495) 2024-09-26 14:18:48 +01:00
Samuel Newman a9765fd23f Fix banner height in edit profile modal (#5494)
* fix banner height

* fix user banner, it's not edit profile's fault
2024-09-26 22:09:02 +09:00
Samuel Newman 78fb666020 Messages list - make avatars link to profile (#5484) 2024-09-26 01:32:54 +01:00
Eric Bailey 2e5f95c8dd Add back empty placeholder (#5489) 2024-09-25 17:41:03 -05:00
Hailey 58036ffb52 Filter errors that get sent to Sentry (#5247) 2024-09-25 15:05:33 -07:00
Eric Bailey b1ca2503de Add language filtering UI to search (#5459)
* Use new TextField for search bar

* Add lang dropdown

* Dialog

* Revert "Dialog"

This reverts commit 257573cd9c.

* Extract util, test, cleanup

* Fix formatting

* Pass through other params

* Fix sticky header

* Fix stale data, hide/show

* Improve query parsing

* Replace memo

* Couple tweaks

* Revert cancel change

* Remove unused placeholder
2024-09-25 15:54:43 -05:00
Eric Bailey 6bc001a30e Support emojis in settings account cards (#5487) 2024-09-25 15:48:40 -05:00
Eric Bailey fd15bfec40 Ensure notifications align with new post alignment (#5486) 2024-09-25 15:39:03 -05:00
Samuel Newman f54241c4cf constrain blur (#5485) 2024-09-25 19:42:33 +01:00
Samuel Newman 498f957a1d Use scale animation for tabs (#5483)
* fix passing PressableScale oPressIn prop

* use PressableScale for tabs
2024-09-25 18:28:10 +01:00
Hailey 47301661f7 [Video] use dynamic import for hls.js (#5429)
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 09:51:51 -07:00
Samuel Newman 60b7443535 show a toast when a haptic is meant to fire while using simulator (#5481)
buzzz!
2024-09-25 17:13:23 +01:00
Samuel Newman 3293c5e0e0 Reduce display name size (#5482)
* reduce displayname size

* only apply to small screens
2024-09-25 17:13:03 +01:00
Eric Bailey 224ff42c23 Add gate to increase post-feed page size (#5473)
* Add gate to increase post-feed page size

* Exclude Discover

* Remove exception

* Clarify intent

* Let gate cache
2024-09-25 10:38:32 -05:00
Hailey be3c6ab93a Improve style of reply bar (#5447)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-25 08:32:58 -07:00
Samuel Newman 2296ea338e subtle avatar grow animation (#5480) 2024-09-25 15:02:29 +01:00
Samuel Newman f7a2368100 Header blurred banner on overscroll (take 2) (#5474)
* grow banner when overscrolling

* add blurview

* make backdrop blur as it scrolls

* add activity indicator

* use rotated spinner instead of arrow

* persist position of back button

* make back button prettier

* make blur less jarring

* Unify effects

* Tweak impl

* determine if should animate based on scroll amount

* sign comment

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 15:01:25 +01:00
Samuel Newman bd393b1b38 Allow profile header to overscroll (#5457)
* add allowoverscroll prop

* ensure spinner is visible

* more generic prop for `<List>`

* rename to allowHeaderOverScroll
2024-09-25 14:58:53 +01:00
noriaki watanabe 850cfc1cd5 delete extractHtmlMeta (#5478) 2024-09-25 20:28:16 +09:00
Eric Bailey b38d4697b7 [Neue] Post avi, PostMeta cleanup (#5450)
* Support emoji in text with custom font

* Add emoji support to elements that need it

* Remove unused file causing lint failure

* Add web only link variant

* Refactor PostMeta

* Reduce avi size in feeds

* Fix alignment, emoji, in PostMeta

* Smaller avis in notifications

* Shrink post placeholder avi

* Handle the handle again

* Link cleanup

* Cleanup unused props

* Fix text wrapping in timestamp

* Fix underline color

* Tighten up spacing

* Web only whiteSpace
2024-09-24 20:10:13 -05:00
Eric Bailey 2429d5d1ae Fix composer jumpiness on native (#5476) 2024-09-24 18:10:32 -05:00
Hailey f231da0cd9 Tweak RN patch (#5477) 2024-09-24 15:24:56 -07:00
dan ddaf2c62bd [Video] Refactor HLS logic (#5468)
* Extract HLS interop into useHLS

* Rename variable

* Move flushing outside an effect

* use continue instead of return

---------

Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-24 21:47:09 +01:00
Samuel Newman 4f0217403d add a bunch of settings-related icons (#5471) 2024-09-24 21:26:48 +01:00
Hailey 6338083a73 [React Native] Patch RCTFileReaderModule readAsDataURL to prevent crash when type is nil (#5475) 2024-09-24 13:25:05 -07:00
Hailey ea43d20c61 Remove image resizer (#5464) 2024-09-24 10:15:33 -07:00
Hailey d2fae81b33 Remove react-native-fs (#5463)
* remove rnfs

* tweak e2e

* log

* use `safeDeleteAsync`
2024-09-25 01:28:12 +09:00
Mary b9516202fa Revamp image editor (#5462)
* new image editor

* Rm react-avatar-editor

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 01:27:40 +09:00
Mary ed512d6dc5 Revamp edit image alt text dialog (#5461)
* revamp alt dialog

* readd the limit check

don't trim with enforceLen, it ruins copy-pasting long text and it's overall annoying behavior

* Update src/view/com/composer/photos/ImageAltTextDialog.tsx

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

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-09-25 01:21:06 +09:00
Mary 8ea89469ef MobX removal take 2 (#5381)
* mobx removal take 2

* Actually rm mobx

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-25 01:14:15 +09:00
Eric Bailey dbe1df7ac7 Edit self hosting copy (#5469)
* Edit self hosting copy

* Tweak

* Tweak
2024-09-25 00:45:56 +09:00
Samuel Newman b626b93417 Automatically optimise SVG assets (#5467)
* add svgo as dev dep

* prefer viewbox

* manual config

* fix config param names

* align config with svgomg

* add lint-staged svgo hook

* edit hook

* add trailing whitespace plugin

* run svgo on existing assets
2024-09-24 15:31:41 +01:00
Hailey a1e212ab59 [Share Extension] Update to support video (#5385) 2024-09-24 01:02:58 -07:00
Hailey b57ddd0968 Revert change in FAB animation (#5465) 2024-09-24 00:44:47 -07:00
Hailey 53b095adeb Improvements to NSE (#4992) 2024-09-23 18:48:48 -07:00
Eric Bailey e93cbbd56a Don't use flex on inputs (#5458) 2024-09-23 16:34:59 -05:00
Eric Bailey e1ee95a719 Fix web splash (#5456)
* Fix web splash

* Untangle base styles

* Fix id name, remove log
2024-09-23 15:21:32 -05:00
Hailey b77031a074 invert the fab animation, play a haptic (#4309) 2024-09-23 13:06:22 -07:00
Samuel Newman 0f36ffdc43 add sideborders to <ProfileHeaderLoading> (#4995) 2024-09-23 21:05:23 +01:00
Samuel Newman 91853ed538 [Video] Flush low quality segments once focused (#5430)
* Update VideoEmbedInnerWeb.tsx

* keep proper track and flush properly

* consistent current

* use current in listener

* manually loop
2024-09-23 20:30:34 +01:00
Eric Bailey 5eb294488f [Neue] Handle emoji within custom font (#5449)
* Support emoji in text with custom font

* Add emoji support to elements that need it

* Remove unused file causing lint failure

* Fix a few more emoji locations

* Couple more

* No throw
2024-09-24 00:40:37 +09:00
Samuel Newman 443f3a6406 Use pressable for video controls (#5452)
* use pressable for video controls

* add `as any` to preexisiting bad type

* stop mutating prop
2024-09-23 16:35:16 +01:00
Eric Bailey 5e333d4dfc Resolve source files for fonts, remove hack (#5454)
* Resolve source files for fonts, remove hack

* Prettier

* Prettier, add to hook

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-09-24 00:35:07 +09:00
whey.party 87d601e68d changed white (gray_0) text to offwhite (gray_25) (#5453) 2024-09-23 10:24:36 -05:00
Mary 4e8d86db31 Let Expo/Webpack handle CSS assets (#3942)
* chore: handle built css assets

* chore: let prettier handle css code

* refactor: let webpack build css assets

* chore: prettier on bskyembed

* chore: touch empty.txt on css directory

* chore: do the same to the workflow
2024-09-23 23:38:04 +09:00
Eric Bailey 7e2456b906 [Neue] Font weights (#5442)
* Align all font weights

* Only load necessary fonts

* Also comment out from hook
2024-09-20 17:29:58 -05:00
Eric Bailey 4161e23320 Fix spacing (#5444) 2024-09-20 17:25:28 -05:00
Hailey c88b555410 Validate TLD in signup (#5426)
* add lib

* add validation

* log

* add some common typos

* add tests

* reset hasWarned state on edit

* shorten path

* Move test file, adjust regex, add test

* Get real nit picky

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-09-20 16:10:34 -05:00
Wesley e07f5d5980 Fixing extra spacing in notification text (#5396) 2024-09-20 15:06:31 -05:00
Wesley 5be5f96faa Fixing hover card for labeler accounts (#5414)
* Fixing hover card for labeler account

* removing memo
2024-09-20 14:49:23 -05:00
Samuel Newman 79a2f8d528 Increase rounding for all embeds (#5421)
* tweak image styles

* fix reply image preview and covert to atoms

* increase rounding on media inset border

* decrease gap on desktop

* fix inset styles

* increase rounding on embeds to `md`

* Couple edge cases

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-09-20 14:47:28 -05:00
Eric Bailey c85a271ef6 Additional moderation (#5172)
* Set up additional mod authorities

* Filter out non-configurable mod authorities

* WIP

* Working

* Cleanup, add mod

* Cleanup

* Add more debug logs

* Tweak logs

* Filter out imperative labels from typeaheads

* Filter hideable content from notifications

* Add api

* Fall back in dev

* Remove space

* Use prod endpoint

* Add tiny notice

* Add notice to labeler card, show all labelers
2024-09-20 14:16:23 -05:00
Samuel Newman 395edfe78f patch expo modules again (#5441) 2024-09-20 20:14:53 +01:00
Eric Bailey 0eed1cfec1 [Neue] Buttons (#5406)
* Re-align button sizing

(cherry picked from commit bcec243bb59dfe468313d98ba61f464d9750feec)

* Use large, small, tiny

(cherry picked from commit 1dc333c2993ab7f2e0ac750c0670dcec9a7069d0)

* Tweaks
2024-09-20 11:38:51 -05:00
Eric Bailey 27cceb96f3 Add explicit non-handling of detached quotes in embed (#5156) 2024-09-20 11:28:25 -05:00
Eric Bailey fa6f6f9e47 Language fixes (#5384)
* Add some comments

* Decouple language settings

* Normalize on read/write

* Refactor

* Support device locale on app startup

* Cleanup, port to web

* Clean up comments

* Comment

* Try not to mutate

* Protect util handling, update test

* Dedupe array values
2024-09-20 10:50:33 -05:00
futur cd88cbeab8 Add border to menu on web (#5439) 2024-09-20 10:09:55 -05:00
Samuel Newman f42d44112d Add eslint rule to fix imports without the #/ path alias (#5175) 2024-09-20 09:11:29 +01:00
Eric Bailey 22410a3cee [Neue] Parallel font loading on web (#5411)
* Parallel font loading

(cherry picked from commit 10e2b05b575bbbf8b0ca5b4a336817cd902d712b)

* Handle failures

* Rely on font-face and preload tags for font loading (#5431)

* Cache fonts for a year
2024-09-19 17:57:15 -05:00
Eric Bailey c8184e823d Adjust toggle components sizing (#5408)
(cherry picked from commit a9cbd23fcdcbacbdd2ca5f6bbe0bc7161e6591e3)
2024-09-19 16:02:47 -05:00
Eric Bailey c0cb5936f5 [Neue] Copy and spacing tweaks (#5428)
* Copy and spacing tweaks

* Copy tweaks
2024-09-19 16:02:29 -05:00
Eric Bailey 8a7fc9ad3f [Neue] Ligatures & composer (#5427)
* Disable contextual ligatures

* Ensure new type styles are applied to the composer

* Clean up using real devices

* Feedback
2024-09-19 14:41:31 -05:00
Eric Bailey 1523160467 Remove expo/vector-icons from EditImage modal (#5422) 2024-09-19 11:54:39 -05:00
Eric Bailey 24adcb48b7 Revert provider stacking changes (#5423) 2024-09-19 11:54:29 -05:00
Samuel Newman 8fde02fabc Fix ext embeds in DMs (#5419)
* fix ext embeds in DMs

* undo acciental rounding change
2024-09-19 15:32:12 +01:00
Eric Bailey bda355fd58 Fix font loading on web (#5412)
* Copy font files during build

* Fall back if error loading fonts
2024-09-18 20:22:03 -05:00
Eric Bailey cbc7cd0808 [Neue] Base (#5395)
* Add fontScale, gate it, fix some computes

* Add inter, integrate

* Clean up

* Apply to old Text component

* Use numeric weight

* Cleanup

* Clean up appearance settings

* Global tracking

* Fix regular italic variant

* Refactor settings and fontScale values

* Remove flags

* Get rid of lower weight font usage

* Remove gate from settings

* Refactor appearance settings for reuse

* Add neue type nux

* Update defaults

* Load fonts, add fallback families

* Load fonts via plugin in production

* Fixes

* Fix for web

* Nits

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-18 19:35:34 -05:00
Hailey fb3be79820 Update sentry sourcemaps upload (#5409) 2024-09-18 14:51:14 -07:00
Eric Bailey 6c8ef69654 Fix for undefined ref on hot reload on web (#5407) 2024-09-18 15:45:20 -05:00
Hailey 41d4b2c7ef remove expo-sentry (#5405) 2024-09-18 09:34:29 -07:00
Hailey f45f7148ee Revert unneeded changes to expo-modules-core patch (#5393) 2024-09-18 08:42:42 -07:00
Hailey 8d560de44b Temporary Sentry hack patch for iOS 18 (#5400) 2024-09-18 11:25:32 +01:00
Samuel Newman 67895f7f99 Make it work with Xcode 16 (#5386) 2024-09-17 12:27:22 -07:00
Eric Bailey b2b5be542a Fix border radius on avatars (#5392) 2024-09-17 12:07:19 -07:00
Roscoe Rubin-Rottenberg 751375ce3c Make like animation on web same speed as mobile (#5391) 2024-09-17 12:07:09 -07:00
Eric Bailey 2745cba3ea Pre-fill alt text with 10-million card post (#5389)
* Pre-fill alt text with 10-million card post (#5377)

* Clean up type

* Tweak alt copy

* Add pt translation, fix typo

---------

Co-authored-by: Calvin <clavin@users.noreply.github.com>
2024-09-17 13:55:19 -05:00
surfdude29 8f98d6b12f Tweak pt-BR string (#5372) 2024-09-17 11:34:48 -07:00
Hailey 342919bc4e Bump 1.91.2 (#5387) 2024-09-17 10:00:31 -07:00
Hailey 0414b95c58 [Video] Additional android fixes (#5373)
* rm unused code

* bump lib

* invert bool
2024-09-17 14:04:59 +09:00
Eric Bailey b69fd23456 Milly tweaks (#5365)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-16 14:52:28 -07:00
Samuel Newman 8daf6b7868 [Video] Fix safari showing spinner (#5364) 2024-09-16 14:22:22 -07:00
Samuel Newman 8241747fc2 [Video] Volume controls on web (#5363)
* split up VideoWebControls

* add basic slider

* logarithmic volume

* integrate mute state

* fix typo

* shared video volume

* rm log

* animate in/out

* disable for touch devices

* remove flicker on touch devices

* more detailed comment

* move into correct context provider

* add minHeight

* hack

* bettern umber

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-16 21:37:33 +01:00
Kevin Scannell 38c8f01594 Updates to Irish translation, back to 100% (#5345) 2024-09-16 12:08:26 -07:00
Ivan Beà b5d8ce114d Update catalan messages.po (#5223)
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: gsmt <samaritanojr006@gmail.com>
2024-09-16 12:00:26 -07:00
Takayuki KUSANO 4a0e2e3a05 Update Japanese translation (#5217) 2024-09-16 11:59:40 -07:00
Minseo Lee 7dfbd5d7d3 Update Korean localization (#5254) 2024-09-16 11:47:26 -07:00
Frudrax Cheng 08003a09ec Update Chinese localization (#5291)
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
2024-09-16 11:46:54 -07:00
surfdude29 c371b70722 Update French localization (#5227)
Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-09-16 11:44:42 -07:00
surfdude29 06f0785a8c Update Portuguese localization (#5256)
Co-authored-by: Henrique Marques <hfvmarques@gmail.com>
Co-authored-by: Arthur Tavares <arthurabreu00@gmail.com>
2024-09-16 11:36:39 -07:00
Samuel Newman 75e3f51c10 [Video] Fix scrubber tap target (#5360)
* put padding on correct element

* clear timeout on down
2024-09-16 18:15:07 +01:00
Samuel Newman d62e14eca1 loosen checks on vtt file (#5359) 2024-09-16 17:29:34 +01:00
Eric Bailey 0681727b64 Remove overflow hidden from external link outer el (#5356)
* Remove overflow hidden

* Borders when no thumb

* Fix overflow, add bg to no-thumb state

* Cleanup
2024-09-15 15:42:45 -05:00
Eric Bailey 42b28fec9d Disallow some font scaling 2024-09-15 15:11:04 -05:00
Eric Bailey 61deab7051 Nux after onboarding (#5357)
* Don't show nux dialogs until post-onboarding

* Don't show if over 10M
2024-09-15 14:58:10 -05:00
dan d6c11a7231 Fix wrong empty state for liked by (#5343) 2024-09-15 12:14:46 -07:00
Hailey 55da2704d8 [UITextView] Add background color support to iOS selectable text (#5335) 2024-09-15 12:11:55 -07:00
surfdude29 2a344d8f12 Add context to Unmute and Mute strings (#5340)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-15 12:11:44 -07:00
Hailey f8658f0795 bump (#5348) 2024-09-14 19:38:51 +01:00
Paul Frazee 701ddfb171 Release 1.91.1 prep (#5339)
* Fixes to tests

* intl extract
2024-09-13 16:55:01 -07:00
Hailey d8b80309bd [Video] Fix regression on audio session at launch (#5338) 2024-09-13 16:48:17 -07:00
Eric Bailey e767c50f65 Don't open composer via hotkey if other dialog is already open (#5334)
* Don't open composer via hotkey if other dialog is already open

* Check for lightbox also

* Check for drawer
2024-09-13 18:14:46 -05:00
Eric Bailey d76f9abdd7 "N" keyboard shortcut to open a new post modal (#5197)
* feat: Add hook on web app to open composer with 'N' keyboard shortcut

* Extract, don't fire open composer if already open

* Ignore interactive elements

---------

Co-authored-by: João Gabriel <joaog@nocorp.io>
Co-authored-by: Hailey <me@haileyok.com>
2024-09-13 16:48:28 -05:00
Hailey cac43127f0 [Video] Bump video (#5333) 2024-09-13 14:46:02 -07:00
dan ce3893d816 Apply Following settings to Lists (#5313)
* Apply Following settings to Lists

* Remove dead code
2024-09-13 22:30:09 +01:00
Eric Bailey 88813f57c9 Always display next button on login page (#5326)
Co-authored-by: Vinícius Souza <39967235+vinifsouza@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-09-13 14:21:45 -07:00
Hailey 533382173c [Video] Don't require email verification on self-host (#5332) 2024-09-13 14:08:45 -07:00
Hailey 843f9925f5 [Video] Remember mute state while scrolling (#5331) 2024-09-13 14:07:13 -07:00
dan 791bc7afbe Fix lexicon validation in PWI Discover (#5329) 2024-09-13 21:11:17 +01:00
Hailey 26508cfe6a [Video] Remove expo-video, use bluesky-video (#5282)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-13 12:44:42 -07:00
Eric Bailey 78a531f5ff Disable pointer events on media border (#5327) 2024-09-13 19:02:47 +01:00
Paul Frazee 9163f676f5 Merge branch 'events' into main 2024-09-13 10:30:55 -07:00
Eric Bailey 08ac3a27c2 Add events 2024-09-13 12:05:15 -05:00
Eric Bailey b3381da1c1 Image/video border + tweaks (#5324)
* Image/video border (#5253)

* Update AutoSizedImage.tsx

* Update AutoSizedImage.tsx

* Update Gallery.tsx

* Update ExternalLinkEmbed.tsx

* Update MediaPreview.tsx

* Update UserAvatar.tsx

* Update ExternalLinkEmbed.tsx

* Update ExternalPlayerEmbed.tsx

* Update ExternalGifEmbed.tsx

* Update GifEmbed.tsx

* Update ExternalGifEmbed.tsx

* Update GifEmbed.tsx

* Update UserAvatar.tsx

* Update ExternalPlayerEmbed.tsx

* Update ExternalPlayerEmbed.tsx

* video

* Update QuoteEmbed.tsx

* Tweaks, abstract components

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2024-09-13 18:02:58 +01:00
Paul Frazee c7231537f1 Merge branch 'ten-milly' into main 2024-09-13 08:57:41 -07:00
dan 1dc7ef137c Fix notification->post jump for real (#5314)
* Revert "Fix notification scroll jump (#5297)"

This reverts commit e0d9e75407.

* Query notifications first
2024-09-13 15:01:09 +01:00
Eric Bailey 0315814edd Separate alt/crop, use new icon (#5321) 2024-09-13 14:56:54 +01:00
Eric Bailey b47bac965f Merge remote-tracking branch 'origin/ten-milly-android-save' into ten-milly
* origin/ten-milly-android-save:
  On android, change ten milly nux secondary action to save instead of share
2024-09-12 21:24:57 -05:00
Eric Bailey 4637c66390 Let display name wrap 2024-09-12 21:24:32 -05:00
Eric Bailey 003f9e06d4 Fallback snoozing 2024-09-12 21:24:32 -05:00
dan fddb1255ec Enable video_upload gate (#5311) 2024-09-12 17:37:07 -07:00
Eric Bailey 47d99b8712 Adjust image sizing (#5302) 2024-09-12 22:35:59 +01:00
Eric Bailey d60a8f26c4 Suggested follows by actor (on profiles) updates (#5243)
* If fallback, return nothing

* Compress size a bit

* Hide on own profile

* Match load state

* Remove gcTime

* Filter out followed users

* Feedback
2024-09-12 22:34:10 +01:00
Paul Frazee 36ac551347 Add ja and pt-BR translations 2024-09-12 13:11:30 -07:00
Paul Frazee 7acf0e1284 On android, change ten milly nux secondary action to save instead of share 2024-09-12 12:57:08 -07:00
Eric Bailey cc8e7b5ae5 Handle display name 2024-09-12 13:56:25 -05:00
Eric Bailey 1f2e4b26c0 Handle overflow of bottom text 2024-09-12 13:54:20 -05:00
Eric Bailey 7bba213e1a Add retry 2024-09-12 13:45:58 -05:00
Eric Bailey bd79ce7ea0 Ensure dialog shows for all accounts without snoozing 2024-09-12 13:45:06 -05:00
Eric Bailey 46402fd010 Add gate 2024-09-12 13:14:51 -05:00
Paul Frazee 47bea32061 Add a hard-coded redirect for lulaoficial.bsky.social (#5303) 2024-09-12 11:09:58 -07:00
dan 897d8ba744 Revert "Show some known OP replies in Following (#5049)" (#5301)
This reverts commit bff6aedecf.
2024-09-12 18:45:19 +01:00
Wesley 86abeb80b9 Renaming the Follow button to "Follow back" when followed by user (#5281)
* Renaming the follow button to follow back when followed by user

* Fixing conditions and reusing existing translation
2024-09-12 15:59:12 +01:00
dan e0d9e75407 Fix notification scroll jump (#5297) 2024-09-12 15:39:04 +01:00
Minseo Lee 4d22adbcf6 Tabular numbers to video timestamp (#5293) 2024-09-12 15:30:57 +01:00
Samuel Newman 7da3ddbe24 [Video] speculative .vtt file selection fix (#5296)
* speculative vtt fix

* add logging
2024-09-12 15:16:38 +01:00
Eric Bailey 63f85f6493 Copy 2024-09-12 08:03:58 -05:00
Eric Bailey c99e43d6c6 Protect against other exit methods, protect against multiple fetches 2024-09-11 21:56:20 -05:00
Eric Bailey 45c8d89d92 Protect against 3p PDSs and bad responses 2024-09-11 21:52:26 -05:00
Eric Bailey 6e78ce53d7 Dev helpers, string cleanup 2024-09-11 21:47:25 -05:00
Eric Bailey c8b133863d Fix some nux types 2024-09-11 21:28:34 -05:00
Eric Bailey 9bb385a4dd Refactor, integrate nux, snoozing 2024-09-11 21:20:39 -05:00
Eric Bailey 63444052e8 Rename 2024-09-11 20:01:27 -05:00
Eric Bailey 77d60a5b80 Hook up data 2024-09-11 19:58:17 -05:00
Eric Bailey f8edd11bc5 Don't open for logged out users 2024-09-11 19:58:17 -05:00
Eric Bailey 2ee68e4f4d Copy 2024-09-11 19:58:16 -05:00
Eric Bailey 11ecea22d4 Add badges, clean up spacing 2024-09-11 19:58:16 -05:00
Eric Bailey f7db14f32f Disable avi 2024-09-11 19:58:16 -05:00
Eric Bailey eaf0081623 WIP, avi not working on web 2024-09-11 19:58:16 -05:00
Eric Bailey 3c8b3b4782 Progress on desktoip 2024-09-11 19:58:16 -05:00
Eric Bailey 76c584d981 WIP 2024-09-11 19:58:16 -05:00
Eric Bailey ae71f5ce84 NUX API (#5278)
* Set up nux API

* Bump SDK

* Naming

* Imports
2024-09-11 19:56:00 -05:00
Eduardo Tachotte cff7cbb4aa Add autoCapitalize to password field (#5216) 2024-09-12 00:28:23 +01:00
Gargaj 67f56af6d4 remove double closing tag (#5257) 2024-09-11 23:42:21 +01:00
Samuel Newman 8a6d83de3b make container relative (#5280) 2024-09-11 23:04:40 +01:00
Samuel Newman 991202966e [Video] Fix web autoplay (#5274) 2024-09-11 11:36:54 -07:00
Hailey dd2d0e6233 add (#5273) 2024-09-11 18:57:58 +01:00
Samuel Newman f943239894 fix min size for compression (#5272) 2024-09-11 18:50:36 +01:00
Samuel Newman 24b07c6cf4 [Video] Cap duration (#5270) 2024-09-11 10:33:57 -07:00
Samuel Newman a19c91d90e [Video] TEMP disable skip compression (#5271) 2024-09-11 10:33:10 -07:00
Samuel Newman 580b67ba37 disable autoplay within messages and trim feelers (#5260) 2024-09-11 16:20:32 +01:00
Samuel Newman b04ecbe54d hls buffering tweaks (#5266) 2024-09-11 16:20:20 +01:00
Samuel Newman db38438549 increase target area of scrubber (#5265) 2024-09-11 16:20:08 +01:00
Samuel Newman fc25992070 [Video] make hover state stick around if tapped (#5259) 2024-09-10 20:19:37 -07:00
Samuel Newman c22492147b remove scrollbar-gutter in fullscreen (#5258) 2024-09-10 23:18:08 +01:00
Hailey b37b64fb49 Verify Identical Domains Emit Origin (#5255) 2024-09-10 08:16:41 -07:00
Samuel Newman 08f5f37b34 [Video] Allow drag-and-drop & pasting video (#5252)
* allow DnD/pasting video

* rm await
2024-09-10 16:14:28 +01:00
Samuel Newman 6bc5a05f4b [Video] Much simpler fix to fullscreen bug (#5251)
* much simpler fix

* allow old behaviour on firefox

* rm logs
2024-09-10 16:10:13 +01:00
Frudrax Cheng db9cf92d87 Adjust the translated strings to the correct max size. (#5248)
* Update pt-BR localization

* Update ru localization
2024-09-10 11:21:28 +01:00
Samuel Newman 66239ba11d [Video] Fix fullscreen on Chrome (#5246) 2024-09-09 22:37:57 -07:00
Samuel Newman 0f6be244a6 max 1 subtitle file (#5244) 2024-09-10 02:02:53 +01:00
Samuel Newman 436e30fded [Video] use correct max size (#5245)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-09 17:01:40 -07:00
Hailey 723a5e488e [Video] Add a string for localization (#5240) 2024-09-09 12:44:41 -07:00
Jaz 9e1eb1f9f1 Add CORS to bskyweb (#5221) 2024-09-09 18:39:28 +01:00
surfdude29 f240893980 Add context to Mute and Unmute labels on video control (#5234)
Co-authored-by: Marco Buono <thecoreh@gmail.com>
2024-09-09 09:29:14 -07:00
Samuel Newman 44f1cd9fb5 [Video] Media preview improvements (#5229)
* background color for images that haven't loaded

* fix recordwithmedia not appearing
2024-09-09 16:41:27 +01:00
Samuel Newman 6c6a76b193 [Video] Upload tweaks (#5228)
* use correct mime type

* fix wheel progress
2024-09-08 08:27:50 -07:00
surfdude29 95aee146b6 Update dates.ts (#5220) 2024-09-07 21:23:51 -07:00
Paul Frazee a6a3d203fd Release 1.91 prep (#5215)
* Run intl:extract

* Test fixes

* Update pt-BR translations for video
2024-09-07 13:52:00 -07:00
Kirill 63ab16a62d Add Russian translation (#3875)
* Add Russian translation

* Update messages.po

* Update messages.po (draft)

* Добавлены новые строки для перевода

В ручную объеденил исправленный RU с самым новым EN. Могут быть ошибки но быстрый тест проблем не выявил.

* Переведены не переведенные строки, некоторые исправления перевода.

* Еще небольшие правки

* Update messages.po (draft)

* Update messages.po (stage)

* Update messages.po

* Init lingui compiling ru language

* Update messages.po

* Update messages.po (clear)

* Update messages.po

* Update messages.po

* change await import to await Promise.all

* Update messages.po

* Update messages.po (clear)

---------

Co-authored-by: DearFox <59219907+DearFox@users.noreply.github.com>
2024-09-07 13:50:18 -07:00
Hailey 9b8d62ca25 [Video] Tweak order of elements in composer (#5213) 2024-09-07 13:29:27 -07:00
Hailey f1877e44f2 [Video] Fix type on web (#5211) 2024-09-07 13:03:53 -07:00
Takayuki KUSANO 0a61b06580 Update Japanese Translation (#5031)
* Update translation

* Update translation

* Fixed wording

* Change the translation of QRcode of starterpack

* Update translation

* Update translation

* Update translation

* Update translation
2024-09-07 12:29:37 -07:00
Minseo Lee 4037e7a50d Update Korean localization (#5035)
* 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-09-07 12:29:08 -07:00
Frudrax Cheng 373735ac49 Update Chinese Localization (#5036)
* CN: Update Translates

* CN: Remove superseded strings

* CN: Update Translates#1

* TW: Update Translates & Remove superseded strings

* CN: Update Translates#2

* TW: Update and clean

* CN: Update Translates

* Both: Run intl:extract

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* CN: Fix typos

* Update Translates

* TW: Update Translates

* CN: Update Translates

* CN: Update Translates

* CN: Remove superseded strings

* TW: Update and clean

* CN: Update Translates

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-09-07 12:28:36 -07:00
miyun 665766b0d5 Overhaul IT locale (#5069)
* Overhaul IT locale

* Various corrections to the IT locale (thanks to surfdude29!)
2024-09-07 12:25:07 -07:00
Ivan Beà 2a7b333553 Update catalan messages.po (#5067)
* Update catalan messages.po

Another batch, take a look please @jordimas @darccio @surfdude29 @rortan134

* Update catalan messages.po

apply @jordimas corrections

* 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>

* 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 messages.po

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-09-07 12:23:50 -07:00
Samuel Newman 1b4fee3e43 [Video] Open the floodgates (partially) (#5208) 2024-09-07 12:15:15 -07:00
Hailey 51259e7c42 Revert "[Video] Ensure loop doesn't stop" (#5209) 2024-09-07 12:11:18 -07:00
Hailey 10cdc436b8 [Video] Ensure loop doesn't stop (#5207) 2024-09-07 11:54:51 -07:00
Hailey 2842f661db Add intent for verifying email (#5120) 2024-09-07 11:54:39 -07:00
Samuel Newman 45a719b256 [Video] Check upload limits before uploading (#5153)
* DRY up video service auth code

* throw error if over upload limits

* use token

* xmark on toast

* errors with nice translatable error messages

* Update src/state/queries/video/video.ts

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-07 19:27:32 +01:00
Samuel Newman b7d78fe59b [Video] Only compress if >25mb or unknown format (#5187)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-07 11:22:44 -07:00
dan 42fb92064a Set onboarding_minimum_interests to false (#5204)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-07 11:22:34 -07:00
dan 292117804f Set show_follow_suggestions_in_profile to true (#5205) 2024-09-07 17:08:19 +02:00
dan 7d7431d14e Set fixed_bottom_bar to true (#5203) 2024-09-07 17:07:30 +02:00
Hailey c8be9b78c6 [Statsig] Add more events to downsample, increase downsample rate (#5198)
* add some events for sampling

* include downsample rate in metadata

* fix metadata logic

* uncomment debug
2024-09-07 13:13:51 +02:00
jlca adef9cff10 fix: remove duplicate style rounded_sm (#5201) 2024-09-06 22:29:36 -07:00
nicofercavv 275f2bb004 Add cursor pointer to 'New post' button (#5109) 2024-09-06 18:18:31 -05:00
Eric Bailey 543be17674 Add emoji picker to chat composer (#5196)
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: Adrov Igor <nucleartux@gmail.com>
2024-09-06 15:58:47 -07:00
Jaz 30d2ab8dd3 Merge pull request #5195 from brianolson/ipcc-handler
quick integration of ipcc service
2024-09-06 15:21:27 -07:00
Hailey 7e4f8cabd3 [Video] Handle push/pop on Android for autoplay (#5194) 2024-09-06 15:01:05 -07:00
Jaz dc6b04b66f nvm 2024-09-06 15:00:13 -07:00
Jaz 6620ee421b fix action 2024-09-06 14:59:02 -07:00
Jaz d41a00b373 Trigger a build maybe 2024-09-06 14:58:19 -07:00
Igor Adrov 00ce95893d Fix starter packs scroll (#5190) 2024-09-06 16:32:58 -05:00
Eric Bailey c5faa60344 Redesign play button (#5192) 2024-09-06 21:55:23 +01:00
Brian Olson eec93c4e74 cleanup 2024-09-06 16:34:57 -04:00
Brian Olson 6d4ae3d719 quick integration of ipcc service 2024-09-06 16:19:55 -04:00
Eric Bailey cd9c3bf498 Bump joined stat (#5188)
* Bump joined stat

* Ope, actually more
2024-09-06 12:34:51 -05:00
Hailey 60182cd874 [Video] Add disable autoplay for native, more tweaking (#5178) 2024-09-06 09:31:01 -07:00
Eric Bailey bdff8752fb Add support for autofill of one-time-code for email verification (#5186) 2024-09-06 11:22:29 -05:00
Hailey a1969faf8e [Video] Fix alt text dialog on iOS and Android (#5177)
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-09-06 08:26:37 -07:00
Eric Bailey 64b50ba69a Go full width on native and mobile web (#5184) 2024-09-06 17:19:29 +02:00
Eric Bailey b90cd68359 Remove record-with-media side-by-side layout (#5182) 2024-09-06 09:58:27 -05:00
Samuel Newman 55468595d0 [Video] Error banner improvements (#5163) 2024-09-05 21:25:56 -07:00
Hailey 18133483fe [Video] Bump expo-video (#5173) 2024-09-05 15:13:53 -07:00
Hailey 6eabedd037 [Video] More adjustments for loading state jank (#5171) 2024-09-05 14:54:09 -07:00
Hailey 7eb4cd89c5 Downgrade MMKV to 2.x (#5170) 2024-09-05 12:55:10 -07:00
Eric Bailey 8a66883df8 Add MMKV interface (#5169) 2024-09-05 12:31:24 -07:00
Eric Bailey 2265fedd2a Constrain image heights in feeds and threads (#5129)
* Limit height of images within posts

* Add some future-proofness

* Comments, improve a11y

* Adjust ALT, add crop icon

* Fix disableCrop in record-with-media posts

* Clean up aspect ratios, handle very tall images

* Handle record-with-media separately, clarify intent using enums

* Adjust spacing

* Adjust rwm embed image size on mobile

* Only do reduced layout if images embed

* Adjust gap in small embed variant

* Clean up grid layout

* Hide badge on small variant with one image

* Remove crop icon from image grid, leave on single image

* Fix sizing in Firefox

* Fix fullBleed variant
2024-09-05 13:45:13 -05:00
Samuel Newman 117926357d [Video] require email to post videos (#5152)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-05 11:36:19 -07:00
Hailey 91c3dbd812 [Video] Fix CI (#5168) 2024-09-05 10:21:52 -07:00
Marco Buono 824206b95f Load number formatting data when activating locales (#5128) 2024-09-05 10:34:24 -05:00
Hailey 93c171b403 [Video] Use expo-video from fork (#5159) 2024-09-05 08:27:28 -07:00
Marco Buono 6d8ed5c3c8 Add quick access to quote action on long press (#5123) 2024-09-05 10:14:04 -05:00
Samuel Newman 4e6b6740f7 [Video] Enter/exit animations for video in composer (#5164)
* enter/exit animations for video in composer

* use zoom out animation

* unify margin between different steps

* skip animation when posting
2024-09-05 16:07:06 +01:00
Samuel Newman 428607d9a3 [Video] throw HLS errors to be caught by error boundary (#5166)
* throw HLS errors to be caught by error boundary

* wording tweak

* do the same on native

* fix type error
2024-09-05 16:03:00 +01:00
Samuel Newman 60b74f7ab8 [Video] Disable autoplay option (preview + web player) (#5167)
* rename setting

* preview (web)

* preview (native)

* improve autoplay disabled behaviour on web
2024-09-05 15:56:10 +01:00
gabrielsiilva d846f5bbf0 fix on 'reposted by you' translation to ptbr (#5146) 2024-09-04 21:00:07 -07:00
Hailey 2556698427 [Video] Add loading state to player (#5149) 2024-09-04 16:46:01 -07:00
Eric Bailey 76f493c279 Ensure profile labels can be appealed separately from account labels (#5154) 2024-09-04 18:34:19 -05:00
Eric Bailey 4d97a2aa16 Add misleading report type to posts (#5150)
* Add misleading report type to posts

* Update copy

* Update copy
2024-09-04 18:22:57 -05:00
Hailey 86de0dda02 Tweak animation to not roll 0 -> 1, overflow hidden (#5148) 2024-09-04 12:36:20 -07:00
Hailey 0ef17a464d Use new player icon for external video embeds (#5147) 2024-09-04 12:20:21 -07:00
Samuel Newman 5dcb52015c add video to embed (#5145) 2024-09-04 19:57:16 +01:00
Samuel Newman fcf27f0512 [Video] content fit cover on native (#5140) 2024-09-04 19:56:02 +01:00
Samuel Newman e8eaf2f4a7 allow only posting video (#5142) 2024-09-04 19:42:28 +01:00
Marco Buono c36c47d49a Add slight spacing between Post and CW button (#5125) 2024-09-04 11:04:08 -07:00
Hailey 6382a91fb0 [Video] Use same play button for gifs and videos (#5144) 2024-09-04 10:59:06 -07:00
Samuel Newman 5f5c14d044 Replace ImageHorzList 🤮 with MediaPreview (#5143) 2024-09-04 10:52:41 -07:00
Frudrax Cheng 82ca0b16b6 Fix a missing curly brace in pt-BR (#5130)
thanks!
2024-09-04 10:50:54 -07:00
Hailey 12b4a250d2 [Video] withRepeat for spinner (#5141) 2024-09-04 09:39:34 -07:00
Hailey 45bb2477d8 [Video] Show better progress (#5133) 2024-09-04 09:17:14 -07:00
Hailey d94ff2695d [Video] Throw error when playback fails (#5132) 2024-09-04 08:06:58 -07:00
Hailey dee28f378a [Video] Only allow one VideoView to be active at a time, regardless of source (#5131) 2024-09-04 08:06:45 -07:00
Hailey 21e48bb2d8 [Video] Tweak playback handling (#5127) 2024-09-04 08:00:53 -07:00
Samuel Newman 515f87ed24 fail video if cannot load preview (#5138) 2024-09-04 15:56:29 +01:00
Samuel Newman 3eef62d995 log errors (#5139) 2024-09-04 15:29:20 +01:00
dan e2a244b998 Disable in-thread deduping for reposted replies (#5135) 2024-09-04 15:42:22 +02:00
dan 8860890a85 Don't log extra background events (#5134) 2024-09-04 15:41:42 +02:00
Samuel Newman 39f74ced5c close keyboard before opening modal (#5124) 2024-09-03 23:13:25 +01:00
Samuel Newman 3ee5ef32d9 [Video] Error handling in composer, fix auto-send (#5122)
* tweak

* error state for upload toolbar

* catch errors in upload status query

* stop query on error

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-09-03 22:49:19 +01:00
Samuel Newman 0bd0146efb fix mime checks (#5118) 2024-09-03 20:55:10 +01:00
Fabio Nobre ea4d8bc1ab Updating some messages in the pt-BR locale file - [2] (#5099)
Co-authored-by: Gleydson Rodrigues <gleydsonsr@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-09-03 12:14:38 -07:00
Eric Bailey ddda612c11 Fix border on some listing screens (#5115)
* Fix border on PostQuotes, add debug atom

* Add util_screen_outer, apply to h_full_vh here needed
2024-09-03 13:50:48 -05:00
Samuel Newman 5c2e9f09bf reset playback rate on exit fullscreen (#5116) 2024-09-03 19:46:37 +01:00
Hailey 7f26ad508e [Video] Toggle controls when entering fullscreen (#5113) 2024-09-03 11:04:46 -07:00
Hailey 5d300bec90 Adjust render properties for Feed List (#5080) 2024-09-03 10:56:00 -07:00
Hailey 0014d4363f Only animate the like icon when from an actual toggle (#5096) 2024-09-03 10:55:53 -07:00
Samuel Newman bd42f770b8 show video in quote (#5093) 2024-09-03 18:33:16 +01:00
Hailey dde72b48e1 [Video] Manage foreground/background playback on the native side (#5104) 2024-09-03 08:41:14 -07:00
Hailey 05e61346b8 [Video] Say No to Audio (Disable expo-video AudioSession management) (#5101) 2024-09-03 08:33:21 -07:00
Samuel Newman 0e1de19903 [Video] Upload errors and UI improvements (#5092)
* surface errors in UI

* style progress indicator

* remove job status progress

* rm log

* fix webm ext
2024-09-03 15:09:09 +01:00
Samuel Newman f9d736653c [Video] Hide mouse when inactive (#5094) 2024-09-03 11:51:16 +01:00
Samuel Newman 0469ca6cb4 [Embeds] Format big numbers (#5087) 2024-09-02 13:04:26 -07:00
Fabio Nobre f3f7dfc3e6 Add some Portuguese (PT-BR) translation (#5057) 2024-09-02 04:09:17 -07:00
Hailey 4abcd65ccf More tweaks to animation (#5082) 2024-09-02 03:15:31 -07:00
Mary 05ac76fc89 Don't eagerly load all JS assets (#3929)
Co-authored-by: Hailey <me@haileyok.com>
2024-09-02 01:59:04 -07:00
Hailey 1225e84485 Improve animations for like button (#5074) 2024-09-02 01:37:24 -07:00
Samuel Newman eb868a042a [Video] Misc player style tweaks (#5064)
* use actual black rather than theme black

* adjust time/mute indicators
2024-09-02 09:33:46 +01:00
Samuel Newman 17d82a64a6 [Video] Remove hack from scrubber (#5063)
* remove mouseleave, add pointer cancel

* don't show time indicator if duration is 0
2024-09-02 09:32:51 +01:00
dan bf15fad240 Mark unhydrated replies as orphaned (#5048) 2024-08-31 13:14:53 -07:00
Hailey 2df22d8674 Add some Portuguese translation (#5052) 2024-08-31 12:52:18 -07:00
dan bff6aedecf Show some known OP replies in Following (#5049)
* Show known OP replies in Following

* Fiter by >0 parent likes
2024-08-31 03:54:14 +01:00
Eric Bailey 3d992f6bb5 Fix provider order (#5046) 2024-08-31 00:26:03 +01:00
dan ed232e69f7 Animate the like button (#5033)
* Animate the like button

* Respect reduced motion

* Move like count into animated component

* Animate text

* Fix layout on Android

* Animate text backwards too

* Fix bad copypasta

* Reflect nonlocal updates to animated values
2024-08-30 23:16:11 +01:00
Samuel Newman c41f372b3c [Video] Split 'videos' gate in two (#5037) 2024-08-30 12:53:27 -07:00
Samuel Newman ab260c3599 [Video] Minor player tweaks (#5044) 2024-08-30 12:48:23 -07:00
Samuel Newman 8647c8e9f5 [Videos] avoid using fetch for blob handling where possible (#5041)
* avoid using fetch where possible

* whoopsie wrong branch

* more import fixes
2024-08-30 19:05:38 +01:00
Samuel Newman c70ec1ce1a [Video] Captions and alt text (#5009)
* video settings modal in composer

* show done button on web

* rm download options

* fix logic for showing settings button

* add language picker (wip)

* subtitle list with language select

* send captions & alt text with video when posting

* style "ensure you have selected a language" text

* include aspect ratio with video

* filter out captions where the lang is not set

* rm log

* fix label and add hint

* minor scrubber fix
2024-08-30 18:45:49 +01:00
Samuel Newman e7954e590b [Videos] Fix uploads (#5042)
* fix pds url

* fix service auth exp

* whoopsie wrong branch
2024-08-30 18:44:00 +01:00
Eric Bailey c60e8d0772 Composer blocks (#5040)
* Move i18n provider up the stack

* Protect composer opening for a blocked post

* Protect ctrls from interacting with blocked user
2024-08-30 12:26:40 -05:00
dan dbbbba1d32 [Experiment] Suggest profiles in profile (#5030)
* Rename variable to disambiguate with parent scope

* More variables where they are used

* Inline variables

* Add suggestions in profile

* Gate it

* rm space

* Remove header suggestions under gate
2024-08-30 16:54:55 +01:00
Igor Adrov 46b7193a2b Hide back button in my profile (#4991) 2024-08-30 10:49:32 -05:00
Minseo Lee 2ef2ae1c6c Improve localization (#5008)
* Update QrCode.tsx

* Update generate-starterpack.ts
2024-08-30 09:59:49 -05:00
Samuel Newman 05b73d4d1e extend token lifetime to 30 minutes (#5019) 2024-08-30 08:32:18 +01:00
Hailey 8cddce5f30 Tweak rendering of top headers so they always appear even during load (#4982)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-30 00:20:46 -07:00
Eric Bailey 8651f31ebb Localize dates, counts (#5027)
* refactor: consistent localized formatting

* refactor: localized date time

* refactor: localize relative time with strings

* chore: fix typo from copy-paste

* Clean up useTimeAgo

* Remove old ago

* Const

* Reuse

* Prettier

---------

Co-authored-by: Mary <git@mary.my.id>
2024-08-29 19:22:53 -05:00
Hailey d5a7618374 Force at least one item to always be initially rendered (#5029) 2024-08-29 17:20:07 -07:00
Hailey 497aacf113 fix hashtag screen side borders (#4983) 2024-08-29 15:55:17 -07:00
Hailey 69e896c221 [Video] Properly get the service auth aud from the session (#5025) 2024-08-29 13:44:47 -07:00
Hailey 91fe41670f tweak (#5024) 2024-08-29 21:44:06 +01:00
dan 0a75969475 Fix language filtering for feeds (#5026)
* Fix language filtering for feeds

* Simplify logic
2024-08-29 20:22:18 +01:00
dan e51eb391df Enable show_follow_back_label_v2 (#5022) 2024-08-29 20:09:11 +01:00
dan 9ebc2785e4 Remove logging of following prefs (#5021) 2024-08-29 20:08:48 +01:00
dan faf66f3178 Remove new_user_guided_tour and tour code (#5023) 2024-08-29 18:57:36 +01:00
Hailey 69053b1b0a [Video] Remove old env var (#5018) 2024-08-29 09:40:17 -07:00
Hailey e33b88ed7d Profile screen performance tweak - Adjust initial num to render based on header height (#5005) 2024-08-29 09:09:24 -07:00
Samuel Newman ea5ab99399 [Video] Make compress/upload cancelable (#4996)
* add abort controller to video upload system

* rm log

* rm log 2
2024-08-29 17:00:12 +01:00
Samuel Newman 551c4a4f32 [Video] Add uploaded video to post (#4884)
* video uploads!

* use video upload lexicons

* add missing postgate

* remove references to prerelease package

* fix scrubber showing a "0"

* Delete types.ts

* rm logs

* rm upload header

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-29 16:34:41 +01:00
Hailey d52d29621e [Video] Add timeRemainingChange event to player in expo-video (#5013) 2024-08-29 08:28:41 -07:00
Samuel Newman d92731b1eb [Video] Lexicon implementation (#4881)
* implement AppBskyEmbedVideo lexicon in player

* add alt to native player

* add prerelease package

* update prerelease

* add video embed view manually from record

* fix type error on example video

* black bg + use aspect ratio on web

* add video to feeds

* fix video overflowing aspect ratio

* remove prerelease package

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-29 15:58:22 +01:00
Eric Bailey b136c44287 Hide quote counts for quotegated posts (#5011) 2024-08-28 16:57:18 -05:00
Hailey 16d556c3c9 Ensure captcha verification code gets submitted in signup request (#5010)
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-28 11:56:04 -07:00
Samuel Newman 94d2180aaa clean up languages (#5007) 2024-08-28 16:58:19 +01:00
Hailey 5ae0d40a14 [Video] 🫧 Move logic around by platform (#5003) 2024-08-28 08:46:47 -07:00
Hailey 9aa2b2d14e bump 1.91.0 (#5002) 2024-08-28 12:23:30 +01:00
Samuel Newman b69c40da33 add indicator of time remaining (#5000) 2024-08-27 22:15:59 +01:00
Samuel Newman 9b534b968d [Video] add scrubber to the web player (#4943) 2024-08-26 22:28:45 +01:00
Paul Frazee def9dda29c Release 1.90 prep (#4988)
* Stop creating a mod-authority in e2e due to upstream conflict

* Dont require 3 interests when none come back

* Fix e2e login

* intl extract
2024-08-23 14:43:21 -07:00
Eric Bailey fc5cc189b5 Use moderatePost_wrapped for post embeds (#4981)
* Use moderatePost_wrapped

* Add lint rule
2024-08-23 13:55:18 -07:00
kodebanget b5ea87c981 Update Indonesian translation (#4875)
Co-authored-by: Indonesian <github-actions@github.com>
2024-08-23 13:45:41 -07:00
surfdude29 d646d590cc Update French localization (#4823) 2024-08-23 13:45:22 -07:00
Takayuki KUSANO 1d5e341ada Update Japanese translation (#4824)
* Updated translation

* Update translation

* Update translation

* Update translation

* Only show replies in Following if following all involved actors (#4869)

* Only show replies in Following for followed root and grandparent

* Remove now-unnecessary check

* Simplify condition

* Respect labels on feeds and lists (#4818)

* Prep

* Pass in optional moderation to FeedCard

* Compute moderation decision, filter contentList contexts, pass into card

* Let's go a different route

* Filter from within search queries

* Use same search query for starter packs

* Filter lists from profile tabs

* Cleanup

* Filter from profile feeds

* Moderate post embeds

* Memoize

* Use ScreenHider on lists

* Hide both list types

* Fix crash on iOS in screen hider, fix lineheight

* Memoize renderItem

* Reuse objects to prevent re-renders

* tweak list header (#4870)

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>

* bskyweb: optional basic auth password middleware (#4759)

* Update translation

* Revert "Update translation"

This reverts commit 3a7b74f47b.

* Revert "bskyweb: optional basic auth password middleware (#4759)"

This reverts commit bc3a27d40f.

* Revert "tweak list header (#4870)"

This reverts commit 34e7e5cba2.

* Revert "Respect labels on feeds and lists (#4818)"

This reverts commit 9ec6fde288.

* Revert "Only show replies in Following if following all involved actors (#4869)"

This reverts commit e2cc4bb4af.

* Update translation

* Update translation

* Update translation

* Updated translation

* Update translation

* Update translation

* Unified existing translations of "hidden" and "community".

* Update translation

* Update translation

* Update translation

---------

Co-authored-by: dan <dan.abramov@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: bnewbold <bnewbold@robocracy.org>
2024-08-23 13:45:03 -07:00
Minseo Lee 632f71acc9 Update Korean localization (#4826)
* 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-08-23 13:44:29 -07:00
Ivan Beà 80320f9d7d Update catalan localization (#4851)
* Update catalan localisation

More lines translated, It will be so kind of you to check it @jordimas @darccio @surfdude29

Thanks

* 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: GSMT <samaritanojr006@gmail.com>

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

Co-authored-by: GSMT <samaritanojr006@gmail.com>

* Update messages.po

apply @jordimas corrections

* Update messages.po

change traves per través

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
Co-authored-by: GSMT <samaritanojr006@gmail.com>
2024-08-23 13:44:08 -07:00
Frudrax Cheng 3f98747925 Update Chinese Localization (#4947)
* CN: Update translates

* CN: Remove superseded strings

* TW: Update and Clean

* Both: Update translates

* CN: Update translates

* CN: Remove superseded strings

* CN: Update translates

* CN: Remove superseded strings

* TW: Run intl:extract

* CN: Update translates

* TW: Update and clean

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Both: Run intl:extract

* CN: Update translates

* CN: Update translates

* Both: Run intl:extract

* CN: fix typo

* CN: fix typo#2

* CN: Update translates

* CN: Update translates#2

* TW: Update translates

* Both: Remove superseded strings

* TW: fix typo

---------

Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-08-23 13:42:59 -07:00
Hailey fa12bf5d87 Revert "Make settings account buttons a little nicer" (#4987) 2024-08-23 13:28:56 -07:00
Hailey 1f657b3ac5 fix findAll* type in post-thread (#4986) 2024-08-23 13:20:05 -07:00
Eric Bailey 425dd5f27f Optimistic hidden replies (#4977) 2024-08-23 12:35:48 -07:00
Eric Bailey 5ec8761b29 Make settings account buttons a little nicer (#4980)
* Replace account dropdown with Menu

* Replace card row and add interaction state

* Remove testID copy pasta

* Sanitize handle

* Remove hover from row
2024-08-22 20:09:55 -05:00
Eric Bailey 990bf306c5 Use RichText for sp description (#4979)
* Use RichText for sp description

* `isRecord` above

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-08-22 17:37:15 -05:00
dan b8dbb71781 Fix fixed footer experiment (#4969)
* Split minimal shell mode into headerMode and footerMode

For now, we'll always write them in sync. When we read them, we'll use headerMode as source of truth. This will let us keep footerMode independent in a future commit.

* Remove fixed_bottom_bar special cases during calculation

This isn't the right time to determine special behavior. Instead we'll adjust footerMode itself conditionally on the gate.

* Copy-paste setMode into MainScrollProvider

This lets us fork the implementation later just for this case.

* Gate footer adjustment in MainScrollProvider

This is the final piece. Normal calls to setMode() keep setting both header and footer, but MainScrollProvider adjusts the footer conditionally.
2024-08-22 23:27:33 +01:00
Hailey 2ae3ffcf78 have mock server run with development node env (#4976) 2024-08-22 14:51:35 -07:00
dan 27bb383268 Submit fix (#4978)
* Fix submit logic

* Fix type

* Align submit task creation 1:1 with callsites

* blegh. `useThrottledValue`

* make `useThrottledValue`'s time required

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-08-22 22:43:23 +01:00
Hailey df5bf28e61 update usePostThreadQuery to check quote query data (#4975)
* update `usePostThreadQuery` to check quote query data

* search notifs before quotes

* oops
2024-08-22 19:11:51 +01:00
Eric Bailey 92989282ae Fetch it (#4974) 2024-08-22 10:27:34 -07:00
Hailey 9f1c411360 add quoteCount to view creators (#4972) 2024-08-22 10:26:49 -07:00
Hailey 85d70fe3ef tweak rqkey and cache search for useAllListMembersQuery (#4971) 2024-08-22 09:32:49 -07:00
Eric Bailey d5c78b9183 Prep threadgate shadow hack (#4970)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-21 20:16:03 -07:00
Hailey 61f0be705d Change size (#4957) 2024-08-21 19:35:34 -07:00
Eric Bailey 6616a6467e Detached QPs and hidden replies (#4878)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-21 19:20:45 -07:00
Samuel Newman 56ab5e177f Show quote posts (#4865)
* show quote posts

* fix filter

* fix keyExtractor

* move likedby and repostedby to new file structure

* use modern list component

* remove relative imports

* update quotes count after quoting

* call `onPost` after updating quote count

* Revert "update quotes count after quoting"

This reverts commit 1f1887730a.

* implement

* update like count in quotes list

* only add `onPostReply` where needed

* Filter quotes with detached embeds

* Bump SDK

* Don't show error for no results

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-21 15:26:25 -05:00
Eric Bailey ddb0b80017 Fix hidden list for author (#4968) 2024-08-21 13:11:47 -07:00
Eric Bailey 5463e9718f Update joined stat (#4967) 2024-08-21 10:17:23 -07:00
Hailey 723896a45f Add list hidden screen (#4958)
Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-08-20 15:43:40 -07:00
Eric Bailey e54298ec2c Expose more methods, support disabled items (#4954) 2024-08-19 12:21:29 -07:00
Eric Bailey f235be9819 Expose more props from button (#4953) 2024-08-19 13:27:04 -05:00
Eric Bailey 3976d6738b Fix orphaned feed slices, handle blocks (#4944)
* Fix orphaned feed slices, handle blocks

* Revert to filerting out orphan threads

* Support NotFoundPost views too

* Just kidding, use ReplyRef.root as source of grandparent data

* Fixes
2024-08-19 11:20:42 -05:00
Hailey 2939ee7df7 Tweak expo-modules-core hack patch (#4955) 2024-08-18 13:24:41 -07:00
dan 40ab67fc4b [Experiment] Always show bottom bar (#4946) 2024-08-16 20:06:55 +01:00
Hailey a5af24b53b Revert "[Video] Download videos" (#4945) 2024-08-15 16:29:16 -07:00
dan b6e515c664 Move global "Sign out" out of the current account row (#4941)
* Rename logout to logoutEveryAccount

* Add logoutCurrentAccount()

* Make all "Log out" buttons refer to current account

Each of these usages is completely contextual and refers to a specific account.

* Add Sign out of all accounts to Settings

* Move single account Sign Out below as well

* Prompt on account removal

* Add Other Accounts header to reduce ambiguity

* Spacing fix

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-08-15 20:58:13 +01:00
Hailey f3b57dd456 Hack patch for testing OTA update crash behavior (#4942) 2024-08-15 12:03:19 -07:00
Hailey 11061b628e [Video] Download videos (#4886)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-15 11:23:48 -07:00
Samuel Newman b9975697e2 swap control files (#4936)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-14 21:08:17 +01:00
Samuel Newman b6fa0d2d04 [Embed] Starter pack embed embed (#4935)
* update @atproto/api

* add starter pack embed

* update depreciated BskyAgent to AtpAgent

* unrelated, but avoid direct import of type

* nits

* rm commented out code

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-14 21:01:59 +01:00
Samuel Newman 21e214c235 [Video] set audio category to ambient every time a new player is made (#4934)
* set auto category to ambient every time a new player is made

* mute on foregrounding

* remember previous state

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-08-14 20:21:14 +01:00
Hailey 26d3777ecc Add /live/ to supported YouTube embed URLs (#4932) 2024-08-13 17:35:05 -07:00
Samuel Newman 630ebf523d [Video] Try/catch video play/pause (#4930)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-13 14:00:03 -07:00
dan 57be2ea15b Don't kick to login screen on network error (#4911)
* Don't kick the user on network errors

* Track online status for RQ

* Use health endpoint

* Update test with new behavior

* Only poll while offline

* Handle races between the check and network events

* Reduce the poll kickoff interval

* Don't cache partially fetched pinned feeds

This isn't a new issue but it's more prominent with the offline handling. We're currently silently caching pinned infos that failed to fetch. This avoids showing a big spinner on failure but it also kills all feeds which is very confusing. If the request to get feed gens fails, let's fail the whole query.

Then it can be retried.
2024-08-13 18:51:49 +01:00
dan 7e11b862e9 Remove .withProxy() calls (#4929) 2024-08-13 00:20:39 -07:00
Hailey 1fce7a793d [Video] Audio duck off main thread (#4926) 2024-08-12 20:08:51 -07:00
Hailey 3c04d9bd84 subclass agent to add setPersistSessionHandler (#4928)
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-08-12 19:43:06 -07:00
Hailey 99d1a881f2 [Video] Fix crash when switching tabs (#4925) 2024-08-12 16:49:17 -07:00
Hailey 134fcd35d8 [Video] Invert usage of setAudioActive (#4924) 2024-08-12 14:58:41 -07:00
Hailey 7df2327424 Upgrade API, implement XRPC rework (#4857)
Co-authored-by: Matthieu Sieben <matthieu.sieben@gmail.com>
2024-08-12 14:00:15 -07:00
Hailey ae883e2df7 rm from swift (#4923) 2024-08-12 21:46:33 +01:00
Hailey db7a744433 Fix Android composer cursor bug by removing setTimeout from native composer onChangeText (#4922) 2024-08-12 08:14:02 -07:00
Roland Crosby 75c19b2dc2 Show handle in recent searches and fix truncation (#4917)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-11 16:12:36 -07:00
Minseo Lee 88f879ffe9 Improve styles (#4916)
Co-authored-by: Hailey <me@haileyok.com>
2024-08-11 14:30:18 -07:00
surfdude29 6f450b4982 Mark string for localization (#4920) 2024-08-11 12:41:33 -07:00
Shubh Porwal 8367542138 Fix occurred typo (#4919)
Co-authored-by: Hailey <hailey@blueskyweb.xyz>
2024-08-11 12:40:43 -07:00
Hailey 65d6e561d4 [Video] Resume background audio whenever muting video audio (#4915) 2024-08-09 16:52:23 -07:00
Samuel Newman c2131bb039 [Videos] Add error boundary to native (#4914)
* move error fallback to own component

* use error boundary on native

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-10 00:49:11 +01:00
Samuel Newman ab0da7c892 [Videos] handle app backgrounding (#4912)
* play when returning from background

* play when unfullscreening

* play when entering fullscreen, just to be sure

* state -> ref

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 23:35:21 +01:00
Samuel Newman 0a9782ac19 animate controls + fade out time after a while (#4913)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 23:32:28 +01:00
Hailey 5bfe5aa503 [Video] More tweaks to AVAudioSession options (#4910) 2024-08-09 14:35:26 -07:00
Hailey dd0d50a6f0 [Video] Prevent pausing of background audio with expo-video on iOS (#4908)
* audio mixing pref

* lint

* patch expo video to add enter/exit fullscreen events

* rm logs

* fix audio problems

* toggle mute when enter/exiting fullscreen

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 11:25:54 +01:00
Hailey 0f993a09c2 [Video] Add onEnterFullscreen and onExitFullscreen to VideoView (#4907)
* patch expo video to add enter/exit fullscreen events

* rm logs

* Update expo-video+1.2.4.patch.md
2024-08-09 11:05:43 +01:00
Hailey cb574b7be3 [Videos] Add iOS function to set AVAudioSession.CategoryOptions to .mixWithOthers (#4905)
* audio mixing pref

* lint
2024-08-09 11:05:12 +01:00
Samuel Newman a4f0c9c753 [Video] more minor tweaks (#4906)
* update expo-video

* pause when on a different screen

* rm collapsable

* add mute/unmute button

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 03:24:38 +01:00
Samuel Newman 4350dbc853 [Video] Bundle of minor tweaks (#4904)
* fix bg color

* unique video urls for debug

* improve controls slightly

* mute until fullscreen

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-09 02:33:42 +01:00
dan e782db33dc Show just-posted replies above OP replies (#4901)
* Unify onPostReply handler

* Show just-posted replies above OP replies

* Only do this for the highlighted post or thread mode

It's confusing to have your post displace OP thread or other people's leaf posts.
2024-08-08 19:19:58 +01:00
Hailey c1af767fa6 Remove client filtering of starter packs (#4753) 2024-08-08 10:51:54 -07:00
Eric Bailey a0756c53be Remove show_avi_follow_button (#4900) 2024-08-08 18:14:15 +01:00
Eric Bailey 3ea8eb6013 Remove native_pwi_disabled (#4896)
* Remove native_pwi_disabled

* Remove search button
2024-08-08 18:14:02 +01:00
Samuel Newman e7a0055a85 Fix overflow on posts (#4899)
* overflow posts, via contentHider

* margin->padding for a bit more leeway

* overflow notifications

* overflow on header

* revert from contenthider, put on text in all places

* fix zalgo text in handle in composer

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-08 18:04:40 +01:00
dan ae25cb3391 Move onPressReply into child component (#4898)
* Move ComposePrompt to post-thread/

* Move onPressReply into child component
2024-08-08 17:58:58 +01:00
Eric Bailey 85fe95c988 Remove new_user_progress_guide (#4895) 2024-08-08 11:48:42 -05:00
Eric Bailey e1df2b0b16 Remove explore_page_profile_card_social_proof (#4894) 2024-08-08 11:48:32 -05:00
Eric Bailey f3a9f874d9 Remove ungroup_follow_backs gate (#4893) 2024-08-08 11:48:24 -05:00
dan 4b71950d99 Remove unnecessary state update for reply gate (#4897)
* Move mobile compose prompt to inner component

* Make canReply computed

* Use same clamp we use elsewhere
2024-08-08 17:05:51 +01:00
dan 2174feed44 Include follow-based suggestions in interstitial (#4889) 2024-08-08 15:49:34 +01:00
dan f1031d100b Cleanup flags (#4891)
* Remove launched gates

* Remove disabled gates
2024-08-08 15:25:42 +01:00
Eric Bailey 1e3b2d6f42 ALF suggested follows in profile header (#4828)
* Refactor ProfileHeaderSuggestedFollows

* Load fresh data every time

* Oops, missed a file

* Update ProfileCard.Link usage, tweak copy
2024-08-08 09:19:51 -05:00
Minseo Lee af5262682e Added trans (#4890) 2024-08-08 13:12:23 +01:00
dan a864f69849 Keep interstitial fresh on refresh (#4888) 2024-08-08 06:20:24 +01:00
dan 00fea10782 Include popcluster in suggestion ranking (#4887) 2024-08-08 05:56:22 +01:00
Hailey b3092413dd Add logging of selected feed preference when displaying the following feed (#4789) 2024-08-07 17:13:29 -07:00
Hailey 1b02f81cb8 [Video] Visibility detection view (#4741)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-07 14:45:06 -07:00
Samuel Newman fff2c079c2 [Videos] Video player - PR #2 - better web support (#4732)
* attempt some sort of "usurping" system

* polling-based active video approach

* split into inner component again

* click to steal active video

* disable findAndActivateVideo on native

* new intersectionobserver approach - wip

* fix types

* disable perf optimisation to allow overflow

* make active player indicator subtler, clean up video utils

* partially fix double-playing

* start working on controls

* fullscreen API

* get buttons working somewhat

* rm source from where it shouldn't be

* use video elem as source of truth

* fix keyboard nav + mute state

* new icons, add fullscreen + time + fix play

* unmount when far offscreen + round 2dp

* listen globally to clicks rather than blur event

* move controls to new file

* reduce quality when not active

* add hover state to buttons

* stop propagation of videoplayer click

* move around autoplay effects

* increase background contrast

* add subtitles button

* add stopPropagation to root of video player

* clean up VideoWebControls

* fix chrome

* change quality based on focused state

* use autoLevelCapping instead of nextLevel

* get subtitle track from stream

* always use hlsjs

* rework hls into a ref

* render player earlier, allowing preload

* add error boundary

* clean up component structure and organisation

* rework fullscreen API

* disable fullscreen on iPhone

* don't play when ready on pause

* debounce buffering

* simplify giant list of event listeners

* update pref

* reduce prop drilling

* minimise rerenders in `ActiveViewContext`

* restore prop drilling

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-08-07 18:47:51 +01:00
Samuel Newman b701e8c68c [Video] Authed video upload (#4885)
* add service auth call

* update API package

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-07 16:56:12 +01:00
Hailey 753a233408 Tweak feed manip to show cases of A -> B without further children (#4883) 2024-08-06 11:21:59 -07:00
dan 5845e08eee Show own replies before follows' replies in threads (#4882) 2024-08-06 17:12:27 +01:00
dan b291a1ed8a Show more replies in Following (different heuristic) (#4880) 2024-08-06 16:42:42 +01:00
dan 686d5ebb53 [Persisted] Make broadcast subscriptions granular by key (#4874)
* Add fast path for guaranteed noop updates

* Change persisted.onUpdate() API to take a key

* Implement granular broadcast listeners
2024-08-06 01:30:52 +01:00
dan 966f6c511f [Persisted] Fix the race condition causing clobbered writes between tabs (#4873)
* Broadcast the update in the same tick

The motivation for the original code is unclear. I was not able to reproduce the described behavior and have not seen it mentioned on the web. I'll assume that this was a misunderstanding.

* Remove defensive programming

The only places in this code that we can expect to throw are schema.parse(), JSON.parse(), JSON.stringify(), and localStorage.getItem/setItem/removeItem. Let's push try/catch'es where we expect them to be necessary.

* Don't write or clobber defaults

Writing defaults to local storage is unnecessary. We would write them as a part of next update anyway. So I'm removing that to reduce the number of moving pieces.

However, we do need to be wary of _state being set to defaults. Because _state gets mutated on write. We don't want to mutate the defaults object. To avoid having to think about this, let's copy on write. We don't write to this object very often.

* Refactor: extract tryParse

* Refactor: move string parsing into tryParse

* Extract tryStringify, split logging by platform

Shared data parsing/stringification errors are always logged. Storage errors are only logged on native because we trust the web APIs to work.

* Add a layer of caching to readFromStorage to web

We're going to be doing a read on every write so let's add a fast path that avoids parsing and validating.

* Fix the race condition causing clobbered writes between tabs
2024-08-06 01:03:27 +01:00
dan 5bf7f3769d [Persisted] Fork web and native, make it synchronous on the web (#4872)
* Delete logic for legacy storage

* Delete superfluous tests

At this point these tests aren't testing anything useful, let's just get rid of them.

* Inline store.ts methods into persisted/index.ts

* Fork persisted/index.ts into index.web.ts

* Remove non-essential code and comments from both forks

* Remove async/await from web fork of persisted/index.ts

* Remove unused return

* Enforce that forked types match
2024-08-06 00:30:58 +01:00
dan 74b0318d89 Show replies in context of their threads (#4871)
* Don't reconstruct threads from separate posts

* Remove post-level dedupe for now

* Change repost dedupe condition to look just at length

* Delete unused isThread

* Delete another isThread field

It is now meaningless because there's nothing special about author threads.

* Narrow down slice item shape so it does not need reply

* Consolidate slice validation criteria in one place

* Show replies in context

* Make fallback marker work

* Remove misleading and now-unused property

It was called rootUri but it was actually the leaf URI. Regardless, it's not used anymore.

* Add by-thread dedupe to non-author feeds

* Add post-level dedupe

* Always count from the start

This is easier to think about.

* Only tuner state need to be untouched on dry run

* Account for threads in reply filtering

* Remove repost deduping

This is already being taken care of by item-level deduping. It's also now wrong and removing too much (since it wasn't filtering for reposts directly).

* Calculate rootUri correctly

* Apply Following settings to all lists

* Don't dedupe intentional reposts by thread

* Show reply parent when ambiguous

* Explicitly remove orphaned replies from following/lists

* Fix thread dedupe to work across pages

* Mark grandparent-blocked as orphaned

* Guard tuner state change by dryRun

* Remove dead code

* Don't dedupe feedgen threads

* Revert "Apply Following settings to all lists"

This reverts commit aff86be6d37b60cc5d0ac38f22c31a4808342cf4.

Let's not do this yet and have a bit more discussion. This is a chunky change already.

* Reason belongs to a slice, not item

* Logically feedContext belongs to the slice

* Update comment to reflect latest behavior
2024-08-05 20:51:41 +01:00
Hailey 18b423396b Add PlatformInfo module (#4877) 2024-08-05 12:21:34 -07:00
bnewbold fb278384c6 bskyweb: optional basic auth password middleware (#4759) 2024-08-02 15:57:50 -07:00
Samuel Newman 6298e6897f tweak list header (#4870)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-08-03 00:33:45 +02:00
Eric Bailey c3d8beee6d Respect labels on feeds and lists (#4818)
* Prep

* Pass in optional moderation to FeedCard

* Compute moderation decision, filter contentList contexts, pass into card

* Let's go a different route

* Filter from within search queries

* Use same search query for starter packs

* Filter lists from profile tabs

* Cleanup

* Filter from profile feeds

* Moderate post embeds

* Memoize

* Use ScreenHider on lists

* Hide both list types

* Fix crash on iOS in screen hider, fix lineheight

* Memoize renderItem

* Reuse objects to prevent re-renders
2024-08-02 13:05:33 -05:00
dan 293ac6fab2 Only show replies in Following if following all involved actors (#4869)
* Only show replies in Following for followed root and grandparent

* Remove now-unnecessary check

* Simplify condition
2024-08-02 17:13:31 +01:00
dan 7f292abf51 Always limit Following replies to the people you follow (#4868)
* Limit feed replies to people you follow

* Remove dead code
2024-08-01 22:05:40 +01:00
Hailey f056cb646e Fix missing header on Likes/Reposted By, add missing perf optimizations (#4867)
* fix liked by list

* fix lists

* tweaks to style

* change string
2024-08-01 10:32:36 -07:00
Samuel Newman c78e9e3147 Move theme controls to its own screen (#4866) 2024-08-01 19:14:32 +02:00
dan 388c157c36 Display second-to-last rather than second post in a slice (#4864) 2024-08-01 17:49:43 +01:00
Eric Bailey b0e130a4d8 Update muted words dialog with expiresAt and actorTarget (#4801)
* WIP not working dropdown

* Update MutedWords dialog

* Add i18n formatDistance

* Comments

* Handle text wrapping

* Update label copy

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

* Fix alignment

* Improve translation output

* Revert toggle changes

* Better types for useFormatDistance

* Tweaks

* Integrate new sdk version into TagMenu

* Use ampersand

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

* Bump SDK

---------

Co-authored-by: Hailey <me@haileyok.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-08-01 10:29:27 -05:00
dan d2e88cc623 Fetch enough pages to fill a page's worth of items (#4863)
* Fetch enough pages to fill a page's worth of items

* Add failsafe in case of appview bug
2024-08-01 02:27:25 +01:00
Hailey 70ffd387e3 Only show "followed you back" when appropriate (#4849)
* only show followed back when we should

* try/catch

* log

* Update FeedItem.tsx

* tweak
2024-07-31 11:16:14 -07:00
dan 576cef88b5 [Web] Retrigger onEndReached if needed when content height changes (#4859)
* Extract EdgeVisibility

* Key Visibility by container height instead of item count
2024-07-31 19:10:24 +01:00
dan c75bb65bef Remove unused NoopFeedTuner (#4856) 2024-07-31 13:00:22 +01:00
GSMT c3e77b56ff useDedupe callback (#4855) 2024-07-30 15:19:23 -07:00
Hailey 8ddb28d3c5 [Video] Uploads (#4754)
* state for video uploads

* get upload working

* add a debug log

* add post progress

* progress

* fetch data

* add some progress info, web uploads

* post on finished uploading (wip)

* add a note

* add some todos

* clear video

* merge some stuff

* convert to `createUploadTask`

* patch expo modules core

* working native upload progress

* platform fork

* upload progress for web

* cleanup

* cleanup

* more tweaks

* simplify

* fix type errors

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-30 08:25:31 -07:00
Eric Bailey 43ba0f21f6 Make label required in link components (#4844) 2024-07-25 18:34:21 -05:00
Dmitrii Kartashev 4437b9a557 Boolean filter improvement alternative: TS upgrade (#4840)
* upgrade typescript and use new feature

* fix: typing error
2024-07-26 00:31:59 +01:00
Eric Bailey 50769b0b6f Add label to profile card (#4843) 2024-07-25 18:11:31 -05:00
Eric Bailey 043e5cea64 Improve a11y on noty feed (#4842) 2024-07-25 18:11:16 -05:00
Eric Bailey 35165e3d9b Add labels in feed card (#4836) 2024-07-25 18:07:42 -05:00
Eric Bailey 1d827cebe4 Add labels to mod details dialog (#4839) 2024-07-25 18:07:23 -05:00
Eric Bailey 783fd351ba Add labels to a few missing places (#4838) 2024-07-25 18:07:15 -05:00
Eric Bailey e7b485f185 Add labels in list card (#4837) 2024-07-25 18:07:07 -05:00
dan ac1538baad Refactor feed slices (#4834)
* Copy FeedViewPost into FeedSliceItem

* Explicitly construct feed slice items by copying known fields

* Type rootItem as FeedViewPost for now

Mergefeed logic relies on that.

* Unify reason and __source for slice items

* Move feedContext out of FeedSliceItem

* Remove slice.isFlattenedReply

* Remove unnused slice.ts

* Inline slice.isFullThread

* Refactor condition for clarity

* Extract slice.includesThreadRoot

* Encapsulate more usages of slice.rootItem into slice

* Rename slice.rootItem so semi-private slice._feedPost

* Move reason into slice

* Simplify slice ctor argument

* Reorder getters to reduce diff

* Make feedContext a getter to reduce diff
2024-07-25 23:02:37 +01:00
Hailey 3914025227 true (#4833) 2024-07-25 21:26:37 +01:00
Samuel Newman 401e92ed42 Replace import hairlineWidth = with const (#4831)
* replace import with const

* just use `StyleSheet.hairlineWidth`

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-25 20:45:15 +01:00
Samuel Newman 00240b95b9 [Videos] Video player - PR #1 - basic player (#4731)
* add ffmpeg-kit-react-native

* get select video button + compression working

* up res to 1080p

* add progress component

* move logic out of compressVideo

* (WIP) add lonestar compression

* rework web compression a bit

* mess around with adding a thumbnail

* 3mbps

* replace

* use 3mbps

* add expo-video

* remove unnecessary try/catch

* rm ToastAndroid

* fix web

* wrap lazy component in suspense

* gate video select button

* rm web compression

* flip sign

* remove expo-video from web

* review nits

* add video picker permissions + rm temp buttons

* add ffmpeg-kit-react-native

* replace

* hls-capable player

* start trying to hoist up video player instance

* hoist video player and move things around

* always show native controls

* fix controls on expo video android

* gate temp video player in feed

* rm IS_DEV, doesn't do what I thought it did

* use __DEV__ instead

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-25 20:41:50 +01:00
Hailey 4ec999cab7 Bump 1.90 (#4832) 2024-07-25 20:41:32 +01:00
dan 4291711f1d Fix sloppy filter(Boolean) types (#4830)
* Fix sloppy filter(Boolean) in threadgate

* Fix sloppy filter(Boolean) in Explore

* Fix sloppy filter(Boolean) in post-feed

* Harden FeedPostSliceItem.reason type def

* Harden parentAuthor types

* Fix lying component types, handle blocks
2024-07-25 19:53:12 +01:00
Eric Bailey fac1af43b0 Fuggedaboudit (#4829) 2024-07-25 13:16:21 -05:00
Paul Frazee a03622dd55 Release 1.89 prep (#4822)
* Fix curate-lists tests

* Run intl extract
2024-07-24 15:23:31 -07:00
surfdude29 2e7398b7c3 Update German localization (part 1) (#4742)
* Update German localization

* Apply suggestions from code review

Co-authored-by: cdfzo <cdfzo@pm.me>

* update string after #4743 merged

* Apply suggestions from code review

Co-authored-by: cdfzo <cdfzo@pm.me>

* Starterpaket –––> Startpaket

* Improve existing translations (#17)

* Improve existing translations

* Update more

* Update more

---------

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

* capitalise toast

---------

Co-authored-by: cdfzo <cdfzo@pm.me>
2024-07-24 14:41:43 -07:00
Takayuki KUSANO 8588a2ad51 Updated Japanese Translation (#4748)
* Updated translation

* Update translation

* Update translation
2024-07-24 14:41:05 -07:00
Kuwa Lee 7a0aa661a7 Update Chinese Localization (#4774)
* TW: Update

* TW: Clean

* TW: Update

* CN: Update translates

* Both: Remove superseded strings

* Both: Remove superseded strings#2

* TW: Update and clean

* TW: Update

* CN: Update translates

* TW: Improve

* Update messages.po

* CN: Update translates

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-07-24 14:40:32 -07:00
surfdude29 86ac3d687c Update French localization (#4781)
* Update French localization

* Apply suggestion from code review

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

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-07-24 14:39:38 -07:00
Hailey 11f2415942 make some settings screens scrollable for accessibility (#4819)
* make settings scrollable for accessibility

* nit
2024-07-24 14:39:01 -07:00
Hailey bfb7f6efef make toast shorter (#4821) 2024-07-24 14:23:37 -07:00
Samuel Newman efde018b13 special invalidation logic (#4820)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-24 21:44:41 +01:00
Samuel Newman 8fe5ddfa49 Modernise thread/following feed settings screen (#4797)
* fix web

* show back button on tablet for certain settings screens

* move headers to inside of scrollview

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-24 20:40:06 +01:00
Samuel Newman cfb8a3160e Priority notifications (#4798)
* new settings screen

* bring back the spinner

* add experimental language

* fix typo, change leading

* integrate priority notifications API

* update package

* use refetch instead of invalidateQueries

* fix read-after-write issue by polling for update

* add spinner for initial load

* rm onmutate, it's overcomplicated

* set error state eagerly

* Change language in description

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

* prettier

* add `Toggle.Platform`

* extract out mutation hook + error state

* rm useless cache mutation

* disambiguate isError and isPending

* rm unused isError

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-24 20:09:20 +01:00
dan 9bd8393685 Use consistent index for reading last item (#4817) 2024-07-24 02:32:05 +01:00
Paul Frazee 4af6bcb11a Hack-modify avi path to use smaller thumbs behind gate (#4816)
* Hack-modify avi path to use smaller thumbs behind gate

* Only use small thumbs on smaller rendering
2024-07-23 16:57:51 -07:00
Samuel Newman 67ce18a113 swap flex-start/end (#4815)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-23 23:03:20 +01:00
Samuel Newman 3755807b5e Fix switch style and animate (#4814)
* set height to 20+(2*hairline)

* animate switch

* Try to align on line height across platforms

* Use border 1px

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Eric Bailey <git@esb.lol>
2024-07-23 22:49:37 +01:00
Samuel Newman abb709d209 Native toast rework (#4808)
* rework toast to use reanimated

* fix animation on iOS

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-23 19:50:47 +01:00
Samuel Newman 27d712290a Use appropriate icons for toasts (#4803)
* use appropriate icons for toasts

* use info for session expiry

* tweak size

* message -> safeMessage

---------

Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-23 15:01:04 +01:00
Hailey 59bafb426f dont filter exact matches from typeahead (#4802) 2024-07-19 15:25:09 -07:00
Eric Bailey 3627a249ff Remove invalid labelers when subscribing/unsubscribing (#4771)
* Remove invalid labelers when subscribing/unsubscribing

* Let the async lock cook

* Use link to associate, leave copy as is
2024-07-12 14:55:34 -05:00
Eric Bailey 7c1c24ef1b Replace incongruous buttons in drawer (#4772)
* Replace incongruous buttons in drawer

* Improve a11y help
2024-07-12 12:12:57 -05:00
Eric Bailey f85df425f7 Invert saturation scale as well (#4783) 2024-07-12 10:58:12 -05:00
Hailey 306f162639 Make all referrer info sync (#4782) 2024-07-12 07:37:43 -07:00
Hailey f021c06468 Return a promise for getReferrerInfoAsync on web (#4777) 2024-07-11 19:51:54 -07:00
Michał Gołda cd9bba4b69 Fix: emoji picker closes when hitting spacebar (#4422) (#4441)
Co-authored-by: Hailey <me@haileyok.com>
2024-07-11 19:42:41 -07:00
Minseo Lee a71134f467 Reposted by you and Reply to you (#4478)
Co-authored-by: Hailey <me@haileyok.com>
2024-07-11 19:42:27 -07:00
Hailey 8b121af2e4 referrers for all platforms (#4514) 2024-07-11 18:43:10 -07:00
Hailey 83e8522e0a Create shared preferences API (#4654) 2024-07-11 18:37:43 -07:00
Hailey 2397104ad6 Lint native files (#4768) 2024-07-11 18:15:35 -07:00
Hailey b433469ab9 bump 1.89.0 (#4776) 2024-07-12 02:14:47 +01:00
Eric Bailey 119b4d3e0a Fix search hashtags by author (#4773) 2024-07-11 23:35:13 +01:00
Eric Bailey 74186950b2 [ALF] Theme & palette cleanup (#4769)
* Invert primary scale

* Invert negative palette

* Replace theme specific styles in Toggle

* Remove theme specific colors from Button, improves secondary solid on dark mode

* TextField

* Remove from MessageItem

* Threadgate editor

* IconCircle

* Muted words

* Generate themes from hues

* Cleanup

* Deprecate more values, fix circular import

* Invert positive too, hardly use

* Button tweaks, some theme diffs

* Match disabled state for negative button

* Fix unread noty bg
2024-07-11 16:59:12 -05:00
Eric Bailey ea0586cd67 Filter yourself out of follows interstitial (#4770) 2024-07-11 21:20:22 +01:00
Hailey 15a00b1864 ALF post button (#4767) 2024-07-10 14:48:34 -07:00
Hailey 65b5d31b58 Fix alt text for GIFs (#4766)
* fix alt text dialog for gifs

* only apply to native
2024-07-10 20:25:44 +01:00
dan fa64d9393b [Session] Include stack with the debug event (#4763) 2024-07-10 00:51:12 +01:00
dan 9b9e09d002 [Session] Experiment: Don't use withProxy (#4762)
* Reorder statements

* Remove withProxy() usage behind a gate
2024-07-10 00:12:26 +01:00
dan ce0bf867ff Rename session event, scope to errors (#4761) 2024-07-09 23:03:59 +01:00
dan 7a47656816 Log session events unconditionally (#4758) 2024-07-09 21:13:32 +01:00
Samuel Newman 2d0eefebc3 Add social proof to suggested follows (#4602)
* replace unused `followers` prop with social proof

* Introduce 'minimal' version

* Gate social proof one explore page, fix space if no desc

* Use smaller avis for minimal

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-07-09 11:10:50 -05:00
A Malik. Muhd 4360087ced Update README.md (#4394) 2024-07-08 19:02:26 -07:00
Hailey ca0a327052 tweak top padding external (#4755) 2024-07-09 02:16:34 +01:00
Hailey a3c43a7471 change contentVisibility to contain (#4752) 2024-07-08 15:16:43 -07:00
Hailey f8a59e10dd Fix RTL text rendering for display names (#4747)
* header display name rtl support

* highlighted post rtl

* move `NON_BREAKING_SPACE` to an external constant

* rtl support in search dropdown

* profile card rtl

* old profile card rtl

* hover card

* wizard list card

* new chat

* account card

* chat header

* clean up notifications

* just force LTR on meta display name
2024-07-08 18:06:00 +01:00
Hailey d5503d17de Reduce the size of the inner logo in the QR code (#4746)
* use a scale of `1` on QR code inner logo

* remove logo entirely

* Revert "remove logo entirely"

This reverts commit dee57f48c7.

* use scale of 0.95
2024-07-08 16:57:40 +01:00
Joel ea7afecf28 Fix misplaced '@' in RTL post meta. (#4531)
Co-authored-by: Joel <joel.garplind+github@gmail.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-07 15:27:30 -07:00
Josh ea37298cdd Remove broken and void back button (#4744) 2024-07-07 13:10:26 -07:00
Hailey a6b3c97df0 Ensure /start navigates to /starter-pack when clicking a link internally (#4745)
* remove temporary metadata removal

* ensure proper navigation
2024-07-07 13:07:28 +01:00
surfdude29 6b5e3181fb Add missing to in StarterPackScreen.tsx string (#4743) 2024-07-06 16:39:04 -07:00
Samuel Newman 8f06ba70bb Video compression in composer (#4638)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
Co-authored-by: Hailey <me@haileyok.com>
2024-07-05 17:50:03 -07:00
Hailey 56b688744e fix slop (#4739) 2024-07-05 22:44:06 +01:00
Paul Frazee 09bc4e95d8 Update stats 2024-07-05 12:37:06 -07:00
Paul Frazee 149446a26e Run intl:extract 2024-07-05 12:33:48 -07:00
Takayuki KUSANO 8c52d74925 Update Japanese translation (#4665)
* Update Japanese translation

* Updated Japanese translation

* Update translation

* Updated translation

* Update translation

* Update translation

* Update translation.

* Updated translation
2024-07-05 12:32:31 -07:00
Minseo Lee f45193783e Update Korean localization (#4646)
* 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-07-05 12:32:02 -07:00
Kuwa Lee adcd066733 Update Chinese Localization (#4695)
* CN: Update translates

* CN: Remove superseded strings

* CN: Update translates

* CN: Run intl:extract

* CN: Remove superseded strings

* CN: Optimize translation of starter pack

* CN: Run intl:extract

* CN: Remove superseded strings

* CN: Update translates

* CN: fix typo

* CN: Optimize Translations

* CN: hot fix

* TW: Update

* TW: Update and clean

* CN: hot fix

* BOTH: commit as LF

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: Apply suggestions

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-CN/messages.po

* CN: Update translates

* CN: Update translates

* TW: Update and clean

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-07-05 12:28:50 -07:00
Ivan Beà b10a2b9a8e Update catalan (#4702)
* Update catalan

New lines added, new lines localized.

Check it please @jordimas @darccio @surfdude29

* 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>

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

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

* Update messages.po

Apply  @surfdude29 corrections

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-07-05 12:28:29 -07:00
kodebanget 75da5f4965 Update Indonesian translation (#4706)
Co-authored-by: Indonesian <github-actions@github.com>
2024-07-05 12:28:03 -07:00
Paul Frazee baa788de38 Tweak checkmark size 2024-07-05 12:26:58 -07:00
dan 09dfc9edf8 Show feedback for Follow button in interstitials (#4738)
* Fix Follow in interstitials

* Show feedback in toast
2024-07-05 20:17:47 +01:00
surfdude29 d5fd19df8f Update French localization (#4662)
* Update French localization

* écriture inclusive for other usage of `amis`

* add one more string

* Apply suggestions from code review

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

* Update revision date

* translate new strings

* Apply suggestions from code review

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

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-07-05 10:31:12 -07:00
Samuel Newman 58e48fd31b Feed interstitial snapping (#4737)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-05 18:01:13 +01:00
Eric Bailey 3407206f52 [D1X] Use user action and viewing history to inform suggested follows (#4727)
* Use user action and viewing history to inform suggested follows

* Remove dynamic spreads

* Track more info about seen posts

* Add ranking

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 22:28:38 +01:00
dan 1c6bfc02fb Fix order of checks in experiment (#4734) 2024-07-04 21:15:47 +01:00
dan d03dd8c815 Feed interstitial tweaks (#4733)
* Swap interstitial positions

* Fix color
2024-07-04 20:54:49 +01:00
Hailey ca7386967a Fix onEndReached not firing sometimes on web (#4728)
* handle off screen visibility observer.

* Revert "handle off screen visibility observer."

This reverts commit e499ea0ed6.

* key ftw

* Remove special case

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 20:12:15 +01:00
Paul Frazee d837f96478 Fix responsiveness of dismissing the progress guide (#4729) 2024-07-04 20:08:33 +01:00
dan 12bf796293 Fix feed feedback (#4730) 2024-07-04 20:07:42 +01:00
Eric Bailey 4f02da96c8 [D1X] Pull out follow-backs for higher signal (#4719)
* Pull out follow-backs for higher signal

* Gate it

* Fix early gate check

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 04:13:47 +01:00
Paul Frazee 0ed99b840d New user progress guides (#4716)
* Add the animated checkmark svg

* Add progress guide list and task components

* Add ProgressGuide Toast component

* Implement progress-guide controller

* Add 7 follows to the progress guide

* Wire up action captures

* Wire up progress-guide persistence

* Trigger progress guide on account creation

* Clear the progress guide from storage on complete

* Add progress guide interstitial, put behind gate

* Fix: read progress guide state from prefs

* Some defensive type checks

* Create separate toast for completion

* List tweaks

* Only show on Discover

* Spacing and progress tweaks

* Completely hide when complete

* Capture the progress guide in local state, and only render toasts while guide is active

* Fix: ensure persisted hydrates into local state

* Gate

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 03:05:19 +01:00
Hailey aa7117edb6 Add starter pack embeds to posts (#4699)
* starter pack embeds

* revert test code

* Types

* add `BaseLink`

* precache on click

* rm log

* add a comment

* loading state

* top margin

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-04 02:15:08 +01:00
Paul Frazee a3d4fb652b Guided tour for new users (#4690)
* Add home guided tour (WIP)

* Add web handling of the tour

* Switch to our fork of rn-tourguide

* Bump guided-tour

* Fix alignment on android

* Implement home page tour trigger after account creation

* Add new_user_guided_tour gate

* Add a title line to the tour tooltips

* A11y improvements: proper labels, focus capture, scroll capture

* Silence type error

* Native a11y

* Use FocusScope

* Switch to useWebBodyScrollLock()

---------

Co-authored-by: Eric Bailey <git@esb.lol>
2024-07-02 21:25:19 -07:00
Hailey 6694a33603 Don't follow self, blocks or mute when following all; don't show blocks in list (#4715)
* don't follow self when following all

* also filter blocks

* add more filtering to follow all

* extract logic to functions
2024-07-03 03:50:04 +01:00
Samuel Newman dc3c81c4e2 change maxWidth -> width to fix GIFs in DMs (#4717)
Co-authored-by: Samuel Newman <10959775+mozzius@users.noreply.github.com>
2024-07-03 03:48:55 +01:00
Eric Bailey 04cfd06639 [D1X] Integrate interstitials (#4698)
* Use discriminated union

* Integrate interstitials

* Add gates and handling for variants

* Only show interstitials for logged in accounts since flags are based on user ID

* Nit

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-03 03:43:54 +01:00
Eric Bailey 0598fc2faa [D1X] Add interstitials, component tweaks, placeholders (#4697)
* Add interstitials, component tweaks, placeholders

* Tweak feed card styles

* Port over same fix to ProfileCard

* Add browse more link on desktop

* Rm Gemfile

* Update logContext

* Update logContext

* Add click metric to cards

* Pass through props to ProfileCard.Link

* 2-up grid for profile cards on desktop web

* Add secondary_inverted button color

* Use inverted button color

* Adjust follow button layout

* Update skeleton

* Use round button

* Translate
2024-07-03 03:34:18 +01:00
Takayuki KUSANO 6af78de9ee Make tab names translatable (#4724) 2024-07-03 02:21:33 +01:00
Eric Bailey cacc4c5068 Remove search from disabled PWI state (#4723) 2024-07-03 01:15:04 +01:00
Eric Bailey 14c2d75d49 Unify label pills (#4676)
* New label pills

* Fix type errors, add default case

* Remove negative margin, only works in some places

* Fix alignment edge case

* Add a bit of padding

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-03 00:15:20 +01:00
Eric Bailey c133661768 Add music interest (#4722) 2024-07-02 17:11:28 -05:00
Paul Frazee 63bb8fda2d Improve textinput performance in login and account creation (#4673)
* Change login form to use uncontrolled inputs

* Debounce state updates in account creation to reduce flicker

* Refactor state-control of account creation forms to fix perf without relying on debounces

* Remove canNext and enforce is13

* Re-add live validation to signup form (#4720)

* Update validation in real time

* Disable on invalid

* Clear server error on typing

* Remove unnecessary clearing of error

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-07-02 22:43:34 +01:00
Eric Bailey 4bb4452f08 [D1X] Minimum interest experiment (#4653)
* Change up copy

* Add min # prompt

* Improve style

* Add gate

* Tweak padding

* Translate

* Revert string change

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-07-02 20:19:03 +01:00
Hailey 0012c6d40f Add events to signup for captcha results (#4712) 2024-07-01 15:11:04 -07:00
dan a9fe87b842 Add dismiss backdrop to native dropdowns (#4711) 2024-07-01 18:45:15 +01:00
Eric Bailey 1a037d3542 FeedCard & ListCard cleanups (#4644)
* Extract ListCard from FeedCard

* Export FeedCard.Action and optionally include in ListCard

* Remove list dual usage from most of FeedCard

* Update usages of FeedCard and ListCard

* Add back list purpose logic

* Make Action comp easier to use, clarify list purpose

* Rename Action to SaveButton
2024-06-28 08:27:54 -05:00
Hailey 58a97db5b8 Revert animation change in signup (#4693) 2024-06-27 22:01:02 -07:00
Hailey 8ebf9cc4b1 Handle pushing to starterpack screen when unauthed (#4692) 2024-06-27 21:44:26 -07:00
Hailey 91c4aa7c2d Handle pressing all go.bsky.app links in-app w/ resolution (#4680) 2024-06-27 19:35:20 -07:00
Hailey 030c8e268e Bump 1.88.0 (#4688) 2024-06-27 16:25:21 -07:00
Hailey d5ca95233e offer a json response for grabbing short links (#4671) 2024-06-27 11:31:24 -07:00
Eric Bailey fff3ae8f35 Refactor ProfileCard to be composable (#4622)
* Break up new profile card for easier re-use

* Break things up a bit more

* Add round variant support and other button props

* Handle blocks

* Add Outer export

* Tweak space
2024-06-27 13:27:37 -05:00
dan d26928a5d8 Remove reposts from the Replies tab (#4669) 2024-06-27 18:39:36 +01:00
dan 58102377fd Fix pasting images on web (#4670) 2024-06-27 18:36:06 +01:00
devin ivy 49396451ec bskyogcard: support emoji, more languages, long starter pack names (#4668) 2024-06-27 13:02:29 -04:00
Paul Frazee f6b138f709 Run intl extract 2024-06-26 19:03:52 -07:00
Hailey 0ab6d54093 Add some events to landing screen (#4664) 2024-06-26 19:00:35 -07:00
Hailey 5641a4393c update follows when pressing follow all (#4663) 2024-06-26 18:57:57 -07:00
Hailey 878b0476dd Better starterpack embed (#4659) 2024-06-26 17:24:33 -07:00
dan da4dfeb9cf [Starter Packs] Posts tab (#4660)
* [Starter Packs] Posts tab

* oops
2024-06-27 01:07:56 +01:00
Paul Frazee 3b0a177544 Run intl extract 2024-06-26 16:09:04 -07:00
Eric Bailey 368cd7bb0e [D1X] Onboarding interest display names (#4657)
* Translate interest names in onboarding

* Add comment

* Do it the normal way
2024-06-26 16:35:42 -05:00
surfdude29 c4dce4ce45 Mark two starter pack strings for localization (#4655) 2024-06-26 19:20:52 +01:00
dan 3f20e2e3cf Refactor nested conditions in the starter pack wizard (#4652)
* Refactor condition nesting by screen

* Inline indexes

* More explicit conditions
2024-06-26 16:08:57 +01:00
Takayuki KUSANO 83745c923f Fix footer messages in starter pack wizard (#4650)
* Fix footer messages in StarterPack wizard and updates ja messages

* Updates to minimize diff

* Revert "Updates to minimize diff"

This reverts commit 4d1dfe131a.

* Revert "Fix footer messages in StarterPack wizard and updates ja messages"

This reverts commit 9a90898abc.

* Fix labels for plurals in starter packs

* Update translations

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-26 15:41:14 +01:00
Samuel Newman 8621ecd38a disable enabling adult content on iOS (#4651) 2024-06-26 07:28:31 -07:00
Hailey b23f112689 Remove starterpack gate (#4645) 2024-06-25 17:02:43 -07:00
Eric Bailey dd2e173514 Add back pin action for feed cards (#4643) 2024-06-25 23:43:41 +01:00
Hailey 7c5ff79c8e workflow_dispatch link (#4642) 2024-06-25 11:31:02 -07:00
Hailey b75341314c tweak app clip AASA (#4641) 2024-06-25 10:34:17 -07:00
Minseo Lee 58a9dceb33 Update Korean localization (#4614)
* Update messages.po

* Update messages.po
2024-06-25 10:11:32 -07:00
Takayuki KUSANO b6a38e7d64 Updated Japanese translation (#4591)
* Updated Japanese translation

* Updated

* Updated Japanese translation

* Fix some translations

* Updated translation (see #4607)

* Update translation

* Fixed some translations

* Update messages.po

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-25 10:10:56 -07:00
surfdude29 4d9657c819 Update French localization (#4637)
* Update French localization

* fix apostrophe

* Apply suggestions from code review

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

* update revision date

* quick fix after #4636 merged

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-06-25 10:08:40 -07:00
Hailey d11b552710 ensure we get navigated away to starter pack when signed in (#4640)
* ensure we get navigated away to starter pack when signed in

* clean
2024-06-25 09:36:54 -07:00
Hailey e5b9f130a9 Only add the URI to the record (#4639) 2024-06-25 09:24:05 -07:00
surfdude29 fc2fba0981 Fix typo in ThreadgateEditor.tsx (#4636) 2024-06-25 11:32:30 +01:00
Hailey 12faa005af bump (#4634) 2024-06-24 21:01:56 -07:00
bnewbold 363d18a40e CI: bump some more golang versions to v1.22 (#4635) 2024-06-24 19:10:29 -07:00
devin ivy efbc6d4f1b go version for embedr (#4632) 2024-06-24 21:56:32 -04:00
devin ivy 682f31ec9d Add og meta tags to starter pack detail (#4585)
* add og meta tags to starter pack detail

* tidy

* bskyweb: add starter pack title to og meta

* bskyweb build

* go version to 1.22

* tidy
2024-06-24 21:06:53 -04:00
Eric Bailey 6cda641250 Disable facets in FeedCard.Description component (#4620) 2024-06-24 18:05:06 -07:00
surfdude29 615c0c851e Update French localization (#4611)
* Update French localization

* minor fix

* `pack de démarrage` --> `kit de démarrage`

* Apply suggestions from code review

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

* Apply suggestions from @Signez code review

* Update messages.po

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-06-24 17:53:47 -07:00
Hailey 2ed133cb63 Maintain portrait in app clip (#4630) 2024-06-24 17:47:20 -07:00
Hailey f94edc3f44 tweak wording for own badge (#4631) 2024-06-24 17:41:40 -07:00
Hailey dd5198f317 explicitly filter out labelers (#4629) 2024-06-24 17:07:29 -07:00
Eric Bailey 340c2c5eaf Resolve facets in feed description on feed lander (#4628) 2024-06-24 19:06:04 -05:00
Eric Bailey 795fe7455b Clicky newsky androidy (#4627)
* Clicky newsky androidy

* tweak

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-24 18:55:29 -05:00
Paul Frazee dc9e51dca1 Add borders around starter pack landing page when tablet or deskto (#4626) 2024-06-24 16:31:07 -07:00
Ivan Beà 59fa7c0c0d Update catalan messages.po (#4388)
* Update catalan messages.po

Keeping it at 100%

Check it please @jordimas @darccio @surfdude29

* 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 messages.po

apply @jordimas correction

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-06-24 16:28:03 -07:00
Eric Bailey d79891a858 Disable clicks on profile cards on starter pack lander (#4621) 2024-06-24 16:10:18 -07:00
Hailey 51fca95669 add rich text facets to description (#4619) 2024-06-24 16:04:34 -07:00
Paul Frazee ed940c637e Set up the global 'joined this week' (#4625) 2024-06-24 16:03:32 -07:00
Hailey 9e89ddeb1c Wait for preferences before showing suggested feeds (#4618) 2024-06-24 15:48:10 -07:00
Hailey bce3338a02 use .push instead of .concat (#4624) 2024-06-24 15:43:52 -07:00
Eric Bailey ffb67397e7 Newskie dialog tweaks (#4623) 2024-06-24 15:34:12 -07:00
Samuel Newman 29aaf09a8b Composer - replace threadgate modal with alf dialog (#4329)
* replace threadgate modal with alf dialog

* add accessibility to selectable

* add aria

* hide spinner once fetched

* add `hasOpenDialogs` value to context

* remove state

* Rm loading state

* Update the threadgate dialog button theming

* Factor out the threadgate editor and add editing to post views

* Mark messages for localization

* Use colors from mute dialog

* Remove unnecessary effect

* Reset state on dialog dismiss

* Clearer CTA

* Fix bugs

* Scope keyboard fix

* Rm getAreDialogsActive (no longer needed)

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-06-24 23:15:11 +01:00
Hailey e0ac7d5bdc handle each possible loading state (#4617) 2024-06-24 21:37:08 +01:00
dan f64245c1fb Fix crash in Feeds and Starter Packs (#4616)
* Remove useless check

* Fix the bug by only adding resolved feeds/lists

* Clarify the purpose of the count field
2024-06-24 21:34:42 +01:00
Hailey 873d91d466 use granular permission of for media perm request (#4609) 2024-06-24 11:14:40 -07:00
Hailey 77a512ae32 Couple of starter packs tweaks (#4604) 2024-06-24 10:24:39 -07:00
Paul Frazee f769564edf Remove the 'Who can reply' element except when viewing root, and add "edit" (#4615)
* Remove the 'Who can reply' element except when viewing root, and add the edit text to authors

* Switch to icon
2024-06-24 10:11:43 -07:00
Takayuki KUSANO 0a0c738790 Modified to use "measure word" in "# others" (#4607) 2024-06-23 01:16:20 -07:00
Paul Frazee de1b7f7045 Merge branch 'KuwaLee-zh' into main
Update Chinese Localization (merge #4535)
2024-06-22 10:16:09 -07:00
Paul Frazee 897427eed0 Run intl extract 2024-06-22 10:15:41 -07:00
Paul Frazee 45648bd383 Merge branch 'zh' of https://github.com/KuwaLee/bluesky-social-app into KuwaLee-zh 2024-06-22 10:14:43 -07:00
Paul Frazee 8eec632636 Release 1.87 prep (#4603)
* Update tests

* Run intl extract
2024-06-22 09:54:53 -07:00
Hailey f75a429f08 add missing prop... (#4601) 2024-06-22 10:24:45 +03:00
Hailey f089f45781 Starter Packs (#4332)
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Co-authored-by: Eric Bailey <git@esb.lol>
Co-authored-by: Samuel Newman <mozzius@protonmail.com>
2024-06-21 21:38:04 -07:00
Kuwa Lee 21a7d47cdc Merge branch 'bluesky-social:main' into zh 2024-06-22 11:33:58 +08:00
Hailey 35f64535cb Tweak feed card to prevent spinnerz when pushing to screen (#4600) 2024-06-21 19:59:08 -07:00
dan 1715afd80e [Statsig] Send Discover aggregate interactions (#4599) 2024-06-22 03:54:47 +03:00
dan 7db8dd8980 Add debug feedContext label (#4598) 2024-06-22 02:11:39 +03:00
Minseo Lee 707ea5bf06 Add options for Feeds in Navigation.tsx (#4503)
* Update Navigation.tsx

* Update Navigation.tsx
2024-06-22 01:41:58 +03:00
Hailey 4d9e686e3b add flex shrink (#4597) 2024-06-22 01:15:12 +03:00
Eric Bailey 4d6787009c Pinned feeds cards (#4526)
* Add lists support to FeedCard

* Add useSavedFeeds query, similar to usePinnedFeedInfos

* Integrate into Feeds screen

* Fix alignment on mobile

* Update usages

* Add placeholder loading state

* Handle no feeds state

* Reuse previous data for placeholder

* Staged loading

* Improve staged loading

* Use setQueryData approach to pre-caching

* Add types for a little more safety

* Fix precaching

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-22 00:50:23 +03:00
Eric Bailey cb37647949 Fetch more than 3 suggested follows after first load (#4595)
* Fetch more than 3 sugg follows after first load

* Preview handling via overfetching
2024-06-21 14:50:49 -05:00
devin ivy 55812b0394 Bsky short link service (#4542)
* bskylink: scaffold service w/ initial config and schema

* bskylink: implement link creation and redirects

* bskylink: tidy

* bskylink: tests

* bskylink: tidy, add error handler

* bskylink: add dockerfile

* bskylink: add build

* bskylink: fix some express plumbing

* bskyweb: proxy fallthrough routes to link service redirects

* bskyweb: build w/ link proxy

* Add AASA to bskylink (#4588)

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-21 12:41:06 -04:00
Minseo Lee ba21fddd78 Update Korean localization (#4513)
* 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-06-20 15:50:18 -07:00
Takayuki KUSANO 8ff862798f Update Japanese translation (#4477)
* Update Japanese translation

* Update Japanese translation

* Fix translation

ref. https://github.com/bluesky-social/social-app/pull/4477#pullrequestreview-2114478514

* Update Japanese translation

* Fix translation

* Updated Japanese translation

* Updated translations
2024-06-20 15:49:50 -07:00
Marco Maroni f344032ed8 Italian translation fix (#4527)
* Update messages.po

Italian translation fix (feeds->feed)

* Italian localization update

Italian localization update (DM)

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

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

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

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

---------

Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-06-20 15:48:58 -07:00
dan 4c48a1f14b [Session] Logging (#4476)
* Add session logging (console.log)

* Hook it up for real

* Send type separately
2024-06-20 15:47:56 -07:00
Eric Bailey 4bba59790a Add a11y context (#4586)
* Add a11y context

* Feedback
2024-06-20 17:06:57 -05:00
Hailey 4d8537bcd4 center pill text in label pill (#4579)
* center pill text

* undo
2024-06-20 15:01:58 -07:00
dan 5d98b4b06c Wait for AppView when posting (#4584) 2024-06-20 14:54:30 -07:00
devin ivy 51f5e6bf90 Bsky link card service (#4547)
* setup bskycard

* quick proof of concept for png card generation

* bskycard: use jsx

* bskycard: 3x5 profile layout

* bskycard: add butterfly overlay

* bskycard: tidy

* bskycard: separate and reorganize

* bskycard: tidy

* bskycard: tidy

* bskycard: tidy

* bskycard: poc of transparent overlay and box shadow

* bskycard: reorg impl into src/ directory

* bskycard: use more standard app structure

* bskycard: setup dockerfile, fix build

* bskycard: support for x-origin-verify

* bskycard: card layout, filter images based on labels

* bskycard: tidy

* bskycard: support cluster mode

* bskycard: handle error fetching starter pack info

* bskycard: tidy

* bskycard: fix leak on failed image fetch

* bskycard: build workflow

* bskyogcard: rename from bskycard

* bskyogcard: fix some express plumbing

* bskyogcard: add cdn tags, tidy
2024-06-20 17:45:52 -04:00
Kuwa Lee 39c32b0ab1 Merge branch 'bluesky-social:main' into zh 2024-06-21 04:14:12 +08:00
Eric Bailey eac4668d73 Merge #4492, fixes profile menu hover (#4580)
* Fix button hover color (#4492)

* Update ProfileMenu.tsx

* Update Button.tsx

* Update ProfileFeed.tsx

* Update ProfileFeed.tsx

* Re-add change post conflict

---------

Co-authored-by: Minseo Lee <itoupluk427@gmail.com>
2024-06-20 10:30:48 -07:00
Kuwa Lee 6ac8389adb TW: hot fix 2024-06-20 23:04:52 +08:00
Kuwa Lee 52b52617e1 TW: Update and clean 2024-06-20 23:00:18 +08:00
Frudrax Cheng 43adc64e5f CN: Remove superseded strings 2024-06-20 16:34:26 +08:00
Frudrax Cheng f927e74e52 CN: Update translates 2024-06-20 16:32:52 +08:00
Kuwa Lee a33e370d22 Merge branch 'bluesky-social:main' into zh 2024-06-20 16:26:22 +08:00
Paul Frazee 80197556f1 Rework "Who can reply" to blend more nicely into the UI (#4578)
* Rework WhoCanReply controls in threads to blend more nicely

* Fix layout

* Fix post control hitslops

* Move dialog content to separate component

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 18:39:45 -07:00
dan 75aec19230 Fix threadgate read after write (#4577)
* Fix threadgate read-after-write problem

* Fix React key (drive-by)
2024-06-19 18:19:37 -07:00
Frudrax Cheng 7deea7ddd4 CN: Update Revision-Date 2024-06-20 09:15:40 +08:00
Frudrax Cheng bfcf872921 CN: translated 'ALT' 2024-06-20 09:13:20 +08:00
Frudrax Cheng e327bd01ec Merge branch 'bluesky-social:main' into zh 2024-06-20 09:09:59 +08:00
Eric Bailey 7d8fca56dc Convert button to use forwardRef (#4576) 2024-06-19 18:47:43 -05:00
Hailey 89d99a8701 use 1000x1000 for image height in avatar cropper (#4453) 2024-06-20 02:20:43 +03:00
Samuel Newman 5c31859f7b fix for autofill covering border (#4573) 2024-06-20 01:42:12 +03:00
Samuel Newman 73fc0094dd Update HomeHeaderLayoutMobile.tsx (#4572) 2024-06-20 00:45:08 +03:00
Samuel Newman 0f931933a7 Option for large alt badges (#4571)
* add pref for large alt badge

* add to settings

* do the large badge bit

* Tweak wording

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-20 00:32:44 +03:00
Kuwa Lee e170447cc6 Merge branch 'bluesky-social:main' into zh 2024-06-20 05:27:14 +08:00
Kuwa Lee a98c4efc7c TW: Update and clean 2024-06-20 05:24:00 +08:00
Samuel Newman 22c5aa4da4 Truncate post metrics and fix truncation on native (#4575)
* truncate post counts

* add numberformat polyfill

* Fix perf

* Simplify type shenanigans

* Bump versions to remove dupes

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-20 00:21:02 +03:00
dan ca17cf276f Fix avi placeholder layout (#4570) 2024-06-19 19:03:59 +03:00
Frudrax Cheng 95f4cfe24f CN: Remove superseded strings 2024-06-19 14:57:25 +08:00
Frudrax Cheng 6316ddf627 CN: Update translates 2024-06-19 14:55:52 +08:00
Frudrax Cheng bdc1ea897f Merge branch 'bluesky-social:main' into zh 2024-06-19 14:41:03 +08:00
Hailey 8788708bd2 add support for ListEmptyComponent, allow undefined data (#4403)
* add support for `ListEmptyComponent`, allow `undefined` data

* change `header` and `footer` to be in line with `emptyComponent`

* don't render `onEndReached` or `onStartReached` `Visibility` if empty
2024-06-19 03:33:43 +03:00
Samuel Newman 3dc34be929 GIF previews in notifications (#4447)
* gifs in notifications

* remove try/catch

* Limit try/catch scope

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 03:09:06 +03:00
dan 7ddbc392c3 [Session] Convert account to session data explicitly (#4446)
* Extract a variable

* Extract sessionAccountToSession

* Convert account to session data on assignment
2024-06-19 02:47:50 +03:00
Eric Bailey 5159495274 Move onboarding start to after successfull account creation (#4381)
* Move onboarding start to after successfull account creation

* Remove unused dispatch
2024-06-19 02:46:34 +03:00
Paul Frazee 07c2be255f Collection of moderation fixes (#4566)
* Fix: dont blur parents in threads that embed blocks

* After tapping 'Show hidden replies', show the individual hider cards

* Add shape override to UserAvatar and fix the fallback avi for labelers

* Fix precedence

* Detect shape for DefaultAvatar

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 02:36:46 +03:00
Eric Bailey ac08c76168 Fix undefined block (#4479)
* Fix undefined block (#4378)

* Fix undefined block

* Changing text and handling all blocks.

* Tweaks

* Update copy, make non-interactive

* Remove console

* Clarify logic

* Pass through parent blocked state for 3p blocks

* Better translation

---------

Co-authored-by: Josh <hi@oracularhades.com>
Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 02:03:23 +03:00
Samuel Newman 2237e10ad2 fix gap between tab bar and its border (#4538) 2024-06-19 01:53:54 +03:00
Eric Bailey c92ef2fe31 Better handling of blocks in KnownFollowers (#4563)
* Better handle nested conditionals, use renderable items to determine UI

* Better translate

* Fix translation and fix missing case in the process

* Clarify naming

* Add safeguard

* Remove unneeded msg

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-19 01:33:17 +03:00
Eric Bailey 32b4063185 Verify email reminders (#4510)
* Clarify intent

* Increase email reminder period to once per day

* Fallback

* Snooze immediately after account creation, prevent showing right after signup

* Fix e2e test exports

* Remove redundant check

* Better simple date generation

* Replace in DateField

* Use non-string comparison

* Revert change to unrelated code

* Also parse

* Remove side effect
2024-06-18 17:21:34 -05:00
Paul Frazee 853c32b4d8 Bump labeler limit to 20 (#4565)
* Increase the labeler subscription limit to 20

* Bump @atproto/api@0.12.20

* Fix: correctly count labeler subscriptions

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-19 00:21:55 +03:00
Samuel Newman 0012d1236f Migrate local thread mutes (#4523)
* migrate thread mutes

* don't try and clear if not logged in yet

* migrate mutes one at a time

* write before mutating

* only migrate mutes of self posts

* use /** @deprecated */

* shouldLike -> shouldMute
2024-06-19 00:05:59 +03:00
Eric Bailey 502bcad701 Disable newskie dialog tap in hover card web (#4562) 2024-06-18 14:09:40 -05:00
Paul Frazee d6ce16d15a Implement thread locking (#4545)
* Add the ability to edit threadgates

* Fix bottom border on mobile

* Refresh thread after threadgate edit
2024-06-18 12:07:56 -07:00
Eric Bailey 4165a02b2d Prevent unecessary calls (#4561)
(cherry picked from commit ecb4879767)
2024-06-18 21:52:44 +03:00
Eric Bailey 983d85384b Force callers of getTimeAgo to pass in the value for "now" (#4560)
* Remove icky hook for now

* Force callers of getTimeAgo to pass in the 'now' value

* Update usage in Newskie dialog
2024-06-18 21:50:07 +03:00
Paul Frazee fb76265fcc Fix: only apply self-thread load-more behavior on the outer edge of the reply tree (#4559) 2024-06-18 21:48:49 +03:00
Samuel Newman 5f5d845053 Server-side thread mutes (#4518)
* update atproto/api

* move thread mutes to server side

* rm log

* move muted threads provider to inside did key

* use map instead of object
2024-06-18 21:48:34 +03:00
Kuwa Lee a6d49062e6 Merge branch 'bluesky-social:main' into zh 2024-06-19 02:47:38 +08:00
Eric Bailey 35e54e24a0 Explore fixes (#4540)
* Use safe check, check for next page, handle varied lengths

* Fix border width

* Move safe check

* Add font_heavy and use it on the explore page headers

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-06-18 13:37:14 -05:00
Eric Bailey 1106517481 Is it "newskie" or "newsky" 🤔 (#4557)
* add newskie icon

(cherry picked from commit 152e074ee0)
(cherry picked from commit 8d2326f115c9c9d32aa1c41259bb81936b3868aa)

* add size prop

(cherry picked from commit af09ae2d8f)
(cherry picked from commit 38dd38451bcce8afcf302ad1180802640857722a)

* add a dialog for newskies to profiles

(cherry picked from commit fe16f55e9c)
(cherry picked from commit c5b9f1b16ace276f422832069db076a5360616fe)

* move newskie to handle

(cherry picked from commit 150f2635b2)
(cherry picked from commit 1efaaf835380f4e76d2e4b7fe8b727a92731a794)

* use "say hello" in newskie dialog

(cherry picked from commit d9a286cfc8)
(cherry picked from commit 018dd1739fee68906dec63e05519f5ca9ae73910)

* tweaks

(cherry picked from commit 070363c947)
(cherry picked from commit c30855d4ff311e31fb6ae357a9d6cd1662b291d5)

* Tweaks

* Re-export newskie icon

* Design tweaks

* Tweaks

* Add source icon

* Remove unused file

* Remove unneeded edits

* Simplify logic

* Update source

* Moderate displayName, fix createdAt type

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-18 12:59:50 -05:00
Hailey 73c9de3ce2 fix keyboard overlaying onboarding inputs (#4558) 2024-06-18 10:57:08 -07:00
Eric Bailey 443beda741 Add useGetTimeAgo and utils (#4556)
* Create a testable version of ago() and re-enable the disabled test (#4364)

* Enable the test of ago()

* Use test cases

This puts the input and the expected values next to each other.

* Create dateDiff function

This is a copy of ago(), but with the ability to specify the second date instead of using Date.now().

* Let ago() use dateDiff()

* Move constants close to usage

* Test dateDiff instead of ago

This makes it possible to test the dates without being forced to rely on what the current date is.

The commented out tests do not yet pass. This is fixed in later commits.

* Update dateDiff and enable the remaining tests

* Split up tests, use date-fns as helpers

* Remove old test

* Add long format

* Add hook

* Migrate to hooks

* Delete old code

* Or equal to

* Update comment

---------

Co-authored-by: Jan Aagaard <jan@aagaard.net>
2024-06-18 10:55:02 -05:00
dan 08cfb09589 Unconditionally polyfill Intl.PluralRules for native (#4554)
* Revert "Fix Android startup perf regression (#4544)"

This reverts commit e6213d7aa5.

* Force polyfill
2024-06-18 17:27:40 +03:00
dan f142339e06 Dedupe Zod installation (#4551) 2024-06-18 17:20:54 +03:00
dan e30575c0dc Use exact imports for icons (#4549)
* Use exact imports for icons

* Add a lint rule
2024-06-18 15:37:08 +03:00
dan e6213d7aa5 Fix Android startup perf regression (#4544) 2024-06-18 08:23:41 +03:00
Kuwa Lee fad73fe928 Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 10:15:16 +08:00
Kuwa Lee b06aa12730 Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 10:14:40 +08:00
Kuwa Lee 0b24216040 Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 10:14:15 +08:00
Frudrax Cheng 7548c23f19 Merge branch 'bluesky-social:main' into zh 2024-06-18 09:11:53 +08:00
Eric Bailey 077da08309 Explore feed cards (#4521)
* Replace FeedSourceCard on Explore page

(cherry picked from commit e7e9787bfaa9368bfaeaaa4ca144ab77b438219c)

* Replace FeedSourceCard on Search page

(cherry picked from commit ac47aade7622d359eee9509763cda666d964d8a3)
2024-06-17 13:56:11 -05:00
Kuwa Lee b4e4c15fbb Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 02:35:15 +08:00
Kuwa Lee 2a83ad1f5c Update src/locale/locales/zh-TW/messages.po
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-18 02:34:53 +08:00
Eric Bailey 7e88d0d7a6 Onboarding fixes (#4508)
* Add extra padding to bottom of profile step

* Make profile pic gen higher res
2024-06-17 13:21:35 -05:00
Eric Bailey 332524b7de Add native_pwi_disabled feature gate experiment (#4507)
* Add native_pwi_disabled feature gate experiment

* Use const
2024-06-17 13:21:09 -05:00
Eric Bailey f5f3bd8130 Select, don't mutate (#4541) 2024-06-17 19:22:39 +03:00
Hailey ba2fadb661 Don't show "Pin/Add" button on feed card w/ no session (#4539)
* pt 1

* tweak
2024-06-17 11:05:02 -05:00
Hailey 89be5a442c Add patch for RCTBaseTextInput fixing selectTextOnFocus prop (#4533)
* create patch

* remove js fix in `SearchScreen`
2024-06-17 10:56:02 +03:00
Frudrax Cheng 035a1ca18e CN: Optimize 'follow' translations 2024-06-17 10:38:08 +08:00
Frudrax Cheng c09b66182d CN: run intl:extract 2024-06-17 10:31:24 +08:00
Frudrax Cheng 741ce1c176 CN: Remove superseded strings 2024-06-17 10:26:59 +08:00
Frudrax Cheng 0af555830e CN: Update translates 2024-06-17 10:25:04 +08:00
Kuwa Lee 45b10f2c60 TW: Update and clean 2024-06-16 20:32:15 +08:00
Kuwa Lee fa1dfe8b0a Merge branch 'bluesky-social:main' into zh 2024-06-16 20:04:56 +08:00
Joel 10c6035f31 Make lint-staged work in more envs (#4532)
When setting up the environment on a Windows machine with Git Bash, the pre-commit hook errored out:

> /usr/bin/bash: line 1: C:UsersNameFoldersocial-appnode_modules.binlint-staged: command not found

Seemingly, `yarn lint-staged` is not able to correctly resolve the path.

This commit changes the pre-commit hook to use `npx` instead of `yarn`, for 2 reasons:
1. It works on my machine (and is supposedly a more universal solution)
2. It is how it is done in the documentation: https://github.com/lint-staged/lint-staged?tab=readme-ov-file#examples

Co-authored-by: Joel <joel.garplind+github@gmail.com>
2024-06-16 13:42:15 +03:00
Hailey d0bb97e8a9 fix native post meta (#4530) 2024-06-16 12:23:48 +03:00
Kuwa Lee 01f505d09f Merge branch 'bluesky-social:main' into zh 2024-06-15 19:00:34 +08:00
Eric Bailey eaef1446f2 Use URI as key (#4522) 2024-06-14 14:28:25 -05:00
Eric Bailey 5751014117 Feed source card (#4512)
* Pass event through click handlers

* Add FeedCard, use in Feeds screen

* Tweak space

* Don't contrain rt height

* Tweak space

* Fix type errors, don't pass event to fns that don't expect it

* Show unresolved RT prior to facet resolution
2024-06-14 14:24:04 -05:00
Minseo Lee 51a3e60132 Fix kawaii logo (#4505) 2024-06-14 10:39:08 -07:00
Eric Bailey 36e976fe5c Redo explore page (#4491)
* Redo explore page, wip

* Remove circle icons

* Load more styling

* Lower limit

* Some styling tweaks

* Abstract

* Add tab, query, factor out

* Revert unneeded change

* Revert unneeded change v2

* Update copy

* Load more styling

* Header styles

* The thin blue line

* Make sure it's hairline

* Update query keys

* Border

* Expand avis

* Very load more copy
2024-06-14 12:32:57 -05:00
dan 94c1f4968d Resolve patch-package warnings (#4520) 2024-06-14 18:01:31 +01:00
Eric Bailey f8c58a68a9 Fix count again (#4516) 2024-06-14 17:59:53 +01:00
Hailey 641a36c21d version bump (#4519) 2024-06-14 17:59:02 +01:00
Eric Bailey fe3f872d49 Add known followers to shadow cache (#4517) 2024-06-14 11:56:43 -05:00
Eric Bailey 4c0f037880 Reuse overfetching for popular feeds, add in existing filtering (#4501) 2024-06-14 11:56:29 -05:00
Kuwa Lee b80594a554 Merge branch 'bluesky-social:main' into zh 2024-06-14 14:26:28 +08:00
Samuel Newman bdeac28d74 Try/catch URL parsing of referrer (#4511) 2024-06-13 15:06:22 -07:00
Hailey d9066a6beb add document.referrer to statsig custom (#4509)
* add referrer to statsig custom

dont include referrer if hostname is bsky.app

save

add `document.referrer` to statsig custom

* add a hostname field

* account for ssr

* account for ssr
2024-06-13 23:31:19 +02:00
Kuwa Lee 3ea3b5a4d4 TW: hot fix 2024-06-14 01:57:55 +08:00
Kuwa Lee 23a14454dc TW: Update and clean 2024-06-14 01:45:52 +08:00
Kuwa Lee 92fe3cde7a Merge branch 'bluesky-social:main' into zh 2024-06-14 01:33:19 +08:00
Samuel Newman d20c59e19d Calculate correct keyboard offset in composer (#4500)
* calculate correct keyboard offset

* give viewHeight a default value

* much simpler approach
2024-06-13 15:58:56 +01:00
dan 498e46ae4e Hide bio and social proof for blocked users (#4504) 2024-06-13 11:03:31 +02:00
Kuwa Lee ecd51bc6f9 Merge branch 'bluesky-social:main' into zh 2024-06-13 15:29:51 +08:00
Minseo Lee 7faa1d9131 KnownFollowers localization (#4494)
* Update KnownFollowers.tsx

* Update KnownFollowers.tsx

* Update KnownFollowers.tsx
2024-06-13 04:58:25 +02:00
Eric Bailey 28ba99917a Fix profile hover card blocked state (#4480)
* Fix: mini profile on hover allows following a blocker/blocked user (#4423) (#4440)

* Tweaks

---------

Co-authored-by: Michał Gołda <michal.golda@hotmail.com>
2024-06-13 04:53:32 +02:00
Eric Bailey d989128e5b Set profile hover prefetch stale time to 30s (#4417)
* Set prefetch stale time to 30s

* Run prefetch on mouseOver

* Only prefetch once on mousemove
2024-06-13 04:44:06 +02:00
Mary 247af5aee9 Prevent rich-formatting paste (#4327)
* fix: prevent rich-formatting paste

* fix: return true instead of preventDefault
2024-06-13 04:37:49 +02:00
dan ebd4f93b9c Show social proof in hovercards (#4502)
* Add social proof to hovercards

* Close it more reliably
2024-06-13 04:23:37 +02:00
Eric Bailey a55f924639 Just use server count (#4499)
* Just use server count

* Fix count
2024-06-12 16:52:00 -05:00
Kuwa Lee bd8f0e5a1c Merge branch 'bluesky-social:main' into zh 2024-06-13 03:00:02 +08:00
Hailey 99078bbff2 Don't show warning when sharing your own post in PWI opt-out mode (#4495) 2024-06-12 08:51:08 -07:00
Kuwa Lee 004b4e3969 BOTH: Fix msgid "Deleted post." 2024-06-12 09:02:21 +08:00
Kuwa Lee ff0b9e30de TW: Update and clean 2024-06-12 08:48:35 +08:00
Kuwa Lee 4e4a7bf18f Update Chinese localization (#4410)
* TW: Update and clean

* CN:run intl:extract

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* TW: unify "登入"

* Update messages.po

* Update messages.po

* BOTH: fix "Post"

msgctxt "description"
msgid "Post"

* CN: Update translates

* CN: Remove superseded strings

* TW: Update and clean

* CN: fix msgid "This feed is empty."

---------

Co-authored-by: Frudrax Cheng <i@cynosura.one>
Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
2024-06-11 17:17:47 -07:00
Paul Frazee 6736384ff4 Release 1.86 prep (#4490)
* Test updates

* Run intl extract
2024-06-11 16:20:26 -07:00
Eric Bailey bb0a6a4b6c Add KnownFollowers component to standard profile header (#4420)
* Add KnownFollowers component to standard profile header

* Prep for known followers screen

* Add known followers screen

* Tighten space

* Add pressed state

* Edit title

* Vertically center

* Don't show if no known followers

* Bump sdk

* Use actual followers.length to show

* Updates to show logic, space

* Prevent fresh data from applying to cached screens

* Tighten space

* Better label

* Oxford comma

* Fix count logic

* Add bskyweb route

* Useless ternary

* Minor spacing tweak

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
2024-06-11 15:42:28 -07:00
Marco Maroni 7011ac8f72 Update italian localization (#4374)
* Update messages.po

Update italian localization

* Fix translation

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

Fix by @surfdude29

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

* Added some translation

---------

Co-authored-by: Marco Maroni <marcomaroni@gmail.com>
Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com>
2024-06-11 15:29:38 -07:00
Minseo Lee 815ab79309 Update Korean localization (#4387)
* 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-06-11 15:28:36 -07:00
surfdude29 43f6b68aa2 Update French localization (#4437)
* Update French localization

* use `point médian`

* Update messages.po

* add three new strings

* translate new string

* Apply suggestions from code review

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

* update revision date

---------

Co-authored-by: Stanislas Signoud <signez@stanisoft.net>
2024-06-11 15:27:34 -07:00
Kevin Scannell 0640364e0f Irish back to 100% (#4454) 2024-06-11 15:26:08 -07:00
Paul Frazee e1dcd2e434 Fix to thread load-more bug (#4488) 2024-06-11 15:01:13 -07:00
Eric Bailey a4ca4db35c Stringify path error (#4379) 2024-06-11 14:54:47 -07:00
Samuel Newman 3d4b390a8a Only enable keyboard controller when necessary (#4483)
* Only enable keyboard controller when necessary

* make it screen only

* rm keyboard padding

* rm keyboardpadding file

* revert using keyboard controller in composer

* remove styles.outer (unnecessary for revert)

* continue to use keyboard padding in the report dialog for dms

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-11 12:50:56 -07:00
Paul Frazee aca0fa23ec Update feeds header to just have edit link (#4484) 2024-06-11 12:34:03 -07:00
Paul Frazee 46e12c6d34 Improve thread loading (#4402)
* Increase the number of posts loaded when a self-thread is present

* Increase depth to 10, detect cutoffs on self-threads and show continue link

* Stacky the avis
2024-06-11 11:30:38 -07:00
Eric Bailey 4b6609d48b Move feeds screen into common navigator, handle usages (#4365)
* Move feeds screen into common navigator, handle usages

* Add link to Feeds from home screen (#4366)

* Add link to feeds to home screen header

* Center logo

* Replace icons

* Tweak spacing

* Tweak spacing

* Swap icon, sizing

* Buttonize, size

* Make menu same alignment on all screens

* Remove FeedsTab support, enable drawer swipe on MessagesTab

* Add note

* Vertically align header

* Swap in Pin

* Use hashtag icon

* Remove png

* Fix reference

* Ensure alignment with home and other screens
2024-06-11 11:08:06 -07:00
Samuel Newman 3573f7ea40 rip out native translate (#4482) 2024-06-11 10:51:03 -07:00
Hailey fac5f6cdac register the push token after request has been approved on android (#4481)
* register the push token after request has been approved on android

* use a `0` string for badge count

* Revert "use a `0` string for badge count"

This reverts commit efac398618.

* temporary fix
2024-06-11 10:28:48 -07:00
Hailey 808dd3569d patch expo-notifications to clear badge (#4475) 2024-06-10 20:19:19 -07:00
Samuel Newman d85c8a0976 Revert to old modal on android (#4458)
* revert to old modal on android

* close alf dialogs before closing composer

* Try to fix white area

* Use hook

* Fix Back button

* oops

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-11 05:10:57 +02:00
Eric Bailey 14cddb7ec0 Sort profile feedgens by likes (#4380)
* Sort profile feedgens by likes

* Sort entire set as we get more pages

* Nah

This reverts commit 3b8714fd97.

* Update profile-feedgens.ts

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-11 03:55:44 +02:00
Eric Bailey 848151c4f9 Revert "Fix undefined block (#4471)" (#4472)
This reverts commit 7cac413f3b.
2024-06-11 03:49:28 +02:00
Eric Bailey 7cac413f3b Fix undefined block (#4471)
* Fix undefined block (#4378)

* Fix undefined block

* Changing text and handling all blocks.

* Tweaks

* Hide follow button in hover card if user blocked

---------

Co-authored-by: Josh <hi@oracularhades.com>
2024-06-10 20:45:23 -05:00
Eric Bailey 212f5750e3 Open convo menu when tapping on chat with deleted account (#4470)
* Open menu on click

* Remove useless util

* Improve label

* s/press/click

* Tweak message

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-11 03:36:42 +02:00
Hailey c73ad43a80 stop using addPushTokenListener (#4467)
* stop using push token listener

* cleanup the hack

* add a comment

* remove test code

* Fix patch

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-11 03:16:21 +02:00
Samuel Newman 4e9a65200e add hitslop to repost button (#4469) 2024-06-10 16:43:04 -07:00
Paul Frazee 86e81650d3 Add a loading indicator to notifications when loading latest (#4468)
* Add a loading indicator to notifications when loading latest

* Adjust size and alignment
2024-06-11 01:17:34 +02:00
Paul Frazee 4efd576f6a Visually improve the empty state of feeds (#4466) 2024-06-10 13:44:21 -07:00
Paul Frazee c2d7d23423 Give a meaningful error in the composer when replying to a deleted post (#4464) 2024-06-10 22:02:00 +02:00
Paul Frazee 0404111f03 Fix: show known feed error UI more reliably (#4463) 2024-06-10 22:01:14 +02:00
Eric Bailey 7356763e49 Only validate persisted data for existing users (#4465) 2024-06-10 22:00:45 +02:00
Hailey 5dd195bcb7 Check canAskAgain for notification permissions (#4460) 2024-06-10 12:14:00 -07:00
Paul Frazee 90ec22a674 Add support for new-tab clicks on feeds (#4462) 2024-06-10 11:44:13 -07:00
Paul Frazee 59f49bef68 Override legacy language codes for indonesian, hebrew, and yiddish (#4461)
* Manually override incorrect 'in' to 'id' lang code

* Fix additional legacy language code issues
2024-06-10 20:37:14 +02:00
dan 620ab88713 Ungate mobile web notification badge (#4459) 2024-06-10 18:17:26 +02:00
Francesco Lodovici b688da8d58 Fix (#4430): Use separate hooks for shell mode animated styles (#4451)
* Fix (#4430): Use separate hooks for shell mode animated styles

* Consolidate in one file

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-10 17:19:28 +02:00
Samuel Newman fd03ea3fe1 Throttle instead of debounce (#4456)
* throttle instead of debounce

* trailing: true

* Fix throttle call

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-10 17:02:57 +02:00
Samuel Newman 1317d881ed debounce refetching listconvos (#4455) 2024-06-10 16:08:13 +02:00
dan 01b7a94a7e Patch to work around a crash in RN internals (#4426)
Co-authored-by: Hailey <me@haileyok.com>
2024-06-08 01:55:57 -07:00
dan a2d1cf68b9 Reliably focus keyboard on Android (#4427) 2024-06-07 22:27:16 -07:00
Hailey 5f63b8d40f Bump expo-notifications to fix NPE (#4425)
* bump library

* rename patch file
2024-06-08 03:17:00 +01:00
Hailey 480a40862f Use the proper logic on iOS to increment the badge (#4233) 2024-06-07 15:15:33 -07:00
Hailey c58aedf050 Bump 1.86.0 (#4411) 2024-06-07 20:00:50 +01:00
Samuel Newman 29a4a5f90c Composer - backup android focus (#4415)
* backup android focus

* bump to 300ms just to make sure it catches all of them
2024-06-07 13:32:38 +01:00
Hailey fefae27396 scope enable/disable of keyboard controller in composer to only android (#4412) 2024-06-06 22:29:34 -07:00
Minseo Lee 2540616f43 Fix horizontal padding of tab within profile header (#3924)
Co-authored-by: Hailey <me@haileyok.com>
2024-06-06 21:41:03 -07:00
Paul Frazee bd1e6fced9 1.85.1 2024-06-06 12:18:08 -07:00
Hailey 885ad2c756 disable keyboard controller in the composer screen (#4399)
* disable keyboard controller in the composer screen

* add comment

* oops

* destructure

* rename to keyboard context for clarity

* move destructure

* cleanup
2024-06-06 12:15:36 -07:00
Paul Frazee fef16e060f Fix notifications pagination on web (#4400)
* Fix notifications pagination on web

* Preserve larger threshold on native
2024-06-06 12:10:50 -07:00
dan ac25e43bef Patch Expo Modules for Android crash (#4398)
* Patch Expo Modules for Android crash

* rm intermediaries, add a readme

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-06 11:21:38 -07:00
Hailey 094c08ea60 Revert "Change Android's MainActivity launchMode to singleTop" (#4397)
* Revert "Change Android's MainActivity launchMode to singleTop (#4255)"

This reverts commit 65ad16e394.

* Update bundle-deploy-eas-update.yml

---------

Co-authored-by: dan <dan.abramov@gmail.com>
2024-06-06 19:08:20 +01:00
dan 559764156d Fix tall image lightbox on Android (#4393) 2024-06-06 15:13:53 +01:00
dan 3801932902 Fix prettier (#4392) 2024-06-06 15:00:05 +01:00
Hailey 72f46ed734 cancel animations before updating value for min-shell animation (#4386)
* cancel animations before updating value

* comment
2024-06-06 14:28:02 +01:00
Samuel Newman 85e676257e Composer - make sure android keyboard opens (#4390)
* keep trying to open keyboard until it's open

* limit number of retries

* keep the original 50ms one as well

* Proper fix!

* disable autoFocus if not visible

* Reset derived state

* Revert "Reset derived state"

This reverts commit 71f57391ae.

* Use derived state pattern

* Rename for clarity

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-06 14:21:22 +01:00
dan 48796449ea Switch to withSpring to work around Reanimated regression (#4391) 2024-06-06 14:17:26 +01:00
dan 1f954c1065 Split ShareViaChatDialog (#4383) 2024-06-06 01:10:21 +01:00
dan 5d2119ffe5 Pin resolution of Statsig Expo dependencies (#4382)
* Force resolution of expo-constants

* Pin expo-device
2024-06-06 00:40:28 +01:00
Hailey 492c271a06 add legacy to picker for Android (#4377)
* add `legacy` to picker

* add for the other callsite
2024-06-05 16:27:57 -07:00
Hailey 42477d8bbb add notification count badge mobile web (#4375)
* add notification count badge mobile web

* rename var

* add gate to types

* implement gate

* nit

* Fix condition order, narrow types

---------

Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
2024-06-05 18:13:42 +01:00
Hailey aefbab3850 Remove expo-constants (#4371) 2024-06-05 09:05:25 -07:00
Hailey af2aaa1f39 add types for desktopFixedHeight to List (#4356)
* add types for `desktopFixedHeight`

* nit

* accept both `number` and `boolean`
2024-06-05 09:03:40 -07:00
Paul Frazee 22858192dc Release 1.85 (#4372)
* Update tests

* Run intl extract
2024-06-04 20:00:21 -07:00
Minseo Lee 618a3c1ebe Update Korean localization (#4318)
* Update messages.po

* Update messages.po

* Update messages.po

* Update messages.po

* Merge remote-tracking branch 'upstream/main' into update-korean-localization
2024-06-04 19:55:05 -07:00
Kevin Scannell 5e0452fc6b Update Irish translations back to 100% (#4306) 2024-06-04 19:54:38 -07:00
Stanislas Signoud 47033e5270 Update French localizations (#4223)
* Update French localizations

* Fix typos in French and misusage of "Ignorer"

Thanks @surfdude29 for the review!

Fixes #4296.

* Bump strings and remove unused one in French

* Translate three new missing strings in French

* Bump strings and trim unused old in French again

* Translate five new missing strings in French again
2024-06-04 19:53:59 -07:00
Takayuki KUSANO bb9afa9ce8 Upated Japanese translation (#4311)
* Delete obsoleted translated messages

* Translate new messages, update some messages

* Update Japanese translations
2024-06-04 19:52:58 -07:00
Frudrax Cheng 504bd28e80 Update Chinese Localization (#4323)
* Improve zh-TW translation

* improve and fix

* Update messages.po

msgid "Nevermind, create a handle for me"

* revert L3813

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* Update src/locale/locales/zh-TW/messages.po

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>

* BOTH: Fix and clean

msgid "Copy {0}"

msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information."

* CN: Unify emoji

* TW: Update and unify some translation

* TW: unify "色情

* TW: update

* TW: typo

* CN:translated latest commit

* CN:removed superseded strings

* CN:fixed string 'left to go'

* CN:unified translation

* CN:translated latest commit

* CN:fix typo

---------

Co-authored-by: cirx <133132480+cirx1e@users.noreply.github.com>
Co-authored-by: Kuwa Lee <kuwalee1069@gmail.com>
2024-06-04 19:52:08 -07:00
Hailey afbcac3ff3 use a timeout to focus the composer input (#4370)
* use a timeout to focus the composer input

* scope to just android

* scope useEffect to just android as well

* oops

* cleanup
2024-06-05 03:44:43 +01:00
Eric Bailey deea2f3839 Clarify some things in OTA docs (#4367)
* Clarify some things

* add github outputs script

* add slack notify android

* test slack android

* fix indent

* fix test

* sigh...

* Revert "fix test"

This reverts commit c99764464f.

* Revert "fix indent"

This reverts commit 4cce508d28.

* Revert "test slack android"

This reverts commit b02419b247.

* test ios workflow

* remove testing

* add slack info to docs

* use correct output for android

---------

Co-authored-by: Hailey <me@haileyok.com>
2024-06-04 18:55:18 -07:00
Paul Frazee 7613cdb89b Fix: visually indicate when quoted content is labeled (#4369) 2024-06-05 02:19:26 +01:00
Eric Bailey 3ece21cb45 [🙅] Integrate deactivate (#4308)
* Update types

(cherry picked from commit 27deac1f367825771ba76fa098ec1b0a62dcf64a)

* Integrate into deactivate dialog

(cherry picked from commit 84f299a447259cc1fbfc7be607e28197779e4ec1)

* Integrate into Deactivated screen

(cherry picked from commit 29193f34822ecdf11e2a407197fa230285dfe846)

* Bump api sdk

(cherry picked from commit 738c622d3e5a23bfbb0d3bdce3a6bdf01e54ca60)

* Update permalink

(cherry picked from commit c10bf5c071d76c3054bc4ce9d313c10b1820f038)

* Bump sdk pkg

* Update types to match backend

* Loosen types for forwards compat

* Hydrate status from persisted data

* Refresh session when re-activating, clear query cache

* Show app password error

* Refactor dialog to clear state when closed

* Add app password error to Deactivated screen
2024-06-05 02:02:22 +01:00
Eric Bailey e64b7cf698 Fix descenders cutoff in new chat dialog (#4359) 2024-06-04 20:51:38 +01:00
Eric Bailey a2d5343a87 Report persisted schema validation failures (#4358)
* Report persisted schema validation failures

* Make it safer
2024-06-04 20:51:28 +01:00
dan b5ac450442 Don't show profile labels until loaded (#4357) 2024-06-04 19:54:30 +01:00
1013 changed files with 114815 additions and 46498 deletions
+2
View File
@@ -0,0 +1,2 @@
[*.{kt,kts}]
indent_size=2
+15
View File
@@ -31,7 +31,9 @@ module.exports = {
},
},
],
'bsky-internal/use-exact-imports': 'error',
'bsky-internal/use-typed-gates': 'error',
'bsky-internal/use-prefixed-imports': 'warn',
'simple-import-sort/imports': [
'warn',
{
@@ -70,6 +72,19 @@ module.exports = {
'simple-import-sort/exports': 'warn',
// TODO: Reenable when we figure out why it gets stuck on CI.
// 'react-compiler/react-compiler': 'error',
'no-restricted-imports': [
'error',
{
paths: [
{
name: '@atproto/api',
importNames: ['moderatePost'],
message:
'Please use `moderatePost_wrapped` from `#/lib/moderatePost_wrapped` instead.',
},
],
},
],
},
ignorePatterns: [
'**/__mocks__/*.ts',
@@ -0,0 +1,53 @@
name: build-and-push-link-aws
on:
workflow_dispatch:
env:
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }}
IMAGE_NAME: bskylink
jobs:
link-container-aws:
if: github.repository == 'bluesky-social/social-app'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v1
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME}}
password: ${{ env.PASSWORD }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: ./Dockerfile.bskylink
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
@@ -0,0 +1,53 @@
name: build-and-push-ogcard-aws
on:
workflow_dispatch:
env:
REGISTRY: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_REGISTRY }}
USERNAME: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_USERNAME }}
PASSWORD: ${{ secrets.AWS_ECR_REGISTRY_USEAST2_PACKAGES_PASSWORD }}
IMAGE_NAME: bskyogcard
jobs:
ogcard-container-aws:
if: github.repository == 'bluesky-social/social-app'
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v1
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v2
with:
registry: ${{ env.REGISTRY }}
username: ${{ env.USERNAME}}
password: ${{ env.PASSWORD }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=sha,enable=true,priority=100,prefix=,suffix=,format=long
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: ${{ github.event_name != 'pull_request' }}
file: ./Dockerfile.bskyogcard
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
+9 -2
View File
@@ -34,6 +34,9 @@ jobs:
node-version-file: .nvmrc
cache: yarn
- name: 🪛 Setup jq
uses: dcarbone/install-jq-action@v2
- name: 🔨 Setup EAS
uses: expo/expo-github-action@v8
with:
@@ -96,13 +99,17 @@ jobs:
name: build-${{ steps.timestamp.outputs.time }}.apk
path: build.apk
- name: 📚 Get version from package.json
id: get-build-info
run: bash scripts/setGitHubOutput.sh
- name: 🔔 Notify Slack of Production Build
if: ${{ inputs.profile == 'production' }}
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"text": "Android build is ready for submission. This is a production build! Download the artifact here: ${{ steps.upload-artifact-production.outputs.artifact-url }}"
"text": "Android production build for Google Play Store submission is ready!\n```Artifact: ${{ steps.upload-artifact-production.outputs.artifact-url }}\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_ANDROID_VERSION_CODE }}```"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
@@ -140,7 +147,7 @@ jobs:
with:
payload: |
{
"text": "Android production APK build is ready for download. This is a production build, and you should add it to the GitHub release! Download the artifact here: ${{ steps.upload-artifact-production-apk.outputs.artifact-url }}"
"text": "Android production build for GitHub/Obtanium is ready!\n```Artifact: ${{ steps.upload-artifact-production-apk.outputs.artifact-url }}\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_ANDROID_VERSION_CODE }}```"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
+19
View File
@@ -34,6 +34,9 @@ jobs:
node-version-file: .nvmrc
cache: yarn
- name: 🪛 Setup jq
uses: dcarbone/install-jq-action@v2
- name: 🔨 Setup EAS
uses: expo/expo-github-action@v8
with:
@@ -81,6 +84,22 @@ jobs:
- name: 🚀 Deploy
run: eas submit -p ios --non-interactive --path build.ipa
- name: 📚 Get version from package.json
id: get-build-info
run: bash scripts/setGitHubOutput.sh
- name: 🔔 Notify Slack of Production Build
if: ${{ inputs.profile == 'production' }}
uses: slackapi/slack-github-action@v1.25.0
with:
payload: |
{
"text": "iOS production build for App Store submission is ready!\n```Artifact: Check TestFlight to know when it is available\nVersion Number: ${{ steps.get-build-info.outputs.PACKAGE_VERSION }}\nBuild Number: ${{ steps.get-build-info.outputs.BSKY_IOS_BUILD_NUMBER }}```"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_CLIENT_ALERT_WEBHOOK }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
- name: ⬇️ Restore Cache
id: get-base-commit
uses: actions/cache@v4
+4 -4
View File
@@ -19,9 +19,9 @@ jobs:
- name: Set up Go tooling
uses: actions/setup-go@v3
with:
go-version: '1.21'
go-version: '1.22'
- name: Dummy Static Files
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/media/blah.txt
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/css/blah.txt && touch bskyweb/static/media/blah.txt
- name: Check
run: cd bskyweb/ && make check
- name: Build (binary)
@@ -36,8 +36,8 @@ jobs:
- name: Set up Go tooling
uses: actions/setup-go@v3
with:
go-version: '1.21'
go-version: '1.22'
- name: Dummy Static Files
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/media/blah.txt
run: touch bskyweb/static/js/blah.js && touch bskyweb/static/css/blah.txt && touch bskyweb/static/media/blah.txt
- name: Lint
run: cd bskyweb/ && make lint
+3
View File
@@ -115,3 +115,6 @@ src/locale/locales/**/*.js
*.apk
*.aab
*.ipa
# ogcard assets
bskyogcard/src/assets/fonts/noto-*
+1 -1
View File
@@ -1,4 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn lint-staged
npx lint-staged
+3 -1
View File
@@ -1,4 +1,4 @@
# Ignore everything except JS-ey code.
# Ignore everything except JS-ey or CSS code.
# Based on https://stackoverflow.com/a/70715829/458193
*
!**/*.js
@@ -7,6 +7,8 @@
!**/*.tsx
!*/
!**/*.css
# More specific ignores go below.
.expo
android
+1 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.21-bullseye AS build-env
FROM golang:1.22-bullseye AS build-env
WORKDIR /usr/src/social-app
+41
View File
@@ -0,0 +1,41 @@
FROM node:20.11-alpine3.18 as build
# Move files into the image and install
WORKDIR /app
COPY ./bskylink/package.json ./
COPY ./bskylink/yarn.lock ./
RUN yarn install --frozen-lockfile
COPY ./bskylink ./
# build then prune dev deps
RUN yarn build
RUN yarn install --production --ignore-scripts --prefer-offline
# Uses assets from build stage to reduce build size
FROM node:20.11-alpine3.18
RUN apk add --update dumb-init
# Avoid zombie processes, handle signal forwarding
ENTRYPOINT ["dumb-init", "--"]
WORKDIR /app
COPY --from=build /app /app
RUN mkdir /app/data && chown node /app/data
VOLUME /app/data
EXPOSE 3000
ENV LINK_PORT=3000
ENV NODE_ENV=production
# potential perf issues w/ io_uring on this version of node
ENV UV_USE_IO_URING=0
# https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user
USER node
CMD ["node", "--heapsnapshot-signal=SIGUSR2", "--enable-source-maps", "dist/bin.js"]
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="Bsky Link Service"
LABEL org.opencontainers.image.licenses=UNLICENSED
+41
View File
@@ -0,0 +1,41 @@
FROM node:20.11-alpine3.18 as build
# Move files into the image and install
WORKDIR /app
COPY ./bskyogcard/package.json ./
COPY ./bskyogcard/yarn.lock ./
RUN yarn install --frozen-lockfile
COPY ./bskyogcard ./
# build then prune dev deps
RUN yarn install-fonts && yarn build
RUN yarn install --production --ignore-scripts --prefer-offline
# Uses assets from build stage to reduce build size
FROM node:20.11-alpine3.18
RUN apk add --update dumb-init
# Avoid zombie processes, handle signal forwarding
ENTRYPOINT ["dumb-init", "--"]
WORKDIR /app
COPY --from=build /app /app
RUN mkdir /app/data && chown node /app/data
VOLUME /app/data
EXPOSE 3000
ENV CARD_PORT=3000
ENV NODE_ENV=production
# potential perf issues w/ io_uring on this version of node
ENV UV_USE_IO_URING=0
# https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user
USER node
CMD ["node", "--heapsnapshot-signal=SIGUSR2", "--enable-source-maps", "dist/bin.js"]
LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
LABEL org.opencontainers.image.description="Bsky Card Service"
LABEL org.opencontainers.image.licenses=UNLICENSED
+2 -1
View File
@@ -1,4 +1,4 @@
FROM golang:1.21-bullseye AS build-env
FROM golang:1.22-bullseye AS build-env
WORKDIR /usr/src/social-app
@@ -40,6 +40,7 @@ RUN find ./bskyweb/embedr-static && find ./bskyweb/embedr-templates && find ./bs
# hack around issue with empty directory and go:embed
RUN touch bskyweb/static/js/empty.txt
RUN touch bskyweb/static/css/empty.txt
RUN touch bskyweb/static/media/empty.txt
#
+4 -4
View File
@@ -10,7 +10,7 @@ Get the app itself:
## Development Resources
This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also on open source, but in [a different git repository](https://github.com/bluesky-social/atproto).
This is a [React Native](https://reactnative.dev/) application, written in the TypeScript programming language. It builds on the `atproto` TypeScript packages (like [`@atproto/api`](https://www.npmjs.com/package/@atproto/api)), code for which is also open source, but in [a different git repository](https://github.com/bluesky-social/atproto).
There is a small amount of Go language source code (in `./bskyweb/`), for a web service that returns the React Native Web application.
@@ -42,10 +42,10 @@ The Bluesky Social application encompasses a set of schemas and APIs built in th
- Open an issue and give some time for discussion before submitting a PR.
- Stay away from PRs like...
- Changing "Post" to "Skeet."
- Refactoring the codebase, eg to replace mobx with redux or something.
- Refactoring the codebase, e.g., to replace MobX with Redux or something.
- Adding entirely new features without prior discussion.
Remember, we serve a wide community of users. Our day to day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth. That's what forking is for!
Remember, we serve a wide community of users. Our day-to-day involves us constantly asking "which top priority is our top priority." If you submit well-written PRs that solve problems concisely, that's an awesome contribution. Otherwise, as much as we'd love to accept your ideas and contributions, we really don't have the bandwidth. That's what forking is for!
## Forking guidelines
@@ -63,7 +63,7 @@ If you discover any security issues, please send an email to security@bsky.app.
## Are you a developer interested in building on atproto?
Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party can be as seamless as first-party through custom feeds, federated services, clients, and more.
Bluesky is an open social network built on the AT Protocol, a flexible technology that will never lock developers out of the ecosystems that they help build. With atproto, third-party integration can be as seamless as first-party through custom feeds, federated services, clients, and more.
## License (MIT)
+2 -16
View File
@@ -74,8 +74,7 @@ appId: xyz.blueskyweb.app
- tapOn: "Delete List"
- tapOn:
id: "confirmBtn"
- assertVisible:
id: "listsEmpty"
- assertVisible: "This list is empty!"
- tapOn:
label: "Create a new curatelist"
@@ -144,8 +143,7 @@ appId: xyz.blueskyweb.app
id: "homeScreenFeedTabs-Good Ppl"
- tapOn:
id: "e2eGotoLists"
- tapOn:
id: "list-Good Ppl"
- tapOn: "Good Ppl"
- tapOn: "About"
- assertVisible:
@@ -162,18 +160,6 @@ appId: xyz.blueskyweb.app
- assertNotVisible:
id: "userAddRemoveListsModal"
- tapOn:
label: "Shows the curatelist on my profile"
id: "bottomBarProfileBtn"
- swipe:
from:
id: "profilePager-selector"
direction: LEFT
- tapOn:
id: "profilePager-selector-5"
- tapOn:
id: "list-Good Ppl"
- tapOn:
label: "Adds and removes users on curatelists from the profile"
id: "bottomBarSearchBtn"
+22 -7
View File
@@ -10,16 +10,20 @@ appId: xyz.blueskyweb.app
id: "e2eSignInAlice"
# Pin alice's feed
- extendedWaitUntil:
visible:
id: "viewHeaderDrawerBtn"
- tapOn:
id: "bottomBarProfileBtn"
id: "viewHeaderDrawerBtn"
- tapOn:
id: "profileCardButton"
- swipe:
from:
id: "profilePager-selector"
direction: LEFT
- tapOn:
id: "profilePager-selector-4"
- tapOn:
id: "feed-alice-favs"
- tapOn: "alice-favs"
- tapOn: "Pin to Home"
- tapOn:
id: "bottomBarHomeBtn"
@@ -36,12 +40,15 @@ appId: xyz.blueskyweb.app
id: "viewHeaderDrawerBtn"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn: "Edit Saved Feeds"
- tapOn:
id: "editFeedsBtn"
- tapOn:
label: "Tap on down arrow"
point: "79%,23%"
- tapOn:
id: "bottomBarHomeBtn"
id: "viewHeaderDrawerBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "alice-favs"
@@ -54,11 +61,15 @@ appId: xyz.blueskyweb.app
id: "viewHeaderDrawerBtn"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
id: "editFeedsBtn"
- tapOn:
label: "Tap on down arrow"
point: "79%,23%"
- tapOn:
id: "bottomBarHomeBtn"
id: "viewHeaderDrawerBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "Following"
@@ -71,11 +82,15 @@ appId: xyz.blueskyweb.app
id: "viewHeaderDrawerBtn"
- tapOn:
id: "menuItemButton-Feeds"
- tapOn:
id: "editFeedsBtn"
- tapOn:
label: "Tap on unpin"
point: "91%,23%"
- tapOn:
id: "bottomBarHomeBtn"
id: "viewHeaderDrawerBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
- assertVisible:
id: "homeScreenFeedTabs-selector-0"
text: "alice-favs"
+7 -13
View File
@@ -9,6 +9,9 @@ appId: xyz.blueskyweb.app
- tapOn:
id: "e2eSignInAlice"
- extendedWaitUntil:
visible:
text: "Feeds ✨"
- tapOn:
label: "Can go to feeds page using feeds button in tab bar"
text: "Feeds ✨"
@@ -23,36 +26,27 @@ appId: xyz.blueskyweb.app
direction: LEFT
- tapOn:
id: "profilePager-selector-4"
- tapOn:
id: "feed-alice-favs"
- tapOn: "alice-favs"
- tapOn: "Pin to Home"
- tapOn:
id: "bottomBarHomeBtn"
- tapOn:
id: "viewHeaderDrawerBtn"
- assertNotVisible: "Feeds ✨"
- tapOn:
label: "Can like posts"
id: "likeBtn"
- assertVisible:
id: "likeCount"
text: "1"
- tapOn:
id: "likeBtn"
- assertNotVisible:
id: "likeCount"
- tapOn:
label: "Can repost posts"
id: "repostBtn"
- tapOn: "Repost"
- assertVisible:
id: "repostCount"
text: "1"
- tapOn:
id: "repostBtn"
- tapOn: "Undo repost"
- assertNotVisible:
id: "repostCount"
- tapOn: "Remove repost"
- tapOn:
label: "Can delete posts"
-31
View File
@@ -1,31 +0,0 @@
# Remove this test when the old onboarding is deprecated
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn:
id: "e2eStartLongboarding"
- tapOn: "Continue to next step"
- tapOn: "Continue to the next step without following any accounts"
- tapOn: Show replies in Following feed
- tapOn: Show quote-posts in Following feed
- tapOn: Show re-posts in Following feed
- tapOn: Show replies in Following feed
- waitForAnimationToEnd
- tapOn: Continue to next step
- waitForAnimationToEnd
- tapOn: "Continue to the next step"
- waitForAnimationToEnd
- tapOn: Continue to next step
- waitForAnimationToEnd
- tapOn: Continue to next step
- waitForAnimationToEnd
- tapOn: "Complete onboarding and start using your account"
- waitForAnimationToEnd
- assertVisible: Following
+4 -2
View File
@@ -11,6 +11,9 @@ appId: xyz.blueskyweb.app
# Navigate to my profile
- extendedWaitUntil:
visible:
id: "bottomBarSearchBtn"
- tapOn:
id: "bottomBarProfileBtn"
@@ -21,8 +24,7 @@ appId: xyz.blueskyweb.app
direction: LEFT
- tapOn:
id: "profilePager-selector-4"
- assertVisible:
id: "feed-alice-favs"
- assertVisible: "alice-favs"
- swipe:
from:
id: "profilePager-selector"
+3
View File
@@ -10,6 +10,9 @@ appId: xyz.blueskyweb.app
id: "e2eSignInAlice"
# Navigate to another user profile
- extendedWaitUntil:
visible:
id: "bottomBarSearchBtn"
- tapOn:
id: "bottomBarSearchBtn"
- tapOn:
+31
View File
@@ -0,0 +1,31 @@
appId: xyz.blueskyweb.app
---
- runScript:
file: ../setupServer.js
env:
SERVER_PATH: "?users&posts&feeds"
- runFlow:
file: ../setupApp.yml
- tapOn:
id: "e2eSignInAlice"
- tapOn: "/sys/debug"
- tapOn:
id: "sharedPrefsTestOpenBtn"
- tapOn:
id: "setStringBtn"
- assertVisible: "Hello"
- tapOn:
id: "removeStringBtn"
- assertVisible: "null"
- tapOn:
id: "setBoolBtn"
- assertVisible: "true"
- tapOn:
id: "setNumberBtn"
- assertVisible: "123"
- tapOn:
id: "addToSetBtn"
- assertVisible: "true"
- tapOn:
id: "removeFromSetBtn"
- assertVisible: "false"
+6 -14
View File
@@ -11,6 +11,8 @@ appId: xyz.blueskyweb.app
# Navigate to thread
- extendedWaitUntil:
visible: "Thread root"
- tapOn: "Thread root"
- assertVisible: "Thread reply"
@@ -19,32 +21,22 @@ appId: xyz.blueskyweb.app
id: "likeBtn"
childOf:
id: "postThreadItem-by-bob.test"
- assertVisible:
id: "likeCount-expanded"
- assertVisible: "1 like"
- tapOn:
id: "likeBtn"
childOf:
id: "postThreadItem-by-bob.test"
- assertNotVisible:
id: "likeCount-expanded"
- assertNotVisible: "1 like"
# Can like a reply post
- tapOn:
id: "likeBtn"
childOf:
id: "postThreadItem-by-carla.test"
- assertVisible:
id: "likeCount"
childOf:
id: "postThreadItem-by-carla.test"
- tapOn:
id: "likeBtn"
childOf:
id: "postThreadItem-by-carla.test"
- assertNotVisible:
id: "likeCount"
childOf:
id: "postThreadItem-by-carla.test"
# Can repost the root post
- tapOn:
@@ -58,7 +50,7 @@ appId: xyz.blueskyweb.app
id: "repostBtn"
childOf:
id: "postThreadItem-by-bob.test"
- tapOn: "Undo repost"
- tapOn: "Remove repost"
- assertNotVisible:
id: "repostCount-expanded"
@@ -77,7 +69,7 @@ appId: xyz.blueskyweb.app
id: "repostBtn"
childOf:
id: "postThreadItem-by-carla.test"
- tapOn: "Undo repost"
- tapOn: "Remove repost"
- assertNotVisible:
id: "repostCount"
childOf:
-47
View File
@@ -1,47 +0,0 @@
export const exampleComHtml = `<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta name="description" content="An example website">
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>`
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+7 -7
View File
@@ -9,11 +9,11 @@ describe('isNetworkError', () => {
]
const outputs = [true, false, false, true]
it('correctly distinguishes network errors', () => {
for (let i = 0; i < inputs.length; i++) {
const input = inputs[i]
const result = isNetworkError(input)
expect(result).toEqual(outputs[i])
}
})
for (let i = 0; i < inputs.length; i++) {
const input = inputs[i]
const output = outputs[i]
it(`correctly distinguishes network errors for ${input}`, () => {
expect(isNetworkError(input)).toEqual(output)
})
}
})
-134
View File
@@ -1,134 +0,0 @@
import {extractHtmlMeta} from '../../src/lib/link-meta/html'
import {exampleComHtml} from './__mocks__/exampleComHtml'
import {youtubeHTML} from './__mocks__/youtubeHtml'
import {tiktokHtml} from './__mocks__/tiktokHtml'
import {youtubeChannelHtml} from './__mocks__/youtubeChannelHtml'
describe('extractHtmlMeta', () => {
const cases = [
['', {}],
['nothing', {}],
['<title>title</title>', {title: 'title'}],
['<title> aSd!@#AC </title>', {title: 'aSd!@#AC'}],
['<title>\n title\n </title>', {title: 'title'}],
['<meta name="title" content="meta title">', {title: 'meta title'}],
[
'<meta name="description" content="meta description">',
{description: 'meta description'},
],
['<meta property="og:title" content="og title">', {title: 'og title'}],
[
'<meta property="og:description" content="og description">',
{description: 'og description'},
],
[
'<meta property="og:image" content="https://ogimage.com/foo.png">',
{image: 'https://ogimage.com/foo.png'},
],
[
'<meta property="twitter:title" content="twitter title">',
{title: 'twitter title'},
],
[
'<meta property="twitter:description" content="twitter description">',
{description: 'twitter description'},
],
[
'<meta property="twitter:image" content="https://twitterimage.com/foo.png">',
{image: 'https://twitterimage.com/foo.png'},
],
['<meta\n name="title"\n content="meta title"\n>', {title: 'meta title'}],
]
it.each(cases)(
'given the html tag %p, returns %p',
// @ts-ignore not worth fixing -prf
(input, expectedResult) => {
const output = extractHtmlMeta({html: input as string, hostname: ''})
expect(output).toEqual(expectedResult)
},
)
it('extracts title and description from a generic HTML page', () => {
const input = exampleComHtml
const expectedOutput = {
title: 'Example Domain',
description: 'An example website',
}
const output = extractHtmlMeta({html: input, hostname: 'example.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts title and description from a Tiktok HTML page', () => {
const input = tiktokHtml
const expectedOutput = {
title:
'Coca-Cola and Mentos! Super Reaction! #cocacola #mentos #reaction #bal... | TikTok',
description:
'5.5M Likes, 20.8K Comments. TikTok video from Power Vision Tests (@_powervision_): &quot;Coca-Cola and Mentos! Super Reaction! #cocacola #mentos #reaction #balloon #sciencemoment #scienceexperiment #experiment #test #amazing #pvexp&quot;. оригинальный звук - Power Vision Tests.',
}
const output = extractHtmlMeta({html: input, hostname: 'tiktok.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts title and description from a generic youtube page', () => {
const input = youtubeHTML
const expectedOutput = {
title: 'HD Video (1080p) with Relaxing Music of Native American Shamans',
description:
'Stunning HD Video ( 1080p ) of Patagonian Nature with Relaxing Native American Shamanic Music. HD footage used from ',
image: 'https://i.ytimg.com/vi/x6UITRjhijI/sddefault.jpg',
}
const output = extractHtmlMeta({html: input, hostname: 'youtube.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts avatar from a youtube channel', () => {
const input = youtubeChannelHtml
const expectedOutput = {
title: 'penguinz0',
description:
'Clips channel: https://www.youtube.com/channel/UC4EQHfzIbkL_Skit_iKt1aA\n\nTwitter: https://twitter.com/MoistCr1TiKaL\n\nInstagram: https://www.instagram.com/bigmoistcr1tikal/?hl=en\n\nTwitch: https://www.twitch.tv/moistcr1tikal\n\nSnapchat: Hugecharles\n\nTik Tok: Hugecharles\n\nI don&#39;t have any other public accounts.',
image:
'https://yt3.googleusercontent.com/ytc/AL5GRJWOhJOuUC6C2b7gP-5D2q6ypXbcOOckyAE1En4RUQ=s176-c-k-c0x00ffffff-no-rj',
}
const output = extractHtmlMeta({html: input, hostname: 'youtube.com'})
expect(output).toEqual(expectedOutput)
})
it('extracts username from the url a twitter profile page', () => {
const expectedOutput = {
title: '@bluesky on Twitter',
}
const output = extractHtmlMeta({
html: '',
hostname: 'twitter.com',
pathname: '/bluesky',
})
expect(output).toEqual(expectedOutput)
})
it('extracts username from the url a tweet', () => {
const expectedOutput = {
title: 'Tweet by @bluesky',
}
const output = extractHtmlMeta({
html: '',
hostname: 'twitter.com',
pathname: '/bluesky/status/1582437529969917953',
})
expect(output).toEqual(expectedOutput)
})
it("does not extract username from the url when it's not a tweet or profile page", () => {
const expectedOutput = {
title: 'Twitter',
}
const output = extractHtmlMeta({
html: '',
hostname: 'twitter.com',
pathname: '/i/articles/follows/-1675653703?time_window=24',
})
expect(output).toEqual(expectedOutput)
})
})
+66 -62
View File
@@ -1,26 +1,30 @@
import ImageResizer from '@bam.tech/react-native-image-resizer'
import {deleteAsync} from 'expo-file-system'
import {manipulateAsync, SaveFormat} from 'expo-image-manipulator'
import RNFetchBlob from 'rn-fetch-blob'
import {
downloadAndResize,
DownloadAndResizeOpts,
getResizedDimensions,
} from '../../src/lib/media/manip'
const mockResizedImage = {
path: 'file://resized-image.jpg',
size: 100,
width: 100,
height: 100,
mime: 'image/jpeg',
}
describe('downloadAndResize', () => {
const errorSpy = jest.spyOn(global.console, 'error')
const mockResizedImage = {
path: jest.fn().mockReturnValue('file://resized-image.jpg'),
size: 100,
width: 50,
height: 50,
mime: 'image/jpeg',
}
beforeEach(() => {
const mockedCreateResizedImage =
ImageResizer.createResizedImage as jest.Mock
mockedCreateResizedImage.mockResolvedValue(mockResizedImage)
const mockedCreateResizedImage = manipulateAsync as jest.Mock
mockedCreateResizedImage.mockResolvedValue({
uri: 'file://resized-image.jpg',
...mockResizedImage,
})
})
afterEach(() => {
@@ -54,17 +58,17 @@ describe('downloadAndResize', () => {
'GET',
'https://example.com/image.jpg',
)
expect(ImageResizer.createResizedImage).toHaveBeenCalledWith(
'file://downloaded-image.jpg',
100,
100,
'JPEG',
100,
undefined,
undefined,
undefined,
{mode: 'cover'},
// First time it gets called is to get dimensions
expect(manipulateAsync).toHaveBeenCalledWith(expect.any(String), [], {})
expect(manipulateAsync).toHaveBeenCalledWith(
expect.any(String),
[{resize: {height: opts.height, width: opts.width}}],
{format: SaveFormat.JPEG, compress: 1.0},
)
expect(deleteAsync).toHaveBeenCalledWith(expect.any(String), {
idempotent: true,
})
})
it('should return undefined for invalid URI', async () => {
@@ -82,46 +86,6 @@ describe('downloadAndResize', () => {
expect(result).toBeUndefined()
})
it('should return undefined for unsupported file type', async () => {
const mockedFetch = RNFetchBlob.fetch as jest.Mock
mockedFetch.mockResolvedValueOnce({
path: jest.fn().mockReturnValue('file://downloaded-image'),
info: jest.fn().mockReturnValue({status: 200}),
flush: jest.fn(),
})
const opts: DownloadAndResizeOpts = {
uri: 'https://example.com/image',
width: 100,
height: 100,
maxSize: 500000,
mode: 'cover',
timeout: 10000,
}
const result = await downloadAndResize(opts)
expect(result).toEqual(mockResizedImage)
expect(RNFetchBlob.config).toHaveBeenCalledWith({
fileCache: true,
appendExt: 'jpeg',
})
expect(RNFetchBlob.fetch).toHaveBeenCalledWith(
'GET',
'https://example.com/image',
)
expect(ImageResizer.createResizedImage).toHaveBeenCalledWith(
'file://downloaded-image',
100,
100,
'JPEG',
100,
undefined,
undefined,
undefined,
{mode: 'cover'},
)
})
it('should return undefined for non-200 response', async () => {
const mockedFetch = RNFetchBlob.fetch as jest.Mock
mockedFetch.mockResolvedValueOnce({
@@ -143,4 +107,44 @@ describe('downloadAndResize', () => {
expect(errorSpy).not.toHaveBeenCalled()
expect(result).toBeUndefined()
})
it('should not downsize whenever dimensions are below the max dimensions', () => {
const initialDimensionsOne = {
width: 1200,
height: 1000,
}
const resizedDimensionsOne = getResizedDimensions(initialDimensionsOne)
const initialDimensionsTwo = {
width: 1000,
height: 1200,
}
const resizedDimensionsTwo = getResizedDimensions(initialDimensionsTwo)
expect(resizedDimensionsOne).toEqual(initialDimensionsOne)
expect(resizedDimensionsTwo).toEqual(initialDimensionsTwo)
})
it('should resize dimensions and maintain aspect ratio if they are above the max dimensons', () => {
const initialDimensionsOne = {
width: 3000,
height: 1500,
}
const resizedDimensionsOne = getResizedDimensions(initialDimensionsOne)
const initialDimensionsTwo = {
width: 2000,
height: 4000,
}
const resizedDimensionsTwo = getResizedDimensions(initialDimensionsTwo)
expect(resizedDimensionsOne).toEqual({
width: 2000,
height: 1000,
})
expect(resizedDimensionsTwo).toEqual({
width: 1000,
height: 2000,
})
})
})
+189 -74
View File
@@ -1,12 +1,16 @@
import {RichText} from '@atproto/api'
import {parseEmbedPlayerFromUrl} from 'lib/strings/embed-player'
import {
createStarterPackGooglePlayUri,
createStarterPackLinkFromAndroidReferrer,
parseStarterPackUri,
} from 'lib/strings/starter-pack'
import {cleanError} from '../../src/lib/strings/errors'
import {createFullHandle, makeValidHandle} from '../../src/lib/strings/handles'
import {enforceLen} from '../../src/lib/strings/helpers'
import {detectLinkables} from '../../src/lib/strings/rich-text-detection'
import {shortenLinks} from '../../src/lib/strings/rich-text-manip'
import {ago} from '../../src/lib/strings/time'
import {
makeRecordUri,
toNiceDomain,
@@ -142,79 +146,6 @@ describe('makeRecordUri', () => {
})
})
// FIXME: Reenable after fixing non-deterministic test.
describe.skip('ago', () => {
const oneYearDate = new Date(
new Date().setMonth(new Date().getMonth() - 11),
).setDate(new Date().getDate() - 28)
const inputs = [
1671461038,
'04 Dec 1995 00:12:00 GMT',
new Date(),
new Date().setSeconds(new Date().getSeconds() - 10),
new Date().setMinutes(new Date().getMinutes() - 10),
new Date().setHours(new Date().getHours() - 1),
new Date().setDate(new Date().getDate() - 1),
new Date().setDate(new Date().getDate() - 20),
new Date().setDate(new Date().getDate() - 25),
new Date().setDate(new Date().getDate() - 28),
new Date().setDate(new Date().getDate() - 29),
new Date().setDate(new Date().getDate() - 30),
new Date().setMonth(new Date().getMonth() - 1),
new Date(new Date().setMonth(new Date().getMonth() - 1)).setDate(
new Date().getDate() - 20,
),
new Date(new Date().setMonth(new Date().getMonth() - 1)).setDate(
new Date().getDate() - 25,
),
new Date(new Date().setMonth(new Date().getMonth() - 1)).setDate(
new Date().getDate() - 28,
),
new Date(new Date().setMonth(new Date().getMonth() - 1)).setDate(
new Date().getDate() - 29,
),
new Date().setMonth(new Date().getMonth() - 11),
new Date(new Date().setMonth(new Date().getMonth() - 11)).setDate(
new Date().getDate() - 20,
),
new Date(new Date().setMonth(new Date().getMonth() - 11)).setDate(
new Date().getDate() - 25,
),
oneYearDate,
]
const outputs = [
new Date(1671461038).toLocaleDateString(),
new Date('04 Dec 1995 00:12:00 GMT').toLocaleDateString(),
'now',
'10s',
'10m',
'1h',
'1d',
'20d',
'25d',
'28d',
'29d',
'1mo',
'1mo',
'1mo',
'1mo',
'2mo',
'2mo',
'11mo',
'11mo',
'11mo',
new Date(oneYearDate).toLocaleDateString(),
]
it('correctly calculates how much time passed, in a string', () => {
for (let i = 0; i < inputs.length; i++) {
const result = ago(inputs[i])
expect(result).toEqual(outputs[i])
}
})
})
describe('makeValidHandle', () => {
const inputs = [
'test-handle-123',
@@ -409,12 +340,14 @@ describe('parseEmbedPlayerFromUrl', () => {
'https://youtube.com/watch?v=videoId',
'https://youtube.com/watch?v=videoId&feature=share',
'https://youtube.com/shorts/videoId',
'https://youtube.com/live/videoId',
'https://m.youtube.com/watch?v=videoId',
'https://music.youtube.com/watch?v=videoId',
'https://youtube.com/shorts/',
'https://youtube.com/',
'https://youtube.com/random',
'https://youtube.com/live/',
'https://twitch.tv/channelName',
'https://www.twitch.tv/channelName',
@@ -544,10 +477,16 @@ describe('parseEmbedPlayerFromUrl', () => {
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
},
{
type: 'youtube_video',
source: 'youtube',
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
},
undefined,
undefined,
undefined,
undefined,
{
type: 'twitch_video',
@@ -870,3 +809,179 @@ describe('parseEmbedPlayerFromUrl', () => {
}
})
})
describe('createStarterPackLinkFromAndroidReferrer', () => {
const validOutput = 'at://haileyok.com/app.bsky.graph.starterpack/rkey'
it('returns a link when input contains utm_source and utm_content', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_source=bluesky&utm_content=starterpack_haileyok.com_rkey',
),
).toEqual(validOutput)
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_source=bluesky&utm_content=starterpack_test-lover-9000.com_rkey',
),
).toEqual('at://test-lover-9000.com/app.bsky.graph.starterpack/rkey')
})
it('returns a link when input contains utm_source and utm_content in different order', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com_rkey&utm_source=bluesky',
),
).toEqual(validOutput)
})
it('returns a link when input contains other parameters as well', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_source=bluesky&utm_medium=starterpack&utm_content=starterpack_haileyok.com_rkey',
),
).toEqual(validOutput)
})
it('returns null when utm_source is not present', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com_rkey',
),
).toEqual(null)
})
it('returns null when utm_content is not present', () => {
expect(
createStarterPackLinkFromAndroidReferrer('utm_source=bluesky'),
).toEqual(null)
})
it('returns null when utm_content is malformed', () => {
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com',
),
).toEqual(null)
expect(
createStarterPackLinkFromAndroidReferrer('utm_content=starterpack'),
).toEqual(null)
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=starterpack_haileyok.com_rkey_more',
),
).toEqual(null)
expect(
createStarterPackLinkFromAndroidReferrer(
'utm_content=notastarterpack_haileyok.com_rkey',
),
).toEqual(null)
})
})
describe('parseStarterPackHttpUri', () => {
const baseUri = 'https://bsky.app/start'
it('returns a valid at uri when http uri is valid', () => {
const validHttpUri = `${baseUri}/haileyok.com/rkey`
expect(parseStarterPackUri(validHttpUri)).toEqual({
name: 'haileyok.com',
rkey: 'rkey',
})
const validHttpUri2 = `${baseUri}/haileyok.com/ilovetesting`
expect(parseStarterPackUri(validHttpUri2)).toEqual({
name: 'haileyok.com',
rkey: 'ilovetesting',
})
const validHttpUri3 = `${baseUri}/testlover9000.com/rkey`
expect(parseStarterPackUri(validHttpUri3)).toEqual({
name: 'testlover9000.com',
rkey: 'rkey',
})
})
it('returns null when there is no rkey', () => {
const validHttpUri = `${baseUri}/haileyok.com`
expect(parseStarterPackUri(validHttpUri)).toEqual(null)
})
it('returns null when there is an extra path', () => {
const validHttpUri = `${baseUri}/haileyok.com/rkey/other`
expect(parseStarterPackUri(validHttpUri)).toEqual(null)
})
it('returns null when there is no handle or rkey', () => {
const validHttpUri = `${baseUri}`
expect(parseStarterPackUri(validHttpUri)).toEqual(null)
})
it('returns null when the route is not /start or /starter-pack', () => {
const validHttpUri = 'https://bsky.app/start/haileyok.com/rkey'
expect(parseStarterPackUri(validHttpUri)).toEqual({
name: 'haileyok.com',
rkey: 'rkey',
})
const validHttpUri2 = 'https://bsky.app/starter-pack/haileyok.com/rkey'
expect(parseStarterPackUri(validHttpUri2)).toEqual({
name: 'haileyok.com',
rkey: 'rkey',
})
const invalidHttpUri = 'https://bsky.app/profile/haileyok.com/rkey'
expect(parseStarterPackUri(invalidHttpUri)).toEqual(null)
})
it('returns the at uri when the input is a valid starterpack at uri', () => {
const validAtUri = 'at://did:123/app.bsky.graph.starterpack/rkey'
expect(parseStarterPackUri(validAtUri)).toEqual({
name: 'did:123',
rkey: 'rkey',
})
})
it('returns null when the at uri has no rkey', () => {
const validAtUri = 'at://did:123/app.bsky.graph.starterpack'
expect(parseStarterPackUri(validAtUri)).toEqual(null)
})
it('returns null when the collection is not app.bsky.graph.starterpack', () => {
const validAtUri = 'at://did:123/app.bsky.graph.list/rkey'
expect(parseStarterPackUri(validAtUri)).toEqual(null)
})
it('returns null when the input is undefined', () => {
expect(parseStarterPackUri(undefined)).toEqual(null)
})
})
describe('createStarterPackGooglePlayUri', () => {
const base =
'https://play.google.com/store/apps/details?id=xyz.blueskyweb.app&referrer=utm_source%3Dbluesky%26utm_medium%3Dstarterpack%26utm_content%3Dstarterpack_'
it('returns valid google play uri when input is valid', () => {
expect(createStarterPackGooglePlayUri('name', 'rkey')).toEqual(
`${base}name_rkey`,
)
})
it('returns null when no rkey is supplied', () => {
// @ts-expect-error test
expect(createStarterPackGooglePlayUri('name', undefined)).toEqual(null)
})
it('returns null when no name or rkey are supplied', () => {
// @ts-expect-error test
expect(createStarterPackGooglePlayUri(undefined, undefined)).toEqual(null)
})
it('returns null when rkey is supplied but no name', () => {
// @ts-expect-error test
expect(createStarterPackGooglePlayUri(undefined, 'rkey')).toEqual(null)
})
})
+38 -5
View File
@@ -39,6 +39,15 @@ module.exports = function (config) {
const IS_TESTFLIGHT = process.env.EXPO_PUBLIC_ENV === 'testflight'
const IS_PRODUCTION = process.env.EXPO_PUBLIC_ENV === 'production'
const ASSOCIATED_DOMAINS = [
'applinks:bsky.app',
'applinks:staging.bsky.app',
'appclips:bsky.app',
'appclips:go.bsky.app', // Allows App Clip to work when scanning QR codes
// When testing local services, enter an ngrok (et al) domain here. It must use a standard HTTP/HTTPS port.
...(IS_DEV || IS_TESTFLIGHT ? [] : []),
]
const UPDATES_CHANNEL = IS_TESTFLIGHT
? 'testflight'
: IS_PRODUCTION
@@ -46,6 +55,7 @@ module.exports = function (config) {
: undefined
const UPDATES_ENABLED = !!UPDATES_CHANNEL
const USE_SENTRY = Boolean(process.env.SENTRY_AUTH_TOKEN)
const SENTRY_DIST = `${PLATFORM}.${VERSION}.${IS_TESTFLIGHT ? 'tf' : ''}${
IS_DEV ? 'dev' : ''
}`
@@ -83,7 +93,7 @@ module.exports = function (config) {
NSPhotoLibraryUsageDescription:
'Used for profile pictures, posts, and other kinds of content',
},
associatedDomains: ['applinks:bsky.app', 'applinks:staging.bsky.app'],
associatedDomains: ASSOCIATED_DOMAINS,
splash: {
...SPLASH_CONFIG,
dark: DARK_SPLASH_CONFIG,
@@ -177,12 +187,20 @@ module.exports = function (config) {
},
plugins: [
'expo-localization',
Boolean(process.env.SENTRY_AUTH_TOKEN) && 'sentry-expo',
USE_SENTRY && [
'@sentry/react-native/expo',
{
organization: 'blueskyweb',
project: 'react-native',
release: VERSION,
dist: SENTRY_DIST,
},
],
[
'expo-build-properties',
{
ios: {
deploymentTarget: '14.0',
deploymentTarget: '15.1',
newArchEnabled: false,
},
android: {
@@ -202,14 +220,25 @@ module.exports = function (config) {
sounds: PLATFORM === 'ios' ? ['assets/dm.aiff'] : ['assets/dm.mp3'],
},
],
'react-native-compressor',
'./plugins/starterPackAppClipExtension/withStarterPackAppClip.js',
'./plugins/withAndroidManifestPlugin.js',
'./plugins/withAndroidManifestFCMIconPlugin.js',
'./plugins/withAndroidManifestLaunchModePlugin.js',
'./plugins/withAndroidStylesWindowBackgroundPlugin.js',
'./plugins/withAndroidStylesAccentColorPlugin.js',
'./plugins/withAndroidSplashScreenStatusBarTranslucentPlugin.js',
'./plugins/shareExtension/withShareExtensions.js',
'./plugins/notificationsExtension/withNotificationsExtension.js',
'./plugins/withAppDelegateReferrer.js',
[
'expo-font',
{
fonts: [
'./assets/fonts/inter/InterVariable.ttf',
'./assets/fonts/inter/InterVariable-Italic.ttf',
],
},
],
].filter(Boolean),
extra: {
eas: {
@@ -235,6 +264,10 @@ module.exports = function (config) {
],
},
},
{
targetName: 'BlueskyClip',
bundleIdentifier: 'xyz.blueskyweb.app.AppClip',
},
],
},
},
@@ -248,7 +281,7 @@ module.exports = function (config) {
* @see https://docs.expo.dev/guides/using-sentry/#app-configuration
*/
{
file: 'sentry-expo/upload-sourcemaps',
file: './postHooks/uploadSentrySourcemapsPostHook',
config: {
organization: 'blueskyweb',
project: 'react-native',
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.
@@ -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 2Zm0 7.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm-2.86.26.014.002c.944.125 1.893.238 2.846.238.95 0 1.904-.113 2.846-.238l.014-.002h.003a1 1 0 0 1 .273 1.98l-.006.002-.017.002a33 33 0 0 1-2.014.21c.195 1.32.65 2.33 1.626 3.357a1 1 0 0 1-1.45 1.378 8.3 8.3 0 0 1-1.234-1.647 8.2 8.2 0 0 1-1.342 1.673 1 1 0 0 1-1.398-1.43c.673-.658 1.088-1.274 1.342-1.922.163-.42.269-.878.32-1.404a33 33 0 0 1-2.075-.215l-.017-.002-.006-.001a1 1 0 0 1 .271-1.982l.004.001Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 700 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M5 11a7 7 0 0 1 14 0c0 2.625-1.547 5.138-3.354 7.066a17.23 17.23 0 0 1-2.55 2.242 8.246 8.246 0 0 1-.924.577 2.904 2.904 0 0 1-.172.083 2.904 2.904 0 0 1-.172-.083 8.246 8.246 0 0 1-.923-.577 17.227 17.227 0 0 1-2.55-2.242C6.547 16.138 5 13.625 5 11Zm6.882 10.012Zm.232-.001h-.003a.047.047 0 0 0 .007.001l-.004-.001ZM12 2a9 9 0 0 0-9 9c0 3.375 1.953 6.362 3.895 8.434a19.216 19.216 0 0 0 2.856 2.508c.425.3.82.545 1.159.72.168.087.337.164.498.222.14.05.356.116.592.116s.451-.066.592-.116c.16-.058.33-.135.498-.222.339-.175.734-.42 1.159-.72.85-.6 1.87-1.457 2.856-2.508C19.047 17.362 21 14.375 21 11a9 9 0 0 0-9-9ZM7.38 9.927c2.774-.094 3.459 1.31 3.591 3.19a.89.89 0 0 1-.855.956c-2.774.094-3.458-1.31-3.59-3.19a.89.89 0 0 1 .854-.956Zm9.236 0c-2.774-.094-3.458 1.31-3.59 3.19a.89.89 0 0 0 .854.956c2.774.094 3.459-1.31 3.591-3.19a.89.89 0 0 0-.855-.956Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M5 11a7 7 0 0 1 14 0c0 2.625-1.547 5.138-3.354 7.066a17 17 0 0 1-2.55 2.242 8 8 0 0 1-.924.577 3 3 0 0 1-.172.083 3 3 0 0 1-.172-.083 8 8 0 0 1-.923-.577 17 17 0 0 1-2.55-2.242C6.547 16.138 5 13.625 5 11Zm6.882 10.012Zm.232-.001h-.003l.007.001-.004-.001ZM12 2a9 9 0 0 0-9 9c0 3.375 1.953 6.362 3.895 8.434a19 19 0 0 0 2.856 2.508c.425.3.82.545 1.159.72.168.087.337.164.498.222.14.05.356.116.592.116s.451-.066.592-.116c.16-.058.33-.135.498-.222.339-.175.734-.42 1.159-.72.85-.6 1.87-1.457 2.856-2.508C19.047 17.362 21 14.375 21 11a9 9 0 0 0-9-9ZM7.38 9.927c2.774-.094 3.459 1.31 3.591 3.19a.89.89 0 0 1-.855.956c-2.774.094-3.458-1.31-3.59-3.19a.89.89 0 0 1 .854-.956Zm9.236 0c-2.774-.094-3.458 1.31-3.59 3.19a.89.89 0 0 0 .854.956c2.774.094 3.459-1.31 3.591-3.19a.89.89 0 0 0-.855-.956Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 997 B

After

Width:  |  Height:  |  Size: 928 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.148 2.034a1 1 0 0 1 1.35-.419c1.054.556 1.873 1.266 2.46 2.174.369.57.63 1.197.807 1.873 1.143-.349 2.194-.46 3.15-.342a5.122 5.122 0 0 1 3.134 1.556c1.564 1.63 2.086 4.183 1.922 6.58-.166 2.414-1.043 4.938-2.607 6.619-.792.851-1.78 1.505-2.95 1.782-1.063.251-2.213.176-3.415-.262-1.202.438-2.351.513-3.414.262-1.17-.277-2.158-.93-2.95-1.782-1.563-1.682-2.44-4.205-2.606-6.62-.164-2.396.358-4.949 1.921-6.579A5.121 5.121 0 0 1 8.085 5.32c.777-.095 1.617-.04 2.518.172a4.011 4.011 0 0 0-.325-.618c-.372-.576-.912-1.068-1.712-1.49a1 1 0 0 1-.418-1.35Zm.897 17.877c.71.167 1.557.117 2.562-.31a1 1 0 0 1 .784 0c1.005.428 1.853.477 2.563.31.715-.17 1.37-.579 1.946-1.198 1.171-1.26 1.932-3.303 2.076-5.394.144-2.109-.353-3.998-1.37-5.059a3.124 3.124 0 0 0-1.936-.955c-.83-.102-1.912.043-3.282.621a1 1 0 0 1-.778 0c-1.37-.578-2.45-.723-3.281-.62-.815.1-1.445.443-1.935.954-1.017 1.06-1.514 2.95-1.37 5.059.144 2.09.905 4.135 2.076 5.394.575.62 1.23 1.029 1.945 1.198Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.148 2.034a1 1 0 0 1 1.35-.419c1.054.556 1.873 1.266 2.46 2.174.369.57.63 1.197.807 1.873 1.143-.349 2.194-.46 3.15-.342a5.12 5.12 0 0 1 3.134 1.556c1.564 1.63 2.086 4.183 1.922 6.58-.166 2.414-1.043 4.938-2.607 6.619-.792.851-1.78 1.505-2.95 1.782-1.063.251-2.213.176-3.415-.262-1.202.438-2.351.513-3.414.262-1.17-.277-2.158-.93-2.95-1.782-1.563-1.682-2.44-4.205-2.606-6.62-.164-2.396.358-4.949 1.921-6.579A5.12 5.12 0 0 1 8.085 5.32q1.166-.144 2.518.172a4 4 0 0 0-.325-.618c-.372-.576-.912-1.068-1.712-1.49a1 1 0 0 1-.418-1.35Zm.897 17.877c.71.167 1.557.117 2.562-.31a1 1 0 0 1 .784 0c1.005.428 1.853.477 2.563.31.715-.17 1.37-.579 1.946-1.198 1.171-1.26 1.932-3.303 2.076-5.394.144-2.109-.353-3.998-1.37-5.059a3.12 3.12 0 0 0-1.936-.955c-.83-.102-1.912.043-3.282.621a1 1 0 0 1-.778 0c-1.37-.578-2.45-.723-3.281-.62-.815.1-1.445.443-1.935.954-1.017 1.06-1.514 2.95-1.37 5.059.144 2.09.905 4.135 2.076 5.394.575.62 1.23 1.029 1.945 1.198Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -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="M12 21a1 1 0 0 1-.707-.293l-6-6a1 1 0 1 1 1.414-1.414L11 17.586V4a1 1 0 1 1 2 0v13.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-6 6A1 1 0 0 1 12 21Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 285 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 5a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h5.25a1 1 0 1 1 0 2H6a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h5.25a1 1 0 1 1 0 2H6Zm8.793 1.793a1 1 0 0 1 1.414 0l4.5 4.5a1 1 0 0 1 0 1.414l-4.5 4.5a1 1 0 0 1-1.414-1.414L17.586 13H8.75a1 1 0 1 1 0-2h8.836l-2.793-2.793a1 1 0 0 1 0-1.414Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 405 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="M21 12a1 1 0 0 1-.293.707l-6 6a1 1 0 0 1-1.414-1.414L17.586 13H4a1 1 0 1 1 0-2h13.586l-4.293-4.293a1 1 0 0 1 1.414-1.414l6 6A1 1 0 0 1 21 12Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 284 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" d="M4.213 6.886c-.673-1.35.334-2.889 1.806-2.889H17.98c1.472 0 2.479 1.539 1.806 2.89l-5.982 11.997c-.74 1.484-2.87 1.484-3.61 0L4.213 6.886Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" d="M4.213 6.886c-.673-1.35.334-2.889 1.806-2.889H17.98c1.472 0 2.479 1.539 1.806 2.89l-5.982 11.997c-.74 1.484-2.87 1.484-3.61 0L4.213 6.886Z"/></svg>

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 241 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="M20.957 3.043a1 1 0 0 1 0 1.414L16.414 9H20a1 1 0 1 1 0 2h-6a1 1 0 0 1-1-1V4a1 1 0 1 1 2 0v3.586l4.543-4.543a1 1 0 0 1 1.414 0ZM3 14a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0v-3.586l-4.543 4.543a1 1 0 0 1-1.414-1.414L7.586 15H4a1 1 0 0 1-1-1Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 389 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="M20.957 3.043a1 1 0 0 1 0 1.414L16.414 9H20a1 1 0 1 1 0 2h-5a2 2 0 0 1-2-2V4a1 1 0 1 1 2 0v3.586l4.543-4.543a1 1 0 0 1 1.414 0ZM3 14a1 1 0 0 1 1-1h5a2 2 0 0 1 2 2v5a1 1 0 1 1-2 0v-3.586l-4.543 4.543a1 1 0 0 1-1.414-1.414L7.586 15H4a1 1 0 0 1-1-1Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 389 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="M14 5a1 1 0 1 1 0-2h6a1 1 0 0 1 1 1v6a1 1 0 1 1-2 0V6.414l-4.293 4.293a1 1 0 0 1-1.414-1.414L17.586 5H14ZM4 13a1 1 0 0 1 1 1v3.586l4.293-4.293a1 1 0 0 1 1.414 1.414L6.414 19H10a1 1 0 1 1 0 2H4a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 367 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="M13 4a1 1 0 0 1 1-1h5a2 2 0 0 1 2 2v5a1 1 0 1 1-2 0V6.414l-4.293 4.293a1 1 0 0 1-1.414-1.414L17.586 5H14a1 1 0 0 1-1-1Zm-9 9a1 1 0 0 1 1 1v3.586l4.293-4.293a1 1 0 0 1 1.414 1.414L6.414 19H10a1 1 0 1 1 0 2H5a2 2 0 0 1-2-2v-5a1 1 0 0 1 1-1Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 381 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-1h16a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4Zm2 1v14h14V5H5Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 229 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 2c0-.552.41-1 .917-1h14.666c.507 0 .917.448.917 1v20c0 .552-.41 1-.917 1H4.917C4.41 23 4 22.552 4 22V2Zm1.833 1v18h12.834V3H5.833Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 276 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="M2 20.5c-.552 0-1-.41-1-.917V4.917C1 4.41 1.448 4 2 4h20c.552 0 1 .41 1 .917v14.666c0 .507-.448.917-1 .917H2Zm1-1.833h18V5.833H3v12.834Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 279 B

+1 -1
View File
@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 4a8 8 0 1 0 4.21 14.804 1 1 0 0 1 1.054 1.7A9.958 9.958 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 1.104-.27 2.31-.949 3.243-.716.984-1.849 1.6-3.331 1.465a4.207 4.207 0 0 1-2.93-1.585c-.94 1.21-2.388 1.94-3.985 1.715-2.53-.356-4.04-2.91-3.682-5.458.358-2.547 2.514-4.586 5.044-4.23.905.127 1.68.536 2.286 1.126a1 1 0 0 1 1.964.368l-.515 3.545v.002a2.222 2.222 0 0 0 1.999 2.526c.75.068 1.212-.21 1.533-.65.358-.493.566-1.245.566-2.067a8 8 0 0 0-8-8Zm-.112 5.13c-1.195-.168-2.544.819-2.784 2.529-.24 1.71.784 3.03 1.98 3.198 1.195.168 2.543-.819 2.784-2.529.24-1.71-.784-3.03-1.98-3.198Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 4a8 8 0 1 0 4.21 14.804 1 1 0 0 1 1.054 1.7A9.96 9.96 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 1.104-.27 2.31-.949 3.243-.716.984-1.849 1.6-3.331 1.465a4.2 4.2 0 0 1-2.93-1.585c-.94 1.21-2.388 1.94-3.985 1.715-2.53-.356-4.04-2.91-3.682-5.458s2.514-4.586 5.044-4.23c.905.127 1.68.536 2.286 1.126a1 1 0 0 1 1.964.368l-.515 3.545v.002a2.22 2.22 0 0 0 1.999 2.526c.75.068 1.212-.21 1.533-.65.358-.493.566-1.245.566-2.067a8 8 0 0 0-8-8Zm-.112 5.13c-1.195-.168-2.544.819-2.784 2.529s.784 3.03 1.98 3.198 2.543-.819 2.784-2.529-.784-3.03-1.98-3.198Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 756 B

After

Width:  |  Height:  |  Size: 713 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="M12 4a8 8 0 1 0 4.21 14.804 1 1 0 0 1 1.054 1.7A9.96 9.96 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 1.104-.27 2.31-.949 3.243-.716.984-1.849 1.6-3.331 1.465a4.2 4.2 0 0 1-2.93-1.585c-.94 1.21-2.388 1.94-3.985 1.715-2.53-.356-4.04-2.91-3.682-5.458s2.514-4.586 5.044-4.23c.905.127 1.68.536 2.286 1.126a1 1 0 0 1 1.964.368l-.515 3.545v.002a2.22 2.22 0 0 0 1.999 2.526c.75.068 1.212-.21 1.533-.65.358-.493.566-1.245.566-2.067a8 8 0 0 0-8-8Zm-.112 5.13c-1.195-.168-2.544.819-2.784 2.529s.784 3.03 1.98 3.198 2.544-.819 2.784-2.529-.784-3.03-1.98-3.198Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 713 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M6.17 5.004c-.553-.029-.814.107-.937.23-.122.122-.258.383-.23.936.03.552.222 1.28.611 2.15.282.628.655 1.304 1.112 2.005a28.26 28.26 0 0 1 1.72-1.88 28.258 28.258 0 0 1 1.88-1.719 14.886 14.886 0 0 0-2.007-1.112c-.868-.39-1.597-.581-2.15-.61Zm5.83.44c-.985-.688-1.953-1.247-2.863-1.655-.998-.447-1.978-.736-2.863-.782-.885-.047-1.791.148-2.455.812-.664.664-.859 1.57-.812 2.455.046.885.335 1.865.782 2.863.408.91.967 1.878 1.655 2.863-.688.985-1.247 1.953-1.655 2.863-.447.998-.736 1.978-.782 2.863-.047.885.148 1.791.812 2.455.664.663 1.57.859 2.455.812.885-.046 1.865-.335 2.863-.782.91-.408 1.878-.967 2.863-1.655.985.688 1.952 1.247 2.863 1.655.998.447 1.978.736 2.863.782.885.047 1.791-.148 2.455-.812.663-.664.859-1.57.812-2.455-.046-.885-.335-1.865-.782-2.863-.408-.91-.967-1.878-1.655-2.863.688-.985 1.247-1.952 1.655-2.863.447-.998.736-1.978.782-2.863.047-.885-.148-1.791-.812-2.455-.664-.664-1.57-.859-2.455-.812-.885.046-1.865.335-2.863.782-.91.408-1.878.967-2.863 1.655Zm0 2.497A25.9 25.9 0 0 0 9.86 9.86 25.899 25.899 0 0 0 7.94 12c.569.711 1.211 1.431 1.92 2.14.709.709 1.429 1.351 2.14 1.92a25.925 25.925 0 0 0 2.14-1.92A25.925 25.925 0 0 0 16.06 12a25.921 25.921 0 0 0-1.92-2.14A25.904 25.904 0 0 0 12 7.94Zm5.274 2.384a28.232 28.232 0 0 0-1.72-1.88 28.27 28.27 0 0 0-1.88-1.719 14.89 14.89 0 0 1 2.007-1.112c.868-.39 1.597-.581 2.15-.61.552-.029.813.107.936.23.123.122.258.383.23.936-.03.552-.222 1.28-.611 2.15a14.883 14.883 0 0 1-1.112 2.005Zm0 3.35a28.24 28.24 0 0 1-1.72 1.88 28.24 28.24 0 0 1-1.88 1.719c.702.457 1.378.83 2.007 1.112.868.39 1.597.581 2.15.61.552.03.813-.106.936-.23.123-.122.258-.383.23-.935-.03-.553-.222-1.282-.611-2.15a14.888 14.888 0 0 0-1.112-2.006Zm-6.949 3.599a28.23 28.23 0 0 1-1.88-1.72 28.27 28.27 0 0 1-1.719-1.88 14.89 14.89 0 0 0-1.112 2.007c-.39.868-.581 1.597-.61 2.15-.029.552.107.813.23.936.122.123.383.258.936.23.552-.03 1.28-.222 2.15-.611a14.884 14.884 0 0 0 2.005-1.112Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M6.17 5.004c-.553-.029-.814.107-.937.23-.122.122-.258.383-.23.936.03.552.222 1.28.611 2.15.282.628.655 1.304 1.112 2.005a28 28 0 0 1 1.72-1.88 28 28 0 0 1 1.88-1.719 15 15 0 0 0-2.007-1.112c-.868-.39-1.597-.581-2.15-.61Zm5.83.44c-.985-.688-1.953-1.247-2.863-1.655-.998-.447-1.978-.736-2.863-.782s-1.791.148-2.455.812-.859 1.57-.812 2.455.335 1.865.782 2.863c.408.91.967 1.878 1.655 2.863-.688.985-1.247 1.953-1.655 2.863-.447.998-.736 1.978-.782 2.863s.148 1.791.812 2.455c.664.663 1.57.859 2.455.812s1.865-.335 2.863-.782c.91-.408 1.878-.967 2.863-1.655.985.688 1.952 1.247 2.863 1.655.998.447 1.978.736 2.863.782s1.791-.148 2.455-.812c.663-.664.859-1.57.812-2.455s-.335-1.865-.782-2.863c-.408-.91-.967-1.878-1.655-2.863.688-.985 1.247-1.952 1.655-2.863.447-.998.736-1.978.782-2.863s-.148-1.791-.812-2.455-1.57-.859-2.455-.812-1.865.335-2.863.782c-.91.408-1.878.967-2.863 1.655Zm0 2.497A26 26 0 0 0 9.86 9.86 26 26 0 0 0 7.94 12a26 26 0 0 0 1.92 2.14A26 26 0 0 0 12 16.06a26 26 0 0 0 2.14-1.92A26 26 0 0 0 16.06 12a26 26 0 0 0-1.92-2.14A26 26 0 0 0 12 7.94Zm5.274 2.384a28 28 0 0 0-1.72-1.88 28 28 0 0 0-1.88-1.719 15 15 0 0 1 2.007-1.112c.868-.39 1.597-.581 2.15-.61s.813.107.936.23c.123.122.258.383.23.936-.03.552-.222 1.28-.611 2.15a15 15 0 0 1-1.112 2.005Zm0 3.35a28 28 0 0 1-1.72 1.88 28 28 0 0 1-1.88 1.719c.702.457 1.378.83 2.007 1.112.868.39 1.597.581 2.15.61s.813-.106.936-.23c.123-.122.258-.383.23-.935-.03-.553-.222-1.282-.611-2.15a15 15 0 0 0-1.112-2.006Zm-6.949 3.599a28 28 0 0 1-1.88-1.72 28 28 0 0 1-1.719-1.88 15 15 0 0 0-1.112 2.007c-.39.868-.581 1.597-.61 2.15s.107.813.23.936c.122.123.383.258.936.23.552-.03 1.28-.222 2.15-.611a15 15 0 0 0 2.005-1.112Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 2a7.307 7.307 0 0 0-7.298 6.943l-.19 3.798-1.321 2.641A1.809 1.809 0 0 0 4.809 18H7.1a5.002 5.002 0 0 0 9.8 0h2.291a1.809 1.809 0 0 0 1.618-2.618l-1.32-2.641-.19-3.798A7.308 7.308 0 0 0 12 2Zm0 18a3.001 3.001 0 0 1-2.83-2h5.66A3.001 3.001 0 0 1 12 20Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 2a7.307 7.307 0 0 0-7.298 6.943l-.19 3.798-1.321 2.641A1.81 1.81 0 0 0 4.809 18H7.1a5.002 5.002 0 0 0 9.8 0h2.291a1.81 1.81 0 0 0 1.618-2.618l-1.32-2.641-.19-3.798A7.31 7.31 0 0 0 12 2Zm0 18a3 3 0 0 1-2.83-2h5.66A3 3 0 0 1 12 20Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 376 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.702 8.943a7.307 7.307 0 0 1 14.596 0l.19 3.798 1.321 2.641A1.809 1.809 0 0 1 19.191 18H16.9a5.002 5.002 0 0 1-9.8 0H4.809a1.809 1.809 0 0 1-1.618-2.618l1.32-2.641.19-3.798ZM9.17 18a3.001 3.001 0 0 0 5.658 0H9.171ZM12 4a5.307 5.307 0 0 0-5.3 5.042l-.19 3.798a2 2 0 0 1-.21.795L5.119 16h13.764l-1.183-2.365a2 2 0 0 1-.208-.795l-.19-3.798A5.308 5.308 0 0 0 12 4Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.702 8.943a7.307 7.307 0 0 1 14.596 0l.19 3.798 1.321 2.641A1.81 1.81 0 0 1 19.191 18H16.9a5.002 5.002 0 0 1-9.8 0H4.809a1.81 1.81 0 0 1-1.618-2.618l1.32-2.641.19-3.798ZM9.17 18a3.001 3.001 0 0 0 5.658 0H9.171ZM12 4a5.307 5.307 0 0 0-5.3 5.042l-.19 3.798a2 2 0 0 1-.21.795L5.119 16h13.764L17.7 13.635a2 2 0 0 1-.208-.795l-.19-3.798A5.31 5.31 0 0 0 12 4Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 505 B

After

Width:  |  Height:  |  Size: 498 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="m19.785 8.815 1.034 7.761L7.595 3.352a7.853 7.853 0 0 1 12.19 5.463ZM4 19h3.354c.904 1.748 2.607 3 4.646 3 2.038 0 3.742-1.252 4.646-3h.94l2.707 2.707a1 1 0 0 0 1.414-1.414l-18-18a1 1 0 0 0-1.414 1.414l2.666 2.666a7.842 7.842 0 0 0-.743 2.442l-1.207 9.053A1 1 0 0 0 4 19Zm8 1c-.823 0-1.613-.363-2.222-1h4.443c-.608.637-1.398 1-2.221 1Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="m19.785 8.815 1.034 7.761L7.595 3.352a7.853 7.853 0 0 1 12.19 5.463ZM4 19h3.354c.904 1.748 2.607 3 4.646 3s3.742-1.252 4.646-3h.94l2.707 2.707a1 1 0 0 0 1.414-1.414l-18-18a1 1 0 0 0-1.414 1.414l2.666 2.666a7.8 7.8 0 0 0-.743 2.442l-1.207 9.053A1 1 0 0 0 4 19Zm8 1c-.823 0-1.613-.363-2.222-1h4.443c-.608.637-1.398 1-2.221 1Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 478 B

After

Width:  |  Height:  |  Size: 466 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2.293 2.293a1 1 0 0 1 1.414 0l18 18a1 1 0 0 1-1.414 1.414L17.586 19h-.94c-.904 1.748-2.607 3-4.646 3-2.039 0-3.742-1.252-4.646-3H4a1 1 0 0 1-.991-1.132l1.207-9.053c.116-.87.372-1.69.743-2.442L2.293 3.707a1 1 0 0 1 0-1.414Zm4.19 5.604c-.134.376-.23.772-.285 1.183L5.142 17h10.444L6.483 7.897ZM9.778 19c.61.637 1.399 1 2.222 1s1.613-.363 2.222-1H9.778ZM8.834 2.666a7.853 7.853 0 0 1 10.95 6.15l.645 4.832a1 1 0 0 1-1.983.265l-.644-4.833A5.853 5.853 0 0 0 9.64 4.495a1 1 0 0 1-.807-1.83Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2.293 2.293a1 1 0 0 1 1.414 0l18 18a1 1 0 0 1-1.414 1.414L17.586 19h-.94c-.904 1.748-2.607 3-4.646 3s-3.742-1.252-4.646-3H4a1 1 0 0 1-.991-1.132l1.207-9.053c.116-.87.372-1.69.743-2.442L2.293 3.707a1 1 0 0 1 0-1.414Zm4.19 5.604q-.202.565-.285 1.183L5.142 17h10.444L6.483 7.897ZM9.778 19c.61.637 1.399 1 2.222 1s1.613-.363 2.222-1H9.778ZM8.834 2.666a7.853 7.853 0 0 1 10.95 6.15l.645 4.832a1 1 0 0 1-1.983.265l-.644-4.833A5.853 5.853 0 0 0 9.64 4.495a1 1 0 0 1-.807-1.83Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 613 B

+1 -1
View File
@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 2a7.853 7.853 0 0 0-7.784 6.815l-1.207 9.053A1 1 0 0 0 4 19h3.354c.904 1.748 2.607 3 4.646 3 2.039 0 3.742-1.252 4.646-3H20a1 1 0 0 0 .991-1.132l-1.207-9.053A7.853 7.853 0 0 0 12 2Zm2.222 17H9.778c.61.637 1.399 1 2.222 1s1.613-.363 2.222-1Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 2a7.85 7.85 0 0 0-7.784 6.815l-1.207 9.053A1 1 0 0 0 4 19h3.354c.904 1.748 2.607 3 4.646 3s3.742-1.252 4.646-3H20a1 1 0 0 0 .991-1.132l-1.207-9.053A7.85 7.85 0 0 0 12 2Zm2.222 17H9.778c.61.637 1.399 1 2.222 1s1.613-.363 2.222-1Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 387 B

After

Width:  |  Height:  |  Size: 375 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.216 8.815a7.853 7.853 0 0 1 15.568 0l1.207 9.053A1 1 0 0 1 20 19h-3.354c-.904 1.748-2.607 3-4.646 3-2.039 0-3.742-1.252-4.646-3H4a1 1 0 0 1-.991-1.132l1.207-9.053ZM9.778 19c.61.637 1.399 1 2.222 1s1.613-.363 2.222-1H9.778ZM12 4a5.853 5.853 0 0 0-5.802 5.08L5.142 17h13.716l-1.056-7.92A5.853 5.853 0 0 0 12 4Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.216 8.815a7.853 7.853 0 0 1 15.568 0l1.207 9.053A1 1 0 0 1 20 19h-3.354c-.904 1.748-2.607 3-4.646 3s-3.742-1.252-4.646-3H4a1 1 0 0 1-.991-1.132l1.207-9.053ZM9.778 19c.61.637 1.399 1 2.222 1s1.613-.363 2.222-1H9.778ZM12 4a5.85 5.85 0 0 0-5.802 5.08L5.142 17h13.716l-1.056-7.92A5.85 5.85 0 0 0 12 4Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 454 B

After

Width:  |  Height:  |  Size: 443 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="m12 .757 2.122 2.122A3 3 0 0 1 13 7.829V9h4.5a3 3 0 0 1 3 3v1.646a3 3 0 0 1-.5 1.658V19a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3v-3.696a3 3 0 0 1-.5-1.658V12a3 3 0 0 1 3-3H11V7.829a3 3 0 0 1-1.121-4.95L12 .757ZM6.5 11a1 1 0 0 0-1 1v1.646a1 1 0 0 0 .629.928l.5.2a1 1 0 0 0 .742 0l1.015-.405a3 3 0 0 1 2.228 0l1.015.405a1 1 0 0 0 .742 0l1.015-.405a3 3 0 0 1 2.228 0l1.015.405a1 1 0 0 0 .742 0l.5-.2a1 1 0 0 0 .629-.928V12a1 1 0 0 0-1-1h-11ZM6 16.674V19a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-2.326a3 3 0 0 1-2.114-.043l-1.015-.405a1 1 0 0 0-.742 0l-1.015.405a3 3 0 0 1-2.228 0l-1.015-.405a1 1 0 0 0-.742 0l-1.015.405A3 3 0 0 1 6 16.674ZM12.002 6a1 1 0 0 0 .706-1.707L12 3.586l-.707.707A1 1 0 0 0 12.002 6Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 828 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.002 5h12a1 1 0 0 1 1 1v10.036a1 1 0 0 1-1 1h-2.626a2 2 0 0 0-1.276.46l-2.098 1.738-2.065-1.731a2 2 0 0 0-1.285-.467h-2.65a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1Zm12-2h-12a3 3 0 0 0-3 3v10.036a3 3 0 0 0 3 3h2.65l2.704 2.266a1 1 0 0 0 1.28.004l2.74-2.27h2.626a3 3 0 0 0 3-3V6a3 3 0 0 0-3-3ZM13 11.75a1 1 0 1 0-2 0v2a1 1 0 1 0 2 0v-2ZM12 10a1.25 1.25 0 1 1 0-2.5 1.25 1.25 0 0 1 0 2.5Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 519 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M5.002 17.036V5h14v12.036h-3.986a1 1 0 0 0-.639.23l-2.375 1.968-2.344-1.965a1 1 0 0 0-.643-.233H5.002ZM20.002 3h-16a1 1 0 0 0-1 1v14.036a1 1 0 0 0 1 1h4.65l2.704 2.266a1 1 0 0 0 1.28.004l2.74-2.27h4.626a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1Zm-7.878 3.663c-1.39 0-2.5 1.135-2.5 2.515a1 1 0 0 0 2 0c0-.294.232-.515.5-.515a.507.507 0 0 1 .489.6.174.174 0 0 1-.027.048 1.1 1.1 0 0 1-.267.226c-.508.345-1.128.923-1.286 1.978a1 1 0 1 0 1.978.297.762.762 0 0 1 .14-.359c.063-.086.155-.169.293-.262.436-.297 1.18-.885 1.18-2.013 0-1.38-1.11-2.515-2.5-2.515ZM12 15.75a1.25 1.25 0 1 1 0-2.5 1.25 1.25 0 0 1 0 2.5Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M5.002 17.036V5h14v12.036h-3.986a1 1 0 0 0-.639.23l-2.375 1.968-2.344-1.965a1 1 0 0 0-.643-.233H5.002ZM20.002 3h-16a1 1 0 0 0-1 1v14.036a1 1 0 0 0 1 1h4.65l2.704 2.266a1 1 0 0 0 1.28.004l2.74-2.27h4.626a1 1 0 0 0 1-1V4a1 1 0 0 0-1-1Zm-7.878 3.663c-1.39 0-2.5 1.135-2.5 2.515a1 1 0 0 0 2 0c0-.294.232-.515.5-.515a.507.507 0 0 1 .489.6.2.2 0 0 1-.027.048 1.1 1.1 0 0 1-.267.226c-.508.345-1.128.923-1.286 1.978a1 1 0 1 0 1.978.297.76.76 0 0 1 .14-.359c.063-.086.155-.169.293-.262.436-.297 1.18-.885 1.18-2.013 0-1.38-1.11-2.515-2.5-2.515ZM12 15.75a1.25 1.25 0 1 1 0-2.5 1.25 1.25 0 0 1 0 2.5Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 738 B

After

Width:  |  Height:  |  Size: 732 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8 2a1 1 0 0 1 1 1v1h6V3a1 1 0 1 1 2 0v1h2a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2V3a1 1 0 0 1 1-1ZM5 6v3h14V6H5Zm14 5H5v8h14v-8Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8 2a1 1 0 0 1 1 1v1h6V3a1 1 0 1 1 2 0v1h2a2 2 0 0 1 2 2v13a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2V3a1 1 0 0 1 1-1ZM5 6v3h14V6H5Zm14 5H5v8h14v-8Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 296 B

After

Width:  |  Height:  |  Size: 297 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.371 3.89A2 2 0 0 1 10.035 3h3.93a2 2 0 0 1 1.664.89L17.035 6H20a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.965L8.37 3.89ZM12 9a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.371 3.89A2 2 0 0 1 10.035 3h3.93a2 2 0 0 1 1.664.89L17.035 6H20a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.965L8.37 3.89ZM12 9a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 330 B

After

Width:  |  Height:  |  Size: 331 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.371 3.89A2 2 0 0 1 10.035 3h3.93a2 2 0 0 1 1.664.89L17.035 6H20a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.965L8.37 3.89ZM13.965 5h-3.93L8.63 7.11A2 2 0 0 1 6.965 8H4v11h16V8h-2.965a2 2 0 0 1-1.664-.89L13.965 5ZM12 11a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-4 2a4 4 0 1 1 8 0 4 4 0 0 1-8 0Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.371 3.89A2 2 0 0 1 10.035 3h3.93a2 2 0 0 1 1.664.89L17.035 6H20a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h2.965L8.37 3.89ZM13.965 5h-3.93L8.63 7.11A2 2 0 0 1 6.965 8H4v11h16V8h-2.965a2 2 0 0 1-1.664-.89L13.965 5ZM12 11a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-4 2a4 4 0 1 1 8 0 4 4 0 0 1-8 0Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 448 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-1h16a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4Zm11.543 7.293a1 1 0 0 1 1.414 0 1 1 0 0 0 1.414-1.414 3 3 0 1 0 0 4.242 1 1 0 0 0-1.414-1.414 1 1 0 0 1-1.414-1.414Zm-6 0a1 1 0 0 1 1.414 0 1 1 0 0 0 1.414-1.414 3 3 0 1 0 0 4.243 1 1 0 0 0-1.414-1.415 1 1 0 0 1-1.414-1.414Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 438 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-1h16a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V4Zm2 1v14h14V5H5Zm10.957 6.293a1 1 0 1 0 0 1.414 1 1 0 0 1 1.414 1.414 3 3 0 1 1 0-4.242 1 1 0 0 1-1.414 1.414Zm-6.331-.22a1 1 0 1 0 .331 1.634 1 1 0 0 1 1.414 1.414 3 3 0 1 1 0-4.242 1 1 0 0 1-1.414 1.414 1 1 0 0 0-.331-.22Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 437 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M13.832 1.014a1 1 0 0 1 1.154.818L14 2l.986-.168v.003l.001.005.002.014.007.045.021.156c.017.13.035.312.048.527.025.42.028 1.01-.082 1.6-.127.69-.447 1.31-.701 1.726a7.107 7.107 0 0 1-.498.712l-.01.014-.004.005-.002.001v.002L13 6l.767.642a1 1 0 0 1-1.535-1.282l.002-.003.017-.02a5.13 5.13 0 0 0 .324-.47c.198-.325.378-.705.442-1.049.068-.37.071-.78.051-1.12a6.268 6.268 0 0 0-.05-.504l-.004-.025m.818-1.155a1 1 0 0 0-.818 1.155Zm5.257 1.545a1 1 0 0 1 .602 1.28l-.45 1.25a1 1 0 0 1-1.882-.678l.45-1.25a1 1 0 0 1 1.28-.602ZM6.524 7.136a2 2 0 0 1 3.294-.732l7.778 7.778a2 2 0 0 1-.732 3.294L4.653 21.91c-1.596.579-3.142-.967-2.563-2.563L6.524 7.136Zm9.658 8.46L8.404 7.818 3.97 20.03l12.212-4.434Zm5.712-8.543a1 1 0 0 1-.447 1.341l-1 .5a1 1 0 1 1-.894-1.788l1-.5a1 1 0 0 1 1.341.447Zm-4.687-.26a1 1 0 0 1 0 1.414l-1 1a1 1 0 1 1-1.414-1.414l1-1a1 1 0 0 1 1.414 0Zm-.206 4.165A1 1 0 0 1 18.042 10L18 11l.042-1 .003.001h.014l.035.003.117.008a7.693 7.693 0 0 1 1.594.306c.423.135.861.352 1.168.516a11.873 11.873 0 0 1 .508.288l.032.02.01.006.004.002L21 12l.527-.85a1 1 0 0 1-1.054 1.7l-.005-.003-.023-.014a7.477 7.477 0 0 0-.415-.236 5.497 5.497 0 0 0-.835-.374A5.684 5.684 0 0 0 17.973 12l-.015-.002h-.002a1 1 0 0 1-.955-1.041Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M13.832 1.014a1 1 0 0 1 1.154.818L14 2l.986-.168v.003l.001.005.002.014.007.045.021.156c.017.13.035.312.048.527.025.42.028 1.01-.082 1.6-.127.69-.447 1.31-.701 1.726a7 7 0 0 1-.498.712l-.01.014-.004.005-.002.001v.002L13 6l.767.642a1 1 0 0 1-1.535-1.282l.002-.003.017-.02a5 5 0 0 0 .324-.47c.198-.325.378-.705.442-1.049.068-.37.071-.78.051-1.12a6 6 0 0 0-.05-.504l-.004-.025m.818-1.155a1 1 0 0 0-.818 1.155Zm5.257 1.545a1 1 0 0 1 .602 1.28l-.45 1.25a1 1 0 0 1-1.882-.678l.45-1.25a1 1 0 0 1 1.28-.602ZM6.524 7.136a2 2 0 0 1 3.294-.732l7.778 7.778a2 2 0 0 1-.732 3.294L4.653 21.91c-1.596.579-3.142-.967-2.563-2.563L6.524 7.136Zm9.658 8.46L8.404 7.818 3.97 20.03l12.212-4.434Zm5.712-8.543a1 1 0 0 1-.447 1.341l-1 .5a1 1 0 1 1-.894-1.788l1-.5a1 1 0 0 1 1.341.447Zm-4.687-.26a1 1 0 0 1 0 1.414l-1 1a1 1 0 1 1-1.414-1.414l1-1a1 1 0 0 1 1.414 0Zm-.206 4.165A1 1 0 0 1 18.042 10L18 11l.042-1 .003.001h.014l.035.003.117.008a7.7 7.7 0 0 1 1.594.306c.423.135.861.352 1.168.516a12 12 0 0 1 .508.288l.032.02.01.006.004.002L21 12l.527-.85a1 1 0 0 1-1.054 1.7l-.005-.003-.023-.014a8 8 0 0 0-.415-.236 5.5 5.5 0 0 0-.835-.374A5.7 5.7 0 0 0 17.973 12l-.015-.002h-.002a1 1 0 0 1-.955-1.041Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M3.293 8.293a1 1 0 0 1 1.414 0L12 15.586l7.293-7.293a1 1 0 1 1 1.414 1.414l-8 8a1 1 0 0 1-1.414 0l-8-8a1 1 0 0 1 0-1.414Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M3.293 8.293a1 1 0 0 1 1.414 0L12 15.586l7.293-7.293a1 1 0 1 1 1.414 1.414l-8 8a1 1 0 0 1-1.414 0l-8-8a1 1 0 0 1 0-1.414Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 264 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 6a1 1 0 0 1 .707.293l8 8a1 1 0 0 1-1.414 1.414L12 8.414l-7.293 7.293a1 1 0 0 1-1.414-1.414l8-8A1 1 0 0 1 12 6Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 6a1 1 0 0 1 .707.293l8 8a1 1 0 0 1-1.414 1.414L12 8.414l-7.293 7.293a1 1 0 0 1-1.414-1.414l8-8A1 1 0 0 1 12 6Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 256 B

After

Width:  |  Height:  |  Size: 257 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 4a8 8 0 0 0-6.32 12.906L16.906 5.68A7.962 7.962 0 0 0 12 4Zm6.32 3.094L7.094 18.32A8 8 0 0 0 18.32 7.094ZM2 12C2 6.477 6.477 2 12 2a9.972 9.972 0 0 1 7.071 2.929A9.972 9.972 0 0 1 22 12c0 5.523-4.477 10-10 10a9.972 9.972 0 0 1-7.071-2.929A9.972 9.972 0 0 1 2 12Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 4a8 8 0 0 0-6.32 12.906L16.906 5.68A7.96 7.96 0 0 0 12 4Zm6.32 3.094L7.094 18.32A8 8 0 0 0 18.32 7.094ZM2 12C2 6.477 6.477 2 12 2a9.97 9.97 0 0 1 7.071 2.929A9.97 9.97 0 0 1 22 12c0 5.523-4.477 10-10 10a9.97 9.97 0 0 1-7.071-2.929A9.97 9.97 0 0 1 2 12Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 399 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="M12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16ZM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Z" clip-rule="evenodd"/><path fill="#000" fill-rule="evenodd" d="M12 9a1 1 0 0 0-.879.522 1 1 0 0 1-1.754-.96A3 3 0 0 1 12 7c1.515 0 2.567 1.006 2.866 2.189.302 1.189-.156 2.574-1.524 3.258A.62.62 0 0 0 13 13a1 1 0 1 1-2 0c0-.992.56-1.898 1.447-2.342.455-.227.572-.618.48-.978C12.836 9.314 12.529 9 12 9Z" clip-rule="evenodd"/><path fill="#000" d="M13 16a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"/></svg>

After

Width:  |  Height:  |  Size: 612 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.17 4A3.001 3.001 0 0 1 11 2h2c1.306 0 2.418.835 2.83 2H17a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h1.17ZM8 6H7a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1h-1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V6Zm6 0V5a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v1h4Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M8.17 4A3 3 0 0 1 11 2h2c1.306 0 2.418.835 2.83 2H17a3 3 0 0 1 3 3v12a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h1.17ZM8 6H7a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1V7a1 1 0 0 0-1-1h-1v1a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1V6Zm6 0V5a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v1h4Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 422 B

After

Width:  |  Height:  |  Size: 414 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" d="M3.004 4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2v5a1 1 0 0 0 .43.822c.57.395 1.176.031 1.685-.255.428-.24.998-.614 1.569-1.15 1.154-1.082 2.316-2.832 2.316-5.417V5a1 1 0 0 0-1-1h-7ZM14.004 4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2v5a1 1 0 0 0 .43.822c.57.395 1.176.031 1.685-.255.428-.24.998-.614 1.569-1.15 1.154-1.082 2.316-2.832 2.316-5.417V5a1 1 0 0 0-1-1h-7Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" d="M3.004 4a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2v5a1 1 0 0 0 .43.822c.57.395 1.176.031 1.685-.255.428-.24.998-.614 1.569-1.15 1.154-1.082 2.316-2.832 2.316-5.417V5a1 1 0 0 0-1-1h-7Zm11 0a1 1 0 0 0-1 1v8a1 1 0 0 0 1 1h2v5a1 1 0 0 0 .43.822c.57.395 1.176.031 1.685-.255.428-.24.998-.614 1.569-1.15 1.154-1.082 2.316-2.832 2.316-5.417V5a1 1 0 0 0-1-1h-7Z"/></svg>

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 446 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2.004 5a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v8c0 2.585-1.162 4.335-2.316 5.417-.571.536-1.14.91-1.569 1.15a7.01 7.01 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001L6.004 19l.351.936A1 1 0 0 1 5.004 19v-5h-2a1 1 0 0 1-1-1V5Zm5 12.234c.104-.085.21-.177.316-.276.846-.793 1.684-2.043 1.684-3.958V6h-5v6h2a1 1 0 0 1 1 1v4.234Zm6-12.234a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v8c0 2.585-1.162 4.335-2.316 5.417-.571.536-1.14.91-1.569 1.15a7.018 7.018 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001-.352-.936.351.936A1 1 0 0 1 16.004 19v-5h-2a1 1 0 0 1-1-1V5Zm5 12.234V13a1 1 0 0 0-1-1h-2V6h5v7c0 1.915-.838 3.165-1.684 3.958-.106.1-.212.191-.316.276Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2.004 5a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v8c0 2.585-1.162 4.335-2.316 5.417-.571.536-1.14.91-1.569 1.15a7 7 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001L6.004 19l.351.936A1 1 0 0 1 5.004 19v-5h-2a1 1 0 0 1-1-1V5Zm5 12.234q.156-.127.316-.276c.846-.793 1.684-2.043 1.684-3.958V6h-5v6h2a1 1 0 0 1 1 1v4.234Zm6-12.234a1 1 0 0 1 1-1h7a1 1 0 0 1 1 1v8c0 2.585-1.162 4.335-2.316 5.417-.571.536-1.14.91-1.569 1.15a7 7 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001-.352-.936.351.936A1 1 0 0 1 16.004 19v-5h-2a1 1 0 0 1-1-1V5Zm5 12.234V13a1 1 0 0 0-1-1h-2V6h5v7c0 1.915-.838 3.165-1.684 3.958q-.16.15-.316.276Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 775 B

After

Width:  |  Height:  |  Size: 747 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2.003 5.999a2 2 0 0 1 2-1.999h5c1.104 0 2 .893 2 1.999V13c0 2.585-1.16 4.335-2.315 5.417-.571.536-1.14.91-1.569 1.15a7.01 7.01 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001L6.004 19l.351.936a1 1 0 0 1-1.351-.935L5 14H4a2 2 0 0 1-2-2.001l.002-6Zm5 11.236L7 12.999A1 1 0 0 0 6 12H4l.003-6h5v7c0 1.915-.837 3.165-1.683 3.958-.106.1-.213.192-.317.277Zm6-11.235a2 2 0 0 1 2-2h5c1.104 0 2 .893 2 1.999V13c0 2.585-1.16 4.335-2.315 5.417-.571.536-1.14.91-1.569 1.15a7.018 7.018 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001-.352-.936.351.936A1 1 0 0 1 16.004 19v-5h-1a2 2 0 0 1-2-2V6Zm7 0h-5v6h2a1 1 0 0 1 1 1v4.234c.105-.085.211-.177.317-.276.846-.793 1.684-2.043 1.684-3.958V6Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2.003 5.999a2 2 0 0 1 2-1.999h5c1.104 0 2 .893 2 1.999V13c0 2.585-1.16 4.335-2.315 5.417-.571.536-1.14.91-1.569 1.15a7 7 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001L6.004 19l.351.936a1 1 0 0 1-1.351-.935L5 14H4a2 2 0 0 1-2-2.001l.002-6Zm5 11.236L7 12.999A1 1 0 0 0 6 12H4l.003-6h5v7c0 1.915-.837 3.165-1.683 3.958q-.16.15-.317.277Zm6-11.235a2 2 0 0 1 2-2h5c1.104 0 2 .893 2 1.999V13c0 2.585-1.16 4.335-2.315 5.417-.571.536-1.14.91-1.569 1.15a7 7 0 0 1-.738.36l-.016.006-.006.002h-.002l-.001.001-.352-.936.351.936A1 1 0 0 1 16.004 19v-5h-1a2 2 0 0 1-2-2V6Zm7 0h-5v6h2a1 1 0 0 1 1 1v4.234q.158-.127.317-.276c.846-.793 1.684-2.043 1.684-3.958V6Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 821 B

After

Width:  |  Height:  |  Size: 791 B

@@ -1 +1 @@
<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>
<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: 436 B

After

Width:  |  Height:  |  Size: 437 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4 12c0-4.09 3.527-7.5 8-7.5s8 3.41 8 7.5c0 1.579-.419 2.056-.708 2.236-.388.241-1.031.286-2.058.153-.33-.043-.652-.096-.991-.152a65.905 65.905 0 0 0-.531-.087c-.52-.081-1.077-.156-1.61-.164-1.065-.016-2.336.245-2.996 1.567-.418.834-.295 1.67-.078 2.314.18.534.47 1.055.683 1.437v.001l.097.175.01.018C7.432 19.407 4 16.033 4 12Zm8-9.5C6.532 2.5 2 6.7 2 12s4.532 9.5 10 9.5c.401 0 .812-.04 1.166-.193.41-.176.761-.517.866-1.028.085-.416-.03-.796-.118-1.029a5.981 5.981 0 0 0-.351-.73l-.12-.215c-.215-.392-.403-.73-.52-1.078-.13-.387-.111-.614-.029-.78.146-.291.404-.473 1.178-.461.385.005.825.06 1.329.14.15.023.308.05.47.077.36.059.742.122 1.105.17 1.021.132 2.325.213 3.373-.439C21.496 15.22 22 13.874 22 12c0-5.3-4.532-9.5-10-9.5Zm3.5 8.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM9 12.25a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm1.5-2.75a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4 12c0-4.09 3.527-7.5 8-7.5s8 3.41 8 7.5c0 1.579-.419 2.056-.708 2.236-.388.241-1.031.286-2.058.153-.33-.043-.652-.096-.991-.152l-.531-.087c-.52-.081-1.077-.156-1.61-.164-1.065-.016-2.336.245-2.996 1.567-.418.834-.295 1.67-.078 2.314.18.534.47 1.055.683 1.437v.001l.097.175.01.018C7.432 19.407 4 16.033 4 12Zm8-9.5C6.532 2.5 2 6.7 2 12s4.532 9.5 10 9.5c.401 0 .812-.04 1.166-.193.41-.176.761-.517.866-1.028.085-.416-.03-.796-.118-1.029a6 6 0 0 0-.351-.73l-.12-.215c-.215-.392-.403-.73-.52-1.078-.13-.387-.111-.614-.029-.78.146-.291.404-.473 1.178-.461.385.005.825.06 1.329.14q.226.035.47.077c.36.059.742.122 1.105.17 1.021.132 2.325.213 3.373-.439C21.496 15.22 22 13.874 22 12c0-5.3-4.532-9.5-10-9.5Zm3.5 8.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM9 12.25a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Zm1.5-2.75a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 1011 B

After

Width:  |  Height:  |  Size: 980 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 2a1 1 0 0 1 1 1v2h11a1 1 0 0 1 1 1v11h2a1 1 0 1 1 0 2h-2v2a1 1 0 1 1-2 0v-2H6a1 1 0 0 1-1-1V7H3a1 1 0 0 1 0-2h2V3a1 1 0 0 1 1-1Zm1 5v10h10V7H7Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 289 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="M12 3a1 1 0 0 1 1 1v8.086l1.793-1.793a1 1 0 1 1 1.414 1.414l-3.5 3.5a1 1 0 0 1-1.414 0l-3.5-3.5a1 1 0 1 1 1.414-1.414L11 12.086V4a1 1 0 0 1 1-1ZM4 14a1 1 0 0 1 1 1v4h14v-4a1 1 0 1 1 2 0v5a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1v-5a1 1 0 0 1 1-1Z" clip-rule="evenodd"/></svg>

After

Width:  |  Height:  |  Size: 378 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.4 9.493C4.14 10.28 4 11.124 4 12a8 8 0 1 0 10.899-7.459l-.953 3.81a1 1 0 0 1-.726.727l-3.444.866-.772 1.533a1 1 0 0 1-1.493.35L4.4 9.493Zm.883-1.84L7.756 9.51l.44-.874a1 1 0 0 1 .649-.52l3.306-.832.807-3.227a7.993 7.993 0 0 0-7.676 3.597ZM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm8.43.162a1 1 0 0 1 .77-.29l1.89.121a1 1 0 0 1 .494.168l2.869 1.928a1 1 0 0 1 .336 1.277l-.973 1.946a1 1 0 0 1-.894.553h-2.92a1 1 0 0 1-.831-.445L9.225 14.5a1 1 0 0 1 .126-1.262l1.08-1.076Zm.915 1.913.177-.177 1.171.074 1.914 1.286-.303.607h-1.766l-1.194-1.79Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M4.4 9.493C4.14 10.28 4 11.124 4 12a8 8 0 1 0 10.899-7.459l-.953 3.81a1 1 0 0 1-.726.727l-3.444.866-.772 1.533a1 1 0 0 1-1.493.35L4.4 9.493Zm.883-1.84L7.756 9.51l.44-.874a1 1 0 0 1 .649-.52l3.306-.832.807-3.227a7.99 7.99 0 0 0-7.676 3.597ZM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm8.43.162a1 1 0 0 1 .77-.29l1.89.121a1 1 0 0 1 .494.168l2.869 1.928a1 1 0 0 1 .336 1.277l-.973 1.946a1 1 0 0 1-.894.553h-2.92a1 1 0 0 1-.831-.445L9.225 14.5a1 1 0 0 1 .126-1.262l1.08-1.076Zm.915 1.913.177-.177 1.171.074 1.914 1.286-.303.607h-1.766l-1.194-1.79Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 714 B

After

Width:  |  Height:  |  Size: 713 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16ZM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm8-5a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V8a1 1 0 0 1 1-1Zm4 0a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V8a1 1 0 0 1 1-1Zm-5.894 7.803a1 1 0 0 1 1.341-.447c1.719.859 3.387.859 5.106 0a1 1 0 1 1 .894 1.788c-2.281 1.141-4.613 1.141-6.894 0a1 1 0 0 1-.447-1.341Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16ZM2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10S2 17.523 2 12Zm8-5a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V8a1 1 0 0 1 1-1Zm4 0a1 1 0 0 1 1 1v3a1 1 0 1 1-2 0V8a1 1 0 0 1 1-1Zm-5.894 7.803a1 1 0 0 1 1.341-.447c1.719.859 3.387.859 5.106 0a1 1 0 1 1 .894 1.788c-2.281 1.141-4.613 1.141-6.894 0a1 1 0 0 1-.447-1.341Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 489 B

After

Width:  |  Height:  |  Size: 490 B

@@ -1 +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 2ZM9.351 12.13c1.898-1.507 2.176-2.95 1.613-3.83a1.524 1.524 0 0 0-1.225-.707 1.562 1.562 0 0 0-1.218.53 1.561 1.561 0 0 0-1.326-.082c-.456.186-.8.588-.91 1.083-.227 1.02.527 2.282 2.826 3.048a.256.256 0 0 0 .24-.043Zm5.538.042c2.299-.766 3.053-2.027 2.826-3.048a1.524 1.524 0 0 0-.91-1.082 1.561 1.561 0 0 0-1.326.081 1.562 1.562 0 0 0-1.217-.53 1.524 1.524 0 0 0-1.226.706c-.563.881-.285 2.325 1.613 3.83.068.054.158.07.24.043Zm1.072 2.38a4 4 0 0 1-7.924 0c-.04-.293.218-.525.514-.499 2.309.206 4.587.206 6.896 0 .296-.026.555.206.514.5Z" clip-rule="evenodd"/></svg>
<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 2ZM9.351 12.13c1.898-1.507 2.176-2.95 1.613-3.83a1.52 1.52 0 0 0-1.225-.707 1.56 1.56 0 0 0-1.218.53 1.56 1.56 0 0 0-1.326-.082c-.456.186-.8.588-.91 1.083-.227 1.02.527 2.282 2.826 3.048a.26.26 0 0 0 .24-.043Zm5.538.042c2.299-.766 3.053-2.027 2.826-3.048a1.52 1.52 0 0 0-.91-1.082 1.56 1.56 0 0 0-1.326.081 1.56 1.56 0 0 0-1.217-.53 1.52 1.52 0 0 0-1.226.706c-.563.881-.285 2.325 1.613 3.83.068.054.158.07.24.043Zm1.072 2.38a4 4 0 0 1-7.924 0c-.04-.293.218-.525.514-.499 2.309.206 4.587.206 6.896 0 .296-.026.555.206.514.5Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 786 B

After

Width:  |  Height:  |  Size: 771 B

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M6.343 6.343a8 8 0 1 1 11.314 11.314A8 8 0 0 1 6.343 6.343ZM19.071 4.93c-3.905-3.905-10.237-3.905-14.142 0-3.905 3.905-3.905 10.237 0 14.142 3.905 3.905 10.237 3.905 14.142 0 3.905-3.905 3.905-10.237 0-14.142Zm-3.537 9.535a5 5 0 0 0-7.07 0 1 1 0 1 0 1.413 1.415 3 3 0 0 1 4.243 0 1 1 0 0 0 1.414-1.415ZM16 9.5c0 .828-.56 1.5-1.25 1.5s-1.25-.672-1.25-1.5.56-1.5 1.25-1.5S16 8.672 16 9.5ZM9.25 11c.69 0 1.25-.672 1.25-1.5S9.94 8 9.25 8 8 8.672 8 9.5 8.56 11 9.25 11Z" clip-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M6.343 6.343a8 8 0 1 1 11.314 11.314A8 8 0 0 1 6.343 6.343ZM19.071 4.93c-3.905-3.905-10.237-3.905-14.142 0s-3.905 10.237 0 14.142 10.237 3.905 14.142 0 3.905-10.237 0-14.142Zm-3.537 9.535a5 5 0 0 0-7.07 0 1 1 0 1 0 1.413 1.415 3 3 0 0 1 4.243 0 1 1 0 0 0 1.414-1.415ZM16 9.5c0 .828-.56 1.5-1.25 1.5s-1.25-.672-1.25-1.5.56-1.5 1.25-1.5S16 8.672 16 9.5ZM9.25 11c.69 0 1.25-.672 1.25-1.5S9.94 8 9.25 8 8 8.672 8 9.5 8.56 11 9.25 11Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 607 B

After

Width:  |  Height:  |  Size: 572 B

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