Add in-progress state to tasks

Introduce IN_PROGRESS as a new task state between TODO and DONE across
the full stack: database enum, Go backend, GraphQL, MCP, and frontend.

The task state icon now cycles forward on click (TODO → IN_PROGRESS →
DONE → TODO), and the action dropdown provides explicit "Move to"
options for any state transition. The "All" tab supports drag-and-drop
between state sections to change a task's state.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2026-04-02 15:50:20 +02:00
parent 5c71575ade
commit 8adf26ad20
9 changed files with 340 additions and 169 deletions

View File

@@ -30,6 +30,12 @@ export const Default: Story = {
},
};
export const InProgress: Story = {
args: {
state: "IN_PROGRESS",
},
};
export const Done: Story = {
args: {
state: "DONE",

View File

@@ -12,19 +12,21 @@
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
import { IconCircleCheck } from "./IconCircleCheck";
import { IconCircleProgress } from "./IconCircleProgress";
import { IconRadioUnchecked } from "./IconRadioUnchecked";
type Props = {
state: "TODO" | "DONE";
state: "TODO" | "IN_PROGRESS" | "DONE";
};
export function TaskStateIcon({ state }: Props) {
return state === "TODO"
? (
<IconRadioUnchecked size={16} className="text-txt-quaternary" />
)
: (
<IconCircleProgress size={16} className="text-txt-accent" />
);
switch (state) {
case "TODO":
return <IconRadioUnchecked size={16} className="text-txt-quaternary" />;
case "IN_PROGRESS":
return <IconCircleProgress size={16} className="text-txt-warning" />;
case "DONE":
return <IconCircleCheck size={16} className="text-txt-accent" />;
}
}