Commit Graph
79 Commits
Author SHA1 Message Date
Raven Scott 8cc76e580a overview updates and removal of duplicate title headers
CI / Build & Test (push) Successful in 4m55s
2026-02-28 22:10:48 -05:00
Raven Scott 6c1428c6f1 updates to server tunnels
CI / Build & Test (push) Successful in 2m45s
2026-02-28 21:47:40 -05:00
Raven Scott f5a299b9ec css fixes
CI / Build & Test (push) Successful in 3m29s
2026-02-28 21:34:30 -05:00
Raven Scott 8303c72140 further tests
CI / Build & Test (push) Successful in 3m44s
2026-02-28 21:07:39 -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 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 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 6612beffa1 SSH AUTH
CI / Build & Test (push) Successful in 3m2s
2026-02-28 16:49:53 -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 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 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 5c96db95b6 update
CI / Build & Test (push) Has been cancelled
2026-02-27 18:35:38 -05:00
Raven Scott d58a0b6e2d first commit
CI / Build & Test (push) Has been cancelled
2026-02-27 18:13:59 -05:00