Commit Graph
24 Commits
Author SHA1 Message Date
NuklearRabbit d47c7b5e41 feat: add safe Gitea sync and signed updates
ForgeFlow quality gate / secret-scan (push) Failing after 32s
ForgeFlow quality gate / quality (push) Failing after 0s
2026-08-27 00:38:58 +02:00
NuklearRabbitandClaude Opus 5 9260d35957 fix: repair broken IPC wiring and cut the cost of repository polling
Three handlers referenced a dependency they were never given, which made them
throw a ReferenceError as soon as they ran:

- deployment:preflight for Gitea Actions profiles (`preflight` was passed to
  registerOperationsIpc but not to registerDeploymentIpc)
- Unraid write-access repair (`safeRelativeRemoteFile` was missing from
  createUnraidAccessMethods)
- a dead reference of the same name in unraid-state-methods

no-undef and no-unused-vars were disabled for every file, which is why none of
these were caught. Both are now enabled for src/main and src/shared, where the
dependency graph is explicit. The renderer keeps them off because its functions
are deliberately cross-script globals.

Performance:

- git.status() spawned three processes (rev-parse, status, remote get-url) per
  call. A directory holding its own .git is by definition the work tree root, so
  rev-parse is unnecessary, and the remote URL is cached against the mtime of
  .git/config, including the failure for a repository without that remote.
- git status runs with --no-optional-locks so a read no longer rewrites the
  index. That stops it fighting a concurrent Git command for the index lock, and
  is what makes filesystem watching viable at all.
- One commit issued four `git status` reads; callers that already hold the
  status now pass it on, leaving two.
- The repository monitor is event driven. A watched repository is read on
  filesystem activity, with a 30s safety net for watchers that stop delivering
  and a 1s floor so a busy tree cannot drive a read per event. Repositories that
  cannot be watched keep using the interval. Idle cost for one repository over
  35s: 24 git processes before, 3 after.
- Resolving one repository by name no longer refreshes the whole workspace.
- Concurrent configuration saves share a single write of the latest state.
- Repository discovery follows directory junctions again. The filter that
  skipped them made the realpath cycle guard dead code, and hid any project
  folder reached through a junction.

Renderer:

- render() replaced the whole shell on every poll, discarding focus, caret and
  scroll position while the user was typing. Those are preserved now, and an
  unchanged render leaves the DOM alone entirely.
- The four sections that enhanceRenderedUi() injected after render moved into
  the views, so the rendered markup is the single source of truth.
- The monitor no longer keeps a repository paused forever when it is unlinked
  mid-mutation, scheduleAutoRefresh honours its delay argument, the demo bridges
  no longer block startup, and #app is no longer an aria-live region announcing
  the entire UI on every render.

IPC channel plumbing moved to src/main/ipc/channel.cjs, replacing a module-level
mutable diagnostics singleton with an argument.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 14:31:58 +02:00
NuklearRabbit 32ed4fcb5e perf: streamline repository and deployment awareness
ForgeFlow quality gate / quality (push) Canceled after 0s
2026-08-12 15:26:53 +02:00
NuklearRabbit 38e221cbd1 fix: harden repository refresh and server pull
ForgeFlow quality gate / quality (push) Canceled after 0s
2026-08-12 15:05:57 +02:00
NuklearRabbit 13f4fe7cd0 perf: reduce renderer and repository polling work
ForgeFlow quality gate / quality (push) Canceled after 0s
2026-08-01 14:24:53 +02:00
NuklearRabbit 7b05c953b6 refactor: split renderer ipc and unraid domains 2026-07-29 18:11:07 +02:00
NuklearRabbit 5d3731a853 feat: normalize deployment inventory evidence 2026-07-29 17:39:22 +02:00
NuklearRabbit 6b93391a9b feat: add transactional deploy key lifecycle 2026-07-29 17:20:31 +02:00
NuklearRabbit a7ab2d6cc8 fix: harden responsive accessibility contracts 2026-07-29 16:22:46 +02:00
NuklearRabbit ae6c41ff90 feat: verify server pull access before deployment 2026-07-29 16:17:54 +02:00
NuklearRabbit 430d40354b fix: make server discovery and audits read-only 2026-07-29 16:09:39 +02:00
NuklearRabbit 56efd1a00c feat: harden server pull deployments and git hygiene 2026-07-28 08:27:09 +02:00
NuklearRabbit f990c26014 Update 2026-07-27 23:15:35 +02:00
NuklearRabbit 24dde9a031 Release ForgeFlow 0.8.9 Git Validator 2026-07-26 05:24:22 +02:00
NuklearRabbit 40d41f9a32 Release ForgeFlow 0.8.7 automatic server discovery 2026-07-26 04:22:02 +02:00
NuklearRabbit 70840839f8 Release ForgeFlow 0.8.6 premium code canvas 2026-07-26 04:07:06 +02:00
NuklearRabbit 095342b882 Release ForgeFlow 0.8.4 interactive illustrations 2026-07-26 02:28:41 +02:00
NuklearRabbit cb95c407d9 Release ForgeFlow 0.8.3 premium deployment UX 2026-07-26 01:17:21 +02:00
NuklearRabbit 3e5e3d2a8b Release ForgeFlow 0.8.2 with binary auto-update 2026-07-26 00:58:24 +02:00
NuklearRabbit 4ad698c4eb Release ForgeFlow 0.8.1
Add advanced Git and deployment workflows, secure backups and auditing, live Gitea integration, desktop notifications, connection validation, and the premium responsive UX refresh.
2026-07-26 00:42:17 +02:00
NuklearRabbit 9d3933c878 Release ForgeFlow 0.6.0 2026-07-25 05:59:07 +02:00
NuklearRabbit cf1f67a823 Release ForgeFlow 0.5.2 2026-07-25 01:07:54 +02:00
NuklearRabbit b4f0be3d77 Update to 4.4 2026-07-24 20:44:26 +02:00
NuklearRabbit 66060348da Update 2026-07-24 20:29:23 +02:00