itube-specs 0.0.1005 → 0.0.1008

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SITE_UPDATES.md CHANGED
@@ -10,19 +10,40 @@
10
10
  коммиты до бампа); `npm run patch` сам проставит ей номер версии. Формат пункта: что сделать и где,
11
11
  кому именно (всем / сайтам с N), что будет, если не сделать.
12
12
 
13
- ## 0.0.1005 — 2026-10-06
14
-
15
- - **Всем:** подключить этот файл к сайту, иначе пункты отсюда сайт не увидит.
16
- - `package.json`, скрипт `spec`: дописать в конец
17
- `&& (test ! -f node_modules/itube-specs/scripts/site-updates.mjs || node node_modules/itube-specs/scripts/site-updates.mjs)`.
18
- Тогда `npm run spec` после установки печатает новые пункты и дописывает их в `SITE_TODO.md` в корне сайта —
19
- файл остаётся, даже если `spec` запускал человек в своём терминале.
20
- - `CLAUDE.md` сайта: правило «есть `SITE_TODO.md` — выполни пункты (или спроси пользователя, если нужен его
21
- выбор), удали файл, коммит; меняешь слой сам — запись в `SITE_UPDATES.md` пишешь ты, см. `CLAUDE.md` слоя
22
- § Site updates».
23
- - Чтобы агент видел `SITE_TODO.md` без напоминаний — хук Claude Code `UserPromptSubmit`, который выводит этот
24
- файл, если он есть (по желанию, настраивается у себя в `~/.claude/settings.json`).
25
- - Пропустили прошлые версии — `node node_modules/itube-specs/scripts/site-updates.mjs <версия-до-обновления>`.
13
+ ## 0.0.1008 — 2026-10-07
14
+
15
+ - **Сайтам с несколькими нишами (в `SiteConfig.niches` больше одной), где нет нишевых переводов** — проверить и
16
+ доделать всё по `NEW_SITE_CHECKLIST.md` §3a «Несколько ниш», чего у сайта ещё нет:
17
+ - `config/niches.config.ts` с `NICHE_SLUGS`, `NICHE_CONTENT_ROOTS` и `NicheConfig` (`nicheSlugs`,
18
+ `nicheFreeRoots`, `nicheAdjectives`, `nicheTextKeys`), разложить `...NicheConfig` в `app.config.ts`;
19
+ - `addNicheAliases` в хуке `pages:extend` в `nuxt.config.ts`;
20
+ - `postTranslation: nichePostTranslation` в `i18n/i18n.config.ts`
21
+ (`import { nichePostTranslation } from 'itube-specs/utils/niche-post-translation'`);
22
+ - `v-bind="useIslandNicheProps()"` (через константу в `<script setup>`) на своих `<SectionCategoriesIsland>`.
23
+
24
+ `nicheAdjectives` заполнить для **всех** локалей сайта: без записи вместо слова в `%niche%` подставится код
25
+ ниши (`gay`). Тексты под ниши — ключи `<key>_<niche>` для ключей из `nicheTextKeys` и
26
+ `meta.<page>.<sort>.<key>_<niche>` для меты; это контент, их не выдумывать — вынести в TODO сайта. Не сделать —
27
+ `/gays`, `/shemales` отдают SEO-тексты дефолтной ниши, слово ниши в переводах не подставляется. Сайтам с
28
+ одной нишей — ничего.
29
+
30
+ - **Сайтам, которым нужен свой размер лого в шапке (videosection):** в `config/site.config.ts` добавить
31
+ `logoSize: { width, height }` — размер в px на всех брейкпоинтах. Не задан — остаётся прежний адаптив
32
+ (120×20, с `sm` 144×24); футер свой размер держит сам. Ничего не делать, если текущий размер устраивает.
33
+
34
+ ## 0.0.1007 — 2026-10-06
35
+
36
+ - **Сайтам, где `npm run dev` подключает локальный слой (`LAYER_PATH` в `.env`):** заменить скрипт `predev` в
37
+ `package.json` на
38
+
39
+ ```json
40
+ "predev": "env-cmd -f .env sh node_modules/itube-specs/scripts/link-layer.sh",
41
+ ```
42
+
43
+ Скрипт из слоя делает то же, что старый `predev` (симлинк на `LAYER_PATH` + `nuxi prepare`), и перед этим
44
+ подтягивает локальный слой до `origin/develop` — только fast-forward: свои коммиты, ветка не develop или нет
45
+ сети — слой не трогается, dev всё равно стартует. Без `LAYER_PATH` — ничего не делает. Не заменить — dev
46
+ работает с локальным слоем без чужих свежих правок, пока не подтянешь руками.
26
47
 
