chore: snapshot WIP across dashboard, engine, and core

Bundles staged work-in-progress modifications across multiple packages
(routes, store, agent-instructions, self-healing, QuickEntryBox, etc.)
plus the dashboard theme-data.css preload fix.

Note: an unstaged 621-line deletion in .fusion/memory.md was deliberately
NOT committed — it appears to be an accidental overwrite of architecture
notes and is left in the working tree for review.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-04-10 21:12:40 -07:00
parent 54fdeb66df
commit 1a3ff011d3
13 changed files with 279 additions and 17 deletions

View File

@@ -1016,7 +1016,7 @@ export function QuickEntryBox({ onCreate, addToast, tasks = [], availableModels,
onBlur={handleBlur}
disabled={isSubmitting || isDisabled}
data-testid="quick-entry-input"
rows={1}
rows={2}
aria-controls="quick-entry-controls"
aria-expanded={isDisclosureExpanded}
/>

View File

@@ -1083,9 +1083,9 @@ export function TaskDetailModal({
) : (
<div className="detail-activity">
<h4>Activity</h4>
{task.log && task.log.length > 0 ? (
{workingTask.log && workingTask.log.length > 0 ? (
<div className="detail-activity-list">
{[...task.log].reverse().map((entry, i) => (
{[...workingTask.log].reverse().map((entry, i) => (
<div key={i} className="detail-log-entry">
<div className="detail-log-header">
<span className="detail-log-timestamp">
@@ -1180,10 +1180,10 @@ export function TaskDetailModal({
</div>
<div className="detail-section detail-step-progress">
<h4>Progress</h4>
{task.steps && task.steps.length > 0 ? (
{workingTask.steps && workingTask.steps.length > 0 ? (
<div className="step-progress-wrapper">
<div className="step-progress-bar">
{task.steps.map((step, index) => (
{workingTask.steps.map((step, index) => (
<div
key={index}
className={`step-progress-segment step-progress-segment--${step.status}`}
@@ -1193,7 +1193,7 @@ export function TaskDetailModal({
))}
</div>
<span className="step-progress-label">
{task.steps.filter(s => s.status === "done").length}/{task.steps.length} steps
{workingTask.steps.filter(s => s.status === "done").length}/{workingTask.steps.length} steps
</span>
</div>
) : (

View File

@@ -234,6 +234,13 @@ describe("QuickEntryBox", () => {
expect((textarea as HTMLTextAreaElement).placeholder).toBe("Add a task...");
});
it("renders textarea with baseline height of 2 rows (FN-1580)", () => {
renderQuickEntryBox({});
const textarea = screen.getByTestId("quick-entry-input");
expect(textarea).toBeTruthy();
expect((textarea as HTMLTextAreaElement).rows).toBe(2);
});
it("does NOT expand on focus when autoExpand is false", () => {
renderQuickEntryBox({ autoExpand: false });
const textarea = screen.getByTestId("quick-entry-input");