Commit Graph
100 Commits
Author SHA1 Message Date
Raven Scott 9e931b1f4d RFC Update 2026-05-28 20:11:09 -04:00
Raven Scott 2fe3d9fba5 Updates 2026-05-28 18:19:32 -04:00
Raven Scott d046f6a8e2 Attempted fixes 2026-05-28 18:10:40 -04:00
Raven Scott 343102d4b5 Update docs 2026-05-28 12:39:38 -04:00
Raven Scott 564029af44 Remove border, drop down, logs 2026-05-28 12:16:42 -04:00
Raven Scott 44fbc3be92 Log updates 2026-05-28 12:14:42 -04:00
Raven Scott ca324ec4a6 Upgrade logs 2026-05-28 12:12:24 -04:00
Raven Scott 6ee20a3f68 Migrate plugin channels to protomux-rpc only
Replace dual message-channel + RPC setup with a single registerPluginProtocol
path, unified sdk.channels (register/request/event/broadcast), RPC keepalive
(__p2ns.ping/pong), and core request lifecycle on RPC open. Update
global.profile and example.plugin, admin Plugin RPC stats, docs, and
test:plugin-rpc. Breaking: upgrade all peers together; no legacy adapters.
2026-05-28 11:55:01 -04:00
Raven Scott ba44ef267d Fix 2026-05-28 11:37:45 -04:00
Raven Scott 8854365add Add core.status RPC, RPC invite diagnostics, and WebSocket stats refresh
- core.status handler and coreStatusRequest; diagnoseInviteIssuesAsync
  clears stale failed-invite flags when peers report canProvideInvite
- Admin invite diagnostics and Core stats UI: per-peer remote state,
  text status marks, recommendations aligned with invite.deliver RPC
- Extract stats-collector; push stats/health/status via subscribe-stats
  WebSocket; HTTP only on first Stats tab load
- Document core.status in PLUGIN_SDK; proxy registers onCoreStatus
2026-05-28 11:35:01 -04:00
Raven Scott 1d309aa82d Add Core RPC section to admin Stats tab
Surface invite diagnostics (RPC health, per-peer state, queues,
recommendations) under Resource Usage via /api/stats core payload
and auto-refreshing renderCoreStats in the stats UI.
2026-05-28 11:24:41 -04:00
Raven Scott 51184d2446 Update invite diagnostics for RPC-only core invite flow
Replace legacy invite-channel checks with schema v2 diagnostics:
per-peer RPC/request channel health, pending invite.ack and master
queue state, and an admin UI that matches invite.deliver on
p2ns.core-request-rpc.
2026-05-28 11:20:08 -04:00
Raven Scott 51ad117612 Fix: use newPass.base 2026-05-28 11:11:27 -04:00
Raven Scott 84199270b3 BREAKING: Native p2ns.core RPC — invite.deliver, remove legacy invite channel
Replace RPC-to-string adapters and processCoreRequestMessage (~470 lines) with
typed handlers in core-swarm-handlers.js. Autopass invite wire now uses
invite.deliver RPC only; p2ns.core-invite protomux channel is removed.

- Add core-rpc-contract.js (METHODS, INVITE_STATUS) and core-swarm-handlers.js
  with shared processInviteWire for deliver, relay, and pairing
- core-rpc.js: deliverInviteWire via invite.deliver; invite.request returns
  { status, reason, inviteId }; invite.ack carries optional inviteId
- p2ns.js: register native handlers; slim p2ns.core-request (lifecycle only);
  proactive invite ack tracks inviteId; fix missing invite.queued handler
- proxy-server: channel-manager + shared handlers (no p2ns.core-invite strings)
- Tests: core-swarm-handlers.test.js, core-invite-rpc-integration.js; extend test:core-rpc
- Docs: PLUGIN_SDK RPC table; consensus.removeDomain in longform/RESTAPI/glossary
2026-05-28 11:09:05 -04:00
Raven Scott ea9124c429 BREAKING EXPERIMENTAL: Holepunch-native hard migration (RPC core, shared storage, SDK v2)
BREAKING: All nodes must upgrade together. Legacy p2ns.core-request string
messages are rejected; invite/consensus control plane uses protomux-rpc
(invite.request, invite.ack, invite.relay*, consensus.*). Shared Corestore
namespaces are the default for plugin DBs and drives; USE_SHARED_CORESTORE_NAMESPACES=false
is debug-only. Admin plugin actions with params are validated before run.

