@axiomatic-labs/claudeflow 2.13.79 → 2.13.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/lib/panel.js +16 -14
  2. package/package.json +1 -1
package/lib/panel.js CHANGED
@@ -1669,19 +1669,23 @@ function renderValidators() {
1669
1669
 
1670
1670
  const validators = [...new Set(v.runs.map((r) => r.validator))].sort();
1671
1671
  const scopes = [...new Set(v.runs.map((r) => r.scope))].sort();
1672
+ // Reuse the observer-filter CSS class so the Validators tab matches
1673
+ // the visual language of the Observer tab. Pre-v2.13.80 the pills used
1674
+ // a non-existent pill class, falling back to default browser button
1675
+ // styling — light buttons on dark background.
1672
1676
  const validatorPill = (label, value, count) => {
1673
1677
  const a = (validatorsFilter === value);
1674
- const cls = a ? 'pill pill-active' : 'pill';
1678
+ const cls = a ? 'observer-filter active' : 'observer-filter';
1675
1679
  return \`<button class="\${cls}" data-validators-filter="\${escapeHtml(value)}">\${escapeHtml(label)}<span class="muted" style="margin-left:6px;font-size:11px;">\${count}</span></button>\`;
1676
1680
  };
1677
1681
  const statusPill = (label, value, count) => {
1678
1682
  const a = (validatorsStatusFilter === value);
1679
- const cls = a ? 'pill pill-active' : 'pill';
1683
+ const cls = a ? 'observer-filter active' : 'observer-filter';
1680
1684
  return \`<button class="\${cls}" data-validators-status-filter="\${escapeHtml(value)}">\${escapeHtml(label)}<span class="muted" style="margin-left:6px;font-size:11px;">\${count}</span></button>\`;
1681
1685
  };
1682
1686
  const scopePill = (label, value, count) => {
1683
1687
  const a = (validatorsScopeFilter === value);
1684
- const cls = a ? 'pill pill-active' : 'pill';
1688
+ const cls = a ? 'observer-filter active' : 'observer-filter';
1685
1689
  return \`<button class="\${cls}" data-validators-scope-filter="\${escapeHtml(value)}">\${escapeHtml(label)}<span class="muted" style="margin-left:6px;font-size:11px;">\${count}</span></button>\`;
1686
1690
  };
1687
1691
 
@@ -1738,21 +1742,19 @@ function renderValidators() {
1738
1742
  ? 'Clear all history'
1739
1743
  : \`Clear "\${escapeHtml(validatorsScopeFilter)}" history\`;
1740
1744
 
1745
+ const filterRow = (label, pillsHtml) => \`<div style="display:flex;align-items:center;gap:10px;margin:6px 0;flex-wrap:wrap;">
1746
+ <span class="muted" style="font-size:11px;text-transform:uppercase;letter-spacing:0.5px;min-width:74px;">\${label}</span>
1747
+ <div style="display:flex;gap:6px;flex-wrap:wrap;">\${pillsHtml}</div>
1748
+ </div>\`;
1749
+
1741
1750
  return \`<h2>Validators
1742
1751
  <button id="clear-validators" class="btn btn-ghost" style="float:right;font-size:12px;" data-scope="\${escapeHtml(validatorsScopeFilter)}">\${clearLabel}</button>
1743
1752
  </h2>
1744
1753
  <p class="muted" style="margin-top:0;">Last updated \${formatRelativeTime(v.updated_at)} · \${v.stats.total} total run(s): \${v.stats.pass} pass, \${v.stats.block} block, \${v.stats.skip} skip, \${v.stats.error} error.</p>
1745
- <div style="margin:12px 0;">
1746
- <div style="margin-bottom:6px;"><span class="muted" style="font-size:11px;text-transform:uppercase;">Validator</span></div>
1747
- \${validatorPills}
1748
- </div>
1749
- <div style="margin:12px 0;">
1750
- <div style="margin-bottom:6px;"><span class="muted" style="font-size:11px;text-transform:uppercase;">Scope</span></div>
1751
- \${scopePills}
1752
- </div>
1753
- <div style="margin:12px 0;">
1754
- <div style="margin-bottom:6px;"><span class="muted" style="font-size:11px;text-transform:uppercase;">Status</span></div>
1755
- \${statusPills}
1754
+ <div class="card" style="padding:10px 14px;margin:12px 0;">
1755
+ \${filterRow('Validator', validatorPills)}
1756
+ \${filterRow('Scope', scopePills)}
1757
+ \${filterRow('Status', statusPills)}
1756
1758
  </div>
1757
1759
  <div class="card" style="padding:0;">\${runRows || '<p class="muted" style="padding:12px;">No runs match the current filter.</p>'}</div>\`;
1758
1760
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axiomatic-labs/claudeflow",
3
- "version": "2.13.79",
3
+ "version": "2.13.80",
4
4
  "description": "Claudeflow — AI-powered development toolkit for Claude Code. Skills, agents, hooks, and quality gates that ship production apps.",
5
5
  "bin": {
6
6
  "claudeflow": "./bin/cli.js"