diff --git a/CHANGELOG.md b/CHANGELOG.md index 8175d7c..d128a4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ the project uses [semantic versioning](https://semver.org/) once it reaches 1.0; ## [Unreleased] +### Fixed + +- **Link-styled outline buttons had no border.** `buttonVariants()` returned a raw class string, so an outline button built from a link kept both `border-transparent` and the variant's border colour, and the transparent one won. "Back to tasks", **Export CSV**, **Add agent** and similar looked like plain text. They now render as buttons. +- **Audit trail no longer drops you out of Administration.** It opens inside Administration at `/admin/audit` with the tabs still visible; `/audit` sends administrators there. **Find tasks** no longer shows a redundant "Back to tasks" button, and **Disable** on a team looks like a button. + ### Changed - **Console navigation is reorganised by job.** The sidebar groups daily work (**Home**, **Inbox**, **Tasks**, **Chat**), **Agents** (**Agents**, **Find tasks**, **Orchestration**) and **You** (**Notifications**, **Settings**, **Administration** for administrators). diff --git a/docs/guides/use-the-console.md b/docs/guides/use-the-console.md index 74a5695..9337cc2 100644 --- a/docs/guides/use-the-console.md +++ b/docs/guides/use-the-console.md @@ -295,7 +295,7 @@ The arrows are only a layout. They show references the agent or you set, not an ## Audit -**Audit** is the organization-wide audit trail. Only administrators see it in the sidebar. A non-admin who opens `/audit` sees "Administrators only". +**Audit trail** is the organization-wide audit trail. It is the last tab of **Administration** (`/admin/audit`), so the Administration tabs stay in view. An administrator who opens `/audit` is sent there; a non-admin who opens it sees "Administrators only". `/audit?taskId=…` is a single task's trail, reached from **View the full trail** on a task page. The trail is read-only and newest first, 25 entries at a time with **Show older entries**. Each entry is one sentence ("You approved …", "The agent requested approval: …"), a time, and a link to the task. **Details** expands the exact facts: revision and digest, proposed or sent content, rationale, risk, expiry and delivery result. Note text is never shown, only that a note was added. @@ -353,7 +353,7 @@ Administrators also see a link to **Administration** at the bottom of the page. | "Conversation not found" / "This conversation is unavailable in the current organization." | The link is from another organization, or you lost read access | Open the chat from **Recent conversations**, or ask for a grant | | "Task not found" | The task does not exist or you cannot read it. The server answers 404 rather than 403. | Ask an administrator for a grant | | Banner ending "Retrying server sync…" | The browser could not load tasks from the server | Check the server is running. The console retries every 5 seconds. | -| "Administrators only" on **Audit** | You are not an administrator | Open a task and use **View the full trail** | +| "Administrators only" on **Audit trail** | You are not an administrator | Open a task and use **View the full trail** | | **Administration** missing from the sidebar, or "Administrators only" | You are not an administrator | Ask an administrator | | "Too many requests. Try again shortly." | Per-person rate limit | Wait a minute | diff --git a/src/app/admin/audit/page.tsx b/src/app/admin/audit/page.tsx new file mode 100644 index 0000000..719132c --- /dev/null +++ b/src/app/admin/audit/page.tsx @@ -0,0 +1,7 @@ +"use client"; + +import { AuditView } from "@/components/audit/audit-view"; + +export default function AdminAuditPage() { + return ; +} diff --git a/src/app/admin/teams/page.tsx b/src/app/admin/teams/page.tsx index 3f2007e..7368088 100644 --- a/src/app/admin/teams/page.tsx +++ b/src/app/admin/teams/page.tsx @@ -30,7 +30,7 @@ export default function TeamsPage() { const candidates = view.memberships.filter((member) => !members.some((link) => link.membershipId === member.id)); return ( { if (window.confirm(`Disable team “${team.name}”? Its grants stop applying.`)) void change({ action: "disableTeam", teamId: team.id }); }}>Disable}> + action={}>