Initial commit: Triple-C app, container, and CI

Tauri v2 desktop app (React/TypeScript + Rust) for managing
containerized Claude Code environments. Includes Gitea Actions
workflow for building and pushing the sandbox container image,
and a BUILDING.md guide for manual app builds on Linux and Windows.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-27 04:29:51 +00:00
commit 97a0745ead
65 changed files with 17202 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
import { useCallback } from "react";
import { listen } from "@tauri-apps/api/event";
import { useAppState } from "../store/appState";
import * as commands from "../lib/tauri-commands";
export function useDocker() {
const {
dockerAvailable,
setDockerAvailable,
imageExists,
setImageExists,
} = useAppState();
const checkDocker = useCallback(async () => {
try {
const available = await commands.checkDocker();
setDockerAvailable(available);
return available;
} catch {
setDockerAvailable(false);
return false;
}
}, [setDockerAvailable]);
const checkImage = useCallback(async () => {
try {
const exists = await commands.checkImageExists();
setImageExists(exists);
return exists;
} catch {
setImageExists(false);
return false;
}
}, [setImageExists]);
const buildImage = useCallback(
async (onProgress?: (msg: string) => void) => {
const unlisten = onProgress
? await listen<string>("image-build-progress", (event) => {
onProgress(event.payload);
})
: null;
try {
await commands.buildImage();
setImageExists(true);
} finally {
unlisten?.();
}
},
[setImageExists],
);
return {
dockerAvailable,
imageExists,
checkDocker,
checkImage,
buildImage,
};
}