feat: Claude Code Monitor — lanes, pipelines and a merged workspace
Internal SmartGift build of a Claude Code monitoring dashboard. Lanes: a durable unit of parallel agent work, one per working directory, tracked across session restarts. Managed lanes are git worktrees the dashboard provisions and can reset or remove behind a three-check destroy guard and a counted preflight; adopted lanes are directories you already own and are never destroyable. Pipelines: a lane moves through pipeline stages. A stage the agent declares with evidence renders green; a stage inferred from the tool-event stream renders dashed amber and never counts as done. Detection is forward-only within a 30-minute window, and never writes the declared stage. Workspace: one page at /run with a lane grid, the selected lane's pipeline, and a full Claude console behind a disclosure.
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* @file useDocumentTitle.ts
|
||||
* @description Sets `document.title` for the current route/page and restores the
|
||||
* previous title on unmount so browser tabs stay distinguishable.
|
||||
* @author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
|
||||
*/
|
||||
|
||||
import { useEffect } from "react";
|
||||
|
||||
const APP_SUFFIX = "Claude Code Agent Monitor";
|
||||
|
||||
/**
|
||||
* Update the browser tab title while this component is mounted.
|
||||
* @param title Page-specific title segment (without the app suffix), or null to skip.
|
||||
*/
|
||||
export function useDocumentTitle(title: string | null | undefined): void {
|
||||
useEffect(() => {
|
||||
if (!title) return;
|
||||
const previous = document.title;
|
||||
document.title = `${title} · ${APP_SUFFIX}`;
|
||||
return () => {
|
||||
document.title = previous;
|
||||
};
|
||||
}, [title]);
|
||||
}
|
||||
Reference in New Issue
Block a user