browser-cookie-bridge 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,15 +4,16 @@
4
4
 
5
5
  <h1>Browser Cookie Bridge</h1>
6
6
 
7
- <strong>Move cookies and signed-in sessions between browserslocally on your Mac.</strong>
7
+ <strong>Move signed-in sessions locallyor explicitly upload one to Browserless Cloud.</strong>
8
8
 
9
- <p>Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Comet · browser-to-browser transfer · import into ChatGPT Codex.</p>
9
+ <p>Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Comet · ChatGPT Codex import · optional Browserless authenticated profiles.</p>
10
10
 
11
11
  <p>
12
- <img src="https://img.shields.io/badge/macOS-13%2B-111111?logo=apple&logoColor=white" alt="macOS 13+" />
12
+ <img src="https://img.shields.io/badge/macOS-13.5%2B-111111?logo=apple&logoColor=white" alt="macOS 13.5+" />
13
13
  <img src="https://img.shields.io/badge/Swift-6-8E2735?logo=swift&logoColor=white" alt="Swift 6" />
14
- <img src="https://img.shields.io/badge/Node.js-22.5%2B-3C873A?logo=nodedotjs&logoColor=white" alt="Node.js 22.5+" />
15
- <img src="https://img.shields.io/badge/local--first-no%20cloud-C68B3C" alt="Local-first, no cloud" />
14
+ <img src="https://img.shields.io/badge/Node.js-24%2B-3C873A?logo=nodedotjs&logoColor=white" alt="Node.js 24+" />
15
+ <a href="https://www.npmjs.com/package/browser-cookie-bridge"><img src="https://img.shields.io/npm/v/browser-cookie-bridge?logo=npm&color=CB3837" alt="browser-cookie-bridge on npm" /></a>
16
+ <img src="https://img.shields.io/badge/local--first-cloud%20optional-C68B3C" alt="Local-first, cloud optional" />
16
17
  <img src="https://img.shields.io/github/stars/apoorvdarshan/browser-cookie-bridge?logo=github&color=C68B3C" alt="GitHub stars" />
17
18
  <a href="https://www.producthunt.com/products/browser-cookie-bridge"><img src="https://img.shields.io/badge/Product%20Hunt-View%20launch-DA552F?logo=producthunt&logoColor=white" alt="Browser Cookie Bridge on Product Hunt" /></a>
18
19
  <img src="https://img.shields.io/badge/license-MIT-3DA639" alt="MIT License" />
@@ -20,6 +21,8 @@
20
21
 
21
22
  <p>
22
23
  <a href="#installation"><b>Install</b></a> ·
24
+ <a href="https://github.com/apoorvdarshan/browser-cookie-bridge/releases/latest">DMG</a> ·
25
+ <a href="https://www.npmjs.com/package/browser-cookie-bridge">npm</a> ·
23
26
  <a href="#how-it-works">How it works</a> ·
24
27
  <a href="#security--privacy">Security</a> ·
25
28
  <a href="CONTRIBUTING.md">Contribute</a> ·
@@ -28,7 +31,10 @@
28
31
  <a href="#support">Support</a>
29
32
  </p>
30
33
 
31
- <p><code>npm run build:app</code></p>
34
+ <p>
35
+ <a href="https://github.com/apoorvdarshan/browser-cookie-bridge/releases/latest/download/Browser-Cookie-Bridge-arm64.dmg"><b>Download for Apple silicon</b></a>
36
+ · <a href="https://github.com/apoorvdarshan/browser-cookie-bridge/releases/latest/download/Browser-Cookie-Bridge-x64.dmg">Download for Intel</a>
37
+ </p>
32
38
 
33
39
  <br />
34
40
 
@@ -38,24 +44,25 @@
38
44
 
39
45
  ---
40
46
 