EXPERIMENTAL: End-to-end RPC invite path reuses existing handlers via adapters;
invite wire still ships on the invite channel. Multi-peer invite/relay
integration tests are not in CI yet (core-rpc-smoke only).

SDK & channels:
- channel-rpc.js, sdk.channels.rpc (register/request/event)
- core-rpc.js for p2ns.core; action-params + plugin route validation
- sdk.db.getCore/reopen, sdk.state.getPeerChannelSnapshot,
  sdk.metrics.getHolepunchStats (schema v1)

Runtime:
- p2ns.js: RPC-first core invite/consensus; Hyperswarm firewall/reconnect
- channel-manager: required protomux-rpc per peer
- db-shared-namespace-migration; drive-manager shared namespaces
- proxy-server: invite.request RPC for joiners

Plugins: file.drop, global.profile, peer.directory, domain.consensus,
peer.visualize, example.plugin (RPC demo); peer.directory UI polish

Also: CI/smoke scripts, diagnostics hardening, plugin config schema validation,
admin action param modal, docs/RFCS, package-lock + engines.node >= 18
2026-05-28 10:51:19 -04:00
Raven Scott 4b783801c5 update 2026-05-28 01:58:17 -04:00
Raven Scott 25f3195e57 Update peer paste 2026-05-28 01:55:01 -04:00
Raven Scott 95559fc552 fixing boot 2026-05-28 01:46:38 -04:00
Raven Scott 7c49928a5c corestore init 2026-05-28 01:41:48 -04:00
Raven Scott b7b3a1c111 Updates 2026-05-28 01:35:59 -04:00
Raven Scott df8a141ebb Fixes 2026-05-28 01:34:07 -04:00
Raven Scott 64b9b6f9b8 Disable file.drop on master 2026-05-28 01:30:42 -04:00
Raven Scott dff3fb2040 Fix regression 2026-05-28 01:25:00 -04:00
Raven Scott 9057b9661d dnspass fixes 2026-05-28 01:20:52 -04:00
Raven Scott d95baaed1c Bump 2026-05-28 01:14:13 -04:00
Raven Scott 6ccfac862d Global Paste Feed 2026-05-28 01:10:11 -04:00
Raven Scott 65e3791553 Migration 2026-05-28 01:01:10 -04:00
Raven Scott 50e5fac0c0 Bump 2026-05-28 00:55:43 -04:00
Raven Scott badd23a7e7 Edit/Preview pane 2026-05-28 00:48:25 -04:00
Raven Scott ac06ffe22d peer.paste style/layout 2026-05-28 00:41:51 -04:00
Raven Scott 5559c9096d Skip migration if its completed 2026-05-28 00:26:32 -04:00
Raven Scott 7b1983cd81 Bump file.drop and peer.paste 2026-05-28 00:21:56 -04:00
Raven Scott 8eb2bc5946 automatic db migrations on version bump 2026-05-28 00:19:43 -04:00
Raven Scott 2d10e0a4a9 auto clean ledger on boot 2026-05-28 00:12:32 -04:00
Raven Scott 322812804f Remove automatic cleanup on launch 2026-05-28 00:10:31 -04:00
Raven Scott aac69de4cf Updates peer.paste 2026-05-28 00:03:52 -04:00
Raven Scott 60d17a7b91 Update docs peer.paste 2026-05-27 23:58:04 -04:00
Raven Scott 345dbf2156 visual polish peer.paste 2026-05-27 23:54:46 -04:00
Raven Scott aebbdd43ed Updates peer.paste 2026-05-27 23:49:13 -04:00
Raven Scott 22d9926c52 E2EE syntax highlight peer.paste 2026-05-27 23:45:55 -04:00
Raven Scott 371fce2847 Updates peer.paste 2026-05-27 23:43:05 -04:00
Raven Scott 55b7547b3a peer paste syntax highlight viewer 2026-05-27 23:39:43 -04:00
Raven Scott 0ab92f1922 updates for peer.paste 2026-05-27 23:36:49 -04:00
Raven Scott 01dc6a5221 Auto detect lang - peer.paste 2026-05-27 23:33:36 -04:00
Raven Scott 16e33c02c4 Updates peer.paste 2026-05-27 23:29:04 -04:00
Raven Scott 206493ecd4 bump 2026-05-27 23:23:20 -04:00
Raven Scott b168342fea fixes for peer.paste 2026-05-27 23:23:05 -04:00
Raven Scott 996969de19 Fix DB peer.paste 2026-05-27 23:20:35 -04:00
Raven Scott 83b7f210a3 Update Peer.paste 2026-05-27 23:18:05 -04:00
Raven Scott bf911b5cdc Update peer.paste 2026-05-27 23:15:26 -04:00
Raven Scott 30153bf958 peer paste updates 2026-05-27 23:08:45 -04:00
Raven Scott 1974145b79 Bump Peer.paste 2026-05-27 22:59:49 -04:00
Raven Scott c7ecffd3e4 Paste Bump DB 2026-05-27 22:56:33 -04:00
Raven Scott e901dea9ee E2EE for peer.paste 2026-05-27 22:55:37 -04:00
Raven Scott 7b4e1a2391 Updates 2026-05-27 22:49:04 -04:00
Raven Scott aee3920654 reset on boot ensure good storage cores 2026-05-27 22:46:23 -04:00
Raven Scott 276eb4e015 Updates 2026-05-27 22:43:41 -04:00
Raven Scott 8b6789805c Update peer.paste 2026-05-27 22:34:35 -04:00
Raven Scott e802bbcf64 Introduce peer.paste 2026-05-27 22:23:30 -04:00
Raven Scott 396bba5bb2 Update Docs 2026-05-27 22:15:33 -04:00
Raven Scott 1d1bf83e2b Updates to Holesail 2026-05-27 21:55:25 -04:00
Raven Scott d57433d3e0 Modernize Holepunch stack for HyperDB 6 and current replication APIs
Align P2NS with current Autopass, Hypercore, Hyperdrive, and Protomux behavior:
add plugin DB recovery for incompatible persisted HyperDB data, stop
unconditional spec rebuilds via fingerprinting, update SDK replication paths,
and align proxy invite channels with p2ns.core-* protocols without replicating
Autopass over the p2ns topic.
2026-05-27 21:02:17 -04:00
Raven Scott 7cd98231f7 Remove invite cache 2026-05-27 20:46:41 -04:00
Raven Scott bcdc912b77 Version Update 2026-05-27 20:44:17 -04:00
Raven Scott ef7abcaf95 Updates 2026-05-27 20:36:13 -04:00
Raven Scott 41b218c3fd Update 2026-05-27 20:30:49 -04:00
Raven Scott d46558e659 Updates 2026-05-27 20:27:12 -04:00
Raven Scott f60de776a0 Caching 2026-05-27 20:19:51 -04:00
Raven Scott b000e34016 Updates 2026-05-27 20:15:25 -04:00
Raven Scott 05e388d525 Updates 2026-05-27 20:13:06 -04:00
Raven Scott 8849a432b3 Updates 2026-05-27 20:09:22 -04:00
Raven Scott 14a2373c4c Updates 2026-05-27 20:06:36 -04:00
Raven Scott 3d35f148c5 Updates 2026-05-27 20:03:25 -04:00
Raven Scott dbc6997219 Fixes 2026-05-27 19:59:45 -04:00
Raven Scott 229350e066 Bug fix 2026-05-27 19:53:48 -04:00
Raven Scott 54cbee254d Updates 2026-05-27 19:47:06 -04:00
Raven Scott c8334a8d63 Fix Atomic state 2026-05-27 19:44:05 -04:00
Raven Scott 3ece7abe9f Autopass updates 2026-05-27 19:41:21 -04:00
Raven Scott bfc51b8edb Upgrade Holepunch P2P stack and npm dependencies
Align p2ns with current Holepunch ecosystem versions: autopass 3,
hyperdb 6, hyperschema 1.21, hyperdrive 13, corestore 7.10, hyperswarm
4.17, protomux 3.11, and compact-encoding 3 (with npm overrides).
Also bump Tailwind/PostCSS, ws, node-forge, and related tooling; add
express and holesail-logger; remove unused install/npm packages.

