Initial ForgeLM import
This commit is contained in:
commit
a392b9dc60
4296 files changed
+1212675
No files matched your search
@@ -0,0 +1,109 @@
|
||||
---
|
||||
phase: 01-draft-state-ownership
|
||||
plan: 02
|
||||
subsystem: ui
|
||||
tags: [react, typescript, runtime-drawer, css, vitest]
|
||||
requires:
|
||||
- phase: 01-01
|
||||
provides: manager-owned draft, baseline, and live runtime state
|
||||
provides:
|
||||
- controlled runtime settings drawer wired to manager-owned draft state
|
||||
- explicit draft-vs-live presentation with sticky Draft settings header and Live now references
|
||||
- inline discard confirmation flow that preserves draft state on close and reverts only on explicit confirmation
|
||||
affects: [phase-1-async-safety, runtime-workspace, lifecycle-semantics]
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: [controlled drawer over manager draft state, explicit discard confirmation row, dirty-field live reference rows]
|
||||
key-files:
|
||||
created: []
|
||||
modified:
|
||||
- tauri-app/src/features/runtime/components/RuntimeSettingsDrawer.tsx
|
||||
- tauri-app/src/features/runtime/components/RuntimeSettingsDrawer.css
|
||||
- tauri-app/src/features/runtime/components/RuntimeSurface.test.tsx
|
||||
- tauri-app/src/components/Sidebar.tsx
|
||||
key-decisions:
|
||||
- "Wire drawer visibility through manager open or close actions so backdrop and close hide the in-session draft instead of discarding it."
|
||||
- "Use inline draft badges plus Live now helper rows so changed values are distinguishable without relying on color alone."
|
||||
patterns-established:
|
||||
- "Runtime settings UI reads draftConfig and savedBaseline directly rather than mirroring snapshot.config into local form state."
|
||||
- "Discard changes opens a confirmation row; only Revert to saved performs the reset."
|
||||
requirements-completed: [WORK-02, CONF-02]
|
||||
duration: 18min
|
||||
completed: 2026-03-29
|
||||
---
|
||||
|
||||
# Phase 1 Plan 2: Draft Presentation Summary
|
||||
|
||||
**Controlled runtime drawer with explicit draft or live presentation, sticky draft copy, and confirmed discard semantics**
|
||||
|
||||
## Performance
|
||||
|
||||
- **Duration:** 18 min
|
||||
- **Started:** 2026-03-29T02:53:00Z
|
||||
- **Completed:** 2026-03-29T03:10:41Z
|
||||
- **Tasks:** 2
|
||||
- **Files modified:** 4
|
||||
|
||||
## Accomplishments
|
||||
- Refactored `RuntimeSettingsDrawer.tsx` into a controlled draft editor that reads manager-owned draft and baseline values
|
||||
- Added sticky `Draft settings` and `Live now` presentation, draft badges, and explicit `Save changes` and `Discard changes` copy
|
||||
- Added drawer-level regression coverage for visible draft state, close or reopen preservation, and explicit discard confirmation behavior
|
||||
|
||||
## Task Commits
|
||||
|
||||
Each task was committed atomically:
|
||||
|
||||
1. **Task 1: Convert the drawer to a controlled draft/live presentation** - `80883c2` (feat)
|
||||
2. **Task 2: Add drawer-level tests for draft visibility and explicit discard semantics** - `80883c2` (feat)
|
||||
|
||||
**Plan metadata:** pending
|
||||
|
||||
## Files Created/Modified
|
||||
- `tauri-app/src/features/runtime/components/RuntimeSettingsDrawer.tsx` - Controlled draft editor with sticky header, live reference rows, and discard confirmation flow
|
||||
- `tauri-app/src/features/runtime/components/RuntimeSettingsDrawer.css` - Draft-state, live-reference, sticky header and footer, and discard confirmation styling
|
||||
- `tauri-app/src/features/runtime/components/RuntimeSurface.test.tsx` - Drawer-level regression tests for draft copy, close or reopen preservation, and discard confirmation
|
||||
- `tauri-app/src/components/Sidebar.tsx` - App-shell wiring so opening and closing the drawer goes through manager draft actions
|
||||
|
||||
## Decisions Made
|
||||
- Routed drawer open and close through the manager API so hidden drafts survive close and reopen within the same session
|
||||
- Kept the local runtime apply CTA separate from `Save changes` while still putting draft save and discard semantics in the primary footer flow
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
### Auto-fixed Issues
|
||||
|
||||
**1. [Integration] Added sidebar wiring for controlled draft opening and closing**
|
||||
- **Found during:** Task 1 (controlled drawer refactor)
|
||||
- **Issue:** The plan focused on drawer files, but the app shell still opened the drawer through local UI state only
|
||||
- **Fix:** Updated `tauri-app/src/components/Sidebar.tsx` to call `openDraft`, `closeDraft`, `resetDraft`, and draft update handlers from `useRuntimeManager`
|
||||
- **Files modified:** `tauri-app/src/components/Sidebar.tsx`
|
||||
- **Verification:** `npm test -- RuntimeSurface`; `npm run build`
|
||||
- **Committed in:** `80883c2`
|
||||
|
||||
---
|
||||
|
||||
**Total deviations:** 1 auto-fixed (integration)
|
||||
**Impact on plan:** Necessary brownfield wiring only; no scope creep beyond enabling the planned controlled drawer behavior.
|
||||
|
||||
## Issues Encountered
|
||||
- None
|
||||
|
||||
## User Setup Required
|
||||
|
||||
None - no external service configuration required.
|
||||
|
||||
## Next Phase Readiness
|
||||
- The drawer now exposes explicit draft and live semantics, which gave Plan 03 a stable surface for async safety and invalid-draft handling
|
||||
- Controlled draft UI is in place for future lifecycle-semantics work in Phase 2
|
||||
|
||||
## Self-Check
|
||||
|
||||
PASSED
|
||||
|
||||
- Verified explicit draft and live copy in `tauri-app/src/features/runtime/components/RuntimeSurface.test.tsx`
|
||||
- Verified discard confirmation and close or reopen draft preservation with `npm test -- RuntimeSurface`
|
||||
- Verified production compile with `npm run build`
|
||||
|
||||
---
|
||||
*Phase: 01-draft-state-ownership*
|
||||
*Completed: 2026-03-29*
|
||||
Reference in new issue
Block a user