19 Commits

Author SHA1 Message Date
rcourtman 7f15acfbad Keep diagnostic source builds out of release update flows
Diagnostic versions must keep their exact identity without advertising a published server or agent update target. Reuse the canonical source-build classification and discard cached release offers when runtime identity changes.

Show source-build status and manual image replacement guidance. Verify release and preview controls remain available.

Refs #1913
2026-09-10 17:06:27 +01:00
Richard Courtman b581de89d2 Classify every 0.0.0 sentinel build as a development build
normalizeVersionString assigns 0.0.0-<sanitized> to any build string it
cannot parse as a release version — a branch name, an ad-hoc test or
qualification label, an empty VERSION file — but usageDataVersionChannel
only called a build "dev" when it carried git build metadata or its
prerelease was exactly "dev" or "dev.*". Everything else fell through to
"prerelease" with version_is_development clear, so the flag did not mean
what its name says: on 2026-09-03 the receiver held 317 installs of
0.0.0-test-version and 18 of 0.0.0-dev-pro, all flagged as ordinary
prereleases, while only 0.0.0-dev was marked development. A receiver-side
read that filtered on that flag would have excluded none of them.

Pulse never publishes a 0.0.0 release, so the sentinel itself is the
signal and it now decides the channel ahead of the prerelease-text rules.
The existing test named "source branch falls back to prerelease dev
identity" asserted wantDevelopment false, encoding the defect; it is
corrected and joined by the test-version, dev-pro, qual, and empty-string
cases that reached the receiver.

A development build is also no longer reported as a published release at
the same time. The sentinel 0.0.0-rc.1 satisfies
IsPublishedReleaseAssetVersion on prerelease spelling alone, which would
have set both flags for a build that no install can be running. The guard
lives in DescribeUsageDataVersion rather than in
IsPublishedReleaseAssetVersion, which agent update logic in
internal/api/unified_agent.go also relies on and which this change should
not disturb.

Historical rows keep the values they were sent with; only builds
reporting after this lands carry the corrected identity.
2026-09-04 08:00:52 +01:00
rcourtman f47ac1f020 Define beta and RC release maturity 2026-08-31 11:42:03 +01:00
rcourtman 58e67c7b19 Canonicalize usage-data telemetry reporting 2026-04-14 11:05:10 +01:00
rcourtman 283f2e25ae Restore v6 development version semantics 2026-04-04 23:02:58 +01:00
rcourtman 778a2577b6 feat: Pulse v6 release 2026-03-18 16:06:30 +00:00
rcourtman 0989e9c671 perf: Pre-compile regexes in updates/version package
Move regex compilation from function bodies to package-level variables
to avoid recompilation when parsing version strings.

Affected regexes:
- semverRe: Matches semantic version format (X.Y.Z-prerelease+build)
- rcNumRe: Extracts RC number from prerelease strings

These are called multiple times during version comparison and update checks.
2025-12-02 15:14:15 +00:00
rcourtman 6a1a88217f Add release dry run workflow and API update integration test 2025-11-12 21:02:52 +00:00
rcourtman 68ce8e7520 feat: finalize swarm service monitoring (#598) 2025-10-26 09:35:49 +00:00
rcourtman bc479643e4 release: prepare v4.25.0 2025-10-22 10:46:18 +00:00
rcourtman 66b97333f7 fix: skip update check for source builds and show appropriate UI message
Source builds use commit hashes (main-c147fa1) not semantic versions
(v4.23.0), so update checks would always fail or show misleading
"Update Available" banners.

Changes:
- Add IsSourceBuild flag to VersionInfo struct
- Detect source builds via BUILD_FROM_SOURCE marker file
- Skip update check for source builds (like Docker)
- Update frontend to show "Built from source" message
- Disable manual update check button for source builds
- Return "source" deployment type for source builds

Backend:
- internal/updates/version.go: Add isSourceBuildEnvironment() detection
- internal/updates/manager.go: Skip check with appropriate message
- internal/api/types.go: Add isSourceBuild to API response
- internal/api/router.go: Include isSourceBuild in version endpoint

Frontend:
- src/api/updates.ts: Add isSourceBuild to VersionInfo type
- src/stores/updates.ts: Don't poll for updates on source builds
- src/components/Settings/Settings.tsx: Show "Built from source" message

Fixes the confusing "Update Available" banner for users who explicitly
chose --source to get latest main branch code.

Co-authored-by: Codex AI
2025-10-21 10:08:00 +00:00
rcourtman 1d580c658d chore: bump version to v4.24.0 2025-10-15 22:26:24 +00:00
rcourtman 91fecacfef feat: add docker agent command handling 2025-10-15 19:27:19 +00:00
rcourtman 6b206f773a chore: update fallback version to 4.24.0-rc.3 2025-10-13 17:50:44 +00:00
rcourtman c57f2bad0a fix: setup script UX and auth verification for v4.24.0-rc.2
- Changed menu from [I/r/c] to numbered options [1/2/3]
- Added RequireAuth to temperature verification endpoint
- Bumped version to 4.24.0-rc.2
2025-10-13 16:37:43 +00:00
rcourtman 3fd37796c5 fix: Prioritize VERSION file over git describe for release builds #64 2025-10-13 15:52:10 +00:00
rcourtman 07bd996150 chore: bump version to v4.24.0-rc.1 2025-10-13 15:46:53 +00:00
rcourtman a328dbd8e6 chore: bump version to v4.23.0 2025-10-12 16:35:48 +00:00
rcourtman f46ff1792b Fix settings security tab navigation 2025-10-11 23:29:47 +00:00