Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions src/components/Badge.tsx
Original file line number Diff line number Diff line change
@@ -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 (
<span
className={`inline-flex h-[19px] items-center justify-center rounded-[30px] px-1.5 text-center font-medium text-[9px] uppercase leading-none tracking-[2%] ${variants[variant]}`}
>
{children}
</span>
)
}

export default Badge
6 changes: 6 additions & 0 deletions src/pages/guide/node/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ Prebuilt binaries are available for:
icon="lucide:play"
title="Running an RPC Node"
/>
<Card
description="Upcoming and past network upgrades and important releases"
to="/guide/node/network-upgrades"
icon="lucide:arrow-up-circle"
title="Network Upgrades and Releases"
/>
</Cards>

:::info
Expand Down
39 changes: 39 additions & 0 deletions src/pages/guide/node/network-upgrades.mdx
Original file line number Diff line number Diff line change
@@ -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 | <Badge variant="red">Required</Badge> |

---

## 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** | <Badge variant="red">Required</Badge> |

---

## 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** | <Badge variant="red">Required</Badge> |
37 changes: 37 additions & 0 deletions vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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, '&lt;').replace(/>/g, '&gt;')
}
}
result.push(parts.join(''))
}

return result.join('\n')
}

function syncTips(): Plugin {
const repo = 'tempoxyz/tempo'
const outputDir = 'src/pages/protocol/tips'
Expand Down Expand Up @@ -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<B256, bool>` in prose).
content = escapeAngleBrackets(content)
const outputPath = path.join(outputDir, file.name.replace('.md', '.mdx'))
await fs.writeFile(outputPath, content)
}),
Expand Down
4 changes: 4 additions & 0 deletions vocs.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
},
],
},
// {
Expand Down