init: initial commit

- ticker / QR ad overlay / break slide graphics (1920×1080) with all
  geometry derived from one shared module (src/shared/obs-geometry.mjs)
- OBS scene-collection generator (scripts/generate-obs-scenes.mjs) and a
  read-only in-dashboard setup verifier, both driven by the same module
- en/sr dashboard i18n selected via bundle config; configschema.json with
  neutral first-run defaults seeded from optional branding config
- install.sh / systemd user service / update.sh for venue deployment
- reference OBS scene collection + profile from a real venue as fixtures
This commit is contained in:
2026-07-15 17:43:05 +02:00
commit 4bb64a8ca3
71 changed files with 18186 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
#!/usr/bin/env bash
# Update the bundle inside a NodeCG install created by install.sh:
# pull, reinstall deps, rebuild, and restart the service if one is running.
#
# Usage: ./update.sh [install-dir] (default: the install this script is in,
# falling back to ~/venue-gfx)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUNDLE=nodecg-venue-gfx
UNIT_NAME=nodecg-venue-gfx.service
# scripts/ lives at <install>/bundles/<bundle>/scripts — walk up.
candidate="$(cd "$SCRIPT_DIR/../../.." && pwd)"
install_dir="${1:-$candidate}"
[[ -f $install_dir/index.js ]] || install_dir="$HOME/venue-gfx"
[[ -f $install_dir/index.js ]] || {
echo "no NodeCG install found (tried $candidate and ~/venue-gfx)" >&2
exit 1
}
bundle_dir="$install_dir/bundles/$BUNDLE"
echo "Updating $bundle_dir"
git -C "$bundle_dir" pull --ff-only
(cd "$bundle_dir" && npm ci --no-audit --no-fund && npm run build)
if systemctl --user is-active --quiet "$UNIT_NAME" 2>/dev/null; then
echo "Restarting $UNIT_NAME"
systemctl --user restart "$UNIT_NAME"
else
echo "Done. Restart NodeCG to load the new extension code."
fi