Commit Graph
66 Commits
Author SHA1 Message Date
Raven Scott 15dd9b7bd1 test
CI / Build & Test (push) Successful in 3m22s
2026-02-28 20:59:38 -05:00
Raven Scott c734bfa1e3 further proxy fixes
CI / Build & Test (push) Successful in 3m0s
2026-02-28 20:48:30 -05:00
Raven Scott c7e33691e4 proxy fixes
CI / Build & Test (push) Successful in 3m30s
2026-02-28 20:38:19 -05:00
Raven Scott 82c75b289e fix: correct SSL cert for custom TLDs and immediate PAC update on vhost changes
CI / Build & Test (push) Successful in 3m18s
- Replace SNI callback approach (unsupported by bare-tls) with a multi-SAN
  wildcard cert covering all active base domains (e.g. *.hole.sail, *.heheh.jungle)
- Add buildMultiSanCert() in https-proxy.js — cert key encodes sorted domain list
  so cache invalidates automatically when TLDs are added or removed
- Add restart(baseDomains, callback) to https-proxy.js to stop and restart the
  proxy with a fresh cert without requiring a native host restart
- Add getActiveBaseDomains() and refreshProxyCert() in host.js; call after every
  successful setVirtualHost and removeVirtualHost
- Fix background.js send handler to fetch updated virtualHosts via getState and
  re-apply PAC immediately after setVirtualHost or removeVirtualHost succeeds,
  so new TLDs are routed without waiting for the next dashboard refresh
- Remove unused tls require from https-proxy.js
- Remove invalid "permissions" entry from manifest.json permissions array
2026-02-28 20:30:26 -05:00
Raven Scott 00d9c958ca feat: custom TLD virtual hosts with SNI certs, dynamic PAC, and TLD validation
CI / Build & Test (push) Successful in 3m15s
- Add isValidVhostHostname() to dashboard.js with embedded REAL_TLDS and
  REAL_SLD_TLDS blocklists; enforces 3-label minimum (two-tier TLD requirement),
  valid label characters, and blocks real public TLDs/SLDs (e.g. .com, co.uk)
- Replace hardcoded .hole.sail validation in vhost submit handler with new validator
- Update Add Virtual Host modal hint text and add inline format explanation
- Update applyPAC() in background.js to accept a tlds array, generating one
  dnsDomainIs clause per unique two-label base domain; .hole.sail always included
- Store virtualHosts in extensionState and pass derived TLD list to applyPAC at
  every getState response and retryGetStateForConnectProxy call
- Replace single upfront *.hole.sail cert in https-proxy.js with SNICallback that
  lazily generates a wildcard cert per two-label base domain on first connection;
  baseline *.hole.sail cert still pre-generated at startup
- Add chrome.permissions.request() in background.js send handler to grant host
  permissions for new TLDs dynamically after successful setVirtualHost
- Add optional_host_permissions: ["*://*/*"] and "permissions" to manifest.json
  to enable runtime host permission grants for custom TLDs
2026-02-28 20:20:28 -05:00
Raven Scott 8727809b12 update icon
CI / Build & Test (push) Successful in 4m2s
2026-02-28 20:03:03 -05:00
Raven Scott 25d3ec26e1 ssh-conn-meta and rdp-conn-meta rows have been removed from both card templates.
CI / Build & Test (push) Successful in 4m4s
2026-02-28 19:58:25 -05:00
Raven Scott 2a71311459 feat: persist RDP/SSH passwords as base64, fix card layouts and modal UX
CI / Build & Test (push) Successful in 3m52s
- Encode passwords as base64 (passwordB64) before persisting RDP and SSH
  connections to native host state, decoded back on load/refresh
- Pre-fill password field when editing existing RDP or SSH connections
- Fix Quick Actions "Add SSH/RDP Connection" buttons to call openAddSshModal(null)
  / openAddRdpModal(null) so forms are properly reset instead of showing stale data
- Autofocus xterm.js terminal when SSH WebSocket connection is established
- Redesign SSH and RDP connection cards with a two-row layout: label + actions
  in the top row, full hs:// key in a wrapping monospace meta row below;
  removes all JS truncation and CSS ellipsis clipping