Use cache/plugin-spec when plugin spec dirs are not writable, and
update docs and proxy install notes. Rebuild admin CSS for Tailwind 4.3.

Existing P2P storage must be wiped (--clean) after upgrading.
2026-05-27 19:33:06 -04:00
Raven Scott 022eeea263 fix: break circular dependency in domains.js
Move getInternalDomains import to lazy load inside addDomain function to resolve the circular dependency chain: plugin-handler → sdk → domains → plugin-handler.
2026-02-20 21:05:04 -05:00
Raven Scott 8bed09a537 fix: prevent EADDRINUSE double-bind on Holesail client startup
Add global activeClientKeys Set to track all active clients and prevent
race conditions between domain init and cache restore paths. Add EADDRINUSE
error handling in holesail.js, holesail_child.js
2026-02-20 19:53:16 -05:00
Raven Scott 6499e745d7 first commit 2025-12-31 03:19:10 -05:00
Raven Scott 6ba275be33 first commit 2025-12-30 18:00:39 -05:00
Raven Scott 425b968db5 Fix: Use fs.promises for async file ops in admin domains route
Replaced callback-based fs methods with promise-based fsp methods to fix
the "cb argument must be of type function" error when adding domains.
2025-12-28 00:59:50 -05:00
Raven Scott 62ac5a4b50 ix: prevent corestore corruption during graceful shutdown
- Reorder shutdown sequence to close pairing operations before DNSPass
- Add proper tracking and cleanup of active Autopass.pair() operations
- Handle shared corestore conflicts between pairing ops and main DNSPass
- Ignore expected "store already closed" errors from pairing operations
- Consolidate all Autopass resource cleanup in PHASE 2.5

