feat: productivity suite — task loop, workflow, theming, docs & more #197

Merged
naomi merged 16 commits from feat/productivity into main 2026-03-07 03:08:33 -08:00
3 changed files with 63 additions and 31 deletions
Showing only changes of commit 7a07958b65 - Show all commits
+11 -1
View File
@@ -512,6 +512,10 @@
{#if showPrdPanel} {#if showPrdPanel}
<PrdPanel <PrdPanel
onClose={() => (showPrdPanel = false)} onClose={() => (showPrdPanel = false)}
onBackToWorkflow={() => {
showPrdPanel = false;
showWorkflowPanel = true;
}}
workingDirectory={workingDirectory || selectedDirectory} workingDirectory={workingDirectory || selectedDirectory}
/> />
{/if} {/if}
@@ -521,7 +525,13 @@
{/if} {/if}
{#if showTaskLoop} {#if showTaskLoop}
<TaskLoopPanel onClose={() => (showTaskLoop = false)} /> <TaskLoopPanel
onClose={() => (showTaskLoop = false)}
onBackToWorkflow={() => {
showTaskLoop = false;
showWorkflowPanel = true;
}}
/>
{/if} {/if}
{#if showWorkflowPanel} {#if showWorkflowPanel}
+12 -1
View File
@@ -8,9 +8,10 @@
interface Props { interface Props {
onClose: () => void; onClose: () => void;
workingDirectory: string; workingDirectory: string;
onBackToWorkflow?: () => void;
} }
const { onClose, workingDirectory }: Props = $props(); const { onClose, workingDirectory, onBackToWorkflow }: Props = $props();
const tasks = $derived(prdStore.tasks); const tasks = $derived(prdStore.tasks);
const goal = $derived(prdStore.goal); const goal = $derived(prdStore.goal);
@@ -119,6 +120,15 @@
</span> </span>
{/if} {/if}
</div> </div>
<div class="flex items-center gap-2">
{#if onBackToWorkflow}
<button
onclick={onBackToWorkflow}
class="px-2 py-1 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-tertiary)] border border-[var(--border-color)] rounded-md transition-colors"
>
← Workflow
</button>
{/if}
<button <button
onclick={onClose} onclick={onClose}
class="p-1 text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors" class="p-1 text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors"
@@ -134,6 +144,7 @@
</svg> </svg>
</button> </button>
</div> </div>
</div>
<!-- Body --> <!-- Body -->
<div class="flex-1 overflow-y-auto p-4 min-h-0"> <div class="flex-1 overflow-y-auto p-4 min-h-0">
+12 -1
View File
@@ -16,9 +16,10 @@
interface Props { interface Props {
onClose: () => void; onClose: () => void;
onBackToWorkflow?: () => void;
} }
const { onClose }: Props = $props(); const { onClose, onBackToWorkflow }: Props = $props();
const tasks = $derived(taskLoopStore.tasks); const tasks = $derived(taskLoopStore.tasks);
const loopStatus = $derived(taskLoopStore.loopStatus); const loopStatus = $derived(taskLoopStore.loopStatus);
@@ -307,6 +308,15 @@
</span> </span>
{/if} {/if}
</div> </div>
<div class="flex items-center gap-2">
{#if onBackToWorkflow}
<button
onclick={onBackToWorkflow}
class="px-2 py-1 text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] bg-[var(--bg-secondary)] hover:bg-[var(--bg-tertiary)] border border-[var(--border-color)] rounded-md transition-colors"
>
← Workflow
</button>
{/if}
<button <button
onclick={onClose} onclick={onClose}
class="p-1 text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors" class="p-1 text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-colors"
@@ -322,6 +332,7 @@
</svg> </svg>
</button> </button>
</div> </div>
</div>
<!-- Body --> <!-- Body -->
<div class="flex-1 overflow-y-auto p-4 min-h-0"> <div class="flex-1 overflow-y-auto p-4 min-h-0">