mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-10 01:09:43 +02:00
chore: bump version to 0.1516
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,7 @@ When user says "COM":
|
|||||||
1. Increment version in BOTH `package.json` AND `CLAUDE.md` (verify they match with `grep version package.json && grep Version CLAUDE.md`)
|
1. Increment version in BOTH `package.json` AND `CLAUDE.md` (verify they match with `grep version package.json && grep Version CLAUDE.md`)
|
||||||
2. Run: `git add -A && git commit -m "chore: bump version to X.XXXX" && git push && npm run build && systemctl --user restart claudeman-web`
|
2. Run: `git add -A && git commit -m "chore: bump version to X.XXXX" && git push && npm run build && systemctl --user restart claudeman-web`
|
||||||
|
|
||||||
**Version**: 0.1515 (must match `package.json` for npm publish)
|
**Version**: 0.1516 (must match `package.json` for npm publish)
|
||||||
|
|
||||||
## Project Overview
|
## Project Overview
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "claudeman",
|
"name": "claudeman",
|
||||||
"version": "0.1515",
|
"version": "0.1516",
|
||||||
"description": "The missing control plane for Claude Code - run 20 autonomous agents with real-time monitoring and session persistence",
|
"description": "The missing control plane for Claude Code - run 20 autonomous agents with real-time monitoring and session persistence",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "dist/index.js",
|
"main": "dist/index.js",
|
||||||
|
|||||||
@@ -1472,6 +1472,15 @@ class ClaudemanApp {
|
|||||||
this.loadState();
|
this.loadState();
|
||||||
this.loadQuickStartCases();
|
this.loadQuickStartCases();
|
||||||
this.setupEventListeners();
|
this.setupEventListeners();
|
||||||
|
// Mobile settings gear: non-passive touchstart to prevent keyboard dismiss
|
||||||
|
const settingsBtn = document.querySelector('.btn-settings-mobile');
|
||||||
|
if (settingsBtn) {
|
||||||
|
settingsBtn.addEventListener('touchstart', (e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
app.openAppSettings();
|
||||||
|
}, { passive: false });
|
||||||
|
}
|
||||||
// Start system stats polling
|
// Start system stats polling
|
||||||
this.startSystemStatsPolling();
|
this.startSystemStatsPolling();
|
||||||
// Setup online/offline detection
|
// Setup online/offline detection
|
||||||
@@ -14351,6 +14360,39 @@ class ClaudemanApp {
|
|||||||
const settings = this.getCaseSettings(caseName);
|
const settings = this.getCaseSettings(caseName);
|
||||||
settings.agentTeams = document.getElementById('caseAgentTeams').checked;
|
settings.agentTeams = document.getElementById('caseAgentTeams').checked;
|
||||||
this.saveCaseSettings(caseName, settings);
|
this.saveCaseSettings(caseName, settings);
|
||||||
|
// Sync mobile checkbox
|
||||||
|
const mobileCheckbox = document.getElementById('caseAgentTeamsMobile');
|
||||||
|
if (mobileCheckbox) mobileCheckbox.checked = settings.agentTeams;
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleCaseSettingsMobile() {
|
||||||
|
const popover = document.getElementById('caseSettingsPopoverMobile');
|
||||||
|
if (popover.classList.contains('hidden')) {
|
||||||
|
const caseName = document.getElementById('quickStartCase').value || 'testcase';
|
||||||
|
const settings = this.getCaseSettings(caseName);
|
||||||
|
document.getElementById('caseAgentTeamsMobile').checked = settings.agentTeams;
|
||||||
|
popover.classList.remove('hidden');
|
||||||
|
|
||||||
|
const closeHandler = (e) => {
|
||||||
|
if (!popover.contains(e.target) && !e.target.classList.contains('btn-case-settings-mobile')) {
|
||||||
|
popover.classList.add('hidden');
|
||||||
|
document.removeEventListener('click', closeHandler);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
setTimeout(() => document.addEventListener('click', closeHandler), 0);
|
||||||
|
} else {
|
||||||
|
popover.classList.add('hidden');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onCaseSettingChangedMobile() {
|
||||||
|
const caseName = document.getElementById('quickStartCase').value || 'testcase';
|
||||||
|
const settings = this.getCaseSettings(caseName);
|
||||||
|
settings.agentTeams = document.getElementById('caseAgentTeamsMobile').checked;
|
||||||
|
this.saveCaseSettings(caseName, settings);
|
||||||
|
// Sync desktop checkbox
|
||||||
|
const desktopCheckbox = document.getElementById('caseAgentTeams');
|
||||||
|
if (desktopCheckbox) desktopCheckbox.checked = settings.agentTeams;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ========== Create Case Modal ==========
|
// ========== Create Case Modal ==========
|
||||||
|
|||||||
@@ -303,11 +303,20 @@
|
|||||||
<span class="form-hint">Enable experimental Agent Teams for new sessions in this case</span>
|
<span class="form-hint">Enable experimental Agent Teams for new sessions in this case</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- Mobile-only case button -->
|
<!-- Mobile-only case button + gear -->
|
||||||
|
<button class="btn-settings-mobile" onclick="app.openAppSettings()" title="App Settings"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg></button>
|
||||||
<button class="btn-toolbar btn-case-mobile" onclick="app.showMobileCasePicker()" title="Select case">
|
<button class="btn-toolbar btn-case-mobile" onclick="app.showMobileCasePicker()" title="Select case">
|
||||||
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>
|
<svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>
|
||||||
<span id="mobileCaseName">Case</span>
|
<span id="mobileCaseName">Case</span>
|
||||||
</button>
|
</button>
|
||||||
|
<button class="btn-case-settings-mobile" id="btnCaseSettingsMobile" onclick="app.toggleCaseSettingsMobile()" title="Case settings">⚙</button>
|
||||||
|
<div class="case-settings-popover-mobile hidden" id="caseSettingsPopoverMobile">
|
||||||
|
<label class="checkbox-inline">
|
||||||
|
<input type="checkbox" id="caseAgentTeamsMobile" onchange="app.onCaseSettingChangedMobile()">
|
||||||
|
<span>Agent Teams</span>
|
||||||
|
</label>
|
||||||
|
<span class="form-hint">Enable Agent Teams for new sessions</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Directory (hidden) -->
|
<!-- Directory (hidden) -->
|
||||||
|
|||||||
@@ -221,15 +221,35 @@
|
|||||||
height: 12px;
|
height: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Larger settings gear icon for visibility */
|
/* Hide header settings gear on mobile - moved to toolbar */
|
||||||
.btn-icon-header.btn-settings {
|
.btn-icon-header.btn-settings {
|
||||||
width: 32px;
|
display: none !important;
|
||||||
height: 32px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-icon-header.btn-settings svg {
|
/* Mobile app settings gear in toolbar - next to Run Claude */
|
||||||
width: 16px;
|
.btn-settings-mobile {
|
||||||
height: 16px;
|
display: inline-flex !important;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
background: transparent;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #9ca3af;
|
||||||
|
cursor: pointer;
|
||||||
|
flex-shrink: 0;
|
||||||
|
order: 1; /* Right after Run Claude */
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-settings-mobile svg {
|
||||||
|
width: 13px;
|
||||||
|
height: 13px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-settings-mobile:active {
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* App container - prevent scrolling, strict layout */
|
/* App container - prevent scrolling, strict layout */
|
||||||
@@ -469,6 +489,63 @@
|
|||||||
max-width: 50px;
|
max-width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Mobile case settings gear button */
|
||||||
|
.btn-case-settings-mobile {
|
||||||
|
display: inline-flex !important;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
background: transparent;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #9ca3af;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
cursor: pointer;
|
||||||
|
order: 3;
|
||||||
|
flex-shrink: 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-case-settings-mobile:active {
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile case settings popover */
|
||||||
|
.case-settings-popover-mobile {
|
||||||
|
position: fixed;
|
||||||
|
bottom: calc(var(--safe-area-bottom) + 46px);
|
||||||
|
left: 8px;
|
||||||
|
right: 8px;
|
||||||
|
background: #1e1e1e;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 0.6rem 0.75rem;
|
||||||
|
z-index: 1000;
|
||||||
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile.hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile .checkbox-inline {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile .form-hint {
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.2rem;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
color: #6b7280;
|
||||||
|
}
|
||||||
|
|
||||||
/* Keyboard Accessory Bar - quick actions above keyboard */
|
/* Keyboard Accessory Bar - quick actions above keyboard */
|
||||||
.keyboard-accessory-bar {
|
.keyboard-accessory-bar {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@@ -1932,6 +1932,11 @@ body {
|
|||||||
color: #a8d8a8;
|
color: #a8d8a8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Mobile app settings gear - hidden on desktop, shown on mobile */
|
||||||
|
.btn-settings-mobile {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* Mobile case button - hidden on desktop, shown on mobile */
|
/* Mobile case button - hidden on desktop, shown on mobile */
|
||||||
.btn-toolbar.btn-case-mobile {
|
.btn-toolbar.btn-case-mobile {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -1957,6 +1962,19 @@ body {
|
|||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Mobile case settings gear - hidden on desktop */
|
||||||
|
.btn-case-settings-mobile {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile.hidden {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
/* Button icon styling */
|
/* Button icon styling */
|
||||||
.btn-toolbar .btn-icon {
|
.btn-toolbar .btn-icon {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
@@ -8555,6 +8573,62 @@ kbd {
|
|||||||
max-width: 50px;
|
max-width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Mobile case settings gear button */
|
||||||
|
.btn-case-settings-mobile {
|
||||||
|
display: inline-flex !important;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
background: transparent;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
|
border-radius: 4px;
|
||||||
|
color: #9ca3af;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
cursor: pointer;
|
||||||
|
order: 3;
|
||||||
|
flex-shrink: 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-case-settings-mobile:active {
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile {
|
||||||
|
position: fixed;
|
||||||
|
bottom: calc(var(--safe-area-bottom) + 46px);
|
||||||
|
left: 8px;
|
||||||
|
right: 8px;
|
||||||
|
background: #1e1e1e;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 0.6rem 0.75rem;
|
||||||
|
z-index: 1000;
|
||||||
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile.hidden {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile .checkbox-inline {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
font-size: 0.75rem;
|
||||||
|
color: #e5e7eb;
|
||||||
|
}
|
||||||
|
|
||||||
|
.case-settings-popover-mobile .form-hint {
|
||||||
|
display: block;
|
||||||
|
margin-top: 0.2rem;
|
||||||
|
font-size: 0.6rem;
|
||||||
|
color: #6b7280;
|
||||||
|
}
|
||||||
|
|
||||||
/* Keyboard Accessory Bar - quick actions above keyboard */
|
/* Keyboard Accessory Bar - quick actions above keyboard */
|
||||||
.keyboard-accessory-bar {
|
.keyboard-accessory-bar {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
Reference in New Issue
Block a user