docs: add CONTRIBUTING.md, CHANGELOG.md, and JSDoc to entire codebase
CI / Build & Test (push) Successful in 2m54s

Add docs/CONTRIBUTING.md covering the build system, dev workflow, all
npm scripts, how to add new native host message types, code style, and
debugging guidance.

Add CHANGELOG.md at the project root documenting all features and fixes
across the 1.0.0 release.

Add JSDoc (@param, @returns) to all previously undocumented exported
functions across 35 JS files:
- native-host/holesail-manager/ (index, virtual-hosts, service-tunnels,
  servers, port-allocator)
- native-host top-level managers (startup, connect-proxy, https-proxy,
  certificate-authority, ssh-manager, rdp-manager)
- extension/background/ (logs, native-messaging, proxy, message-router)
- extension/dashboard/core/ (utils, navigation, init)
- extension/dashboard/ui/ (modal, toast, state-tag)
- extension/dashboard/pages/ (all 10 page files)
- extension/dashboard/refresh.js, events.js
- extension/dashboard/data/hostname-validator.js
- scripts/ (build-host, run-install)
This commit is contained in:
Raven Scott
2026-03-01 00:40:53 -05:00
parent f0917a2d31
commit f1e98a7edd
38 changed files with 1018 additions and 41 deletions
+19 -1
View File
@@ -1,5 +1,13 @@
// Depends on: core/utils.js ($), core/navigation.js (navigateTo)
/**
* Generic modal helpers for the dashboard.
* Handles open/close animations, error display, backdrop click, and Escape key.
* Depends on: core/utils.js ($), core/navigation.js (navigateTo)
*/
/**
* Open a modal by adding the `open` class and focusing the first input.
* @param {string} id - The modal backdrop element ID.
*/
function openModal(id) {
const el = $(id);
if (!el) return;
@@ -10,6 +18,10 @@ function openModal(id) {
}, 50);
}
/**
* Close a modal by removing the `open` class and clearing any error messages.
* @param {string} id - The modal backdrop element ID.
*/
function closeModal(id) {
const el = $(id);
if (!el) return;
@@ -17,6 +29,12 @@ function closeModal(id) {
el.querySelectorAll('.modal-error').forEach(e => { e.style.display = 'none'; e.textContent = ''; });
}
/**
* Display an error message inside a modal's error element.
* @param {string} modalId - Unused; kept for API symmetry.
* @param {string} errorId - ID of the error display element.
* @param {string} msg - Error message text.
*/
function showModalError(modalId, errorId, msg) {
const el = $(errorId);
if (!el) return;