Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
69db93d
feat(playback): verify qsv/vaapi hardware acceleration with ffmpeg pr…
Quick104 Aug 26, 2026
ae708bd
feat(nodepool): persist per-node gpu capability inventory
Quick104 Aug 26, 2026
6c565ed
feat(web): rebuild admin dashboard as customizable widget grid
Quick104 Aug 27, 2026
b6aa86b
feat(nodemetrics): sample per-node system and gpu usage
Quick104 Aug 27, 2026
10e6cbb
feat(nodepool): per-node hw_accel and hw_device overrides
Quick104 Aug 27, 2026
7e01b99
feat(nodepool): prefer the least-loaded physical gpu across nodes
Quick104 Aug 27, 2026
5a3420c
fix(nodeconfig): fall back to node name for override row lookup
Quick104 Aug 27, 2026
f449eff
fix(nodemetrics): prefer lxcfs-scoped /host/proc files when mounted
Quick104 Aug 27, 2026
9e846c0
feat(nodes): operational QoL — re-probe, scratch guard, drift surfaci…
Quick104 Aug 27, 2026
189d050
fix(web): hide acceleration fields on proxy nodes, clarify auto-detec…
Quick104 Aug 27, 2026
cca2f45
fix(nodes): close review findings on detection, re-probe, and drift
Quick104 Aug 27, 2026
755c624
feat(admin): dashboard insight widgets, metrics sampler, and server-s…
Quick104 Aug 27, 2026
f4b099d
fix(nodes): keep paths off unauthenticated health, bound disk probing
Quick104 Aug 27, 2026
cfd444c
fix(nodes): order the probe race on a signal, gate GPU work later
Quick104 Aug 27, 2026
0765cea
test(proxy): script ffmpeg for the capability tests
Quick104 Aug 27, 2026
745f0d8
fix(nodes): close the remaining re-probe and probe-budget gaps
Quick104 Aug 27, 2026
ac3cc23
fix(nodepool): fence capability writes and match GPUs by stable identity
Quick104 Aug 27, 2026
41222fa
fix(nodes): stop policy edits interrupting streams; tighten GPU and m…
Quick104 Aug 27, 2026
fc99adc
fix(nodes): probe the configured NVENC device, tighten GPU identity a…
Quick104 Aug 27, 2026
0d97461
style(web): wrap the device placeholder ternary to satisfy prettier
Quick104 Aug 27, 2026
6463c7d
fix(nodes): accept 204 from the reload route, correct docs and test s…
Quick104 Aug 27, 2026
4423d7e
fix(nodepool): fence pool health and capability writes by the checked…
Quick104 Aug 27, 2026
095fb37
fix(nodes): drop stale capability caches on policy edits, stop guessi…
Quick104 Aug 27, 2026
8463622
fix(app): keep library mounts reported when the path query fails
Quick104 Aug 27, 2026
f757dfd
fix(api): report an unconfirmed node reload after a policy edit
Quick104 Aug 27, 2026
940abea
fix(nodepool): stop a skipped backend counting as capability drift
Quick104 Aug 27, 2026
b3c4179
style(app): drop a redundant nil check staticcheck flagged
Quick104 Aug 27, 2026
d5783f4
fix(nodes): require regained hardware to clear drift; reserve the aut…
Quick104 Aug 27, 2026
0273ed7
fix(nodepool): clear drift only when the hardware it recorded comes back
Quick104 Aug 27, 2026
f3c5c4f
test(app): make the cache-isolation test exercise the cache
Quick104 Aug 27, 2026
157c1f3
fix(nodes): stop node identity and policy changes reading as hardware…
Quick104 Aug 27, 2026
e4dc924
fix(nodes): re-query GPU identities on re-probe, omit unmeasured engi…
Quick104 Aug 27, 2026
02291dd
fix(nodemetrics): report known GPU workloads without a measurement so…
Quick104 Aug 27, 2026
75f4762
fix(nodemetrics): keep per-field availability for GPU readings
Quick104 Aug 27, 2026
8e422ee
fix(playback,nodemetrics): verify every allocatable GPU, measure writ…
Quick104 Aug 27, 2026
b134fa2
fix(nodes): key CUDA-only GPUs, survive request cancellation
Quick104 Aug 27, 2026
f7b6d30
fix(nodes): store the node's own capability bytes, not a re-marshal
Quick104 Aug 27, 2026
379776f
fix(nodes): close the teardown and repoint gaps in the GPU gate
Quick104 Aug 27, 2026
3a9462c
fix(nodes): count detached probes, catch deadlines inside one
Quick104 Aug 27, 2026
19e41d8
fix(playback): claim the encoder before dispatching a probe
Quick104 Aug 27, 2026
d7e4176
fix(nodemetrics): mark stale disk gauges, half-open the nvidia breaker
Quick104 Aug 27, 2026
7f2259f
fix(nodemetrics): read this process's cgroup; size capability fetches
Quick104 Aug 27, 2026
b63e88c
test(jellycompat): wait on terminal state, not on the scrobble receipt
Quick104 Aug 27, 2026
4909bba
fix(nodes): size fetches per node, honor inherited cgroup limits
Quick104 Aug 27, 2026
9477021
Merge branch 'main' into t3code/gpu-node-detection-monitoring
Quick104 Aug 27, 2026
8c70b6d
fix(nodes): count tone-map probes, derive the fetch backstop
Quick104 Aug 27, 2026
ee9cb3b
fix(nodes): six review findings across metrics, gating, and capabilit…
Quick104 Aug 28, 2026
213e318
fix(playback): re-probe a node whose capabilities changed mid-lookup
Quick104 Aug 28, 2026
c38adf6
fix(nodes): pin the node row, bind CPU and memory to the same cgroup
Quick104 Aug 28, 2026
5cb5509
Merge branch 'main' into t3code/gpu-node-detection-monitoring
Quick104 Aug 28, 2026
c5aef36
fix(nodes): agree on one cgroup for CPU, supersede VideoToolbox probes
Quick104 Aug 28, 2026
2e41c79
fix(playback): publish macOS hardware, count its probes
Quick104 Aug 28, 2026
6d4dda3
fix(nodes): poll the nodes page, prefer the outer cgroup on a memory tie
Quick104 Aug 28, 2026
935016e
fix(playback): keep a node's learned probe budget across invalidation
Quick104 Aug 28, 2026
7397af2
test(playback): set the fresh manifest's mtime instead of inheriting it
Quick104 Aug 28, 2026
4b71f13
fix(nodes): count probes at claim time, cap the CPU budget at the host
Quick104 Aug 28, 2026
e4d4db1
fix(playback): scale the hardware walk, cap the probed device set
Quick104 Aug 28, 2026
9af0c2f
fix(playback): compose the capability budget, judge drift by its base…
Quick104 Aug 28, 2026
800662d
fix(nodes): cap the hardware walk, show the whole drift, flag unconfi…
Quick104 Aug 28, 2026
f495b0c
test(web): narrow the GPU presentation union in the staleness tests
Quick104 Aug 28, 2026
cbb5ad3
fix(nodes): serve the advertised hash, answer before nudging the worker
Quick104 Aug 28, 2026
29b0da3
fix(playback): make the budget ceiling host-independent, advertise it…
Quick104 Aug 28, 2026
dcf62fa
fix(nodes): serialize config reloads and publish manual checks to the…
Quick104 Aug 28, 2026
02605fa
fix(nodemetrics): only correct CPU where something actually caps it
Quick104 Aug 28, 2026
e11eaff
fix(nodes): price cold node probes from the node, not the cluster
Quick104 Aug 28, 2026
1cacc21
fix(playback): floor a learned probe budget at the node's current policy
Quick104 Aug 28, 2026
28a37f2
fix(nodes): reprice re-probes, and see NVIDIA-only cards disappear
Quick104 Aug 28, 2026
568027d
fix(nodes): re-read GPU identities per walk, and the scratch dir per …
Quick104 Aug 28, 2026
3a2270e
fix(playback): bind the device ceiling to selection, and inherit devi…
Quick104 Aug 28, 2026
9bc72bb
fix(nodes): reserve the node's own refresh bound on a re-probe
Quick104 Aug 28, 2026
cf26171
fix(nodes): keep Auto node-owned, stop hydration erasing an override,…
Quick104 Aug 28, 2026
fe14be7
fix(nodepool): address nodes through one URL joiner
Quick104 Aug 28, 2026
4f7b31d
fix(nodemetrics): a cap the size of the machine is not a cap
Quick104 Aug 28, 2026
be19300
fix(nodes): invalidate every cached view of a node, under one key
Quick104 Aug 28, 2026
7e49661
test(scanner): write fake tools under the fork lock
Quick104 Aug 28, 2026
0d3b54d
fix(downloads): fence the capability cache against an overtaken fetch
Quick104 Aug 28, 2026
e40ae93
fix(downloads): fence failed capability fetches too, and correct the …
Quick104 Aug 28, 2026
58cba08
ci(macos): build native arm64 server artifact
Quick104 Aug 28, 2026
26a0abb
feat(admin): reorganize admin settings into 9 tabs with Essential/Adv…
Quick104 Aug 21, 2026
f499b28
fix(admin): rename S3 Image Caching and require a public bucket to en…
Quick104 Aug 21, 2026
b126ae1
feat(admin): redesign settings around a status overview and row-based…
Quick104 Aug 21, 2026
9793ffd
refactor(admin): strip decoration and prose from the settings redesign
Quick104 Aug 21, 2026
95ebb69
fix(admin): match overview card titles to the rail and show one resta…
Quick104 Aug 22, 2026
7d3be3b
style(admin): give each settings group its own inset panel so groups …
Quick104 Aug 22, 2026
524d0b9
fix(admin): improve settings overview hierarchy
Quick104 Aug 26, 2026
d76aa0c
fix(admin): expose settings groups on overview
Quick104 Aug 26, 2026
d4de19d
fix(admin): remove settings state previews
Quick104 Aug 26, 2026
feb4bb0
fix(admin): make settings categories standalone pages
Quick104 Aug 26, 2026
a7a386a
feat(admin): list watch-provider plugins on the renamed Watch Provide…
Quick104 Aug 26, 2026
e756db5
feat(admin): replace the secret Replace flow with a masked always-edi…
Quick104 Aug 26, 2026
d722de2
feat(admin): reuse the user settings shell and panels across admin se…
Quick104 Aug 26, 2026
803276d
feat(admin): address settings UX review feedback
Quick104 Aug 27, 2026
1b0a461
fix(admin): address PR review findings and lint on the settings redesign
Quick104 Aug 27, 2026
47be5e4
fix(admin): register tile drafts with the unsaved guard and gate plug…
Quick104 Aug 27, 2026
81376e6
fix(admin): address second-round review findings on the redesign
Quick104 Aug 27, 2026
6cf6e5e
fix(admin): scope restart warnings per key, single rate-limit snapsho…
Quick104 Aug 27, 2026
b2d044d
fix(admin): register remaining credential drafts with the guard; hone…
Quick104 Aug 27, 2026
6ecd792
fix(admin): count a saved false as configured plugin state
Quick104 Aug 27, 2026
580e11b
fix(admin): validate bucket clears on the single-key route; document …
Quick104 Aug 27, 2026
7532542
fix(admin): include derived jellyfin restart in the reasons list; ded…
Quick104 Aug 27, 2026
8cdf4a6
feat(admin): opt-in clear for stored secrets; email readiness require…
Quick104 Aug 27, 2026
457d6f6
fix(web): coalesce progress ticks into one trailing home refresh
Quick104 Aug 27, 2026
c068949
fix(web): reconcile settings changes after rebase
Quick104 Aug 28, 2026
b4e998d
fix(jellycompat): support macOS operation locks
Quick104 Aug 28, 2026
69d6a89
fix(admin): register the push relay URL draft with the unsaved guard
Quick104 Aug 28, 2026
8b12db1
Merge pull request #708 from Silo-Server/t3code/simplify-admin-settin…
Quick104 Aug 28, 2026
ea7f595
ci(macos): isolate builds from local workspaces
Quick104 Aug 28, 2026
2616699
Merge branch 'main' into t3code/gpu-node-detection-monitoring
Quick104 Aug 28, 2026
c480dc8
feat(web): lay the Nodes page out as node units with load meters
Quick104 Aug 28, 2026
81147a5
fix(deploy): pass the lxcfs CPU and load views to Silo and its nodes
Quick104 Aug 28, 2026
fe7aaf1
Merge pull request #808 from Silo-Server/codex/macos-server-ci
Quick104 Aug 28, 2026
c9807c5
fix(web): cap the season episode grid at four scrolling rows
Quick104 Aug 28, 2026
2cffa9d
fix(web): repair transition durations dropped as invalid CSS
Quick104 Aug 28, 2026
8c2fd2f
fix(web): restore the home hero ken burns animation
Quick104 Aug 28, 2026
2b9eb91
feat(web): filter the Nodes page by co-location group
Quick104 Aug 28, 2026
3d12537
perf(web): scope detail-page render cost during viewport changes
Quick104 Aug 28, 2026
363a850
test(httpstream): stabilize rolling deadline pacing
Quick104 Aug 28, 2026
fe7cb57
Merge pull request #809 from Silo-Server/codex/macos-httpstream-deadl…
Quick104 Aug 28, 2026
07b05ee
Merge pull request #810 from Silo-Server/fix/tailwind-v4-duration-tokens
Quick104 Aug 28, 2026
8d8f9ae
Merge pull request #811 from Silo-Server/fix/season-episode-grid-rows
Quick104 Aug 28, 2026
87eada8
Merge remote-tracking branch 'origin/main' into perf/scope-detail-ren…
Quick104 Aug 28, 2026
5086966
fix(web): re-measure the grid when a resize crosses a breakpoint
Quick104 Aug 28, 2026
3eb93b6
Merge pull request #812 from Silo-Server/perf/scope-detail-render-cost
Quick104 Aug 28, 2026
c17a4e8
refactor(web): use the shared action bars on series and season pages
Quick104 Aug 28, 2026
ce1215c
fix(web): show the activatable cursor on interactive surfaces
Quick104 Aug 28, 2026
7b5272f
perf(web): decode card artwork off the main thread
Quick104 Aug 28, 2026
e916db1
fix(web): scroll to top before paint on route change
Quick104 Aug 28, 2026
776e47d
Merge pull request #813 from Silo-Server/chore/remaining-805-fixes
Quick104 Aug 28, 2026
126dd66
feat(admin): plain-language artwork storage and honest restart claims
Quick104 Aug 28, 2026
9a60c4c
fix(jellycompat): scale capability deadlines with the pooled nodes
Quick104 Aug 28, 2026
194dbae
docs(wiki): describe the Nodes page as node units, not table columns
Quick104 Aug 28, 2026
34bfd9a
fix(playback): price proxy probes and inventory fetches per node
Quick104 Aug 28, 2026
00a37da
fix(nodepool): normalize proxy URLs where they enter the pool
Quick104 Aug 28, 2026
75a067d
feat(nodes): split client-facing public_url from the backend url
Quick104 Aug 28, 2026
374ee12
feat(web): directional page motion for nested detail navigation
Quick104 Aug 28, 2026
dd146a6
fix(nodemetrics): baseline network deltas per interface
Quick104 Aug 28, 2026
9b1be27
Merge pull request #794 from Silo-Server/t3code/gpu-node-detection-mo…
Quick104 Aug 28, 2026
aec0e81
Merge origin/main into t3code/redesign-admin-dashboard
Quick104 Aug 28, 2026
a2bd337
chore(web): apply dashboard formatting
Quick104 Aug 28, 2026
21d853a
fix(web): derive navigation direction from the committed location
Quick104 Aug 28, 2026
13b818f
Merge pull request #814 from Silo-Server/feat/native-view-transition-…
Quick104 Aug 28, 2026
2f83066
fix(proxy): remove hardware capability probing
Quick104 Aug 28, 2026
ffb3e1e
Merge pull request #815 from Silo-Server/t3code/remove-proxy-transcod…
Quick104 Aug 28, 2026
873bec6
fix(admin): address dashboard PR review feedback
Quick104 Aug 28, 2026
3783778
fix(admin): address second-round dashboard review feedback
Quick104 Aug 28, 2026
4abd4a2
fix(search): rebuild stale Meilisearch indexes automatically
Quick104 Aug 28, 2026
e4f2b7d
fix(admin): bound the status settings lookup like the health probes
Quick104 Aug 28, 2026
fd431bc
fix(search): detect moved Meilisearch targets
Quick104 Aug 28, 2026
1dfdd22
feat(admin): retune default dashboard toward live activity
Quick104 Aug 28, 2026
8d839dc
Merge pull request #816 from Silo-Server/codex/search-index-auto-rebuild
Quick104 Aug 28, 2026
0f4fd90
fix(admin): address third-round dashboard review feedback
Quick104 Aug 28, 2026
ea9926a
perf(metadata): batch artwork reconcile bulk resets
Aug 28, 2026
967073b
test(metadata): cover batched artwork resets and deadlock retry
Quick104 Aug 28, 2026
17a2732
perf(metadata): scale image-cache concurrency with host CPUs
Quick104 Aug 28, 2026
22a8407
feat(admin): dashboard polish, watch providers, downloads visibility
Quick104 Aug 28, 2026
60a356c
feat(admin): nodes widget adapts its layout to its width
Quick104 Aug 28, 2026
d813875
fix(playback): normalize transcoded AAC timestamps
blurbery Aug 28, 2026
92c945c
test(playback): cover AAC seek anchors
blurbery Aug 28, 2026
f5967ff
test(playback): follow current AAC recipe version
blurbery Aug 28, 2026
8c66579
test(playback): refresh protocol v3 fixtures
blurbery Aug 28, 2026
fb342ce
test(metadata): restore pre-existing rows around bulk-reset DB tests
Quick104 Aug 28, 2026
c8182b3
feat(admin): drag widgets from the Add-widget sheet into place
Quick104 Aug 28, 2026
f8f558e
fix(admin): address fifth-round dashboard review feedback
Quick104 Aug 28, 2026
e696630
fix(metadata): bound image-cache jobs and size workers by memory
Quick104 Aug 28, 2026
18ba297
fix(metadata): keep committed batch counts when a bulk reset fails
Quick104 Aug 28, 2026
705f827
feat(admin): auto-scroll the page while dragging widgets
Quick104 Aug 28, 2026
c94dae0
fix(metadata): honor inherited cgroup limits; budget encode overshoot
Quick104 Aug 28, 2026
f936d1c
docs(playback): clarify AAC timestamp compensation
blurbery Aug 28, 2026
d577183
perf(metadata): advance a keyset cursor through bulk reset batches
Quick104 Aug 28, 2026
b3a92ec
fix(metadata): take the tightest of all detected memory bounds
Quick104 Aug 28, 2026
9a5e3a3
Merge pull request #820 from blurbery/fix/firefox-aac-transcode-crackle
Quick104 Aug 28, 2026
9d77e46
fix(admin): address sixth-round dashboard review feedback
Quick104 Aug 28, 2026
26ca448
perf(images): downscale via libvips before decoding for thumbhash
Quick104 Aug 28, 2026
717c358
fix(admin): address seventh-round dashboard review feedback
Quick104 Aug 28, 2026
c014349
test(metadata): preserve image-ladder state around bulk-reset fixtures
Quick104 Aug 28, 2026
f95411b
docs(metadata): state that the worker floor overrides the memory budget
Quick104 Aug 28, 2026
8a854c0
fix(metadata): rename ambiguous image_type variable in ladder reopen …
Quick104 Aug 28, 2026
e5a66d5
Merge pull request #817 from Silo-Server/perf/scale-image-cache-concu…
Quick104 Aug 29, 2026
8b07d29
test(metadata): restore artwork-GC candidates around bulk-reset fixtures
Quick104 Aug 29, 2026
ce2ab17
Merge pull request #818 from Silo-Server/perf/batch-artwork-reconcile…
Quick104 Aug 29, 2026
f5e2c33
Merge pull request #822 from Silo-Server/fix/reopen-image-ladder-ambi…
Quick104 Aug 29, 2026
0e3c6bb
Merge pull request #795 from Silo-Server/t3code/redesign-admin-dashboard
Quick104 Aug 29, 2026
df4da27
Merge pull request #821 from Silo-Server/perf/thumbhash-downscale-bef…
Quick104 Aug 29, 2026
379efc7
ci(macos): temporarily disable automatic builds
Quick104 Aug 29, 2026
c57ae0e
feat(admin): show build number in health strip
Quick104 Aug 29, 2026
f8556dd
Merge pull request #823 from Silo-Server/t3code/show-build-number
Quick104 Aug 29, 2026
5ee4673
chore: sync upstream main through f8556dd0
blurbery Aug 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
128 changes: 128 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
name: Native macOS Server

