diff --git a/.github/workflows/build-submit-android.yml b/.github/workflows/build-submit-android.yml
index 051e9515..6fa177fb 100644
--- a/.github/workflows/build-submit-android.yml
+++ b/.github/workflows/build-submit-android.yml
@@ -26,9 +26,9 @@ jobs:
uses: actions/checkout@v4
- name: ๐ง Setup Node
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
- node-version: 18.x
+ node-version-file: .nvmrc
cache: yarn
- name: ๐จ Setup EAS
diff --git a/.github/workflows/build-submit-ios.yml b/.github/workflows/build-submit-ios.yml
index 0fd691bb..b6767806 100644
--- a/.github/workflows/build-submit-ios.yml
+++ b/.github/workflows/build-submit-ios.yml
@@ -28,9 +28,9 @@ jobs:
uses: actions/checkout@v4
- name: ๐ง Setup Node
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v4
with:
- node-version: 18.x
+ node-version-file: .nvmrc
cache: yarn
- name: ๐จ Setup EAS
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 508da536..9aa55ca0 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -32,12 +32,12 @@ jobs:
name: Run tests
runs-on: ubuntu-latest
steps:
- - name: Install node 18
- uses: actions/setup-node@v4
- with:
- node-version: 18
- name: Check out Git repository
uses: actions/checkout@v3
+ - name: Install node
+ uses: actions/setup-node@v4
+ with:
+ node-version-file: .nvmrc
- name: Yarn install
uses: Wandalen/wretry.action@master
with:
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 00000000..3c032078
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+18
diff --git a/Dockerfile b/Dockerfile
index 47afa61a..fcd2413c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -23,7 +23,7 @@ COPY . .
RUN mkdir --parents $NVM_DIR && \
wget \
--output-document=/tmp/nvm-install.sh \
- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh && \
+ https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh && \
bash /tmp/nvm-install.sh
RUN \. "$NVM_DIR/nvm.sh" && \
diff --git a/README.md b/README.md
index 0cbfe773..49c4b016 100644
--- a/README.md
+++ b/README.md
@@ -65,8 +65,6 @@ If you discover any security issues, please send an email to security@bsky.app.
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.
-If you're a developer interested in building on atproto, we'd love to email you a Bluesky invite code. Simply share your GitHub (or similar) profile with us via [this form](https://forms.gle/BF21oxVNZiDjDhXF9).
-
## License (MIT)
See [./LICENSE](./LICENSE) for the full license.
diff --git a/assets/icons/checkThick_stroke2_corner0_rounded.svg b/assets/icons/checkThick_stroke2_corner0_rounded.svg
new file mode 100644
index 00000000..54af3e85
--- /dev/null
+++ b/assets/icons/checkThick_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/clipboard_stroke2_corner2_rounded.svg b/assets/icons/clipboard_stroke2_corner2_rounded.svg
new file mode 100644
index 00000000..f403cfb9
--- /dev/null
+++ b/assets/icons/clipboard_stroke2_corner2_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/magnifyingGlass2_stroke2_corner0_rounded.svg b/assets/icons/magnifyingGlass2_stroke2_corner0_rounded.svg
new file mode 100644
index 00000000..2759aaf2
--- /dev/null
+++ b/assets/icons/magnifyingGlass2_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/mute_stroke2_corner0_rounded.svg b/assets/icons/mute_stroke2_corner0_rounded.svg
new file mode 100644
index 00000000..8ebecb39
--- /dev/null
+++ b/assets/icons/mute_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/assets/icons/pageText_stroke2_corner0_rounded.svg b/assets/icons/pageText_stroke2_corner0_rounded.svg
new file mode 100644
index 00000000..826a36cd
--- /dev/null
+++ b/assets/icons/pageText_stroke2_corner0_rounded.svg
@@ -0,0 +1 @@
+
diff --git a/bskyweb/README.md b/bskyweb/README.md
index c8efe044..640c30f4 100644
--- a/bskyweb/README.md
+++ b/bskyweb/README.md
@@ -6,9 +6,9 @@ To build the SPA bundle (`bundle.web.js`), first get a JavaScript development
environment set up. Either follow the top-level README, or something quick
like:
- # install nodejs 18 (specifically)
- nvm install 18
- nvm use 18
+ # install nodejs
+ nvm install
+ nvm use
npm install --global yarn
# setup tools and deps (in top level of this repo)
diff --git a/bskyweb/templates/base.html b/bskyweb/templates/base.html
index e29e4032..50fb9a2f 100644
--- a/bskyweb/templates/base.html
+++ b/bskyweb/templates/base.html
@@ -205,6 +205,11 @@
[data-tooltip]:hover::before {
display:block;
}
+
+ /* NativeDropdown component */
+ .nativeDropdown-item:focus {
+ outline: none;
+ }
{% include "scripts.html" %}
diff --git a/package.json b/package.json
index 5c31f10f..3d151603 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "bsky.app",
- "version": "1.69.0",
+ "version": "1.70.0",
"private": true,
"engines": {
"node": ">=18"
@@ -43,7 +43,7 @@
"nuke": "rm -rf ./node_modules && rm -rf ./ios && rm -rf ./android"
},
"dependencies": {
- "@atproto/api": "^0.9.5",
+ "@atproto/api": "^0.10.0",
"@bam.tech/react-native-image-resizer": "^3.0.4",
"@braintree/sanitize-url": "^6.0.2",
"@emoji-mart/react": "^1.1.1",
diff --git a/src/Navigation.tsx b/src/Navigation.tsx
index 6ca4212e..dfbe816f 100644
--- a/src/Navigation.tsx
+++ b/src/Navigation.tsx
@@ -497,7 +497,8 @@ const LINKING = {
},
])
} else {
- return buildStateObject('Flat', name, params)
+ const res = buildStateObject('Flat', name, params)
+ return res
}
},
}
diff --git a/src/Splash.tsx b/src/Splash.tsx
index b2381f92..42a21c08 100644
--- a/src/Splash.tsx
+++ b/src/Splash.tsx
@@ -181,6 +181,8 @@ export function Splash(props: React.PropsWithChildren) {
const logoAnimations =
reduceMotion === true ? reducedLogoAnimation : logoAnimation
+ // special off-spec color for dark mode
+ const logoBg = isDarkMode ? '#0F1824' : '#fff'
return (
@@ -232,7 +234,7 @@ export function Splash(props: React.PropsWithChildren) {
},
]}>
@@ -253,7 +255,7 @@ export function Splash(props: React.PropsWithChildren) {
transform: [{translateY: -(insets.top / 2)}, {scale: 0.1}], // scale from 1000px to 100px
},
]}>
-
+
}>
{!isAnimationComplete && (
@@ -261,10 +263,7 @@ export function Splash(props: React.PropsWithChildren) {
style={[
StyleSheet.absoluteFillObject,
{
- backgroundColor: isDarkMode
- ? // special off-spec color for dark mode
- '#0F1824'
- : '#fff',
+ backgroundColor: logoBg,
},
]}
/>
diff --git a/src/alf/atoms.ts b/src/alf/atoms.ts
index 18f492d6..fff3a4d8 100644
--- a/src/alf/atoms.ts
+++ b/src/alf/atoms.ts
@@ -1,3 +1,4 @@
+import {web, native} from '#/alf/util/platform'
import * as tokens from '#/alf/tokens'
export const atoms = {
@@ -113,6 +114,9 @@ export const atoms = {
flex_wrap: {
flexWrap: 'wrap',
},
+ flex_0: {
+ flex: web('0 0 auto') || (native(0) as number),
+ },
flex_1: {
flex: 1,
},
diff --git a/src/components/Dialog/index.web.tsx b/src/components/Dialog/index.web.tsx
index 79441fb5..fa29fbd6 100644
--- a/src/components/Dialog/index.web.tsx
+++ b/src/components/Dialog/index.web.tsx
@@ -188,7 +188,7 @@ export function Close() {