v0.9.6: InfoNet hashchain, Wormhole gate encryption, mesh reputation, 16 community contributors

Gate messages now propagate via the Infonet hashchain as encrypted blobs — every node syncs them
through normal chain sync while only Gate members with MLS keys can decrypt. Added mesh reputation
system, peer push workers, voluntary Wormhole opt-in for node participation, fork recovery,
killwormhole scripts, obfuscated terminology, and hardened the self-updater to protect encryption
keys and chain state during updates.

New features: Shodan search, train tracking, Sentinel Hub imagery, 8 new intelligence layers,
CCTV expansion to 11,000+ cameras across 6 countries, Mesh Terminal CLI, prediction markets,
desktop-shell scaffold, and comprehensive mesh test suite (215 frontend + backend tests passing).

Community contributors: @wa1id, @AlborzNazari, @adust09, @Xpirix, @imqdcr, @csysp, @suranyami,
@chr0n1x, @johan-martensson, @singularfailure, @smithbh, @OrfeoTerkuci, @deuza, @tm-const,
@Elhard1, @ttulttul
This commit is contained in:
anoracleofra-code
2026-03-26 05:58:04 -06:00
parent d363013742
commit 668ce16dc7
363 changed files with 170430 additions and 23203 deletions
@@ -0,0 +1,50 @@
import type { NativeControlHandlerMap } from '../types';
export function createSettingsHandlers(): Pick<
NativeControlHandlerMap,
| 'settings.wormhole.get'
| 'settings.wormhole.set'
| 'settings.privacy.get'
| 'settings.privacy.set'
| 'settings.api_keys.get'
| 'settings.api_keys.set'
| 'settings.news.get'
| 'settings.news.set'
| 'settings.news.reset'
> {
return {
'settings.wormhole.get': async (_payload, _ctx, exec) => exec('/api/settings/wormhole'),
'settings.wormhole.set': async (payload, _ctx, exec) =>
exec('/api/settings/wormhole', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'settings.privacy.get': async (_payload, _ctx, exec) =>
exec('/api/settings/privacy-profile'),
'settings.privacy.set': async (payload, _ctx, exec) =>
exec('/api/settings/privacy-profile', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'settings.api_keys.get': async (_payload, _ctx, exec) => exec('/api/settings/api-keys'),
'settings.api_keys.set': async (payload, _ctx, exec) =>
exec('/api/settings/api-keys', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'settings.news.get': async (_payload, _ctx, exec) => exec('/api/settings/news-feeds'),
'settings.news.set': async (payload, _ctx, exec) =>
exec('/api/settings/news-feeds', {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'settings.news.reset': async (_payload, _ctx, exec) =>
exec('/api/settings/news-feeds/reset', {
method: 'POST',
}),
};
}
@@ -0,0 +1,10 @@
import type { NativeControlHandlerMap } from '../types';
export function createUpdateHandlers(): Pick<NativeControlHandlerMap, 'system.update'> {
return {
'system.update': async (_payload, _ctx, exec) =>
exec('/api/system/update', {
method: 'POST',
}),
};
}
@@ -0,0 +1,102 @@
import type { NativeControlHandlerMap } from '../types';
export function createWormholeHandlers(): Pick<
NativeControlHandlerMap,
| 'wormhole.status'
| 'wormhole.connect'
| 'wormhole.disconnect'
| 'wormhole.restart'
| 'wormhole.gate.enter'
| 'wormhole.gate.leave'
| 'wormhole.gate.proof'
| 'wormhole.gate.personas.get'
| 'wormhole.gate.persona.create'
| 'wormhole.gate.persona.activate'
| 'wormhole.gate.persona.clear'
| 'wormhole.gate.key.get'
| 'wormhole.gate.key.rotate'
| 'wormhole.gate.message.compose'
| 'wormhole.gate.message.decrypt'
| 'wormhole.gate.message.post'
| 'wormhole.gate.messages.decrypt'
> {
return {
'wormhole.status': async (_payload, _ctx, exec) => exec('/api/wormhole/status'),
'wormhole.connect': async (_payload, _ctx, exec) =>
exec('/api/wormhole/connect', { method: 'POST' }),
'wormhole.disconnect': async (_payload, _ctx, exec) =>
exec('/api/wormhole/disconnect', { method: 'POST' }),
'wormhole.restart': async (_payload, _ctx, exec) =>
exec('/api/wormhole/restart', { method: 'POST' }),
'wormhole.gate.personas.get': async (payload, _ctx, exec) =>
exec(`/api/wormhole/gate/${encodeURIComponent(String(payload?.gate_id || ''))}/personas`),
'wormhole.gate.persona.create': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/persona/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.persona.activate': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/persona/activate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.persona.clear': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/persona/clear', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.key.get': async (payload, _ctx, exec) =>
exec(`/api/wormhole/gate/${encodeURIComponent(String(payload?.gate_id || ''))}/key`),
'wormhole.gate.key.rotate': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/key/rotate', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.message.compose': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/message/compose', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.message.decrypt': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/message/decrypt', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.enter': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/enter', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.leave': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/leave', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.proof': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/proof', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.message.post': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/message/post', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
'wormhole.gate.messages.decrypt': async (payload, _ctx, exec) =>
exec('/api/wormhole/gate/messages/decrypt', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload),
}),
};
}