This fixes the "Corestore is closed" uncaught exceptions and corruption
that occurred when both pairing operations and DNSPass tried to close
the same shared corestore during shutdown.
2025-12-26 23:24:51 -05:00
Raven Scott e8f920a7aa fix: prevent corestore corruption during graceful shutdown
- Reorder cleanup sequence to close HTTP/TLS/DNS servers BEFORE corestore operations
- Move dnsPass/main corestore closing after plugin cleanup to prevent race conditions
- Add explicit drive cleanup call to close all plugin drive stores
- Fix proxy-server cleanup to properly close state.store after dnsPass
- Add store.closed checks and improve error handling in cleanup functions
- Verify Autopass dnsPass.close() handles its internal corestore properly
- Remove duplicate DNS server closing code causing syntax errors

This resolves "Corestore is closed" errors during shutdown by ensuring no new
requests can access closed corestores, preventing corruption and ensuring clean
shutdown of all corestore instances (main, plugin databases, plugin drives, dnsPass).
2025-12-26 22:34:54 -05:00
Raven Scott 1630370ff4 Fix domains tab navigation to prevent page breakage
- Prevent re-initialization when clicking domains button while already on domains tab
- Add navigateToTab helper function to intelligently handle tab navigation
- Redirect #domains hash to index (no hash) since domains is the default tab
- Update all navigation buttons to use navigateToTab helper
- Handle both initial load and hashchange events to remove #domains hash

This fixes the issue where navigating to or clicking the domains tab when
already viewing it would break the page by clearing and re-rendering content.
2025-12-26 22:16:14 -05:00
Raven Scott 3466d17eda Add graceful shutdown button and improve shutdown status display
- Add refresh/shutdown button next to status indicator that gracefully
  stops the process without cleaning my-storage
- Create /api/shutdown endpoint that triggers graceful shutdown via SIGTERM
- Update status indicator to show "Gracefully Cleaning...." when system
  is shutting down (instead of "Searching for peers...")
