Skip to content

Commit e1fe758

Browse files
Merge pull request #53 from off-grid-ai/chore/lfs-bandwidth-diet
fix(release): unblock nightly publish (feed) + LFS bandwidth diet
2 parents 80d13a9 + bb6ab12 commit e1fe758

44 files changed

Lines changed: 25 additions & 143 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/release.yml

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ jobs:
7272
# A nightly is a prerelease of the NEXT patch, so it sorts ABOVE the last
7373
# stable, not below it: 0.0.35 stable -> 0.0.36-beta.<run> (NOT
7474
# 0.0.35-beta.<run>, which semver ranks BELOW 0.0.35 and would read as a
75-
# downgrade). electron-builder turns the -beta suffix into the `beta`
76-
# channel (beta-mac.yml) automatically. No commit.
75+
# downgrade). The -beta suffix marks the GitHub release as a prerelease;
76+
# the update feed itself is always latest-mac.yml (no publish.channel set).
77+
# No commit.
7778
BASE=$(node -p "require('./package.json').version")
7879
BASE=${BASE%%-*}
7980
NEXT=$(node -e "const p='$BASE'.split('.').map(Number); console.log(p[0]+'.'+p[1]+'.'+(p[2]+1))")
@@ -94,12 +95,17 @@ jobs:
9495
with:
9596
ref: ${{ needs.version.outputs.sha }} # the exact bumped commit
9697
fetch-depth: 0
97-
lfs:
98-
true # resources/bin/* (llama-server, sd-cli, whisper, ffmpeg, dylibs)
99-
# are Git LFS — without this CI bundles pointer stubs and every
100-
# runtime spawn fails with ENOEXEC.
101-
- name: Pull LFS binaries
102-
run: git lfs pull
98+
lfs: false # Smudge nothing on checkout; pull only the shipped, non-rebuilt
99+
# binaries below. Fetching everything (~200 MB) blew the org's monthly LFS
100+
# bandwidth budget and failed the release checkout ("exceeded its LFS budget").
101+
- name: Pull shipped LFS binaries (skip the ones rebuilt below)
102+
# resources/bin/{ffmpeg,text-extractor,sd/**,LICENSE} are prebuilt and shipped
103+
# as-is, so they MUST be real files — a pointer stub spawns as ENOEXEC at runtime.
104+
# llama/ + whisper/ are excluded because build-llama.sh / build-whisper-cli.sh
105+
# recompile them from source in place later in this job, so pulling the committed
106+
# copies is wasted bandwidth. The packaged-helper probe (ffmpeg/sd/whisper/llama)
107+
# fails the release if any shipped binary is missing, so a bad exclude can't ship.
108+
run: git lfs pull --exclude="resources/bin/llama,resources/bin/whisper"
103109
# Rebuild the chat engine from source with a PINNED macOS deployment target.
104110
# The committed/LFS llama-server is minos 26 (built on a macOS-26 toolchain),
105111
# so it only launches on macOS 26 — every macOS 13/14/15 user saw "Chat model
@@ -173,7 +179,8 @@ jobs:
173179
# Stamp the resolved version into package.json so electron-builder picks the
174180
# right channel. For stable this matches the committed bump (no-op); for beta
175181
# it applies the -beta.<run> version (no commit needed — this checkout is
176-
# throwaway). The -beta suffix is what makes electron-builder write beta-mac.yml.
182+
# throwaway). The -beta suffix marks the release prerelease; the feed stays
183+
# latest-mac.yml (electron-builder emits no beta-mac.yml without publish.channel).
177184
- name: Stamp build version
178185
run: npm version "${{ needs.version.outputs.version }}" --no-git-tag-version --allow-same-version
179186
- name: Build (typecheck + bundle)
@@ -223,11 +230,15 @@ jobs:
223230
CHANNEL: ${{ needs.version.outputs.channel }}
224231
TARGET_SHA: ${{ needs.version.outputs.sha }}
225232
run: |
226-
if [ "$CHANNEL" = stable ]; then
227-
FEED=latest-mac.yml
228-
else
229-
FEED=beta-mac.yml
230-
fi
233+
# electron-builder writes ONE update feed, latest-mac.yml, for BOTH channels
234+
# (we set no publish.channel, so it never emits beta-mac.yml). Beta vs stable
235+
# is expressed by the release's prerelease flag + electron-updater's
236+
# allowPrerelease on the client, NOT by a distinct feed filename — every
237+
# shipped beta used latest-mac.yml (e.g. 0.0.39-beta.66), and the pro-mac.yml
238+
# migration below copies from latest-mac.yml on the beta path too. A prior
239+
# refactor assumed a beta-mac.yml that is never generated, so `test -f` aborted
240+
# every nightly publish under `set -e` with no output.
241+
FEED=latest-mac.yml
231242
test -f "dist/$FEED"
232243
node scripts/prepare-mac-release-assets.mjs \
233244
"dist/$FEED" dist dist/release-assets "$VERSION"

resources/bin/libggml-base.0.9.5.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-base.0.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-base.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-blas.0.9.5.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-blas.0.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-blas.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-cpu.0.9.5.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-cpu.0.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

resources/bin/libggml-cpu.dylib

Lines changed: 0 additions & 3 deletions
This file was deleted.

0 commit comments

Comments
 (0)