From a0435f43167050858fe4410dd15330bcec0e2b58 Mon Sep 17 00:00:00 2001 From: NuklearRabbit <145918611+NuklearRabbit@users.noreply.github.com> Date: Sat, 1 Aug 2026 14:33:08 +0200 Subject: [PATCH] chore: release ForgeFlow 0.10.3 --- README.md | 2 +- SOURCE_MANIFEST.txt | 13 +++++++------ docs/RELEASE_NOTES_0.10.3.md | 19 +++++++++++++++++++ package-lock.json | 4 ++-- package.json | 3 ++- scripts/verify.mjs | 9 +++++++-- src/renderer/mock-repository-bridge.js | 2 +- 7 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 docs/RELEASE_NOTES_0.10.3.md diff --git a/README.md b/README.md index 32d451c..178d210 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ForgeFlow is een Windows-desktopapp voor wie Git, Gitea en eigen Docker- of Unraid-servers gebruikt. Je ziet in één werkruimte wat lokaal gewijzigd is, wat op Gitea staat en welke exacte commit op de server draait. ForgeFlow begeleidt je daarna veilig door review, commit, push, deployment en verificatie. -> Huidige release: **0.10.2** · [download de laatste Windows-release](https://gitea.itworx.tech/Jens/ForgeFlow/releases/latest) +> Huidige release: **0.10.3** · [download de laatste Windows-release](https://gitea.itworx.tech/Jens/ForgeFlow/releases/latest) ![ForgeFlow release-overzicht](docs/screenshots/overview.png) diff --git a/SOURCE_MANIFEST.txt b/SOURCE_MANIFEST.txt index 7a00b79..8bbed1e 100644 --- a/SOURCE_MANIFEST.txt +++ b/SOURCE_MANIFEST.txt @@ -1,4 +1,4 @@ -ForgeFlow 0.10.2 source manifest +ForgeFlow 0.10.3 source manifest SHA-256 BYTES PATH (The manifest excludes itself, dependencies and generated release artifacts.) cedceb71eb846d99c7c4019031833c1c7f93b84a1c6073aec7d2435dc744ca3d 703 .gitea/workflows/quality.yml @@ -35,6 +35,7 @@ f79908fb3dad98c38030c6e6be7c79a1999e0478ed9c2496923891954438daa1 4581 979a0b8e129979be6b265e8571d0a3c1e9ddd4ddb6b0bf55ae748d3478e51854 2296 docs/RELEASE_NOTES_0.10.0.md 0eb44bda2209a5979a6ac693ac4cd4d235c0015031e54b9e895990f37bf60054 1433 docs/RELEASE_NOTES_0.10.1.md 8d713471a437a8a55b00d7e1dd95290680862107bc4e586cf27d727f6274e46c 577 docs/RELEASE_NOTES_0.10.2.md +0942fb2c4a4f972296423b5232687f7389e2c6417a9d48a3244beef9dec907b9 1164 docs/RELEASE_NOTES_0.10.3.md a0c00ff76acd1682bb5e0e8dcf6589c9480da436c9c6d30780a1ed58b4dad94f 1770 docs/RELEASE_NOTES_0.2.0.md 5773ead01aa4c522c556295553787482d01b1f5242f053b2c61f120c4de4fa76 5963 docs/RELEASE_NOTES_0.3.0.md d46de73cf6c4cd5c2ba3f455a7a2af2e0d64ee9d94a97fd1a0bfb44e35c1624a 1093 docs/RELEASE_NOTES_0.3.1.md @@ -96,14 +97,14 @@ c230b931abf2293d2d44b7a69b94c35f1142c093cc46b88739a0de5cbd6d1896 1532 4a561ead5ba7cdfaf4efce91842a4308c5f2a77980205879d83835efb8a579db 1067 LICENSE 1f0f388df4397e548887bbc7579fd3c864581b86469c01703201ece7a6cbf931 13667 main.cjs 91a984a89dd57a084b9a2331763cacdb061582fb590f13df379d92c1a77a2ee1 352 OVERLAY-INSTRUCTIONS.md -7488d75ef78a2ad9e3e96dfe23e76c4754add000b0f6c5ecb137cfee00beb7e0 179806 package-lock.json -6a6d1f28a67aa554c0dc27a15f3110c7b2b648d88cbba649402f449d1591c784 5397 package.json +672410b1af3900733c067cf29ecaffb96a33500ccbd597bebe999e0c06b161e0 179806 package-lock.json +70d4bafa0f9633bfdef297bb2599c90ff224cf10b69134ad74c77ee574ce49ce 5436 package.json 2a597a5704c576783b8a72407fbc377fa7506b36a4596ea7f7bce126e394f837 1326 playwright.config.mjs 69318fdf054be7aa2fe86ead9847da9da65745d8d5de548c8346f3ba0afc4892 12175 preload.cjs abe5dd6fd68f2970cd19ef134094907c67219061d8fe9a1a08324c78de4ad437 484 PUBLISH-AND-ENABLE-UPDATE.cmd f018383f755352ca448e2ebb1e19b1dba412a3eb793d61e64b02953e300754fd 10538 Publish-ForgeFlow-Release.ps1 688fff7d2c989adb97ebb7fae38962656b70304a0aa5d27433c56adf7f136de0 4196 Publish-Missing-Binary-Release.ps1 -192bebe6c346e56ca4ec623f347ebcfd8a7a9279c8fa49644e573eab04a4d2a4 10313 README.md +9e95c2fe6bca120bd2f7502afe9cf9d6a2aa0ee128261cccc955dd9b94ade833 10313 README.md 1fa7bf646321e07e40d98f4a7529d5f748c600edd5283f62ee13574b4e97280f 14329 reports/architecture-audit.json c1ff18f1367691332b189bb7589843a5e0bbde4817e3dd29df4ade7ea71dbd52 1114 reports/architecture-audit.md 509c7bcff5280349bd9f45ed6151f70372bad7010a9ea582c13e2ccab91fe0cd 6272 scripts/acceptance.mjs @@ -119,7 +120,7 @@ b83d443f5724ac15393567f3a688aed8315fbe3e5966832c864a9466e0669464 8102 c76507857292c5713e1c699cf02e24b80265da39af2cecd148034bdb874adbb6 5246 scripts/test-authenticode-chain.ps1 4393f7dc5f417e6d601a68238f4e26791799a3634acec228fe4d79deaee85eb5 3109 scripts/validate-installed-connections.cjs 50880ac76b7d681dc65019dc794efc3cea4ffd379507fe0518985312f5b39304 2096 scripts/verify-release-signatures.mjs -0100191b9967f5b1614df000fac81978451b22d72a8b9c3fae90e22a822cabf0 17816 scripts/verify.mjs +c1763bad24b747051ad18d911ba9c7176882663e3b6ce9921a2f8b1aae056bd7 18156 scripts/verify.mjs 0b9f03ba3c67ff7cdb2916a902ad8ce25e81a7c90b210e4ae52d2ad029efabf3 2353 scripts/write-release-checksums.mjs 619515f524cb89960370ffcbd3fafd3c0e178b95f69c5868b1dd44777f23ec1e 2081 setup-windows.ps1 dd613d04b366f2cd071a1685a414016a5fb008082ed1b4cb8b24b79c100f640a 2412 src/main/audit-service.cjs @@ -174,7 +175,7 @@ eef2f269ba4fbb76bf66ad328d481b461255d0acb753b30878dd4d4eaac57dc6 6924 a84da5aecbb16ce7983dba1f6d6aab1bf47b2e9a87c2933fa1afb8123f7ef7d6 1497 src/renderer/index.html 06180d9656dd254edfb6949c397f8e313954fc560ddcb22b3a35fce3c3e35655 21350 src/renderer/mock-bridge.js 9fa522dad0088e2981c4ca5c392e93d6c92e04ff23fd1083d9040a3aa52d2b55 28101 src/renderer/mock-deployment-bridge.js -cbb21f5f4b299f24d6cea9070fafcd14315d3ad6259bc8e11c0e93350084fff5 20032 src/renderer/mock-repository-bridge.js +948369ce1bfbc31becc95996feabccd6ae90c6297217f04149b78bd323d279f7 20032 src/renderer/mock-repository-bridge.js 94fa265c2fe9ca8d644f0ce9b620b6f85d9b25dca5802c4e9195b66dcbe80120 6522 src/renderer/operations.js 6776e0adb690b8f36274bfc5b31e3140054893c46ba64621c4f56a0d91b52fc2 78323 src/renderer/styles.css 1703e64533b7e2717b27c5776296c7dd76331e6f97e8005aea9fd688f1aee3ae 94834 src/renderer/views.js diff --git a/docs/RELEASE_NOTES_0.10.3.md b/docs/RELEASE_NOTES_0.10.3.md new file mode 100644 index 0000000..eb4eab7 --- /dev/null +++ b/docs/RELEASE_NOTES_0.10.3.md @@ -0,0 +1,19 @@ +# ForgeFlow 0.10.3 + +## Responsive large workspaces + +- Repository monitoring checks up to four local working trees concurrently while retaining overlap protection and per-repository pause controls. +- Global search, repository filtering and the command palette debounce full interface renders during rapid typing. +- Commit-message input updates readiness and action controls in place, preserving focus and cursor responsiveness. +- Interactive project illustrations and diff atmosphere effects perform at most one layout update per animation frame. + +## Git Validator reliability + +- Git Validator and every long repository tab now retain an explicit vertical scroll owner across compact, desktop and wide layouts. +- Standard, Strict and Production policies correctly treat configured warning severities as blockers; Minimal remains error-only. +- Documented suppressions no longer reduce the hygiene score or remain counted as active blockers. +- Repair requests are rescanned immediately before preview or execution, preventing stale or forged fixes. + +## Verification + +- Full quality gate, coverage thresholds and all responsive browser scenarios pass for this release. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index fdcd4b4..f6f9f0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "forgeflow", - "version": "0.10.2", + "version": "0.10.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "forgeflow", - "version": "0.10.2", + "version": "0.10.3", "dependencies": { "ssh2": "1.17.0" }, diff --git a/package.json b/package.json index 008e715..94ba3b9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "forgeflow", - "version": "0.10.2", + "version": "0.10.3", "private": true, "description": "Desktop release cockpit for local Git, Gitea Actions and controlled exact-commit deployments.", "main": "main.cjs", @@ -107,6 +107,7 @@ "docs/RELEASE_NOTES_0.10.0.md", "docs/RELEASE_NOTES_0.10.1.md", "docs/RELEASE_NOTES_0.10.2.md", + "docs/RELEASE_NOTES_0.10.3.md", "docs/CURRENT_STATE.md", "docs/MUTATION_MODEL.md", "docs/RELEASING.md", diff --git a/scripts/verify.mjs b/scripts/verify.mjs index 36db055..9f52be9 100644 --- a/scripts/verify.mjs +++ b/scripts/verify.mjs @@ -82,6 +82,7 @@ const required = [ "docs/RELEASE_NOTES_0.10.0.md", "docs/RELEASE_NOTES_0.10.1.md", "docs/RELEASE_NOTES_0.10.2.md", + "docs/RELEASE_NOTES_0.10.3.md", "docs/UPDATING.md", "docs/DIAGNOSTICS.md", "docs/DEPLOYMENT_SETUP.md", @@ -120,9 +121,9 @@ for (const file of required) await access(path.join(root, file)); const packageJson = JSON.parse( await readFile(path.join(root, "package.json"), "utf8"), ); -if (packageJson.version !== "0.10.2") +if (packageJson.version !== "0.10.3") throw new Error( - `Expected package version 0.10.2, got ${packageJson.version}.`, + `Expected package version 0.10.3, got ${packageJson.version}.`, ); const sourceManifest = await readFile( path.join(root, "SOURCE_MANIFEST.txt"), @@ -444,6 +445,10 @@ const release0102 = await readFile(path.join(root, "docs/RELEASE_NOTES_0.10.2.md for (const phrase of ["internal HTTP", "public HTTPS", "same-origin", "SHA-256"]) { if (!release0102.includes(phrase)) throw new Error(`0.10.2 release notes are missing: ${phrase}`); } +const release0103 = await readFile(path.join(root, "docs/RELEASE_NOTES_0.10.3.md"), "utf8"); +for (const phrase of ["concurrently", "debounce", "animation frame", "Git Validator", "stale or forged"]) { + if (!release0103.includes(phrase)) throw new Error(`0.10.3 release notes are missing: ${phrase}`); +} const configSource = await readFile(path.join(root, "src/main/config-store.cjs"), "utf8"); for (const mode of ["server-git", "push-bundle", "monitor-only"]) { if (!configSource.includes(mode)) throw new Error(`Deployment configuration is missing mode: ${mode}`); diff --git a/src/renderer/mock-repository-bridge.js b/src/renderer/mock-repository-bridge.js index 72f83fa..5906d5e 100644 --- a/src/renderer/mock-repository-bridge.js +++ b/src/renderer/mock-repository-bridge.js @@ -5,7 +5,7 @@ function createMockRepositoryBridge(context) { await wait(80); snapshot(); return { - appVersion: "0.10.2-demo", + appVersion: "0.10.3-demo", platform: "win32", state: clone(state), git: { available: true, version: "git version 2.47.3" },