ci / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 3m55s
ci / api (push) Successful in 51s
ci / mobile (Metro-бандл Android) (push) Canceled after 0s
release / images (services/api/Dockerfile, storage-agent, storage-agent) (push) Canceled after 0s
release / images (services/recommender/Dockerfile, recommender, ) (push) Canceled after 0s
ci / recommender (push) Successful in 1m11s
ci / ts (packages + web) (push) Canceled after 3s
release / verify (push) Successful in 1m16s
release / images (apps/web/Dockerfile, web, ) (push) Failing after 2m40s
release / android + release (push) Skipped
release / images (services/api/Dockerfile, api, api) (push) Canceled after 1s
- api/openapi.yaml: contract with /healthz, /readyz, /api/v1/server-info - services/api (Go): api with oapi-codegen strict server, goose migrations, readiness checks for Postgres/Redis; storage-agent stub with internal token - services/recommender (Python, uv): FastAPI health/readiness/internal status, `pipu-rec serve` and `pipu-rec analyze` entrypoints - packages: generated api-client, core (server URL + server check), i18n (ru/en + dictionary check), design-tokens (CSS vars + TS from tokens.json) - apps/web: Vite + React shell showing server status, language switch - apps/mobile: Expo (SDK 53) Android app with server connect screen - deploy: Dockerfiles, compose (prod + dev), nginx template, install/update scripts - .gitea/workflows: ci.yml and tag-based release.yml (images, signed APK, release) - scripts/version.mjs: version and Android versionCode from git tag - tests/fixtures/music/generate.sh: synthetic test library via ffmpeg - docs: versionCode formula, OpenAPI 3.0.3, dev instructions in README Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
93 lines
2.5 KiB
TypeScript
93 lines
2.5 KiB
TypeScript
/* Сгенерировано scripts/build.mjs из tokens.json — не редактировать. */
|
|
export const tokens = {
|
|
"color": {
|
|
"dark": {
|
|
"bg": "#05070D",
|
|
"bg2": "#080B14",
|
|
"surface": "#0B0F1A",
|
|
"surface2": "#121827",
|
|
"surface3": "#1A2236",
|
|
"elev": "#111726",
|
|
"hover": "rgba(120,150,255,.07)",
|
|
"line": "rgba(130,160,255,.10)",
|
|
"line2": "rgba(130,160,255,.18)",
|
|
"text": "#EDF1FF",
|
|
"text2": "#A0ABC6",
|
|
"text3": "#737F9C",
|
|
"accent": "#2F80FF",
|
|
"accent2": "#5E9BFF",
|
|
"accent-soft": "rgba(47,128,255,.15)",
|
|
"violet": "#9B7CFF",
|
|
"violet-soft": "rgba(124,92,255,.16)",
|
|
"ok": "#2FD39A",
|
|
"ok-soft": "rgba(47,211,154,.14)",
|
|
"warn": "#FFB547",
|
|
"warn-soft": "rgba(255,181,71,.14)",
|
|
"danger": "#FF5C70",
|
|
"danger-soft": "rgba(255,92,112,.14)",
|
|
"overlay": "rgba(3,5,10,.66)",
|
|
"glass": "rgba(12,16,28,.78)",
|
|
"surface-a": "rgba(11,15,26,.70)",
|
|
"bar-a": "rgba(6,9,16,.55)"
|
|
},
|
|
"light": {
|
|
"bg": "#F3F5FA",
|
|
"bg2": "#EBEEF5",
|
|
"surface": "#FFFFFF",
|
|
"surface2": "#F0F3F9",
|
|
"surface3": "#E4E9F3",
|
|
"elev": "#FFFFFF",
|
|
"hover": "rgba(30,60,140,.06)",
|
|
"line": "rgba(20,35,80,.10)",
|
|
"line2": "rgba(20,35,80,.17)",
|
|
"text": "#0A0F1E",
|
|
"text2": "#4B5675",
|
|
"text3": "#677290",
|
|
"accent": "#1F6FF2",
|
|
"accent2": "#1F6FF2",
|
|
"accent-soft": "rgba(31,111,242,.10)",
|
|
"violet": "#6A47F0",
|
|
"violet-soft": "rgba(106,71,240,.10)",
|
|
"ok": "#0E9465",
|
|
"ok-soft": "rgba(14,148,101,.10)",
|
|
"warn": "#A86200",
|
|
"warn-soft": "rgba(168,98,0,.10)",
|
|
"danger": "#D32F47",
|
|
"danger-soft": "rgba(211,47,71,.09)",
|
|
"overlay": "rgba(20,30,60,.32)",
|
|
"glass": "rgba(255,255,255,.84)",
|
|
"surface-a": "rgba(255,255,255,.74)",
|
|
"bar-a": "rgba(255,255,255,.55)"
|
|
}
|
|
},
|
|
"effect": {
|
|
"dark": {
|
|
"shadow": "0 24px 64px rgba(0,0,0,.55)",
|
|
"glow": "0 8px 28px rgba(47,128,255,.38)",
|
|
"amb-op": ".8"
|
|
},
|
|
"light": {
|
|
"shadow": "0 24px 64px rgba(20,30,60,.18)",
|
|
"glow": "0 8px 24px rgba(31,111,242,.28)",
|
|
"amb-op": ".45"
|
|
}
|
|
},
|
|
"wave": {
|
|
"color1": "#2F80FF",
|
|
"color2": "#7C5CFF",
|
|
"color3": "#35D3FF"
|
|
},
|
|
"radius": {
|
|
"sm": 8,
|
|
"md": 12,
|
|
"lg": 16,
|
|
"xl": 24,
|
|
"pill": 999
|
|
},
|
|
"font": {
|
|
"display": "Unbounded",
|
|
"body": "Onest",
|
|
"mono": "JetBrains Mono"
|
|
}
|
|
} as const;
|