mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-04-27 15:17:38 +00:00
Fix logs API test by including lastModified in all responses
- Add lastModified: null when log file doesn't exist - Ensures consistent API response structure
This commit is contained in:
parent
a6488b5ad9
commit
c2f0b79cec
4 changed files with 17 additions and 3 deletions
|
|
@ -138,6 +138,8 @@ final class WindowTracker {
|
||||||
guard let windowList = CGWindowListCopyWindowInfo(options, kCGNullWindowID) as? [[String: Any]] else {
|
guard let windowList = CGWindowListCopyWindowInfo(options, kCGNullWindowID) as? [[String: Any]] else {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let logger = Logger(subsystem: "sh.vibetunnel.vibetunnel", category: "WindowTracker")
|
||||||
|
|
||||||
return windowList.compactMap { windowDict in
|
return windowList.compactMap { windowDict in
|
||||||
// Extract window properties
|
// Extract window properties
|
||||||
|
|
@ -147,6 +149,11 @@ final class WindowTracker {
|
||||||
else {
|
else {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Log suspicious window IDs for debugging
|
||||||
|
if windowID < 1000 && windowID == CGWindowID(ownerPID) {
|
||||||
|
logger.warning("Suspicious window ID \(windowID) matches PID for \(ownerName)")
|
||||||
|
}
|
||||||
|
|
||||||
// Check if this is a terminal application
|
// Check if this is a terminal application
|
||||||
guard let terminal = Terminal.allCases.first(where: { term in
|
guard let terminal = Terminal.allCases.first(where: { term in
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,8 @@ import { TitleMode } from '../../shared/types.js';
|
||||||
import { ProcessTreeAnalyzer } from '../services/process-tree-analyzer.js';
|
import { ProcessTreeAnalyzer } from '../services/process-tree-analyzer.js';
|
||||||
import { ActivityDetector, type ActivityState } from '../utils/activity-detector.js';
|
import { ActivityDetector, type ActivityState } from '../utils/activity-detector.js';
|
||||||
import { filterTerminalTitleSequences } from '../utils/ansi-filter.js';
|
import { filterTerminalTitleSequences } from '../utils/ansi-filter.js';
|
||||||
import { StatefulAnsiFilter } from '../utils/stateful-ansi-filter.js';
|
|
||||||
import { createLogger } from '../utils/logger.js';
|
import { createLogger } from '../utils/logger.js';
|
||||||
|
import { StatefulAnsiFilter } from '../utils/stateful-ansi-filter.js';
|
||||||
import {
|
import {
|
||||||
extractCdDirectory,
|
extractCdDirectory,
|
||||||
generateDynamicTitle,
|
generateDynamicTitle,
|
||||||
|
|
@ -1870,6 +1870,12 @@ export class PtyManager extends EventEmitter {
|
||||||
session.activityDetector = undefined;
|
session.activityDetector = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clean up ANSI filter
|
||||||
|
if (session.ansiFilter) {
|
||||||
|
session.ansiFilter.reset();
|
||||||
|
session.ansiFilter = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
// Clean up input socket server
|
// Clean up input socket server
|
||||||
if (session.inputSocketServer) {
|
if (session.inputSocketServer) {
|
||||||
// Close the server and wait for it to close
|
// Close the server and wait for it to close
|
||||||
|
|
|
||||||
|
|
@ -82,6 +82,7 @@ export function createLogRoutes(_config?: LogRoutesConfig): Router {
|
||||||
return res.json({
|
return res.json({
|
||||||
exists: false,
|
exists: false,
|
||||||
size: 0,
|
size: 0,
|
||||||
|
lastModified: null,
|
||||||
path: logPath,
|
path: logPath,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,7 @@ export class StatefulAnsiFilter {
|
||||||
// Still parsing digits
|
// Still parsing digits
|
||||||
} else if (char === ';') {
|
} else if (char === ';') {
|
||||||
// Check if it's a title sequence (OSC 0, 1, or 2)
|
// Check if it's a title sequence (OSC 0, 1, or 2)
|
||||||
const oscNumber = parseInt(this.buffer.slice(2, -1), 10);
|
const oscNumber = Number.parseInt(this.buffer.slice(2, -1), 10);
|
||||||
if (oscNumber >= 0 && oscNumber <= 2) {
|
if (oscNumber >= 0 && oscNumber <= 2) {
|
||||||
// This is a title sequence, continue parsing
|
// This is a title sequence, continue parsing
|
||||||
this.state = ParseState.OSC_CONTENT;
|
this.state = ParseState.OSC_CONTENT;
|
||||||
|
|
@ -171,4 +171,4 @@ export class StatefulAnsiFilter {
|
||||||
|
|
||||||
return Buffer.from(filtered, 'utf8');
|
return Buffer.from(filtered, 'utf8');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue