PageSourceSearch

https://www.iroh.computer/_next/static/chunks/5521-d3331e033bc290af.js

js iroh.computer collected 2026-10-02 06:28:14 UTC 18,715 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5521],{5521:(e,t,r)=>{r.r(t),r.d(t,{default:()=>b});var o=r(5155),i=r(2619),s=r.n(i),n=r(2821),l=r(605),a=r(1853),d=r(407);let c=JSON.parse('{"$":"2026-02-09","a":[{"section":"past releases","startCollapsed":true,"milestones":[{"done":true,"title":"docs are disabled by default","description":"transition node builder away from assuming all users want the docs protocol","tracking_issue":"https://github.com/n0-computer/iroh/pull/2748"},{"version":"v0.26.0","done":true,"released":"2024-09-30","doc":"https://www.iroh.computer/blog/iroh-0-26-0-Say-Hello-to-Your-Neighbors"},{"version":"v0.27.0","done":true,"released":"2024-10-21","doc":"https://www.iroh.computer/blog/iroh-0-27-0-Squashing-Bugs-And-Taking-Names"},{"done":true,"title":"pull custom protocols out of iroh","description":"pull custom protocols out of iroh and into separate repositories","tracking_issue":null,"subtasks":{"iroh-blobs":true,"iroh-docs":true,"iroh-gossip":true}},{"done":true,"title":"blobs, docs, and gossip are disabled by default","description":"protocols remain in the codebase but must be explicitly enabled","tracking_issue":null},{"done":true,"title":"Implement QUIC Address Discovery","description":"Add QUIC Address Discovery functionality to `iroh-quinn`","tracking_issue":"https://github.com/n0-computer/quinn/pull/12"},{"done":true,"title":"Iroh CLI Deprecation Warning","description":"warn users that the iroh CLI is deprecated and will be converted to an example in the next release","tracking_issue":null},{"done":true,"title":"Iroh client Deprecation Warning","description":"warn users that the iroh client is deprecated and will be converted to an example in the next release","tracking_issue":null},{"version":"v0.28.1","done":true,"released":"2024-11-04","doc":"https://iroh.computer/blog/iroh-0-28-let-them-have-crates"},{"done":true,"title":"net-tools repo","description":"factor a number of networking tools out of iroh and into a separate repo","doc":"","subtasks":{"netcheck":true,"portmapper":true}},{"done":true,"title":"Add QUIC Address Discovery to iroh-relay","description":"serve QUIC Address Discovery on the relay","tracking_issue":"https://github.com/n0-computer/iroh/issues/2842"},{"done":true,"title":"blobs, docs, and gossip are removed from iroh","description":"protocols exist in their own repos and are published separately from iroh","tracking_issue":null},{"done":true,"title":"CLI is removed from iroh","description":"there is no more CLI or Node in iroh, look at the specific protocols to play with a CLI centered around that protocol","tracking_issue":null},{"done":true,"title":"iroh-net is now just iroh","description":"we no longer publish `iroh-net`, `iroh` contains all of `iroh-net`","tracking_issue":null},{"version":"v0.29.0","done":true,"released":"2024-12-02","doc":"https://www.iroh.computer/blog/iroh-0-29-net-is-the-new-iroh"},{"done":true,"title":"Add QUIC Address Discovery to `iroh-net-report`","description":"net-report has QUIC Address Discovery probes","tracking_issue":"https://github.com/n0-computer/iroh/issues/2842"},{"version":"v0.30.0","done":true,"released":"2024-12-16","doc":"https://www.iroh.computer/blog/iroh-0-30-0-slimming-down"},{"done":true,"title":"Auth on Relays","description":"Blacklist or whitelist `NodeId`s on the relay","tracking_issue":"https://github.com/n0-computer/iroh/pull/3086"},{"done":true,"title":"Iroh Doctor CLI v0.1","description":"release the first version of the iroh doctor CLI as a standalone tool for diagnosing and reporting on connectivity","tracking_issue":null},{"version":"v0.31.0","done":true,"released":"2025-01-14","doc":"https://www.iroh.computer/blog/iroh-0-31-0-back-to-fighting-fit"},{"done":true,"title":"Add QUIC Address Discovery to `iroh`","description":"iroh can launch QUIC Address Discovery probes","tracking_issue":"https://github.com/n0-computer/iroh/pull/3049"},{"version":"v0.32.0","done":true,"released":"2025-02-03","doc":"https://www.iroh.computer/blog/iroh-0-32-0-browser-alpha-qad-and-n0-future"},{"done":true,"title":"browser support","description":"iroh compiles to web assembly and runs 
1in the browser","tracking_issue":"https://github.com/n0-computer/iroh/issues/2799","doc":"https://www.iroh.computer/blog/iroh-and-the-web"},{"done":true,"title":"User-defined data in Discovery","description":"Allow users to publish and resolve a user-defined data.","tracing_issue":"https://github.com/n0-computer/iroh/pull/3176"},{"done":true,"title":"Discovery stream subscription","description":"Add simple API to allow users to subscribe to a stream of discoveries.","tracing_issue":"https://github.com/n0-computer/iroh/pull/3181"},{"done":true,"title":"QUIC connections: graceful shutdown","description":"finalize our APIs for graceful shutdown of QUIC connections","tracking_issue":"https://github.com/n0-computer/iroh/pull/3170"},{"done":true,"title":"0-RTT","description":"iroh QUIC connections can now leverage 0-RTT","tracking_issue":"https://github.com/n0-computer/iroh/pull/3163"},{"version":"v0.33.0","done":true,"released":"2025-02-24","doc":"https://iroh.computer/blog/iroh-0-33-0-browsers-and-discovery-and-0-RTT-oh-my"},{"done":true,"title":"use Raw Public Keys (RFC 7250) in TLS","description":"use Raw Public Keys instead of self-signed certificates in TLS","tracking_issue":"https://github.com/n0-computer/iroh/issues/2798","doc":"https://datatracker.ietf.org/doc/html/rfc7250"},{"done":true,"title":"improved tags API for `iroh-blobs`","description":"expand tags API","tracking_issue":null},{"version":"v0.34.1","done":true,"released":"2025-03-18","doc":"https://www.iroh.computer/blog/iroh-0-34-0-raw-public-keys"},{"done":true,"title":"relay connections over websockets","description":"Connections to the relay happen over websockets","tracking_issue":null,"doc":null},{"done":true,"title":"metrics are collected per-endpoint","description":"Previously, metrics were collected globably. Now, each `iroh` endpoint collects metrics for itself.","tracking_issue":null,"doc":null},{"version":"v0.35.0","done":true,"released":"2025-05-12","doc":"https://www.iroh.computer/blog/iroh-0-35-prepping-for-1-0"},{"done":true,"title":"Formalize Error Responses","description":"transition from anyhow to thiserror in all critical code paths","tracking_issue":"https://github.com/n0-computer/iroh/issues/2741"},{"done":true,"title":"iroh-blobs 1.0 candidate API","description":"Overhaul the blobs API","tracking_issue":null},{"done":true,"title":"iroh-blobs: multiprovider fan-in","description":"Download data from multiple providers using the `SplitStrategy` enum","tracking_issue":"https://github.com/n0-computer/iroh-blobs/issues/4","doc":"https://docs.rs/iroh-blobs/latest/iroh_blobs/api/downloader/enum.SplitStrategy.html"},{"version":"v0.90.0","done":true,"released":"2025-06-27","doc":"https://www.iroh.computer/blog/iroh-0-90-the-canary-series"},{"done":true,"title":"deprecate TCP relay connections","description":"We no longer support connecting to the relays using raw TCP, only WebSockets","tracking_issue":null,"doc":null},{"done":true,"title":"Overhaul the relay protocol","description":"Fix the relay handshake, clean up unused frames.","tracking_issue":null,"doc":null},{"version":"v0.91.0","done":true,"released":"2025-07-30","doc":"https://www.iroh.computer/blog/iroh-0-91-0-the-last-relay-break"},{"done":true,"title":"mDNS passive mode","description":"Allow discovering local nodes without advertising your own.","tracking_issue":null,"doc":null},{"done":true,"title":"mDNS Expiry Events","description":"Emit expiry events in the `subscribe` stream.","tracking_issue":null,"doc":null},{"version":"v0.92.0","done":true,"released":"2025-09-18","doc":"https://www.iroh.computer/blog/iroh-0-92-mdns-improvements"},{"done":true,"title":"`Endpoint::online`","description":"Add method for determining if your endpoint is \\"online\\".","tracking_issue":null,"doc":null},{"done":true,"title":"Dynamically add Discovery services","description":"Add discovery services to an already running endpoint","tracking_issue":null,"doc":null},{"version":"v0.93.0","done":true,"released":"2025-10-08","doc":"https://www.iroh.computer/blog/iroh-0-93-iroh-online"},{"done":true,"title":"Use `endpoint` instead of `node`","description":"Replace references to `node` with `endpoint` in methods, structs, docs, etc","tracking_issue":null,"doc":null}
1,{"done":true,"title":"Dynamically add `RelayUrl`s","description":"Allow adding and removing `RelayUrl`s to your `RelayMap` in the endpoint","tracking_issue":null,"doc":null},{"done":true,"title":"Introduce endpoint presets","description":"Introducing presets, that allow you to easily set discovery and relay defaults for your project","tracking_issue":null,"doc":null},{"done":true,"title":"Move `Tickets` into their own crate","description":"Tickets now exist in `iroh-ticket`","tracking_issue":null,"doc":null},{"version":"v0.94.0","done":true,"released":"2025-10-20","doc":""}]},{"done":true,"title":"Switch to `n0-error`","description":"Replace `snafu` and `n0-snafu` errors with `n0-error`","tracking_issue":null,"doc":null},{"done":true,"title":"Make `Connection::alpn` and `Connection::remote_id` infallible","description":"Also adds additional APIs for working with 0-RTT connections","tracking_issue":null,"doc":null},{"done":true,"title":"`iroh-blobs` compiles to WASM","description":"","tracking_issue":null,"doc":null},{"version":"v0.95.1","done":true,"released":"2025-11-05","doc":""},{"done":true,"title":"QUIC Multipath support","description":"implement QUIC multipath","tracking_issue":"","subtasks":{"quinn iroh fork":true,"plumb into iroh":true}},{"done":true,"title":"QUIC NAT traversal","description":"Using Quic to traverse NATs","doc":"https://www.ietf.org/archive/id/draft-seemann-quic-nat-traversal-01.html"},{"done":true,"title":"Add `EndpointHooks` to enable auth and connection inspection","description":"`EndpointHooks` allow adding callbacks to specific moments in a connection lifecycle, to give users more control over what happens during the connection and storing both incoming/outgoing connection information","doc":null},{"done":true,"title":"Rename `Discovery` to `AddressLookup`","description":"Use `AddressLookup` rather than `Discovery` for clarity","doc":null},{"version":"v0.96.0","done":true,"released":"2026-01-27","doc":""},{"done":false,"title":"Address prioritization in `AddressLookup`","description":"Allow users to prioritize which addresses get published in the address lookup system.","tracking_issue":null,"doc":null},{"done":false,"title":"Custom Transports","description":"Allow users to add custom transports.","tracking_issue":null,"doc":null},{"done":false,"title":"Own all foreign types","description":"Any types that are from dependencies need to be owned or made private","tracking_issue":null,"doc":null},{"version":"v0.97.0","done":false,"expected":"2026-02-23","doc":""},{"done":false,"title":"release candidate","description":"publish a release candidate, seeking feedback from the community","tracking_issue":"","doc":""},{"version":"v1.0.0-rc.0","done":false,"expected":"Q1 2026","link":""},{"ellipsis":true},{"done":false,"title":"draft specification","description":"draft a specification for the iroh protocol, outlining all open standards iroh uses, noting any deviations","tracking_issue":null,"subtasks":{"self-signed TLS":false,"QUIC":false,"ICE over QUIC":false,"STUN over QUIC":false,"DNS Discovery":false,"Pkarr":false,"MDNs":false,"WebSockets":false,"iroh relay":false}},{"done":false,"title":"finalize 1.0 spec","description":"ratify the iroh 1.0 wire protocol","tracking_issue":""},{"done":false,"title":"Finalize FFI integration","description":"protocol developers have a clear path for integrating rust protocols into other languages","tracking_issue":"","doc":""},{"done":false,"title":"documentation refinement","description":"ensure documentation is accurate and robust","tracking_issue":"","doc":""},{"version":"v1.0","done":false,"released":"","link":"","expected":"Q1 2026"},{"all_done":false,"title":"Party","description":"That\'s it. All done. no more work left to do, ever. :)","link":"https://www.youtube.com/watch?v=dQw4w9WgXcQ"}]}');var u=r(7145);function h(e,t=!1){return new Date(`${e}T00:00:00Z`).toLocaleDateString("en-US",{day:"numeric",month:t?"short":"long",year:"numeric",timeZone:"UTC"})}var p=r(2115),m=r(7937),g=r(4033);function b(){let{$:e}=c;return(0,o.jsxs)(u.BlankLayout,{children:[(0,o.jsxs)("header",{className:"max-w-lg px-4 sm:px-0",children:[(0,o.jsx)("h1",{className:"text-2xl sm:text-4xl font-space font-bold tracking-tight text-zinc-800 dark:text-zinc-100",children:"iroh 1.0 roadmap"}),(0,o.jsxs)("p",{className:"my-3 text-base text-zinc-600 dark:text-irohGray-400",children:["Here's where we're headed, and progress we made against our goal to date. For more details see the ",(0,o.jsx)(s(),{className:"text-irohPurple-500 underline decoration-dotted",href:"/blog/road-to-1-0",children:"iroh 1.0 roadmap post"}),", and check past releases in the ",(0,o.jsx)(s(),{className:"text-irohPurple-500 underline decoration-dotted",href:"/changelog",children:"changelog"})]}),(0,o.jsxs)("p",{className:"font-space tracking-tight text-zinc-800 dark:text-zinc-100",children:["Last Updated ",h(e)]})]}),(0,o.jsxs)("div",{className:"max-w-2xl mb-20",children:[(0,o.jsx)("h1",{className:"text-3xl font-bold font-space-mono text-irohGray-700 mb-4"}),(0,o.jsx)("p",{className:"text-irohGray-500"})]}),(0,o.jsx)(x,{data:c.a})]})}function x({data:e}){return e.map((e,t)=>e.section?(0,o.jsx)(f,{data:e},t):e.version?(0,o.jsx)(v,{data:e},t):!1===e.all_done||!0===e.all_done?(0,o.jsx)(j,{data:e},t):e.ellipsis?(0,o.jsx)(k,{data:e},t):(0,o.jsx)(w,{data:e},t))}function f({data:e}){let{section:t,startCollapsed:r,milestones:i}=e,[s,n]=(0,p.useState)(r),l=h(i.find(e=>e.released).released,!0),a=h(i.findLast(e=>e.released).released,!0);return(0,o.jsxs)("div",{children:[(0,o.jsxs)("div",{style:{marginLeft:"6.5rem"},className:"pr-5 relative flex gap-4 w-full",children:[(0,o.jsx)("button",{className:"cursor-pointer border-1 border-irohPurple-400 p-3 w-12 h-12 rounded-full",onClick:()=>n(!s),children:s?(0,o.jsx)(m.A,{}):(0,o.jsx)(g.A,{})}),(0,o.jsxs)("button",{className:"text-left cursor-pointer",onClick:()=>n(!s),children:[(0,o.jsx)("h3",{className:"w-full text-xl leading-6 text-irohGray-600 font-space font-bold dark:text-irohGray-400",children:t}),(0,o.jsxs)("p",{className:"text-xs text-irohGray-400 dark:text-irohGray-600",children:[i.filter(e=>e.version).length," releases: ",l," - ",a]})]})]}),!s&&(0,o.jsx)(x,{data:i})]})}function v({data:e}){let{version:t,done:r,doc:i,released:a,expected:d}=e;return(0,o.jsxs)("div",{className:(0,n.A)("pr-5 ml-calc pt-9 pb-2 relative w-32 border-r dark:border-irohGray-700 text-right",r&&"border-irohPurple-500 dark:border-irohPurple-500"),children:[(0,o.jsx)("div",{className:"absolute -right-3.5 top-8 w-7 h-7 rounded-full bg-white dark:bg-irohGray-900",children:r?(0,o.jsx)(l.A,{className:"w-7 h-7 text-irohPurple-500"}):(0,o.jsx)("div",{className:"w-5 h-5 m-1 rounded-full bg-irohGray-600 dark:bg-irohGray-400"})}),(0,o.jsxs)("div",{children:[(0,o.jsx)("h2",{className:"text-lg font-space font-bold tracking-tight leading-tight text-irohGray-400",children:i?(0,o.jsx)(s(),{className:"text-irohPurple-500 cursor-pointer",href:i,children:t}):t}),a&&(0,o.jsx)("p",{className:"text-xs text-irohGray-400 dark:text-irohGray-600",children:h(a,!0)}),d&&(0,o.jsx)("p",{className:"text-xs text-irohGray-400 dark:text-irohGray-600",children:d})]})]})}function w({data:e}
1){let{done:t,title:r,description:i,subtasks:s,tracking_issue:a,doc:d}=e,c=a?.split("/").slice(-1)[0];return(0,o.jsxs)("div",{style:{marginLeft:"7.95rem"},className:(0,n.A)("border-l relative pb-5 max-w-md dark:border-irohGray-700",t&&"border-irohPurple-500 dark:border-irohPurple-500"),children:[(0,o.jsx)("div",{className:"absolute -left-2.5 rounded-full bg-white dark:bg-irohGray-900",children:t?(0,o.jsx)(l.A,{className:"w-5 h-5 text-irohPurple-500"}):(0,o.jsx)("div",{className:"w-3 h-3 m-1 rounded-full bg-irohGray-600 dark:bg-irohGray-400"})}),(0,o.jsxs)("div",{className:"px-4 pb-3",children:[(0,o.jsx)("h3",{className:"text-xl mb-1 leading-6 text-irohGray-600 font-space font-bold dark:text-irohGray-400",children:r}),(0,o.jsx)("p",{className:"text-sm leading-5 font-space text-irohGray-500",children:i}),a&&(0,o.jsxs)("a",{href:a,className:"text-md underline mr-4",children:["#",c]}),d&&(0,o.jsx)("a",{href:d,className:"text-md underline",children:"details"}),(0,o.jsx)(y,{data:s})]})]})}function y({data:e}){return e?(0,o.jsx)("ul",{className:"pl-3 mt-2",children:Object.keys(e).map((t,r)=>(0,o.jsxs)("li",{children:[e[t]?(0,o.jsx)(l.A,{className:"w-4 h-4 text-irohPurple-500 inline-block"}):(0,o.jsx)("div",{className:"w-2.5 h-2.5 ml-0.5 rounded-full bg-irohGray-600 dark:bg-irohGray-500 inline-block"}),(0,o.jsx)("span",{className:"ml-2 leading-tight text-xs font-space-mono text-irohGray-500",children:t})]},r))}):null}function k(){return(0,o.jsxs)("div",{style:{marginLeft:"7.95rem"},className:"relative py-10 border-l max-w-md dark:border-irohGray-700",children:[(0,o.jsx)("div",{className:"absolute -left-2.5 rounded-full bg-white dark:bg-irohGray-900",children:(0,o.jsx)(a.A,{className:"w-5 h-5 text-irohGray-600 dark:text-irohGray-400"})}),(0,o.jsx)("div",{className:"px-4 pb-3",children:(0,o.jsx)("p",{className:"text-sm leading-5 font-space italic text-irohGray-500",children:"future work"})})]})}function j({data:e}){let{title:t,description:r,link:i,all_done:l}=e;return(0,o.jsxs)("div",{style:{marginLeft:"7.95rem"},className:(0,n.A)("relative pb-5 max-w-md dark:border-irohGray-700",l&&"border-irohPurple-500 dark:border-irohPurple-500"),children:[(0,o.jsx)("div",{className:"absolute -left-2.5 rounded-full bg-white dark:bg-irohGray-900",children:(0,o.jsx)(s(),{href:i,children:(0,o.jsx)(d.A,{className:"w-5 h-5 text-irohGray-600 dark:text-irohGray-400"})})}),(0,o.jsxs)("div",{className:"px-4 pb-3",children:[(0,o.jsx)("h3",{className:"text-xl mb-1 leading-6 text-irohGray-600 font-space font-bold dark:text-irohGray-400",children:t}),(0,o.jsx)("p",{className:"text-sm leading-5 font-space text-irohGray-500",children:r})]})]})}},7145:(e,t,r)=>{r.d(t,{BlankLayout:()=>n});var o=r(5155);r(6784);var i=r(8536),s=r(5484);function n({children:e}){return(0,o.jsxs)("div",{children:[(0,o.jsx)(i.HeaderSparse,{}),(0,o.jsx)("div",{className:"px-5 sm:px-0 mt-16 lg:mt-32",children:(0,o.jsx)("div",{className:"xl:relative",children:(0,o.jsx)("div",{className:"mx-auto mt-32 mb-64 max-w-3xl",children:(0,o.jsx)("article",{children:e})})})}),(0,o.jsx)(s.K,{})]})}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.