Refinement Implementation — Cycle 1
Refinement Implementation — Cycle 1
Summary
The broken publish recovery path is now fully wired: config:getPublic and shell:openPath have dedicated handlers, router coverage, and a typed utility module so the renderer banner can open the repo folder again. I also aligned file-copy destination resolution with the configured incoming-posts path, fixed the case-only storm-folder rename edge case, and taught single-instance focus to fall back to the first available window during the first-run gate.
Implementation Details
| Finding | Status | Files Changed | Notes |
|---|---|---|---|
| C1: Publish recovery banner calls two IPC channels that are still stubbed | Fixed | src/main/ipc/router.ts, src/main/ipc/handlers/utilityHandlers.ts, tests/main/ipcRouter.test.ts |
Added concrete config:getPublic and shell:openPath handlers and verified both channels in the router suite. |
| C2: File copy and publish disagree about the configured incoming posts folder | Fixed | src/main/index.ts, src/main/services/publish/FileCopyService.ts, src/main/services/paths/PathService.ts, tests/main/fileCopyService.test.ts, tests/main/pathService.test.ts |
File copies now resolve the incoming directory from config, with shared path normalization reused for snapshots and defaults. |
| I1: Storm folder renames fail when only the folder casing needs to change | Fixed | src/main/services/storms/StormFolderService.ts, tests/main/stormFolderService.test.ts |
Case-only renames now bypass the false target-exists collision on case-insensitive platforms in both single and bulk rename flows. |
| I2: Second launch does not refocus the first-run window | Fixed | src/main/app/lifecycle.ts, tests/main/singleInstance.test.ts |
The single-instance handler now falls back to the first live BrowserWindow when the main window has not been created yet. |
| M1: Router tests never assert the renderer-visible config/shell utility channels | Fixed | tests/main/ipcRouter.test.ts |
Added explicit assertions for config:getPublic snapshot output and shell:openPath success behavior. |
| D1: Give renderer-facing utility IPC calls dedicated handlers instead of relying on router special cases | Fixed | src/main/ipc/handlers/utilityHandlers.ts, src/main/ipc/router.ts, tests/main/ipcRouter.test.ts |
Extracted the utility channel logic into a focused handler module to reduce future stub drift. |
Changes Summary
- Files modified: 11
- Files created: 1
- Findings addressed: 6 of 6
- Findings skipped: 0 (with reasons above)
IMPLEMENTATION_COMPLETE