41
- > **Status local beta.** The native app and transfer engine work locally; the first public npm release has not been published yet. Importing into ChatGPT Codex is an intentionally unsupported direct integration and requires Codex to be completely closed.
47
+ > **Version 1.2.0 adds an optional Browserless Cloud destination.** It is destination-only, manual-only, and visually separated from local transfers. Importing into ChatGPT Codex remains an intentionally unsupported direct integration and requires Codex to be completely closed.
42
48
 
43
49
  ## Why Browser Cookie Bridge
44
50
 
45
51
  Signing into the same sites across several browsers is repetitive. Export files are awkward, password managers do not move active sessions, and ChatGPT Codex does not currently offer a Brave import button.
46
52
 
47
- Browser Cookie Bridge gives those local browser profiles a small, native control panel. Pick where data comes from, pick where it goes, choose cookies or history, and sync. Transfers stay on the Mac you are using.
53
+ Browser Cookie Bridge gives those browser profiles a small, native control panel. Local browser and Codex transfers stay on the Mac. If you explicitly select Browserless Cloud and click Upload, the app can instead send authenticated profile state to your own Browserless account.
48
54
 
49
55
  ## Features
50
56
 
51
57
  - 🍪 **Cookie and session transfer** — cookies are enabled by default, including supported domain, path, expiry, security, `SameSite`, and partition attributes.
52
58
  - 🌐 **Seven Chromium browsers** — Brave, Chrome, Edge, Arc, Vivaldi, Opera, and Perplexity Comet can be sources or destinations.
53
59
  - ✨ **ChatGPT Codex import** — merge selected local browser data into Codex's built-in browser; Codex is destination-only.
60
+ - ☁️ **Optional Browserless upload** — create or refresh a Browserless authenticated profile with cookies, local storage, and IndexedDB; Browserless is destination-only and manual-only.
54
61
  - 🕘 **Background automation** — sync when you sign in, at a fixed daily time, or whenever you choose.
55
62
  - ◉ **Native menu-bar app** — closing the window removes the Dock icon while the helper continues running.
56
63
  - 🧯 **Backup and rollback** — Codex's database is backed up, modified on a separate copy, integrity-checked, and restored if replacement fails.
57
- - ⬆️ **Built-in updates** — automatically checks npm release metadata and can install an update and relaunch the app.
58
- - 🔒 **Local-first** — no account, analytics, cloud service, cookie logs, or remote relay.
64
+ - ⬆️ **Built-in updates** — checks for GitHub releases, verifies the DMG checksum, installs in place, and relaunches the app.
65
+ - 🔒 **Local-first** — local paths use no account, analytics, cookie logs, or remote relay; the separate Browserless path runs only after explicit selection and confirmation.
59
66
 
60
67
  ## What it transfers
61
68
 
@@ -63,6 +70,7 @@ Browser Cookie Bridge gives those local browser profiles a small, native control
63
70
  |---|---:|---|
64
71
  | **Cookies and sessions** | ✅ Default | Transfers supported cookie values and attributes |
65
72
  | **History URLs** | ◐ Optional | Original visit times and page titles cannot be preserved |
73
+ | **Local storage and IndexedDB** | ◐ Browserless only | Included only in an explicit Browserless authenticated-profile upload |
66
74
  | **Passwords** | — Never | Chromium extensions cannot read the browser password store |
67
75
  | **Bookmarks, autofill, payments** | — Never | Not requested or accessed |
68
76
  | **iCloud Keychain** | — Never | Remains completely separate |
@@ -71,27 +79,23 @@ Some websites bind sessions to a specific device or browser and may ask you to s
71
79
 
72
80
  ## Requirements
73
81
 
74
- - **macOS 13 (Ventura)+**
75
- - **Node.js 22.5+**
76
- - **Xcode Command Line Tools** — install with `xcode-select --install`
82
+ - **macOS 13.5+**
77
83
  - A supported Chromium browser, or ChatGPT Codex as the destination
78
84
 
