From 460caa550cb86d2e5a79b35558994e3a490437c6 Mon Sep 17 00:00:00 2001 From: mptyl Date: Sat, 15 Aug 2026 21:25:48 +0200 Subject: [PATCH] docs: clarify workspace authoring guidance --- frontend/src/shell/WorkspaceManager.test.tsx | 7 ++++++- frontend/src/shell/WorkspaceManager.tsx | 10 ++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/frontend/src/shell/WorkspaceManager.test.tsx b/frontend/src/shell/WorkspaceManager.test.tsx index 40c87bdf..05942e35 100644 --- a/frontend/src/shell/WorkspaceManager.test.tsx +++ b/frontend/src/shell/WorkspaceManager.test.tsx @@ -92,7 +92,7 @@ test("offers a button above the workspace list that returns to Level 1", async ( expect(await screen.findByRole("heading", { name: "Workspace-specific actions" })).toBeVisible(); const navigation = screen.getByRole("navigation", { name: "Workspaces" }); - const backButton = within(navigation).getByRole("button", { name: "Back to main page" }); + const backButton = within(navigation).getByRole("button", { name: "Back to Level 1" }); expect(backButton).toHaveClass("border-border", "bg-card", "w-full"); expect(backButton.compareDocumentPosition(within(navigation).getByText("Available workspaces")) & Node.DOCUMENT_POSITION_FOLLOWING).toBeTruthy(); @@ -114,6 +114,11 @@ test("level one explains the read-only Git sequence and the repository update bu const overview = screen.getByTestId("workspace-overview"); expect(within(overview).getByText(/Git server such as GitHub, GitLab, or Gitea/i)).toBeVisible(); expect(within(overview).getByText(/configured during ThothII installation/i)).toBeVisible(); + expect(within(overview).getAllByRole("listitem")[0]).toHaveTextContent(/choosing any local directory you prefer/i); + expect(within(overview).getByRole("link", { name: /workspace authoring instructions on GitHub/i })).toHaveAttribute( + "href", + "https://github.com/mptyl/ThothII/blob/main/docs/install/local-workspace-registry.md#prepare-and-publish-a-workspace-source", + ); expect(within(overview).getAllByText(/managed read-only checkout/i)).toHaveLength(2); expect(within(overview).getByText(/current active revision remains unchanged/i)).toBeVisible(); expect(within(overview).getByText(/No workspace selection is required/i)).toBeVisible(); diff --git a/frontend/src/shell/WorkspaceManager.tsx b/frontend/src/shell/WorkspaceManager.tsx index 234edecb..afc01b0f 100644 --- a/frontend/src/shell/WorkspaceManager.tsx +++ b/frontend/src/shell/WorkspaceManager.tsx @@ -57,6 +57,9 @@ function stateLabel(state: "ready" | "configuration_required"): string { return state === "ready" ? "Ready" : "Runtime configuration required"; } +const workspaceAuthoringGuideUrl = + "https://github.com/mptyl/ThothII/blob/main/docs/install/local-workspace-registry.md#prepare-and-publish-a-workspace-source"; + export function WorkspaceManager({ open, onClose }: { open: boolean; onClose: () => void }) { const queryClient = useQueryClient(); const [selectedId, setSelectedId] = useState(); @@ -242,7 +245,7 @@ export function WorkspaceManager({ open, onClose }: { open: boolean; onClose: () className="mb-3 w-full justify-start" onClick={showLevelOne} > - Back to main page + Back to Level 1

Available workspaces

@@ -290,11 +293,14 @@ export function WorkspaceManager({ open, onClose }: { open: boolean; onClose: ()

How workspaces reach ThothII

    -
  1. Create a local workspace in its own source directory. It must contain workspace.yaml and every required subdirectory, including any versioned Evidence files.
  2. +
  3. Create a local workspace by choosing any local directory you prefer and setting up the workspace there. It must contain workspace.yaml and every required subdirectory, including any versioned Evidence files.
  4. Publish that source by committing and pushing it to a repository hosted by a Git server such as GitHub, GitLab, or Gitea.
  5. The repository address, branch, and read-only Git credentials are configured during ThothII installation. This installation reads {repositoryLabel} on branch {statusQuery.data?.branch ?? "main"}.
  6. ThothII fetches the configured branch into its managed read-only checkout, validates the complete candidate revision, and activates it only when validation succeeds. It never edits, commits, pushes, or publishes workspace source.
+

+ Follow the workspace authoring instructions on GitHub for the required layout and validation rules. +