Adds Claude Code agent skill for Headlamp plugin development,
sourced from headlamp-agent-skills repository.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The self-hosted runner does not have gh CLI installed, causing
the Create GitHub Release step to fail with 'command not found'.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
headlamp-plugin package already produces {name}-{version}.tar.gz,
so mv fails when source and destination are the same file.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The async import() in vi.mock factories requires module=esnext in
tsconfig. Without this, tsc reports TS1323 for all component test files.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace .eslintrc.json with .eslintrc.js (standard @headlamp-k8s/eslint-config)
- Create .prettierrc.js (standard Headlamp prettier config)
- Add .headlamp-plugin/, .env, .env.local, .eslintcache to .gitignore
- Remove .claude/settings.json and .claude/settings.local.json from .gitignore
- Create .claude/settings.local.json with enabled MCP servers
- Remove "Subagent guidance" section and hardcoded test count from CLAUDE.md
- Fix 8 component test files: replace require('./__mocks__/commonComponents.ts')
with await import('./__mocks__/commonComponents') in vi.mock factories —
require() cannot process TypeScript in hoisted mock context
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove PROMPT.md (AI scaffolding artifact)
- Add .claude/settings* to .gitignore
- Commit .mcp.json (MCP server config)
- Fix ArtifactHub URLs (headlamp/tns-csi path)
- Fix tarball name (tns-csi-VERSION.tar.gz) in all install docs
- Update version URLs from v0.1.0/v0.2.0 to v0.2.4
- Update test count from 67 to 159 across 12 files
- Update Node.js version from 20 to 22
- Add CHANGELOG entry for v0.2.4
- Update testing.md with full test file inventory and CI description
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update appVersion to 0.12.0 (current latest tns-csi release). Add a
release workflow step that fetches the latest fenio/tns-csi release tag
and updates appVersion automatically on each plugin release.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
- 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>
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>
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>
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>
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>
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>
- 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>
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>