Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,25 @@ env:
CANVASTTY_REQUIRE_NATIVE_HELPERS: "1"

jobs:
mascot-pipeline:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 10
steps:
- name: Check out repository
uses: actions/checkout@v7
- name: Install mascot pipeline dependencies in a virtual environment
run: |
python3 -m venv .mascot-venv
.mascot-venv/bin/python -m pip install -r assets/mascot-pipeline/requirements.txt
- name: Verify mascot intake, build, review, and delivery contracts
run: .mascot-venv/bin/python -B assets/mascot-pipeline/tests/smoke_pipeline.py
- name: Verify placement against bundled accepted artwork
run: .mascot-venv/bin/python -B assets/mascot-pipeline/tests/placement_regression.py

verify:
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -49,6 +68,17 @@ jobs:
run: npm run typecheck
- name: Build production bundles
run: npm run build
- name: Build Linux installers and verify bundled mascot resources
run: |
npm run package:linux
test -f release/linux-unpacked/resources/mascot-pipeline/SKILL.md
test -f release/linux-unpacked/resources/mascot-pipeline/scripts/prepare_input.py
test -f release/linux-unpacked/resources/mascot-pipeline/templates/plugin/player.js
- name: Install AppImage runtime dependency
run: sudo apt-get update && sudo apt-get install --no-install-recommends -y libfuse2t64
- name: Smoke-test packaged Linux AppImage
timeout-minutes: 2
run: xvfb-run -a npm run smoke:appimage
- name: Verify hidden terminal rendering and state restoration
timeout-minutes: 2
run: xvfb-run -a npm run smoke:terminal-hidden
Expand Down Expand Up @@ -116,6 +146,13 @@ jobs:
env:
SPARKLE_PUBLIC_ED_KEY: ${{ vars.SPARKLE_PUBLIC_ED_KEY || 'iojj3XQJ8ZX9UtstPLpdcspnCb8dlBIb83SIAbQPb1w=' }}
run: npm run package:mac
- name: Verify bundled macOS mascot resources
run: |
app="$(find release -type d -name 'CanvasTTY.app' -print -quit)"
test -n "$app"
test -f "$app/Contents/Resources/mascot-pipeline/SKILL.md"
test -f "$app/Contents/Resources/mascot-pipeline/scripts/prepare_input.py"
test -f "$app/Contents/Resources/mascot-pipeline/templates/plugin/player.js"
- name: Smoke-test packaged macOS CLI resolution
run: npm run smoke:cli-resolution:mac
- name: Verify hidden terminal rendering and state restoration on macOS
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ yarn-debug.log*
yarn-error.log*
.cache/
.electron/
__pycache__/
*.pyc
/.mascot-venv/
settings.json

# Local agent and planning context — never publish
Expand Down
350 changes: 350 additions & 0 deletions assets/mascot-pipeline/SKILL.md

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions assets/mascot-pipeline/examples/character.example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"id": "new-mascot",
"name": "New Mascot",
"description": "An animated mascot for CanvasTTY.",
"frames_dir": "frames",
"plugin_dir": "plugin",
"floor_frame": "idle-01",
"airborne": [],
"scale": 1,
"cols": 6,
"rows_per_sheet": 5,
"pad_bottom": 48,
"margin_x": 40,
"shadow": false,
"clips": {
"idle": [["idle-01", 0.45]]
},
"deck": [],
"required_phases": {},
"labels": {}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading