github-actions[bot]
ae8d93aaa7
chore: release v0.2.4
v0.2.4
2026-02-26 17:37:55 +00:00
Chris Farhood
680289fba4
fix(release): use correct tarball name (tns-csi, not headlamp-tns-csi-plugin)
...
headlamp-plugin package names the tarball from package.json "name" field
which is "tns-csi", producing tns-csi-VERSION.tar.gz.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 17:33:24 +00:00
Chris Farhood
f7592d69db
fix(ci): add eslint config, fix conditional hook, add checks permission
...
- Add .eslintrc.json (was missing, causing lint to always fail)
- Move useMemo above early return in OverviewPage to fix rules-of-hooks
- Remove unused imports in OverviewPage
- Add checks:write permission to test job for dorny/test-reporter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 17:20:19 +00:00
Chris Farhood
fa401afecf
ci: overhaul CI and Release workflows
...
Split CI into parallel lint/typecheck/test jobs with build gating on all
three. Add JUnit test reporter for PR visibility. Bump Node 20 to 22.
Replace inline npx commands with npm run scripts. Add CI gate and
concurrency control to Release workflow. Harden tarball validation.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 17:14:04 +00:00
Chris Farhood
cdff1d1a07
test: add component tests for all 8 UI components
...
Add 92 new tests across 8 test files covering DriverStatusCard,
SnapshotsPage, PVCDetailSection, StorageClassesPage, VolumesPage,
MetricsPage, OverviewPage, and BenchmarkPage. Includes shared
test-helpers.tsx with fixtures and a lightweight CommonComponents
mock. Total tests: 67 → 159.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 17:08:09 +00:00
Chris Farhood
54a33d70b0
chore: remove tracked tarballs and add .gitignore
...
Release tarballs were committed to the repo. Remove them and add a
.gitignore to prevent it from happening again.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 16:45:25 +00:00
Chris Farhood
7922630fc3
chore: remove dead AppBarDriverBadge component
...
The registerAppBarAction call was removed in v0.2.1 (96ea9e1 ) but the
component file was left behind. Nothing imports it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-02-26 16:39:06 +00:00
Chris Farhood
a20c20a4ec
chore: release v0.2.3
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
v0.2.3
2026-02-19 16:08:54 -05:00
Chris Farhood
3e757db799
chore: release v0.2.2
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
v0.2.2
2026-02-19 13:31:01 -05:00
Chris Farhood
81b0b35089
docs: add v0.2.1 changelog entry
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-19 07:07:41 -05:00
github-actions[bot]
76ab680d9a
chore: release v0.2.1
v0.2.1
2026-02-19 12:05:36 +00:00
Chris Farhood
9aeafc4344
fix: derive Pool from datasetName on tns-csi PV rows
...
tns-csi driver does not write pool directly into volumeAttributes; it
writes datasetName (e.g. "tank/pvc-abc123"). Extract the pool as the
first path segment so the Pool column populates correctly.
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-19 06:59:55 -05:00
Chris Farhood
e082c60677
fix: repair brace mismatch in DataContext and replace PV Pool column with Dataset
...
- TnsCsiDataContext: pool stats fetch was outside the outer try block due
to a brace mismatch introduced when adding TrueNAS API integration;
this caused the entire fetchAsync function to throw a syntax-level
error, breaking the OverviewPage
- StorageClassColumns (PV): replace non-populating Pool column with
Dataset column (tns-csi driver writes datasetName, not pool, into
PV volumeAttributes)
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-19 06:48:01 -05:00
Chris Farhood
96ea9e1207
feat: remove app bar driver health badge
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 19:28:00 -05:00
Chris Farhood
a77aa3a1dc
docs: update README download URLs to v0.2.0
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 16:58:55 -05:00
Chris Farhood
145101b1b5
docs: add v0.2.0 changelog entry and fix footer links
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 16:58:24 -05:00
github-actions[bot]
03d616a545
chore: release v0.2.0
v0.2.0
2026-02-18 21:39:31 +00:00
Chris Farhood
7ef7b8b7b5
chore: add package-lock.json for CI reproducible installs
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 16:38:36 -05:00
Chris Farhood
f1feb5c2f7
feat: native Headlamp integration, TrueNAS API, docs, and CI for v0.2.0
...
Native Headlamp integrations:
- registerResourceTableColumnsProcessor: add Protocol/Pool/Server columns to
native StorageClass table and Protocol/Volume Handle to PV table
- registerDetailsViewSection: inject TNS-CSI section into PV detail pages
- registerDetailsViewSection: inject driver role/status into tns-csi Pod pages
- registerDetailsViewHeaderAction: Benchmark shortcut on StorageClass detail
- registerAppBarAction: driver health badge (N/Nc M/Mn, color-coded)
- Trim sidebar from 6 → 4 entries (Overview, Snapshots, Metrics, Benchmark)
TrueNAS API integration:
- src/api/truenas.ts: ConfigStore-backed settings, WebSocket JSON-RPC client
for pool.query (auth.login_with_api_key + pool.query)
- src/components/TnsCsiSettings.tsx: API key + server override settings UI
with connection test button
- TnsCsiDataContext: fetch real pool stats (size/allocated/free/status)
- OverviewPage: three-tier pool capacity display (real data → error → metrics
fallback)
Documentation:
- README, CHANGELOG, CONTRIBUTING, SECURITY
- docs/: architecture, deployment (Helm), getting-started, user-guide,
troubleshooting
CI:
- .github/workflows/ci.yaml: lint + type-check + test on PR/push
- .github/workflows/release.yaml: workflow_dispatch versioned release
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 16:37:56 -05:00
Chris Farhood
f2f3c3a87e
Rename sidebar top-level label from 'TNS CSI' to 'TrueNAS'
...
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 15:44:52 -05:00
Chris Farhood
aeab42b6ec
Fix: add required maintainer email to artifacthub-pkg.yml
...
Artifact Hub requires a non-empty email on all maintainer entries.
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 14:10:28 -05:00
Chris Farhood
44a7f654f0
Add Artifact Hub repositoryID for verified publisher
...
repositoryID: cae81660-2624-4e02-8ac2-a176cbe94402
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 14:04:30 -05:00
Chris Farhood
0d0bf0f609
Add Artifact Hub metadata for v0.1.0
...
artifacthub-pkg.yml: package metadata with headlamp plugin annotations
- archive-url pointing to v0.1.0 GitHub release tarball
- sha256 checksum: 14a3e8c13d0b894a41aa1cfccbcb1f6af09dcbb8fd95c7040a540987ea2096a7
- version-compat: >=0.20.0
- distro-compat: in-cluster, web, app
artifacthub-repo.yml: repository ownership (repositoryID to be filled
after registering on artifacthub.io)
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 14:00:28 -05:00
Chris Farhood
2d4b89ccaa
Add meta-orchestration agents and update CLAUDE.md
...
Installs three local agents from VoltAgent/awesome-claude-code-subagents:
- agent-organizer (sonnet): task decomposition + agent team assembly
- multi-agent-coordinator (opus): concurrent agent synchronization + fault tolerance
- agent-installer (haiku): browse/install agents from awesome-claude-code-subagents
Updates CLAUDE.md subagent guidance with agent reference table and
recommended usage pattern (organizer → coordinator).
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
v0.1.0
2026-02-18 09:46:03 -05:00
Chris Farhood
035928f8e0
Add CLAUDE.md with project context and subagent guidance
...
Documents architecture, key constants, code conventions, and
explains why background agents should be avoided for open-ended
research in favor of main-session tool use + scoped agent delegation.
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 09:41:04 -05:00
Chris Farhood
e5d1fcb11c
Implement headlamp-tns-csi-plugin
...
Full plugin implementation with 6 pages, K8s resource filtering,
Prometheus metrics parsing, kbench benchmark runner, and 67 unit tests.
## Pages
- Overview: driver health, storage summary, protocol distribution chart, non-Bound PVC alerts
- Storage Classes: tns-csi SC table with slide-in detail panel + protocol notes
- Volumes: PV table with full CSI attribute detail panel
- Snapshots: VolumeSnapshot CRDs with graceful degradation if not installed
- Metrics: Prometheus text format parser + WebSocket/Volume/CSI operation cards
- Benchmark: kbench Job+PVC lifecycle, FIO log parser, past benchmarks list
## API modules
- k8s.ts: typed resource shapes, filtering helpers, formatting utilities
- metrics.ts: Prometheus text format parser, tns-csi metric extraction
- kbench.ts: Job/PVC manifests, lifecycle management, FIO summary parser
- TnsCsiDataContext.tsx: shared React context with memoized filtered resources
## Quality
- TypeScript strict mode, zero any, discriminated union for benchmark state
- 67 tests passing (vitest + @testing-library/react)
- registerDetailsViewSection injects TNS-CSI details on PVC pages
- Graceful degradation for missing CSIDriver and VolumeSnapshot CRDs
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 07:45:19 -05:00
Chris Farhood
fd9db4f4a7
Add comprehensive implementation prompt for headlamp-tns-csi-plugin
...
Covers plugin architecture, tns-csi resource filtering, kbench
Job/PVC lifecycle, Prometheus metrics parsing, all 6 pages
(Overview, StorageClasses, Volumes, Snapshots, Metrics, Benchmark),
headlamp registration patterns, TypeScript/React quality checklists,
and incorporated kubernetes-specialist, typescript-pro, and
react-specialist persona guidance.
Generated with [Claude Code](https://claude.ai/code )
via [Happy](https://happy.engineering )
Co-Authored-By: Claude <noreply@anthropic.com >
Co-Authored-By: Happy <yesreply@happy.engineering >
2026-02-18 07:32:26 -05:00