Skip to content

v1.2.2 — real type checking, 132 errors fixed

Latest

Choose a tag to compare

@anshu8858 anshu8858 released this 21 Sep 05:44

The frontend type check now actually runs — and this release fixes everything it had been silently ignoring.

Conman dashboard

The type check was a no-op

CI's "Type check" step and the build script ran npx tsc --noEmit. --noEmit does not follow project references, and the root tsconfig.json is solution-style ("files": [] plus references) — so it type-checked nothing and always exited 0. Both now run tsc -b.

Running the real check reported 132 errors. All 132 are fixed. Several were genuine defects, not lint noise:

Where What was wrong
ContainerDetails TabType had drifted from the rendered tab list — missing processes and activity, while still declaring a metrics tab no panel renders. It is now derived from CONTAINER_TABS, so the tab bar and the panels cannot diverge again.
Containers The container inspect dialog rendered with no heading — every other page passes title to InspectModal, this call site did not.
StackDetails The Publishers type omitted TargetPort and Protocol, both of which the server sends and the table already tried to render.
ErrorBoundary Accepted no name prop although ContainerLogsPage passed one. Now declared, and included in the console output so you can tell which boundary tripped.
StatsChart The tooltip formatter assumed Recharts always hands it a number; it now narrows the documented number | string | (number | string)[].

Dead code removed

components/ContainerList.tsx and components/Login.tsx (311 lines) are gone. Nothing imported either, and both referenced containerService / authService exports that services/api.ts has not had for some time — so neither could compile. The live login page is pages/Login.tsx.

Also cleared 76 unused imports and locals. Write-only React state (setter still called, value never read) kept its setter and dropped only the unused binding, so render behaviour is unchanged.

vitest 1.6.1 → 5.0.1

vitest 1.x bundled its own nested vite 5, which collided with the project's vite 7 and made vite.config.ts untypeable (Plugin<any>[] is not assignable to PluginOption). The nested copy is gone. src/test/setup.ts now imports @testing-library/jest-dom/vitest, which is what registers the matchers on vitest's expect.

Verified

go vet + go test (backend and agent), npm ci, tsc -b, vitest 10/10, npm run build, and the Dashboard and Containers pages re-rendered against a seeded demo fleet to confirm the state removals changed nothing on screen.

Known issues

ESLint reports 177 problems, mostly @typescript-eslint/no-explicit-any. ESLint is not part of CI and this release does not address it.

Install

git clone --branch v1.2.2 https://github.com/deziss/conman.git
cd conman

export SECRET_KEY=$(openssl rand -hex 32)
export MASTER_API_KEY=$(openssl rand -hex 32)

docker compose -f docker-compose.simple.yml up -d --build

Dashboard on http://localhost:5173, sign in with admin@example.com / admin, and change the password before exposing it to a network.

Full changelog: https://github.com/deziss/conman/blob/v1.2.2/CHANGELOG.md