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