Flatten the repo: move everything out of app/ to the root
Now that the CLI and the Next.js app are one package, nesting it inside app/ served no purpose - the repo root itself becomes the published npm package. Merges app/.gitignore and app/README.md into the root versions, drops the now-duplicate app/LICENSE, and updates path references (README, docs/ARCHITECTURE.md, docs/CONFIG_REFERENCE.md, package.json's repository.directory) that assumed the app/ nesting. Also fixes a real bug this surfaced: the in-app docs viewer resolved docs/ relative to process.cwd(), which only worked by accident when the CLI happened to be invoked from app/'s parent directory. A first attempt at fixing it with import.meta.dirname broke instead, for the same cross-module-graph reason config-path resolution already documented - Next compiles Route Handlers through a separate module graph that doesn't preserve source-relative import.meta paths. Fixed by exposing the app root via TRIGGERSHELL_APP_ROOT (set once in server.ts, where import.meta *does* resolve correctly), the same pattern already used for TRIGGERSHELL_CONFIG_PATH. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import { Badge } from "@/components/ui/badge";
|
||||
import type { RunStatus } from "@/lib/db/schema";
|
||||
import { cn } from "@/lib/utils";
|
||||
|
||||
const styles: Record<RunStatus, string> = {
|
||||
queued: "bg-muted text-muted-foreground",
|
||||
running: "bg-blue-500/15 text-blue-600 dark:text-blue-400",
|
||||
succeeded: "bg-emerald-500/15 text-emerald-600 dark:text-emerald-400",
|
||||
failed: "bg-destructive/15 text-destructive",
|
||||
cancelled: "bg-muted text-muted-foreground",
|
||||
timed_out: "bg-amber-500/15 text-amber-600 dark:text-amber-400",
|
||||
interrupted: "bg-amber-500/15 text-amber-600 dark:text-amber-400",
|
||||
};
|
||||
|
||||
export const runStatusLabels: Record<RunStatus, string> = {
|
||||
queued: "Queued",
|
||||
running: "Running",
|
||||
succeeded: "Succeeded",
|
||||
failed: "Failed",
|
||||
cancelled: "Cancelled",
|
||||
timed_out: "Timed out",
|
||||
interrupted: "Interrupted",
|
||||
};
|
||||
|
||||
export function RunStatusBadge({ status }: { status: RunStatus }) {
|
||||
return (
|
||||
<Badge
|
||||
className={cn("border-transparent font-medium", styles[status])}
|
||||
variant="outline"
|
||||
>
|
||||
{status === "running" && (
|
||||
<span className="mr-1 inline-block size-1.5 animate-pulse rounded-full bg-current" />
|
||||
)}
|
||||
{runStatusLabels[status]}
|
||||
</Badge>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user