- Include isShuttingDown flag in /api/status endpoint response
- Use built-in ConfirmationModal for shutdown confirmation with warning styling

The shutdown button appears in the top-right corner next to the status
indicator and uses the existing confirmation modal system for user
confirmation before initiating shutdown.
2025-12-26 22:03:23 -05:00
Raven Scott 1888289067 feat: Add persistent domain filters with live data updates
- Add three filter dropdowns to domains tab: Consensus Status, Hash Type, and Ownership
- Implement AND logic filtering with immediate table updates for live data
- Create persistent filter settings system saving to cache/filterSettings.json
- Add backend API endpoints: GET/POST /api/domain-filter-settings
- Set default filters to: All Consensus States, Holesail Hash, All Ownership
- Fix infinite scroll state management to handle filter changes properly
- Auto-save filter preferences on change and restore on page load
- Fix backend response handling (removed undefined sdk reference)
2025-12-26 21:50:25 -05:00
Raven Scott be7bd5ee2b perf: parallelize holesail cleanup operations for 10x faster shutdown
Convert sequential cleanup loops to Promise.allSettled() across multiple files:
- includes/maintenance/cleanup.js: parallelize holesail connections, TLS/HTTP servers, and child process cleanup
- includes/core/domain_cleanup.js: parallelize multiple client cleanup within domain removal
- p2ns.js: parallelize child process and connection cleanup in main shutdown

Before: O(n) sequential execution (100-150s for 10 processes)
After: O(1) parallel execution (~10-15s for 10 processes)
2025-12-26 21:29:39 -05:00
Raven Scott 398e042e81 Fix: Support floating point numbers in settings (Consensus Quorum Threshold)
Changed number type settings parsing from parseInt to parseFloat to
properly handle decimal values. Added step="any" attribute to number
inputs in the frontend when the setting has decimal min/max/default
values.

This ensures that Consensus Quorum Threshold and other floating point
settings (like METRICS_SAMPLING_RATE) can accept and save decimal
values like 0.5, 0.67, etc. instead of being truncated to integers.

- Updated includes/admin/admin-backend/routes/settings.js
- Updated includes/admin/routes/settings.js
- Updated includes/admin/admin-frontend/ui/settings.js
2025-12-26 21:20:58 -05:00
Raven Scott c4fd25c17e version bump file.drop 2025-12-26 20:26:27 -05:00
Raven Scott 94c923cc6d feat: add HyperDB replication to file.drop plugin
- Add database watcher to monitor @filedrop/files collection changes
- Implement robust database initialization with retry logic (30 attempts)
- Add replication status checking and logging on startup
- Add peer connection handlers for active replication updates
- Enable real-time database synchronization across P2NS network
2025-12-26 20:21:15 -05:00
Raven Scott 9edefdb61d center message in p2p conflicts 2025-12-26 18:34:21 -05:00
Raven Scott e925ac22fc Add disclaimer 2025-12-26 18:17:30 -05:00
Raven Scott 0e03ff10e2 feat: implement fully dynamic real-time domains list via WebSocket
Add WebSocket broadcasting of complete domains list from server to clients
Implement periodic domain list updates (10-second intervals)
Fix reconnection issues where domains list remained empty after p2ns restart
Add proper state management for WebSocket disconnect/reconnect scenarios
Enhance empty state messages to show "Disconnected" status during outages
Reset scroll/pagination state when receiving WebSocket domain updates
Add client-server request/response mechanism for immediate domain list refresh
Ensure domains list updates in real-time during consensus resolution
Remove conflicting HTTP fetches during reconnection to prevent race conditions
2025-12-26 18:16:02 -05:00
Raven Scott eff22719ff cleanup/enhance cleanup 2025-12-26 18:02:21 -05:00
Raven Scott 10d7d52079 Disallow internal domains from being claimed 2025-12-26 17:48:50 -05:00
Raven Scott 02a11bc025 update docs 2025-12-26 17:35:10 -05:00
Raven Scott 4465e9aa62 update docs 2025-12-26 17:34:30 -05:00