diff --git a/.claude/skills/changelog/watermark b/.claude/skills/changelog/watermark
index 65b461e22..60e33b400 100644
--- a/.claude/skills/changelog/watermark
+++ b/.claude/skills/changelog/watermark
@@ -1 +1 @@
-395146432531ceb34fb95b774f08401775365e7a
+9122d42de851f9b6260000c93fa193699f4e1f47
diff --git a/.claude/skills/docs/watermark b/.claude/skills/docs/watermark
index 866b4eaab..60e33b400 100644
--- a/.claude/skills/docs/watermark
+++ b/.claude/skills/docs/watermark
@@ -1 +1 @@
-e09a6de72fe7c69e8868abf5412c088bde05bece
+9122d42de851f9b6260000c93fa193699f4e1f47
diff --git a/docs/changelog/2026-03-16.mdx b/docs/changelog/2026-03-16.mdx
index 3c7439764..4d8814488 100644
--- a/docs/changelog/2026-03-16.mdx
+++ b/docs/changelog/2026-03-16.mdx
@@ -33,4 +33,5 @@ Three hook events — `stage_retrying`, `parallel_start`, and `parallel_complete
- Fixed stage durations always showing `0s` in PR descriptions due to a key mismatch between node labels and node IDs
+- Fixed OpenAI OAuth callback showing a deserialization error when the provider returns an error response (e.g. `invalid_scope`) — now displays a styled error page and propagates the error to the CLI
diff --git a/docs/changelog/2026-03-17.mdx b/docs/changelog/2026-03-17.mdx
new file mode 100644
index 000000000..b2370f724
--- /dev/null
+++ b/docs/changelog/2026-03-17.mdx
@@ -0,0 +1,20 @@
+---
+title: "OpenAI Codex backend support"
+date: "2026-03-17"
+---
+
+## OpenAI Codex backend support
+
+Users who authenticate with OpenAI credentials are now routed through the ChatGPT Codex backend API. Your OpenAI OAuth login gives you access to models through OpenAI's Codex infrastructure, with streaming-only requests and provider-specific optimizations handled automatically. The account ID from OAuth tokens is persisted so subsequent requests are properly associated.
+
+## More
+
+
+- Added `fabro docs` subcommand to open the documentation website in your browser
+- Added `fabro discord` subcommand to open the Discord community invite in your browser
+
+
+
+- Added `gpt-5.4-mini` to the model catalog
+- DOT workflow syntax is now highlighted in the documentation with color-coded keywords, strings, and attributes
+
diff --git a/docs/core-concepts/models.mdx b/docs/core-concepts/models.mdx
index f297e064a..f0fdbada3 100644
--- a/docs/core-concepts/models.mdx
+++ b/docs/core-concepts/models.mdx
@@ -22,6 +22,7 @@ No single model is best at everything. Fabro lets you assign the right model to
| `gpt-5.3-codex` | openai | `codex` | 1M | $1.80 / $14.00 | 100 tok/s |
| `gpt-5.3-codex-spark` | openai | `codex-spark` | 128K | n/a | 1000 tok/s |
| `gpt-5.4` | openai | `gpt54` | 1M | $2.50 / $15.00 | 70 tok/s |
+| `gpt-5.4-mini` | openai | `gpt54-mini` | 400K | $0.75 / $4.50 | 140 tok/s |
| `gpt-5.4-pro` | openai | `gpt54-pro` | 1M | $30.00 / $180.00 | 20 tok/s |
| `gemini-3.1-pro-preview` | gemini | `gemini-pro` | 1M | $2.00 / $12.00 | 85 tok/s |
| `gemini-3.1-pro-preview-customtools` | gemini | `gemini-customtools` | 1M | $2.00 / $12.00 | 85 tok/s |
diff --git a/docs/docs.json b/docs/docs.json
index 81d4f1eaa..76a40f140 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -272,6 +272,7 @@
"group": "March 2026",
"icon": "clock-rotate-left",
"pages": [
+ "changelog/2026-03-17",
"changelog/2026-03-16",
"changelog/2026-03-15",
"changelog/2026-03-14",
diff --git a/docs/reference/cli.mdx b/docs/reference/cli.mdx
index 7b04b1445..a2255aa2b 100644
--- a/docs/reference/cli.mdx
+++ b/docs/reference/cli.mdx
@@ -683,3 +683,21 @@ Interactive setup wizard that walks you through configuring API keys and validat
```bash
fabro install
```
+
+---
+
+## `fabro docs`
+
+Open the Fabro documentation website in your default browser.
+
+```bash
+fabro docs
+```
+
+## `fabro discord`
+
+Open the Fabro Discord community invite in your default browser.
+
+```bash
+fabro discord
+```