mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-03 22:19:42 +02:00
chore: bump version to 0.1585
This commit is contained in:
+2
-4
@@ -28,6 +28,7 @@ import { LRUMap } from './utils/lru-map.js';
|
||||
import {
|
||||
ANSI_ESCAPE_PATTERN_FULL,
|
||||
TOKEN_PATTERN,
|
||||
SPINNER_PATTERN,
|
||||
MAX_SESSION_TOKENS,
|
||||
} from './utils/index.js';
|
||||
import {
|
||||
@@ -1036,10 +1037,7 @@ export class Session extends EventEmitter {
|
||||
|
||||
// Detect when Claude starts working (thinking, writing, etc)
|
||||
// Fast path: check spinner characters on raw data (Unicode, never in ANSI sequences)
|
||||
const hasSpinner = data.includes('⠋') || data.includes('⠙') ||
|
||||
data.includes('⠹') || data.includes('⠸') ||
|
||||
data.includes('⠼') || data.includes('⠴') ||
|
||||
data.includes('⠦') || data.includes('⠧');
|
||||
const hasSpinner = SPINNER_PATTERN.test(data);
|
||||
if (hasSpinner) {
|
||||
if (!this._isWorking) {
|
||||
this._isWorking = true;
|
||||
|
||||
+3
-3
@@ -74,7 +74,7 @@ export class TeamWatcher extends EventEmitter {
|
||||
getTeamForSession(sessionId: string): TeamConfig | undefined {
|
||||
const teamName = this.sessionToTeam.get(sessionId);
|
||||
if (teamName) {
|
||||
const team = this.teams.get(teamName);
|
||||
const team = this.teams.peek(teamName);
|
||||
if (team) return team;
|
||||
// Stale reverse index entry — clean up
|
||||
this.sessionToTeam.delete(sessionId);
|
||||
@@ -210,7 +210,7 @@ export class TeamWatcher extends EventEmitter {
|
||||
}
|
||||
|
||||
// Detect removed teams
|
||||
for (const name of Array.from(this.teams.keys())) {
|
||||
for (const name of this.teams.keys()) {
|
||||
if (!currentTeamNames.has(name)) {
|
||||
const removed = this.teams.get(name);
|
||||
this.teams.delete(name);
|
||||
@@ -221,7 +221,7 @@ export class TeamWatcher extends EventEmitter {
|
||||
}
|
||||
// Prune stale mtime entries for removed teams
|
||||
this.taskMtimes.delete(name);
|
||||
for (const key of Array.from(this.inboxMtimes.keys())) {
|
||||
for (const key of this.inboxMtimes.keys()) {
|
||||
if (key.startsWith(`${name}/`)) {
|
||||
this.inboxMtimes.delete(key);
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ export {
|
||||
ANSI_ESCAPE_PATTERN_FULL,
|
||||
ANSI_ESCAPE_PATTERN_SIMPLE,
|
||||
TOKEN_PATTERN,
|
||||
SPINNER_PATTERN,
|
||||
createAnsiPatternFull,
|
||||
createAnsiPatternSimple,
|
||||
stripAnsi,
|
||||
|
||||
@@ -67,5 +67,12 @@ export function stripAnsi(text: string): string {
|
||||
* Regex to validate safe file paths (no shell metacharacters).
|
||||
* Shared by schemas.ts and tmux-manager.ts for consistent path validation.
|
||||
*/
|
||||
/**
|
||||
* Braille spinner characters used by Claude Code's Ink UI.
|
||||
* Matches any of: ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧
|
||||
* Used on the hot path (every PTY chunk) — pre-compiled for performance.
|
||||
*/
|
||||
export const SPINNER_PATTERN = /[⠋⠙⠹⠸⠼⠴⠦⠧]/;
|
||||
|
||||
export const SAFE_PATH_PATTERN = /^[a-zA-Z0-9_\/\-. ~]+$/;
|
||||
|
||||
|
||||
@@ -189,6 +189,7 @@ body {
|
||||
|
||||
.session-tabs::-webkit-scrollbar {
|
||||
width: 4px;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.session-tabs::-webkit-scrollbar-track {
|
||||
@@ -204,10 +205,6 @@ body {
|
||||
background: var(--border-light);
|
||||
}
|
||||
|
||||
.session-tabs::-webkit-scrollbar {
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.session-tab {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -795,10 +792,6 @@ body {
|
||||
color: var(--accent);
|
||||
}
|
||||
|
||||
.respawn-action-entry.action-command .action-detail {
|
||||
color: var(--accent-hover);
|
||||
}
|
||||
|
||||
.respawn-action-entry.action-command .action-type {
|
||||
color: var(--accent);
|
||||
font-weight: 600;
|
||||
@@ -1384,6 +1377,7 @@ body {
|
||||
border-radius: 4px;
|
||||
border-left: 2px solid var(--text-muted);
|
||||
transition: border-color 0.2s, background 0.2s;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ralph-task-card.task-pending {
|
||||
@@ -7315,11 +7309,6 @@ kbd {
|
||||
background: var(--bg-card);
|
||||
}
|
||||
|
||||
/* Runtime task card enhancements */
|
||||
.ralph-task-card {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ralph-task-attempts {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
|
||||
Reference in New Issue
Block a user