diff --git a/src/components/Badge.tsx b/src/components/Badge.tsx new file mode 100644 index 0000000..6722de7 --- /dev/null +++ b/src/components/Badge.tsx @@ -0,0 +1,28 @@ +const variants = { + red: 'bg-red3 text-red11', + amber: 'bg-amber3 text-amber11', + green: 'bg-green3 text-green11', + blue: 'bg-accentTint text-accent', + violet: 'bg-violet3 text-violet11', + gray: 'bg-gray3 text-gray11', +} as const + +type BadgeVariant = keyof typeof variants + +export function Badge({ + variant = 'gray', + children, +}: { + variant?: BadgeVariant + children: React.ReactNode +}) { + return ( + + {children} + + ) +} + +export default Badge diff --git a/src/pages/guide/node/index.mdx b/src/pages/guide/node/index.mdx index d2eceae..bba72eb 100644 --- a/src/pages/guide/node/index.mdx +++ b/src/pages/guide/node/index.mdx @@ -35,6 +35,12 @@ Prebuilt binaries are available for: icon="lucide:play" title="Running an RPC Node" /> + :::info diff --git a/src/pages/guide/node/network-upgrades.mdx b/src/pages/guide/node/network-upgrades.mdx new file mode 100644 index 0000000..b83d1ee --- /dev/null +++ b/src/pages/guide/node/network-upgrades.mdx @@ -0,0 +1,39 @@ +--- +description: Timeline and details for Tempo network upgrades and important releases for node operators. +--- + +import { Badge } from '../../../components/Badge' + +# Network Upgrades and Releases + +Tempo uses scheduled network upgrades to introduce protocol changes. Each upgrade goes through testnet activation before mainnet. This page also tracks important releases that node operators should be aware of. + +For detailed release notes and binaries, see the [Changelog](/changelog). + +## Required Node Operator Updates + +| Release | Date | Network | Description | Priority | +|---------|------|---------|-------------|----------| +| [v1.2.0](https://github.com/tempoxyz/tempo/releases/tag/v1.2.0) | Feb 13, 2026 | Mainnet only | Fixes validation bug rejecting transactions with gas limits above ~16.7M, blocking large contract deployments | Required | + +--- + +## T1 (Bach) + +| | | +|---|---| +| **Scope** | Mainnet-ready gas economics, expiring nonces, and security hardening | +| **TIPs** | [TIP-1000: State Creation Cost Increase](https://docs.tempo.xyz/protocol/tips/tip-1000), [TIP-1009: Expiring Nonces](https://docs.tempo.xyz/protocol/tips/tip-1009), [TIP-1010: Mainnet Gas Parameters](https://docs.tempo.xyz/protocol/tips/tip-1010) | +| **Testnet** | Feb 5, 2026 15:00 UTC (unix: 1770303600) — Release: [v1.1.0](https://github.com/tempoxyz/tempo/releases/tag/v1.1.0) | +| **Mainnet** | Feb 12, 2026 15:00 UTC (unix: 1770908400) — Release: [v1.1.1](https://github.com/tempoxyz/tempo/releases/tag/v1.1.1) | +| **Priority** | Required | + +--- + +## T0 (Genesis) + +| | | +|---|---| +| **Scope** | Initial mainnet launch | +| **Mainnet** | Jan 16, 2026 (genesis) — Release: [v1.0.0](https://github.com/tempoxyz/tempo/releases/tag/v1.0.0) | +| **Priority** | Required | diff --git a/vite.config.ts b/vite.config.ts index 7af2318..31194ff 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -26,6 +26,40 @@ function tempoNode(): Plugin { } } +/** + * Escape angle brackets in prose so MDX does not interpret them as JSX. + * Preserves content inside fenced code blocks and inline code spans. + */ +function escapeAngleBrackets(source: string): string { + const lines = source.split('\n') + const result: string[] = [] + let inCodeBlock = false + + for (const line of lines) { + if (/^```/.test(line)) { + inCodeBlock = !inCodeBlock + result.push(line) + continue + } + if (inCodeBlock) { + result.push(line) + continue + } + // Split by inline code spans to avoid escaping inside them + const parts = line.split(/(`[^`]*`)/) + for (let i = 0; i < parts.length; i++) { + if (i % 2 === 0) { + // Escape < > that would be misread as JSX. Use backslash escapes + // which MDX/micromark supports. + parts[i] = parts[i].replace(//g, '>') + } + } + result.push(parts.join('')) + } + + return result.join('\n') +} + function syncTips(): Plugin { const repo = 'tempoxyz/tempo' const outputDir = 'src/pages/protocol/tips' @@ -57,6 +91,9 @@ function syncTips(): Plugin { /\(tips\/ref-impls\/src\/interfaces\/(\w+\.sol)\)/g, '(https://github.com/tempoxyz/tempo-std/blob/master/src/interfaces/$1)', ) + // Escape angle brackets outside of code blocks/inline code so MDX doesn't + // treat them as JSX (e.g. `Mapping` in prose). + content = escapeAngleBrackets(content) const outputPath = path.join(outputDir, file.name.replace('.md', '.mdx')) await fs.writeFile(outputPath, content) }), diff --git a/vocs.config.ts b/vocs.config.ts index 14eabbd..6e3d4a7 100644 --- a/vocs.config.ts +++ b/vocs.config.ts @@ -544,6 +544,10 @@ export default defineConfig({ text: 'Operating your validator', link: '/guide/node/operate-validator', }, + { + text: 'Network Upgrades and Releases', + link: '/guide/node/network-upgrades', + }, ], }, // {