From 239f4c4d58cdf6734b8719d6dbee809dd58ebe57 Mon Sep 17 00:00:00 2001 From: b5 Date: Thu, 23 Oct 2025 10:44:27 -0400 Subject: [PATCH] feat: past-releases in roadmap --- src/app/roadmap/page.jsx | 66 +++-- src/app/roadmap/roadmap.json | 467 ++++++++++++++++++----------------- 2 files changed, 286 insertions(+), 247 deletions(-) diff --git a/src/app/roadmap/page.jsx b/src/app/roadmap/page.jsx index e8edae90..6371cfab 100644 --- a/src/app/roadmap/page.jsx +++ b/src/app/roadmap/page.jsx @@ -1,3 +1,5 @@ +"use client"; + import Link from 'next/link'; import clsx from 'clsx'; import { CheckCircleIcon, EllipsisHorizontalIcon, TrophyIcon } from '@heroicons/react/20/solid'; @@ -5,13 +7,14 @@ import { CheckCircleIcon, EllipsisHorizontalIcon, TrophyIcon } from '@heroicons/ import roadmap from './roadmap.json'; import { BlankLayout } from '@/components/BlankLayout'; import { formatDate } from '@/lib/formatDate' +import { useState } from 'react'; +import { ArrowDown, ArrowRight, ChevronDown, ChevronRight } from 'lucide-react'; -export const metadata = { - title: 'Roadmap', - description: - 'Iroh 1.0 roadmap. Here\'s where we\'re headed, and progress we made against our goal to date.', -}; - +// export const metadata = { +// title: 'Roadmap', +// description: +// 'Iroh 1.0 roadmap. Here\'s where we\'re headed, and progress we made against our goal to date.', +// }; export default function Component() { const { last_updated } = roadmap; @@ -26,20 +29,50 @@ export default function Component() {

- {roadmap.milestones.map((milestone, i) => { - if (milestone.version) { - return - } else if (milestone.all_done === false || milestone.all_done === true) { - return - } else if (milestone.ellipsis) { - return - } - return - })} + ) } +function Milestones({ data }) { + return data.map((milestone, i) => { + if (milestone.section) { + return
+ } else if (milestone.version) { + return + } else if (milestone.all_done === false || milestone.all_done === true) { + return + } else if (milestone.ellipsis) { + return + } + return + }) +} + +function Section({ data }) { + const { section, startCollapsed, milestones } = data; + const [collapsed, setCollapsed] = useState(startCollapsed); + const first_release_string = formatDate(milestones.find((m) => m.released).released, true) + const last_release_string = formatDate(milestones.findLast((m) => m.released).released, true) + + return ( +
+
+ + +
+ {!collapsed && } +
+ ) +} + function Release({ data }) { const { version, done, doc, released, expected } = data; return ( @@ -63,6 +96,7 @@ function Release({ data }) { ) } + function Milestone({ data }) { const { done, title, description, subtasks, tracking_issue, doc } = data; const issueNunber = tracking_issue?.split("/").slice(-1)[0] diff --git a/src/app/roadmap/roadmap.json b/src/app/roadmap/roadmap.json index 2bedfa45..d8de195c 100644 --- a/src/app/roadmap/roadmap.json +++ b/src/app/roadmap/roadmap.json @@ -1,236 +1,241 @@ { - "last_updated": "2025-10-20", + "last_updated": "2025-10-23", "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 in 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 + { "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 in 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" }, {