85
+ The DMG is self-contained. Node.js 24+ and Xcode Command Line Tools are required only for npm or source installation.
86
+
79
87
  ## Installation
80
88
 
81
- ### From source
89
+ ### Download a DMG — recommended
82
90
 
83
- ```bash
84
- git clone https://github.com/apoorvdarshan/browser-cookie-bridge.git
85
- cd browser-cookie-bridge
86
- npm test
87
- npm run build:app
88
- ```
91
+ - **[Apple silicon DMG](https://github.com/apoorvdarshan/browser-cookie-bridge/releases/latest/download/Browser-Cookie-Bridge-arm64.dmg)** — M1, M2, M3, M4, and newer
92
+ - **[Intel DMG](https://github.com/apoorvdarshan/browser-cookie-bridge/releases/latest/download/Browser-Cookie-Bridge-x64.dmg)** — Intel-based Macs
89
93
 
90
- The final command compiles the native SwiftUI app, enables **Open at login**, **Sync at login**, and the **menu-bar helper**, then launches it. A first install uses `~/Applications/Browser Cookie Bridge.app` without requesting administrator access. If an existing `/Applications/Browser Cookie Bridge.app` is present, later builds and updates keep using that system Applications copy instead of creating a duplicate. Daily sync stays off until you enable it.
94
+ Open the DMG, drag **Browser Cookie Bridge** onto **Applications**, then open it from Applications. The current public build is checksum-verified and ad-hoc signed but not Apple-notarized, so macOS may require **Control-click Open** on first launch. It does not require Node.js, Xcode, Terminal, or an administrator password.
91
95
 
92
96
  ### Via npm
93
97
 
94
- The package will be installable after the first tagged release:
98
+ Run the published package directly:
95
99
 
96
100
  ```bash
97
101
  npx browser-cookie-bridge install-app
@@ -99,6 +103,21 @@ npx browser-cookie-bridge install-app
99
103
 
100
104
  No administrator password is needed. The app is built from source on your Mac and installed in your user Applications folder unless an existing writable system Applications copy is being updated.
101
105
 
106
+ Both installation methods use the same bundle identifier and the same settings under `~/Library/Application Support/BraveCodexCookieSync`. Installing the DMG after npm does not create a separate product identity: the system Applications copy becomes canonical, and a stale matching user Applications copy is moved to the Trash on launch. Future updates replace that same app in place.
107
+
108
+ **[View `browser-cookie-bridge` on npm →](https://www.npmjs.com/package/browser-cookie-bridge)**
109
+
110
+ ### From source
111
+
112
+ ```bash
113
+ git clone https://github.com/apoorvdarshan/browser-cookie-bridge.git
114
+ cd browser-cookie-bridge
115
+ npm test
116
+ npm run build:app
117
+ ```
118
+
119
+ The final command compiles the native SwiftUI app, enables **Open at login**, **Sync at login**, and the **menu-bar helper**, then launches it. A first install uses `~/Applications/Browser Cookie Bridge.app` without requesting administrator access. If an existing `/Applications/Browser Cookie Bridge.app` is present, later builds and updates keep using that system Applications copy instead of creating a duplicate. Daily sync stays off until you enable it.
120
+
102
121
  ## Setup
103
122
 
104
123
  ### Browser → ChatGPT Codex
@@ -123,21 +142,34 @@ Browser-to-browser transfers use a small unpacked extension at each selected end
123
142
 
124
143
  Generated extensions live under `~/Library/Application Support/BraveCodexCookieSync/` and contain a random, user-only local broker token. Do not share those folders.
125
144
 
145
+ ### Browser → Browserless Cloud (optional)
146
+
147
+ This path uses the official Browserless CLI and is deliberately separate from local sync.
148
+
149
+ 1. Select **Browserless Cloud** as the destination.
150
+ 2. Enter your Browserless API token, cloud profile name, region, and optional domain allowlist. The token is stored in macOS Keychain; it is never written to the app configuration or command arguments.
151
+ 3. Quit the selected source browser so its profile can be copied consistently.
152
+ 4. Review the cloud warning and click **Upload now**.
153
+
154
+ The upload creates the named Browserless profile the first time and refreshes it on later runs. It may contain cookies, local storage, and IndexedDB; history and saved passwords are excluded. Browserless uploads never run from Daily sync or Sync at login. Browser Cookie Bridge disables Browserless CLI telemetry for this integration. Comet is not currently supported by the Browserless capture CLI.
155
+
156
+ The official CLI records the Browserless upload-disclaimer acceptance timestamp in `~/.browserless/config.json`. Browser Cookie Bridge does not store its API token there.
157
+
126
158
  ## Usage
127
159
 
128
160
  | Control | What it does |
129
161
  |---|---|
130
162
  | **Export from** | Selects the browser whose data will be read |
131
- | **Import into** | Selects a different browser or ChatGPT Codex |
163
+ | **Import into** | Selects a different browser, ChatGPT Codex, or optional Browserless Cloud |
132
164
  | **Cookies** | Moves cookies and supported session attributes; on by default |
133
165
  | **History URLs** | Adds visited URLs without their original timestamps or titles |
134
166
  | **Daily sync** | Runs at one fixed local time; off by default |
135
167
  | **Sync at login** | Runs once whenever you sign in; on by default |
136
168
  | **Open at login** | Starts the background app after macOS login; on by default |
137
169
  | **Show in menu bar** | Keeps sync, status, updates, and support actions close at hand |
138
- | **Check for updates** | Finds a newer npm release and offers install + relaunch |
170
+ | **Check for updates** | Finds a newer GitHub release, verifies its DMG, and offers install + relaunch |
139
171
 
140
- Automation always uses the source, destination, and data choices currently saved in the app. A scheduled Codex sync safely exits without making changes when Codex is open.
172
+ Automation uses the saved source, destination, and data choices for local transfers. A scheduled Codex sync safely exits without making changes when Codex is open. Browserless cloud uploads are always manual and require an explicit upload action.
141
173
 
142
174
  ## CLI
143
175
 
@@ -145,7 +177,7 @@ Automation always uses the source, destination, and data choices currently saved
145
177
  browser-cookie-bridge install-app [--no-open]
146
178
  browser-cookie-bridge setup [--hour 9] [--minute 0] [--no-schedule]
147
179
  browser-cookie-bridge preferences --source brave --target codex --cookies on --history off
148
- browser-cookie-bridge sync [--timeout 300]
180
+ browser-cookie-bridge sync [--timeout 300] [--allow-cloud-upload]
149
181
  browser-cookie-bridge doctor
150
182
  browser-cookie-bridge enable-login-sync
151
183
  browser-cookie-bridge disable-login-sync
@@ -154,7 +186,7 @@ browser-cookie-bridge disable-app-login
154
186
  browser-cookie-bridge remove-schedule
155
187
  ```
156
188
 
157
- Supported source IDs are `brave`, `chrome`, `edge`, `arc`, `vivaldi`, `opera`, and `comet`. Target IDs are the same plus `codex`. The same browser cannot be both endpoints.
189
+ Supported source IDs are `brave`, `chrome`, `edge`, `arc`, `vivaldi`, `opera`, and `comet`. Target IDs are the same plus `codex` and `browserless`. The same browser cannot be both endpoints. Browserless requires `BROWSERLESS_TOKEN` and the explicit `--allow-cloud-upload` flag; the native app supplies the token from Keychain without placing it in the OS command line or app configuration.
158
190
 
159
191
  ## How it works
160
192
 
@@ -162,6 +194,7 @@ Supported source IDs are `brave`, `chrome`, `edge`, `arc`, `vivaldi`, `opera`, a
162
194
  |---|---|
163
195
  | **Browser → browser** | Unpacked extensions connect to a short-lived broker on IPv4 loopback. Selected data stays in memory and is never written to logs. |
164
196
  | **Browser → Codex** | The app reads the selected local Chromium profile, creates a consistent Codex SQLite backup, merges into a working copy, validates it, then replaces the destination atomically. |
197
+ | **Browser → Browserless** | The bundled official Browserless CLI copies a closed local profile, captures cookies/local storage/IndexedDB, and uploads it directly to the selected Browserless region. |
165
198
 
166
199
  The broker validates a random token and extension origin, limits payload size, and normally exits after five minutes. Only the endpoints selected in the app respond to a transfer.
167
200
 
@@ -173,6 +206,7 @@ The broker validates a random token and extension origin, limits payload size, a
173
206
  - The app refuses unknown Codex database schemas instead of guessing.
174
207
  - Imported Codex rows use an empty `encrypted_value` because OpenAI's Safe Storage key is protected by a private macOS Keychain access group. Those imported rows can therefore remain readable to software running as your macOS user until the website refreshes them.
175
208
  - Anyone who can use your logged-in macOS account or modify a generated extension may be able to access transferred browser sessions.
209
+ - The optional Browserless destination sends authenticated state to Browserless under their terms and privacy practices. Its API token is stored in macOS Keychain, uploads are manual, and Browserless CLI telemetry is disabled by the app.
176
210
 
177
211
  Cookies are credentials. Review the source, protect your macOS account, and transfer only between profiles you trust.
178
212
 
@@ -180,12 +214,12 @@ Found a vulnerability? Read [SECURITY.md](SECURITY.md) and report it privately.
180
214
 
181
215
  ## Releases
182
216
 
183
- Pushing a semantic version tag runs tests, validates that package and app versions match, publishes to npm, and creates a GitHub Release with the tarball attached.
217
+ Pushing a semantic version tag runs tests, validates that package and app versions match, builds separate Apple-silicon and Intel DMGs, publishes to npm, and creates a GitHub Release with the tarball, DMGs, and SHA-256 files attached.
184
218
 
185
219
  ```bash
186
220
  npm run release:check
187
- git tag v1.0.0
188
- git push origin v1.0.0
221
+ git tag vX.Y.Z
222
+ git push origin vX.Y.Z
189
223
  ```
190
224
 
191
225
  A normal branch push does not publish anything.
@@ -199,6 +233,8 @@ Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for local setu
199
233
  If Browser Cookie Bridge is useful to you:
200
234
 
201
235
  - ⭐ **Star** the repository
236
+ - ⬇️ **[Download the latest DMG](https://github.com/apoorvdarshan/browser-cookie-bridge/releases/latest)**
237
+ - 📦 **[Install from npm](https://www.npmjs.com/package/browser-cookie-bridge)**
202
238
  - 🐛 **[Report a bug](https://github.com/apoorvdarshan/browser-cookie-bridge/issues/new?template=bug_report.yml)** — never include cookie values or tokens
203
239
  - ☕ **[Support on Ko-fi](https://ko-fi.com/apoorvdarshan)**
204
240
  - 𝕏 **Follow [@apoorvdarshan](https://x.com/apoorvdarshan)**
@@ -218,4 +254,4 @@ npm run web
218
254
 
219
255
  [MIT](LICENSE) © 2026 [Apoorv Darshan](https://github.com/apoorvdarshan)
220
256
 
221
- <sub>Not affiliated with Brave, Google, Microsoft, The Browser Company, Vivaldi, Opera, Perplexity, or OpenAI. Their names and marks belong to their respective owners.</sub>
257
+ <sub>Not affiliated with Brave, Google, Microsoft, The Browser Company, Vivaldi, Opera, Perplexity, OpenAI, or Browserless. Their names and marks belong to their respective owners.</sub>
@@ -0,0 +1,11 @@
1
+ # Third-party notices
2
+
3
+ Browser Cookie Bridge includes the official Browserless CLI for the optional, user-initiated Browserless Cloud destination.
4
+
5
+ ## @browserless.io/cli
6
+
7
+ - Version: 0.3.0
8
+ - License: MIT
9
+ - Source: https://github.com/browserless/browserless-cli
10
+
11
+ The Browserless CLI's license and the licenses shipped with its npm dependencies remain included inside `node_modules` in self-contained app builds. Browser Cookie Bridge disables Browserless CLI telemetry for uploads started through this app.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "Browser Cookie Bridge",
4
- "version": "1.0.0",
4
+ "version": "1.2.0",
5
5
  "description": "Transfers selected browser data locally between supported browsers and into ChatGPT Codex.",
6
6
  "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5o6lDkXzU/23Jm2QRk4mfuxNnr3VlEIjRHcZr93Gdo7PI7asHJQhigaMGT6UOz0lkaTn1F+TGIPlsJo9GNBSsxbCfxWoBSXcFQFrPolY5LEfKaMtZQQ6eb4UAnp+bbUwb1den4On0piWU47Yzl6i0Jcdg4EG5H1kCSF/6nJsbKgF7OTaR/3drULu40yRvflzSXRhly3UDO7c5mgHJsaMwVV+VILsxbcPOoRINjuo3zDC737HFs67dpf38xF3tjSVL0HURAWKKobMvfABiDfVEm5O0Lvf+57d1Ib12QLT2qtVXNDy3iYwX+w2S0wH2vIMsfvoFPlRdmeqft70kZOqXwIDAQAB",
7
7
  "permissions": ["alarms", "cookies", "history"],
@@ -10,9 +10,9 @@
10
10
  <key>CFBundleInfoDictionaryVersion</key><string>6.0</string>
11
11
  <key>CFBundleName</key><string>Browser Cookie Bridge</string>
12
12
  <key>CFBundlePackageType</key><string>APPL</string>
13
- <key>CFBundleShortVersionString</key><string>1.0.0</string>
14
- <key>CFBundleVersion</key><string>24</string>
15
- <key>LSMinimumSystemVersion</key><string>13.0</string>
13
+ <key>CFBundleShortVersionString</key><string>1.2.0</string>
14
+ <key>CFBundleVersion</key><string>26</string>
15
+ <key>LSMinimumSystemVersion</key><string>13.5</string>
16
16
  <key>NSHighResolutionCapable</key><true/>
17
17
  </dict>
18
18
  </plist>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg xmlns="http://www.w3.org/2000/svg" width="256px" height="256px" viewBox="0 0 256 256">
3
+ <style>.s0{fill:black}@media (prefers-color-scheme:dark){.s0{fill:white}}</style>
4
+ <path class="s0" d="M 60.96875 0 C 61.0625 0.03125 67.5625 3.75 89.75 16.625 L 89.75 119.5625 C 89.75 217.46875 89.78125 222.5 90.1875 222.375 C 90.4375 222.3125 107.625 213.875 166.21875 185.125 L 166.25 169.6875 C 166.25 157.4375 166.1875 154.28125 165.9375 154.34375 C 165.78125 154.40625 155.03125 159.34375 142.0625 165.34375 C 129.09375 171.34375 118.4375 176.21875 118.375 176.1875 C 118.3125 176.15625 118.3125 144.09375 118.375 33.78125 L 147.25 50.78125 L 147.53125 114.875 L 195.375 142.71875 L 195.5 203.625 L 142.21875 229.75 C 112.9375 244.125 88.75 255.90625 88.53125 255.9375 C 88.3125 256 81.90625 251.875 60.46875 237.625 L 60.5 163.5 C 60.5 122.71875 60.5625 69.28125 60.6875 44.6875 C 60.75 20.09375 60.90625 0 60.96875 0 Z" />
5
+ </svg>
6
+