Release Capsule Local 0.1.2 with custom Windows icon
This commit is contained in:
@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
### Added
|
||||
|
||||
- Capsule Local 0.1.2 packages the custom Windows icon and shows the installed version in the dashboard update notice.
|
||||
- Opt-in Capsule Local automatic-update testing, with a 0.1.0 bootstrap, isolated unsigned test feed, and 0.1.1 update target. Public signing requirements remain enforced.
|
||||
- Capsule Local 0.1.1 displays “you have updated to 0.1.1” on the dashboard for manual installer upgrade testing.
|
||||
|
||||
|
||||
@ -49,6 +49,7 @@ export function createBuildConfig({ release = false, testUpdates = false, bootst
|
||||
},
|
||||
artifactName: release || testUpdates ? 'Capsule-${version}-${arch}-Setup.${ext}' : 'Capsule-Local-${version}-${arch}-Setup.${ext}',
|
||||
win: {
|
||||
icon: 'build/icon.ico',
|
||||
target: [{ target: 'nsis', arch: ['x64'] }],
|
||||
verifyUpdateCodeSignature: !testUpdates,
|
||||
signExecutable: release,
|
||||
|
||||
BIN
build/icon.ico
Normal file
BIN
build/icon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
@ -8,11 +8,11 @@ Run `npm run dist:win`. The installer and blockmap are written to `dist/local/`;
|
||||
|
||||
Local builds are unsigned, named **Capsule Local**, and have application ID `com.thetempusproject.capsule.local`. They store sessions in `%APPDATA%/capsule-local`. Updates are deliberately disabled, and these installers must not be distributed as the public product. Windows may display an unknown-publisher warning.
|
||||
|
||||
Public builds use the permanent ID `com.thetempusproject.capsule`, executable `Capsule.exe`, and `%APPDATA%/capsule/session.json`, preserving the original app's session location. Both installers run per user and preserve app data on uninstall. Do not change the public ID, package name, install scope, or data path after shipping without an explicit migration. The current installer uses Electron's default icon; add an approved `build/icon.ico` before public branding is finalized.
|
||||
Public builds use the permanent ID `com.thetempusproject.capsule`, executable `Capsule.exe`, and `%APPDATA%/capsule/session.json`, preserving the original app's session location. Both installers run per user and preserve app data on uninstall. Do not change the public ID, package name, install scope, or data path after shipping without an explicit migration. Windows builds use `build/icon.ico`, which must contain a 256×256 image. A packaged update replaces the application icon without uninstalling; Windows may temporarily retain a cached shortcut or taskbar icon.
|
||||
|
||||
## Free automatic-update testing
|
||||
|
||||
The original Capsule Local 0.1.0 installer cannot check for updates. Install the update-enabled bootstrap once to start a real 0.1.0 to 0.1.1 test:
|
||||
The original Capsule Local 0.1.0 installer cannot check for updates. Install the update-enabled bootstrap once to test an update to the current version:
|
||||
|
||||
```powershell
|
||||
$env:CAPSULE_TEST_UPDATE_URL = 'https://ttp.joeykimsey.com/capsule/testfeed/'
|
||||
@ -20,7 +20,7 @@ npm run dist:test-bootstrap
|
||||
npm run dist:test
|
||||
```
|
||||
|
||||
`dist/test-bootstrap/Capsule-0.1.0-x64-Setup.exe` installs as Capsule Local and preserves its existing session location. Close the existing app before installing it. `dist/test/Capsule-0.1.1-x64-Setup.exe` is the update target; do not manually install that target when testing the updater. Both builds use the same Local identity. The dashboard message is hidden in the bootstrap and appears after updating to 0.1.1.
|
||||
`dist/test-bootstrap/Capsule-0.1.0-x64-Setup.exe` installs as Capsule Local and preserves its existing session location. Close the existing app before installing it. `dist/test/Capsule-0.1.2-x64-Setup.exe` is the current update target; do not manually install that target when testing the updater. Both builds use the same Local identity. The dashboard message is hidden in the bootstrap and shows the installed version after updating.
|
||||
|
||||
Test builds explicitly omit Authenticode verification; they rely on HTTPS, the publisher-controlled test feed, and metadata checksums. This is for trusted testers, not public signed releases. Windows can warn or block unsigned executables. The app labels this mode “Unsigned test channel.” Public release builds still require signing and verify publisher signatures. Normal `dist:win` builds still have updates disabled.
|
||||
|
||||
@ -30,7 +30,7 @@ The TTP plugin must include `/capsule/testfeed/` and `/capsule/testupload/` supp
|
||||
npm run publish:release -- --test-updates --upload
|
||||
```
|
||||
|
||||
The command publishes only `dist/test`, with metadata last. It never publishes the bootstrap or changes the public feed. Open the installed bootstrap, choose **Check for updates**, wait for **Restart to update**, then verify version 0.1.1, the dashboard message, and the preserved connection. Signed production upgrade acceptance remains a separate test.
|
||||
The command publishes only `dist/test`, with metadata last. It never publishes the bootstrap or changes the public feed. Open the installed bootstrap, choose **Check for updates**, wait for **Restart to update**, then verify version 0.1.2, the custom icon, the dashboard message, and the preserved connection. Signed production upgrade acceptance remains a separate test.
|
||||
|
||||
## 2. Configure the release feed
|
||||
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "capsule",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "capsule",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@electron-toolkit/utils": "^4.0.0",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "capsule",
|
||||
"version": "0.1.1",
|
||||
"version": "0.1.2",
|
||||
"description": "Desktop companion for The Tempus Project sites",
|
||||
"main": "./out/main/index.js",
|
||||
"author": "Joey Kimsey <Joey@thetempusproject.com>",
|
||||
|
||||
@ -17,7 +17,9 @@ function renderUpdate(state) {
|
||||
error: 'Could not update Capsule. You can keep working and try again.'
|
||||
}
|
||||
label.textContent = `Capsule ${state.currentVersion}${state.testing ? ' · Unsigned test channel' : ''} · ${messages[state.status] || messages.error}`
|
||||
document.getElementById('home-update-notice').hidden = state.currentVersion !== '0.1.1'
|
||||
const notice = document.getElementById('home-update-notice')
|
||||
notice.hidden = state.currentVersion === '0.1.0'
|
||||
notice.textContent = `you have updated to ${state.currentVersion}`
|
||||
check.hidden = state.status === 'disabled'
|
||||
check.disabled = ['checking', 'downloading', 'ready', 'installing'].includes(state.status)
|
||||
install.hidden = state.status !== 'ready'
|
||||
|
||||
Reference in New Issue
Block a user