2026-02-28 19:51:16 -05:00
Raven Scott fe779bf2d7 fix quick actions
CI / Build & Test (push) Successful in 3m8s
2026-02-28 19:44:28 -05:00
Raven Scott f773c5e2a3 Add SSH Password Base64
CI / Build & Test (push) Successful in 2m46s
2026-02-28 19:19:02 -05:00
Raven Scott ee383a1173 Save RDP Passwords in state as base64
CI / Build & Test (push) Successful in 3m24s
2026-02-28 19:12:05 -05:00
Raven Scott f3cad8f125 fix installer
CI / Build & Test (push) Successful in 3m19s
2026-02-28 19:05:53 -05:00
Raven Scott e5a1fa71fe fix: comprehensive bug fixes, security improvements, and feature additions
CI / Build & Test (push) Successful in 3m21s
Critical fixes:
- Fix wrong registry key (com.bridgeswarm → com.holesail.browser) in
  update-native-manifest-extension-id.ps1 — script was always failing on Windows
- Create missing wrong-domain.html redirect page for .host.test URLs
- Remove options_ui pointing to non-existent options.html from manifest

High-priority bug fixes:
- ssh-manager: track and kill orphaned printf FIFO writer when key auth succeeds
- ssh-manager: fix uncancelled 2000ms fallback password timer (assign to fallbackTimer,
  clear in cancelPasswordWatch); fix null-check before removeAllListeners
- ssh-manager: add 30s Promise.race timeout to holesailInst.ready()
- backup-manager: fix macOS cp -R nesting bug by removing destination before copy;
  add tar -tzf integrity check after archive creation
- host.js: restoreBackup now stops running tunnels before restore and re-starts them
- holesail-manager: fix stale closure bug in virtual host and service tunnel
  error/close handlers (guard with v.holesail === hs check)
- dashboard.js: remove dead setText('dashTabs', ...) call referencing non-existent element

Medium improvements:
- manifest: remove unused storage and scripting permissions; restrict
  web_accessible_resources match from <all_urls> to chrome-extension://*/*
- background.js: fix self-referential browser alias (globalThis.browser ?? chrome);
  add 30s per-request timeout to send(); clean up dashboardTabs on tab close
- holesail-manager: gate saveStateSync stderr log behind DEBUG flag; updateSettings
  now returns requiresRestart:true when proxy port changes; add backupRetention field
- host.js: pass requiresRestart through in updateSettings response
- dashboard.js: remove dead loadSettings() function; add requiresRestart warning toast;
  add chrome.runtime.lastError guards in fetchState and refreshBackups;
  set dynamic version from chrome.runtime.getManifest()
- dashboard.html: remove stray </button> tag; add id="sidebarVersion" for dynamic version
- install.sh/install.ps1: fetch version from RELEASE_BASE/VERSION instead of hardcoded 1.0.0
- install.ps1: add Firefox .xpi download and Firefox registry key
- update-native-manifest-extension-id.sh: add optional Firefox manifest update
- certificate-authority.js: defer RSA key generation to setImmediate to avoid blocking
  startup; expose caReady promise
- host.js: await caReady before starting HTTPS proxy

Documentation:
- REMOTE-DESKTOP.md: correct RDP WebSocket protocol field names to match rdp-manager.js
  (destLeft/destTop/destRight/destBottom, mouseMove/mouseButton/keyEvent/keyUnicode)

