Confirm before Reset, and rewrite the docs for the new UI
Reset is destructive in a way its name does not advertise: rebuild_project_container deletes both project volumes, so it wipes the claude login, anything installed in the container, and every saved session transcript. It was a single unconfirmed click in the overflow menu, while the comparably destructive Remove already confirmed. Adds ConfirmResetModal, which names each loss and says explicitly that the host-side mounted folders are untouched. Docs: the user guides still described the pre-Project-Home UI. Sixteen factually wrong statements corrected, including "expand the Config panel" (six sites), the actions table (Reset and Remove are in an overflow menu, Files is a tab), a progress modal that no longer exists, a double-click-to-rename gesture ProjectRow never had, the Full Permissions boolean, an incomplete reserved-env list, and the claim in TECHNICAL.md that OAuth tokens survive a Reset. Both layout diagrams and the project tree were rebuilt from the filesystem. New sections cover permission modes with the exact CLI mapping, Project Home, Sessions, capability tiles, Automation, shared authentication, the Auth Bridge and its security posture, and keyboard shortcuts. Known gap recorded rather than papered over: the Automation tab manages existing scheduled tasks but cannot create them — no add command is registered — so task creation remains `triple-c-scheduler add` in the terminal. 87 frontend tests, 34 Rust tests, both builds clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
import Modal from "../ui/Modal";
|
||||
import Button from "../ui/Button";
|
||||
|
||||
interface Props {
|
||||
projectName: string;
|
||||
onConfirm: () => void;
|
||||
onCancel: () => void;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset is destructive in a way its name does not advertise.
|
||||
*
|
||||
* `rebuild_project_container` calls `remove_project_volumes`, which deletes
|
||||
* both `triple-c-home-{id}` and `triple-c-claude-config-{id}` — so the OAuth
|
||||
* login, any skills or agents installed in the container, and every session
|
||||
* transcript go with them. That is intentional (Reset exists to get back to a
|
||||
* clean base image), but it is not recoverable, so it gets the same
|
||||
* confirmation gate as Remove.
|
||||
*/
|
||||
export default function ConfirmResetModal({ projectName, onConfirm, onCancel }: Props) {
|
||||
return (
|
||||
<Modal
|
||||
title="Reset container"
|
||||
onClose={onCancel}
|
||||
widthClassName="w-[28rem]"
|
||||
footer={
|
||||
<>
|
||||
<Button size="md" variant="ghost" onClick={onCancel}>
|
||||
Cancel
|
||||
</Button>
|
||||
<Button
|
||||
size="md"
|
||||
onClick={onConfirm}
|
||||
className="bg-[var(--error-emphasis)] text-white border border-transparent hover:opacity-90"
|
||||
>
|
||||
Reset container
|
||||
</Button>
|
||||
</>
|
||||
}
|
||||
>
|
||||
<div className="space-y-2.5 text-[13px] text-[var(--text-secondary)]">
|
||||
<p>
|
||||
Rebuild{" "}
|
||||
<strong className="text-[var(--text-primary)]">{projectName}</strong>’s
|
||||
container from the clean base image.
|
||||
</p>
|
||||
<p>
|
||||
This deletes the container’s volumes, which means you will lose:
|
||||
</p>
|
||||
<ul className="list-disc pl-5 space-y-1">
|
||||
<li>
|
||||
your <code className="font-mono">claude login</code> — you will need to
|
||||
sign in again
|
||||
</li>
|
||||
<li>any skills, agents or plugins installed inside the container</li>
|
||||
<li>every saved session transcript, so past sessions cannot be resumed</li>
|
||||
<li>anything installed with <code className="font-mono">apt</code>, <code className="font-mono">pip</code> or <code className="font-mono">npm</code></li>
|
||||
</ul>
|
||||
<p>
|
||||
Your mounted project folders are on the host and are{" "}
|
||||
<strong className="text-[var(--text-primary)]">not</strong> affected.
|
||||
</p>
|
||||
</div>
|
||||
</Modal>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user