chore(deps): bump @rn-primitives/tabs from 1.2.0 to 1.4.0 #262
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: QuanuX CI (Scaffold) | |
| "on": | |
| push: | |
| branches: [main] | |
| paths: | |
| - ".github/**" | |
| - "meta/manifests/**" | |
| - "meta/docs/**" | |
| - "server/**" | |
| - "meta/schemas/**" | |
| - "server/server/cli/**" | |
| - "client/**" | |
| - "environment.yml" | |
| - "requirements*.txt" | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - ".github/**" | |
| - "meta/manifests/**" | |
| - "meta/docs/**" | |
| - "server/**" | |
| - "meta/schemas/**" | |
| - "server/server/cli/**" | |
| - "client/**" | |
| - "environment.yml" | |
| - "requirements*.txt" | |
| permissions: | |
| contents: read | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" | |
| jobs: | |
| sanity: | |
| name: Sanity & Structure | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Show repo tree (top 2 levels) | |
| run: | | |
| find . -maxdepth 2 -type d -print | sort | |
| - name: Ensure required top-level folders exist | |
| run: | | |
| need=(docs manifest server schemas) | |
| missing=0 | |
| for d in "${need[@]}"; do | |
| if [ ! -d "$d" ]; then | |
| echo "::warning title=Missing folder::$d not found (ok during early scaffolding)" | |
| missing=1 | |
| fi | |
| done | |
| exit 0 # never fail scaffolding | |
| validate_yaml_json: | |
| name: Lint YAML & JSON | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install yamllint & jq | |
| run: | | |
| sudo apt-get update -y | |
| sudo apt-get install -y yamllint jq | |
| - name: Validate YAML | |
| run: | | |
| set -e | |
| shopt -s nullglob | |
| files=( $(git ls-files '*.yml' '*.yaml') ) | |
| if [ ${#files[@]} -eq 0 ]; then | |
| echo "No YAML files to lint." | |
| exit 0 | |
| fi | |
| yamllint -s "${files[@]}" | |
| - name: Validate JSON syntax | |
| run: | | |
| set -e | |
| shopt -s nullglob | |
| files=( $(git ls-files '*.json') ) | |
| if [ ${#files[@]} -eq 0 ]; then | |
| echo "No JSON files to check." | |
| exit 0 | |
| fi | |
| for f in "${files[@]}"; do | |
| jq empty "$f" | |
| done | |
| schema_authority: | |
| name: Schema Authority (generate + diff) | |
| runs-on: ubuntu-latest | |
| needs: [validate_yaml_json] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v3 | |
| with: | |
| version: 9 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'pnpm' | |
| - name: Install generator deps | |
| run: | | |
| pnpm install | |
| python -m pip install --upgrade pip | |
| pip install -r requirements.txt | |
| - name: Regenerate contracts from JSON Schemas | |
| run: | | |
| python tools/generate_models.py | |
| - name: Fail if generated code is out of date | |
| run: | | |
| git status --porcelain | |
| git diff --exit-code | |
| markdown_lint: | |
| name: Lint Markdown | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install markdownlint-cli | |
| run: npm i -g markdownlint-cli@0.41.0 | |
| - name: Run markdownlint (non-blocking) | |
| run: | | |
| set +e | |
| md_files=$(git ls-files '*.md' '*.MD' || true) | |
| if [ -z "$md_files" ]; then | |
| echo "No markdown files found." | |
| exit 0 | |
| fi | |
| markdownlint $md_files || echo "::warning title=Markdown issues detected::Review markdownlint output above" | |
| manifest_summary: | |
| name: Manifest Summary | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Print manifest summary | |
| run: | | |
| echo "== QuanuX Manifests ==" | |
| for f in manifest/*.yaml; do | |
| [ -e "$f" ] || continue | |
| echo "::group::$f" | |
| sed -n '1,200p' "$f" | |
| echo "::endgroup::" | |
| done | |
| python_pkg_smoke: | |
| name: Python packaging smoke-check | |
| runs-on: ubuntu-latest | |
| needs: [schema_authority] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Editable install CLI if present | |
| run: | | |
| if [ -f "cli/pyproject.toml" ]; then | |
| python3 -m pip install --upgrade pip | |
| pip install -e ./cli || echo "::warning title=CLI install failed::This is fine until wiring" | |
| quanuxctl --help || true | |
| else | |
| echo "No CLI package yet." | |
| fi |