mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-09-30 20:49:41 +02:00
Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
695e4047a1 | ||
|
|
f475caab87 | ||
|
|
8453e953fd |
@@ -1,5 +1,14 @@
|
||||
# aicodeman
|
||||
|
||||
## 0.9.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Multi-monitor & settings UX fixes.
|
||||
- **Multi-monitor button (remote servers):** the "span displays" button spawns `scripts/span-codeman.sh` server-side, so on a non-macOS Codeman server it can't open a window on your machine. The non-macOS API error now explains this and points to running the script locally on your Mac with the remote server URL; the script header documents the same remote-client workflow.
|
||||
- **App Settings modal:** stop the modal overflowing horizontally on narrow viewports.
|
||||
- **systemd:** sync the `codeman-web.service` template with the deployed unit.
|
||||
|
||||
## 0.9.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -56,7 +56,7 @@ When user says "COM":
|
||||
|
||||
CI runs `npm run check:lockfile` on every push/PR, so lockfile drift fails the build even if the `version-packages` script is bypassed.
|
||||
|
||||
**Version**: 0.9.0 (must match `package.json`)
|
||||
**Version**: 0.9.1 (must match `package.json`)
|
||||
|
||||
## Project Overview
|
||||
|
||||
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "aicodeman",
|
||||
"version": "0.9.0",
|
||||
"version": "0.9.1",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "aicodeman",
|
||||
"version": "0.9.0",
|
||||
"version": "0.9.1",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"workspaces": [
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "aicodeman",
|
||||
"version": "0.9.0",
|
||||
"version": "0.9.1",
|
||||
"description": "The missing control plane for AI coding agents - run 20 autonomous agents with real-time monitoring and session persistence",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
||||
@@ -12,10 +12,14 @@ KillMode=process
|
||||
Environment=NODE_ENV=production
|
||||
Environment=HOME=/home/arkon
|
||||
Environment=NODE_COMPILE_CACHE=/home/arkon/.codeman/compile-cache
|
||||
# Make the gesture-control overlay AVAILABLE (CSP widening + /gesture/ assets +
|
||||
# window.__codemanGestureAvailable). The actual on/off stays the per-user
|
||||
# `gestureControlEnabled` toggle in App Settings → Display → Input (default OFF).
|
||||
# Loopback bind (default, no --host) + no password: safe out of the box. Hooks
|
||||
# reach 127.0.0.1, and `tailscale serve` fronts it on the tailnet only (real
|
||||
# cert, no LAN exposure, no app login). To expose on the LAN instead, add
|
||||
# Environment=CODEMAN_HOST=0.0.0.0 + Environment=CODEMAN_PASSWORD=... .
|
||||
# See docs/security-architecture.md.
|
||||
Environment=CODEMAN_GESTURE=1
|
||||
# ^ Makes the gesture-control overlay AVAILABLE (CSP widening + /gesture/ assets);
|
||||
# the actual on/off stays the per-user App Settings toggle (default OFF).
|
||||
|
||||
# Logging
|
||||
StandardOutput=journal
|
||||
|
||||
@@ -16,6 +16,18 @@
|
||||
# per-display and will NOT span. We size a windowed app to the union of all
|
||||
# displays instead. macOS only.
|
||||
#
|
||||
# ── REMOTE CLIENT (Codeman server on another machine) ────────────────────────
|
||||
# The header "multi-monitor" button spawns this script SERVER-SIDE, so it opens
|
||||
# the window on the SERVER's displays and is gated to a macOS server. If your
|
||||
# Codeman runs elsewhere (e.g. a headless Linux box reached over Tailscale) and
|
||||
# YOUR monitors are on a Mac, the button can't help — the server can't open a
|
||||
# window on your machine. Instead, run this script LOCALLY on the Mac and pass
|
||||
# the remote URL as the argument:
|
||||
# ./span-codeman.sh "https://your-codeman.example.ts.net"
|
||||
# The osascript/browser launch all happen on the Mac; only the page is served
|
||||
# remotely, so the spanning window lands on your monitors. The "separate Spaces"
|
||||
# prerequisite above still applies on the Mac.
|
||||
#
|
||||
set -euo pipefail
|
||||
|
||||
URL="${1:-http://localhost:5000}"
|
||||
|
||||
@@ -3728,7 +3728,10 @@ body.solo-mode .btn-lifecycle-log {
|
||||
/* Settings Grid Layout - 2 column compact view */
|
||||
.settings-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr;
|
||||
/* minmax(0, 1fr) lets tracks shrink below their min-content so long
|
||||
labels ellipsis-truncate instead of blowing out the modal width and
|
||||
forcing a horizontal scrollbar (1fr === minmax(auto, 1fr) would not). */
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||||
gap: 0.5rem 1rem;
|
||||
}
|
||||
|
||||
@@ -3794,7 +3797,7 @@ body.solo-mode .btn-lifecycle-log {
|
||||
|
||||
/* Three column variant for notification levels */
|
||||
.settings-grid-3col {
|
||||
grid-template-columns: 1fr 1fr 1fr;
|
||||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
|
||||
}
|
||||
|
||||
/* Inline input in settings item */
|
||||
@@ -3965,6 +3968,12 @@ body.solo-mode .btn-lifecycle-log {
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
/* App Settings packs a 2-column toggle grid; give it room so right-column
|
||||
switches aren't cramped against the edge (other modal-lg modals stay 540). */
|
||||
#appSettingsModal .modal-content.modal-lg {
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
/* Mobile Case Picker - Base Styles */
|
||||
.mobile-case-picker-sheet {
|
||||
position: fixed;
|
||||
|
||||
@@ -268,7 +268,13 @@ export function registerSystemRoutes(
|
||||
if (process.platform !== 'darwin') {
|
||||
return reply
|
||||
.code(400)
|
||||
.send(createErrorResponse(ApiErrorCode.INVALID_INPUT, 'Multi-monitor spanning is only supported on macOS.'));
|
||||
.send(
|
||||
createErrorResponse(
|
||||
ApiErrorCode.INVALID_INPUT,
|
||||
'Multi-monitor spanning runs on the Codeman server, which is not macOS. ' +
|
||||
'If your monitors are on a remote Mac, run scripts/span-codeman.sh locally on that Mac with this server URL — see the script header for details.'
|
||||
)
|
||||
);
|
||||
}
|
||||
// Resolve the bundled launcher relative to this module (works from src/ and dist/).
|
||||
const scriptPath = join(dirname(fileURLToPath(import.meta.url)), '../../../scripts/span-codeman.sh');
|
||||
|
||||
Reference in New Issue
Block a user