{"id":"c1106","filename":"c1106_qr_p2p_besserverno.dok.json","weise3_id":"","tip":"sprint","naziv":"QR P2P — Bešserverno Spajanje (Kvantni Džep Q1 faza 2)","kreator":"CC@genesis-new","datum":"2026-05-23","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"sprint","naziv":"QR P2P — Bešserverno Spajanje (Kvantni Džep Q1 faza 2)","zakon":["ZAKON_41","ZAKON_17","ZAKON_43"],"chain_entry":"c1106","nastao":"2026-05-23","kreator":"CC@genesis-new","server":"NEW (31.70.90.84 / fina-connect.online)","sto_je_napravljeno":{"qr_engine_js":{"fajl":"/var/www/genesis/public/quantum/qr-engine.js","opis":"Pure JS QR code generator from scratch — 0 ovisnosti (ZAKON 41)","komponente":["GF(256) Galois Field — primitivan polinom 0x11D","Reed-Solomon error correction — ECC M (15% recovery)","QR matrix building — finder patterns, timing, alignment, dark module","Masking — svih 8 maski, penalty scoring, odabir najboljeg","Format info — BCH kod, ECC level M","Canvas renderer — skalabilan, dark/light teme","BarcodeDetector scanner — W3C API, getUserMedia kamera","Genesis P2P QR protokol — GPEER:O/A/I:{from}:{b64url_payload}"],"format":"GPEER:{type}:{from_w3_16chars}:{base64url_sdp}","ecc_level":"M (15% recovery)","max_data":"~970 bytes (version 25)"},"qr_ui_u_index_html":{"fajl":"/var/www/genesis/public/quantum/index.html","nova_sekcija":"QR P2P — Poveži se bez servera","flow":["Step 1: Uređaj A klikne 'Generiraj QR Offer'","Step 2: WebRTC offer + ICE gathering (2-5s) → komprimiran SDP → QR na canvasu","Step 3: Uređaj B skenira QR kamerom → prima offer → generira answer → prikazuje answer QR","Step 4: Uređaj A skenira answer QR → setRemoteDescription → DataChannel OPEN"],"sdp_kompresija":"_compressSDP() — briše redundantne linije, čuva bitne (ice-ufrag, fingerprint, candidate...)","scanner":"BarcodeDetector API (Chrome 83+, Safari 17+) + getUserMedia environment camera"},"signaling_server_novi":{"fajlovi":["/var/www/genesis/api/p2p_signal.py","/var/www/genesis/services/sudac_middleware.py (JAVNI_PREFIKSI += /api/v4/kanal/p2p/)"],"endpointi":["POST /api/v4/kanal/p2p/signal — queues SDP/ICE u Redis db=4 (TTL 60s)","GET  /api/v4/kanal/p2p/signal?target={id} — atomarno preuzima i briše","GET  /api/v4/kanal/p2p/peers — peer discovery"],"opis":"Fallback za kad QR nije moguć (internet veza bez fizičke blizine)"}},"filozofija":{"env_okovi":".env su okovi SERVERA (AI API ključevi), NE tvoji. Identitet = Ed25519 keypair u browseru.","beskonacne_veze":"QR signaling = SDP offer/answer kao QR kod. Nema servera, nema API ključa, nema .env.","slucajna_tocka":"Svaki telefon/browser = Bršljan čvor. Na bilo kojoj IP adresi. Svugdje.","stun":"4 javna STUN servera (Google, Cloudflare, Nextcloud, Antisip) — svi bez API ključa, svi besplatni.","nakon_handshake":"Nakon QR razmjene — 0 servera. Direktna P2P veza. Atomi putuju direktno.","zakon_43":"Svaki atom nosi krunica_hash. Verificira se lokalno. Observer određuje gdje se atom manifestira."},"url":"https://fina-connect.online/quantum/","faze":{"DONE":["krunica.js — SHA3-256 Keccak pure JS + Ed25519 SubtleCrypto + Atom9D","genesis-sw.js — ServiceWorker, IndexedDB queue, Background Sync","brsljani-p2p.js — WebRTC ATOM_OFFER/WANT/PUSH + signaling poll","qr-engine.js — pure JS QR generator, BarcodeDetector scanner","p2p_signal.py — Redis-backed signaling relay (fallback)","QR P2P UI — 4-step flow, canvas QR prikaz, kamera scan"],"TODO":["Manifest.json za PWA (add-to-homescreen prompt)","TURN server konfiguracija (za simetrični NAT — hoteli, korporacije)","weise3_id kao DNS TXT zapis (ultimate decentralized discovery)","Atom gossip kroz QR DataChannel (direktno, bez gossip servera)"]},"citacija":"Mi smo sebi u env datoteci stavili okove. QR je ključ koji otključava vrata bez servera. — Ivan Seki, 2026-05-23"}}