You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
build(windows): per-build releases layout and Forge under windows/
- Add build-layout.cjs for RELEASE_BUILD_ID, BUILD_STAMP, releases/builder/<id>/eb-output staging, and fixed dev/ folder name for non-installer artifacts.\n- run-win-electron-builder.cjs sets env and runs cleanup; build-with-progress.cjs passes HSP_EB_OUTPUT and directories.output to electron-builder.\n- cleanup.cjs reads HSP_EB_OUTPUT, moves leftover staging into dev/, drops eb-output after organize.\n- Relocate Forge config and make-with-stamp to app/windows/forge/; package.json config.forge points there; add forge-cleanup.cjs for parity with builder layout.\n- NSIS runAfterFinish true (package.json + Forge maker) so the app can launch after install.\n- CI workflows read installer from releases/builder/<id>/ and zip/yml from dev/; refresh docs for paths and commands.
Made-with: Cursor
1.**Expo web export** – `npm run build` → `expo export -p web`. Metro bundles the app and writes static files to `dist/`. Usually the slowest step (tens of seconds).
27
27
2.**Electron pack** – `electron-builder --win`. Rebuilds native deps (if any), packages the app, builds the NSIS installer. Downloads (Electron, NSIS, winCodeSign) are cached after first run.
28
-
3.**Clean** – `node windows/cleanup.cjs`. Moves artifacts into `releases/build_MMDDYYYY_HHMM/` (installer at root, optional files in`dev/`).
28
+
3.**Clean** – `node windows/cleanup.cjs`. Moves artifacts into `releases/builder/build_MMDDYYYY_HHMM/` (installer only at root; zip, yml, unpacked, and other artifacts under`dev/`).
@@ -72,7 +72,7 @@ User runs **`HyperlinksSpaceAppInstaller.exe`**. NSIS extracts the app (e.g. to
72
72
|**Auto-updates**| Add `electron-updater` (or similar) and serve updates over HTTPS so users get patches without reinstalling. |
73
73
|**CI/CD**| In CI, cache `node_modules`, `.expo`, Metro cache, and `electron-builder` cache to make repeated builds much faster. |
74
74
|**Developer Mode (Windows)**| If you build on Windows and use exe editing (icon, etc.), Developer Mode avoids symlink errors during the winCodeSign step. |
75
-
|**Structured releases**|`windows/cleanup.cjs` puts each build in `releases/build_<date>_<time>/` with the installer at root and optional artifacts in `dev/`. |
75
+
|**Structured releases**|`windows/cleanup.cjs` puts each build in `releases/builder/build_<date>_<time>/` with the installer at root and all other artifacts in `dev/`. |
76
76
77
77
---
78
78
@@ -89,7 +89,7 @@ User runs **`HyperlinksSpaceAppInstaller.exe`**. NSIS extracts the app (e.g. to
89
89
90
90
## 5. File layout after build
91
91
92
-
-**After `build:win` or `pack:win`:**`app/releases/build_MMDDYYYY_HHMM/HyperlinksSpaceAppInstaller.exe` and `app/releases/build_MMDDYYYY_HHMM/dev/` (win-unpacked, blockmap, builder-debug.yml, builder-effective-config.yaml).
92
+
-**After `build:win` or `pack:win`:**`app/releases/builder/build_MMDDYYYY_HHMM/HyperlinksSpaceAppInstaller_<stamp>.exe` and `app/releases/builder/build_MMDDYYYY_HHMM/dev/` (portable zip, yml, win-unpacked, blockmap, builder-debug.yml, builder-effective-config.yaml).
93
93
-**After `build:win:dir`:**`app/release/win-unpacked/` (run `app.exe` from there).
94
94
-**Build inputs:**`dist/` (Expo export), `windows/` (build.cjs, app-shell.html, preload-log.cjs), `assets/icon.ico`, and files listed under `build.files` in `package.json`.
Copy file name to clipboardExpand all lines: app/docs/releases.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ This document defines the production plan for release detection, deduped GitHub
12
12
## Source of Truth
13
13
14
14
- The **GitHub Release tag** is the release identity (`release_id`), for example `build_03252026_1929`.
15
-
- Locally, `windows/cleanup.cjs` moves the built installer to `app/releases/build_MMDDYYYY_HHMM/HyperlinksSpaceAppInstaller.exe`. In CI you can set `RELEASE_BUILD_ID` to match a chosen tag, or leave it unset so the folder name comes from build time.
15
+
- Locally, `windows/cleanup.cjs` moves the built installer to `app/releases/builder/build_MMDDYYYY_HHMM/HyperlinksSpaceAppInstaller_<stamp>.exe` (other artifacts under `dev/`). In CI you can set `RELEASE_BUILD_ID` to match a chosen tag, or leave it unset so the folder name comes from build time.
16
16
17
17
## Workflow Trigger
18
18
@@ -34,7 +34,7 @@ on:
34
34
## Dedupe Rules (No Duplicate Releases)
35
35
36
36
1. Run `npm run build:win` (or use optional `RELEASE_BUILD_ID` so the output folder matches the intended tag).
37
-
2. Resolve `release_id` from the optional input or from `releases/build_*/HyperlinksSpaceAppInstaller.exe`.
37
+
2. Resolve `release_id` from the optional input or from `releases/builder/build_*/HyperlinksSpaceAppInstaller_*.exe`.
38
38
3. Check whether GitHub Release/tag already exists for that `release_id`.
39
39
4. If it exists:
40
40
- Exit successfully (`0`)
@@ -193,7 +193,7 @@ Client behavior:
193
193
194
194
## Acceptance Criteria
195
195
196
-
- A new `app/releases/build_.../` folder produces exactly one GitHub Release.
196
+
- A new `app/releases/builder/build_.../` folder produces exactly one GitHub Release.
197
197
- Re-running workflow for the same `release_id` does not create duplicates.
198
198
- Webhook is called only for newly created releases.
0 commit comments