v3.14.2: fix Tabs hydration -- init on direct load + astro:page-load (was inert on hard loads)

This commit is contained in:
kochetkov-ma
2026-06-14 15:14:13 +01:00
parent 619bfe1ef3
commit cd8e32787e
9 changed files with 29 additions and 14 deletions
+5 -5
View File
@@ -6,13 +6,13 @@
},
"metadata": {
"description": "Claude Code plugin suite: brewcode for infinite task execution, brewdoc for documentation tools, brewtools for text utilities, brewui for UI/visual/creative tools",
"version": "3.14.1"
"version": "3.14.2"
},
"plugins": [
{
"name": "brewcode",
"description": "Brewcode - full-featured development platform for Claude Code: infinite focus tasks, prompt optimization, skill/agent creation, quorum reviews, rules management",
"version": "3.14.1",
"version": "3.14.2",
"category": "productivity",
"keywords": [
"brewcode",
@@ -46,7 +46,7 @@
{
"name": "brewdoc",
"description": "Brewdoc - Claude Code documentation tools: auto-sync for skills/agents/rules, my-claude installation docs, memory optimization, md-to-pdf conversion",
"version": "3.14.1",
"version": "3.14.2",
"category": "productivity",
"keywords": [
"brewdoc",
@@ -74,7 +74,7 @@
{
"name": "brewtools",
"description": "Brewtools - universal utilities for Claude Code: text optimization, humanization, secrets scanning",
"version": "3.14.1",
"version": "3.14.2",
"category": "productivity",
"keywords": [
"brewtools",
@@ -102,7 +102,7 @@
{
"name": "brewui",
"description": "Brewui - UI/visual/creative tools for Claude Code: AI image generation, design-to-code conversion",
"version": "3.14.1",
"version": "3.14.2",
"category": "productivity",
"keywords": [
"brewui",
+11
View File
@@ -2,6 +2,17 @@
---
## v3.14.2 (2026-06-14)
> Docs: [Prompt Injection](https://doc-claude.brewcode.app/brewtools/prompt-injection/)
### docs-site
#### Fixed
- **Tabs component:** tab panels now initialize on direct page loads, not only on view-transition navigations. The init logic was extracted into `initTabs()` and is invoked immediately AND on `astro:page-load` (idempotent via the `dataset.initialized` guard). Previously, on a hard load the tab group never hydrated -- both panels rendered stacked and tab switching was inert. Fixes the Tabs on the new Prompt Injection page plus installation and brewcode overview.
---
## v3.14.1 (2026-06-14)
> Docs: [Prompt Injection](https://doc-claude.brewcode.app/brewtools/prompt-injection/) | [brewtools:manager](https://doc-claude.brewcode.app/brewtools/skills/manager/)
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "brewcode",
"version": "3.14.1",
"version": "3.14.2",
"description": "Brewcode - full-featured development platform for Claude Code: infinite focus tasks, prompt optimization, skill/agent creation, quorum reviews, rules management",
"author": {
"name": "Maksim Kochetkov",
+1 -1
View File
@@ -4,7 +4,7 @@
| Field | Value |
|-------|-------|
| Version | 3.14.1 |
| Version | 3.14.2 |
| Skills | 15 |
| Agents | 12+ |
| Hooks | 8 |
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "claude-plugin-brewcode",
"version": "3.14.1",
"version": "3.14.2",
"description": "Infinite task execution with automatic handoff for Claude Code",
"keywords": [
"claude-code",
@@ -36,6 +36,6 @@
},
"claude-plugin": {
"name": "brewcode",
"version": "3.14.1"
"version": "3.14.2"
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "brewdoc",
"version": "3.14.1",
"version": "3.14.2",
"description": "Brewdoc - Claude Code documentation tools: auto-sync for skills/agents/rules, my-claude installation docs, memory optimization",
"author": {
"name": "Maksim Kochetkov",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "brewtools",
"version": "3.14.1",
"version": "3.14.2",
"description": "Brewtools - universal utilities for Claude Code: text optimization, humanization, secrets scanning",
"author": {
"name": "Maksim Kochetkov",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "brewui",
"version": "3.14.1",
"version": "3.14.2",
"description": "Brewui - UI/visual/creative tools for Claude Code: AI image generation, design-to-code conversion",
"author": {
"name": "Maksim Kochetkov",
+6 -2
View File
@@ -7,7 +7,7 @@ const groupId = `tabs-${Math.random().toString(36).slice(2, 8)}`;
</div>
<script>
document.addEventListener('astro:page-load', () => {
function initTabs() {
document.querySelectorAll<HTMLElement>('[data-tabs-group]').forEach((container) => {
if (container.dataset.initialized) return;
container.dataset.initialized = 'true';
@@ -48,5 +48,9 @@ const groupId = `tabs-${Math.random().toString(36).slice(2, 8)}`;
if (radio) radio.addEventListener('change', updatePanels);
});
});
});
}
// Run on initial direct load AND on every view-transition page load (idempotent via dataset.initialized).
initTabs();
document.addEventListener('astro:page-load', initTabs);
</script>