Gate Obsidian Toolbox behind TOOLBOX_VISIBLE flag

Toolbox is still being refined; hide it from clients on prod while keeping it
usable on staging. Entry points (header link, dashboard card) render only when
TOOLBOX_VISIBLE=true; a tools/layout redirects /tools/* to /dashboard otherwise.
Routes and ToolUsage table are untouched (no destructive migration).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-26 12:15:42 +05:00
parent 3e2c70dd51
commit 39e2102a18
4 changed files with 22 additions and 6 deletions
+5 -3
View File
@@ -168,9 +168,11 @@ export default async function StudentDashboard() {
</div>
)}
<div className="mt-8">
<ToolboxPromoCard />
</div>
{process.env.TOOLBOX_VISIBLE === "true" && (
<div className="mt-8">
<ToolboxPromoCard />
</div>
)}
{locked.length > 0 && (
<div className="mt-10">
+5 -3
View File
@@ -57,9 +57,11 @@ export default async function StudentLayout({ children }: { children: React.Reac
<Link href="/wrapped" className="text-sm hover:underline" style={{ color: "var(--muted-foreground)" }}>
Wrapped
</Link>
<Link href="/tools" className="text-sm hover:underline" style={{ color: "var(--muted-foreground)" }}>
Инструменты
</Link>
{process.env.TOOLBOX_VISIBLE === "true" && (
<Link href="/tools" className="text-sm hover:underline" style={{ color: "var(--muted-foreground)" }}>
Инструменты
</Link>
)}
<Link href="/questions" className="text-sm hover:underline" style={{ color: "var(--muted-foreground)" }}>
Вопросы
</Link>
+8
View File
@@ -0,0 +1,8 @@
import { redirect } from "next/navigation";
// Toolbox ещё в доработке: на проде скрыт (флаг не задан) — прямой заход на
// /tools/* уводит на дашборд. На staging выставлен TOOLBOX_VISIBLE=true.
export default function ToolsLayout({ children }: { children: React.ReactNode }) {
if (process.env.TOOLBOX_VISIBLE !== "true") redirect("/dashboard");
return <>{children}</>;
}