feat: v1.2.0-alpha — E2E encrypted mesh relay, steganography, relay status polling
Phase 5 mesh networking: - E2E encrypted TX relay (X25519 + ChaCha20-Poly1305) — non-Archy nodes relay encrypted blobs transparently via Meshcore native routing - Steganographic encoding modes (WeatherStation, SensorNetwork) — traffic looks like sensor data on the wire, 0xAA marker, configurable per-node - Pre-flight Bitcoin Core health check on relay node — specific error codes (bitcoin_unreachable, bitcoin_syncing, tx_rejected) instead of generic fails - mesh.relay-status RPC endpoint — frontend polls for relay result every 3s - On-Chain / Lightning tabs in Off-Grid Bitcoin panel - Archy Peers vs Mesh Broadcast relay mode selector - Mesh view fills viewport (no page scroll), internal panel scrolling - Version bump to 1.2.0-alpha Also includes: deploy hardening, container fixes, IndeedHub updates, boot screen, dashboard improvements, MASTER_PLAN task tracking Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -327,10 +327,10 @@ export const useMeshStore = defineStore('mesh', () => {
|
||||
}
|
||||
}
|
||||
|
||||
async function relayTransaction(txHex: string) {
|
||||
async function relayTransaction(txHex: string, mode: 'archy' | 'broadcast' = 'archy') {
|
||||
return rpcClient.call<{ request_id: number; queued: boolean; tx_hex_len: number }>({
|
||||
method: 'mesh.relay-tx',
|
||||
params: { tx_hex: txHex },
|
||||
params: { tx_hex: txHex, relay_mode: mode },
|
||||
})
|
||||
}
|
||||
|
||||
@@ -341,6 +341,20 @@ export const useMeshStore = defineStore('mesh', () => {
|
||||
})
|
||||
}
|
||||
|
||||
async function relayStatus(requestId: number) {
|
||||
return rpcClient.call<{
|
||||
status: 'pending' | 'confirmed' | 'failed' | 'unknown'
|
||||
request_id: number
|
||||
txid?: string
|
||||
error?: string
|
||||
error_code?: string
|
||||
completed_at?: string
|
||||
}>({
|
||||
method: 'mesh.relay-status',
|
||||
params: { request_id: requestId },
|
||||
})
|
||||
}
|
||||
|
||||
async function refreshAll() {
|
||||
await Promise.all([fetchStatus(), fetchPeers(), fetchMessages(), fetchDeadmanStatus(), fetchBlockHeaders()])
|
||||
}
|
||||
@@ -377,5 +391,6 @@ export const useMeshStore = defineStore('mesh', () => {
|
||||
fetchBlockHeaders,
|
||||
relayTransaction,
|
||||
relayLightning,
|
||||
relayStatus,
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user