Repository: raycast/extensions
Pull request #17542: Update 1bookmark extension
Author: login: 1bookmark-bot
Labels: name: extension fix / improvement
description: Label for PRs with extension's fix improvements
name: OP is author
description: The OP of the PR is the author of the extension
name: extension: 1bookmark
description: Issues related to the 1bookmark extension
Created: 2025-03-04T17:46:26Z | Merged: 2025-03-04T21:00:56Z

## Description

- When there was a simple network error (e.g. when 1bookmark extension was turned on while not connected to wifi), the login token was cleared, but now it is cleared only when a 401 error is received, improving the login ux.
- I organized the logout judgment code.
- Removed members from contribution who did not contribute to the raycast code.
- `@raycast/*` packages have been updated.

## Screencast

This is a PR without any UI changes.

## Checklist

- [x] I read the [extension guidelines](https://developers.raycast.com/basics/prepare-an-extension-for-store)
- [x] I read the [documentation about publishing](https://developers.raycast.com/basics/publish-an-extension)
- [x] I ran `npm run build` and [tested this distribution build in Raycast](https://developers.raycast.com/basics/prepare-an-extension-for-store#metadata-and-configuration)
- [x] I checked that files in the `assets` folder are used by the extension itself
- [x] I checked that assets used by the `README` are placed outside of the `metadata` folder



Diff:
diff --git a/extensions/1bookmark/CHANGELOG.md b/extensions/1bookmark/CHANGELOG.md
index bc4b2e5cd85..8ad387e58ca 100644
--- a/extensions/1bookmark/CHANGELOG.md
+++ b/extensions/1bookmark/CHANGELOG.md
@@ -1,5 +1,11 @@
 # 1bookmark Changelog
 
+## [Sign In UX Improvement] - 2025-03-04
+
+- 0.5.1
+- 📱 Sign in UX improvement. We no longer clear tokens when there is a simple network error.
+- 💻 The code for determining whether or not a user is signed out has been neatly organized.
+
 ## [Space Detail View and Official Domain] - 2025-03-04
 
 - 0.5.0
diff --git a/extensions/1bookmark/package-lock.json b/extensions/1bookmark/package-lock.json
index 53093384886..fe65255bf1d 100644
--- a/extensions/1bookmark/package-lock.json
+++ b/extensions/1bookmark/package-lock.json
@@ -7,8 +7,8 @@
       "name": "1bookmark",
       "license": "MIT",
       "dependencies": {
-        "@raycast/api": "^1.89.1",
-        "@raycast/utils": "^1.18.1",
+        "@raycast/api": "^1.93.1",
+        "@raycast/utils": "^1.19.0",
         "@tanstack/query-async-storage-persister": "^5.54.1",
         "@tanstack/react-query": "^5.55.0",
         "@tanstack/react-query-persist-client": "^5.55.0",
@@ -35,9 +35,9 @@
       }
     },
     "node_modules/@esbuild/aix-ppc64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
-      "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
+      "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
       "cpu": [
         "ppc64"
       ],
@@ -51,9 +51,9 @@
       }
     },
     "node_modules/@esbuild/android-arm": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
-      "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
+      "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
       "cpu": [
         "arm"
       ],
@@ -67,9 +67,9 @@
       }
     },
     "node_modules/@esbuild/android-arm64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
-      "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
+      "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
       "cpu": [
         "arm64"
       ],
@@ -83,9 +83,9 @@
       }
     },
     "node_modules/@esbuild/android-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
-      "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
+      "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
       "cpu": [
         "x64"
       ],
@@ -99,9 +99,9 @@
       }
     },
     "node_modules/@esbuild/darwin-arm64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
-      "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
+      "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
       "cpu": [
         "arm64"
       ],
@@ -115,9 +115,9 @@
       }
     },
     "node_modules/@esbuild/darwin-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
-      "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
+      "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
       "cpu": [
         "x64"
       ],
@@ -131,9 +131,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-arm64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
-      "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
+      "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
       "cpu": [
         "arm64"
       ],
