feat(integration-worker): worker release channelTag stable/beta/prerelease

Persist and gossip channelTag on worker release hints.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-22 06:19:22 -04:00
co-authored by Cursor
parent b245ce2aa4
commit 8d84b23b84
2 changed files with 19 additions and 3 deletions
+6 -2
View File
@@ -11,7 +11,9 @@ const {
isVersionGreater,
parseVersionParts,
buildVersionDiff,
validateWorkerReleaseVersion
validateWorkerReleaseVersion,
WORKER_CHANNEL_TAGS,
normalizeWorkerChannelTag
} = require('./release-hint')
const { buildWorkerInstallPlan } = require('./install-plan')
@@ -25,5 +27,7 @@ module.exports = {
isVersionGreater,
parseVersionParts,
buildVersionDiff,
validateWorkerReleaseVersion
validateWorkerReleaseVersion,
WORKER_CHANNEL_TAGS,
normalizeWorkerChannelTag
}
+13 -1
View File
@@ -5,6 +5,12 @@ const { JsonStore } = require('pearcord-db/store-json')
const { now } = require('pearcord-shared')
const HINT_COLLECTION = '@pearcord/worker-release-hint'
const WORKER_CHANNEL_TAGS = ['stable', 'beta', 'prerelease']
function normalizeWorkerChannelTag (tag) {
const t = String(tag || 'stable').toLowerCase()
return WORKER_CHANNEL_TAGS.includes(t) ? t : 'stable'
}
function parseVersionParts (version) {
return String(version || '0')
@@ -123,18 +129,20 @@ class WorkerReleaseHintStore {
workerVersion: String(row.workerVersion),
pearUri: row.pearUri || null,
releaseNotes: row.releaseNotes || null,
channelTag: normalizeWorkerChannelTag(row.channelTag),
publishedAt: row.publishedAt || 0,
publishedBy: row.publishedBy || null
}
}
async setHint ({ guildId, workerVersion, pearUri, publishedBy, releaseNotes }) {
async setHint ({ guildId, workerVersion, pearUri, publishedBy, releaseNotes, channelTag }) {
if (!guildId || !workerVersion) return null
const row = {
guildId,
workerVersion: String(workerVersion).slice(0, 32),
pearUri: pearUri ? String(pearUri).slice(0, 200) : null,
releaseNotes: releaseNotes ? String(releaseNotes).slice(0, 480) : null,
channelTag: normalizeWorkerChannelTag(channelTag),
publishedBy: publishedBy || null,
publishedAt: now()
}
@@ -154,6 +162,7 @@ class WorkerReleaseHintStore {
releaseNotes: payload.releaseNotes
? String(payload.releaseNotes).slice(0, 480)
: null,
channelTag: normalizeWorkerChannelTag(payload.channelTag),
publishedBy: payload.publishedBy || null,
publishedAt: remoteAt || now()
})
@@ -180,6 +189,7 @@ class WorkerReleaseHintStore {
remoteVersion: remote.workerVersion,
pearUri: remote.pearUri,
releaseNotes: remote.releaseNotes || null,
channelTag: remote.channelTag || 'stable',
publishedAt: remote.publishedAt,
publishedBy: remote.publishedBy,
updateAvailable,
@@ -192,6 +202,8 @@ class WorkerReleaseHintStore {
module.exports = {
WorkerReleaseHintStore,
HINT_COLLECTION,
WORKER_CHANNEL_TAGS,
normalizeWorkerChannelTag,
isVersionGreater,
parseVersionParts,
buildVersionDiff,