* chore: rename npm package + bin to @opengsd/gsd-core (functional) - package.json: name @opengsd/get-shit-done-redux → @opengsd/gsd-core, bin key get-shit-done-redux → gsd-core, repository/homepage/bugs URLs - package-lock.json: regenerated (npm install --package-lock-only) - tests/**, scripts/**, bin/**, .github/**, agents/**, commands/**, get-shit-done/bin/**, get-shit-done/workflows/**: applied the 4-rule replacement (scoped npm ref, GitHub repo path, bin/clone invocations) per #505 single-source refactor Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * docs: sweep live references to @opengsd/gsd-core Update all live documentation (README.md + translations, docs/**, CONTRIBUTING.md, VERSIONING.md, SECURITY.md, CONTEXT.md, docs/CANARY.md) to reflect the renamed package and repository. Rules applied: - @opengsd/get-shit-done-redux → @opengsd/gsd-core (scoped npm name) - open-gsd/get-shit-done-redux → open-gsd/gsd-core (GitHub repo) - GSD-redux/get-shit-done-redux → open-gsd/gsd-core (stale badge org) - bare bin/clone refs → gsd-core CHANGELOG.md, docs/adr/**, docs/RELEASE-*.md, docs/research/**, and .changeset/** are preserved byte-identical. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix: add negative lookbehind to slash-command regex in bug-2954 test The extractSlashReferences regex matched /gsd-core inside npm package URLs (@opengsd/gsd-core), producing a false /gsd:core command reference. Adding a negative lookbehind (?<![a-z]) excludes matches preceded by a letter, so only standalone /gsd-<cmd> and /gsd:<cmd> tokens are found. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(#518): add changeset for package rename Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * test(#518): update package-identity expectations to the renamed coordinates The rebase regenerated the seam to @opengsd/gsd-core (bin gsd-core, repo open-gsd/gsd-core). The #498 seam tests assert deriveIdentity against the REAL package.json, so their expected literals must follow the rename. The drift-lint unit test is left as-is — its SEAM is a self-consistent fixture and its stale-literal detection cases would shift if altered; the live-repo scan in it already passes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
52 lines
1.4 KiB
Bash
Executable File
52 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Release monitor for open-gsd/gsd-core
|
|
# Checks every 15 minutes, writes new release info to a signal file
|
|
|
|
REPO="open-gsd/gsd-core"
|
|
SIGNAL_FILE="/tmp/gsd-new-release.json"
|
|
STATE_FILE="/tmp/gsd-monitor-last-tag"
|
|
LOG_FILE="/tmp/gsd-monitor.log"
|
|
|
|
# Initialize with current latest
|
|
echo "v1.25.1" > "$STATE_FILE"
|
|
rm -f "$SIGNAL_FILE"
|
|
|
|
log() {
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
|
}
|
|
|
|
log "Monitor started. Watching $REPO for releases newer than v1.25.1"
|
|
log "Checking every 15 minutes..."
|
|
|
|
while true; do
|
|
sleep 900 # 15 minutes
|
|
|
|
LAST_KNOWN=$(cat "$STATE_FILE" 2>/dev/null)
|
|
|
|
# Get latest release tag
|
|
LATEST=$(gh release list -R "$REPO" --limit 1 2>/dev/null | awk '{print $1}')
|
|
|
|
if [ -z "$LATEST" ]; then
|
|
log "WARNING: Failed to fetch releases (network issue?)"
|
|
continue
|
|
fi
|
|
|
|
if [ "$LATEST" != "$LAST_KNOWN" ]; then
|
|
log "NEW RELEASE DETECTED: $LATEST (was: $LAST_KNOWN)"
|
|
|
|
# Fetch release notes
|
|
RELEASE_BODY=$(gh release view "$LATEST" -R "$REPO" --json tagName,name,body 2>/dev/null)
|
|
|
|
# Write signal file for the agent to pick up
|
|
echo "$RELEASE_BODY" > "$SIGNAL_FILE"
|
|
echo "$LATEST" > "$STATE_FILE"
|
|
|
|
log "Signal file written to $SIGNAL_FILE"
|
|
# Exit so the agent can process it, then restart
|
|
exit 0
|
|
else
|
|
log "No new release. Latest is still $LATEST"
|
|
fi
|
|
done
|