@@ -147,9 +147,9 @@
       }
     },
     "node_modules/@esbuild/freebsd-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
-      "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
+      "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
       "cpu": [
         "x64"
       ],
@@ -163,9 +163,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
-      "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
+      "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
       "cpu": [
         "arm"
       ],
@@ -179,9 +179,9 @@
       }
     },
     "node_modules/@esbuild/linux-arm64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
-      "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
+      "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
       "cpu": [
         "arm64"
       ],
@@ -195,9 +195,9 @@
       }
     },
     "node_modules/@esbuild/linux-ia32": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
-      "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
+      "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
       "cpu": [
         "ia32"
       ],
@@ -211,9 +211,9 @@
       }
     },
     "node_modules/@esbuild/linux-loong64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
-      "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
+      "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
       "cpu": [
         "loong64"
       ],
@@ -227,9 +227,9 @@
       }
     },
     "node_modules/@esbuild/linux-mips64el": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
-      "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
+      "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
       "cpu": [
         "mips64el"
       ],
@@ -243,9 +243,9 @@
       }
     },
     "node_modules/@esbuild/linux-ppc64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
-      "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
+      "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
       "cpu": [
         "ppc64"
       ],
@@ -259,9 +259,9 @@
       }
     },
     "node_modules/@esbuild/linux-riscv64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
-      "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
+      "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
       "cpu": [
         "riscv64"
       ],
@@ -275,9 +275,9 @@
       }
     },
     "node_modules/@esbuild/linux-s390x": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
-      "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
+      "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
       "cpu": [
         "s390x"
       ],
@@ -291,9 +291,9 @@
       }
     },
     "node_modules/@esbuild/linux-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
-      "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
+      "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
       "cpu": [
         "x64"
       ],
@@ -307,9 +307,9 @@
       }
     },
     "node_modules/@esbuild/netbsd-arm64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
-      "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
+      "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
       "cpu": [
         "arm64"
       ],
@@ -323,9 +323,9 @@
       }
     },
     "node_modules/@esbuild/netbsd-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
-      "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
+      "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
       "cpu": [
         "x64"
       ],
@@ -339,9 +339,9 @@
       }
     },
     "node_modules/@esbuild/openbsd-arm64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
-      "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
+      "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
       "cpu": [
         "arm64"
       ],
@@ -355,9 +355,9 @@
       }
     },
     "node_modules/@esbuild/openbsd-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
-      "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
+      "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
       "cpu": [
         "x64"
       ],
@@ -371,9 +371,9 @@
       }
     },
     "node_modules/@esbuild/sunos-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
-      "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
+      "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
       "cpu": [
         "x64"
       ],
@@ -387,9 +387,9 @@
       }
     },
     "node_modules/@esbuild/win32-arm64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
-      "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
+      "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
       "cpu": [
         "arm64"
       ],
@@ -403,9 +403,9 @@
       }
     },
     "node_modules/@esbuild/win32-ia32": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
-      "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
+      "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
       "cpu": [
         "ia32"
       ],
@@ -419,9 +419,9 @@
       }
     },
     "node_modules/@esbuild/win32-x64": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
-      "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
+      "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
       "cpu": [
         "x64"
       ],
