diff --git a/docs/content/console/api/api-keys.mdx b/docs/content/console/api/api-keys.mdx new file mode 100644 index 0000000000..7899b1f5a9 --- /dev/null +++ b/docs/content/console/api/api-keys.mdx @@ -0,0 +1,10 @@ +--- +title: "API Keys" +description: "Generate, rotate, and revoke API keys for programmatic access to Walrus Console." +--- + +# API Keys + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/api/api-reference.mdx b/docs/content/console/api/api-reference.mdx new file mode 100644 index 0000000000..44ee94da71 --- /dev/null +++ b/docs/content/console/api/api-reference.mdx @@ -0,0 +1,10 @@ +--- +title: "API Reference" +description: "Complete API reference for Walrus Console endpoints." +--- + +# API Reference + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/api/mcp-server.mdx b/docs/content/console/api/mcp-server.mdx new file mode 100644 index 0000000000..d8b8a3ccbd --- /dev/null +++ b/docs/content/console/api/mcp-server.mdx @@ -0,0 +1,10 @@ +--- +title: "MCP Server Setup" +description: "Connect Claude Code, Cursor, or any MCP-compliant client to Walrus Console using the open-source MCP server." +--- + +# MCP Server Setup + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/billing/free-tier.mdx b/docs/content/console/billing/free-tier.mdx new file mode 100644 index 0000000000..5713bd13d2 --- /dev/null +++ b/docs/content/console/billing/free-tier.mdx @@ -0,0 +1,10 @@ +--- +title: "Free Tier" +description: "Details on the perpetual free tier including storage limits and usage allowances." +--- + +# Free Tier + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/billing/plans-pricing.mdx b/docs/content/console/billing/plans-pricing.mdx new file mode 100644 index 0000000000..5b8e1b5e66 --- /dev/null +++ b/docs/content/console/billing/plans-pricing.mdx @@ -0,0 +1,11 @@ +--- +title: "Plans and Pricing" +description: "Available storage plans and pricing tiers in the Console." + +--- + +# Plans and Pricing + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/billing/usage-pricing.mdx b/docs/content/console/billing/usage-pricing.mdx new file mode 100644 index 0000000000..dc23ec47a7 --- /dev/null +++ b/docs/content/console/billing/usage-pricing.mdx @@ -0,0 +1,10 @@ +--- +title: "Usage-Based Pricing" +description: "How usage-based billing works for reads, storage, and egress beyond the free tier." +--- + +# Usage-Based Pricing + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/datasets/access-models.mdx b/docs/content/console/datasets/access-models.mdx new file mode 100644 index 0000000000..e202adc2f9 --- /dev/null +++ b/docs/content/console/datasets/access-models.mdx @@ -0,0 +1,10 @@ +--- +title: "Access Models" +description: "Choose between public, time-gated, or perpetually gated access for your datasets." +--- + +# Access Models + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/datasets/list-on-marketplace.mdx b/docs/content/console/datasets/list-on-marketplace.mdx new file mode 100644 index 0000000000..4ab1b674fd --- /dev/null +++ b/docs/content/console/datasets/list-on-marketplace.mdx @@ -0,0 +1,10 @@ +--- +title: "List on Marketplace" +description: "Publish your dataset to the Walrus Marketplace directly from the Console." +--- + +# List on Marketplace + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/datasets/upload-dataset.mdx b/docs/content/console/datasets/upload-dataset.mdx new file mode 100644 index 0000000000..2757faff12 --- /dev/null +++ b/docs/content/console/datasets/upload-dataset.mdx @@ -0,0 +1,10 @@ +--- +title: "Upload a Dataset" +description: "Upload a dataset with metadata fields and encryption options." +--- + +# Upload a Dataset + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/datasets/what-are-datasets.mdx b/docs/content/console/datasets/what-are-datasets.mdx new file mode 100644 index 0000000000..aa287f7efd --- /dev/null +++ b/docs/content/console/datasets/what-are-datasets.mdx @@ -0,0 +1,10 @@ +--- +title: "What Are Datasets" +description: "Datasets are a first-class asset type in Walrus Console with metadata, encryption, and access control." +--- + +# What Are Datasets + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/files/epoch-renewal.mdx b/docs/content/console/files/epoch-renewal.mdx new file mode 100644 index 0000000000..2749494e15 --- /dev/null +++ b/docs/content/console/files/epoch-renewal.mdx @@ -0,0 +1,10 @@ +--- +title: "Epoch Renewal" +description: "Understand storage epochs and how to renew them to keep your data available." +--- + +# Epoch Renewal + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/files/manage-files.mdx b/docs/content/console/files/manage-files.mdx new file mode 100644 index 0000000000..0b6e1cce99 --- /dev/null +++ b/docs/content/console/files/manage-files.mdx @@ -0,0 +1,10 @@ +--- +title: "Manage Files" +description: "Rename, delete, and manage metadata for files stored in the Console." +--- + +# Manage Files + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/files/storage-limits.mdx b/docs/content/console/files/storage-limits.mdx new file mode 100644 index 0000000000..ab2e7f454d --- /dev/null +++ b/docs/content/console/files/storage-limits.mdx @@ -0,0 +1,10 @@ +--- +title: "Storage Limits" +description: "Free tier storage limits, encoded vs unencoded sizes, and how limits are calculated." +--- + +# Storage Limits + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/files/upload-browse.mdx b/docs/content/console/files/upload-browse.mdx new file mode 100644 index 0000000000..2840b53b62 --- /dev/null +++ b/docs/content/console/files/upload-browse.mdx @@ -0,0 +1,10 @@ +--- +title: "Upload and Browse" +description: "Upload files and browse your stored data in the Walrus Console." +--- + +# Upload and Browse + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/get-started/create-account.mdx b/docs/content/console/get-started/create-account.mdx new file mode 100644 index 0000000000..24326c12da --- /dev/null +++ b/docs/content/console/get-started/create-account.mdx @@ -0,0 +1,11 @@ +--- +title: "Create an Account" +description: "Set up your Walrus Console account and connect your wallet." + +--- + +# Create an Account + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/get-started/dashboard-tour.mdx b/docs/content/console/get-started/dashboard-tour.mdx new file mode 100644 index 0000000000..e87d825f5b --- /dev/null +++ b/docs/content/console/get-started/dashboard-tour.mdx @@ -0,0 +1,11 @@ +--- +title: "Dashboard Tour" +description: "A guided walkthrough of the Walrus Console dashboard." + +--- + +# Dashboard Tour + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/get-started/first-upload.mdx b/docs/content/console/get-started/first-upload.mdx new file mode 100644 index 0000000000..5af4a89880 --- /dev/null +++ b/docs/content/console/get-started/first-upload.mdx @@ -0,0 +1,11 @@ +--- +title: "Your First Upload" +description: "Upload your first file to Walrus through the Console." + +--- + +# Your First Upload + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/get-started/what-is-console.mdx b/docs/content/console/get-started/what-is-console.mdx new file mode 100644 index 0000000000..346fd63b2b --- /dev/null +++ b/docs/content/console/get-started/what-is-console.mdx @@ -0,0 +1,10 @@ +--- +title: "What Is Walrus Console" +description: "An overview of Walrus Console, the developer-first interface for managing storage, memory, datasets, and API access on Walrus." +--- + +# What Is Walrus Console + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/index.mdx b/docs/content/console/index.mdx new file mode 100644 index 0000000000..7957ea11f9 --- /dev/null +++ b/docs/content/console/index.mdx @@ -0,0 +1,11 @@ +--- +title: "Walrus Console" +description: "Manage storage, monitor usage, and interact with the Walrus network through a visual dashboard." + +--- + +# Walrus Console + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/memory/browse-objects.mdx b/docs/content/console/memory/browse-objects.mdx new file mode 100644 index 0000000000..61fa532a03 --- /dev/null +++ b/docs/content/console/memory/browse-objects.mdx @@ -0,0 +1,10 @@ +--- +title: "Browse Memory Objects" +description: "List, search, and delete individual memory objects within a namespace." +--- + +# Browse Memory Objects + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/memory/epoch-renewal.mdx b/docs/content/console/memory/epoch-renewal.mdx new file mode 100644 index 0000000000..194ffd370b --- /dev/null +++ b/docs/content/console/memory/epoch-renewal.mdx @@ -0,0 +1,10 @@ +--- +title: "Epoch Renewal for Memory" +description: "Renew storage epochs for your Walrus Memory namespaces." +--- + +# Epoch Renewal for Memory + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/memory/namespaces.mdx b/docs/content/console/memory/namespaces.mdx new file mode 100644 index 0000000000..dd0618a184 --- /dev/null +++ b/docs/content/console/memory/namespaces.mdx @@ -0,0 +1,10 @@ +--- +title: "Memory Namespaces" +description: "View and manage your Walrus Memory namespaces directly in the Console." +--- + +# Memory Namespaces + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/security/authentication.mdx b/docs/content/console/security/authentication.mdx new file mode 100644 index 0000000000..030537b029 --- /dev/null +++ b/docs/content/console/security/authentication.mdx @@ -0,0 +1,10 @@ +--- +title: "Authentication" +description: "Sign-in options including Gmail zkLogin, Apple zkLogin, and wallet connection." +--- + +# Authentication + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/security/security-audit.mdx b/docs/content/console/security/security-audit.mdx new file mode 100644 index 0000000000..e75ee4e36e --- /dev/null +++ b/docs/content/console/security/security-audit.mdx @@ -0,0 +1,10 @@ +--- +title: "Security Audit" +description: "Information about the Walrus Console security audit and compliance status." +--- + +# Security Audit + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/teams/create-team.mdx b/docs/content/console/teams/create-team.mdx new file mode 100644 index 0000000000..51df57816f --- /dev/null +++ b/docs/content/console/teams/create-team.mdx @@ -0,0 +1,10 @@ +--- +title: "Create a Team Space" +description: "Set up a shared Company Space for your team with centralized storage management." +--- + +# Create a Team Space + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/teams/invite-members.mdx b/docs/content/console/teams/invite-members.mdx new file mode 100644 index 0000000000..cc709f6414 --- /dev/null +++ b/docs/content/console/teams/invite-members.mdx @@ -0,0 +1,10 @@ +--- +title: "Invite Members" +description: "Invite team members by email and assign roles within your Company Space." +--- + +# Invite Members + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/console/teams/shared-api-keys.mdx b/docs/content/console/teams/shared-api-keys.mdx new file mode 100644 index 0000000000..6049290743 --- /dev/null +++ b/docs/content/console/teams/shared-api-keys.mdx @@ -0,0 +1,10 @@ +--- +title: "Shared API Keys" +description: "Generate and manage shared API keys scoped to your Company Space." +--- + +# Shared API Keys + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/costs/billing-faq.mdx b/docs/content/costs/billing-faq.mdx new file mode 100644 index 0000000000..7cd98ad81a --- /dev/null +++ b/docs/content/costs/billing-faq.mdx @@ -0,0 +1,11 @@ +--- +title: "Billing FAQ" +description: "Common questions about Walrus storage costs and payments." + +--- + +# Billing FAQ + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/costs/cost-calculator.mdx b/docs/content/costs/cost-calculator.mdx new file mode 100644 index 0000000000..623c4af6b9 --- /dev/null +++ b/docs/content/costs/cost-calculator.mdx @@ -0,0 +1,11 @@ +--- +title: "Cost Calculator" +description: "Estimate the cost of storing your data on Walrus." + +--- + +# Cost Calculator + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/costs/index.mdx b/docs/content/costs/index.mdx new file mode 100644 index 0000000000..bde8b67341 --- /dev/null +++ b/docs/content/costs/index.mdx @@ -0,0 +1,11 @@ +--- +title: "Costs and Billing" +description: "Understand storage costs, pricing tiers, and billing on the Walrus network." + +--- + +# Costs and Billing + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/costs/storage-pricing.mdx b/docs/content/costs/storage-pricing.mdx new file mode 100644 index 0000000000..dbf7379248 --- /dev/null +++ b/docs/content/costs/storage-pricing.mdx @@ -0,0 +1,11 @@ +--- +title: "Storage Pricing" +description: "Current pricing for storing data on Walrus, including per-epoch and permanent storage rates." + +--- + +# Storage Pricing + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/build-integrations/api-reference.mdx b/docs/content/marketplace/build-integrations/api-reference.mdx new file mode 100644 index 0000000000..57a90c8823 --- /dev/null +++ b/docs/content/marketplace/build-integrations/api-reference.mdx @@ -0,0 +1,11 @@ +--- +title: "Marketplace API Reference" +description: "API endpoints for interacting with the Walrus Marketplace programmatically." + +--- + +# Marketplace API Reference + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/build-integrations/console-sync.mdx b/docs/content/marketplace/build-integrations/console-sync.mdx new file mode 100644 index 0000000000..afce8d6e02 --- /dev/null +++ b/docs/content/marketplace/build-integrations/console-sync.mdx @@ -0,0 +1,10 @@ +--- +title: "Console to Marketplace Sync" +description: "Bidirectional sync between Walrus Console and the Marketplace." +--- + +# Console to Marketplace Sync + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/build-integrations/embed-widgets.mdx b/docs/content/marketplace/build-integrations/embed-widgets.mdx new file mode 100644 index 0000000000..bc00d4e8dd --- /dev/null +++ b/docs/content/marketplace/build-integrations/embed-widgets.mdx @@ -0,0 +1,11 @@ +--- +title: "Embed Marketplace Widgets" +description: "Embed Marketplace listings and purchase flows into your application." + +--- + +# Embed Marketplace Widgets + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/build-integrations/webhooks-events.mdx b/docs/content/marketplace/build-integrations/webhooks-events.mdx new file mode 100644 index 0000000000..48d4cb54d2 --- /dev/null +++ b/docs/content/marketplace/build-integrations/webhooks-events.mdx @@ -0,0 +1,11 @@ +--- +title: "Webhooks and Events" +description: "Subscribe to Marketplace events and receive real-time notifications." + +--- + +# Webhooks and Events + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/consumers/access-licensed-data.mdx b/docs/content/marketplace/consumers/access-licensed-data.mdx new file mode 100644 index 0000000000..40f27ed4a8 --- /dev/null +++ b/docs/content/marketplace/consumers/access-licensed-data.mdx @@ -0,0 +1,10 @@ +--- +title: "Access Licensed Data" +description: "Retrieve blob IDs and integrate licensed datasets into your pipeline." +--- + +# Access Licensed Data + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/consumers/license-dataset.mdx b/docs/content/marketplace/consumers/license-dataset.mdx new file mode 100644 index 0000000000..cac3d42e30 --- /dev/null +++ b/docs/content/marketplace/consumers/license-dataset.mdx @@ -0,0 +1,10 @@ +--- +title: "License a Dataset" +description: "Purchase and license datasets from the Walrus Marketplace." +--- + +# License a Dataset + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/consumers/renewals.mdx b/docs/content/marketplace/consumers/renewals.mdx new file mode 100644 index 0000000000..b7cb632fc9 --- /dev/null +++ b/docs/content/marketplace/consumers/renewals.mdx @@ -0,0 +1,10 @@ +--- +title: "Renewals and Cancellations" +description: "Renew, cancel, or manage your dataset licenses." +--- + +# Renewals and Cancellations + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/get-started/browse-listings.mdx b/docs/content/marketplace/get-started/browse-listings.mdx new file mode 100644 index 0000000000..e72581ca37 --- /dev/null +++ b/docs/content/marketplace/get-started/browse-listings.mdx @@ -0,0 +1,11 @@ +--- +title: "Browse Listings" +description: "Find and explore data listings on the Walrus Marketplace." + +--- + +# Browse Listings + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/get-started/first-purchase.mdx b/docs/content/marketplace/get-started/first-purchase.mdx new file mode 100644 index 0000000000..b3904b28fc --- /dev/null +++ b/docs/content/marketplace/get-started/first-purchase.mdx @@ -0,0 +1,11 @@ +--- +title: "Your First Purchase" +description: "Buy your first data listing on the Walrus Marketplace." + +--- + +# Your First Purchase + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/get-started/what-is-marketplace.mdx b/docs/content/marketplace/get-started/what-is-marketplace.mdx new file mode 100644 index 0000000000..7f8fbb848f --- /dev/null +++ b/docs/content/marketplace/get-started/what-is-marketplace.mdx @@ -0,0 +1,11 @@ +--- +title: "What Is the Marketplace" +description: "An introduction to the Walrus Marketplace and how it works." + +--- + +# What Is the Marketplace + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/index.mdx b/docs/content/marketplace/index.mdx new file mode 100644 index 0000000000..f85358eaf8 --- /dev/null +++ b/docs/content/marketplace/index.mdx @@ -0,0 +1,11 @@ +--- +title: "Walrus Marketplace" +description: "Buy, sell, and trade data and storage on the Walrus decentralized marketplace." + +--- + +# Walrus Marketplace + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/list-and-sell/create-listing.mdx b/docs/content/marketplace/list-and-sell/create-listing.mdx new file mode 100644 index 0000000000..b8b17decea --- /dev/null +++ b/docs/content/marketplace/list-and-sell/create-listing.mdx @@ -0,0 +1,11 @@ +--- +title: "Create a Listing" +description: "List your data or storage for sale on the Marketplace." + +--- + +# Create a Listing + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/list-and-sell/manage-listings.mdx b/docs/content/marketplace/list-and-sell/manage-listings.mdx new file mode 100644 index 0000000000..53e934853d --- /dev/null +++ b/docs/content/marketplace/list-and-sell/manage-listings.mdx @@ -0,0 +1,11 @@ +--- +title: "Managing Your Listings" +description: "Update, pause, or remove your Marketplace listings." + +--- + +# Managing Your Listings + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/list-and-sell/pricing-royalties.mdx b/docs/content/marketplace/list-and-sell/pricing-royalties.mdx new file mode 100644 index 0000000000..11b94b9238 --- /dev/null +++ b/docs/content/marketplace/list-and-sell/pricing-royalties.mdx @@ -0,0 +1,11 @@ +--- +title: "Pricing and Royalties" +description: "Set pricing and configure royalty structures for your listings." + +--- + +# Pricing and Royalties + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/publishers/access-control.mdx b/docs/content/marketplace/publishers/access-control.mdx new file mode 100644 index 0000000000..e6cb867720 --- /dev/null +++ b/docs/content/marketplace/publishers/access-control.mdx @@ -0,0 +1,10 @@ +--- +title: "Access Control" +description: "Set public, time-gated, or perpetually gated access for your marketplace listings." +--- + +# Access Control + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/publishers/analytics.mdx b/docs/content/marketplace/publishers/analytics.mdx new file mode 100644 index 0000000000..1aea230402 --- /dev/null +++ b/docs/content/marketplace/publishers/analytics.mdx @@ -0,0 +1,10 @@ +--- +title: "Analytics" +description: "Track views, purchases, and revenue for your marketplace listings." +--- + +# Analytics + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/publishers/create-listing.mdx b/docs/content/marketplace/publishers/create-listing.mdx new file mode 100644 index 0000000000..b8b17decea --- /dev/null +++ b/docs/content/marketplace/publishers/create-listing.mdx @@ -0,0 +1,11 @@ +--- +title: "Create a Listing" +description: "List your data or storage for sale on the Marketplace." + +--- + +# Create a Listing + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/publishers/manage-listings.mdx b/docs/content/marketplace/publishers/manage-listings.mdx new file mode 100644 index 0000000000..53e934853d --- /dev/null +++ b/docs/content/marketplace/publishers/manage-listings.mdx @@ -0,0 +1,11 @@ +--- +title: "Managing Your Listings" +description: "Update, pause, or remove your Marketplace listings." + +--- + +# Managing Your Listings + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/marketplace/publishers/pricing-royalties.mdx b/docs/content/marketplace/publishers/pricing-royalties.mdx new file mode 100644 index 0000000000..11b94b9238 --- /dev/null +++ b/docs/content/marketplace/publishers/pricing-royalties.mdx @@ -0,0 +1,11 @@ +--- +title: "Pricing and Royalties" +description: "Set pricing and configure royalty structures for your listings." + +--- + +# Pricing and Royalties + +:::info +This page is under development. Check back soon for updates. +::: diff --git a/docs/content/release-notes.mdx b/docs/content/release-notes.mdx new file mode 100644 index 0000000000..fe870456a7 --- /dev/null +++ b/docs/content/release-notes.mdx @@ -0,0 +1,2451 @@ +--- +title: "Release Notes" +description: "Release notes for Walrus, Walrus Memory, and related tools." +displayed_sidebar: null +hide_table_of_contents: true +--- + +# Release Notes + +Release notes from [Walrus](https://github.com/MystenLabs/walrus/releases) and [Walrus Memory](https://github.com/MystenLabs/MemWal/releases). + + + + + +### Walrus v1.50.0 + +`Mainnet` June 24, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.50.0) + +
+ +A maintenance release on Testnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. + +
+ +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.50.0 + +--- + +### Walrus v1.49.1 + +`Mainnet` May 27, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.49.1) + +
+ +A maintenance release on Mainnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. + +
+ +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.49.1 + +--- + +### Walrus v1.48.1 + +`Mainnet` May 13, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.48.1) + +
+ +A maintenance release on Mainnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. + +
+ +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.48.1 + +--- + +### Walrus v1.47.1 + +`Mainnet` April 29, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.47.1) + +
+ +Enables storage pool support in the storage node and makes the aggregator return a retryable HTTP +503 `BLOB_UNAVAILABLE` (instead of 500) when a blob is only temporarily unretrievable. Blob +attribute headers such as `Content-Type` are now correctly included on range requests when reading +by object ID. + +
+ +#### Storage node + +[#3256](https://github.com/MystenLabs/walrus/pull/3256): enable storage pool support in storage node + +#### Aggregator + +[#3284](https://github.com/MystenLabs/walrus/pull/3284): The `GET /v1/blobs/{blob_id}` endpoint now returns + HTTP 503 with reason `BLOB_UNAVAILABLE` when a blob is temporarily + unretrievable (for example, mid-upload, mid-expiry, or when too many + storage nodes are unreachable to reconstruct the blob or determine a + definitive status). Previously these cases returned HTTP 500. The + terminal 404 `BLOB_NOT_FOUND` response for blobs that do not exist + is unchanged. Clients and CDNs should treat 503 as retryable with + backoff. + +[#3084](https://github.com/MystenLabs/walrus/pull/3084): Blob attribute headers (such as Content-Type) are now correctly included on range request responses when reading blobs by object ID. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.47.1 + +--- + +### Walrus v1.47.0 + +`Testnet` April 22, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.47.0) + +
+ +The Testnet preview of storage pool support in the storage node, plus the aggregator's new retryable +HTTP 503 `BLOB_UNAVAILABLE` response for temporarily unretrievable blobs. Range requests by object +ID now return blob attribute headers such as `Content-Type` correctly. + +
+ +#### Storage node + +[#3256](https://github.com/MystenLabs/walrus/pull/3256): enable storage pool support in storage node + +#### Aggregator + +[#3284](https://github.com/MystenLabs/walrus/pull/3284): The `GET /v1/blobs/{blob_id}` endpoint now returns + HTTP 503 with reason `BLOB_UNAVAILABLE` when a blob is temporarily + unretrievable (for example, mid-upload, mid-expiry, or when too many + storage nodes are unreachable to reconstruct the blob or determine a + definitive status). Previously these cases returned HTTP 500. The + terminal 404 `BLOB_NOT_FOUND` response for blobs that do not exist + is unchanged. Clients and CDNs should treat 503 as retryable with + backoff. + +[#3084](https://github.com/MystenLabs/walrus/pull/3084): Blob attribute headers (such as Content-Type) are now correctly included on range request responses when reading blobs by object ID. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.47.0 + +--- + +### Walrus v1.46.1 + +`Mainnet` April 15, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.46.1) + +
+ +Adds a `reuse_resources` query parameter so the publisher and daemon can resume an existing, +unfinished upload pipeline instead of starting over. + +
+ +#### Publisher + +[#3202](https://github.com/MystenLabs/walrus/pull/3202): allow publisher and daemon to add `reuse_resources` query parameters to try to reuse existing (unfinished) upload pipeline + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.46.1 + +--- + +### Walrus v1.45.2 + +`Mainnet` April 1, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.45.2) + +
+ +Raises the storage node's RocksDB background threads from 2 to 16 and adds the opt-in +`garbage_collection.enable_immediate_data_deletion` parameter. Also fixes a combined-daemon body +size limit that was silently rejecting uploads with 413 errors and adds a `walrus info coin` CLI +subcommand. + +
+ +#### Storage node + +[#3155](https://github.com/MystenLabs/walrus/pull/3155): Increases the number of RocksDB background threads from 2 (RocksDB default) to 16. Can be configured through the config file. + +[#3160](https://github.com/MystenLabs/walrus/pull/3160): Add a new configuration parameter `garbage_collection.enable_immediate_data_deletion`, which defaults to `false`. When processing a `BlobDeleted` event, data is only deleted immediately if this parameter is set to true. + +#### Publisher + +[#3072](https://github.com/MystenLabs/walrus/pull/3072): Fixed body size limit in combined daemon mode (running publisher and aggregator together). The limit was set 1024x too small, causing uploads to be silently rejected with 413 Payload Too Large. Standalone publisher mode was not affected. + +#### CLI + +[#3122](https://github.com/MystenLabs/walrus/pull/3122): Added a new `info` subcommand to the CLI. `walrus info coin` provides the StructTag of the walrus coin given the CLI's configured context. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.45.2 + +--- + +### Walrus v1.45.1 + +`Testnet` March 25, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.45.1) + +
+ +The Testnet preview that raises RocksDB background threads from 2 to 16 and adds the opt-in +`garbage_collection.enable_immediate_data_deletion` parameter. Includes the combined-daemon 413 +upload fix and the new `walrus info coin` CLI subcommand. + +
+ +#### Storage node + +[#3155](https://github.com/MystenLabs/walrus/pull/3155): Increases the number of RocksDB background threads from 2 (RocksDB default) to 16. Can be configured through the config file. + +[#3160](https://github.com/MystenLabs/walrus/pull/3160): Add a new configuration parameter `garbage_collection.enable_immediate_data_deletion`, which defaults to `false`. When processing a `BlobDeleted` event, data is only deleted immediately if this parameter is set to true. + +#### Publisher + +[#3072](https://github.com/MystenLabs/walrus/pull/3072): Fixed body size limit in combined daemon mode (running publisher and aggregator together). The limit was set 1024x too small, causing uploads to be silently rejected with 413 Payload Too Large. Standalone publisher mode was not affected. + +#### CLI + +[#3122](https://github.com/MystenLabs/walrus/pull/3122): Added a new `info` subcommand to the CLI. `walrus info coin` provides the StructTag of the walrus coin given the CLI's configured context. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.45.1 + +--- + +### Walrus v1.44.3 + +`Mainnet` March 19, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.44.3) + +
+ +Fixes a storage node crash caused by outdated epoch state, raises RocksDB background threads from 2 +to 16, and adds the opt-in `garbage_collection.enable_immediate_data_deletion` parameter. + +
+ +#### Storage node + +[#3005](https://github.com/MystenLabs/walrus/pull/3005): Fixed an issue that crashed storage nodes due to outdated epoch state. + +[#3156](https://github.com/MystenLabs/walrus/pull/3156): Increases the number of RocksDB background threads from 2 (RocksDB default) to 16. Can be configured through the config file. + +[#3161](https://github.com/MystenLabs/walrus/pull/3161): Add a new configuration parameter `garbage_collection.enable_immediate_data_deletion`, which defaults to `false`. When processing a `BlobDeleted` event, data is only deleted immediately if this parameter is set to true. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.44.3 + +--- + +### Walrus v1.44.2 + +`Mainnet` March 18, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.44.2) + +#### Storage node + +[#3005](https://github.com/MystenLabs/walrus/pull/3005): Fixed an issue that crashed storage nodes due to outdated epoch state. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.44.2 + +--- + +### Walrus v1.44.1 + +`Testnet` March 11, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.44.1) + +#### Storage node + +[#3005](https://github.com/MystenLabs/walrus/pull/3005): Fixed an issue that crashed storage nodes due to outdated epoch state. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.44.1 + +--- + +### Walrus v1.43.1 + +`Mainnet` March 4, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.43.1) + +
+ +Allows storage nodes to vote on pricing denominated in USD, a capability that becomes usable once +the contract adds support for it. + +
+ +#### Storage node + +[#2960](https://github.com/MystenLabs/walrus/pull/2960): allow storage nodes to vote on pricing based on USD. This functionality can only be used after the contract supports this. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.43.1 + +--- + +### Walrus v1.42.1 + +`Mainnet` February 18, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.42.1) + +
+ +A maintenance release on Mainnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. + +
+ +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.42.1 + +--- + +### Walrus v1.41.1 + +`Mainnet` February 5, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.41.1) + +
+ +Enables garbage collection by default on Mainnet and adds an alpha `/v1alpha/blobs/{blob_id}/stream` +endpoint designed to lower time to first byte when streaming blob data. + +
+ +#### Storage node + +[#2851](https://github.com/MystenLabs/walrus/pull/2851): Garbage collection is now enabled by default on Mainnet. + +#### Aggregator + +[#2801](https://github.com/MystenLabs/walrus/pull/2801): There is a new alpha endpoint `/v1alpha/blobs/{blob_id}/stream` which is intended to reduce latency to first byte, and is intended to be used to stream blob data. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.41.1 + +--- + +### Walrus v1.41.0 + +`Testnet` January 28, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.41.0) + +
+ +The Testnet preview enabling garbage collection by default and introducing the alpha +`/v1alpha/blobs/{blob_id}/stream` endpoint for lower-latency blob streaming. + +
+ +#### Storage node + +[#2851](https://github.com/MystenLabs/walrus/pull/2851): Garbage collection is now enabled by default on Mainnet. + +#### Aggregator + +[#2801](https://github.com/MystenLabs/walrus/pull/2801): There is a new alpha endpoint `/v1alpha/blobs/{blob_id}/stream` which is intended to reduce latency to first byte, and is intended to be used to stream blob data. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.41.0 + +--- + +### Walrus v1.40.3 + +`Mainnet` January 21, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.40.3) + +
+ +Enables database transactions and garbage collection by default on Testnet, both of which can be +turned off in the node configuration; operators using `experimental_use_optimistic_transaction_db` +should remove that flag. + +
+ +#### Storage node + +[#2772](https://github.com/MystenLabs/walrus/pull/2772): Enables DB transactions (implemented in [#247](https://github.com/MystenLabs/walrus/pull/247)5) and garbage collection (implemented in [#2542](https://github.com/MystenLabs/walrus/pull/2542), [#2599](https://github.com/MystenLabs/walrus/pull/2599), and [#272](https://github.com/MystenLabs/walrus/pull/272)5) by default on Testnet. The features can be disabled by adding the following to your node configuration: + ```yaml + db_config: + global: + use_optimistic_transaction_db: false + garbage_collection: + enable_blob_info_cleanup: false + enable_data_deletion: false + ``` + If you have `experimental_use_optimistic_transaction_db: true` in your configuration, you should remove that. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.40.3 + +--- + +### Walrus v1.39.1 + +`Mainnet` January 7, 2026 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.39.1) + +
+ +Storage node operators must remove the obsolete `use_legacy_event_provider` flag from their +configuration if it is still present. + +
+ +#### Storage node + +[#2730](https://github.com/MystenLabs/walrus/pull/2730): +Storage nodes will need to remove the `use_legacy_event_provider` flag from their configuration if it is present. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.39.1 + +--- + +### Walrus v1.38.3 + +`Mainnet` December 10, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.38.3) + +
+ +Delivers significant memory-usage reductions across the aggregator, publisher, and CLI, plus lower +upload latency from fewer Sui RPC requests. Adds a new byte-range read API and an alpha +`/v1alpha/blobs/concat` endpoint, and removes the long-unused `get_recovery_symbol` endpoint. + +
+ +#### Storage node + +[#2715](https://github.com/MystenLabs/walrus/pull/2715): +remove deprecated get_recovery_symbol endpoint, which has not been used for several months + +#### Aggregator + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage when reading blobs with strict consistency check. + +[#2676](https://github.com/MystenLabs/walrus/pull/2676): +Includes a new endpoint `/v1alpha/blobs/concat` handling `GET` and `POST` methods. This endpoint streams the given blobs back as one concatenated response. This is an alpha endpoint and is not yet stable. We're looking for feedback! + +[#2724](https://github.com/MystenLabs/walrus/pull/2724): +introduce a new aggregator API to read byte ranges of a blob + +#### Publisher + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage and slight performance improvements when storing large blobs. + +[#2717](https://github.com/MystenLabs/walrus/pull/2717): +Reduce number of Sui RPC requests and slightly decrease upload latency. + +#### CLI + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage and slight performance improvements when storing blobs, computing the blob ID, and reading blobs with strict consistency check. + +[#2710](https://github.com/MystenLabs/walrus/pull/2710): +Add optional static parameters `n_shards` and `max_epochs_ahead` to the `client_config.yaml` to reduce CLI start-up time. You can obtain the latest version of the config file at http://docs.wal.app/setup/client_config.yaml. + +[#2717](https://github.com/MystenLabs/walrus/pull/2717): +Reduce number of Sui RPC requests and decrease latency when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.38.3 + +--- + +### Walrus v1.38.2 + +`Testnet` December 9, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.38.2) + +
+ +The Testnet build with major memory-usage reductions across the aggregator, publisher, and CLI and +reduced upload latency. Adds a byte-range read API and the alpha `/v1alpha/blobs/concat` endpoint +while removing the deprecated `get_recovery_symbol` endpoint. + +
+ +#### Storage node + +[#2715](https://github.com/MystenLabs/walrus/pull/2715): +remove deprecated get_recovery_symbol endpoint, which has not been used for several months + +#### Aggregator + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage when reading blobs with strict consistency check. + +[#2676](https://github.com/MystenLabs/walrus/pull/2676): +Includes a new endpoint `/v1alpha/blobs/concat` handling `GET` and `POST` methods. This endpoint streams the given blobs back as one concatenated response. This is an alpha endpoint and is not yet stable. We're looking for feedback! + +[#2724](https://github.com/MystenLabs/walrus/pull/2724): +introduce a new aggregator API to read byte ranges of a blob + +#### Publisher + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage and slight performance improvements when storing large blobs. + +[#2717](https://github.com/MystenLabs/walrus/pull/2717): +Reduce number of Sui RPC requests and slightly decrease upload latency. + +#### CLI + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage and slight performance improvements when storing blobs, computing the blob ID, and reading blobs with strict consistency check. + +[#2710](https://github.com/MystenLabs/walrus/pull/2710): +Add optional static parameters `n_shards` and `max_epochs_ahead` to the `client_config.yaml` to reduce CLI start-up time. You can obtain the latest version of the config file at http://docs.wal.app/setup/client_config.yaml. + +[#2717](https://github.com/MystenLabs/walrus/pull/2717): +Reduce number of Sui RPC requests and decrease latency when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.38.2 + +--- + +### Walrus v1.38.1 + +`Testnet` December 3, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.38.1) + +
+ +An earlier Testnet build of the memory-usage and latency improvements across the aggregator, +publisher, and CLI, alongside the new byte-range read API and alpha `/v1alpha/blobs/concat` +endpoint. + +
+ +#### Storage node + +[#2715](https://github.com/MystenLabs/walrus/pull/2715): +remove deprecated get_recovery_symbol endpoint, which has not been used for several months + +#### Aggregator + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage when reading blobs with strict consistency check. + +[#2676](https://github.com/MystenLabs/walrus/pull/2676): +Includes a new endpoint `/v1alpha/blobs/concat` handling `GET` and `POST` methods. This endpoint streams the given blobs back as one concatenated response. This is an alpha endpoint and is not yet stable. We're looking for feedback! + +[#2724](https://github.com/MystenLabs/walrus/pull/2724): +introduce a new aggregator API to read byte ranges of a blob + +#### Publisher + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage and slight performance improvements when storing large blobs. + +[#2717](https://github.com/MystenLabs/walrus/pull/2717): +Reduce number of Sui RPC requests and slightly decrease upload latency. + +#### CLI + +[#2687](https://github.com/MystenLabs/walrus/pull/2687): +Significant reduction in memory usage and slight performance improvements when storing blobs, computing the blob ID, and reading blobs with strict consistency check. + +[#2710](https://github.com/MystenLabs/walrus/pull/2710): +Add optional static parameters `n_shards` and `max_epochs_ahead` to the `client_config.yaml` to reduce CLI start-up time. You can obtain the latest version of the config file at http://docs.wal.app/setup/client_config.yaml. + +[#2717](https://github.com/MystenLabs/walrus/pull/2717): +Reduce number of Sui RPC requests and decrease latency when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.38.1 + +--- + +### Walrus v1.37.0 + +`Mainnet` November 19, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.37.0) + +
+ +Changes the default consistency check on reads; the previous strict behavior can be restored with +the `strict_consistency_check=true` query option or the `--strict-consistency-check` CLI flag. + +
+ +#### Aggregator + +[#2624](https://github.com/MystenLabs/walrus/pull/2624): +**Warning:** The default consistency check changes slightly in this release (`v1.37`). The previous "strict" consistency check can be enabled by using the query option `strict_consistency_check=true`. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +#### CLI + +[#2624](https://github.com/MystenLabs/walrus/pull/2624): +**Warning:** The default consistency check changes slightly in this release (`v1.37`). The previous "strict" consistency check can be enabled by using the CLI option `--strict-consistency-check`. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.37.0 + +--- + +### Walrus v1.36.1 + +`Mainnet` November 7, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.36.1) + +
+ +Adds a `skip_consistency_check` option (and `--skip-consistency-check` CLI flag) for use only with +trusted writers, and trims `server_address` and `server_port` labels from request-duration metrics +for fast, successful responses. + +
+ +#### Storage node + +[#2576](https://github.com/MystenLabs/walrus/pull/2576): +The `http_client_request_duration_*` metrics now omit the `server_address` and `server_port` labels for fast, successful responses. + +#### Aggregator + +[#2622](https://github.com/MystenLabs/walrus/pull/2622): +Add a new query option `skip_consistency_check=true` to skip blob consistency checks. This should only be used if the writer of the corresponding blob is trusted. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +[#2576](https://github.com/MystenLabs/walrus/pull/2576): +The `http_client_request_duration_*` metrics now omit the `server_address` and `server_port` labels for fast, successful responses. + +#### Publisher + +[#2576](https://github.com/MystenLabs/walrus/pull/2576): +The `http_client_request_duration_*` metrics now omit the `server_address` and `server_port` labels for fast, successful responses. + +#### CLI + +[#2622](https://github.com/MystenLabs/walrus/pull/2622): +Add a new CLI option `--skip-consistency-check`. to skip blob consistency checks. This should only be used if the writer of the corresponding blob is trusted. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.36.1 + +--- + +### Walrus v1.35.2 + +`Mainnet` October 29, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.35.2) + +
+ +Brings the trusted-writer `skip_consistency_check` option and `--skip-consistency-check` CLI flag to +Mainnet, and removes `server_address` and `server_port` labels from metrics for fast, successful +responses. + +
+ +#### Storage node + +[#2576](https://github.com/MystenLabs/walrus/pull/2576): +The `http_client_request_duration_*` metrics now omit the `server_address` and `server_port` labels for fast, successful responses. + +#### Aggregator + +[#2622](https://github.com/MystenLabs/walrus/pull/2622): +Add a new query option `skip_consistency_check=true` to skip blob consistency checks. This should only be used if the writer of the corresponding blob is trusted. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +[#2576](https://github.com/MystenLabs/walrus/pull/2576): +The `http_client_request_duration_*` metrics now omit the `server_address` and `server_port` labels for fast, successful responses. + +#### Publisher + +[#2576](https://github.com/MystenLabs/walrus/pull/2576): +The `http_client_request_duration_*` metrics now omit the `server_address` and `server_port` labels for fast, successful responses. + +#### CLI + +[#2622](https://github.com/MystenLabs/walrus/pull/2622): +Add a new CLI option `--skip-consistency-check`. to skip blob consistency checks. This should only be used if the writer of the corresponding blob is trusted. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.35.2 + +--- + +### Walrus v1.35.1 + +`Mainnet` October 23, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.35.1) + +
+ +Delivers a major reduction in memory usage when reading large blobs and adds the sliver range to +`store-quilt` output. Note the warning that the default consistency check will change in v1.37. + +
+ +#### Aggregator + +[#2549](https://github.com/MystenLabs/walrus/pull/2549): +Major reduction in memory usage for large blobs. + +[#2592](https://github.com/MystenLabs/walrus/pull/2592): +**Warning:** The default consistency check will change slightly in `v1.37`. The current strict consistency check can be enabled by the new query option `strict_consistency_check=true`. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +#### CLI + +[#2549](https://github.com/MystenLabs/walrus/pull/2549): +Major reduction in memory usage when reading large blobs. + +[#2561](https://github.com/MystenLabs/walrus/pull/2561): +Added range of slivers for store-quilt command in the output. + +[#2592](https://github.com/MystenLabs/walrus/pull/2592): +**Warning:** The default consistency check will change slightly in `v1.37`. The current strict consistency check can be enabled by the new CLI option `--strict-consistency-check`. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.35.1 + +--- + +### Walrus v1.35.0 + +`Testnet` October 15, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.35.0) + +
+ +The Testnet preview with a major reduction in memory usage for large blobs and sliver-range +information in `store-quilt` output, plus advance notice that the default consistency check changes +in v1.37. + +
+ +#### Aggregator + +[#2549](https://github.com/MystenLabs/walrus/pull/2549): +Major reduction in memory usage for large blobs. + +[#2592](https://github.com/MystenLabs/walrus/pull/2592): +**Warning:** The default consistency check will change slightly in `v1.37`. The current strict consistency check can be enabled by the new query option `strict_consistency_check=true`. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +#### CLI + +[#2549](https://github.com/MystenLabs/walrus/pull/2549): +Major reduction in memory usage when reading large blobs. + +[#2561](https://github.com/MystenLabs/walrus/pull/2561): +Added range of slivers for store-quilt command in the output. + +[#2592](https://github.com/MystenLabs/walrus/pull/2592): +**Warning:** The default consistency check will change slightly in `v1.37`. The current strict consistency check can be enabled by the new CLI option `--strict-consistency-check`. See the [encoding documentation](https://docs.wal.app/design/encoding.html#data-integrity-and-consistency) for the details of the different consistency checks. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.35.0 + +--- + +### Walrus v1.34.2 + +`Mainnet` October 9, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.34.2) + +
+ +Adds an aggregator `--max-blob-size` option to cap the size of requestable blobs. Note the warning +that blobs are stored as deletable by default starting in v1.33; pass `permanent=true` to keep the +old behavior. + +
+ +#### Aggregator + +[#2554](https://github.com/MystenLabs/walrus/pull/2554): +Adds a `--max-blob-size` option to limit the size of blobs that can be requested through the aggregator. + +#### Publisher + +[#2444](https://github.com/MystenLabs/walrus/pull/2444): +**Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `permanent=true` query parameter. + +#### CLI + +[#2444](https://github.com/MystenLabs/walrus/pull/2444): +**Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `--permanent` option when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.34.2 + +--- + +### Walrus v1.34.1 + +`Testnet` October 1, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.34.1) + +
+ +The Testnet build adding the aggregator `--max-blob-size` option, with a reminder that blobs become +deletable by default in v1.33 unless `permanent=true` is set. + +
+ +#### Aggregator + +[#2554](https://github.com/MystenLabs/walrus/pull/2554): +Adds a `--max-blob-size` option to limit the size of blobs that can be requested through the aggregator. + +#### Publisher + +[#2444](https://github.com/MystenLabs/walrus/pull/2444): +**Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `permanent=true` query parameter. + +#### CLI + +[#2444](https://github.com/MystenLabs/walrus/pull/2444): +**Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `--permanent` option when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.34.1 + +--- + +### Walrus v1.33.3 + +`Mainnet` September 29, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.33.3) + +
+ +Adds the aggregator `--max-blob-size` option and marks the switch to deletable-by-default blobs; +pass `permanent=true` (or `--permanent`) to retain permanent storage. + +
+ +#### Aggregator + +[#2554](https://github.com/MystenLabs/walrus/pull/2554): +Adds a `--max-blob-size` option to limit the size of blobs that can be requested through the aggregator. + +#### Publisher && CLI +[#2523](https://github.com/MystenLabs/walrus/pull/2523) & [#2444](https://github.com/MystenLabs/walrus/pull/2444): +**Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `permanent=true` query parameter. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.33.3 + +--- + +### Walrus v1.33.2 + +`Testnet` September 25, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.33.2) + +
+ +Marks the Testnet switch to deletable-by-default blob storage; add `permanent=true` or the +`--permanent` CLI option to keep blobs permanent. + +
+ +#### Publisher + +[#2523](https://github.com/MystenLabs/walrus/pull/2523): **Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `permanent=true` query parameter. + +#### CLI + +[#2523](https://github.com/MystenLabs/walrus/pull/2523): **Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `--permanent` option when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.33.2 + +--- + +### Walrus v1.33.1 + +`Testnet` September 17, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.33.1) + +
+ +An earlier Testnet build introducing deletable-by-default blob storage, with `permanent=true` or +`--permanent` available to preserve the previous behavior. + +
+ +#### Publisher + +[#2523](https://github.com/MystenLabs/walrus/pull/2523): +**Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `permanent=true` query parameter. + +#### CLI + +[#2523](https://github.com/MystenLabs/walrus/pull/2523): +**Warning:** Starting with this release (`v1.33`), blobs are stored as deletable by default; if you want to keep the previous behavior, you need to add the `--permanent` option when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.33.1 + +--- + +### Walrus v1.32.0 + +`Mainnet` September 15, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.32.0) + +
+ +Adds an aggregator endpoint, `/quilts//patches`, that lists all patches contained in a +quilt. + +
+ +#### Aggregator + +[#2405](https://github.com/MystenLabs/walrus/pull/2405): Added new endpoint in aggregator: /quilts/\<quilt-id\>/patches to list all patches in a quilt. + +#### CLI + +[#2427](https://github.com/MystenLabs/walrus/pull/2427): *Note: This change is an internal code quality improvement and does not affect user-facing functionality. No release notes are required as the changes do not impact the external API or user experience.* + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.32.0 + +--- + +### Walrus v1.31.1 + +`Mainnet` August 28, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.31.1) + +
+ +An advance warning that blobs become deletable by default in v1.33; operators who want to keep +permanent storage should begin adding the `permanent=true` query parameter now. + +
+ +#### Publisher & CLI + +[#2424](https://github.com/MystenLabs/walrus/pull/2424): +**Warning:** In `v1.33`, blobs will be stored as deletable by default; if you want to keep the current behavior, you should already start to add the `permanent=true` query parameter. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.31.1 + +--- + +### Walrus v1.30.1 + +`Mainnet` August 14, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.30.1) + +
+ +Storage nodes now restart on a TLS certificate update only when the certificate is near expiry or +its subject or extensions have changed, and they emit warning and error logs for nearly expired +certificates. + +
+ +#### Storage node + +[#2360](https://github.com/MystenLabs/walrus/pull/2360): When the TLS certificate is updated, only restart the node if the currently loaded certificate is about to expire or the subject or extensions have changed. Also, add warning and error logs for (almost) expired certificates. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.30.1 + +--- + +### Walrus v1.30.0 + +`Testnet` August 6, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.30.0) + +
+ +The Testnet preview of smarter TLS certificate handling, where a node restarts only on meaningful +certificate changes and logs warnings for nearly expired certificates. + +
+ +#### Storage node + +[#2360](https://github.com/MystenLabs/walrus/pull/2360): When the TLS certificate is updated, only restart the node if the currently loaded certificate is about to expire or the subject or extensions have changed. Also, add warning and error logs for (almost) expired certificates. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.30.0 + +--- + +### Walrus v1.29.2 + +`Mainnet` July 31, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.29.2) + +
+ +Brings Quilt batch storage to Mainnet with new publisher, aggregator, and CLI support for storing +and reading quilts, plus an `--upload-relay` option. Also fixes startup issues with deleted event +databases and lets new nodes start beyond `MAX_EPOCHS_AHEAD`. + +
+ +#### Storage node + +[#2273](https://github.com/MystenLabs/walrus/pull/2273): Fixes an issue that can occur when a node starts with deleted `events` and `event_blob_writer` DBs. + +[#2193](https://github.com/MystenLabs/walrus/pull/2193): New storage nodes can start in epochs later than `MAX_EPOCHS_AHEAD` (53 on the current Testnet and Mainnet) without any additional action. + +[#2290](https://github.com/MystenLabs/walrus/pull/2290): Add a new configuration parameter for the event processor config to control the interval at which sampled logs are emitted, with a default of 1 hour (previously 30s). + +#### Aggregator + +[#2222](https://github.com/MystenLabs/walrus/pull/2222): +- Added `/v1/blobs/by-quilt-patch-id/{quilt_patch_id}` endpoint to read a blob from a quilt by its `QuiltPatchId` +- Added `/v1/blobs/by-quilt-id/{quilt_id}/{identifier}` endpoint to read a blob from a quilt by its `quilt_id and identifier` + +#### Publisher + +[#2281](https://github.com/MystenLabs/walrus/pull/2281): Add a `permanent` query parameter. **Warning:** In the future, blobs will be stored as deletable by default; to keep the current behavior, you need to add the `permanent=true` query parameter. + +[#2279](https://github.com/MystenLabs/walrus/pull/2279): Added "/v1/quilts" publisher endpoint to store quilts. + +#### CLI + +[#2197](https://github.com/MystenLabs/walrus/pull/2197): +- Added walrus store-quilt command, to store multiple blobs as a single Quilt to Walrus +- Added walrus read-quilt command to read one or more blobs in a Quilt from Walrus +- Added walrus list-patches-in-quilt to check the blobs in a quilt + +[#2151](https://github.com/MystenLabs/walrus/pull/2151): use subsidies contract to proxy register blob call + +[#2281](https://github.com/MystenLabs/walrus/pull/2281): Add a `--permanent` option to the `store` and `store-quilt` commands. **Warning:** In the future, blobs will be stored as deletable by default; to keep the current behavior, you need to add the `--permanent` option when storing blobs. + +[#2384](https://github.com/MystenLabs/walrus/pull/2384): Add the `--upload-relay` option to the `store` and `store-quilt` commands to allow uploading to Walrus via an [Upload Relay](https://docs.wal.app/operator-guide/upload-relay.html). + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.29.2 + +--- + +### Walrus v1.29.1 + +`Testnet` July 23, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.29.1) + +
+ +Introduces Quilt, a batch storage solution for storing and accessing many small files efficiently, +with new `store-quilt`, `read-quilt`, and quilt read endpoints across the CLI, publisher, and +aggregator. Also fixes deleted-event-database startup issues and relaxes the `MAX_EPOCHS_AHEAD` +constraint for new nodes. + +
+ +📣📣📣 +As part of this release we are introducing Quilt - a batch storage solution with an intuitive API, designed to make storing and accessing large numbers of small files on Walrus both incredibly convenient, efficient, and cost-effective. For more details please see https://www.walrus.xyz/blog/introducing-quilt. + +#### Storage node + +[#2273](https://github.com/MystenLabs/walrus/pull/2273): Fixes an issue that can occur when a node starts with deleted `events` and `event_blob_writer` DBs. + +[#2193](https://github.com/MystenLabs/walrus/pull/2193): New storage nodes can start in epochs later than `MAX_EPOCHS_AHEAD` (53 on the current Testnet and Mainnet) without any additional action. + +[#2290](https://github.com/MystenLabs/walrus/pull/2290): Add a new configuration parameter for the event processor config to control the interval at which sampled logs are emitted with a default of 1 hour (previously 30s). + +#### Aggregator + +[#2222](https://github.com/MystenLabs/walrus/pull/2222): +- Added `/v1/blobs/by-quilt-patch-id/{quilt_patch_id}` endpoint to read a blob from a quilt by its `QuiltPatchId` +- Added `/v1/blobs/by-quilt-id/{quilt_id}/{identifier}` endpoint to read a blob from a quilt by its `quilt_id and identifier` + +#### Publisher + +[#2281](https://github.com/MystenLabs/walrus/pull/2281): Add a `permanent` query parameter. **Warning:** In the future, blobs will be stored as deletable by default; to keep the current behavior, you need to add the `permanent=true` query parameter. + +[#2279](https://github.com/MystenLabs/walrus/pull/2279): Added "/v1/quilts" publisher endpoint to store quilts. + +#### CLI + +[#2197](https://github.com/MystenLabs/walrus/pull/2197): +- Added walrus store-quilt command, to store multiple blobs as a single Quilt to Walrus +- Added walrus read-quilt command to read one or more blobs in a Quilt from Walrus +- Added walrus list-patches-in-quilt to check the blobs in a quilt + +[#2151](https://github.com/MystenLabs/walrus/pull/2151): Use subsidies contract to proxy register blob call + +[#2281](https://github.com/MystenLabs/walrus/pull/2281): Add a `--permanent` option to the `store` and `store-quilt` commands. **Warning:** In the future, blobs will be stored as deletable by default; to keep the current behavior, you need to add the `--permanent` option when storing blobs. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.29.1 + +--- + +### Walrus v1.28.4 + +`Mainnet` July 15, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.28.4) + +
+ +Fixes an issue where a blob could be reported as non-existent immediately after certification, +affecting both the aggregator and the CLI. + +
+ +#### Aggregator + +[#2205](https://github.com/MystenLabs/walrus/pull/2205): +Fixes an issue where a blob was sometimes reported as non-existing immediately after certification. + +#### CLI + +[#2205](https://github.com/MystenLabs/walrus/pull/2205): +Fixes an issue where a blob was sometimes reported as non-existing immediately after certification. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.28.4 + +--- + +### Walrus v1.28.3 + +`Testnet` July 11, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.28.3) + +#### Aggregator and CLI + +[#2205](https://github.com/MystenLabs/walrus/pull/2205): Fixes an issue where a blob was sometimes reported as non-existent immediately after certification. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.28.3 + +--- + +### Walrus v1.28.2 + +`Testnet` July 10, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.28.2) + +#### Aggregator + +[#2205](https://github.com/MystenLabs/walrus/pull/2205): +Fixes an issue where a blob was sometimes reported as non-existing immediately after certification. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.28.2 + +--- + +### Walrus v1.28.1 + +`Testnet` July 2, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.28.1) + +
+ +Fixes a storage node startup problem with deleted `events` and `event_blob_writer` databases, along +with the post-certification blob existence reporting fix. + +
+ +#### Storage node + +[#2274](https://github.com/MystenLabs/walrus/pull/2274): +Fixes an issue that can occur when a node starts with deleted `events` and `event_blob_writer` DBs. + +[#2274](https://github.com/MystenLabs/walrus/pull/2274): +Fixes an issue that can occur when a node starts with deleted `events` and `event_blob_writer` DBs. + +[#2274](https://github.com/MystenLabs/walrus/pull/2274): +Fixes an issue that can occur when a node starts with deleted `events` and `event_blob_writer` DBs. + +[#2274](https://github.com/MystenLabs/walrus/pull/2274): +Fixes an issue that can occur when a node starts with deleted `events` and `event_blob_writer` DBs. + +[#2274](https://github.com/MystenLabs/walrus/pull/2274): +Fixes an issue that can occur when a node starts with deleted `events` and `event_blob_writer` DBs. + +#### Aggregator + +[#2205](https://github.com/MystenLabs/walrus/pull/2205): +Fixes an issue where a blob was sometimes reported as non-existing immediately after certification. + +#### CLI + +[#2205](https://github.com/MystenLabs/walrus/pull/2205): +Fixes an issue where a blob was sometimes reported as non-existing immediately after certification. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.28.1 + +--- + +### Walrus v1.27.2 + +`Mainnet` June 26, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.27.2) + +
+ +Adds a `CheckpointManager` and a node admin socket for direct operator interaction with a running +node, and fixes a crash affecting recovering nodes after restart as well as a checkpoint-lag +miscalculation. + +
+ +#### Storage node + +[#2020](https://github.com/MystenLabs/walrus/pull/2020): +* Added a `CheckpointManager` component, which provides + * Periodic checkpoint of the main database + * Interface for manual checkpoint +* Introduced a `node admin socket` so that operators can interact directly with a running node + * Added Checkpoint commands in walrus-node command tool + +[#2179](https://github.com/MystenLabs/walrus/pull/2179): +Fixes an issue where recovering nodes crash after being restarted. + +[#2188](https://github.com/MystenLabs/walrus/pull/2188): +Fixes a bug in computing checkpoint lag that sometimes resulted in very high values. + +#### CLI + +[#2140](https://github.com/MystenLabs/walrus/pull/2140): +Adds node-admin command to compute package digest + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.27.2 + +--- + +### Walrus v1.27.1 + +`Testnet` June 18, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.27.1) + +
+ +The Testnet preview adding the `CheckpointManager` component and node admin socket, plus fixes for +recovering-node restart crashes and inflated checkpoint-lag values. + +
+ +#### Storage node + +[#2020](https://github.com/MystenLabs/walrus/pull/2020): +* Added a `CheckpointManager` component, which provides + * Periodic checkpoint of the main database + * Interface for manual checkpoint +* Introduced a `node admin socket` so that operators can interact directly with a running node + * Added Checkpoint commands in walrus-node command tool + +[#2179](https://github.com/MystenLabs/walrus/pull/2179): +Fixes an issue where recovering nodes crash after being restarted. + +[#2188](https://github.com/MystenLabs/walrus/pull/2188): +Fixes a bug in computing checkpoint lag that sometimes resulted in very high values. + +#### CLI + +[#2140](https://github.com/MystenLabs/walrus/pull/2140): +Adds node-admin command to compute package digest + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.27.1 + +--- + +### Walrus v1.26.4 + +`Mainnet` June 10, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.26.4) + +
+ +Adds multi-URL Sui RPC configuration via `rpc_urls` and removes the implicit fallback to the public +Testnet full node. Note the breaking change where metrics and REST API endpoints now bind to the +configured address rather than always to `0.0.0.0`. + +
+ +#### Storage node + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): +Use the metrics and REST API address from the configuration file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, set the `metrics_address` and `rest_api_address` to `0.0.0.0:` explicitly. + +[#2072](https://github.com/MystenLabs/walrus/pull/2072): +Increase default value of `http2_max_pending_accept_reset_streams` parameter to disable warnings from the `h2` crate. + +[#2067](https://github.com/MystenLabs/walrus/pull/2067): +Reduce verbosity levels of problems with metrics and config sync from ERROR to WARN. + +[#2182](https://github.com/MystenLabs/walrus/pull/2182): +Fixes an issue where recovering nodes crash after being restarted. + +#### Aggregator + +[#2066](https://github.com/MystenLabs/walrus/pull/2066): +Allow specifying Sui RPC URL in the configuration file in addition to the CLI option. + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): +Use the metrics address specified through the CLI options file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, use `--metrics-address 0.0.0.0:` when starting the aggregator. + +#### Publisher + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): +Use the metrics address specified through the CLI options file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, use `--metrics-address 0.0.0.0:` when starting the aggregator. + +#### CLI + +[#2066](https://github.com/MystenLabs/walrus/pull/2066): +Add a new `rpc_urls` field to the client config, which allows setting multiple Sui RPC URLs. The Sui RPC URL(s) used for reads are now selected in the following order: (1) CLI argument, (2) client configuration file, (3) wallet config. If none of these are set, the client will **no longer fall back to the `fullnode.testnet.sui.io`** but instead exit with an error. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.26.4 + +--- + +### Walrus v1.26.3 + +`Mainnet` June 5, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.26.3) + +
+ +Rate-limits concurrent blob recovery during node recovery and adds multi-URL Sui RPC configuration. +Includes the breaking change where services bind to the configured address instead of always to +`0.0.0.0`. + +
+ +#### Storage node + +[#2159](https://github.com/MystenLabs/walrus/pull/2159): feat: rate limit concurrent blob recovery during node recovery + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): Use the metrics and REST API address from the configuration file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, set the `metrics_address` and `rest_api_address` to `0.0.0.0:` explicitly. + +[#2072](https://github.com/MystenLabs/walrus/pull/2072): Increase default value of `http2_max_pending_accept_reset_streams` parameter to disable warnings from the `h2` crate. + +[#2067](https://github.com/MystenLabs/walrus/pull/2067): Reduce verbosity levels of problems with metrics and config sync from ERROR to WARN. + +#### Aggregator + +[#2066](https://github.com/MystenLabs/walrus/pull/2066): Allow specifying Sui RPC URL in the configuration file in addition to the CLI option. + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): Use the metrics address specified through the CLI options file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, use `--metrics-address 0.0.0.0:` when starting the aggregator. + +#### Publisher + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): Use the metrics address specified through the CLI options file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, use `--metrics-address 0.0.0.0:` when starting the aggregator. + +#### CLI + +[#2066](https://github.com/MystenLabs/walrus/pull/2066): Add a new `rpc_urls` field to the client config, which allows setting multiple Sui RPC URLs. The Sui RPC URL(s) used for reads are now selected in the following order: (1) CLI argument, (2) client configuration file, (3) wallet config. If none of these are set, the client will **no longer fall back to the `fullnode.testnet.sui.io`** but instead exit with an error. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.26.3 + +--- + +### Walrus v1.26.2 + +`Testnet` May 28, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.26.2) + +
+ +The Testnet build introducing multi-URL Sui RPC configuration and the breaking change where metrics +and REST API endpoints bind to the configured address rather than always to `0.0.0.0`. + +
+ +#### Storage node + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): +Use the metrics and REST API address from the configuration file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, set the `metrics_address` and `rest_api_address` to `0.0.0.0:` explicitly. + +[#2072](https://github.com/MystenLabs/walrus/pull/2072): +Increase default value of `http2_max_pending_accept_reset_streams` parameter to disable warnings from the `h2` crate. + +[#2067](https://github.com/MystenLabs/walrus/pull/2067): +Reduce verbosity levels of problems with metrics and config sync from ERROR to WARN. + +#### Aggregator + +[#2066](https://github.com/MystenLabs/walrus/pull/2066): +Allow specifying Sui RPC URL in the configuration file in addition to the CLI option. + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): +Use the metrics address specified through the CLI options file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, use `--metrics-address 0.0.0.0:` when starting the aggregator. + +#### Publisher + +[#1630](https://github.com/MystenLabs/walrus/pull/1630): +Use the metrics address specified through the CLI options file instead of always binding to `0.0.0.0`. Note that this bugfix may break some setups that relied on the previous incorrect behavior. To get the old behavior, use `--metrics-address 0.0.0.0:` when starting the aggregator. + +#### CLI + +[#2066](https://github.com/MystenLabs/walrus/pull/2066): +Add a new `rpc_urls` field to the client config, which allows setting multiple Sui RPC URLs. The Sui RPC URL(s) used for reads are now selected in the following order: (1) CLI argument, (2) client configuration file, (3) wallet config. If none of these are set, the client will **no longer fall back to the `fullnode.testnet.sui.io`** but instead exit with an error. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.26.2 + +--- + +### Walrus v1.25.1 + +`Mainnet` May 22, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.25.1) + +
+ +A bug fix adding options to tune compaction write throttling and setting a high write-stalling +threshold on the metadata table. + +
+ +#### Bug Fix + +[#2121](https://github.com/MystenLabs/walrus/pull/2121): add options to update compaction write throttling, and set high write stalling threshold in metadata table + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.25.1 + +--- + +### Walrus v1.25.0 + +`Mainnet` May 22, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.25.0) + +
+ +Speeds up batch blob operations by optimizing storage selection, with no change to the user +workflow. + +
+ +#### CLI + +[#2010](https://github.com/MystenLabs/walrus/pull/2010): Improved performance for batch blob operations by optimizing storage selection. Operations with multiple blobs are now significantly faster with no change to the user workflow. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.25.0 + +--- + +### Walrus v1.24.2 + +`Mainnet` May 12, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.24.2) + +
+ +Adds a publisher `force` store option and a CLI `completion` command, and substantially reduces SUI +gas costs when registering multiple blobs at once. + +
+ +#### Aggregator + +[#2005](https://github.com/MystenLabs/walrus/pull/2005): Improved documentation for shared blob retrieval. + +#### Publisher + +[#2015](https://github.com/MystenLabs/walrus/pull/2015): Adds the possibility to `force` a store operation, like with the CLI. + +#### CLI + +[#2004](https://github.com/MystenLabs/walrus/pull/2004): Major reduction of SUI gas cost when registering multiple blobs simultaneously. + +[#2003](https://github.com/MystenLabs/walrus/pull/2003): Add new `completion` command to generate completion scripts for various shells. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.24.2 + +--- + +### Walrus v1.24.1 + +`Testnet` May 6, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.24.1) + +
+ +The Testnet preview adding a publisher `force` store option and CLI `completion` command, with a +major SUI gas reduction for registering multiple blobs simultaneously. + +
+ +#### Aggregator + +[#2005](https://github.com/MystenLabs/walrus/pull/2005): Improved documentation for shared blob retrieval. + +#### Publisher + +[#2015](https://github.com/MystenLabs/walrus/pull/2015): Adds the possibility to `force` a store operation, like with the CLI. + +#### CLI + +[#2004](https://github.com/MystenLabs/walrus/pull/2004): Major reduction of SUI gas cost when registering multiple blobs simultaneously. + +[#2003](https://github.com/MystenLabs/walrus/pull/2003): Add new `completion` command to generate completion scripts for various shells. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.24.1 + +--- + +### Walrus v1.22.1 + +`Mainnet` April 25, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.22.1) + +
+ +Reduces SUI gas costs for simultaneous blob registration, surfaces storage node checkpoint progress +in the `health` command, and fixes default-location Sui wallet creation. Operators must remove the +`experimental_batch_symbol_recovery` config field. + +
+ +#### Storage node + +[#1976](https://github.com/MystenLabs/walrus/pull/1976): Remove the `experimental_batch_symbol_recovery` config variable; operators must ensure that the field is not present in their configs. + +#### CLI + +[#1973](https://github.com/MystenLabs/walrus/pull/1973): Fetch the checkpoint progress info for storage nodes, in the health command. + +[#1943](https://github.com/MystenLabs/walrus/pull/1943): Fix a bug that prevented the creation of a Sui wallet at the default location through `walrus generate-sui-wallet`. + +[#2008](https://github.com/MystenLabs/walrus/pull/2008): Major reduction of SUI gas cost when registering multiple blobs simultaneously. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.22.1 + +--- + +### Walrus v1.21.2 + +`Mainnet` April 17, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.21.2) + +#### Storage node + +[#1934](https://github.com/MystenLabs/walrus/pull/1934): Optimized default parameters for shard transfer and recovery. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.21.2 + +--- + +### Walrus v1.21.1 + +`Testnet` April 15, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.21.1) + +#### Storage node + +[#1934](https://github.com/MystenLabs/walrus/pull/1934): Optimized default parameters for shard transfer and recovery. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.21.1 + +--- + +### Walrus v1.20.2 + +`Mainnet` April 10, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.20.2) + +
+ +Adds the latest checkpoint sequence number and an estimated checkpoint lag to the CLI `health` +output. + +
+ +#### CLI + +[#1805](https://github.com/MystenLabs/walrus/pull/1805): Added `Latest checkpoint sequence number` and `Estimated checkpoint lag` in health output. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.20.2 + +--- + +### Walrus v1.18.2 + +`Mainnet` March 25, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/mainnet-v1.18.2) + +
+ +Adds TLS certificate monitoring with automatic reboot, new `--network-key-path` and +`--certificate-path` setup options, and a configurable checkpoint request timeout. The publisher's +JWT token now includes a `size` field. + +
+ +#### Storage node + +[#1703](https://github.com/MystenLabs/walrus/pull/1703): Storage node monitors TLS certificate and reboots storage node upon changes. + +[#1715](https://github.com/MystenLabs/walrus/pull/1715): Added optional `--network-key-path` and `--certificate-path` options to the `setup` command, removed `--use-legacy-event-provider` and `--disable-event-blob-writer`. Adjusted defaults for storage prices and commission rates. + +[#1793](https://github.com/MystenLabs/walrus/pull/1793): Adds a configurable timeout to checkpoint requests. + +#### Publisher + +[#1613](https://github.com/MystenLabs/walrus/pull/1613): Add `size` field of JWTToken + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/mainnet-v1.18.2 + +--- + +### Walrus v1.18.1 + +`Testnet` March 20, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.18.1) + +
+ +The Testnet preview of TLS certificate monitoring with automatic reboot and the new key and +certificate setup options, plus the publisher JWT token `size` field. + +
+ +#### Storage node + +[#1703](https://github.com/MystenLabs/walrus/pull/1703): Storage node monitors TLS certificate and reboots storage node upon changes. + +[#1715](https://github.com/MystenLabs/walrus/pull/1715): Added optional `--network-key-path` and `--certificate-path` options to the `setup` command, removed `--use-legacy-event-provider` and `--disable-event-blob-writer`. Adjusted defaults for storage prices and commission rate. + +#### Publisher + +[#1613](https://github.com/MystenLabs/walrus/pull/1613): Add `size` field of JWTToken + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.18.1 + +--- + +### Walrus v1.17.2 + +`Testnet` March 14, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.17.2) + +
+ +Adds `--network-key-path` and `--certificate-path` options to the `setup` command, removes legacy +event-provider flags, and adjusts default storage prices and commission rates. + +
+ +#### Storage node + +[#1717](https://github.com/MystenLabs/walrus/pull/1717): +Added optional `--network-key-path` and `--certificate-path` options to the `setup` command, removed `--use-legacy-event-provider` and `--disable-event-blob-writer`. Adjusted defaults for storage prices and commission rate. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.17.2 + +--- + +### Walrus v1.17.1 + +`Testnet` March 12, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.17.1) + +#### CLI + +[#1685](https://github.com/MystenLabs/walrus/pull/1685): Fixes a bug where an explicitly set wallet path through the `--wallet` CLI option was ignored. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.17.1 + +--- + +### Walrus v1.16.1 + +`Testnet` March 5, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.16.1) + +
+ +Lets the CLI `delete` command accept multiple files, blob IDs, or object IDs (a breaking change to +the delete JSON API) and adds multi-context configuration with a `--context` override. The publisher +now keeps created `Blob` objects by default, replacing `--keep` with `--burn-after-store`. + +
+ +#### Storage node + +[#1592](https://github.com/MystenLabs/walrus/pull/1592): +Enabling updating storage node metadata via local storage node config file. + +[#1640](https://github.com/MystenLabs/walrus/pull/1640): +Fixes a bug in the blob info tracking, where the initial certified epoch was not updated correctly. + +#### Publisher + +[#1628](https://github.com/MystenLabs/walrus/pull/1628): +Changes the default post-store behavior of the publisher to keeping the created `Blob` objects in the main publisher wallet, instead of burning them immediately. Replaces the `--keep` flag with a `--burn-after-store` flag. + +#### CLI + +[#1644](https://github.com/MystenLabs/walrus/pull/1644): +Allow passing multiple files/blob IDs/object IDs to the walrus delete command. + There is a breaking change for the `delete` json API, + +The current syntax is: +``` +{ + "command": { + "delete": { + "file": [...], + "blobId": [...], + "objectId": [...], + "yes": true, + "noStatusCheck": false, + } + } +} +``` + +While one previous example could be: +``` +{ + "command": { + "delete": { + "file": "/path/to/file.txt", + "blobId": "VWr-EVsFCJCl1mdPM8cBZ_c4LkRcpUbmRxjGpiEPQ3w", + "yes": true, + "noStatusCheck": false + } + } +} +``` + +[#1532](https://github.com/MystenLabs/walrus/pull/1532): +support has been introduced for multiple contexts, and a default_context for walrus client invocations. Context can be overriden with the new --context <context> argument. + +Here is an example (with some fake addresses) multi-context config file. + +``` +--- +contexts: + testnet: + system_object: 0x98ebc47370603fe81d9e15491b2f1443d619d1dab720d586e429ed233e1255c1 + staking_object: 0x20266a17b4f1a216727f3eef5772f8d486a9e3b5e319af80a5b75809c035561d + exchange_objects: + - 0x59ab926eb0d94d0d6d6139f11094ea7861914ad2ecffc7411529c60019133997 + - 0x89127f53890840ab6c52fca96b4a5cf853d7de52318d236807ad733f976eef7b + - 0x9f9b4f113862e8b1a3591d7955fadd7c52ecc07cf24be9e3492ce56eb8087805 + - 0xb60118f86ecb38ec79e74586f1bb184939640911ee1d63a84138d080632ee28a + wallet_config: + path: ~/.sui/sui_config/client.yaml + active_env: testnet + devnet: + system_object: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa + staking_object: 0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb + exchange_objects: + - 0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc + - 0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd + - 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee + - 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + wallet_config: + path: ~/.sui/sui_config/client.yaml + active_env: devnet + +default_context: testnet + +``` + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.16.1 + +--- + +### Walrus v1.15.4 + +`Testnet` February 28, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.15.4) + +
+ +Fixes an issue where keys were not loaded into memory when on-chain config parameters were updated, +and makes the publisher use the correct default encoding type. + +
+ +#### Storage node + +[#1655](https://github.com/MystenLabs/walrus/pull/1655): +Fix an issue where keys were not properly loaded into memory when updating on-chain config parameters. + +#### Publisher + +[#1655](https://github.com/MystenLabs/walrus/pull/1655): +Use the correct encoding type by default. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.15.4 + +--- + +### Walrus v1.15.3 + +`Testnet` February 27, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.15.3) + +
+ +Adds support for multiple encoding types across the storage node, publisher, and CLI, and lets the +aggregator return allow-listed blob attributes as response headers. Storage nodes can now +auto-reload configuration changes from disk, and the CLI gains `--sort-by` and `--desc` options for +`health` and `info`. + +
+ +#### Storage node + +[#1548](https://github.com/MystenLabs/walrus/pull/1548): Automatically reload the StorageNodeConfig from disk and update the on-chain configuration when changes are detected. Some changes may result in an automatic restart of the storage nodes. + +[#1608](https://github.com/MystenLabs/walrus/pull/1608): Storage node now supports multiple encoding types. Depending on features selected at compile time, it accepts a subset of them. + +#### Aggregator + +[#1591](https://github.com/MystenLabs/walrus/pull/1591): Exposed the aggregator endpoint to allow fetching blobs with associated attributes; if the attribute fields are in the allow-list, they will be included in the response headers. + The current allow-list is: + * "content-disposition" + * "content-encoding" + * "content-language" + * "content-location" + * "content-type" + * "link" + +#### Publisher + +[#1608](https://github.com/MystenLabs/walrus/pull/1608): Added `encoding_type` query parameter. Added additional variants for the encoding type. + +#### CLI + +[#1591](https://github.com/MystenLabs/walrus/pull/1591): Added the allowed-headers option for daemon commands, allowing operators to specify custom allowed headers to filter key-value pairs from the blob attribute. + +[#1594](https://github.com/MystenLabs/walrus/pull/1594): Added `--sort-by` and `--desc` options for `walrus health` and `walrus info` commands, to sort the storage nodes by node-id, node-name, node-status, or node-url. + +[#1606](https://github.com/MystenLabs/walrus/pull/1606): Fix `walrus store` behavior when blobs can be extended. + +[#1608](https://github.com/MystenLabs/walrus/pull/1608): The CLI supports multiple encoding types for reads and writes. Depending on features selected at compile time, it uses a different default type and accepts a subset of them for writes. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.16.0 + +--- + +### Walrus v1.14.0 + +`Testnet` February 19, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.14.0) + +
+ +Enables batch symbol recovery by default and adds CLI commands to set, get, and remove blob +attributes. The `walrus store` command now extends the lifetime of matching owned blobs instead of +re-registering them. + +
+ +#### Storage node + +[#1568](https://github.com/MystenLabs/walrus/pull/1568): The new batch symbol recovery is enabled by default. + +#### CLI + +[#1546](https://github.com/MystenLabs/walrus/pull/1546): Added the following new commands for blob attribute: +- `walrus set-blob-attribute ` +- `walrus get-blob-attribute [OPTIONS] ` +- `walrus remove-blob-attribute-fields [OPTIONS] ` +- `walrus remove-blob-attribute [OPTIONS] ` + +[#1535](https://github.com/MystenLabs/walrus/pull/1535): The walrus store command now checks for matching owned Blob objects and extends their lifetime if necessary instead of registering the blob again. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.14.0 + +--- + +### Walrus v1.13.2 + +`Testnet` February 13, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.13.2) + +
+ +Fixes the blob-certified metric so it updates only for event blobs and makes the publisher retry +when a refresh fails. + +
+ +[#1576](https://github.com/MystenLabs/walrus/pull/1576): fix: Update blob certified metric only if it is event blob + +[#1575](https://github.com/MystenLabs/walrus/pull/1575): fix(publisher): retry if refresh fails + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.13.2 + +--- + +### Walrus v1.13.1 + +`Testnet` February 12, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.13.1) + +
+ +Reworks TLS configuration by removing the `tls.pem_files` block in favor of `tls.certificate_path` +and `network_key_pair.path`, and enables automatic rotation of the protocol key pair. Adds a CLI +`--ignore-resources` flag. + +
+ +#### Storage node + +[#1509](https://github.com/MystenLabs/walrus/pull/1509): +The config block `tls.pem_files` has been removed. Provide a TLS certificate path by the `tls.certificate_path` config argument, and the PKCS#8 PEM-encoded TLS private using `network_key_pair.path`. + +[#1461](https://github.com/MystenLabs/walrus/pull/1461): +Storage nodes automatically update and rotate the protocol key pair. This only requires setting the `next_protocol_key_pair` in the config file. + +#### CLI + +[#1551](https://github.com/MystenLabs/walrus/pull/1551): +introduces the `--ignore-resources` flag. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.13.1 + +--- + +### Walrus v1.12.0 + +`Testnet` February 5, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.12.0) + +
+ +Lets the `walrus health` command accept a list of node IDs or URLs; this is a breaking change for +JSON mode, where `nodeId` and `nodeUrl` become `nodeIds` and `nodeUrls`. + +
+ +#### CLI + +[#1486](https://github.com/MystenLabs/walrus/pull/1486): +Adds the ability to provide a list of node IDs or URLs for the `walrus health` command. This is a breaking change for the JSON mode because `nodeId` and `nodeUrl` are changed to `nodeIds` and `nodeUrls`, respectively. The "normal" CLI is backwards-compatible because `--node-id` and `--node-url` are set as aliases for the new options. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.12.0 + +--- + +### Walrus v1.11.0 + +`Testnet` January 29, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.11.0) + +
+ +Adds a CLI `health` command and the ability to extend owned blobs with WAL, and lets storage node +operators change several config parameters by editing the local file and restarting. Deprecates the +recovery symbol endpoint in favor of a new one. + +
+ +#### Storage node + +[#1455](https://github.com/MystenLabs/walrus/pull/1455): +-- Added the feature to change storage node config parameter as following, by changing the local config file and restart node. + +[#1463](https://github.com/MystenLabs/walrus/pull/1463): +Allow setting the metrics push configuration directly in the `walrus-node` setup command. + +[#1476](https://github.com/MystenLabs/walrus/pull/1476): +Correctly set `walrus_current_node_status` metric during startup. + +[#1456](https://github.com/MystenLabs/walrus/pull/1456): +Deprecate the recovery symbol endpoint in favour of a new endpoint. Integrations using recovery symbols should migrate to the new endpoint. + +#### CLI + +[#1406](https://github.com/MystenLabs/walrus/pull/1406): +Add option to extend owned blobs with WAL + +[#1398](https://github.com/MystenLabs/walrus/pull/1398): +adds the `health` command to the CLI. + +[#1428](https://github.com/MystenLabs/walrus/pull/1428): +Add `--earliest-expiry-time` to `store` command so a unix timestamp in ms can be specified. Show human readable time in GMT for estimated expiry time in `blob-status` command. + +[#1474](https://github.com/MystenLabs/walrus/pull/1474): +Allow specifying 'global' options like `--json` anywhere in the command, for example `walrus info --json`. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.11.0 + +--- + +### Walrus v1.10.0 + +`Testnet` January 23, 2025 | [GitHub](https://github.com/MystenLabs/walrus/releases/tag/testnet-v1.10.0) + +
+ +Makes storage node error responses machine-readable, adds error statuses and richer OpenAPI schemas +to the aggregator and publisher, and introduces an optional JWT auth layer for the publisher. Also +adds a `walrus-backup` entrypoint and several CLI fixes and options, including staking with multiple +nodes. + +
+ +#### Storage node + +[#1407](https://github.com/MystenLabs/walrus/pull/1407): Update error responses returned by storage nodes to be machine-readable and contain more details + +#### Aggregator + +[#1407](https://github.com/MystenLabs/walrus/pull/1407): Add error statuses to the responses of failed requests; update endpoint URLs; and add more detailed OpenAPI schemas. + +#### Publisher + +[#1407](https://github.com/MystenLabs/walrus/pull/1407): Add error statuses to the responses of failed requests; update endpoint URLs; and add more detailed OpenAPI schemas. + +[#1345](https://github.com/MystenLabs/walrus/pull/1345): Add optional JWT auth layer for the publisher + +#### CLI + +[#1402](https://github.com/MystenLabs/walrus/pull/1402): This fixes the cost computation for the `store --dry-run` command. + +[#1404](https://github.com/MystenLabs/walrus/pull/1404): Allows staking with multiple nodes simultaneously. + +[#1421](https://github.com/MystenLabs/walrus/pull/1421): Fix serialization of JSON output for the `walrus store` command. + +[#1425](https://github.com/MystenLabs/walrus/pull/1425): Adds the option to specify `max` as the number of epochs. + +[#1388](https://github.com/MystenLabs/walrus/pull/1388): changes to the syntax and output of the `info` command + +#### Backup node + +[#1397](https://github.com/MystenLabs/walrus/pull/1397): an entrypoint called walrus-backup will now be included in the build process. It has minimal (tailing Walrus-related Sui events) functionality at this point. + +--- +#### Full Log: https://github.com/MystenLabs/walrus/commits/testnet-v1.10.0 + +--- + +
+ + + + + + + +### Walrus Memory MCP v0.0.5 + +June 12, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal-mcp%400.0.5) + +
+ +Adds the automatic memory plugin for Claude Code, Codex, Cursor, and Antigravity, along with new +`memwal_remember_bulk` and `memwal_health` tools and proactive memory behavior. Also fixes the +plugin bundle so it ships `.mcp.json` correctly. + +
+ +#### 0.0.5 + +#### Added + +- Automatic memory plugin for Claude Code, Codex, Cursor, and Antigravity. +- New `memwal_remember_bulk` and `memwal_health` tools. + +#### Fixed + +- Ship the plugin's `.mcp.json` in the marketplace bundle. A root gitignore rule excluded it, so plugin installs loaded the lifecycle hooks but never registered the MCP server. + +#### Changed + +- Memory tools are now proactive — agents recall and save context on their own. + +#### Fixed + +- Plugin bundle now ships its `.mcp.json` so the MCP server registers on install. +- Automatically recover from dropped relayer connections that could hang tool calls. + +--- + +### Walrus Memory MCP v0.0.4 + +June 5, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal-mcp%400.0.4) + +
+ +Fixes HTTPS dashboard sign-in callbacks and credential reload after login so tools work without +restarting the MCP client. + +
+ +#### 0.0.4 + +#### Fixed + +- Accept HTTPS dashboard sign-in callbacks to the local `127.0.0.1` MCP listener. +- Reload credentials after `memwal_login` so memory tools work without restarting the MCP client. + +--- + +### Walrus Memory MCP v0.0.3 + +June 4, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal-mcp%400.0.3) + +
+ +Rebrands package metadata from MemWal to Walrus Memory throughout the MCP server. + +
+ +#### 0.0.3 + +#### Changed + +- Rebranded package metadata and documentation from MemWal to Walrus Memory. + +--- + +### Walrus Memory MCP v0.0.2 + +May 24, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal-mcp%400.0.2) + +
+ +Adds relayer compatibility checks and rebrands from MemWal to Walrus Memory across the MCP server +package. + +
+ +#### 0.0.2 + +#### Added + +- Added relayer compatibility metadata checks before opening the MCP bridge. + +#### Changed + +- Rebranded package metadata and documentation from MemWal to Walrus Memory. + +--- + +### Walrus Memory MCP v0.0.1 + +May 14, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal-mcp%400.0.1) + +
+ +Initial release of the MCP server with stdio transport, browser wallet login, and inline session +tools. Includes memory tools for remember, recall, analyze, and restore. + +
+ +#### 0.0.1 + +#### Initial Release + +- Stdio MCP server for MemWal with browser-based wallet login. +- Inline `memwal_login` and `memwal_logout` session tools. +- Memory tools for remember, recall, analyze, and restore through the MemWal relayer. +- Environment presets for production, dev, staging, and local relayers. + +--- + +
+ + + +### Walrus Memory TypeScript SDK v0.0.7 + +June 2, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal%400.0.7) + +
+ +Adds an optional `occurredAt` parameter to `analyze()` for temporal anchoring of extracted facts. +Relative date references are now resolved into absolute dates. + +
+ +#### 0.0.7 + +#### Patch Changes + +- [#218](https://github.com/MystenLabs/MemWal/pull/218) [`333d327`](https://github.com/MystenLabs/MemWal/commit/333d3279f59c2a033225bc99238b7586474333fb) Thanks [@hungtranphamminh](https://github.com/hungtranphamminh)! - Add optional `occurredAt` to `analyze()` and `analyzeAndWait()` for temporal anchoring of extracted facts. + + - New `AnalyzeOptions` overload: `analyze(text, { namespace, occurredAt })` accepts `Date` or RFC-3339 string. The legacy `analyze(text, namespace?)` signature still works unchanged. + - When `occurredAt` is supplied, the server resolves in-turn relative references ("last Friday", "yesterday") into absolute dates inside the extracted fact text before embedding and encryption. + - Wire format is RFC-3339 UTC with millisecond precision (e.g. `"2023-05-25T17:50:00.000Z"`). + - Invalid `Date` instances (constructed from malformed input) now throw a diagnostic `TypeError` from the SDK rather than an opaque `RangeError` from `toISOString()`. + - Field is omitted from the request body when not supplied — existing callers see byte-identical wire payloads. + +--- + +### Walrus Memory TypeScript SDK v0.0.6 + +May 28, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal%400.0.6) + +
+ +Adds `RecallParams` for object-style recall calls and deprecates the positional recall overload. +Also documents `restore()` response fields. + +
+ +#### 0.0.6 + +#### Added + +- Added `RecallParams` for object-style `recall(...)` calls. + +#### Changed + +- Marked the positional `recall(...)` overload as deprecated in favor of `recall({ query, limit, namespace })`. +- Documented `restore()` response fields, default limit, pagination behavior, and performance expectations. + +--- + +### Walrus Memory TypeScript SDK v0.0.5 + +May 24, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal%400.0.5) + +
+ +Adds relayer compatibility checks, `RecallOptions` for `topK`/`namespace`/`maxDistance` filtering, +and prefers Sui gRPC for SEAL sessions. This release also rebrands from MemWal to Walrus Memory. + +
+ +#### 0.0.5 + +#### Added + +- Added relayer compatibility metadata checks before protected requests. +- Added `compatibility()` and exported compatibility types/errors so callers can inspect SDK/relayer support explicitly. +- Added `RecallOptions` for `topK`, namespace override, and `maxDistance`. + +#### Changed + +- Prefer Sui gRPC for SEAL sessions, with JSON-RPC fallback. +- Updated docs/examples for `MEMWAL_PRIVATE_KEY` and hosted relayer defaults. +- Rebranded package metadata and documentation from MemWal to Walrus Memory. + +#### Fixed + +- Made `401` relayer errors more actionable. + +--- + +### Walrus Memory TypeScript SDK v0.0.4 + +May 14, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal%400.0.4) + +
+ +Adds `getRememberStatus` for polling async job state and `SealServerConfig` for manual SEAL +configuration. Manual mode validates API key pairs. + +
+ +#### 0.0.4 + +#### Added + +- Added `getRememberStatus(jobId)` so clients can poll and display the full async remember state machine. +- Added `SealServerConfig` and `sealServerConfigs` for manual-mode SEAL committee aggregator configuration. + +#### Changed + +- Manual mode now normalizes full SEAL server configs, validates optional API key pairs, and caps the default threshold to configured server weight. +- Manual mode keeps testnet defaults on the legacy independent key servers for compatibility with hosted testnet relayer data. + +--- + +### Walrus Memory TypeScript SDK v0.0.3 + +May 7, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal%400.0.3) + +
+ +Updates `remember()` for the async relayer flow and introduces `rememberAsync`, +`waitForRememberJob`, `rememberAndWait`, and bulk remember helpers. Also adds async analysis with +`analyzeAndWait`. + +
+ +#### 0.0.3 + +#### Changed + +- Updated `remember()` for the relayer's async `/api/remember` flow. It now returns the accepted job payload immediately. +- Added `rememberAsync()`, `waitForRememberJob()`, and `rememberAndWait()` for callers that need the final `blob_id`. +- Added bulk remember helpers: `rememberBulk()`, `rememberBulkAsync()`, `waitForRememberJobs()`, and `rememberBulkAndWait()`. +- Updated `analyze()` for async fact storage and added `analyzeAndWait()`. + +#### Compatibility + +- `recall()` and `restore()` remain wire-compatible with the existing relayer responses. +- The SDK continues to use `x-seal-session` for relayer-mode decrypt credentials. + +--- + +### Walrus Memory TypeScript SDK v0.0.2 + +April 29, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/memwal%400.0.2) + +
+ +Adds per-request nonce signing to block replay attacks and replaces delegate key transport with +ephemeral SEAL sessions. SDK versions that do not include a nonce are rejected with HTTP 426. + +
+ +#### 0.0.2 + +#### Security + +- Added per-request `x-nonce` signing to block replay within the timestamp window. +- Added `x-account-id` to the canonical signed message so account hints cannot be rebound in transit. +- Replaced relayer-mode `x-delegate-key` transport with ephemeral `x-seal-session`; manual-mode requests no longer send delegate private key material. +- SDK versions that do not send `x-nonce` are no longer supported by the server and receive `426 Upgrade Required`. + +--- + +
+ + + +### Walrus Memory python v0.1.4 + +June 2, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/memwal-python%400.1.4) + +
+ +A patch release for the Walrus Memory Python SDK. + +
+ +Release memwal Python SDK v0.1.4 + +--- + +### Walrus Memory python v0.1.3 + +May 28, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/memwal-python%400.1.3) + +
+ +A patch release for the Walrus Memory Python SDK. + +
+ +Release memwal Python SDK v0.1.3 + +--- + +### Walrus Memory python v0.1.2 + +May 24, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/memwal-python%400.1.2) + +
+ +A patch release for the Walrus Memory Python SDK. + +
+ +Release memwal Python SDK v0.1.2 + +--- + +### Walrus Memory python v0.1.0 + +May 21, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/memwal-python%400.1.0) + +
+ +Initial release of the Walrus Memory Python SDK. + +
+ +Release memwal Python SDK v0.1.0 + +--- + +
+ + + +### Walrus Memory SDK v0.0.5 + +June 15, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/oc-memwal%400.0.5) + +
+ +Fixes a workspace dependency that broke npm installs outside the monorepo and switches the release +workflow to pnpm publish. + +
+ +#### 0.0.5 + +#### Patch Changes + +- Fix unresolvable `workspace:*` dependency in the published package. The release + workflow used `npm publish`, which ships `package.json` verbatim and cannot + rewrite the `workspace:` protocol, so the published artifact carried + `"@mysten-incubation/memwal": "workspace:*"` and failed to install outside the + monorepo (`Unsupported URL Type 'workspace:'`). Switched the release workflows + to `pnpm publish`, which rewrites `workspace:*` to the concrete dependency + version at pack time. + +--- + +### Walrus Memory SDK v0.0.4 + +June 2, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/oc-memwal%400.0.4) + +
+ +Adds temporal anchoring through `occurredAt` to the `memory_store` tool. The auto-capture hook now +passes the current timestamp, and the SDK is bumped for the new `AnalyzeOptions`. + +
+ +#### 0.0.4 + +#### Patch Changes + +- [#218](https://github.com/MystenLabs/MemWal/pull/218) [`333d327`](https://github.com/MystenLabs/MemWal/commit/333d3279f59c2a033225bc99238b7586474333fb) Thanks [@hungtranphamminh](https://github.com/hungtranphamminh)! - Wire temporal anchoring through the agent-side memory tools. + + ### Added + + - `memory_store` tool now accepts an optional `occurredAt` argument (RFC-3339 / ISO-8601 string) so agents can anchor recounted past events to the date they actually occurred. Description tells the LLM to omit it when unknown rather than guess. + + ### Changed + + - Auto-capture hook (`agent_end`) now passes `new Date()` as `occurredAt` to `analyze()`. Every captured conversation now gets temporal anchoring automatically — the server extractor resolves in-turn relative references ("yesterday", "last Friday") into absolute dates inside the stored fact text. Facts captured by this version now carry resolved dates. + - SDK dependency bumped from published `^0.0.2` to `workspace:*` to consume the new `AnalyzeOptions` signature. + +- Updated dependencies [[`333d327`](https://github.com/MystenLabs/MemWal/commit/333d3279f59c2a033225bc99238b7586474333fb)]: + - @mysten-incubation/memwal@0.0.7 + +--- + +### Walrus Memory SDK v0.0.3 + +May 24, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/oc-memwal%400.0.3) + +
+ +Rebrands from MemWal to Walrus Memory across the OpenClaw memory plugin. + +
+ +#### 0.0.3 + +#### Patch Changes + +- Rebrand package metadata and documentation from MemWal to Walrus Memory. + +--- + +### Walrus Memory SDK v0.0.2 + +April 29, 2026 | [GitHub](https://github.com/MystenLabs/MemWal/releases/tag/%40mysten-incubation/oc-memwal%400.0.2) + +
+ +Initial release of the OpenClaw memory plugin with automatic recall and capture hooks, session +summary, CLI commands, and LLM tools. + +
+ +#### 0.0.1 + +#### Initial Release + +- NemoClaw/OpenClaw memory plugin powered by MemWal +- Automatic memory recall via `before_prompt_build` hook +- Automatic fact capture via `agent_end` hook +- Session summary on `before_reset` hook +- CLI commands: `openclaw memwal stats`, `openclaw memwal search` +- LLM tools: `memory_search`, `memory_store` + +--- + +
+ +
+ +
+ +
+ diff --git a/docs/editorial/memwal-mcp-v0.0.1.md b/docs/editorial/memwal-mcp-v0.0.1.md new file mode 100644 index 0000000000..38ce504a74 --- /dev/null +++ b/docs/editorial/memwal-mcp-v0.0.1.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.1 +description: Initial release of the Walrus Memory MCP server with stdio transport, browser wallet login, inline session tools, and memory... +keywords: ["walrus memory", "release notes", "changelog", "memwal-mcp"] +--- + +**May 15, 2026** + +Initial release of the MCP server with stdio transport, browser wallet login, and inline session +tools. Includes memory tools for remember, recall, analyze, and restore. diff --git a/docs/editorial/memwal-mcp-v0.0.2.md b/docs/editorial/memwal-mcp-v0.0.2.md new file mode 100644 index 0000000000..ba7e59eaf0 --- /dev/null +++ b/docs/editorial/memwal-mcp-v0.0.2.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.2 +description: Adds relayer compatibility checks and rebrands from MemWal to Walrus Memory across the MCP server package... +keywords: ["walrus memory", "release notes", "changelog", "memwal-mcp"] +--- + +**May 25, 2026** + +Adds relayer compatibility checks and rebrands from MemWal to Walrus Memory across the MCP server +package. diff --git a/docs/editorial/memwal-mcp-v0.0.3.md b/docs/editorial/memwal-mcp-v0.0.3.md new file mode 100644 index 0000000000..62c3d4e059 --- /dev/null +++ b/docs/editorial/memwal-mcp-v0.0.3.md @@ -0,0 +1,9 @@ +--- +title: Package v0.0.3 +description: Rebrands package metadata from MemWal to Walrus Memory throughout the MCP server... +keywords: ["walrus memory", "release notes", "changelog", "memwal-mcp"] +--- + +**June 4, 2026** + +Rebrands package metadata from MemWal to Walrus Memory throughout the MCP server. diff --git a/docs/editorial/memwal-mcp-v0.0.4.md b/docs/editorial/memwal-mcp-v0.0.4.md new file mode 100644 index 0000000000..62beee88ae --- /dev/null +++ b/docs/editorial/memwal-mcp-v0.0.4.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.4 +description: Fixes HTTPS dashboard sign-in callbacks and credential reload after login so tools work without restarting the MCP client... +keywords: ["walrus memory", "release notes", "changelog", "memwal-mcp"] +--- + +**June 5, 2026** + +Fixes HTTPS dashboard sign-in callbacks and credential reload after login so tools work without +restarting the MCP client. diff --git a/docs/editorial/memwal-mcp-v0.0.5.md b/docs/editorial/memwal-mcp-v0.0.5.md new file mode 100644 index 0000000000..fd30842d9b --- /dev/null +++ b/docs/editorial/memwal-mcp-v0.0.5.md @@ -0,0 +1,11 @@ +--- +title: Package v0.0.5 +description: Adds the automatic memory plugin for Claude Code, Codex, Cursor, and Antigravity, along with new memwal_remember_bulk and... +keywords: ["walrus memory", "release notes", "changelog", "memwal-mcp"] +--- + +**June 12, 2026** + +Adds the automatic memory plugin for Claude Code, Codex, Cursor, and Antigravity, along with new +`memwal_remember_bulk` and `memwal_health` tools and proactive memory behavior. Also fixes the +plugin bundle so it ships `.mcp.json` correctly. diff --git a/docs/editorial/memwal-openclaw-v0.0.2.md b/docs/editorial/memwal-openclaw-v0.0.2.md new file mode 100644 index 0000000000..c0ccda083d --- /dev/null +++ b/docs/editorial/memwal-openclaw-v0.0.2.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.2 +description: Initial release of the OpenClaw memory plugin with automatic recall and capture hooks, session summary, CLI commands, and LLM... +keywords: ["walrus memory", "release notes", "changelog", "oc-memwal"] +--- + +**April 30, 2026** + +Initial release of the OpenClaw memory plugin with automatic recall and capture hooks, session +summary, CLI commands, and LLM tools. diff --git a/docs/editorial/memwal-openclaw-v0.0.3.md b/docs/editorial/memwal-openclaw-v0.0.3.md new file mode 100644 index 0000000000..af2f325691 --- /dev/null +++ b/docs/editorial/memwal-openclaw-v0.0.3.md @@ -0,0 +1,9 @@ +--- +title: Package v0.0.3 +description: Rebrands from MemWal to Walrus Memory across the OpenClaw memory plugin... +keywords: ["walrus memory", "release notes", "changelog", "oc-memwal"] +--- + +**May 25, 2026** + +Rebrands from MemWal to Walrus Memory across the OpenClaw memory plugin. diff --git a/docs/editorial/memwal-openclaw-v0.0.4.md b/docs/editorial/memwal-openclaw-v0.0.4.md new file mode 100644 index 0000000000..109317aa21 --- /dev/null +++ b/docs/editorial/memwal-openclaw-v0.0.4.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.4 +description: Adds temporal anchoring through occurredAt to the memory_store tool, passes current timestamp from the auto-capture hook, and... +keywords: ["walrus memory", "release notes", "changelog", "oc-memwal"] +--- + +**June 2, 2026** + +Adds temporal anchoring through `occurredAt` to the `memory_store` tool. The auto-capture hook now +passes the current timestamp, and the SDK is bumped for the new `AnalyzeOptions`. diff --git a/docs/editorial/memwal-openclaw-v0.0.5.md b/docs/editorial/memwal-openclaw-v0.0.5.md new file mode 100644 index 0000000000..fa2f4b7568 --- /dev/null +++ b/docs/editorial/memwal-openclaw-v0.0.5.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.5 +description: Fixes a workspace dependency that broke npm installs outside the monorepo and switches the release workflow to pnpm publish... +keywords: ["walrus memory", "release notes", "changelog", "oc-memwal"] +--- + +**June 15, 2026** + +Fixes a workspace dependency that broke npm installs outside the monorepo and switches the release +workflow to pnpm publish. diff --git a/docs/editorial/memwal-python-v0.1.0.md b/docs/editorial/memwal-python-v0.1.0.md new file mode 100644 index 0000000000..462d4063f3 --- /dev/null +++ b/docs/editorial/memwal-python-v0.1.0.md @@ -0,0 +1,9 @@ +--- +title: Package v0.1.0 +description: Initial release of the Walrus Memory Python SDK... +keywords: ["walrus memory", "release notes", "changelog", "memwal-python"] +--- + +**May 21, 2026** + +Initial release of the Walrus Memory Python SDK. diff --git a/docs/editorial/memwal-python-v0.1.2.md b/docs/editorial/memwal-python-v0.1.2.md new file mode 100644 index 0000000000..bea9170f26 --- /dev/null +++ b/docs/editorial/memwal-python-v0.1.2.md @@ -0,0 +1,9 @@ +--- +title: Package v0.1.2 +description: A patch release for the Walrus Memory Python SDK... +keywords: ["walrus memory", "release notes", "changelog", "memwal-python"] +--- + +**May 25, 2026** + +A patch release for the Walrus Memory Python SDK. diff --git a/docs/editorial/memwal-python-v0.1.3.md b/docs/editorial/memwal-python-v0.1.3.md new file mode 100644 index 0000000000..08a62d3747 --- /dev/null +++ b/docs/editorial/memwal-python-v0.1.3.md @@ -0,0 +1,9 @@ +--- +title: Package v0.1.3 +description: A patch release for the Walrus Memory Python SDK... +keywords: ["walrus memory", "release notes", "changelog", "memwal-python"] +--- + +**May 28, 2026** + +A patch release for the Walrus Memory Python SDK. diff --git a/docs/editorial/memwal-python-v0.1.4.md b/docs/editorial/memwal-python-v0.1.4.md new file mode 100644 index 0000000000..0c79af0fda --- /dev/null +++ b/docs/editorial/memwal-python-v0.1.4.md @@ -0,0 +1,9 @@ +--- +title: Package v0.1.4 +description: A patch release for the Walrus Memory Python SDK... +keywords: ["walrus memory", "release notes", "changelog", "memwal-python"] +--- + +**June 2, 2026** + +A patch release for the Walrus Memory Python SDK. diff --git a/docs/editorial/memwal-sdk-v0.0.2.md b/docs/editorial/memwal-sdk-v0.0.2.md new file mode 100644 index 0000000000..76e86a910d --- /dev/null +++ b/docs/editorial/memwal-sdk-v0.0.2.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.2 +description: Adds per-request nonce signing to block replay attacks, replaces delegate key transport with ephemeral SEAL sessions, and... +keywords: ["walrus memory", "release notes", "changelog", "memwal"] +--- + +**April 30, 2026** + +Adds per-request nonce signing to block replay attacks and replaces delegate key transport with +ephemeral SEAL sessions. SDK versions that do not include a nonce are rejected with HTTP 426. diff --git a/docs/editorial/memwal-sdk-v0.0.3.md b/docs/editorial/memwal-sdk-v0.0.3.md new file mode 100644 index 0000000000..8dd1ad22a2 --- /dev/null +++ b/docs/editorial/memwal-sdk-v0.0.3.md @@ -0,0 +1,11 @@ +--- +title: Package v0.0.3 +description: Updates remember() for the async relayer flow and introduces rememberAsync, waitForRememberJob, rememberAndWait, bulk remember... +keywords: ["walrus memory", "release notes", "changelog", "memwal"] +--- + +**May 8, 2026** + +Updates `remember()` for the async relayer flow and introduces `rememberAsync`, +`waitForRememberJob`, `rememberAndWait`, and bulk remember helpers. Also adds async analysis with +`analyzeAndWait`. diff --git a/docs/editorial/memwal-sdk-v0.0.4.md b/docs/editorial/memwal-sdk-v0.0.4.md new file mode 100644 index 0000000000..cbd1613341 --- /dev/null +++ b/docs/editorial/memwal-sdk-v0.0.4.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.4 +description: Adds getRememberStatus for polling async job state and SealServerConfig for manual SEAL configuration with API key pair... +keywords: ["walrus memory", "release notes", "changelog", "memwal"] +--- + +**May 15, 2026** + +Adds `getRememberStatus` for polling async job state and `SealServerConfig` for manual SEAL +configuration. Manual mode validates API key pairs. diff --git a/docs/editorial/memwal-sdk-v0.0.5.md b/docs/editorial/memwal-sdk-v0.0.5.md new file mode 100644 index 0000000000..6929a696e6 --- /dev/null +++ b/docs/editorial/memwal-sdk-v0.0.5.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.5 +description: Adds relayer compatibility checks, RecallOptions for topK/namespace/maxDistance filtering, and prefers Sui gRPC for SEAL... +keywords: ["walrus memory", "release notes", "changelog", "memwal"] +--- + +**May 25, 2026** + +Adds relayer compatibility checks, `RecallOptions` for `topK`/`namespace`/`maxDistance` filtering, +and prefers Sui gRPC for SEAL sessions. This release also rebrands from MemWal to Walrus Memory. diff --git a/docs/editorial/memwal-sdk-v0.0.6.md b/docs/editorial/memwal-sdk-v0.0.6.md new file mode 100644 index 0000000000..88afe7931b --- /dev/null +++ b/docs/editorial/memwal-sdk-v0.0.6.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.6 +description: Adds RecallParams for object-style recall calls, deprecates the positional recall overload, and documents restore() response... +keywords: ["walrus memory", "release notes", "changelog", "memwal"] +--- + +**May 28, 2026** + +Adds `RecallParams` for object-style recall calls and deprecates the positional recall overload. +Also documents `restore()` response fields. diff --git a/docs/editorial/memwal-sdk-v0.0.7.md b/docs/editorial/memwal-sdk-v0.0.7.md new file mode 100644 index 0000000000..106a124a7e --- /dev/null +++ b/docs/editorial/memwal-sdk-v0.0.7.md @@ -0,0 +1,10 @@ +--- +title: Package v0.0.7 +description: Adds an optional occurredAt parameter to analyze() for temporal anchoring of extracted facts, resolving relative date references... +keywords: ["walrus memory", "release notes", "changelog", "memwal"] +--- + +**June 2, 2026** + +Adds an optional `occurredAt` parameter to `analyze()` for temporal anchoring of extracted facts. +Relative date references are now resolved into absolute dates. diff --git a/docs/editorial/walrus-v1.10.0.md b/docs/editorial/walrus-v1.10.0.md new file mode 100644 index 0000000000..6ef1b86cf5 --- /dev/null +++ b/docs/editorial/walrus-v1.10.0.md @@ -0,0 +1,12 @@ +--- +title: Walrus v1.10.0 +description: Makes storage node error responses machine-readable, adds error statuses and richer OpenAPI schemas to the aggregator and... +keywords: ["walrus", "release notes", "changelog", "testnet", "storage node", "aggregator", "publisher", "cli"] +--- + +**Testnet** | January 23, 2025 + +Makes storage node error responses machine-readable, adds error statuses and richer OpenAPI schemas +to the aggregator and publisher, and introduces an optional JWT auth layer for the publisher. Also +adds a `walrus-backup` entrypoint and several CLI fixes and options, including staking with multiple +nodes. diff --git a/docs/editorial/walrus-v1.11.0.md b/docs/editorial/walrus-v1.11.0.md new file mode 100644 index 0000000000..24dbda0066 --- /dev/null +++ b/docs/editorial/walrus-v1.11.0.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.11.0 +description: Adds a CLI health command and the ability to extend owned blobs with WAL, and lets storage node operators change several... +keywords: ["walrus", "release notes", "changelog", "testnet", "storage node", "cli", "blob"] +--- + +**Testnet** | January 29, 2025 + +Adds a CLI `health` command and the ability to extend owned blobs with WAL, and lets storage node +operators change several config parameters by editing the local file and restarting. Deprecates the +recovery symbol endpoint in favor of a new one. diff --git a/docs/editorial/walrus-v1.12.0.md b/docs/editorial/walrus-v1.12.0.md new file mode 100644 index 0000000000..f66c6d5eef --- /dev/null +++ b/docs/editorial/walrus-v1.12.0.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.12.0 +description: Lets the walrus health command accept a list of node IDs or URLs; this is a breaking change for JSON mode, where nodeId and... +keywords: ["walrus", "release notes", "changelog", "testnet"] +--- + +**Testnet** | February 6, 2025 + +Lets the `walrus health` command accept a list of node IDs or URLs; this is a breaking change for +JSON mode, where `nodeId` and `nodeUrl` become `nodeIds` and `nodeUrls`. diff --git a/docs/editorial/walrus-v1.13.1.md b/docs/editorial/walrus-v1.13.1.md new file mode 100644 index 0000000000..9b98c35009 --- /dev/null +++ b/docs/editorial/walrus-v1.13.1.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.13.1 +description: Reworks TLS configuration by removing the tls.pem_files block in favor of tls.certificate_path and network_key_pair.path, and... +keywords: ["walrus", "release notes", "changelog", "testnet", "cli", "tls"] +--- + +**Testnet** | February 12, 2025 + +Reworks TLS configuration by removing the `tls.pem_files` block in favor of `tls.certificate_path` +and `network_key_pair.path`, and enables automatic rotation of the protocol key pair. Adds a CLI +`--ignore-resources` flag. diff --git a/docs/editorial/walrus-v1.13.2.md b/docs/editorial/walrus-v1.13.2.md new file mode 100644 index 0000000000..ed18cb105f --- /dev/null +++ b/docs/editorial/walrus-v1.13.2.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.13.2 +description: Fixes the blob-certified metric so it updates only for event blobs and makes the publisher retry when a refresh fails. +keywords: ["walrus", "release notes", "changelog", "testnet", "publisher", "blob"] +--- + +**Testnet** | February 13, 2025 + +Fixes the blob-certified metric so it updates only for event blobs and makes the publisher retry +when a refresh fails. diff --git a/docs/editorial/walrus-v1.14.0.md b/docs/editorial/walrus-v1.14.0.md new file mode 100644 index 0000000000..202ab9ae48 --- /dev/null +++ b/docs/editorial/walrus-v1.14.0.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.14.0 +description: Enables batch symbol recovery by default and adds CLI commands to set, get, and remove blob attributes. +keywords: ["walrus", "release notes", "changelog", "testnet", "cli", "blob"] +--- + +**Testnet** | February 19, 2025 + +Enables batch symbol recovery by default and adds CLI commands to set, get, and remove blob +attributes. The `walrus store` command now extends the lifetime of matching owned blobs instead of +re-registering them. diff --git a/docs/editorial/walrus-v1.15.3.md b/docs/editorial/walrus-v1.15.3.md new file mode 100644 index 0000000000..c74f865807 --- /dev/null +++ b/docs/editorial/walrus-v1.15.3.md @@ -0,0 +1,12 @@ +--- +title: Walrus v1.15.3 +description: Adds support for multiple encoding types across the storage node, publisher, and CLI, and lets the aggregator return... +keywords: ["walrus", "release notes", "changelog", "testnet", "storage node", "aggregator", "publisher", "cli"] +--- + +**Testnet** | February 27, 2025 + +Adds support for multiple encoding types across the storage node, publisher, and CLI, and lets the +aggregator return allow-listed blob attributes as response headers. Storage nodes can now +auto-reload configuration changes from disk, and the CLI gains `--sort-by` and `--desc` options for +`health` and `info`. diff --git a/docs/editorial/walrus-v1.15.4.md b/docs/editorial/walrus-v1.15.4.md new file mode 100644 index 0000000000..b8ba66e5bb --- /dev/null +++ b/docs/editorial/walrus-v1.15.4.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.15.4 +description: Fixes an issue where keys were not loaded into memory when on-chain config parameters were updated, and makes the publisher... +keywords: ["walrus", "release notes", "changelog", "testnet", "publisher", "encoding"] +--- + +**Testnet** | February 28, 2025 + +Fixes an issue where keys were not loaded into memory when on-chain config parameters were updated, +and makes the publisher use the correct default encoding type. diff --git a/docs/editorial/walrus-v1.16.1.md b/docs/editorial/walrus-v1.16.1.md new file mode 100644 index 0000000000..cfb138ee8f --- /dev/null +++ b/docs/editorial/walrus-v1.16.1.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.16.1 +description: Lets the CLI delete command accept multiple files, blob IDs, or object IDs (a breaking change to the delete JSON API) and adds... +keywords: ["walrus", "release notes", "changelog", "testnet", "publisher", "cli", "blob"] +--- + +**Testnet** | March 5, 2025 + +Lets the CLI `delete` command accept multiple files, blob IDs, or object IDs (a breaking change to +the delete JSON API) and adds multi-context configuration with a `--context` override. The publisher +now keeps created `Blob` objects by default, replacing `--keep` with `--burn-after-store`. diff --git a/docs/editorial/walrus-v1.17.2.md b/docs/editorial/walrus-v1.17.2.md new file mode 100644 index 0000000000..d04a0c5a8d --- /dev/null +++ b/docs/editorial/walrus-v1.17.2.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.17.2 +description: Adds --network-key-path and --certificate-path options to the setup command, removes legacy event-provider flags, and adjusts... +keywords: ["walrus", "release notes", "changelog", "testnet"] +--- + +**Testnet** | March 15, 2025 + +Adds `--network-key-path` and `--certificate-path` options to the `setup` command, removes legacy +event-provider flags, and adjusts default storage prices and commission rates. diff --git a/docs/editorial/walrus-v1.18.1.md b/docs/editorial/walrus-v1.18.1.md new file mode 100644 index 0000000000..eb13280e4d --- /dev/null +++ b/docs/editorial/walrus-v1.18.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.18.1 +description: The Testnet preview of TLS certificate monitoring with automatic reboot and the new key and certificate setup options, plus... +keywords: ["walrus", "release notes", "changelog", "testnet", "publisher", "tls"] +--- + +**Testnet** | March 20, 2025 + +The Testnet preview of TLS certificate monitoring with automatic reboot and the new key and +certificate setup options, plus the publisher JWT token `size` field. diff --git a/docs/editorial/walrus-v1.18.2.md b/docs/editorial/walrus-v1.18.2.md new file mode 100644 index 0000000000..92e7d04300 --- /dev/null +++ b/docs/editorial/walrus-v1.18.2.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.18.2 +description: Adds TLS certificate monitoring with automatic reboot, new --network-key-path and --certificate-path setup options, and a... +keywords: ["walrus", "release notes", "changelog", "mainnet", "publisher", "tls", "checkpoint"] +--- + +**Mainnet** | March 25, 2025 + +Adds TLS certificate monitoring with automatic reboot, new `--network-key-path` and +`--certificate-path` setup options, and a configurable checkpoint request timeout. The publisher's +JWT token now includes a `size` field. diff --git a/docs/editorial/walrus-v1.20.2.md b/docs/editorial/walrus-v1.20.2.md new file mode 100644 index 0000000000..82e6da4a0c --- /dev/null +++ b/docs/editorial/walrus-v1.20.2.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.20.2 +description: Adds the latest checkpoint sequence number and an estimated checkpoint lag to the CLI health output. +keywords: ["walrus", "release notes", "changelog", "mainnet", "cli", "checkpoint"] +--- + +**Mainnet** | April 10, 2025 + +Adds the latest checkpoint sequence number and an estimated checkpoint lag to the CLI `health` +output. diff --git a/docs/editorial/walrus-v1.22.1.md b/docs/editorial/walrus-v1.22.1.md new file mode 100644 index 0000000000..ea2c96fa5b --- /dev/null +++ b/docs/editorial/walrus-v1.22.1.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.22.1 +description: Reduces SUI gas costs for simultaneous blob registration, surfaces storage node checkpoint progress in the health command, and... +keywords: ["walrus", "release notes", "changelog", "mainnet", "storage node", "checkpoint", "blob"] +--- + +**Mainnet** | April 25, 2025 + +Reduces SUI gas costs for simultaneous blob registration, surfaces storage node checkpoint progress +in the `health` command, and fixes default-location Sui wallet creation. Operators must remove the +`experimental_batch_symbol_recovery` config field. diff --git a/docs/editorial/walrus-v1.24.1.md b/docs/editorial/walrus-v1.24.1.md new file mode 100644 index 0000000000..ed8621db76 --- /dev/null +++ b/docs/editorial/walrus-v1.24.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.24.1 +description: The Testnet preview adding a publisher force store option and CLI completion command, with a major SUI gas reduction for... +keywords: ["walrus", "release notes", "changelog", "testnet", "publisher", "cli", "blob"] +--- + +**Testnet** | May 6, 2025 + +The Testnet preview adding a publisher `force` store option and CLI `completion` command, with a +major SUI gas reduction for registering multiple blobs simultaneously. diff --git a/docs/editorial/walrus-v1.24.2.md b/docs/editorial/walrus-v1.24.2.md new file mode 100644 index 0000000000..8ced8416c9 --- /dev/null +++ b/docs/editorial/walrus-v1.24.2.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.24.2 +description: Adds a publisher force store option and a CLI completion command, and substantially reduces SUI gas costs when registering... +keywords: ["walrus", "release notes", "changelog", "mainnet", "publisher", "cli", "blob"] +--- + +**Mainnet** | May 12, 2025 + +Adds a publisher `force` store option and a CLI `completion` command, and substantially reduces SUI +gas costs when registering multiple blobs at once. diff --git a/docs/editorial/walrus-v1.25.0.md b/docs/editorial/walrus-v1.25.0.md new file mode 100644 index 0000000000..6a7f8582b9 --- /dev/null +++ b/docs/editorial/walrus-v1.25.0.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.25.0 +description: Speeds up batch blob operations by optimizing storage selection, with no change to the user workflow. +keywords: ["walrus", "release notes", "changelog", "mainnet", "blob"] +--- + +**Mainnet** | May 22, 2025 + +Speeds up batch blob operations by optimizing storage selection, with no change to the user +workflow. diff --git a/docs/editorial/walrus-v1.25.1.md b/docs/editorial/walrus-v1.25.1.md new file mode 100644 index 0000000000..6c2d99393c --- /dev/null +++ b/docs/editorial/walrus-v1.25.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.25.1 +description: A bug fix adding options to tune compaction write throttling and setting a high write-stalling threshold on the metadata table. +keywords: ["walrus", "release notes", "changelog", "mainnet"] +--- + +**Mainnet** | May 22, 2025 + +A bug fix adding options to tune compaction write throttling and setting a high write-stalling +threshold on the metadata table. diff --git a/docs/editorial/walrus-v1.26.2.md b/docs/editorial/walrus-v1.26.2.md new file mode 100644 index 0000000000..da33f457d5 --- /dev/null +++ b/docs/editorial/walrus-v1.26.2.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.26.2 +description: The Testnet build introducing multi-URL Sui RPC configuration and the breaking change where metrics and REST API endpoints... +keywords: ["walrus", "release notes", "changelog", "testnet"] +--- + +**Testnet** | May 28, 2025 + +The Testnet build introducing multi-URL Sui RPC configuration and the breaking change where metrics +and REST API endpoints bind to the configured address rather than always to `0.0.0.0`. diff --git a/docs/editorial/walrus-v1.26.3.md b/docs/editorial/walrus-v1.26.3.md new file mode 100644 index 0000000000..57afc0c7f0 --- /dev/null +++ b/docs/editorial/walrus-v1.26.3.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.26.3 +description: Rate-limits concurrent blob recovery during node recovery and adds multi-URL Sui RPC configuration. +keywords: ["walrus", "release notes", "changelog", "mainnet", "blob"] +--- + +**Mainnet** | June 5, 2025 + +Rate-limits concurrent blob recovery during node recovery and adds multi-URL Sui RPC configuration. +Includes the breaking change where services bind to the configured address instead of always to +`0.0.0.0`. diff --git a/docs/editorial/walrus-v1.26.4.md b/docs/editorial/walrus-v1.26.4.md new file mode 100644 index 0000000000..c0828ca685 --- /dev/null +++ b/docs/editorial/walrus-v1.26.4.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.26.4 +description: Adds multi-URL Sui RPC configuration via rpc_urls and removes the implicit fallback to the public Testnet full node. +keywords: ["walrus", "release notes", "changelog", "mainnet"] +--- + +**Mainnet** | June 10, 2025 + +Adds multi-URL Sui RPC configuration via `rpc_urls` and removes the implicit fallback to the public +Testnet full node. Note the breaking change where metrics and REST API endpoints now bind to the +configured address rather than always to `0.0.0.0`. diff --git a/docs/editorial/walrus-v1.27.1.md b/docs/editorial/walrus-v1.27.1.md new file mode 100644 index 0000000000..d97e05a756 --- /dev/null +++ b/docs/editorial/walrus-v1.27.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.27.1 +description: The Testnet preview adding the CheckpointManager component and node admin socket, plus fixes for recovering-node restart... +keywords: ["walrus", "release notes", "changelog", "testnet", "checkpoint"] +--- + +**Testnet** | June 18, 2025 + +The Testnet preview adding the `CheckpointManager` component and node admin socket, plus fixes for +recovering-node restart crashes and inflated checkpoint-lag values. diff --git a/docs/editorial/walrus-v1.27.2.md b/docs/editorial/walrus-v1.27.2.md new file mode 100644 index 0000000000..57afe9a3fd --- /dev/null +++ b/docs/editorial/walrus-v1.27.2.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.27.2 +description: Adds a CheckpointManager and a node admin socket for direct operator interaction with a running node, and fixes a crash... +keywords: ["walrus", "release notes", "changelog", "mainnet", "checkpoint"] +--- + +**Mainnet** | June 26, 2025 + +Adds a `CheckpointManager` and a node admin socket for direct operator interaction with a running +node, and fixes a crash affecting recovering nodes after restart as well as a checkpoint-lag +miscalculation. diff --git a/docs/editorial/walrus-v1.28.1.md b/docs/editorial/walrus-v1.28.1.md new file mode 100644 index 0000000000..1d622e8d18 --- /dev/null +++ b/docs/editorial/walrus-v1.28.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.28.1 +description: Fixes a storage node startup problem with deleted events and event_blob_writer databases, along with the post-certification... +keywords: ["walrus", "release notes", "changelog", "testnet", "storage node", "blob"] +--- + +**Testnet** | July 2, 2025 + +Fixes a storage node startup problem with deleted `events` and `event_blob_writer` databases, along +with the post-certification blob existence reporting fix. diff --git a/docs/editorial/walrus-v1.28.4.md b/docs/editorial/walrus-v1.28.4.md new file mode 100644 index 0000000000..d89faa7d58 --- /dev/null +++ b/docs/editorial/walrus-v1.28.4.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.28.4 +description: Fixes an issue where a blob could be reported as non-existent immediately after certification, affecting both the aggregator... +keywords: ["walrus", "release notes", "changelog", "mainnet", "aggregator", "cli", "blob"] +--- + +**Mainnet** | July 15, 2025 + +Fixes an issue where a blob could be reported as non-existent immediately after certification, +affecting both the aggregator and the CLI. diff --git a/docs/editorial/walrus-v1.29.1.md b/docs/editorial/walrus-v1.29.1.md new file mode 100644 index 0000000000..c4822807fc --- /dev/null +++ b/docs/editorial/walrus-v1.29.1.md @@ -0,0 +1,12 @@ +--- +title: Walrus v1.29.1 +description: Introduces Quilt, a batch storage solution for storing and accessing many small files efficiently, with new store-quilt,... +keywords: ["walrus", "release notes", "changelog", "testnet", "aggregator", "publisher", "cli", "quilt"] +--- + +**Testnet** | July 23, 2025 + +Introduces Quilt, a batch storage solution for storing and accessing many small files efficiently, +with new `store-quilt`, `read-quilt`, and quilt read endpoints across the CLI, publisher, and +aggregator. Also fixes deleted-event-database startup issues and relaxes the `MAX_EPOCHS_AHEAD` +constraint for new nodes. diff --git a/docs/editorial/walrus-v1.29.2.md b/docs/editorial/walrus-v1.29.2.md new file mode 100644 index 0000000000..624d1c3cc8 --- /dev/null +++ b/docs/editorial/walrus-v1.29.2.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.29.2 +description: Brings Quilt batch storage to Mainnet with new publisher, aggregator, and CLI support for storing and reading quilts, plus an... +keywords: ["walrus", "release notes", "changelog", "mainnet", "aggregator", "publisher", "cli", "quilt"] +--- + +**Mainnet** | July 31, 2025 + +Brings Quilt batch storage to Mainnet with new publisher, aggregator, and CLI support for storing +and reading quilts, plus an `--upload-relay` option. Also fixes startup issues with deleted event +databases and lets new nodes start beyond `MAX_EPOCHS_AHEAD`. diff --git a/docs/editorial/walrus-v1.30.0.md b/docs/editorial/walrus-v1.30.0.md new file mode 100644 index 0000000000..5a43bbe771 --- /dev/null +++ b/docs/editorial/walrus-v1.30.0.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.30.0 +description: The Testnet preview of smarter TLS certificate handling, where a node restarts only on meaningful certificate changes and logs... +keywords: ["walrus", "release notes", "changelog", "testnet", "tls"] +--- + +**Testnet** | August 6, 2025 + +The Testnet preview of smarter TLS certificate handling, where a node restarts only on meaningful +certificate changes and logs warnings for nearly expired certificates. diff --git a/docs/editorial/walrus-v1.30.1.md b/docs/editorial/walrus-v1.30.1.md new file mode 100644 index 0000000000..ed320009ed --- /dev/null +++ b/docs/editorial/walrus-v1.30.1.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.30.1 +description: Storage nodes now restart on a TLS certificate update only when the certificate is near expiry or its subject or extensions... +keywords: ["walrus", "release notes", "changelog", "mainnet", "storage node", "tls"] +--- + +**Mainnet** | August 14, 2025 + +Storage nodes now restart on a TLS certificate update only when the certificate is near expiry or +its subject or extensions have changed, and they emit warning and error logs for nearly expired +certificates. diff --git a/docs/editorial/walrus-v1.31.1.md b/docs/editorial/walrus-v1.31.1.md new file mode 100644 index 0000000000..2e4e264c98 --- /dev/null +++ b/docs/editorial/walrus-v1.31.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.31.1 +description: An advance warning that blobs become deletable by default in v1.33; operators who want to keep permanent storage should begin... +keywords: ["walrus", "release notes", "changelog", "mainnet", "blob"] +--- + +**Mainnet** | August 28, 2025 + +An advance warning that blobs become deletable by default in v1.33; operators who want to keep +permanent storage should begin adding the `permanent=true` query parameter now. diff --git a/docs/editorial/walrus-v1.32.0.md b/docs/editorial/walrus-v1.32.0.md new file mode 100644 index 0000000000..e3ee5b3add --- /dev/null +++ b/docs/editorial/walrus-v1.32.0.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.32.0 +description: Adds an aggregator endpoint, /quilts//patches, that lists all patches contained in a quilt. +keywords: ["walrus", "release notes", "changelog", "mainnet", "aggregator", "quilt"] +--- + +**Mainnet** | September 15, 2025 + +Adds an aggregator endpoint, `/quilts//patches`, that lists all patches contained in a +quilt. diff --git a/docs/editorial/walrus-v1.33.1.md b/docs/editorial/walrus-v1.33.1.md new file mode 100644 index 0000000000..c0fea1f12a --- /dev/null +++ b/docs/editorial/walrus-v1.33.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.33.1 +description: An earlier Testnet build introducing deletable-by-default blob storage, with permanent=true or --permanent available to... +keywords: ["walrus", "release notes", "changelog", "testnet", "blob"] +--- + +**Testnet** | September 17, 2025 + +An earlier Testnet build introducing deletable-by-default blob storage, with `permanent=true` or +`--permanent` available to preserve the previous behavior. diff --git a/docs/editorial/walrus-v1.33.2.md b/docs/editorial/walrus-v1.33.2.md new file mode 100644 index 0000000000..4fb040b080 --- /dev/null +++ b/docs/editorial/walrus-v1.33.2.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.33.2 +description: Marks the Testnet switch to deletable-by-default blob storage; add permanent=true or the --permanent CLI option to keep blobs... +keywords: ["walrus", "release notes", "changelog", "testnet", "cli", "blob"] +--- + +**Testnet** | September 25, 2025 + +Marks the Testnet switch to deletable-by-default blob storage; add `permanent=true` or the +`--permanent` CLI option to keep blobs permanent. diff --git a/docs/editorial/walrus-v1.33.3.md b/docs/editorial/walrus-v1.33.3.md new file mode 100644 index 0000000000..ad313a0a26 --- /dev/null +++ b/docs/editorial/walrus-v1.33.3.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.33.3 +description: Adds the aggregator --max-blob-size option and marks the switch to deletable-by-default blobs; pass permanent=true (or... +keywords: ["walrus", "release notes", "changelog", "mainnet", "aggregator", "blob"] +--- + +**Mainnet** | September 29, 2025 + +Adds the aggregator `--max-blob-size` option and marks the switch to deletable-by-default blobs; +pass `permanent=true` (or `--permanent`) to retain permanent storage. diff --git a/docs/editorial/walrus-v1.34.1.md b/docs/editorial/walrus-v1.34.1.md new file mode 100644 index 0000000000..36ac641fa6 --- /dev/null +++ b/docs/editorial/walrus-v1.34.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.34.1 +description: The Testnet build adding the aggregator --max-blob-size option, with a reminder that blobs become deletable by default in... +keywords: ["walrus", "release notes", "changelog", "testnet", "aggregator", "blob"] +--- + +**Testnet** | October 1, 2025 + +The Testnet build adding the aggregator `--max-blob-size` option, with a reminder that blobs become +deletable by default in v1.33 unless `permanent=true` is set. diff --git a/docs/editorial/walrus-v1.34.2.md b/docs/editorial/walrus-v1.34.2.md new file mode 100644 index 0000000000..bd0ff206f5 --- /dev/null +++ b/docs/editorial/walrus-v1.34.2.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.34.2 +description: Adds an aggregator --max-blob-size option to cap the size of requestable blobs. +keywords: ["walrus", "release notes", "changelog", "mainnet", "aggregator", "blob"] +--- + +**Mainnet** | October 9, 2025 + +Adds an aggregator `--max-blob-size` option to cap the size of requestable blobs. Note the warning +that blobs are stored as deletable by default starting in v1.33; pass `permanent=true` to keep the +old behavior. diff --git a/docs/editorial/walrus-v1.35.0.md b/docs/editorial/walrus-v1.35.0.md new file mode 100644 index 0000000000..96a89e3d07 --- /dev/null +++ b/docs/editorial/walrus-v1.35.0.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.35.0 +description: The Testnet preview with a major reduction in memory usage for large blobs and sliver-range information in store-quilt output,... +keywords: ["walrus", "release notes", "changelog", "testnet", "quilt", "consistency check", "blob"] +--- + +**Testnet** | October 16, 2025 + +The Testnet preview with a major reduction in memory usage for large blobs and sliver-range +information in `store-quilt` output, plus advance notice that the default consistency check changes +in v1.37. diff --git a/docs/editorial/walrus-v1.35.1.md b/docs/editorial/walrus-v1.35.1.md new file mode 100644 index 0000000000..4186403d1a --- /dev/null +++ b/docs/editorial/walrus-v1.35.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.35.1 +description: Delivers a major reduction in memory usage when reading large blobs and adds the sliver range to store-quilt output. +keywords: ["walrus", "release notes", "changelog", "mainnet", "quilt", "consistency check", "blob"] +--- + +**Mainnet** | October 23, 2025 + +Delivers a major reduction in memory usage when reading large blobs and adds the sliver range to +`store-quilt` output. Note the warning that the default consistency check will change in v1.37. diff --git a/docs/editorial/walrus-v1.35.2.md b/docs/editorial/walrus-v1.35.2.md new file mode 100644 index 0000000000..eb8d756865 --- /dev/null +++ b/docs/editorial/walrus-v1.35.2.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.35.2 +description: Brings the trusted-writer skip_consistency_check option and --skip-consistency-check CLI flag to Mainnet, and removes... +keywords: ["walrus", "release notes", "changelog", "mainnet", "cli"] +--- + +**Mainnet** | October 29, 2025 + +Brings the trusted-writer `skip_consistency_check` option and `--skip-consistency-check` CLI flag to +Mainnet, and removes `server_address` and `server_port` labels from metrics for fast, successful +responses. diff --git a/docs/editorial/walrus-v1.36.1.md b/docs/editorial/walrus-v1.36.1.md new file mode 100644 index 0000000000..2506e36fb6 --- /dev/null +++ b/docs/editorial/walrus-v1.36.1.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.36.1 +description: Adds a skip_consistency_check option (and --skip-consistency-check CLI flag) for use only with trusted writers, and trims... +keywords: ["walrus", "release notes", "changelog", "mainnet", "cli"] +--- + +**Mainnet** | November 7, 2025 + +Adds a `skip_consistency_check` option (and `--skip-consistency-check` CLI flag) for use only with +trusted writers, and trims `server_address` and `server_port` labels from request-duration metrics +for fast, successful responses. diff --git a/docs/editorial/walrus-v1.37.0.md b/docs/editorial/walrus-v1.37.0.md new file mode 100644 index 0000000000..cd9f75e78d --- /dev/null +++ b/docs/editorial/walrus-v1.37.0.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.37.0 +description: Changes the default consistency check on reads; the previous strict behavior can be restored with the... +keywords: ["walrus", "release notes", "changelog", "mainnet", "cli", "consistency check"] +--- + +**Mainnet** | November 19, 2025 + +Changes the default consistency check on reads; the previous strict behavior can be restored with +the `strict_consistency_check=true` query option or the `--strict-consistency-check` CLI flag. diff --git a/docs/editorial/walrus-v1.38.1.md b/docs/editorial/walrus-v1.38.1.md new file mode 100644 index 0000000000..ffe6cf9986 --- /dev/null +++ b/docs/editorial/walrus-v1.38.1.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.38.1 +description: An earlier Testnet build of the memory-usage and latency improvements across the aggregator, publisher, and CLI, alongside the... +keywords: ["walrus", "release notes", "changelog", "testnet", "aggregator", "publisher", "cli", "blob"] +--- + +**Testnet** | December 3, 2025 + +An earlier Testnet build of the memory-usage and latency improvements across the aggregator, +publisher, and CLI, alongside the new byte-range read API and alpha `/v1alpha/blobs/concat` +endpoint. diff --git a/docs/editorial/walrus-v1.38.2.md b/docs/editorial/walrus-v1.38.2.md new file mode 100644 index 0000000000..1dce26ba9e --- /dev/null +++ b/docs/editorial/walrus-v1.38.2.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.38.2 +description: The Testnet build with major memory-usage reductions across the aggregator, publisher, and CLI and reduced upload latency. +keywords: ["walrus", "release notes", "changelog", "testnet", "aggregator", "publisher", "cli", "blob"] +--- + +**Testnet** | December 9, 2025 + +The Testnet build with major memory-usage reductions across the aggregator, publisher, and CLI and +reduced upload latency. Adds a byte-range read API and the alpha `/v1alpha/blobs/concat` endpoint +while removing the deprecated `get_recovery_symbol` endpoint. diff --git a/docs/editorial/walrus-v1.38.3.md b/docs/editorial/walrus-v1.38.3.md new file mode 100644 index 0000000000..87c84fe04f --- /dev/null +++ b/docs/editorial/walrus-v1.38.3.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.38.3 +description: Delivers significant memory-usage reductions across the aggregator, publisher, and CLI, plus lower upload latency from fewer... +keywords: ["walrus", "release notes", "changelog", "mainnet", "aggregator", "publisher", "cli", "blob"] +--- + +**Mainnet** | December 10, 2025 + +Delivers significant memory-usage reductions across the aggregator, publisher, and CLI, plus lower +upload latency from fewer Sui RPC requests. Adds a new byte-range read API and an alpha +`/v1alpha/blobs/concat` endpoint, and removes the long-unused `get_recovery_symbol` endpoint. diff --git a/docs/editorial/walrus-v1.39.1.md b/docs/editorial/walrus-v1.39.1.md new file mode 100644 index 0000000000..e9eb510797 --- /dev/null +++ b/docs/editorial/walrus-v1.39.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.39.1 +description: Storage node operators must remove the obsolete use_legacy_event_provider flag from their configuration if it is still present. +keywords: ["walrus", "release notes", "changelog", "mainnet", "storage node"] +--- + +**Mainnet** | January 7, 2026 + +Storage node operators must remove the obsolete `use_legacy_event_provider` flag from their +configuration if it is still present. diff --git a/docs/editorial/walrus-v1.40.3.md b/docs/editorial/walrus-v1.40.3.md new file mode 100644 index 0000000000..d43294c938 --- /dev/null +++ b/docs/editorial/walrus-v1.40.3.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.40.3 +description: Enables database transactions and garbage collection by default on Testnet, both of which can be turned off in the node... +keywords: ["walrus", "release notes", "changelog", "mainnet", "garbage collection"] +--- + +**Mainnet** | January 21, 2026 + +Enables database transactions and garbage collection by default on Testnet, both of which can be +turned off in the node configuration; operators using `experimental_use_optimistic_transaction_db` +should remove that flag. diff --git a/docs/editorial/walrus-v1.41.0.md b/docs/editorial/walrus-v1.41.0.md new file mode 100644 index 0000000000..e955d4dc7d --- /dev/null +++ b/docs/editorial/walrus-v1.41.0.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.41.0 +description: The Testnet preview enabling garbage collection by default and introducing the alpha /v1alpha/blobs/{blob_id}/stream endpoint... +keywords: ["walrus", "release notes", "changelog", "testnet", "garbage collection", "blob"] +--- + +**Testnet** | January 28, 2026 + +The Testnet preview enabling garbage collection by default and introducing the alpha +`/v1alpha/blobs/{blob_id}/stream` endpoint for lower-latency blob streaming. diff --git a/docs/editorial/walrus-v1.41.1.md b/docs/editorial/walrus-v1.41.1.md new file mode 100644 index 0000000000..84caca0b44 --- /dev/null +++ b/docs/editorial/walrus-v1.41.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.41.1 +description: Enables garbage collection by default on Mainnet and adds an alpha /v1alpha/blobs/{blob_id}/stream endpoint designed to lower... +keywords: ["walrus", "release notes", "changelog", "mainnet", "garbage collection", "blob"] +--- + +**Mainnet** | February 5, 2026 + +Enables garbage collection by default on Mainnet and adds an alpha `/v1alpha/blobs/{blob_id}/stream` +endpoint designed to lower time to first byte when streaming blob data. diff --git a/docs/editorial/walrus-v1.42.1.md b/docs/editorial/walrus-v1.42.1.md new file mode 100644 index 0000000000..dd7eed9406 --- /dev/null +++ b/docs/editorial/walrus-v1.42.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.42.1 +description: A maintenance release on Mainnet with no user-facing changes documented in the release notes; see the full commit log for... +keywords: ["walrus", "release notes", "changelog", "mainnet"] +--- + +**Mainnet** | February 18, 2026 + +A maintenance release on Mainnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. diff --git a/docs/editorial/walrus-v1.43.1.md b/docs/editorial/walrus-v1.43.1.md new file mode 100644 index 0000000000..df38a00c3d --- /dev/null +++ b/docs/editorial/walrus-v1.43.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.43.1 +description: Allows storage nodes to vote on pricing denominated in USD, a capability that becomes usable once the contract adds support... +keywords: ["walrus", "release notes", "changelog", "mainnet", "storage node"] +--- + +**Mainnet** | March 4, 2026 + +Allows storage nodes to vote on pricing denominated in USD, a capability that becomes usable once +the contract adds support for it. diff --git a/docs/editorial/walrus-v1.44.3.md b/docs/editorial/walrus-v1.44.3.md new file mode 100644 index 0000000000..fb2a78b458 --- /dev/null +++ b/docs/editorial/walrus-v1.44.3.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.44.3 +description: Fixes a storage node crash caused by outdated epoch state, raises RocksDB background threads from 2 to 16, and adds the opt-in... +keywords: ["walrus", "release notes", "changelog", "mainnet", "storage node"] +--- + +**Mainnet** | March 19, 2026 + +Fixes a storage node crash caused by outdated epoch state, raises RocksDB background threads from 2 +to 16, and adds the opt-in `garbage_collection.enable_immediate_data_deletion` parameter. diff --git a/docs/editorial/walrus-v1.45.1.md b/docs/editorial/walrus-v1.45.1.md new file mode 100644 index 0000000000..154116060e --- /dev/null +++ b/docs/editorial/walrus-v1.45.1.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.45.1 +description: The Testnet preview that raises RocksDB background threads from 2 to 16 and adds the opt-in... +keywords: ["walrus", "release notes", "changelog", "testnet", "cli"] +--- + +**Testnet** | March 25, 2026 + +The Testnet preview that raises RocksDB background threads from 2 to 16 and adds the opt-in +`garbage_collection.enable_immediate_data_deletion` parameter. Includes the combined-daemon 413 +upload fix and the new `walrus info coin` CLI subcommand. diff --git a/docs/editorial/walrus-v1.45.2.md b/docs/editorial/walrus-v1.45.2.md new file mode 100644 index 0000000000..6cd28f348b --- /dev/null +++ b/docs/editorial/walrus-v1.45.2.md @@ -0,0 +1,12 @@ +--- +title: Walrus v1.45.2 +description: Raises the storage node's RocksDB background threads from 2 to 16 and adds the opt-in... +keywords: ["walrus", "release notes", "changelog", "mainnet", "storage node", "cli"] +--- + +**Mainnet** | April 1, 2026 + +Raises the storage node's RocksDB background threads from 2 to 16 and adds the opt-in +`garbage_collection.enable_immediate_data_deletion` parameter. Also fixes a combined-daemon body +size limit that was silently rejecting uploads with 413 errors and adds a `walrus info coin` CLI +subcommand. diff --git a/docs/editorial/walrus-v1.46.1.md b/docs/editorial/walrus-v1.46.1.md new file mode 100644 index 0000000000..fbf5bb412c --- /dev/null +++ b/docs/editorial/walrus-v1.46.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.46.1 +description: Adds a reuse_resources query parameter so the publisher and daemon can resume an existing, unfinished upload pipeline instead... +keywords: ["walrus", "release notes", "changelog", "mainnet", "publisher"] +--- + +**Mainnet** | April 15, 2026 + +Adds a `reuse_resources` query parameter so the publisher and daemon can resume an existing, +unfinished upload pipeline instead of starting over. diff --git a/docs/editorial/walrus-v1.47.0.md b/docs/editorial/walrus-v1.47.0.md new file mode 100644 index 0000000000..73f8f9c4c0 --- /dev/null +++ b/docs/editorial/walrus-v1.47.0.md @@ -0,0 +1,11 @@ +--- +title: Walrus v1.47.0 +description: The Testnet preview of storage pool support in the storage node, plus the aggregator's new retryable HTTP 503 BLOB_UNAVAILABLE... +keywords: ["walrus", "release notes", "changelog", "testnet", "storage node", "aggregator", "blob"] +--- + +**Testnet** | April 22, 2026 + +The Testnet preview of storage pool support in the storage node, plus the aggregator's new retryable +HTTP 503 `BLOB_UNAVAILABLE` response for temporarily unretrievable blobs. Range requests by object +ID now return blob attribute headers such as `Content-Type` correctly. diff --git a/docs/editorial/walrus-v1.47.1.md b/docs/editorial/walrus-v1.47.1.md new file mode 100644 index 0000000000..93abe3b43d --- /dev/null +++ b/docs/editorial/walrus-v1.47.1.md @@ -0,0 +1,12 @@ +--- +title: Walrus v1.47.1 +description: Enables storage pool support in the storage node and makes the aggregator return a retryable HTTP 503 BLOB_UNAVAILABLE... +keywords: ["walrus", "release notes", "changelog", "mainnet", "storage node", "aggregator", "blob"] +--- + +**Mainnet** | April 29, 2026 + +Enables storage pool support in the storage node and makes the aggregator return a retryable HTTP +503 `BLOB_UNAVAILABLE` (instead of 500) when a blob is only temporarily unretrievable. Blob +attribute headers such as `Content-Type` are now correctly included on range requests when reading +by object ID. diff --git a/docs/editorial/walrus-v1.48.1.md b/docs/editorial/walrus-v1.48.1.md new file mode 100644 index 0000000000..bd7c16cb6c --- /dev/null +++ b/docs/editorial/walrus-v1.48.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.48.1 +description: A maintenance release on Mainnet with no user-facing changes documented in the release notes; see the full commit log for... +keywords: ["walrus", "release notes", "changelog", "mainnet"] +--- + +**Mainnet** | May 13, 2026 + +A maintenance release on Mainnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. diff --git a/docs/editorial/walrus-v1.49.1.md b/docs/editorial/walrus-v1.49.1.md new file mode 100644 index 0000000000..d1880e142d --- /dev/null +++ b/docs/editorial/walrus-v1.49.1.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.49.1 +description: A maintenance release on Mainnet with no user-facing changes documented in the release notes; see the full commit log for... +keywords: ["walrus", "release notes", "changelog", "mainnet"] +--- + +**Mainnet** | May 27, 2026 + +A maintenance release on Mainnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. diff --git a/docs/editorial/walrus-v1.50.0.md b/docs/editorial/walrus-v1.50.0.md new file mode 100644 index 0000000000..3bb84e6e70 --- /dev/null +++ b/docs/editorial/walrus-v1.50.0.md @@ -0,0 +1,10 @@ +--- +title: Walrus v1.50.0 +description: A maintenance release on Testnet with no user-facing changes documented in the release notes; see the full commit log for... +keywords: ["walrus", "release notes", "changelog", "testnet"] +--- + +**Testnet** | June 3, 2026 + +A maintenance release on Testnet with no user-facing changes documented in the release notes; see +the full commit log for internal updates. diff --git a/docs/site/docusaurus.config.js b/docs/site/docusaurus.config.js index d4524451db..f25346048f 100644 --- a/docs/site/docusaurus.config.js +++ b/docs/site/docusaurus.config.js @@ -28,7 +28,7 @@ async function tailwindPlugin() { const config = { title: "Walrus Docs", tagline: "Where the world's data becomes reliable, valuable, and governable", - favicon: "img/favicon.ico", + favicon: "img/favicon.png", trailingSlash: false, future: { @@ -93,6 +93,7 @@ const config = { clientModules: [ "./src/client/webmcp.js", + "./src/client/kapa-sidebar.js", ], onBrokenLinks: "throw", @@ -297,6 +298,9 @@ const config = { "data-project-name": "Walrus Knowledge", "data-project-color": "#37c3b0ff", "data-button-hide": "true", + "data-view-mode": "sidebar", + "data-modal-overlay-hidden": "true", + "data-modal-lock-scroll": "false", "data-modal-title": "Ask Walrus AI", "data-modal-ask-ai-input-placeholder": "Ask me anything about Walrus!", "data-modal-example-questions": @@ -334,17 +338,21 @@ const config = { }, { type: "docSidebar", - sidebarId: "sitesSidebar", - label: "Walrus Sites", + sidebarId: "consoleSidebar", position: "right", + label: "Walrus Console", }, { type: "docSidebar", - sidebarId: "operatorSidebar", - label: "Service Providers", + sidebarId: "marketplaceSidebar", + position: "right", + label: "Walrus Marketplace", + }, + { + to: "/docs/release-notes", + label: "Release Notes", position: "right", }, - { to: "/blog", label: "Blog", position: "right" }, { href: "https://github.com/MystenLabs/walrus", position: "right", diff --git a/docs/site/package.json b/docs/site/package.json index 22ca6696ca..8033bd9341 100644 --- a/docs/site/package.json +++ b/docs/site/package.json @@ -5,7 +5,7 @@ "scripts": { "deploy-site": "site-builder deploy ./build --epochs 1", "docusaurus": "docusaurus", - "prestart": "node src/scripts/prepare-walrus-memory.js && node src/scripts/generate-import-context.js && node src/scripts/copy-yaml-files.js", + "prestart": "node src/scripts/prepare-walrus-memory.js && node src/scripts/generate-import-context.js && node src/scripts/copy-yaml-files.js && node src/scripts/generate-release-notes.js", "start": "docusaurus start", "prebuild": "FORCE_FETCH=1 npm run prestart", "build:prep": "node src/shared/js/inline-imports.js && node src/scripts/copy-markdown-files.js && node src/scripts/generate-llmstxt.mjs", diff --git a/docs/site/sidebars.js b/docs/site/sidebars.js index 62c2e00eb6..1bfda08bc9 100644 --- a/docs/site/sidebars.js +++ b/docs/site/sidebars.js @@ -3,247 +3,388 @@ // @ts-check -//import { type } from '@generated/site-storage' - -// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...) - /** -* Creating a sidebar enables you to: -- create an ordered group of docs -- render a sidebar for each doc of that group -- provide next/previous navigation - -The sidebars can be generated from the filesystem, or explicitly defined here. - -Create as many sidebars as you want. - -@type {import('@docusaurus/plugin-content-docs').SidebarsConfig} -*/ + * Docs sidebars — structured around 4 product areas. + * Icons on category labels follow the Mintlify/Mem0 pattern. + * + * @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} + */ const sidebars = { - docsSidebar: [ + // ── Walrus Console ──────────────────────────────────────────────── + consoleSidebar: [ + { + type: "category", + label: "Get Started", + collapsed: false, + link: { type: "doc", id: "console/index" }, + items: [ + "console/get-started/what-is-console", + "console/get-started/create-account", + "console/get-started/dashboard-tour", + "console/get-started/first-upload", + ], + }, + { + type: "category", + label: "Files and Storage", + collapsed: true, + items: [ + "console/files/upload-browse", + "console/files/manage-files", + "console/files/epoch-renewal", + "console/files/storage-limits", + ], + }, { - type: 'category', - label: 'Getting Started', - link: { - type: "doc", - id: 'getting-started/index', - }, + type: "category", + label: "Walrus Memory", + collapsed: true, items: [ - 'getting-started/advanced-setup', - ] + "console/memory/namespaces", + "console/memory/browse-objects", + "console/memory/epoch-renewal", + ], }, { - type: 'category', - label: 'System Overview', + type: "category", + label: "Datasets", collapsed: true, - link: { - type: "doc", - id: 'system-overview/index', - }, items: [ - 'system-overview/core-concepts', - 'system-overview/red-stuff', - 'system-overview/operations', - 'system-overview/system-constraints', - 'system-overview/available-networks', - 'system-overview/storage-costs', - 'system-overview/public-aggregators-and-publishers', - 'system-overview/view-system-info', - 'system-overview/quilt', + "console/datasets/what-are-datasets", + "console/datasets/upload-dataset", + "console/datasets/access-models", + "console/datasets/list-on-marketplace", ], }, { - type: 'category', - label: 'Walrus Client', + type: "category", + label: "API and MCP", collapsed: true, - link: { - type: "doc", - id: 'walrus-client/index', - }, items: [ - 'walrus-client/walrus-cli', - 'walrus-client/storing-blobs', - 'walrus-client/reading-blobs', - 'walrus-client/managing-blobs', - 'walrus-client/verifying-availability', - 'walrus-client/json-mode', - 'walrus-client/quilts', + "console/api/api-keys", + "console/api/mcp-server", + "console/api/api-reference", ], }, { - type: 'category', - label: 'HTTP API', + type: "category", + label: "Team Spaces", collapsed: true, items: [ - 'http-api/storing-blobs', - 'http-api/reading-blobs', - 'http-api/quilt-http-apis', + "console/teams/create-team", + "console/teams/invite-members", + "console/teams/shared-api-keys", ], }, { - type: 'category', - label: 'Troubleshooting', - link: { - type: "doc", - id:'troubleshooting/index', - }, + type: "category", + label: "Billing", collapsed: true, items: [ - 'troubleshooting/network-errors', - 'troubleshooting/error-handling', - 'troubleshooting/reading-blobs-after-upload', + "console/billing/free-tier", + "console/billing/usage-pricing", + "console/billing/plans-pricing", ], }, - "network-reference", - "typescript-sdk/sdks", - 'large-uploads', - 'data-security', - 'seal-encryption-tutorial', - 'tusky-migration-guide', - 'glossary', { type: "category", - label: "Examples", - link: { - type: "doc", - id: "examples/index", - }, + label: "Security", collapsed: true, items: [ - 'examples/checkpoint-data', - 'examples/javascript', - 'examples/move', - 'examples/python', - 'examples/walrus-relay', + "console/security/authentication", + "console/security/security-audit", ], }, - ], - sitesSidebar: [ + ], + + // ── Walrus Marketplace ────────────────────────────────────────── + marketplaceSidebar: [ { - type: 'category', - label: 'Introduction to Walrus Sites', - link: { - type: "doc", - id:'sites/index', - }, + type: "category", + label: "Get Started", collapsed: false, + link: { type: "doc", id: "marketplace/index" }, items: [ - 'sites/introduction/technical-overview', - `sites/introduction/components`, + "marketplace/get-started/what-is-marketplace", + "marketplace/get-started/browse-listings", + "marketplace/get-started/first-purchase", ], }, { - type: 'category', - label: 'Getting Started', + type: "category", + label: "For Publishers", collapsed: true, items: [ - 'sites/getting-started/installing-the-site-builder', - 'sites/getting-started/publishing-your-first-site', - 'sites/getting-started/using-the-site-builder', + "marketplace/publishers/create-listing", + "marketplace/publishers/pricing-royalties", + "marketplace/publishers/access-control", + "marketplace/publishers/manage-listings", + "marketplace/publishers/analytics", ], }, { - type: 'category', - label: 'Site Configuration', + type: "category", + label: "For Consumers", collapsed: true, items: [ - `sites/configuration/site-configuration`, - 'sites/configuration/specifying-http-headers', - 'sites/configuration/adding-metadata', + "marketplace/consumers/license-dataset", + "marketplace/consumers/access-licensed-data", + "marketplace/consumers/renewals", ], }, { - type: 'category', - label: 'Walrus Portals', + type: "category", + label: "Build Integrations", collapsed: true, - link: { - type: "doc", - id: "sites/portals/deploy-locally", - }, items: [ - 'sites/portals/deploy-locally', - 'sites/portals/mainnet-testnet', + "marketplace/build-integrations/api-reference", + "marketplace/build-integrations/embed-widgets", + "marketplace/build-integrations/webhooks-events", + "marketplace/build-integrations/console-sync", ], }, + ], + + // ── Data Storage (core platform docs) ──────────────────────────── + docsSidebar: [ { - type: 'category', - label: 'Custom Domains', + type: "category", + label: "Get Started", + collapsed: false, + link: { type: "doc", id: "getting-started/index" }, + items: [ + "getting-started/advanced-setup", + "system-overview/available-networks", + "network-reference", + ], + }, + { + type: "category", + label: "Concepts", + collapsed: true, + link: { type: "doc", id: "system-overview/index" }, + items: [ + "system-overview/core-concepts", + "system-overview/operations", + "system-overview/storage-costs", + "system-overview/quilt", + "data-security", + ], + }, + { + type: "category", + label: "Store and Retrieve Data", + collapsed: true, + link: { type: "doc", id: "walrus-client/index" }, + items: [ + "walrus-client/storing-blobs", + "walrus-client/reading-blobs", + "walrus-client/managing-blobs", + "large-uploads", + "walrus-client/quilts", + ], + }, + { + type: "category", + label: "Walrus Sites", collapsed: true, + link: { type: "doc", id: "sites/index" }, items: [ - 'sites/custom-domains/setting-a-suins-name', - 'sites/custom-domains/bringing-your-own-domain', - 'sites/custom-domains/dns-configuration', + { + type: "category", + label: "Introduction", + collapsed: true, + items: [ + "sites/introduction/technical-overview", + "sites/introduction/components", + ], + }, + { + type: "category", + label: "Getting Started", + collapsed: true, + items: [ + "sites/getting-started/installing-the-site-builder", + "sites/getting-started/publishing-your-first-site", + "sites/getting-started/using-the-site-builder", + ], + }, + { + type: "category", + label: "Configuration", + collapsed: true, + items: [ + "sites/configuration/site-configuration", + "sites/configuration/specifying-http-headers", + "sites/configuration/adding-metadata", + ], + }, + { + type: "category", + label: "Custom Domains", + collapsed: true, + items: [ + "sites/custom-domains/setting-a-suins-name", + "sites/custom-domains/bringing-your-own-domain", + "sites/custom-domains/dns-configuration", + ], + }, + { + type: "category", + label: "Portals", + collapsed: true, + items: [ + "sites/portals/deploy-locally", + "sites/portals/mainnet-testnet", + ], + }, + { + type: "category", + label: "Linking and Navigation", + collapsed: true, + items: [ + "sites/linking/linking-from-walrus-sites", + "sites/linking/linking-to-walrus-sites", + "sites/linking/redirects", + "sites/linking/avoiding-duplicate-content-seo", + ], + }, + { + type: "category", + label: "CI/CD", + collapsed: true, + items: [ + "sites/ci-cd/preparing-deployment-credentials", + "sites/ci-cd/github-actions-workflow", + "sites/ci-cd/other-ci-cd-platforms", + ], + }, + { + type: "category", + label: "Security", + collapsed: true, + items: [ + "sites/security/site-data-authentication", + "sites/security/access-control-options", + ], + }, + "sites/known-restrictions", + "sites/troubleshooting", ], }, { - type: 'category', - label: 'Linking and Navigation', + type: "category", + label: "Examples and Tutorials", collapsed: true, + link: { type: "doc", id: "examples/index" }, items: [ - 'sites/linking/linking-from-walrus-sites', - 'sites/linking/linking-to-walrus-sites', - 'sites/linking/redirects', - 'sites/linking/avoiding-duplicate-content-seo', + "examples/checkpoint-data", + "examples/javascript", + "examples/move", + "examples/python", + "examples/walrus-relay", ], }, { - type: 'category', - label: 'CI/CD and Automation', + type: "category", + label: "Tools and SDKs", collapsed: true, items: [ - 'sites/ci-cd/preparing-deployment-credentials', - 'sites/ci-cd/github-actions-workflow', - 'sites/ci-cd/other-ci-cd-platforms', + "walrus-client/walrus-cli", + "typescript-sdk/sdks", + { + type: "category", + label: "HTTP API", + collapsed: true, + items: [ + "http-api/storing-blobs", + "http-api/reading-blobs", + "http-api/quilt-http-apis", + ], + }, + "walrus-client/json-mode", ], }, { - type: 'category', - label: 'Security and Authentication', + type: "category", + label: "Costs and Billing", collapsed: true, + link: { type: "doc", id: "costs/index" }, items: [ - 'sites/security/site-data-authentication', - 'sites/security/access-control-options', + "costs/storage-pricing", + "costs/cost-calculator", + "costs/billing-faq", ], }, - 'sites/known-restrictions', - 'sites/troubleshooting', - ], - operatorSidebar: [ - "operator-guide/index", - { + { + type: "category", + label: "Run Infrastructure", + collapsed: true, + link: { type: "doc", id: "operator-guide/index" }, + items: [ + "operator-guide/stake", + { type: "category", label: "Storage Nodes", + collapsed: true, link: { - type: "doc", - id: "operator-guide/storage-nodes/index", + type: "doc", + id: "operator-guide/storage-nodes/index", }, items: [ - "operator-guide/storage-nodes/storage-node-setup", - "operator-guide/storage-nodes/storage-node-maintenance", - "operator-guide/storage-nodes/storage-node-migration", - "operator-guide/storage-nodes/commission-governance", - "operator-guide/storage-nodes/slashing", - "operator-guide/storage-nodes/slashing-walkthrough", - "operator-guide/storage-nodes/backup-restore-guide", - "operator-guide/storage-nodes/storage-node-faq", + "operator-guide/storage-nodes/storage-node-setup", + "operator-guide/storage-nodes/storage-node-maintenance", + "operator-guide/storage-nodes/storage-node-migration", + "operator-guide/storage-nodes/commission-governance", + "operator-guide/storage-nodes/slashing", + "operator-guide/storage-nodes/slashing-walkthrough", + "operator-guide/storage-nodes/backup-restore-guide", + "operator-guide/storage-nodes/storage-node-faq", ], - }, - { + }, + { type: "category", label: "Publishers", + collapsed: true, items: [ - "operator-guide/publishers/operating-publisher", - "operator-guide/publishers/auth-publisher", - "operator-guide/publishers/mainnet-production-guide", + "operator-guide/publishers/operating-publisher", + "operator-guide/publishers/auth-publisher", + "operator-guide/publishers/mainnet-production-guide", ], - }, - "operator-guide/aggregators/operating-aggregator", - "operator-guide/upload-relay", - "operator-guide/signed-binaries", - "operator-guide/stake", - "operator-guide/limitations", - ], + }, + "operator-guide/aggregators/operating-aggregator", + "operator-guide/upload-relay", + "operator-guide/signed-binaries", + "operator-guide/limitations", + ], + }, + { + type: "category", + label: "Protocol Reference", + collapsed: true, + items: [ + "system-overview/red-stuff", + "system-overview/system-constraints", + "system-overview/public-aggregators-and-publishers", + "system-overview/view-system-info", + "glossary", + ], + }, + { + type: "category", + label: "Troubleshooting", + collapsed: true, + link: { type: "doc", id: "troubleshooting/index" }, + items: [ + "troubleshooting/network-errors", + "troubleshooting/error-handling", + "troubleshooting/reading-blobs-after-upload", + ], + }, + "tusky-migration-guide", + ], + }; export default sidebars; diff --git a/docs/site/sidebarsWalrusMemory.js b/docs/site/sidebarsWalrusMemory.js index 0385ffc073..a5c23892e7 100644 --- a/docs/site/sidebarsWalrusMemory.js +++ b/docs/site/sidebarsWalrusMemory.js @@ -1,201 +1,193 @@ // Copyright (c) Walrus Foundation // SPDX-License-Identifier: Apache-2.0 // -// Generates the Walrus Memory sidebar dynamically from the upstream MemWal -// docs.json (Mintlify config) so the sidebar stays in sync when pages are -// added or removed upstream. Orphan pages (files that exist but are not -// listed in docs.json) are appended to the matching category. - -import fs from "node:fs"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; - -const __dirname = path.dirname(fileURLToPath(import.meta.url)); -const CACHE_DIR = path.resolve(__dirname, ".cache-walrus-memory/docs"); -const OUTPUT_DIR = path.resolve(__dirname, "../walrus-memory-content"); - -// Files renamed during transform (original slug → local slug) -const SLUG_RENAMES = { - "getting-started/what-is-memwal": "getting-started/what-is-walrus-memory", -}; - -// Override tab labels where the Walrus site prefers a different name -const TAB_LABEL_OVERRIDES = { - SDK: "TypeScript SDK", -}; - -function renameSlug(slug) { - return SLUG_RENAMES[slug] || slug; -} - -// --- Collect doc IDs from the output directory --- - -function collectOutputDocIds(dir, prefix) { - const ids = new Set(); - if (!fs.existsSync(dir)) return ids; - for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { - const rel = prefix ? `${prefix}/${entry.name}` : entry.name; - if (entry.isDirectory()) { - for (const id of collectOutputDocIds(path.join(dir, entry.name), rel)) { - ids.add(id); - } - } else if (/\.(mdx?)$/.test(entry.name)) { - ids.add(rel.replace(/\.(mdx?)$/, "")); - } - } - return ids; -} - -// --- Extract all placed page IDs from a Mintlify pages array --- - -function extractPageIds(pages, placed) { - for (const page of pages) { - if (typeof page === "string") { - placed.add(renameSlug(page)); - } else if (page.pages) { - if (page.root) placed.add(renameSlug(page.root)); - extractPageIds(page.pages, placed); - } - } -} - -// --- Convert Mintlify structures to Docusaurus sidebar items --- - -function convertPages(pages) { - const items = []; - for (const page of pages) { - if (typeof page === "string") { - items.push(renameSlug(page)); - } else if (page.pages) { - const category = { - type: "category", - label: page.group, - collapsed: true, - items: convertPages(page.pages), - }; - if (page.root) { - category.link = { type: "doc", id: renameSlug(page.root) }; - } - items.push(category); - } - } - return items; -} - -function convertTab(tab, isFirst) { - const groups = tab.groups || []; - if (groups.length === 0) return null; - - const label = TAB_LABEL_OVERRIDES[tab.tab] || tab.tab; - - if (groups.length === 1) { - const group = groups[0]; - const items = convertPages(group.pages); - const category = { - type: "category", - label, - collapsed: !isFirst, - items, - }; - // For the first tab, use the first page as the category link - if (isFirst && items.length > 0 && typeof items[0] === "string") { - category.link = { type: "doc", id: items[0] }; - category.items = items.slice(1); - } - return category; - } - - // Multiple groups → nested categories - const items = groups.map((g) => ({ - type: "category", - label: g.group, - collapsed: true, - items: convertPages(g.pages), - })); - - return { type: "category", label, collapsed: !isFirst, items }; -} - -// --- Orphan detection: pages that exist but are not in docs.json --- - -function appendOrphans(sidebar, placedIds) { - const allIds = collectOutputDocIds(OUTPUT_DIR, ""); - const orphans = [...allIds].filter((id) => !placedIds.has(id)).sort(); - if (orphans.length === 0) return; - - // Build prefix → sidebar-category-index map from existing items - const prefixToIdx = {}; - for (let i = 0; i < sidebar.length; i++) { - const item = sidebar[i]; - if (item.type !== "category") continue; - const prefixes = new Set(); - (function walk(items) { - for (const sub of items) { - const id = - typeof sub === "string" ? sub : sub.id || sub.link?.id || ""; - if (id.includes("/")) prefixes.add(id.split("/")[0]); - if (sub.items) walk(sub.items); - } - })(item.items || []); - if (item.link?.id?.includes("/")) - prefixes.add(item.link.id.split("/")[0]); - for (const p of prefixes) { - if (prefixToIdx[p] === undefined) prefixToIdx[p] = i; - } - } - - let placed = 0; - for (const id of orphans) { - const prefix = id.includes("/") ? id.split("/")[0] : null; - if (prefix && prefixToIdx[prefix] !== undefined) { - sidebar[prefixToIdx[prefix]].items.push(id); - placed++; - } - } - - if (placed > 0) { - console.log( - `ℹ️ walrus-memory sidebar: appended ${placed} page(s) not in docs.json to matching categories`, - ); - } -} - -// --- Main --- - -function generateSidebar() { - const docsJsonPath = path.join(CACHE_DIR, "docs.json"); - if (!fs.existsSync(docsJsonPath)) { - console.warn( - "⚠️ walrus-memory: docs.json not found, using minimal sidebar", - ); - return [{ type: "doc", id: "index", label: "Walrus Memory" }]; - } - - const docsJson = JSON.parse(fs.readFileSync(docsJsonPath, "utf8")); - const tabs = docsJson.navigation?.tabs || []; - - // Track which IDs are placed by docs.json - const placedIds = new Set(["index"]); - for (const tab of tabs) { - for (const group of tab.groups || []) { - extractPageIds(group.pages, placedIds); - } - } - - const sidebar = [{ type: "doc", id: "index", label: "Walrus Memory" }]; - for (let i = 0; i < tabs.length; i++) { - const cat = convertTab(tabs[i], i === 0); - if (cat) sidebar.push(cat); - } - - appendOrphans(sidebar, placedIds); +// Walrus Memory sidebar — hardcoded for optimal IA ordering. +// Content is fetched from upstream MemWal repo at build time; +// this file controls the navigation structure independently. +// +// Ordering follows Mem0-style best practices: +// Get Started → Concepts → AI Tools (MCP) → SDKs → Plugins → +// Infrastructure → Reference → Contributing - return sidebar; -} +// @ts-check /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars = { - walrusMemorySidebar: generateSidebar(), + walrusMemorySidebar: [ + // ── 1. Get Started ─────────────────────────────────────────── + { + type: "category", + label: "Get Started", + collapsed: false, + link: { + type: "doc", + id: "getting-started/what-is-walrus-memory", + }, + items: [ + "getting-started/quick-start", + "getting-started/choose-your-path", + "examples/example-apps", + ], + }, + + // ── 2. Core Concepts ───────────────────────────────────────── + { + type: "category", + label: "Core Concepts", + collapsed: true, + items: [ + "fundamentals/concepts/memory-space", + "fundamentals/concepts/ownership-and-access", + "fundamentals/architecture/core-components", + "fundamentals/architecture/how-storage-works", + "fundamentals/architecture/data-flow-security-model", + ], + }, + + // ── 3. AI Tools (MCP) — promoted for AI developer audience ── + { + type: "category", + label: "AI Tools (MCP)", + collapsed: true, + link: { type: "doc", id: "mcp/overview" }, + items: [ + "mcp/claude-code", + "mcp/claude-desktop", + "mcp/cursor", + "mcp/codex", + "mcp/opencode", + "mcp/antigravity", + "mcp/reference", + ], + }, + + // ── 4. TypeScript SDK ──────────────────────────────────────── + { + type: "category", + label: "TypeScript SDK", + collapsed: true, + link: { type: "doc", id: "sdk/overview" }, + items: [ + "sdk/quick-start", + { + type: "category", + label: "Usage", + collapsed: true, + link: { type: "doc", id: "sdk/usage" }, + items: [ + "sdk/usage/memwal", + "sdk/usage/memwal-manual", + "sdk/usage/with-memwal", + ], + }, + "sdk/examples", + { type: "doc", id: "sdk/ai-integration", label: "AI SDK Integration" }, + { type: "doc", id: "sdk/cookbook-multi-tenant", label: "Multi-Tenant Apps" }, + { type: "doc", id: "sdk/cloudflare-workers", label: "Cloudflare Workers" }, + "sdk/advanced-usage", + "sdk/api-reference", + ], + }, + + // ── 5. Python SDK ──────────────────────────────────────────── + { + type: "category", + label: "Python SDK", + collapsed: true, + items: [ + "python-sdk/quick-start", + "python-sdk/colab", + { + type: "category", + label: "Usage", + collapsed: true, + link: { type: "doc", id: "python-sdk/usage" }, + items: [ + "python-sdk/usage/memwal", + "python-sdk/usage/memwal-manual", + "python-sdk/usage/with-memwal", + ], + }, + "python-sdk/api-reference", + ], + }, + + // ── 6. OpenClaw Plugin ─────────────────────────────────────── + { + type: "category", + label: "OpenClaw Plugin", + collapsed: true, + items: [ + "openclaw/overview", + "openclaw/quick-start", + "openclaw/how-it-works", + "openclaw/reference", + ], + }, + + // ── 7. Relayer (infrastructure) ────────────────────────────── + { + type: "category", + label: "Relayer", + collapsed: true, + items: [ + "relayer/overview", + "relayer/public-relayer", + "relayer/self-hosting", + "relayer/nautilus-tee", + "relayer/observability", + "relayer/versioning-and-compatibility", + "relayer/api-reference", + "relayer/benchmark-ci-setup", + "relayer/runbook-gas-pool", + ], + }, + + // ── 8. Reference (collapsed, bottom) ───────────────────────── + { + type: "category", + label: "Reference", + collapsed: true, + items: [ + "reference/configuration", + "reference/environment-variables", + "security/health-check-unsigned", + { + type: "category", + label: "Smart Contract", + collapsed: true, + items: [ + "contract/overview", + "contract/delegate-key-management", + "contract/ownership-and-permissions", + ], + }, + { + type: "category", + label: "Indexer", + collapsed: true, + items: [ + "indexer/purpose", + "indexer/onchain-events", + "indexer/database-sync", + ], + }, + "architecture/permanent-registry-design", + ], + }, + + // ── 9. Contributing (very bottom) ──────────────────────────── + { + type: "category", + label: "Contributing", + collapsed: true, + items: [ + "contributing/docs-workflow", + "contributing/run-docs-locally", + "contributing/run-repo-locally", + ], + }, + ], }; export default sidebars; diff --git a/docs/site/src/client/kapa-sidebar.js b/docs/site/src/client/kapa-sidebar.js new file mode 100644 index 0000000000..636d3928b1 --- /dev/null +++ b/docs/site/src/client/kapa-sidebar.js @@ -0,0 +1,85 @@ +// Copyright (c) Walrus Foundation +// SPDX-License-Identifier: Apache-2.0 + +// Detects Kapa sidebar open/close and toggles .kapa-sidebar-open on . +// Kapa renders in Shadow DOM so we can't query its internals. +// Strategy: hook Kapa.open for instant open detection, then use +// elementFromPoint to detect close (checks if right edge of screen +// is covered by a non-docusaurus element). + +if (typeof window !== "undefined") { + const OPEN_CLASS = "kapa-sidebar-open"; + let kapaOpen = false; + let hookedRef = null; + + function syncClass() { + document.documentElement.classList.toggle(OPEN_CLASS, kapaOpen); + } + + function hookKapa() { + if (!window.Kapa || !window.Kapa.open || window.Kapa.open === hookedRef) + return; + + const origOpen = window.Kapa.open; + const origClose = window.Kapa.close; + + window.Kapa.open = function (...args) { + kapaOpen = true; + syncClass(); + return origOpen.apply(this, args); + }; + + window.Kapa.close = function (...args) { + kapaOpen = false; + syncClass(); + return origClose.apply(this, args); + }; + + hookedRef = window.Kapa.open; + } + + // Check if Kapa sidebar is covering the right side of the viewport. + // Since Kapa uses Shadow DOM, we can't query its elements directly. + // Instead, check if the element at the right edge of the screen + // belongs to the doc app or to something else (Kapa's panel). + function isSidebarVisible() { + const x = window.innerWidth - 50; + const y = window.innerHeight / 2; + const el = document.elementFromPoint(x, y); + if (!el) return false; + const docRoot = document.getElementById("__docusaurus"); + if (docRoot && docRoot.contains(el)) return false; + if (el === document.body || el === document.documentElement) return false; + return true; + } + + // Hook into History API so the class persists across SPA navigation. + // Docusaurus uses pushState for client-side routing. + const origPush = history.pushState.bind(history); + const origReplace = history.replaceState.bind(history); + history.pushState = function (...args) { + const r = origPush(...args); + syncClass(); + return r; + }; + history.replaceState = function (...args) { + const r = origReplace(...args); + syncClass(); + return r; + }; + window.addEventListener("popstate", syncClass); + + // Poll every 300ms: re-hook Kapa if it reinitializes, and + // detect open/close state via elementFromPoint fallback. + setInterval(() => { + hookKapa(); + + const visible = isSidebarVisible(); + if (visible && !kapaOpen) { + kapaOpen = true; + } else if (!visible && kapaOpen) { + kapaOpen = false; + } + syncClass(); + }, 300); +} diff --git a/docs/site/src/components/LandingPage.tsx b/docs/site/src/components/LandingPage.tsx index f620b62f37..78c71b01bd 100644 --- a/docs/site/src/components/LandingPage.tsx +++ b/docs/site/src/components/LandingPage.tsx @@ -1,9 +1,13 @@ // Copyright (c) Walrus Foundation // SPDX-License-Identifier: Apache-2.0 -import React, { useEffect } from 'react'; +import React, { useEffect, useState } from 'react'; +import { createPortal } from 'react-dom'; import Head from '@docusaurus/Head'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import WalrusLogo from '@site/static/img/Walrus_Docs.svg'; +import SearchModal from '@site/src/components/Search/SearchModal'; function hideEl(el: HTMLElement): () => void { const prev = el.style.display; @@ -24,43 +28,43 @@ const LANDING_CSS = ` #copy-page-button-container { display: none !important; } #__docusaurus_skipToContent_fallback { - background: #0d0f12 !important; padding: 0 !important; margin: 0 !important; + background: #fff !important; padding: 0 !important; margin: 0 !important; } #__docusaurus_skipToContent_fallback > main, #__docusaurus_skipToContent_fallback > main.container, #__docusaurus_skipToContent_fallback > main.container--fluid { - background: #0d0f12 !important; padding: 0 !important; margin: 0 !important; max-width: 100% !important; + background: #fff !important; padding: 0 !important; margin: 0 !important; max-width: 100% !important; } #__docusaurus_skipToContent_fallback .margin-vert--lg { margin: 0 !important; } #__docusaurus_skipToContent_fallback .row { - background: #0d0f12 !important; padding: 0 !important; margin: 0 !important; + background: #fff !important; padding: 0 !important; margin: 0 !important; } #__docusaurus_skipToContent_fallback .col { - background: #0d0f12 !important; padding: 0 !important; + background: #fff !important; padding: 0 !important; max-width: 100% !important; flex: none !important; width: 100% !important; } #__docusaurus_skipToContent_fallback article { - background: #0d0f12 !important; padding: 0 !important; margin: 0 !important; max-width: 100% !important; + background: #fff !important; padding: 0 !important; margin: 0 !important; max-width: 100% !important; } -html, body { background: #0d0f12 !important; } -[class*="mainWrapper"] { background: #0d0f12 !important; padding-top: 0 !important; } -[class*="mdxPageWrapper"] { background: #0d0f12 !important; padding: 0 !important; margin: 0 !important; } +html, body { background: #fff !important; } +[class*="mainWrapper"] { background: #fff !important; padding-top: 0 !important; } +[class*="mdxPageWrapper"] { background: #fff !important; padding: 0 !important; margin: 0 !important; } /* ── Landing root ── */ .landing-root { - --white: #faf8f5; - --black: #0d0f12; - --purple: #CAB1FF; - --purple-dim: rgba(202,177,255,0.1); - --purple-hover: rgba(202,177,255,0.16); - --violet: #CAB1FF; - --mint: #98EFDD; - --yellow: #E8FF75; - --gray-muted: rgba(255,255,255,0.45); - --surface: #1c2228; - --surface-hover: #252b31; - --border: rgba(255,255,255,0.08); - --border-hover: rgba(255,255,255,0.16); + --white: #1a1a2e; + --black: #ffffff; + --purple: #613dff; + --purple-dim: rgba(97,61,255,0.06); + --purple-hover: rgba(97,61,255,0.1); + --violet: #613dff; + --mint: #0d9488; + --yellow: #b8860b; + --gray-muted: rgba(0,0,0,0.5); + --surface: #f6f8fa; + --surface-hover: #eef1f4; + --border: rgba(0,0,0,0.08); + --border-hover: rgba(0,0,0,0.16); --mono: 'JetBrains Mono', monospace; --sans: 'DM Sans', -apple-system, sans-serif; --radius: 20px; @@ -76,65 +80,80 @@ html, body { background: #0d0f12 !important; } .landing-root a:hover { color: #98EFDD; } .landing-root, .landing-root * { - --ifm-background-color: #0d0f12 !important; - --ifm-background-surface-color: #0d0f12 !important; + --ifm-background-color: #fff !important; + --ifm-background-surface-color: #fff !important; } .landing-wrap { max-width: 1120px; margin: 0 auto; padding: 0 24px; } @media (min-width: 768px) { .landing-wrap { padding: 0 40px; } } -/* ── Topbar ── */ +/* ── Topbar (two-row, matches site navbar) ── */ .landing-root .topbar { position: sticky; top: 0; z-index: 50; - background: #ffffff; - backdrop-filter: blur(16px) saturate(1.4); - border-bottom: 1px solid var(--border); + background: #f0f1f3; + border-bottom: 1px solid rgba(0,0,0,0.06); } -.landing-root .topbar-inner { +.landing-root .topbar-row { display: flex; align-items: center; justify-content: space-between; - height: 56px; max-width: 1120px; margin: 0 auto; padding: 0 24px; + height: 2.75rem; padding: 0 1rem; } -@media (min-width: 768px) { .landing-root .topbar-inner { padding: 0 40px; } } .landing-root .topbar-logo { - display: flex; align-items: center; gap: 10px; - font-weight: 500; font-size: 0.95rem; letter-spacing: 0.02em; color: var(--white); + display: flex; align-items: center; gap: 8px; + flex-shrink: 0; } .landing-root .topbar-logo svg { - height: 28px; width: auto; margin-bottom: 3px; color: #000; -} -.landing-root .topbar-logo .sep { color: rgba(0,0,0,0.2); font-weight: 300; font-size: 2rem; } -.landing-root .topbar-logo .docs-label { color: rgba(0,0,0,0.5); font-weight: 700; font-size: 2rem; } -.landing-root .topbar-links { display: flex; gap: 6px; align-items: center; } -.landing-root .topbar-links a { - font-size: 1.3rem; padding: 6px 14px; border-radius: 8px; - color: rgba(0,0,0,0.55); transition: all 0.2s; -} -.landing-root .topbar-links a:hover { color: #000; background: rgba(0,0,0,0.04); } -.landing-root .topbar-links a.primary { - color: #000; background: rgba(0,0,0,0.05); - border: 1px solid rgba(0,0,0,0.12); font-weight: 500; + height: 1.6rem; width: auto; color: #000; +} +.landing-root .topbar-actions { display: flex; gap: 8px; align-items: center; } +.landing-root .topbar-actions a, +.landing-root .topbar-actions button { + font-size: 0.75rem; padding: 5px 12px; border-radius: 1.25rem; + color: rgba(0,0,0,0.5); transition: all 0.15s; + text-decoration: none; font-family: var(--sans); + background: transparent; border: 1px solid rgba(0,0,0,0.1); + cursor: pointer; +} +.landing-root .topbar-actions a:hover, +.landing-root .topbar-actions button:hover { + color: #000; border-color: rgba(0,0,0,0.2); +} +.landing-root .topbar-actions .kapa-landing-btn { + color: var(--mint); border-color: rgba(152,239,221,0.2); +} +.landing-root .topbar-actions .kapa-landing-btn:hover { + border-color: var(--mint); +} +.landing-root .topbar-tabs { + display: flex; align-items: center; justify-content: center; gap: 2px; + height: 2.25rem; padding: 0 1rem; + border-top: 1px solid rgba(255,255,255,0.04); + overflow-x: auto; + background: var(--black); } -.landing-root .topbar-links a.primary:hover { - background: var(--purple-dim); border-color: var(--purple); +.landing-root .topbar-tabs a { + font-size: 0.8125rem; font-weight: 500; padding: 0.25rem 0.625rem; + color: var(--gray-muted); text-decoration: none; transition: color 0.15s; + white-space: nowrap; } -.landing-root .topbar-links .kapa-landing-btn { - font-size: 1.3rem; padding: 6px 14px; border-radius: 8px; - color: var(--purple); background: var(--purple-dim); - border: 1px solid rgba(97,61,255,0.15); font-weight: 500; - cursor: pointer; transition: all 0.2s; font-family: var(--sans); +.landing-root .topbar-tabs a:hover { color: var(--white); } + +/* ── Logo ── */ +.landing-root .landing-logo { + padding: 2rem 0 0; + opacity: 0; animation: landingFadeIn 0.5s ease forwards 0.1s; } -.landing-root .topbar-links .kapa-landing-btn:hover { - background: var(--purple-hover); border-color: var(--purple); +.landing-root .landing-logo svg { + height: 2rem; width: auto; color: #000; } /* ── Hero ── */ .landing-root .hero { - position: relative; padding: 72px 0 56px; overflow: hidden; + position: relative; padding: 40px 0 32px; overflow: hidden; background: var(--black); } .landing-root .hero-inner { position: relative; z-index: 5; max-width: 1500px; - margin-bottom: 28px; padding-top: 20px; + margin-bottom: 36px; padding-top: 20px; } .landing-root .hero-badge { display: inline-block; @@ -155,143 +174,117 @@ html, body { background: #0d0f12 !important; } opacity: 0; animation: landingFadeIn 0.6s ease forwards 0.35s; } -/* ── Quick-start cards ── */ +/* ── Product cards ── */ .landing-root .quickstart { - display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; - padding-bottom: 15px; - opacity: 0; animation: landingFadeIn 0.6s ease forwards 0.5s; -} -@media (max-width: 900px) { - .landing-root .quickstart { grid-template-columns: repeat(2, 1fr); } + display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; + padding-bottom: 0; + opacity: 0; animation: landingFadeIn 0.6s ease forwards 0.65s; } -@media (max-width: 520px) { +@media (max-width: 640px) { .landing-root .quickstart { grid-template-columns: 1fr; } } .landing-root .qs-card { + position: relative; overflow: hidden; background: var(--surface); border: 1px solid var(--border); - border-radius: var(--radius); padding: 22px 18px; + border-radius: var(--radius); padding: 24px 22px 20px; transition: all 0.25s ease; cursor: pointer; display: flex; flex-direction: column; gap: 8px; } +.landing-root .qs-card::before { + content: ''; position: absolute; inset: 0; opacity: 0; + transition: opacity 0.3s ease; border-radius: inherit; z-index: 0; +} .landing-root .qs-card:hover { - border-color: var(--purple); background: var(--surface-hover); + border-color: rgba(255,255,255,0.18); background: var(--surface-hover); transform: translateY(-2px); - box-shadow: 0 8px 32px rgba(0,0,0,0.3); + box-shadow: 0 10px 32px rgba(0,0,0,0.35); +} +.landing-root .qs-card:hover::before { opacity: 1; } +.landing-root .qs-card--purple::before { + background: radial-gradient(ellipse at top right, rgba(202,177,255,0.07) 0%, transparent 60%); +} +.landing-root .qs-card--mint::before { + background: radial-gradient(ellipse at top right, rgba(152,239,221,0.07) 0%, transparent 60%); +} +.landing-root .qs-card--yellow::before { + background: radial-gradient(ellipse at top right, rgba(232,255,117,0.07) 0%, transparent 60%); +} +.landing-root .qs-card .qs-card-top { + position: relative; z-index: 1; + display: flex; align-items: center; gap: 12px; } .landing-root .qs-card .qs-icon { - width: 34px; height: 34px; border-radius: 9px; - background: var(--purple-dim); + width: 38px; height: 38px; border-radius: 10px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } -.landing-root .qs-card .qs-icon svg { - width: 17px; height: 17px; color: var(--purple); -} +.landing-root .qs-card--purple .qs-icon { background: rgba(202,177,255,0.12); } +.landing-root .qs-card--mint .qs-icon { background: rgba(152,239,221,0.12); } +.landing-root .qs-card--yellow .qs-icon { background: rgba(232,255,117,0.12); } +.landing-root .qs-card .qs-icon svg { width: 19px; height: 19px; } +.landing-root .qs-card--purple .qs-icon svg { color: var(--purple); } +.landing-root .qs-card--mint .qs-icon svg { color: var(--mint); } +.landing-root .qs-card--yellow .qs-icon svg { color: var(--yellow); } .landing-root .qs-card h3 { - font-size: 0.9rem; font-weight: 600; + position: relative; z-index: 1; + font-size: 1.05rem; font-weight: 600; line-height: 1.3; margin: 0; color: var(--white); } .landing-root .qs-card p { - font-size: 0.8rem; color: var(--white); - line-height: 1.45; flex: 1; margin: 0; + position: relative; z-index: 1; + font-size: 0.85rem; color: var(--white); opacity: 0.5; + line-height: 1.5; margin: 0; } .landing-root .qs-card .qs-arrow { - font-size: 0.75rem; color: var(--purple); font-weight: 500; - display: flex; align-items: center; gap: 4px; margin-top: 2px; -} -.landing-root .qs-card .qs-arrow svg { width: 10px; height: 10px; } - -/* ── Divider ── */ -.landing-root .divider { - border: none; border-top: 1px solid var(--border); margin: 0; -} - -/* ── Section heading ── */ -.landing-root .section-head { - padding: 20px 0 10px; - display: flex; align-items: baseline; gap: 12px; -} -.landing-root .section-head .mono-label { - font-family: var(--mono); font-size: 1.5rem; font-weight: 500; - letter-spacing: 0.1em; text-transform: uppercase; - color: var(--purple); flex-shrink: 0; -} -.landing-root .section-head h2 { - font-size: 1.4rem; font-weight: 500; - letter-spacing: -0.015em; margin: 0; color: var(--white); -} - -/* ── Capabilities ── */ -.landing-root .cap-grid { - display: grid; grid-template-columns: 1fr 1fr; - gap: 10px; padding-bottom: 15px; -} -@media (max-width: 700px) { - .landing-root .cap-grid { grid-template-columns: 1fr; } + position: relative; z-index: 1; + font-size: 0.78rem; font-weight: 500; + display: flex; align-items: center; gap: 5px; margin-top: 4px; + transition: gap 0.2s ease; +} +.landing-root .qs-card--purple .qs-arrow { color: var(--purple); } +.landing-root .qs-card--mint .qs-arrow { color: var(--mint); } +.landing-root .qs-card--yellow .qs-arrow { color: var(--yellow); } +.landing-root .qs-card:hover .qs-arrow { gap: 9px; } +.landing-root .qs-card .qs-arrow svg { width: 11px; height: 11px; } + +/* ── Landing search bar ── */ +.landing-root .landing-search { + max-width: 760px; margin: 0 auto; + padding: 0 0 28px; + opacity: 0; animation: landingFadeIn 0.6s ease forwards 0.5s; } -.landing-root .cap-card { +.landing-root .landing-search-btn { + width: 100%; display: flex; align-items: center; gap: 14px; background: var(--surface); border: 1px solid var(--border); - border-radius: var(--radius); padding: 24px 22px; - transition: border-color 0.2s, background 0.2s; -} -.landing-root .cap-card:hover { - border-color: var(--border-hover); - background: var(--surface-hover); + border-radius: var(--radius); padding: 18px 24px; + cursor: pointer; transition: all 0.2s ease; + font-family: var(--sans); } -.landing-root .cap-card h3 { - font-size: 0.9rem; font-weight: 600; - margin: 0 0 6px 0; color: var(--white); - display: flex; align-items: center; gap: 8px; +.landing-root .landing-search-btn:hover { + border-color: rgba(255,255,255,0.16); background: var(--surface-hover); + box-shadow: 0 6px 24px rgba(0,0,0,0.25); } -.landing-root .cap-card h3 .tag { - font-family: var(--mono); font-size: 0.62rem; font-weight: 500; - color: var(--purple); background: var(--purple-dim); - padding: 2px 7px; border-radius: 4px; letter-spacing: 0.03em; +.landing-root .landing-search-btn svg { + width: 20px; height: 20px; color: rgba(0,0,0,0.3); flex-shrink: 0; } -.landing-root .cap-card p { - font-size: 0.85rem; color: var(--white); - line-height: 1.55; margin: 0; +.landing-root .landing-search-btn span { + font-size: 1rem; color: rgba(0,0,0,0.35); font-weight: 400; } -.landing-root .cap-card .cap-detail { - margin-top: 10px; padding-top: 10px; - border-top: 1px solid var(--border); - font-family: var(--mono); font-size: 0.72rem; - color: var(--white); line-height: 1.6; opacity: 0.5; +.landing-root .landing-search-btn kbd { + margin-left: auto; font-family: var(--sans); + font-size: 0.72rem; color: rgba(0,0,0,0.25); + background: rgba(0,0,0,0.04); border: 1px solid rgba(0,0,0,0.08); + border-radius: 6px; padding: 3px 9px; font-weight: 500; } -/* ── Use-case rows ── */ -.landing-root .usecase-grid { - display: grid; grid-template-columns: repeat(4, 1fr); - gap: 10px; padding-bottom: 15px; -} -@media (max-width: 900px) { - .landing-root .usecase-grid { grid-template-columns: repeat(2, 1fr); } -} -@media (max-width: 520px) { - .landing-root .usecase-grid { grid-template-columns: 1fr; } -} -.landing-root .uc-card { - background: var(--surface); border: 1px solid var(--border); - border-radius: var(--radius); padding: 22px 18px; - transition: border-color 0.2s; -} -.landing-root .uc-card:hover { - border-color: var(--border-hover); +/* ── Search modal z-index fix ── */ +.landing-root .fixed.inset-0, +.landing-root [class*="z-500"] { + z-index: 9999 !important; } -.landing-root .uc-card h4 { - font-size: 0.85rem; font-weight: 600; - margin: 0 0 8px 0; color: var(--white); -} -.landing-root .uc-card ul { - list-style: none; padding: 0; margin: 0; -} -.landing-root .uc-card li { - font-size: 0.78rem; color: var(--white); line-height: 1.5; - padding: 2px 0 2px 14px; position: relative; opacity: 0.7; -} -.landing-root .uc-card li::before { - content: ''; position: absolute; left: 0; top: 9px; - width: 4px; height: 4px; border-radius: 50%; - background: var(--purple); opacity: 0.6; + +/* ── Divider ── */ +.landing-root .divider { + border: none; border-top: 1px solid var(--border); margin: 0; } .landing-root .hero-lead { @@ -336,32 +329,23 @@ html, body { background: #0d0f12 !important; } flex-shrink: 0; } -/* ── Not-for ── */ -.landing-root .notfor { padding-bottom: 64px; } -.landing-root .notfor-row { display: flex; gap: 8px; flex-wrap: wrap; } -.landing-root .notfor-chip { - font-size: 0.8rem; color: var(--white); opacity: 0.7; - background: var(--surface); border: 1px solid var(--border); - border-radius: 10px; padding: 9px 16px; -} - /* ── Footer ── */ .landing-root .page-footer { - border-top: 1px solid var(--border); padding: 36px 0; + border-top: 1px solid rgba(0,0,0,0.08); margin-top: 80px; padding: 36px 0; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; } .landing-root .footer-left { - font-size: 0.75rem; color: rgba(255,255,255,0.3); + font-size: 0.75rem; color: rgba(0,0,0,0.3); } .landing-root .footer-right { display: flex; gap: 20px; } .landing-root .footer-right a { - color: var(--purple); font-size: 0.8rem; transition: color 0.2s; + color: rgba(0,0,0,0.4); font-size: 0.8rem; transition: color 0.2s; } -.landing-root .footer-right a:hover { color: #4c2ecc; } +.landing-root .footer-right a:hover { color: #613dff; } /* ── Animations ── */ @keyframes landingFadeIn { @@ -378,6 +362,13 @@ html, body { background: #0d0f12 !important; } `; export default function LandingPage() { + const [searchOpen, setSearchOpen] = useState(false); + const { siteConfig } = useDocusaurusContext(); + const baseUrl = siteConfig.baseUrl; + + // Prepend baseUrl to internal paths for correct preview deploy links + const u = (path: string) => `${baseUrl}${path.replace(/^\//, '')}`; + useEffect(() => { const cleanups: Array<() => void> = []; @@ -391,8 +382,8 @@ export default function LandingPage() { const copyBtn = document.getElementById('copy-page-button-container'); if (copyBtn) cleanups.push(hideEl(copyBtn)); - cleanups.push(setStyle(document.documentElement, 'background', '#0d0f12')); - cleanups.push(setStyle(document.body, 'background', '#0d0f12')); + cleanups.push(setStyle(document.documentElement, 'background', '#fff')); + cleanups.push(setStyle(document.body, 'background', '#fff')); const root = document.querySelector( '.landing-root', @@ -404,7 +395,7 @@ export default function LandingPage() { cleanups.push(setStyle(el, 'margin', '0')); cleanups.push(setStyle(el, 'maxWidth', '100%')); cleanups.push(setStyle(el, 'width', '100%')); - cleanups.push(setStyle(el, 'background', '#0d0f12')); + cleanups.push(setStyle(el, 'background', '#fff')); el = el.parentElement; } } @@ -421,9 +412,21 @@ export default function LandingPage() { .querySelectorAll('.landing-root .scroll-reveal') .forEach((el) => obs.observe(el)); + // "/" key opens the search bar + function handleKey(e: KeyboardEvent) { + if (e.key === '/' && !e.metaKey && !e.ctrlKey + && !(e.target instanceof HTMLInputElement) + && !(e.target instanceof HTMLTextAreaElement)) { + e.preventDefault(); + setSearchOpen(true); + } + } + document.addEventListener('keydown', handleKey); + return () => { cleanups.forEach((fn) => fn()); obs.disconnect(); + document.removeEventListener('keydown', handleKey); }; }, []); @@ -454,40 +457,11 @@ export default function LandingPage() {