27
48
  ## 0.0.1001 — 2026-10-06
28
49
 
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <header
3
- :class="{'--burger-open': burgerShow}"
3
+ :class="{'--burger-open': burgerShow, '--no-notifications': !featureFlags.FeatureFollowEnabled}"
4
4
  class="layout-header"
5
5
  >
6
6
 
@@ -137,6 +137,29 @@ function closeLanguage() {
137
137
  }
138
138
  }
139
139
 
140
+ .layout-header.--no-notifications {
141
+ @include from-br($brkpnt-burger) {
142
+ grid-template-columns: auto minmax(0, 1fr) auto auto auto;
143
+ }
144
+
145
+ @include to-br($brkpnt-burger) {
146
+ grid-template-columns: auto 1fr auto;
147
+ }
148
+ }
149
+
150
+ .layout-header.--no-notifications .layout-header__language {
151
+ @include from-br($brkpnt-burger) {
152
+ grid-column: 4;
153
+ }
154
+ }
155
+
156
+ .layout-header.--no-notifications .layout-header__user,
157
+ .layout-header.--no-notifications .layout-header__sign-up {
158
+ @include from-br($brkpnt-burger) {
159
+ grid-column: 5;
160
+ }
161
+ }
162
+
140
163
  .layout-header__logo {
141
164
  @include from-br($brkpnt-burger) {
142
165
  grid-column: 1;
@@ -12,10 +12,11 @@
12
12
  >
13
13
  <img
14
14
  :alt="brandName"
15
+ :class="{'--adaptive': !logoSize}"
16
+ :width="logoSize?.width ?? 120"
17
+ :height="logoSize?.height ?? 20"
15
18
  class="layout-logo__image"
16
19
  src="/img/logo.svg"
17
- width="120"
18
- height="20"
19
20
  >
20
21
  </NuxtLink>
21
22
  </template>
@@ -29,7 +30,7 @@ const emit = defineEmits<{
29
30
  }>();
30
31
 
31
32
  const { generateLink } = useGenerateLink();
32
- const { brandName } = useAppConfig();
33
+ const { brandName, logoSize } = useAppConfig();
33
34
 
34
35
  function onLogoClick() {
35
36
  emit('click');
@@ -45,7 +46,7 @@ function onLogoClick() {
45
46
  }
46
47
  }
47
48
 
48
- .layout-logo__image {
49
+ .layout-logo__image.--adaptive {
49
50
  @include from-br(sm) {
50
51
  width: 144px;
51
52
  height: 24px;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "itube-specs",
3
3
  "type": "module",
4
- "version": "0.0.1005",
4
+ "version": "0.0.1008",
5
5
  "main": "./nuxt.config.ts",
6
6
  "types": "./types/index.d.ts",
7
7
  "scripts": {
@@ -82,6 +82,7 @@
82
82
  "scripts/i18n-check.mjs",
83
83
  "scripts/i18n-sheet.mjs",
84
84
  "scripts/site-updates.mjs",
85
+ "scripts/link-layer.sh",
85
86
  "SITE_UPDATES.md",
86
87
  "nuxt.config.ts",
87
88
  "DOCS/"
@@ -0,0 +1,15 @@
1
+ #!/bin/sh
2
+ # predev сайта: подтянуть локальный слой (LAYER_PATH из .env сайта) до origin/develop и подключить его
3
+ # симлинком вместо пакета из npm — правки слоя видны в dev сразу. Только fast-forward: свои коммиты, ветка не
4
+ # develop, нет сети — слой не трогается, dev всё равно стартует. Нет LAYER_PATH (CI, чужая машина) — no-op.
5
+
6
+ [ -n "$LAYER_PATH" ] && [ -d "$LAYER_PATH" ] || exit 0
7
+
8
+ branch=$(git -C "$LAYER_PATH" rev-parse --abbrev-ref HEAD 2>/dev/null)
9
+ if [ "$branch" != "develop" ]; then
10
+ echo "link-layer: слой на ветке «$branch», не develop — не подтягиваю"
11
+ elif ! git -C "$LAYER_PATH" pull --ff-only -q origin develop; then
12
+ echo "link-layer: слой не подтянут (свои коммиты, мешающие правки или нет сети) — работаю с локальным как есть"
13
+ fi
14
+
15
+ rm -rf node_modules/itube-specs && ln -sfn "$LAYER_PATH" node_modules/itube-specs && (cd "$LAYER_PATH" && npx nuxi prepare) || true