mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
chore: update verify tasks, add ci jobs
This commit is contained in:
@@ -16,7 +16,38 @@ concurrency:
|
|||||||
cancel-in-progress: true
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
verify:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: ^11.20.0
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
cache: pnpm
|
||||||
|
cache-dependency-path: |
|
||||||
|
pnpm-lock.yaml
|
||||||
|
web/pnpm-lock.yaml
|
||||||
|
|
||||||
|
- name: Install root dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Install web dependencies
|
||||||
|
working-directory: web
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Run quality gate
|
||||||
|
run: pnpm verify
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
needs: verify
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
@@ -61,4 +92,4 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
id: deployment
|
id: deployment
|
||||||
uses: actions/deploy-pages@v4
|
uses: actions/deploy-pages@v4
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
name: Quality
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: quality-${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
verify:
|
||||||
|
name: Fast quality gate
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: ^11.20.0
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
cache: pnpm
|
||||||
|
cache-dependency-path: |
|
||||||
|
pnpm-lock.yaml
|
||||||
|
web/pnpm-lock.yaml
|
||||||
|
|
||||||
|
- name: Install root dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Install web dependencies
|
||||||
|
working-directory: web
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Run quality gate
|
||||||
|
run: pnpm verify
|
||||||
|
|
||||||
|
e2e:
|
||||||
|
name: E2E (non-blocking baseline)
|
||||||
|
needs: verify
|
||||||
|
continue-on-error: true
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup pnpm
|
||||||
|
uses: pnpm/action-setup@v4
|
||||||
|
with:
|
||||||
|
version: ^11.20.0
|
||||||
|
|
||||||
|
- name: Setup Node
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 24
|
||||||
|
cache: pnpm
|
||||||
|
cache-dependency-path: web/pnpm-lock.yaml
|
||||||
|
|
||||||
|
- name: Install web dependencies
|
||||||
|
working-directory: web
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Install Chromium
|
||||||
|
working-directory: web
|
||||||
|
run: pnpm exec playwright install --with-deps chromium
|
||||||
|
|
||||||
|
- name: Run E2E
|
||||||
|
working-directory: web
|
||||||
|
run: pnpm test:e2e
|
||||||
@@ -16,6 +16,8 @@
|
|||||||
- Форматирование: `pnpm format` в корне (оба прогона) или
|
- Форматирование: `pnpm format` в корне (оба прогона) или
|
||||||
`pnpm --dir web format` (только код web/). Проверка: `pnpm check:docs`
|
`pnpm --dir web format` (только код web/). Проверка: `pnpm check:docs`
|
||||||
(docs) + `pnpm --dir web exec prettier --check .` (код).
|
(docs) + `pnpm --dir web exec prettier --check .` (код).
|
||||||
|
- Полный быстрый gate: `pnpm verify`; подробная матрица команд и CI —
|
||||||
|
`docs/quality-gates.md`.
|
||||||
- Линтинг: `pnpm --dir web lint` (ESLint). Полный прогон дизайн-проверок:
|
- Линтинг: `pnpm --dir web lint` (ESLint). Полный прогон дизайн-проверок:
|
||||||
`pnpm --dir web lint:all` (ESLint + stylelint + токен-аудит). Каждый шаг
|
`pnpm --dir web lint:all` (ESLint + stylelint + токен-аудит). Каждый шаг
|
||||||
выполняется, даже если предыдущий упал. `app_v1.css` и legacy-ветка исключены
|
выполняется, даже если предыдущий упал. `app_v1.css` и legacy-ветка исключены
|
||||||
@@ -59,8 +61,8 @@
|
|||||||
- Здесь держать только обязательные инварианты, команды и ссылки на подробные
|
- Здесь держать только обязательные инварианты, команды и ссылки на подробные
|
||||||
документы; не превращать `AGENTS.md` в полный справочник.
|
документы; не превращать `AGENTS.md` в полный справочник.
|
||||||
- Индекс активных документов: `docs/README.md`; подробный workflow:
|
- Индекс активных документов: `docs/README.md`; подробный workflow:
|
||||||
`docs/agent-workflow.md`; текущий план качества:
|
`docs/agent-workflow.md`; quality gates: `docs/quality-gates.md`; текущий
|
||||||
`docs/plan-codebase-quality.md`.
|
план: `docs/plan-codebase-quality.md`.
|
||||||
- Новые подробные правила, процедуры и таблицы хранить в `docs/`, а детали
|
- Новые подробные правила, процедуры и таблицы хранить в `docs/`, а детали
|
||||||
конкретных lint-правил — в `web/eslint-plugins/README.md`.
|
конкретных lint-правил — в `web/eslint-plugins/README.md`.
|
||||||
- Завершённые или устаревшие документы переносить в `docs/archive/`, указывать
|
- Завершённые или устаревшие документы переносить в `docs/archive/`, указывать
|
||||||
|
|||||||
@@ -1,22 +1,32 @@
|
|||||||
# easy-png-tools
|
# easy-png-tools
|
||||||
|
|
||||||
Browser-based PNG utility toolkit — no server, no data upload, everything runs locally.
|
Browser-based PNG utility toolkit — no server, no data upload, everything runs
|
||||||
|
locally.
|
||||||
|
|
||||||
Inspired by online services like onlinepngtools.com, but fully offline-capable and open source.
|
Inspired by online services like onlinepngtools.com, but fully offline-capable
|
||||||
|
and open source.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- **Pixel-level image processing** — format conversion, transparency/alpha channel, color transformations, geometry, filters/convolutions, morphology, quantization & palettes, image generation, text/watermarks, analysis & checks
|
- **Pixel-level image processing** — format conversion, transparency/alpha
|
||||||
- **Pipeline system (workspace)** — load image → chain multiple tool steps → sequential application → download result; pipelines saved to localStorage, exportable as JSON
|
channel, color transformations, geometry, filters/convolutions, morphology,
|
||||||
- **Web Worker execution** — heavy operations run off the main thread with automatic fallback to direct calls
|
quantization & palettes, image generation, text/watermarks, analysis & checks
|
||||||
|
- **Pipeline system (workspace)** — load image → chain multiple tool steps →
|
||||||
|
sequential application → download result; pipelines saved to localStorage,
|
||||||
|
exportable as JSON
|
||||||
|
- **Web Worker execution** — heavy operations run off the main thread with
|
||||||
|
automatic fallback to direct calls
|
||||||
- **i18n** — full Russian and English localization with search matching
|
- **i18n** — full Russian and English localization with search matching
|
||||||
- **Dark/Light themes** — persisted to localStorage
|
- **Dark/Light themes** — persisted to localStorage
|
||||||
- **Pure TypeScript core** — `lib/core/` operates on `ImageData`/`Uint8ClampedArray` with no DOM dependency
|
- **Pure TypeScript core** — `lib/core/` operates on
|
||||||
- **~30+ tools** across categories: transparency, color, geometry, filters, morphology, palettes, generation, text, analysis
|
`ImageData`/`Uint8ClampedArray` with no DOM dependency
|
||||||
|
- **~30+ tools** across categories: transparency, color, geometry, filters,
|
||||||
|
morphology, palettes, generation, text, analysis
|
||||||
|
|
||||||
## Tech Stack
|
## Tech Stack
|
||||||
|
|
||||||
- **SvelteKit** (Svelte 5, runes mode) with static adapter — pure static export, no server
|
- **SvelteKit** (Svelte 5, runes mode) with static adapter — pure static export,
|
||||||
|
no server
|
||||||
- **Vite** + **TypeScript** (strict)
|
- **Vite** + **TypeScript** (strict)
|
||||||
- **Vitest** for unit tests
|
- **Vitest** for unit tests
|
||||||
- **ESLint** + **Prettier**
|
- **ESLint** + **Prettier**
|
||||||
@@ -46,14 +56,15 @@ Static output is written to `web/build/`.
|
|||||||
|
|
||||||
### Other Commands
|
### Other Commands
|
||||||
|
|
||||||
| Command | Description |
|
| Command | Description |
|
||||||
| ------------------------ | ------------------------- |
|
| ------------------------ | ------------------------------ |
|
||||||
| `pnpm --dir web test` | Run unit tests (Vitest) |
|
| `pnpm verify` | Run the full fast quality gate |
|
||||||
| `pnpm --dir web check` | Type-check (svelte-check) |
|
| `pnpm --dir web test` | Run unit tests (Vitest) |
|
||||||
| `pnpm --dir web lint` | Lint (ESLint) |
|
| `pnpm --dir web check` | Type-check (svelte-check) |
|
||||||
| `pnpm --dir web format` | Format code (Prettier) |
|
| `pnpm --dir web lint` | Lint (ESLint) |
|
||||||
| `pnpm format:docs` | Format docs (Prettier) |
|
| `pnpm --dir web format` | Format code (Prettier) |
|
||||||
| `pnpm --dir web preview` | Preview production build |
|
| `pnpm format:docs` | Format docs (Prettier) |
|
||||||
|
| `pnpm --dir web preview` | Preview production build |
|
||||||
|
|
||||||
## Project Structure
|
## Project Structure
|
||||||
|
|
||||||
@@ -75,13 +86,18 @@ easy-png-tools/
|
|||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
The project is built around a **tool registry** (`registry.ts`) — each tool is a self-contained entry with `{id, title, description, category, params, run}`. Pages, forms, and pipelines are generated from this registry.
|
The project is built around a **tool registry** (`registry.ts`) — each tool is a
|
||||||
|
self-contained entry with `{id, title, description, category, params, run}`.
|
||||||
|
Pages, forms, and pipelines are generated from this registry.
|
||||||
|
|
||||||
Core image processing lives in `lib/core/` and operates directly on `ImageData` objects with no browser API dependencies, making it portable to other environments (WASM, CLI) in the future.
|
Core image processing lives in `lib/core/` and operates directly on `ImageData`
|
||||||
|
objects with no browser API dependencies, making it portable to other
|
||||||
|
environments (WASM, CLI) in the future.
|
||||||
|
|
||||||
## Roadmap
|
## Roadmap
|
||||||
|
|
||||||
See [docs/roadmap.md](docs/roadmap.md) for the full development plan. Current phases:
|
See [docs/roadmap.md](docs/roadmap.md) for the full development plan. Current
|
||||||
|
phases:
|
||||||
|
|
||||||
1. **Phase 1** — TypeScript core + web UI (in progress)
|
1. **Phase 1** — TypeScript core + web UI (in progress)
|
||||||
2. **Phase 2** — Rust/WASM core for performance-critical operations
|
2. **Phase 2** — Rust/WASM core for performance-critical operations
|
||||||
|
|||||||
+2
-1
@@ -20,6 +20,7 @@
|
|||||||
| `AGENTS.md` | Краткий обязательный контракт для агента | active |
|
| `AGENTS.md` | Краткий обязательный контракт для агента | active |
|
||||||
| `docs/plan-codebase-quality.md` | План quality gates, тестов и lint-правил | draft |
|
| `docs/plan-codebase-quality.md` | План quality gates, тестов и lint-правил | draft |
|
||||||
| `docs/agent-workflow.md` | Подробный порядок исследования, изменения и проверки | active |
|
| `docs/agent-workflow.md` | Подробный порядок исследования, изменения и проверки | active |
|
||||||
|
| `docs/quality-gates.md` | Команды проверки, warnings и CI | active |
|
||||||
| `docs/backlog.md` | Продуктовые, UX- и инфраструктурные задачи | active |
|
| `docs/backlog.md` | Продуктовые, UX- и инфраструктурные задачи | active |
|
||||||
| `docs/roadmap.md` | Общие направления развития | active |
|
| `docs/roadmap.md` | Общие направления развития | active |
|
||||||
| `docs/plan-redesign.md` | Новый дизайн и границы `/v1` | active |
|
| `docs/plan-redesign.md` | Новый дизайн и границы `/v1` | active |
|
||||||
@@ -39,7 +40,7 @@
|
|||||||
|
|
||||||
- Поведение, которое агент обязан соблюдать сразу, — кратко в `AGENTS.md`.
|
- Поведение, которое агент обязан соблюдать сразу, — кратко в `AGENTS.md`.
|
||||||
- Точные команды, параметры скриптов и критерии качества — в
|
- Точные команды, параметры скриптов и критерии качества — в
|
||||||
`docs/quality-gates.md` после Q1 или в README соответствующей подсистемы.
|
`docs/quality-gates.md` или в README соответствующей подсистемы.
|
||||||
- Архитектура, потоки данных и границы модулей — в отдельном architecture-плане
|
- Архитектура, потоки данных и границы модулей — в отдельном architecture-плане
|
||||||
или документе, не дублируя существующие планы.
|
или документе, не дублируя существующие планы.
|
||||||
- Реализация lint-правил, fixtures и технические детали ESLint — в
|
- Реализация lint-правил, fixtures и технические детали ESLint — в
|
||||||
|
|||||||
@@ -32,8 +32,8 @@
|
|||||||
|
|
||||||
## 3. Проверки
|
## 3. Проверки
|
||||||
|
|
||||||
Команды и их область применения перечислены в `AGENTS.md`; после Q1 их точная
|
Команды и их область применения перечислены в `AGENTS.md`; точная матрица и
|
||||||
матрица будет поддерживаться в `docs/quality-gates.md`.
|
текущая политика warnings/errors поддерживаются в `docs/quality-gates.md`.
|
||||||
|
|
||||||
| Изменение | Минимальная проверка |
|
| Изменение | Минимальная проверка |
|
||||||
| ------------------------------------------------------- | ------------------------------------------------------ |
|
| ------------------------------------------------------- | ------------------------------------------------------ |
|
||||||
@@ -72,7 +72,7 @@ E2E запускается отдельно от быстрых проверок
|
|||||||
|
|
||||||
- обязательное поведение агента — `AGENTS.md`;
|
- обязательное поведение агента — `AGENTS.md`;
|
||||||
- индекс и карта документов — `docs/README.md`;
|
- индекс и карта документов — `docs/README.md`;
|
||||||
- качество и точные команды — `docs/quality-gates.md` после Q1;
|
- качество и точные команды — `docs/quality-gates.md`;
|
||||||
- тестовая архитектура — `docs/testing-strategy.md` после Q3;
|
- тестовая архитектура — `docs/testing-strategy.md` после Q3;
|
||||||
- lint implementation — `web/eslint-plugins/README.md`;
|
- lint implementation — `web/eslint-plugins/README.md`;
|
||||||
- продуктовые решения — backlog и активные планы.
|
- продуктовые решения — backlog и активные планы.
|
||||||
|
|||||||
+6
-7
@@ -215,14 +215,13 @@
|
|||||||
12. **HARD-серия** (glitch, barcode, signature-extract, handwritten-digital). Из
|
12. **HARD-серия** (glitch, barcode, signature-extract, handwritten-digital). Из
|
||||||
`archive/plan-gap-waves.md`.
|
`archive/plan-gap-waves.md`.
|
||||||
|
|
||||||
13. **Контраст текста на акцентных кнопках — пересмотреть после готовности
|
13. **Контраст текста на акцентных кнопках — частично закрыт**. Для dark-темы
|
||||||
сайта**. Текст `--color-background` на фоне `--color-main`/`--color-accent`
|
`--color-main`/`--color-accent` подняты до tone 56, чтобы пройти текущий
|
||||||
(тон 48) даёт контраст ~4.1–4.3 (light) — ниже AA 4.5 для обычного текста;
|
порог `palette.test.ts` 4.0; targeted-тест проходит. Light-тема сохраняет
|
||||||
`palette.test.ts` держит для кнопок порог 4.0 (AA large-text) осознанно, как
|
контраст ~4.1–4.3, что ниже AA 4.5 для обычного текста, поэтому после
|
||||||
компромисс текущего дизайна. После полного завершения редизайна пересмотреть
|
завершения редизайна нужно повторно поднять тона и вернуть порог 4.5. Также
|
||||||
тона (например поднять tone кнопок до ~55) и вернуть порог 4.5. Также
|
|
||||||
проверить `--color-danger` (dark, тон 55): текст на нём 4.93 — ок, но
|
проверить `--color-danger` (dark, тон 55): текст на нём 4.93 — ок, но
|
||||||
light-danger тон 48 = 4.25 на границе.
|
light-danger tone 48 = 4.25 на границе.
|
||||||
|
|
||||||
14. **Отображение маски для инструментов (runMask/preview-mask)** — придумать и
|
14. **Отображение маски для инструментов (runMask/preview-mask)** — придумать и
|
||||||
реализовать процесс показа маски результата. **Контекст:** в старом
|
реализовать процесс показа маски результата. **Контекст:** в старом
|
||||||
|
|||||||
@@ -74,7 +74,8 @@
|
|||||||
|
|
||||||
### Q1. Единый quality gate и CI
|
### Q1. Единый quality gate и CI
|
||||||
|
|
||||||
**Оценка:** S–M. **Зависимости:** Q0.
|
**Статус:** готов к ревью. **Проверено:** `pnpm verify` проходит; E2E оставлен
|
||||||
|
отдельным non-blocking job. **Оценка:** S–M. **Зависимости:** Q0.
|
||||||
|
|
||||||
Добавить read-only `verify`-команду, которая запускает:
|
Добавить read-only `verify`-команду, которая запускает:
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
# Quality gates
|
||||||
|
|
||||||
|
> Статус: **active**. Каноническое описание быстрых проверок репозитория.
|
||||||
|
> Краткие обязательные команды остаются в `AGENTS.md`.
|
||||||
|
|
||||||
|
## Каноническая команда
|
||||||
|
|
||||||
|
Запускать из корня репозитория:
|
||||||
|
|
||||||
|
```text
|
||||||
|
pnpm verify
|
||||||
|
```
|
||||||
|
|
||||||
|
`verify` выполняет последовательно:
|
||||||
|
|
||||||
|
1. `pnpm --dir web check` — SvelteKit sync и `svelte-check`.
|
||||||
|
2. `pnpm --dir web test` — полный Vitest-набор.
|
||||||
|
3. `pnpm --dir web test:rules` — отдельный быстрый прогон тестов ESLint-правил.
|
||||||
|
4. `pnpm --dir web lint:all` — ESLint, Stylelint и token audit.
|
||||||
|
5. `pnpm --dir web exec prettier --check .` — форматирование кода `web/`.
|
||||||
|
6. `pnpm check:docs` — форматирование Markdown.
|
||||||
|
7. `pnpm --dir web build` — production build.
|
||||||
|
|
||||||
|
Полный `test` уже включает тесты lint-правил; отдельный `test:rules` в `verify`
|
||||||
|
оставлен как явный быстрый диагностический этап.
|
||||||
|
|
||||||
|
## E2E
|
||||||
|
|
||||||
|
E2E не входит в `verify`, потому что Playwright поднимает build и статический
|
||||||
|
сервер:
|
||||||
|
|
||||||
|
```text
|
||||||
|
pnpm --dir web test:e2e
|
||||||
|
```
|
||||||
|
|
||||||
|
Запускать его обязательно для изменений маршрутов, загрузки файла, результата,
|
||||||
|
download, темы или локализации. В текущем CI это отдельный non-blocking
|
||||||
|
baseline; после закрытия известных ошибок его можно сделать blocking.
|
||||||
|
|
||||||
|
## Быстрые подмножества
|
||||||
|
|
||||||
|
| Изменение | Команда |
|
||||||
|
| ---------------------------- | ------------------------------------------------------- |
|
||||||
|
| Только Markdown | `pnpm check:docs` |
|
||||||
|
| TypeScript/Svelte | `pnpm --dir web check` и `pnpm --dir web test` |
|
||||||
|
| Lint-правило или lint-конфиг | `pnpm --dir web test:rules` и `pnpm --dir web lint:all` |
|
||||||
|
| Пользовательский поток | `pnpm --dir web test:e2e` |
|
||||||
|
| Полный локальный gate | `pnpm verify` |
|
||||||
|
|
||||||
|
## Errors и warnings
|
||||||
|
|
||||||
|
- `errors` завершают соответствующий инструмент ненулевым кодом.
|
||||||
|
- `warnings` не завершают текущий lint автоматически, пока не включён строгий
|
||||||
|
режим.
|
||||||
|
- На baseline Q0 `lint:all` даёт 0 errors, 188 `i18n/dict-consistency` warnings
|
||||||
|
и 4 unused-token warnings. Это известные долги, а не чистый результат.
|
||||||
|
- После Q2 parity-линтер должен перейти к zero-warning, после чего можно
|
||||||
|
включить `--max-warnings=0` без обходных allowlist-ов.
|
||||||
|
|
||||||
|
## CI
|
||||||
|
|
||||||
|
`.github/workflows/quality.yml`:
|
||||||
|
|
||||||
|
- `verify` блокирует PR при typecheck, unit, rule-test, lint, format, docs или
|
||||||
|
build ошибке;
|
||||||
|
- `e2e` запускается отдельным job после verify и пока не блокирует PR.
|
||||||
|
|
||||||
|
`.github/workflows/deploy.yml` перед production build запускает тот же
|
||||||
|
`pnpm verify`, поэтому deploy не должен проходить при ошибке быстрых проверок.
|
||||||
|
|
||||||
|
## Локальная диагностика
|
||||||
|
|
||||||
|
При медленном полном прогоне сначала запускай минимальную команду из таблицы, а
|
||||||
|
перед ревью или merge — `pnpm verify`. После каждого шага плана результат команд
|
||||||
|
и текущий baseline фиксируются в отчёте агента.
|
||||||
@@ -5,6 +5,7 @@
|
|||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "pnpm --dir web test",
|
"test": "pnpm --dir web test",
|
||||||
|
"verify": "pnpm --dir web check && pnpm --dir web test && pnpm --dir web test:rules && pnpm --dir web lint:all && pnpm --dir web exec prettier --check . && pnpm check:docs && pnpm --dir web build",
|
||||||
"dev": "pnpm --dir web dev",
|
"dev": "pnpm --dir web dev",
|
||||||
"build": "pnpm --dir web build",
|
"build": "pnpm --dir web build",
|
||||||
"format": "pnpm format:docs && pnpm --dir web format",
|
"format": "pnpm format:docs && pnpm --dir web format",
|
||||||
|
|||||||
+2
-2
@@ -199,8 +199,8 @@
|
|||||||
--color-text-accent: hct(from var(--brand-alt) h 25 90);
|
--color-text-accent: hct(from var(--brand-alt) h 25 90);
|
||||||
--color-text-accent-muted: hct(from var(--brand-alt) h 22 70);
|
--color-text-accent-muted: hct(from var(--brand-alt) h 22 70);
|
||||||
|
|
||||||
--color-main: hct(from var(--brand-main) h 60 50);
|
--color-main: hct(from var(--brand-main) h 60 56);
|
||||||
--color-accent: hct(from var(--brand-alt) h 60 50);
|
--color-accent: hct(from var(--brand-alt) h 60 56);
|
||||||
--color-success: hct(160 65 55);
|
--color-success: hct(160 65 55);
|
||||||
--color-warning: hct(80 65 55);
|
--color-warning: hct(80 65 55);
|
||||||
--color-danger: hct(30 70 55);
|
--color-danger: hct(30 70 55);
|
||||||
|
|||||||
Reference in New Issue
Block a user