on:
# Temporarily manual-only while GitHub's macOS runners cannot reliably
# create the VideoToolbox hardware compression session exercised below.
workflow_dispatch:

concurrency:
group: macos-${{ github.ref }}
cancel-in-progress: true

env:
GOPROXY: https://proxy.golang.org,direct
GOPRIVATE: github.com/Silo-Server/*
GONOSUMDB: github.com/Silo-Server/*
GOWORK: off

permissions:
contents: read

jobs:
build:
name: Build Darwin arm64
runs-on: macos-15
timeout-minutes: 45

steps:
- name: Checkout
uses: actions/checkout@v5
with:
persist-credentials: false

- name: Install native dependencies
run: brew install vips ffmpeg

- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
package_json_file: web/package.json

- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: 22
cache: pnpm
cache-dependency-path: web/pnpm-lock.yaml

- name: Install frontend dependencies
working-directory: web
run: pnpm install --frozen-lockfile

- name: Build frontend assets
working-directory: web
run: pnpm run build

- name: Set up Go
uses: actions/setup-go@v6
with:
go-version-file: go.mod
cache: true
cache-dependency-path: go.sum

- name: Validate SDK resolves from the module graph
run: |
sdk_module_json="$(mktemp)"
go list -m -json github.com/Silo-Server/silo-plugin-sdk > "$sdk_module_json"
if grep -q '"Replace":' "$sdk_module_json"; then
echo "silo-plugin-sdk resolved through a module replacement."
cat "$sdk_module_json"
exit 1
fi
if grep -q '"Main": true' "$sdk_module_json"; then
echo "silo-plugin-sdk resolved from the local workspace instead of go.mod."
cat "$sdk_module_json"
exit 1
fi

- name: Test Go on macOS
run: go test ./...

- name: Build native server archive
id: build
env:
BUILDINFO_PKG: github.com/Silo-Server/silo-server/internal/buildinfo
run: |
built_at="$(date -u +'%Y-%m-%dT%H:%M:%SZ')"
archive="silo-darwin-arm64-${GITHUB_SHA::8}.tar.gz"
package_dir="dist/silo-darwin-arm64"
mkdir -p "$package_dir"

go build -trimpath \
-ldflags "-X ${BUILDINFO_PKG}.revisionOverride=${GITHUB_SHA} -X ${BUILDINFO_PKG}.dirtyOverride=false -X ${BUILDINFO_PKG}.builtAtOverride=${built_at}" \
-o "$package_dir/silo" ./cmd/silo/

cp LICENSE "$package_dir/LICENSE"
go version -m "$package_dir/silo" > "$package_dir/build-info.txt"
otool -L "$package_dir/silo" > "$package_dir/linked-libraries.txt"
tar -czf "dist/$archive" -C dist silo-darwin-arm64
(cd dist && shasum -a 256 "$archive" > "$archive.sha256")
echo "archive=$archive" >> "$GITHUB_OUTPUT"

- name: Verify native runtime and VideoToolbox
env:
ARCHIVE: ${{ steps.build.outputs.archive }}
run: |
file dist/silo-darwin-arm64/silo | grep -q 'Mach-O 64-bit executable arm64'
dist/silo-darwin-arm64/silo -h >/dev/null
grep -aFq "$GITHUB_SHA" dist/silo-darwin-arm64/silo

ffmpeg -hide_banner -hwaccels > "$RUNNER_TEMP/ffmpeg-hwaccels.txt" 2>/dev/null
grep -Fxq 'videotoolbox' "$RUNNER_TEMP/ffmpeg-hwaccels.txt"
ffmpeg -hide_banner -encoders > "$RUNNER_TEMP/ffmpeg-encoders.txt" 2>/dev/null
grep -q 'h264_videotoolbox' "$RUNNER_TEMP/ffmpeg-encoders.txt"
ffmpeg -hide_banner -loglevel error \
-f lavfi -i color=c=black:s=128x72:r=24 \
-frames:v 12 -c:v h264_videotoolbox -f null -

(cd dist && shasum -a 256 -c "$ARCHIVE.sha256")

- name: Upload native server
uses: actions/upload-artifact@v4
with:
name: silo-darwin-arm64-${{ github.sha }}
path: |
dist/${{ steps.build.outputs.archive }}
dist/${{ steps.build.outputs.archive }}.sha256
if-no-files-found: error
retention-days: 14
Loading
Loading