feat: add version display in toolbar (v0.1337)

- Display version number in center of bottom toolbar
- Load version from package.json via server's /api/status
- Version shown on initial load and SSE reconnect

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
arkon
2026-01-25 04:04:24 +01:00
co-authored by Claude Opus 4.5
parent d19d6ceddd
commit ee6b6596d6
5 changed files with 38 additions and 1 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "claudeman",
"version": "1.0.0",
"version": "0.1337",
"description": "The missing control plane for Claude Code - run 20 autonomous agents with real-time monitoring and session persistence",
"type": "module",
"main": "dist/index.js",
+9
View File
@@ -1291,6 +1291,15 @@ class ClaudemanApp {
}
handleInit(data) {
// Update version display
if (data.version) {
const versionEl = this.$('versionDisplay');
if (versionEl) {
versionEl.textContent = `v${data.version}`;
versionEl.title = `Claudeman v${data.version}`;
}
}
this.sessions.clear();
this.ralphStates.clear();
data.sessions.forEach(s => {
+4
View File
@@ -215,6 +215,10 @@
</div>
</div>
<div class="toolbar-center">
<span class="version-display" id="versionDisplay" title="Claudeman version">v0.0.0</span>
</div>
<div class="toolbar-right">
<!-- Buttons removed - use keyboard shortcuts instead -->
</div>
+18
View File
@@ -1246,6 +1246,7 @@ body {
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
height: var(--toolbar-height);
padding: 0 0.5rem;
background: var(--bg-card);
@@ -1260,6 +1261,23 @@ body {
gap: 0.25rem;
}
.toolbar-center {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
.version-display {
font-family: 'SF Mono', Monaco, monospace;
font-size: 0.7rem;
color: var(--text-muted);
padding: 0.2rem 0.5rem;
background: rgba(255, 255, 255, 0.05);
border-radius: 3px;
cursor: default;
user-select: none;
}
.toolbar-group {
display: flex;
align-items: center;
+6
View File
@@ -28,6 +28,11 @@ import { generateClaudeMd } from '../templates/claude-md.js';
import { parseRalphLoopConfig, extractCompletionPhrase } from '../ralph-config.js';
import { writeHooksConfig } from '../hooks-config.js';
import { v4 as uuidv4 } from 'uuid';
import { createRequire } from 'node:module';
// Load version from package.json
const require = createRequire(import.meta.url);
const { version: APP_VERSION } = require('../../package.json');
import {
getErrorMessage,
ApiErrorCode,
@@ -2187,6 +2192,7 @@ export class WebServer extends EventEmitter {
}
return {
version: APP_VERSION,
sessions: this.getSessionsState(),
scheduledRuns: Array.from(this.scheduledRuns.values()),
respawnStatus,