IDE-Intake: Tiefe-Wahl (simpel/gruendlich) statt einem IDE-Knopf
Drei Modus-Knoepfe: Box · IDE: simpel · IDE: gruendlich. Die Wahl fliesst als 'AUFWAND (vom Commander gewaehlt): SIMPEL/GRUENDLICH'-Zeile in den Auftrag und UEBERSTIMMT die Groessen-Selbsteinschaetzung von konzept-fliessband (simpel=2 Rollen/1 Runde, gruendlich=volle Kaskade). Skill: bei echter Ambition zur vollen Tiefe (nicht 'im Zweifel kleiner'), explizite Commander-Wahl schlaegt Schaetzung. Auto-Skalierung bleibt Fallback fuer Telegram/Lucy (ohne Knopf). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -164,7 +164,9 @@ function IdeenSection() {
|
||||
const qc = useQueryClient()
|
||||
const { showAlert, showConfirm, dialogElement } = useDialog()
|
||||
const [text, setText] = useState("")
|
||||
const [welt, setWelt] = useState<"box" | "ide">("box")
|
||||
// Intake-Modus: Box baut · IDE simpel (schnelles Konzept) · IDE gründlich (volle Kaskade).
|
||||
const [modus, setModus] = useState<"box" | "simpel" | "gruendlich">("box")
|
||||
const isIde = modus !== "box"
|
||||
const [sending, setSending] = useState(false)
|
||||
const [busy, setBusy] = useState<Record<string, boolean>>({})
|
||||
const [openLog, setOpenLog] = useState<string | null>(null)
|
||||
@@ -186,7 +188,7 @@ function IdeenSection() {
|
||||
// Lange Eingaben: Kurzfassung als Titel, alles als Notiz — der Specifier der Box
|
||||
// macht daraus ohnehin einen sauberen Auftrag.
|
||||
const titel = t.length > 160 ? t.slice(0, 157) + "…" : t
|
||||
await api("/api/ideen", { method: "POST", body: JSON.stringify({ titel, notiz: t.length > 160 ? t : "", welt }) })
|
||||
await api("/api/ideen", { method: "POST", body: JSON.stringify({ titel, notiz: t.length > 160 ? t : "", welt: isIde ? "ide" : "box", tiefe: isIde ? modus : "" }) })
|
||||
setText("")
|
||||
reload()
|
||||
} catch (e: any) {
|
||||
@@ -437,35 +439,45 @@ function IdeenSection() {
|
||||
onClick={submit}
|
||||
disabled={sending || text.trim().length < 3}
|
||||
className={cn("flex h-9 shrink-0 items-center gap-1.5 rounded-lg border px-3 text-[11px] font-bold uppercase tracking-wide transition-all cursor-pointer disabled:opacity-50",
|
||||
welt === "ide" ? "border-violet-500/40 bg-violet-500/10 text-violet-300 hover:bg-violet-500/20" : "border-primary/40 bg-primary/10 text-primary hover:bg-primary/20")}>
|
||||
{sending ? <Loader2 className="h-3.5 w-3.5 animate-spin" /> : welt === "ide" ? <Code2 className="h-3.5 w-3.5" /> : <Send className="h-3.5 w-3.5" />}
|
||||
{welt === "ide" ? "Vorbereiten" : "In die Queue"}
|
||||
isIde ? "border-violet-500/40 bg-violet-500/10 text-violet-300 hover:bg-violet-500/20" : "border-primary/40 bg-primary/10 text-primary hover:bg-primary/20")}>
|
||||
{sending ? <Loader2 className="h-3.5 w-3.5 animate-spin" /> : isIde ? <Code2 className="h-3.5 w-3.5" /> : <Send className="h-3.5 w-3.5" />}
|
||||
{isIde ? "Vorbereiten" : "In die Queue"}
|
||||
</button>
|
||||
</div>
|
||||
<div className="flex items-center gap-1.5">
|
||||
<span className="text-[11px] text-muted-foreground/70">Modus</span>
|
||||
<div className="flex rounded-lg border border-border/60 p-0.5">
|
||||
<button
|
||||
onClick={() => setWelt("box")}
|
||||
onClick={() => setModus("box")}
|
||||
className={cn("flex items-center gap-1 rounded px-2 py-1 text-[10px] font-bold uppercase tracking-wide transition-all cursor-pointer",
|
||||
welt === "box" ? "bg-primary/15 text-primary" : "text-muted-foreground/60 hover:text-foreground")}>
|
||||
modus === "box" ? "bg-primary/15 text-primary" : "text-muted-foreground/60 hover:text-foreground")}>
|
||||
<Hammer className="h-3 w-3" /> Box
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setWelt("ide")}
|
||||
onClick={() => setModus("simpel")}
|
||||
title="IDE-Projekt, schnell vorbereitet: knappes Konzept, wenige Denk-Runden. Für kleine, klar umrissene Sachen."
|
||||
className={cn("flex items-center gap-1 rounded px-2 py-1 text-[10px] font-bold uppercase tracking-wide transition-all cursor-pointer",
|
||||
welt === "ide" ? "bg-violet-500/15 text-violet-300" : "text-muted-foreground/60 hover:text-foreground")}>
|
||||
<Code2 className="h-3 w-3" /> IDE
|
||||
modus === "simpel" ? "bg-violet-500/15 text-violet-300" : "text-muted-foreground/60 hover:text-foreground")}>
|
||||
<Code2 className="h-3 w-3" /> IDE: simpel
|
||||
</button>
|
||||
<button
|
||||
onClick={() => setModus("gruendlich")}
|
||||
title="IDE-Projekt, gründlich durchdacht: volle Kaskade mit mehreren Rollen und Härtetests. Für große/ambitionierte Projekte."
|
||||
className={cn("flex items-center gap-1 rounded px-2 py-1 text-[10px] font-bold uppercase tracking-wide transition-all cursor-pointer",
|
||||
modus === "gruendlich" ? "bg-violet-500/15 text-violet-300" : "text-muted-foreground/60 hover:text-foreground")}>
|
||||
<Code2 className="h-3 w-3" /> IDE: gründlich
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-[11px] text-muted-foreground">
|
||||
{welt === "ide" ? (
|
||||
{isIde ? (
|
||||
<>
|
||||
<b className="text-violet-300/90">IDE-Welt:</b> Die Box denkt das Konzept wasserdicht durch
|
||||
(mehrere Denk-Runden mit Kritiker), legt ein leeres Gitea-Repo an und füllt es nur mit den
|
||||
wichtigen Dokumenten (Konzept, Roadmap, AGENTS.md, .aiexclude) — <b>kein Code</b>. Danach öffnest
|
||||
du das Repo in Zed und baust selbst. Das Vorbereiten dauert ein paar Minuten.
|
||||
<b className="text-violet-300/90">IDE-Welt{modus === "gruendlich" ? " · gründlich" : " · simpel"}:</b>{" "}
|
||||
Die Box denkt das Konzept durch{modus === "gruendlich"
|
||||
? " — volle Kaskade: mehrere Fach-Rollen, bis zu 3 Denk-Runden, mehrfacher Kritiker-Härtetest (für große/ambitionierte Projekte, dauert entsprechend)"
|
||||
: " — schlank: 2 Rollen, 1 Denk-Runde (für kleine, klar umrissene Projekte, ein paar Minuten)"}, legt
|
||||
ein leeres Gitea-Repo an und füllt es nur mit den wichtigen Dokumenten (Konzept, Roadmap, AGENTS.md,
|
||||
.aiexclude) — <b>kein Code</b>. Danach öffnest du das Repo in Zed und baust selbst.
|
||||
</>
|
||||
) : (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user