Feature additions:
- dashboard.js: add Reconnect button for service tunnels in error/closed state
- https-proxy.js: add WebSocket upgrade handler to support ws:// over *.hole.sail
- connect-proxy.js: add 10s header-read timeout to protect against idle connections
- native-host: add bare-fs as explicit dependency
2026-02-28 19:00:13 -05:00
Raven Scott a03f45a439 fix active scope
CI / Build & Test (push) Successful in 2m53s
2026-02-28 18:43:48 -05:00
Raven Scott d7340ab99b fixes
CI / Build & Test (push) Successful in 2m53s
2026-02-28 18:35:23 -05:00
Raven Scott 5641f1a0d4 attempts to fix dashboard
CI / Build & Test (push) Successful in 2m52s
2026-02-28 18:28:37 -05:00
Raven Scott 678e7e237c dashboard updates test
CI / Build & Test (push) Successful in 3m15s
2026-02-28 18:20:12 -05:00
Raven Scott 1b23cffb48 icon
CI / Build & Test (push) Successful in 3m6s
2026-02-28 18:14:17 -05:00
Raven Scott 49dca45d85 cleanup older downloads
CI / Build & Test (push) Successful in 3m7s
2026-02-28 18:07:35 -05:00
Raven Scott fad18d163b remove refresh button
CI / Build & Test (push) Has been cancelled
2026-02-28 18:04:48 -05:00
Raven Scott 6d732f716d fix warning
CI / Build & Test (push) Has been cancelled
2026-02-28 18:02:30 -05:00
Raven Scott b9b4727658 Update Overview
CI / Build & Test (push) Successful in 2m59s
2026-02-28 17:55:46 -05:00
Raven Scott 028f2e22d9 remove redundant settings for backup/restore
CI / Build & Test (push) Successful in 2m46s
2026-02-28 17:50:13 -05:00
Raven Scott 98f75f01b3 allow upgrades, restore state on reinstall
CI / Build & Test (push) Successful in 2m53s
2026-02-28 17:43:26 -05:00
Raven Scott 5ee11896d7 Update docs about SSH
CI / Build & Test (push) Successful in 3m1s
2026-02-28 17:40:08 -05:00
Raven Scott bd2cccaa38 ssh hone
CI / Build & Test (push) Successful in 2m55s
2026-02-28 17:31:42 -05:00
Raven Scott 8ae54f7816 further tests
CI / Build & Test (push) Successful in 2m44s
2026-02-28 17:25:29 -05:00
Raven Scott d6e4991c4a ssh tests - multi auth
CI / Build & Test (push) Successful in 2m49s
2026-02-28 17:19:13 -05:00
Raven Scott 08eddc48ba ssh auth test
CI / Build & Test (push) Successful in 2m51s
2026-02-28 17:11:08 -05:00
Raven Scott 6612beffa1 SSH AUTH
CI / Build & Test (push) Successful in 3m2s
2026-02-28 16:49:53 -05:00
Raven Scott 326411f0fb docs: document Firefox AMO signing path for permanent installation in regular Firefox
CI / Build & Test (push) Successful in 2m53s
Made-with: Cursor
2026-02-28 00:01:02 -05:00
Raven Scott f8d36e16bb fix(firefox): update install instructions to use about:debugging for regular Firefox, xpi for Dev Edition/Nightly
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 23:59:57 -05:00
Raven Scott c2a077abe2 fix(firefox): add background.scripts for Firefox MV3 compatibility, remove missing dashboard.css from WAR, bump strict_min_version to 109
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 23:57:13 -05:00
Raven Scott bfd180822b Update docs formatting
CI / Build & Test (push) Successful in 4m43s
2026-02-27 21:20:39 -05:00
Raven Scott 64e1f3ed5e fix(installer): kill pre-extraction process directly so no orphan native host remains after install
CI / Build & Test (push) Successful in 4m45s
Made-with: Cursor
2026-02-27 21:10:34 -05:00
Raven Scott 631536e21b remove releases dir
CI / Build & Test (push) Successful in 2m42s
2026-02-27 21:04:26 -05:00
Raven Scott 04541eba9c Remove cursor rules
CI / Build & Test (push) Has been cancelled
2026-02-27 21:03:02 -05:00
Raven Scott 073182dddd chore: add cursor rule to suppress Made-with attribution in commits
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 21:01:13 -05:00
Raven Scott 49b69013b0 fix: forward rdpConnections (and sshConnections) through background.js getState response
CI / Build & Test (push) Successful in 2m31s
Made-with: Cursor
2026-02-27 20:37:25 -05:00
Raven Scott 62ab961714 docs: fully rewrite README and all docs to reflect current features and architecture
CI / Build & Test (push) Successful in 2m29s
Made-with: Cursor
2026-02-27 20:26:50 -05:00
Raven Scott 75def4eee6 fix(ca): verify fingerprint match when checking CA trust — detects stale CA after regeneration
CI / Build & Test (push) Successful in 2m34s
Made-with: Cursor
2026-02-27 20:10:15 -05:00
Raven Scott 78e6af39f5 fix: exit on EADDRINUSE instead of reusing port — prevents ghost instances with no tunnels
CI / Build & Test (push) Successful in 2m48s
Made-with: Cursor
2026-02-27 19:57:47 -05:00
Raven Scott b0b17e26df fix(ca): silent install to login keychain with SSL policy — no sudo or Terminal needed
CI / Build & Test (push) Successful in 2m29s
Made-with: Cursor
2026-02-27 19:51:01 -05:00
Raven Scott eecdc98cb2 fix(ca): use .command file opened in Terminal to get sudo password prompt
CI / Build & Test (push) Successful in 2m36s
Made-with: Cursor
2026-02-27 19:47:27 -05:00
Raven Scott 3dd88df61f fix(install): reliably wait for addon extraction before signing on macOS
CI / Build & Test (push) Successful in 2m34s
Made-with: Cursor
2026-02-27 19:40:44 -05:00
Raven Scott 876fd1f4fc fix(ca): use launchctl asuser to show password dialog from background daemon
CI / Build & Test (push) Successful in 2m37s
Made-with: Cursor
2026-02-27 19:35:06 -05:00
Raven Scott 43083cc314 docs: add web installer one-liner to README, update install instructions
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 19:33:45 -05:00
Raven Scott affc20ef6a fix(install): sign all bare addons after extraction to prevent Gatekeeper blocking
CI / Build & Test (push) Successful in 2m35s
Made-with: Cursor
2026-02-27 19:29:19 -05:00
Raven Scott ef0a273ca5 fix(install): pre-extract and sign bare addons to prevent Gatekeeper blocking
CI / Build & Test (push) Successful in 2m40s
Made-with: Cursor
2026-02-27 19:23:00 -05:00
Raven Scott 59cdeb78f9 fix(install): ad-hoc sign darwin binary after download to satisfy Gatekeeper
CI / Build & Test (push) Successful in 2m38s
Made-with: Cursor
2026-02-27 19:19:15 -05:00
Raven Scott 93b8fc6f2f fix(build): patch bare-build codesign to allow darwin cross-compile from linux
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 19:17:46 -05:00
Raven Scott e43b48e38c feat: rewrite installers to download from release, remove local install
CI / Build & Test (push) Successful in 1m40s
Made-with: Cursor
2026-02-27 19:10:17 -05:00
Raven Scott 09e2d0b0a7 fix(ci): strip Made-with trailer from release body
CI / Build & Test (push) Successful in 1m40s
Made-with: Cursor
2026-02-27 19:06:38 -05:00
Raven Scott a8f2761105 fix(ci): use git push --force to move latest-main tag to correct commit
CI / Build & Test (push) Successful in 1m48s
Made-with: Cursor
2026-02-27 18:58:44 -05:00
Raven Scott 600342e965 fix(ci): delete and recreate tag ref to move latest-main to correct commit
CI / Build & Test (push) Successful in 1m36s
Made-with: Cursor
2026-02-27 18:55:55 -05:00
Raven Scott 3db2db36db fix(ci): properly update latest-main release on every push
CI / Build & Test (push) Successful in 1m42s
Made-with: Cursor
2026-02-27 18:52:45 -05:00
Raven Scott 355fb220b7 test
CI / Build & Test (push) Successful in 1m38s
2026-02-27 18:49:12 -05:00
Raven Scott 39477e4c43 fix(ci): only run on main branch, stop tag cascade
CI / Build & Test (push) Successful in 1m37s
Made-with: Cursor
2026-02-27 18:36:51 -05:00
Raven Scott 5c96db95b6 update
CI / Build & Test (push) Has been cancelled
2026-02-27 18:35:38 -05:00
Raven Scott e8f7c3ac08 fix(ci): only trigger on branch pushes, not tags
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 18:34:41 -05:00
Raven Scott dcc3fadf62 feat(ci): publish rolling release on every push
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 18:30:24 -05:00
Raven Scott 321dfc9156 fix(ci): smoke test linux binary from subdirectory, not root .exe
CI / Build & Test (push) Successful in 34s
Made-with: Cursor
2026-02-27 18:27:31 -05:00
Raven Scott 2ac847559f fix(ci): skip codesign — only build darwin binaries on macOS runners
CI / Build & Test (push) Failing after 33s
Made-with: Cursor
2026-02-27 18:26:17 -05:00
Raven Scott e9dccde69f fix(ci): build all platforms, fix smoke test for x64 linux runner
CI / Build & Test (push) Failing after 22s
Made-with: Cursor
2026-02-27 18:25:25 -05:00
Raven Scott c588ff88de fix: use ssh runner label instead of ubuntu-latest
CI / Build & Test (push) Has been cancelled
Made-with: Cursor
2026-02-27 18:21:22 -05:00
Raven Scott d58a0b6e2d first commit
CI / Build & Test (push) Has been cancelled
2026-02-27 18:13:59 -05:00