@@ -941,9 +941,9 @@
       }
     },
     "node_modules/@raycast/api": {
-      "version": "1.89.1",
-      "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.89.1.tgz",
-      "integrity": "sha512-jSHadwfQuUvg9HDOnhRHoiUGTPVvyBxC7dhlZSPhwJ9odiKtsTk8F8ei0lB3i2wJLmUa9y/pzv5euWGuX1L/OQ==",
+      "version": "1.93.1",
+      "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.93.1.tgz",
+      "integrity": "sha512-0hT0LqV/8QwM928ZQplEvdRr13lWtG1dB+VPfypEoPG0JQp+4MPZqzRt3hibzacnvOFC5geFHgoavmo9GTeRYg==",
       "license": "MIT",
       "dependencies": {
         "@oclif/core": "^4.0.33",
@@ -952,7 +952,7 @@
         "@oclif/plugin-not-found": "^3.2.28",
         "@types/node": "20.8.10",
         "@types/react": "18.3.3",
-        "esbuild": "^0.24.0",
+        "esbuild": "^0.25.0",
         "react": "18.3.1"
       },
       "bin": {
@@ -1023,9 +1023,9 @@
       }
     },
     "node_modules/@raycast/utils": {
-      "version": "1.18.1",
-      "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.18.1.tgz",
-      "integrity": "sha512-fNrybWovB5WSiotqrExMNVWtODH5DATFMvqJboIjwM2X8Ddvgt7tkf2Ol0vA0UBDVaGwDV+jpX/ZBhMnjz5TzQ==",
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.19.0.tgz",
+      "integrity": "sha512-+wp5E/HyLJWKUYi3RMPInT/8VWyXJ8Ib6o/9rVqEqIf7pW6S9sVLBIWA2kbQ7paQ+fYmFeWUabFYa5qRvH3how==",
       "license": "MIT",
       "dependencies": {
         "cross-fetch": "^3.1.6",
@@ -1977,9 +1977,9 @@
       "license": "MIT"
     },
     "node_modules/esbuild": {
-      "version": "0.24.2",
-      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
-      "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz",
+      "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
       "hasInstallScript": true,
       "license": "MIT",
       "bin": {
@@ -1989,31 +1989,31 @@
         "node": ">=18"
       },
       "optionalDependencies": {
-        "@esbuild/aix-ppc64": "0.24.2",
-        "@esbuild/android-arm": "0.24.2",
-        "@esbuild/android-arm64": "0.24.2",
-        "@esbuild/android-x64": "0.24.2",
-        "@esbuild/darwin-arm64": "0.24.2",
-        "@esbuild/darwin-x64": "0.24.2",
-        "@esbuild/freebsd-arm64": "0.24.2",
-        "@esbuild/freebsd-x64": "0.24.2",
-        "@esbuild/linux-arm": "0.24.2",
-        "@esbuild/linux-arm64": "0.24.2",
-        "@esbuild/linux-ia32": "0.24.2",
-        "@esbuild/linux-loong64": "0.24.2",
-        "@esbuild/linux-mips64el": "0.24.2",
-        "@esbuild/linux-ppc64": "0.24.2",
-        "@esbuild/linux-riscv64": "0.24.2",
-        "@esbuild/linux-s390x": "0.24.2",
-        "@esbuild/linux-x64": "0.24.2",
-        "@esbuild/netbsd-arm64": "0.24.2",
-        "@esbuild/netbsd-x64": "0.24.2",
-        "@esbuild/openbsd-arm64": "0.24.2",
-        "@esbuild/openbsd-x64": "0.24.2",
-        "@esbuild/sunos-x64": "0.24.2",
-        "@esbuild/win32-arm64": "0.24.2",
-        "@esbuild/win32-ia32": "0.24.2",
-        "@esbuild/win32-x64": "0.24.2"
+        "@esbuild/aix-ppc64": "0.25.0",
+        "@esbuild/android-arm": "0.25.0",
+        "@esbuild/android-arm64": "0.25.0",
+        "@esbuild/android-x64": "0.25.0",
+        "@esbuild/darwin-arm64": "0.25.0",
+        "@esbuild/darwin-x64": "0.25.0",
+        "@esbuild/freebsd-arm64": "0.25.0",
+        "@esbuild/freebsd-x64": "0.25.0",
+        "@esbuild/linux-arm": "0.25.0",
+        "@esbuild/linux-arm64": "0.25.0",
+        "@esbuild/linux-ia32": "0.25.0",
+        "@esbuild/linux-loong64": "0.25.0",
+        "@esbuild/linux-mips64el": "0.25.0",
+        "@esbuild/linux-ppc64": "0.25.0",
+        "@esbuild/linux-riscv64": "0.25.0",
+        "@esbuild/linux-s390x": "0.25.0",
+        "@esbuild/linux-x64": "0.25.0",
+        "@esbuild/netbsd-arm64": "0.25.0",
+        "@esbuild/netbsd-x64": "0.25.0",
+        "@esbuild/openbsd-arm64": "0.25.0",
+        "@esbuild/openbsd-x64": "0.25.0",
+        "@esbuild/sunos-x64": "0.25.0",
+        "@esbuild/win32-arm64": "0.25.0",
+        "@esbuild/win32-ia32": "0.25.0",
+        "@esbuild/win32-x64": "0.25.0"
       }
     },
     "node_modules/escape-string-regexp": {
diff --git a/extensions/1bookmark/package.json b/extensions/1bookmark/package.json
index bef141acaa5..8ad04c70b99 100644
--- a/extensions/1bookmark/package.json
+++ b/extensions/1bookmark/package.json
@@ -9,8 +9,7 @@
   "author": "onebookmark",
   "contributors": [
     "b6pzeusbc54tvhw5jgpyw8pwz2x6gs",
-    "lee_juwon",
-    "naru200"
+    "lee_juwon"
   ],
   "categories": [
     "Productivity",
@@ -35,8 +34,8 @@
   ],
   "preferences": [],
   "dependencies": {
-    "@raycast/api": "^1.89.1",
-    "@raycast/utils": "^1.18.1",
+    "@raycast/api": "^1.93.1",
+    "@raycast/utils": "^1.19.0",
     "@tanstack/query-async-storage-persister": "^5.54.1",
     "@tanstack/react-query": "^5.55.0",
     "@tanstack/react-query-persist-client": "^5.55.0",
diff --git a/extensions/1bookmark/src/add-bookmark.tsx b/extensions/1bookmark/src/add-bookmark.tsx
index 5ae3378b7c0..4968440dd12 100644
--- a/extensions/1bookmark/src/add-bookmark.tsx
+++ b/extensions/1bookmark/src/add-bookmark.tsx
@@ -11,6 +11,7 @@ import {
   showHUD,
   getFrontmostApplication,
   Keyboard,
+  Cache,
 } from "@raycast/api";
 import { runAppleScript } from "@raycast/utils";
 import { useAtom } from "jotai";
@@ -23,6 +24,8 @@ import { LoginView } from "./views/LoginView";
 import { NewTagForm } from "./views/NewTagForm";
 import { useMe } from "./hooks/use-me.hook";
 
+const cache = new Cache();
+
 interface ScriptsPerBrowser {
   getURL: () => Promise<string>;
   getTitle: () => Promise<string>;
@@ -145,7 +148,7 @@ function Body(props: { onlyPop?: boolean }) {
   const [title, setTitle] = useState<string>("");
   const [url, setUrl] = useState<string>("");
   const [description, setDescription] = useState<string>("");
-  const [sessionToken, setSessionToken] = useAtom(sessionTokenAtom);
+  const [sessionToken] = useAtom(sessionTokenAtom);
   const [selectedSpace, setSelectedSpace] = useAtom(recentSelectedSpaceAtom);
   const [selectedTags, setSelectedTags] = useAtom(recentSelectedTagsAtom);
 
@@ -199,21 +202,21 @@ function Body(props: { onlyPop?: boolean }) {
   };
 
   const [after1Sec, setAfter1Sec] = useState(false);
-
   useEffect(() => {
     // If this is not here, will briefly appear.
     setTimeout(() => setAfter1Sec(true), 1000);
   }, []);
 
+  const loggedOutStatus = !sessionToken && after1Sec;
   useEffect(() => {
-    if (!me.error) return;
-
-    // Login failed maybe due to token expiration.
-    // Clear sessionToken and send to LoginView.
-    setSessionToken("");
-  }, [me.error, setSessionToken]);
+    // Clear data when logged out.
+    if (loggedOutStatus) {
+      cache.remove("me");
+      cache.remove("bookmarks");
+    }
+  }, [loggedOutStatus]);
 
-  if (!sessionToken && after1Sec) {
+  if (loggedOutStatus) {
     return <LoginView />;
   }
 
diff --git a/extensions/1bookmark/src/hooks/use-me.hook.ts b/extensions/1bookmark/src/hooks/use-me.hook.ts
index d81e9cb3fc7..6196257243f 100644
--- a/extensions/1bookmark/src/hooks/use-me.hook.ts
+++ b/extensions/1bookmark/src/hooks/use-me.hook.ts
@@ -1,10 +1,13 @@
-import { Cache } from "@raycast/api";
+import { Cache, showToast, Toast } from "@raycast/api";
 import { RouterOutputs, trpc } from "@/utils/trpc.util";
 import { useEffect } from "react";
+import { useAtom } from "jotai";
+import { sessionTokenAtom } from "../states/session-token.state";
 
 const cache = new Cache();
 
 export const useMe = (sessionToken: string) => {
+  const [, setSessionToken] = useAtom(sessionTokenAtom);
   const me = trpc.user.me.useQuery(undefined, {
     enabled: !!sessionToken,
 
@@ -30,5 +33,27 @@ export const useMe = (sessionToken: string) => {
     cache.set("me", JSON.stringify(me.data));
   }, [me.data]);
 
+  useEffect(() => {
+    if (!me.error) return;
+
+    if (me.error.shape?.data.httpStatus !== 401) {
+      showToast({
+        style: Toast.Style.Failure,
+        title: "Login failed",
+        message: "Try again later",
+      });
+      return;
+    }
+
+    // Login failed maybe due to token expiration.
+    // Clear sessionToken and send to LoginView.
+    setSessionToken("");
+    showToast({
+      style: Toast.Style.Failure,
+      title: "Login required",
+      message: "Please login again",
+    });
+  }, [me.error, setSessionToken]);
+
   return me;
 };
diff --git a/extensions/1bookmark/src/search-bookmarks.tsx b/extensions/1bookmark/src/search-bookmarks.tsx
index 0ebb09b2a4d..d20b830fb9c 100644
--- a/extensions/1bookmark/src/search-bookmarks.tsx
+++ b/extensions/1bookmark/src/search-bookmarks.tsx
@@ -1,6 +1,5 @@
 import { List, Cache, ActionPanel, Action, Icon } from "@raycast/api";
 import { CachedQueryClientProvider } from "./components/CachedQueryClientProvider";
-import { trpc } from "@/utils/trpc.util";
 import { useAtom } from "jotai";
 import { useCallback, useEffect, useMemo, useState } from "react";
 import { sessionTokenAtom } from "@/states/session-token.state";
@@ -17,9 +16,9 @@ import { RequiredActions } from "./components/BookmarkItemActionPanel";
 const cache = new Cache();
 
 export function Body() {
-  const [sessionToken, setSessionToken] = useAtom(sessionTokenAtom);
-  const trpcUtils = trpc.useUtils();
+  const [sessionToken] = useAtom(sessionTokenAtom);
   const me = useMe(sessionToken);
+  const [keyword, setKeyword] = useState("");
 
   const spaceIds = useMemo(() => {
     return me?.data?.associatedSpaces.map((s) => s.id) || [];
@@ -43,33 +42,6 @@ export function Body() {
     setTimeout(() => setAfter1Sec(true), 1000);
   }, [refetchBookmarks]);
 
-  const [after1Sec, setAfter1Sec] = useState(false);
-
-  useEffect(() => {
-    // If this is not here, LoginView will briefly appear.
-    setTimeout(() => setAfter1Sec(true), 1000);
-  }, []);
-
-  useEffect(() => {
-    if (!me.error) return;
-
-    // Login failed maybe due to token expiration.
-    // Clear sessionToken and send to LoginView.
-    setSessionToken("");
-  }, [me.error, setSessionToken]);
-
-  useEffect(() => {
-    // Clear data when logging out.
-    if (sessionToken) return;
-    if (!me.data && !data) return;
-    if (!after1Sec) return;
-
-    cache.remove("me");
-    cache.remove("bookmarks");
-  }, [sessionToken, trpcUtils, spaceIds, me.data, data, after1Sec]);
-
-  const [keyword, setKeyword] = useState("");
-
   const selectedTags = useMemo(() => {
     if (!me.data) return [];
 
@@ -113,7 +85,22 @@ export function Body() {
     };
   }, [searchInTags, searchInUntagged, keyword, taggedBookmarks, untaggedBookmarks]);
 
-  if (!sessionToken && after1Sec) {
+  const [after1Sec, setAfter1Sec] = useState(false);
+  useEffect(() => {
+    // If this is not here, LoginView will briefly appear.
+    setTimeout(() => setAfter1Sec(true), 1000);
+  }, []);
+
+  const loggedOutStatus = !sessionToken && after1Sec;
+  useEffect(() => {
+    // Clear data when logged out.
+    if (loggedOutStatus) {
+      cache.remove("me");
+      cache.remove("bookmarks");
+    }
+  }, [loggedOutStatus]);
+
+  if (loggedOutStatus) {
     return <LoginView />;
   }
 


Reviews:
user: login: greptile-apps[bot]
body: 
## PR Summary

This PR updates the 1bookmark extension with improved session management, error handling, and authentication flow, particularly focusing on better token handling during network errors.

- Missing `metadata` folder with screenshots which is required since there are `view` commands in `package.json`
- `launchCommand` in `add-bookmark.tsx` and `search-bookmarks.tsx` should be wrapped in try-catch blocks
- Consider using `showFailureToast` from `@raycast/utils` instead of `showToast` with `Toast.Style.Failure` in `use-me.hook.ts`
- Lists in `search-bookmarks.tsx` should use `isLoading` prop to avoid empty state flicker
- Contributor 'naru200' was removed from `package.json` - please confirm if this was intentional

<sub>💡 (3/5) Reply to the bot's comments like "Can you suggest a fix for this @greptileai?" or ask follow-up questions!</sub>

<sub>5 file(s) reviewed, 2 comment(s)</sub>
<sub>[Edit PR Review Bot Settings](https://app.greptile.com/review/github) | [Greptile](https://greptile.com?utm_source=greptile_expert&utm_medium=github&utm_campaign=code_reviews&utm_content=extensions_17542)</sub>
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-04T17:51:19Z
user: login: 1bookmark-bot
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-04T17:55:19Z
user: login: 1bookmark-bot
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-04T17:55:23Z
user: login: pernielsentikaer
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-04T20:57:44Z
user: login: pernielsentikaer
body: Hi 👋 

Looks good to me, approved 🔥
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-04T20:58:41Z

Review comments:
diff_hunk: @@ -30,5 +33,27 @@ export const useMe = (sessionToken: string) => {
     cache.set("me", JSON.stringify(me.data));
   }, [me.data]);
 
+  useEffect(() => {
+    if (!me.error) return;
+
+    if (me.error.shape?.data.httpStatus !== 401) {
+      showToast({
+        style: Toast.Style.Failure,
+        title: "Login failed",
+        message: "Try again later",
+      });
+      return;
+    }
path: extensions/1bookmark/src/hooks/use-me.hook.ts
user: login: greptile-apps[bot]
body: style: Could be simplified using `showFailureToast` from `@raycast/utils`

```suggestion
    if (me.error.shape?.data.httpStatus !== 401) {
      showFailureToast("Login failed", "Try again later");
      return;
    }
```
created_at: 2025-03-04T17:49:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -30,5 +33,27 @@ export const useMe = (sessionToken: string) => {
     cache.set("me", JSON.stringify(me.data));
   }, [me.data]);
 
+  useEffect(() => {
+    if (!me.error) return;
+
+    if (me.error.shape?.data.httpStatus !== 401) {
+      showToast({
+        style: Toast.Style.Failure,
+        title: "Login failed",
+        message: "Try again later",
+      });
+      return;
+    }
+
+    // Login failed maybe due to token expiration.
+    // Clear sessionToken and send to LoginView.
+    setSessionToken("");
+    showToast({
+      style: Toast.Style.Failure,
+      title: "Login required",
+      message: "Please login again",
+    });
+  }, [me.error, setSessionToken]);
path: extensions/1bookmark/src/hooks/use-me.hook.ts
user: login: greptile-apps[bot]
body: style: Could be simplified using `showFailureToast` from `@raycast/utils`

```suggestion
    showFailureToast("Login required", "Please login again");
  }, [me.error, setSessionToken]);
```
created_at: 2025-03-04T17:49:07Z
author_association: CONTRIBUTOR
diff_hunk: @@ -30,5 +33,27 @@ export const useMe = (sessionToken: string) => {
     cache.set("me", JSON.stringify(me.data));
   }, [me.data]);
 
+  useEffect(() => {
+    if (!me.error) return;
+
+    if (me.error.shape?.data.httpStatus !== 401) {
+      showToast({
+        style: Toast.Style.Failure,
+        title: "Login failed",
+        message: "Try again later",
+      });
+      return;
+    }
path: extensions/1bookmark/src/hooks/use-me.hook.ts
user: login: 1bookmark-bot
body: @greptile-apps Good review! But the current code doesn't seem that verbose. Can I improve it later?
created_at: 2025-03-04T17:55:19Z
author_association: CONTRIBUTOR
diff_hunk: @@ -30,5 +33,27 @@ export const useMe = (sessionToken: string) => {
     cache.set("me", JSON.stringify(me.data));
   }, [me.data]);
 
+  useEffect(() => {
+    if (!me.error) return;
+
+    if (me.error.shape?.data.httpStatus !== 401) {
+      showToast({
+        style: Toast.Style.Failure,
+        title: "Login failed",
+        message: "Try again later",
+      });
+      return;
+    }
+
+    // Login failed maybe due to token expiration.
+    // Clear sessionToken and send to LoginView.
+    setSessionToken("");
+    showToast({
+      style: Toast.Style.Failure,
+      title: "Login required",
+      message: "Please login again",
+    });
+  }, [me.error, setSessionToken]);
path: extensions/1bookmark/src/hooks/use-me.hook.ts
user: login: 1bookmark-bot
body: @greptile-apps Good review! But the current code doesn't seem that verbose. Can I improve it later?
created_at: 2025-03-04T17:55:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -30,5 +33,27 @@ export const useMe = (sessionToken: string) => {
     cache.set("me", JSON.stringify(me.data));
   }, [me.data]);
 
+  useEffect(() => {
+    if (!me.error) return;
+
+    if (me.error.shape?.data.httpStatus !== 401) {
+      showToast({
+        style: Toast.Style.Failure,
+        title: "Login failed",
+        message: "Try again later",
+      });
+      return;
+    }
path: extensions/1bookmark/src/hooks/use-me.hook.ts
user: login: pernielsentikaer
body: Yes 🙂
created_at: 2025-03-04T20:57:44Z
author_association: COLLABORATOR

PR comments:
user: login: raycastbot
created_at: 2025-03-04T17:46:49Z
body: Thank you for the update! :tada:

Due to our current reduced availability, the initial review may take up to 10-15 business days
author_association: COLLABORATOR
user: login: github-actions[bot]
created_at: 2025-03-04T21:01:54Z
body: <!-- add-pr-comment:add-pr-comment -->

**Published to the Raycast Store:**
https://raycast.com/onebookmark/1bookmark
author_association: CONTRIBUTOR
user: login: raycastbot
created_at: 2025-03-04T21:01:56Z
body: :tada: :tada: :tada:

Such a great contribution deserves a reward, but unfortunately we couldn't find your Raycast account based on your GitHub username (@1bookmark-bot).
Please [link your GitHub account to your Raycast account](https://www.raycast.com/settings/account) to receive your credits and soon be able to exchange them for some swag.
author_association: COLLABORATOR