diff --git a/.wiki/concepts/sched-publish-runbook.md b/.wiki/concepts/sched-publish-runbook.md index bf7c2b1..9c62b80 100644 --- a/.wiki/concepts/sched-publish-runbook.md +++ b/.wiki/concepts/sched-publish-runbook.md @@ -22,12 +22,12 @@ private-dev-public-publish: разработка в приватном Gitea, н | Роль | Папка | Origin | Мета | |---|---|---|---| | dev | `~/projects/sched` | `git.kzntsv.site/victor/sched` (Gitea) | `.wiki/.tasks/.agents` внутри | -| pub | `~/projects/sched-upstream` | `github.com/schedjs/sched` (main) | нет | +| pub | `~/projects/sched-upstream` | `github.com/schedjs/schedjs` (main) | нет | ## Артефакты -- **Репо pub:** `schedjs/sched` (PUBLIC, MIT, 12 topics: cron/scheduler/job-queue/task-scheduler/background-jobs/self-hosted/nodejs/typescript/queue/devtools/mcp/docker; description+homepage `https://schedjs.github.io/sched`). -- **Сайт доков:** `https://schedjs.github.io/sched/` (Pages, workflow `ci.yml` → docs job; llms.txt/llms-full.txt). +- **Репо pub:** `schedjs/schedjs` (PUBLIC, MIT, 12 topics: cron/scheduler/job-queue/task-scheduler/background-jobs/self-hosted/nodejs/typescript/queue/devtools/mcp/docker; description+homepage `https://schedjs.github.io/sched`). +- **Сайт доков:** `https://schedjs.github.io/schedjs/` (Pages, workflow `ci.yml` → docs job; llms.txt/llms-full.txt). - **CI:** `.github/workflows/ci.yml` — test (unit, без БД) + docs (Pages). Конфиг юнит-сьюта: `vitest.ci.config.ts`. - **Доки:** `docs/` (Docus 5.12.3 на Nuxt), dist = `docs/dist` (трекается, Pages-сборка). - **Storage-тесты с БД:** локально (docker: mongo 27017, pg 5433 `postgres:test`, mysql 3308 `root:test`, mariadb 3307 `root:test`). @@ -35,12 +35,12 @@ private-dev-public-publish: разработка в приватном Gitea, н ## Синк dev → pub (курируемая копия) 1. **Список файлов:** `git -C ~/projects/sched ls-files` минус исключения: - `^\.wiki/|^\.tasks/|^\.agents/|^AGENTS\.md$|^CLAUDE\.md$|^branding/pora-|^pngtree-|^327274997_|^cat-clock-`. + `^\.wiki/|^\.tasks/|^\.agents/|^AGENTS\.md$|^CLAUDE\.md$|^branding/pora-|^pngtree-|^327274997_|^cat-clock-|^MIGRATION\.md$`. Untracked в dev (canva/istock/logo.ai/logo.png/logo.svg/черновики) НЕ копируются. 2. **Копировать** в `~/projects/sched-upstream` (mkdir -p + cp по списку). 3. **Выбелить** (dev-приватное → публичное), файлы в pub-копии: - `.yarnrc.yml` → `npmRegistryServer: "https://registry.npmjs.org"`, без токена; - - `docs/nuxt.config.ts` + `docs/modules/sched-links.ts` → дефолты `github.com/schedjs/sched`, `registry.npmjs.org`, `ghcr.io/schedjs` (env-оверрайд сохранён); + - `docs/nuxt.config.ts` + `docs/modules/sched-links.ts` → дефолты `github.com/schedjs/schedjs`, `registry.npmjs.org`, `ghcr.io/schedjs` (env-оверрайд сохранён); - `apps/daemon/Dockerfile` → секрет `id=npm_token` (не verdaccio_token), комменты; - `docker-compose.dev.yml` → убрать NPM_REGISTRY/NPM_TOKEN (публичный npm); - `CHANGELOG.md` → «→ npm» вместо verdaccio, docker-образ без registry.kzntsv; @@ -52,12 +52,12 @@ private-dev-public-publish: разработка в приватном Gitea, н ## CI (workflow ci.yml) - **test (unit):** checkout → setup-node 24 → corepack enable → `yarn install --immutable` → `yarn workspaces foreach --all -pt --exclude docs run build` → `yarn tsc --noEmit` → `yarn vitest run --config vitest.ci.config.ts` (исключает `packages/storage-*/test/**` — им нужны живые БД). -- **docs:** на push в main: install → `yarn workspace docs build` → upload-pages-artifact (docs/dist) → deploy-pages. Pages включён (`gh api repos/schedjs/sched/pages -X POST -f build_type=workflow`). +- **docs:** на push в main: install → `yarn workspace docs build` → upload-pages-artifact (docs/dist) → deploy-pages. Pages включён (`gh api repos/schedjs/schedjs/pages -X POST -f build_type=workflow`). - **Ручной запуск:** `workflow_dispatch`. ## Verify (после синка/деплоя) -- `https://schedjs.github.io/sched/` → meta-refresh на `/sched/docs/introduction` (200), CSS (`/sched/_nuxt/…`), favicon (`/sched/favicon.ico` 200), лого (full URL `https://schedjs.github.io/sched/logo.png` 200), llms.txt 200. +- `https://schedjs.github.io/schedjs/` → meta-refresh на `/schedjs/docs/introduction` (200), CSS (`/schedjs/_nuxt/…`), favicon (`/schedjs/favicon.ico` 200), лого (full URL `https://schedjs.github.io/schedjs/logo.png` 200), llms.txt 200. - Футер: 1 иконка GitHub (не 2). - `gh run list` зелёный; `gh repo view` topics/description. @@ -69,8 +69,8 @@ private-dev-public-publish: разработка в приватном Gitea, н ## Gotchas -1. **`app.baseURL: '/sched/'`** обязателен (Pages-subpath), но Docus игнорирует его для двух ссылок: index meta-refresh (`url=/docs/introduction`) и favicon (`href="/favicon.ico"`) → пост-фикс в `scripts/docs-dist.mjs` (запускается после generate; срабатывает и в CI). -2. **NuxtImg двойная база лого:** header logo `'/logo.png'` → `/_ipx/_/sched/logo.png` (404, _ipx не генерится статически). Фикс: полный URL в `header.logo.light/dark` (`https://schedjs.github.io/sched/logo.png`) — ipx пропускает внешние. +1. **`app.baseURL: '/schedjs/'`** обязателен (Pages-subpath), но Docus игнорирует его для двух ссылок: index meta-refresh (`url=/docs/introduction`) и favicon (`href="/favicon.ico"`) → пост-фикс в `scripts/docs-dist.mjs` (запускается после generate; срабатывает и в CI). +2. **NuxtImg двойная база лого:** header logo `'/logo.png'` → `/_ipx/_/schedjs/logo.png` (404, _ipx не генерится статически). Фикс: полный URL в `header.logo.light/dark` (`https://schedjs.github.io/schedjs/logo.png`) — ipx пропускает внешние. 3. **Футер: 2 GitHub-иконки** — Docus сам подставляет github из git-remote + explicit `socials.github`. Убрать explicit (pub remote = github.com → 1 иконка). В dev-сборке (Gitea remote) футер покажет Gitea-ссылку — при синке dist скрабить. 4. **`docs/dist/logo.svg` регенерируется** из `docs/public/logo.svg` при каждой сборке (2026-08-27: вынесен в корень dev, untracked) — не коммитить в pub. 5. **CI: dist нет в git** (gitignored) → `build` до `tsc` (cross-package types через dist). @@ -81,6 +81,8 @@ private-dev-public-publish: разработка в приватном Gitea, н ## Осталось (на 2026-08-27) +- **Чистый старт репо 2026-08-27:** `schedjs/sched` удалён → создан `schedjs/schedjs` с ОДНИМ root-коммитом (нет истории доко-сборки). MIGRATION.md исключён из паблик-сета (история миграций — dev-only). Все URL/бейджи/baseURL переведены на `schedjs.github.io/schedjs/` + `github.com/schedjs/schedjs`. Синк: `git checkout --orphan` + копия + выбеливание + один коммит + push. + - ~~npm-паблиш~~ **СДЕЛАНО 2026-08-27: скоуп `@schedjs/*`, НЕ `@sched`** (имя `sched` занято на npmjs юзером-профилем → оргу `@sched` создать нельзя; `@schedjs` свободен и совпадает с GitHub-org). Опубликованы все 9 пакетов: `@schedjs/{core,admin-api,cli,mcp,storage-mongo,storage-mysql,storage-postgres,ui,daemon}`. В dev-манифестах/доках/README тоже переименовано `@sched/*` → `@schedjs/*` (коммит 137f78b). npm-токен — `npm/admin-npm-token` (pass), owner org schedjs, bypass 2FA; старый apilki-токен удалён из pass. - docker-образ daemon: НЕ паблишен (publish-check ругается на `registry.kzntsv.site/sched-daemon`); цель — `ghcr.io/schedjs/sched-daemon` (как в выбеленных publish-check/Dockerfile). - task:720 `pkg-repo-metadata` — **сделано** (repository/homepage/bugs/author добавлены во все 9 манифестов в волне переименования);