This repository was archived by the owner on Sep 11, 2026. It is now read-only.
Repository navigation
fix(storybook): хвиля 1.3 — фікси канону за результатами живого адопту components - #178
Merged
Merged
Conversation
… + скіл n-storybook) Реалізація ADR «Канон Storybook для Vue-компонентних бібліотек» (#167, #169): - scope: детекція за isVueComponentLibraryPkg + поріг ≥3 .vue, opt-out через .n-rules.json, app-детектор хвилі 2 за прапорцем (інертний) - scaffold: канонічні template .storybook/main.js (фіксований порядок плагінів, viteFinal-фільтр pages/layouts), preview.js (Quasar full install + iconSet/iconMapFn, MSW init), mocks/gql-sse.js (sseSubscription), T0-автофікс - vitest-config: projects [unit, storybook] поверх наявного test-блоку (AST, insert-only, fail-closed) + ізольований vitest.stryker.config - hygiene: undeclared third-party imports у .vue, sassVariables auto-detect - mocking: docs-only рецепти router/tfm/MSW/Pinia/pageDecorator - adopt: посекційна діагностика для ручних впроваджень без сліпого перезапису, circuit breaker на пакет; скіл npm/skills/storybook + дзеркало .cursor/skills - підключення concern-ів до lint-рушія (check:true без lint-блоку був мертвим), наскрізно верифіковано на синтетичному консюмер-репо Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…l version pin Кластер 7 ADR канону Storybook: - npm-module/npm_package_json: allowlist Storybook-devDeps у npm/package.json (обґрунтування — isStorybookRoot() у @7n/test читає саме цей файл) + version pin static map у Rego (НЕ template — T0 deep-merge інжектив би канонічні devDeps у кожен пакет) - bun/package_json: @vitest/browser, playwright, @storybook/addon-vitest у allowed_root_test_deps (test-tooling для vitest-проєкту storybook); Storybook-identity пакети в корінь свідомо не пущені, межа задокументована Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ollo subscription + Pinia) (#169) * docs(adr): brainstorm session — розширення канону Storybook на сторінки (route.params + Apollo subscription + Pinia) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(adr): прототип-верифікація розширення Storybook для сторінок на gt Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…ий PR-прогін (Кластер 5) Дослідження: ci-shared — не хаб actions (звичайний консюмер); канонічний механізм — вендоринг composite actions з npm-tarball @7n/rules. Крос-плагінний імпорт скоуп-детекції в ci-github нелегальний, тому concern живе в правилі storybook з requires.capability: ci:github (перше реальне використання capability-гейтингу — спить без плагіна @7n/rules-ci-github). - .github/actions/setup-playwright-chromium: кеш ms-playwright за версією playwright з bun.lock, install лише chromium --with-deps при cache miss - .github/workflows/lint-storybook.yml: матриця по пакетах у скоупі → vitest run --project=storybook - nightly mutation coverage свідомо поза concern-ом (test/stryker_config) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…a/components
Пілот на одному з двох ручних впроваджень-джерел ADR знайшов 2 баги і 3 прогалини:
- viteFinal-фільтр стійкий до VueMacros-стека: resolve/flatten Promise/масивів
плагінів, фільтр vue-трансформерів за сімейством (vite:vue*, vue-macros),
+ vite-plugin-vue-layouts-next / unplugin-vue-router у несумісних
- vitest v4 API: provider: playwright() factory з @vitest/browser-playwright
замість рядка 'playwright' (templates, маркери, fix, тести);
@vitest/browser-playwright доданий у кореневий governance-allowlist
- flat-root layout у detectStoriesGlob: .vue у корені пакета →
'../*.stories.@(js|ts)' (реальний layout components/npm)
- mocking.mdc: рецепт точкового alias-мока одного модуля з критерієм вибору
проти MSW (розмежування скоупів, без суперечності рішенню розширення ADR)
- hasStoriesMarker: storybookTest({ configDir }) без явного include —
легітимний патерн, не порушення
75/75 vitest, 21/21 rego, дельта-лінт чистий.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…mponents вживу Другa порція зворотного зв'язку пілота (storybook build + 58/58 тестів як ground truth): - viteConfigPath-обхід ОБОВ'ЯЗКОВИЙ: без core.builder.options.viteConfigPath на канонічний empty-vite.config.js builder-vite автодискаверить vite.config пакета і домерджує нефільтровані плагіни ДО viteFinal (подвійна SFC-трансформація, ловиться лише повним build) — новий файл скафолда + секція adopt - preview.js: підшляховий default-імпорт icon-set (named export iconSet відсутній у quasar 2.18.x, ламає js-transform); mswLoader замість deprecated mswDecorator; setup з @storybook/vue3-vite - glob-и без **/-префікса не матчили пакети поза коренем монорепо — виправлено repo-wide по правилу (ci workflow paths, concern.json lint.glob, main.json auto) - governance: піни вирівняні до фактично верифікованих версій (storybook ^10.5.3); root-allowlist доповнений builder-vite/@vitejs/plugin-vue/@quasar/* - канонічний knip-сніпет для .storybook-артефактів у main.mdc (docs-only) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Що змінено
Третя ітерація зворотного зв'язку: адопт на nitra/components доведено до робочого стану вживу (
storybook build+ dev smoke + 58/58 vitest-тестів + чистий лінт, PR nitra/components#19) — розбіжності між каноном 0.11.0 і робочим станом повернуто в канон.viteConfigPath-обхід тепер частина скафолда (найважливіше). Безcore.builder.options.viteConfigPathна порожнійempty-vite.config.jsbuilder-vite сам знаходитьvite.config.jsпакета і домерджує нефільтровані плагіни ще доviteFinal— подвійна SFC-трансформація, яку ловить лише повнийstorybook build(dev smoke мовчить). Новий канонічний файл + маркер-перевірка + T0-фікс + adopt-секція.import { iconSet } from 'quasar'→ підшляхові default-імпорти — quasar 2.18.x не має такого runtime-binding, js-transform@quasar/vite-pluginпадає.**/-префікса (picomatch анкорить до повного шляху) не матчили пакети поза коренем монорепо — виправлено по всьому правилу: CI workflowpaths,concern.json#lint.glob,main.json#auto,main.mdc#globs.@storybook/builder-vite/@vitejs/plugin-vue/@quasar/vite-plugin/@quasar/extras..storybook/-артефактів уmain.mdc(docs-only —js/checkсвідомо не ревалідує knip.json після створення).mswLoaderзамість deprecatedmswDecorator(msw-storybook-addon 2.x).Рев'юеру
@storybook/vue3^10.5.3 у canon-мапі — узгоджено з лінійкою, але в пілоті це транзитивна залежність (не верифіковано прямим devDep)..storybook/-файли nitra/components#19.🤖 Generated with Claude Code