-
{u.display_name || u.username} {u.username} · {u.role}
+
{u.display_name || u.username}{u.private_forced && privat} {u.username} · {u.role}
+
@@ -398,6 +425,7 @@ function AdminStyles() {
.zeile b{font-size:14px;}
.pille{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;background:var(--accent-bg);color:var(--accent);padding:2px 7px;border-radius:20px;margin-left:6px;}
.pille.alpha{background:var(--paper);color:var(--soft);}
+ .pille.nsfw{background:var(--err);color:#fff;}
.schalt{display:flex;gap:10px;align-items:flex-start;cursor:pointer;}
.schalt input{margin-top:3px;width:16px;height:16px;accent-color:var(--accent);flex:0 0 auto;}
.schalt b{display:block;font-size:14px;}
diff --git a/src/components/StudioApp.tsx b/src/components/StudioApp.tsx
index 8b39e2c..9fdd7fe 100644
--- a/src/components/StudioApp.tsx
+++ b/src/components/StudioApp.tsx
@@ -58,6 +58,8 @@ export default function StudioApp({ recipes }: { recipes: any[] }) {
const [targetId, setTargetId] = useState('');
const [targets, setTargets] = useState
([]);
const [presetSel, setPresetSel] = useState('');
+ const [me, setMe] = useState({});
+ const [priv, setPriv] = useState(false);
const [models, setModels] = useState([]);
const [modelKey, setModelKey] = useState('');
const [dragging, setDragging] = useState(false);
@@ -119,6 +121,7 @@ export default function StudioApp({ recipes }: { recipes: any[] }) {
if (def) setModelKey(def.model_id);
}).catch(() => {});
fetch('/api/delivery-targets').then((r) => r.json()).then((j) => setTargets(j.targets || [])).catch(() => {});
+ fetch('/api/me').then((r) => r.json()).then((j) => { setMe(j); if (j.private_forced) setPriv(true); }).catch(() => {});
loadPresets();
}, []);
const loadPresets = () => fetch('/api/recipes').then((r) => r.json()).then((j) => setPresets(j.recipes || [])).catch(() => {});
@@ -208,7 +211,7 @@ export default function StudioApp({ recipes }: { recipes: any[] }) {
picdrop_gallery: (delivery !== 'library' && gallery.trim()) ? gallery.trim() : null,
delivery_target_id: (delivery !== 'library' && targetId) ? targetId : null,
};
- const body: any = { recipe, mode, delivery };
+ const body: any = { recipe, mode, delivery, private: priv };
if (mode !== 'each') body.prompt_text = desc.trim();
body.sources = mode === 'generate' ? [] : ready.map((p) => ({ source_path: p.source_path, filename: p.name }));
try {
@@ -395,6 +398,14 @@ export default function StudioApp({ recipes }: { recipes: any[] }) {
)}