From a2d430330009f39e8effeba3431de85d2b820ec5 Mon Sep 17 00:00:00 2001 From: arkon Date: Sat, 24 Jan 2026 03:52:13 +0100 Subject: [PATCH] feat: add systemd user service + slow down tab blink animations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add scripts/claudeman-web.service: respawning systemd user service for `claudeman web --https` (Restart=always, RestartSec=5) - Slow tab blink animations: red 1s→2.5s, yellow 1.5s→3.5s with ease-in-out and reduced opacity for less aggressive feel Install: symlink to ~/.config/systemd/user/, enable, start Linger: loginctl enable-linger keeps it running after logout Co-Authored-By: Claude Opus 4.5 --- scripts/claudeman-web.service | 23 +++++++++++++++++++++++ src/web/public/styles.css | 8 ++++---- 2 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 scripts/claudeman-web.service diff --git a/scripts/claudeman-web.service b/scripts/claudeman-web.service new file mode 100644 index 00000000..147a3391 --- /dev/null +++ b/scripts/claudeman-web.service @@ -0,0 +1,23 @@ +[Unit] +Description=Claudeman Web Server (HTTPS) +After=network.target + +[Service] +Type=simple +WorkingDirectory=/home/arkon/default/claudeman +ExecStart=/usr/bin/node dist/index.js web --https +Restart=always +RestartSec=5 +Environment=NODE_ENV=production +Environment=HOME=/home/arkon + +# Logging +StandardOutput=journal +StandardError=journal +SyslogIdentifier=claudeman + +# Resource limits +LimitNOFILE=65536 + +[Install] +WantedBy=default.target diff --git a/src/web/public/styles.css b/src/web/public/styles.css index f30d4754..15ac5489 100644 --- a/src/web/public/styles.css +++ b/src/web/public/styles.css @@ -184,21 +184,21 @@ body { /* Tab alert animations */ .session-tab.tab-alert-action { - animation: tab-blink-red 1s infinite; + animation: tab-blink-red 2.5s ease-in-out infinite; } .session-tab.tab-alert-idle { - animation: tab-blink-yellow 1.5s infinite; + animation: tab-blink-yellow 3.5s ease-in-out infinite; } @keyframes tab-blink-red { 0%, 100% { background: transparent; border-color: transparent; } - 50% { background: rgba(239, 68, 68, 0.15); border-color: var(--red); } + 50% { background: rgba(239, 68, 68, 0.12); border-color: var(--red); } } @keyframes tab-blink-yellow { 0%, 100% { background: transparent; border-color: transparent; } - 50% { background: rgba(234, 179, 8, 0.12); border-color: var(--yellow); } + 50% { background: rgba(234, 179, 8, 0.1); border-color: var(--yellow); } } @keyframes pulse {