Commit Graph
94 Commits
Author SHA1 Message Date
Raven Scott 9fd3d6753c Update Backups 2026-05-30 21:22:57 -04:00
Raven Scott 1c6419f7ce p2ns.admin updates for local DNS 2026-05-30 21:20:15 -04:00
Raven Scott 416c678471 current branding 2026-05-30 21:01:31 -04:00
Raven Scott 841d814f13 p2ns.admin updates 2026-05-30 19:45:56 -04:00
Raven Scott 6d94b9c16b Fix bell Icon Badge 2026-05-30 19:14:53 -04:00
Raven Scott 9974202c39 Full Redesign of p2ns.admin 2026-05-30 19:12:35 -04:00
Raven Scott 43f69a59a7 Update UI 2026-05-30 18:17:15 -04:00
Raven Scott 7c233008ac Update 2026-05-30 18:10:54 -04:00
Raven Scott ffa9ed7242 update global.profile 2026-05-30 17:49:25 -04:00
Raven Scott 7c076ec1e4 Remove sanity scans 2026-05-30 17:44:54 -04:00
Raven Scott eba85b44ca db updates 2026-05-30 17:37:54 -04:00
Raven Scott 71207e77ba Update migration system 2026-05-30 17:21:25 -04:00
Raven Scott 1ffdd12efb fix(linux): install root CA in system store and NSS for Chrome
Chrome/Chromium on Linux use ~/.pki/nssdb, not only
update-ca-certificates. Auto-install now runs both paths.
- certificate_authority.js: installLinuxRootCA + certutil for
  user NSS (~/.pki/nssdb) and optional /etc/pki/nssdb
- docs/CERTIFICATES.md: manual steps (libnss3-tools, certutil, verify)
- docs/README_LONGFORM.md, EXAMPLES.md, README.md: aligned Linux instructions
2026-05-29 06:48:50 -04:00
Raven Scott b1a02e2e84 feat(experimental)!: multi-master one ledger (Option B)
Remove the last layer of soft centralization: a lone `--master` on empty
storage could still implicitly genesis a separate Autopass and split the
network on the same TOPIC_SEED. Genesis is now explicit (`--master
--genesis`); secondary masters pair via invite into the same dnsPass as
joiners, with a shared network manifest, split-brain diagnostics, and
writer-aware quorum.

- Genesis vs secondary master boot paths; auto-adopt manifest on upgrade
- Masters without dnsPass accept invites; masters with pass ignore them
- NETWORK_MANIFEST_FILE, P2NS_GENESIS, MASTER_LOAD_DOMAINS, MASTER_INVITE_ONLY
- core.status networkId; admin diagnostics; docs and multi-master tests

BREAKING: operators must run one genesis per network; additional masters
use `node p2ns.js --master` (not `--genesis`) on empty storage.
2026-05-29 05:34:50 -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 95559fc552 fixing boot 2026-05-28 01:46:38 -04:00
Raven Scott 64b9b6f9b8 Disable file.drop on master 2026-05-28 01:30:42 -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 5559c9096d Skip migration if its completed 2026-05-28 00:26:32 -04:00
Raven Scott 8eb2bc5946 automatic db migrations on version bump 2026-05-28 00:19:43 -04:00
Raven Scott 276eb4e015 Updates 2026-05-27 22:43:41 -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 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