From 482f48052c2b366f754225a7fdf0e569456e411c Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Mon, 16 Jun 2025 04:48:20 +0200 Subject: [PATCH] Hook up cleanup --- VibeTunnel.xcodeproj/project.pbxproj | 1 - VibeTunnel/Core/Services/TunnelServer.swift | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/VibeTunnel.xcodeproj/project.pbxproj b/VibeTunnel.xcodeproj/project.pbxproj index f23a1f74..0a0262c7 100644 --- a/VibeTunnel.xcodeproj/project.pbxproj +++ b/VibeTunnel.xcodeproj/project.pbxproj @@ -39,7 +39,6 @@ isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Info.plist, - Local.xcconfig, Local.xcconfig.template, Shared.xcconfig, version.xcconfig, diff --git a/VibeTunnel/Core/Services/TunnelServer.swift b/VibeTunnel/Core/Services/TunnelServer.swift index e363dc6c..bc06716b 100644 --- a/VibeTunnel/Core/Services/TunnelServer.swift +++ b/VibeTunnel/Core/Services/TunnelServer.swift @@ -173,6 +173,10 @@ public final class TunnelServer { return await self.sendSessionInput(request: request, sessionId: sessionId) } + router.post("/api/cleanup-exited") { _, _ async -> Response in + await self.cleanupExitedSessions() + } + router.get("/api/fs/browse") { request, _ async -> Response in await self.browseFileSystem(request: request) } @@ -797,6 +801,19 @@ public final class TunnelServer { } } + private func cleanupExitedSessions() async -> Response { + do { + _ = try await executeTtyFwd(args: ["--control-path", ttyFwdControlDir, "--cleanup"]) + + let response = SimpleResponse(success: true, message: "All exited sessions cleaned up") + return jsonResponse(response) + + } catch { + logger.error("Error cleaning up exited sessions: \(error)") + return errorResponse(message: "Failed to cleanup exited sessions") + } + } + private func browseFileSystem(request: Request) async -> Response { let dirPath = String(request.uri.queryParameters.first { $0.key == "path" }?.value ?? "~")