feat(HAI-001): update CreateTaskModal to require description and make title optional

This commit is contained in:
Dustin Byrne
2026-03-25 19:04:38 -04:00
parent 20b7b8e562
commit 5a9fc24900

View File

@@ -12,10 +12,10 @@ export function CreateTaskModal({ onClose, onCreateTask, addToast }: CreateTaskM
const [title, setTitle] = useState(""); const [title, setTitle] = useState("");
const [description, setDescription] = useState(""); const [description, setDescription] = useState("");
const [deps, setDeps] = useState(""); const [deps, setDeps] = useState("");
const titleRef = useRef<HTMLInputElement>(null); const descRef = useRef<HTMLTextAreaElement>(null);
useEffect(() => { useEffect(() => {
setTimeout(() => titleRef.current?.focus(), 100); setTimeout(() => descRef.current?.focus(), 100);
}, []); }, []);
useEffect(() => { useEffect(() => {
@@ -36,9 +36,9 @@ export function CreateTaskModal({ onClose, onCreateTask, addToast }: CreateTaskM
const handleSubmit = useCallback( const handleSubmit = useCallback(
async (e: React.FormEvent) => { async (e: React.FormEvent) => {
e.preventDefault(); e.preventDefault();
const trimmedTitle = title.trim(); if (!description.trim()) return;
if (!trimmedTitle) return;
const trimmedTitle = title.trim();
const dependencies = deps const dependencies = deps
.split(",") .split(",")
.map((s) => s.trim()) .map((s) => s.trim())
@@ -46,8 +46,8 @@ export function CreateTaskModal({ onClose, onCreateTask, addToast }: CreateTaskM
try { try {
const task = await onCreateTask({ const task = await onCreateTask({
title: trimmedTitle, description: description.trim(),
description: description.trim() || undefined, title: trimmedTitle || undefined,
dependencies: dependencies.length ? dependencies : undefined, dependencies: dependencies.length ? dependencies : undefined,
}); });
addToast(`Created ${task.id}`, "success"); addToast(`Created ${task.id}`, "success");
@@ -70,27 +70,27 @@ export function CreateTaskModal({ onClose, onCreateTask, addToast }: CreateTaskM
</div> </div>
<form onSubmit={handleSubmit}> <form onSubmit={handleSubmit}>
<div className="form-group"> <div className="form-group">
<label htmlFor="task-title">Title</label> <label htmlFor="task-desc">Description</label>
<input <textarea
ref={titleRef} ref={descRef}
type="text" id="task-desc"
id="task-title" rows={4}
placeholder="What needs to be done?" placeholder="What needs to be done? Add context, requirements, or rough notes..."
required required
value={title} value={description}
onChange={(e) => setTitle(e.target.value)} onChange={(e) => setDescription(e.target.value)}
/> />
</div> </div>
<div className="form-group"> <div className="form-group">
<label htmlFor="task-desc"> <label htmlFor="task-title">
Description <span className="optional">(optional)</span> Title <span className="optional">(optional)</span>
</label> </label>
<textarea <input
id="task-desc" type="text"
rows={4} id="task-title"
placeholder="Add context, requirements, or rough notes..." placeholder="Short summary (auto-generated if empty)"
value={description} value={title}
onChange={(e) => setDescription(e.target.value)} onChange={(e) => setTitle(e.target.value)}
/> />
</div> </div>
<div className="form-group"> <div className="form-group">