Skip to content
Open
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
36 changes: 18 additions & 18 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Local configuration. Copy to .env (gitignored) and adjust for your machine.
# `just` loads .env automatically; docker compose reads it too.
# Defaults live in the Justfile — uncomment only what you need to override.

# Host ports (defaults: backend 8080, frontend 5173).
# RECALL_BACKEND_PORT=8080
# RECALL_FRONTEND_PORT=5173

# Memory limits — single source of truth. docker compose enforces them and the
# guide (www) renders them via Typst data-loading, so the docs cannot drift from
# the config. Keep these uncommented.
RECALL_PHP_MEMORY_LIMIT=96M
RECALL_CONTAINER_MEMORY_LIMIT=256M

# NixOS only: downloaded Playwright browsers do not run. Point this at the
# nixpkgs-provided browsers so `just e2e` skips the download. Get the path with:
# nix-build '<nixpkgs>' -A playwright-driver.browsers --no-out-link
# PLAYWRIGHT_BROWSERS_PATH=/nix/store/...-playwright-browsers
# Local configuration. Copy to .env (gitignored) and adjust for your machine.
# `just` loads .env automatically; docker compose reads it too.
# Defaults live in the Justfile — uncomment only what you need to override.
# Host ports (defaults: backend 8080, frontend 5173).
# RECALL_BACKEND_PORT=8080
# RECALL_FRONTEND_PORT=5173
# Memory limits — single source of truth. docker compose enforces them and the
# guide (www) renders them via Typst data-loading, so the docs cannot drift from
# the config. Keep these uncommented.
RECALL_PHP_MEMORY_LIMIT=96M
RECALL_CONTAINER_MEMORY_LIMIT=256M
# NixOS only: downloaded Playwright browsers do not run. Point this at the
# nixpkgs-provided browsers so `just e2e` skips the download. Get the path with:
# nix-build '<nixpkgs>' -A playwright-driver.browsers --no-out-link
# PLAYWRIGHT_BROWSERS_PATH=/nix/store/...-playwright-browsers
2 changes: 1 addition & 1 deletion .envrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
eval "$(devbox generate direnv --print-envrc)"
eval "$(devbox generate direnv --print-envrc)"
74 changes: 37 additions & 37 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,37 +1,37 @@
name: verify

# Студенческий гейт. Гоняется на рабочих ветках и PR — там, где идёт решение.
# master не трогаем: туда едет полный preflight (preflight.yml).
on:
push:
branches-ignore: [master, main]
pull_request:

jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'

- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('e2e/package-lock.json') }}

- name: Install Playwright browser + system deps
run: |
cd e2e
npm ci
npx playwright install --with-deps chromium

- name: just verify
run: |
eval "$(devbox shellenv)"
just verify
name: verify
# Студенческий гейт. Гоняется на рабочих ветках и PR — там, где идёт решение.
# master не трогаем: туда едет полный preflight (preflight.yml).
on:
push:
branches-ignore: [master, main]
pull_request:
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('e2e/package-lock.json') }}
- name: Install Playwright browser + system deps
run: |
cd e2e
npm ci
npx playwright install --with-deps chromium
- name: just verify
run: |
eval "$(devbox shellenv)"
just verify
62 changes: 31 additions & 31 deletions .github/workflows/docs-sync.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
name: docs-sync

# Maintainer-side gate: fail if a source artifact changed without the guide
# pages that describe it being re-confirmed (`outdatty update`). NOT part of
# `just verify` — candidates fork and change sources, and must not be gated by
# our guide's lockfile. The repository guard keeps this a no-op in forks.
#
# PR-time drift detection only; master is covered by the full preflight gate
# (preflight.yml), which runs `outdatty check` too.

on:
pull_request:
workflow_dispatch:

jobs:
outdatty:
if: github.repository == 'maximaster/practice'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'

- name: outdatty check
run: |
eval "$(devbox shellenv)"
outdatty check
name: docs-sync
# Maintainer-side gate: fail if a source artifact changed without the guide
# pages that describe it being re-confirmed (`outdatty update`). NOT part of
# `just verify` — candidates fork and change sources, and must not be gated by
# our guide's lockfile. The repository guard keeps this a no-op in forks.
#
# PR-time drift detection only; master is covered by the full preflight gate
# (preflight.yml), which runs `outdatty check` too.
on:
pull_request:
workflow_dispatch:
jobs:
outdatty:
if: github.repository == 'maximaster/practice'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'
- name: outdatty check
run: |
eval "$(devbox shellenv)"
outdatty check
102 changes: 51 additions & 51 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -1,51 +1,51 @@
name: pages

on:
push:
branches: [master, main]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'

- name: Build guide (Typst + Tola)
run: |
eval "$(devbox shellenv)"
just guide
# Tola nests output under the url prefix; that subdir is the site root
# for the project page. Drop the auto CNAME (not a custom domain).
rm -f www/public/practice/CNAME

- uses: actions/configure-pages@v5

- uses: actions/upload-pages-artifact@v3
with:
path: www/public/practice

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
name: pages
on:
push:
branches: [master, main]
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'
- name: Build guide (Typst + Tola)
run: |
eval "$(devbox shellenv)"
just guide
# Tola nests output under the url prefix; that subdir is the site root
# for the project page. Drop the auto CNAME (not a custom domain).
rm -f www/public/practice/CNAME
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: www/public/practice
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
84 changes: 42 additions & 42 deletions .github/workflows/preflight.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
name: preflight

# Гейт веб-студии: на master проверяем, ЗДОРОВ ли шаблон для выдачи студентам —
# гигиена + lint + юнит + гайд + outdatty + acceptance/e2e, сверенные с базлайном
# известных «красных» (`just preflight`). Решённость как таковую не гейтим (это
# `just verify` на ветках/PR, ci.yml; шаблон намеренно её не проходит). Guard
# держит это no-op в форках.

on:
push:
branches: [master, main]
workflow_dispatch:

jobs:
preflight:
if: github.repository == 'maximaster/practice'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'

- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('e2e/package-lock.json') }}

- name: Install Playwright browser + system deps
run: |
cd e2e
npm ci
npx playwright install --with-deps chromium

- name: just preflight
run: |
eval "$(devbox shellenv)"
just preflight
name: preflight
# Гейт веб-студии: на master проверяем, ЗДОРОВ ли шаблон для выдачи студентам —
# гигиена + lint + юнит + гайд + outdatty + acceptance/e2e, сверенные с базлайном
# известных «красных» (`just preflight`). Решённость как таковую не гейтим (это
# `just verify` на ветках/PR, ci.yml; шаблон намеренно её не проходит). Guard
# держит это no-op в форках.
on:
push:
branches: [master, main]
workflow_dispatch:
jobs:
preflight:
if: github.repository == 'maximaster/practice'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install devbox
uses: jetify-com/devbox-install-action@v0.13.0
with:
devbox-version: '0.16.0'
enable-cache: 'true'
- name: Cache Playwright browsers
uses: actions/cache@v4
with:
path: ~/.cache/ms-playwright
key: playwright-${{ runner.os }}-${{ hashFiles('e2e/package-lock.json') }}
- name: Install Playwright browser + system deps
run: |
cd e2e
npm ci
npx playwright install --with-deps chromium
- name: just preflight
run: |
eval "$(devbox shellenv)"
just preflight
Loading