Basic versioning: VERSION file + self-check that opens an update-available issue on drift
@mrjf đang làm issue này rồi.
Từ ngày 23/4/2026.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Summary
Autoloop has no versioning today — no tags, no releases, no VERSION file. install.md clones main directly with no SHA pin, and gh aw add-wizard isn't a viable install path because the Autoloop install needs custom steps beyond what the wizard handles.
Result: installed copies of Autoloop drift silently from upstream. Users have no way to know they're behind, no way to see what changed, and no prompt to upgrade.
Propose a minimal versioning scheme: a plain version string in this repo, and a small self-check the installed Autoloop workflow runs on every execution. When the installed version doesn't match upstream, the workflow opens an issue in the consuming repo with a link to the diff. That's it — no CI tooling, no releases ceremony, no dependency on gh aw add.
Design
1. Plain VERSION file at the repo root
0.1.0
Bump it on any change to workflows/autoloop.md, workflows/sync-branches.md, workflows/shared/**, or .github/ISSUE_TEMPLATE/autoloop-program.md. Semver-ish, but don't over-engineer — even a monotonic integer would work. A human maintainer updates it when they merge a change they'd want consumers to notice. No automation needed.
Ship an adjacent CHANGELOG.md that lists what changed per version. Doesn't need to be exhaustive — one line per version is fine. The point is "if you're on 0.1.3 and upstream is 0.2.0, here's what happened between."
2. install.md records the installed version
Update install.md to copy VERSION into the consuming repo alongside the workflow files:
cp /tmp/autoloop/VERSION .github/autoloop-version
(Path is .github/autoloop-version rather than e.g. .autoloop/VERSION because .github/ is the natural home for meta-files about workflows in this repo, and keeping it out of .autoloop/ avoids conflating it with program definitions.)
3. Version check in the autoloop workflow pre-step
Add a step near the top of the autoloop workflow that:
- Reads the locally installed version from
.github/autoloop-version. - Fetches upstream's current
VERSIONfromhttps://raw.githubusercontent.com/githubnext/autoloop/main/VERSION. - If they differ, checks whether an open "update available" issue already exists (dedupe by a stable title or label).
- If no such issue exists, opens one with a link to the diff and the changelog.
Concrete implementation sketch:
- name: Check for Autoloop upstream updates
env:
GITHUB_TOKEN: ${{ github.token }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: |
set -euo pipefail
LOCAL_VERSION_FILE=".github/autoloop-version"
UPSTREAM_URL="https://raw.githubusercontent.com/githubnext/autoloop/main/VERSION"
if [ ! -f "$LOCAL_VERSION_FILE" ]; then
echo "No local autoloop-version file; skipping drift check."
exit 0
fi
LOCAL=$(tr -d '[:space:]' < "$LOCAL_VERSION_FILE")
UPSTREAM=$(curl -fsSL "$UPSTREAM_URL" 2>/dev/null | tr -d '[:space:]' || echo "")
if [ -z "$UPSTREAM" ] || [ "$LOCAL" = "$UPSTREAM" ]; then
echo "Autoloop up to date (local=$LOCAL, upstream=$UPSTREAM)."
exit 0
fi
echo "Autoloop is behind: local=$LOCAL, upstream=$UPSTREAM"
# Dedupe: don't open a new issue if one is already open for this drift.
EXISTING=$(gh issue list \
--repo "$GITHUB_REPOSITORY" \
--label "autoloop-update-available" \
--state open \
--search "in:title \"$UPSTREAM\"" \
--json number \
--jq '.[0].number // empty')
if [ -n "$EXISTING" ]; then
echo "Existing update-available issue #$EXISTING already open for $UPSTREAM."
exit 0
fi
gh issue create \
--repo "$GITHUB_REPOSITORY" \
--title "[Autoloop] Update available: $LOCAL → $UPSTREAM" \
--label "autoloop-update-available,automation,autoloop" \
--body "$(cat <<EOF
Your installed Autoloop is **$LOCAL**. Upstream is **$UPSTREAM**.
- **Changelog**: https://github.com/githubnext/autoloop/blob/main/CHANGELOG.md
- **Diff since your version**: https://github.com/githubnext/autoloop/compare/v$LOCAL...main
To update, re-run the install steps in \`install.md\` from upstream, review the diff against your local \`.github/workflows/autoloop.md\` (you likely have local modifications), and bump \`.github/autoloop-version\` to \`$UPSTREAM\`.
Close this issue when the update is complete — it will not re-open until the next version is published.
EOF
)"
4. Dedup / rate limit
- One open issue per distinct
$UPSTREAMversion. If upstream bumps again before a user closes the previous issue, the search would match the prior issue (different version in title), so a second issue opens for the newer version — that's fine. - The user closes the issue when they complete the update and bump their local version file. Next scheduled run sees "local == upstream" and does nothing.
- Small amount of wasted API calls per run (one raw.githubusercontent.com fetch, one issue search) — trivial.
5. Graceful degradation
- No local version file → skip the check (first-run case for old installs that don't have the file).
- Upstream unreachable / network failure → skip without opening an issue; the next run will retry.
- Upstream version file missing → skip (means upstream hasn't shipped versioning yet, shouldn't alarm users).
What this is not
- Not automatic updates. Agents opening a PR to update the workflow is a bigger design decision (local modifications matter) and belongs in a separate issue.
- Not semver with compatibility guarantees. A monotonic version + changelog is enough for "notice drift."
- Not a replacement for
gh aw add's SHA pinning. This is lighter-weight and works for installs that need custom steps (which the current Autoloop install does — it creates directories, writes templates, etc.).
Bootstrapping
To ship this, first add a VERSION file (0.1.0) and CHANGELOG.md to this repo, add the check step to workflows/autoloop.md, update install.md to copy VERSION, and add a small section to install.md explaining the .github/autoloop-version file. Existing users will naturally pick it up on their next re-install or when they manually copy in the new check step.
Acceptance
VERSIONfile exists at repo root;CHANGELOG.mdhas at least one entry.install.mdcopiesVERSIONinto.github/autoloop-versionin the consuming repo.workflows/autoloop.mdhas a pre-step that compares local vs upstream and opens a single issue per detected drift.- Duplicate-suppression works (running the workflow twice on stale version doesn't open two issues).
- The check fails gracefully when the network is unavailable.
- Ngôn ngữ chính
- Python
- Star
- 74
- Fork
- 6
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của githubnext/autoloop
-
Autoloop template should exclude language-specific dev files from protected-files by defaultĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
githubnext/autoloop#71 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
githubnext/autoloop#54 ·
-
TESTĐang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 15/100
githubnext/autoloop#76 · 1 bình luận ·
-
ReleasesĐang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
githubnext/autoloop#72 · 1 bình luận ·
-
Autoloop PR/issue should report cumulative performance improvementCó thể đã có người làm @mrjf đã nhận 144 ngày trước. Đang mở
githubnext/autoloop#69 · 1 reaction · 2 người được giao ·
Tất cả issue của githubnext/autoloop
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
NousResearch/hermes-plugin-claude-subscription-directsdk#94 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Claiming namespace `reactogenic`Đang mởnamespace operations
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
EclipseFdn/open-vsx.org#13702 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
modelscope/ms-swift#10287 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
modelscope/FunASR#3757 ·
Maintainer thường phản hồi trong vòng 1 ngày