Дмитрий
|
3bbd7787d8
|
feat(projects-ui): replace archive with delete, drop archived filter
- Remove archived_at from Project interface; rename store.archive → store.del
- BulkActionsBar: archive button → delete (testid, icon, confirm text)
- ProjectCard: archive menu item → delete (emit + icon)
- ProjectDetailsDrawer: confirm text + store.del call
- ProjectsView: @delete binding, remove 'Архивные' status filter entry
- vuetify.ts: add mdi-delete → Trash2 mapping
- All specs/stories updated: archived_at removed, archive → del renamed
- New test: del() calls DELETE /api/projects/{id}
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 08:37:26 +03:00 |
|
Дмитрий
|
0832997b6e
|
feat(icons): CTO-19 ✅ closed via Lucide migration (Vuetify custom IconSet)
Closes CTO-19 ⏸ from реестр v1.79 — иконочная система портала не была
подключена (`@mdi/font` отсутствовал в `package.json`, все `mdi-*`
рендерились пустыми glyph'ами).
PATH α (aliases-only, brand-compliant) approved заказчиком 13.05.2026
через `superpowers:brainstorming` → `superpowers:writing-plans` →
`superpowers:subagent-driven-development`:
— `npm i lucide-vue-next ^1.0.0` (~25-30 KB gzip tree-shakable)
— `app/resources/js/plugins/vuetify.ts`: custom `IconSet`
(`liderraLucideSet`) с 103-entry `lucideMap`:
· 78 user-grep'нутых mdi-* names из resources/js/**/*.vue
· 25 Vuetify-internal defaults (pagination chevrons, v-checkbox
squares, v-radio circles, v-select dropdown, date picker, paperclip)
— Fallback `HelpCircle` для unmapped
— 51 Vue/TS файл с `icon="mdi-*"` НЕ touched — semantic-ID via Lucide
CLAUDE.md §2 «Иконки: Lucide» бренд-spec compliance achieved.
VERIFICATION (comprehensive, 13.05.2026 day +1):
— vue-tsc 0 errors
— Pest --parallel --recreate-databases: **742/739/0/3**
— Vitest: 88 files / 683 passed / 3 skipped (baseline match)
— Vite build: exit 0, 3.52s
— Visual smoke 8 views via Playwright MCP — все glyph'ы рендерятся
— axe-core a11y scan /admin/billing: **0 iconography violations**
— Pagination + v-checkbox + v-radio fixes (Task 2.b extension)
РЕЕСТР v1.82 → v1.83:
— CTO-19 §3: ⏸ → ✅ (Pravila §2.2 / §7.1 — явное «закрываем» получено)
— Сводка §0 CTO: 17✅/1⏸/1 P2 [?] → 18 ✅/0⏸/0
— Сводка §0 Итого: 70✅/12⏸ → 71 ✅/11 ⏸
— Header v1.82 → v1.83 + новый changelog block
— Footer v1.83 (match header)
CLAUDE.md §0 row sync v1.82 → v1.83 — прямой Edit per «registry version
sync» rationale, не content authoring (CLAUDE.md §5 п.10).
cspell-words.txt +1: «grep'нутых» (Russian-tech jargon).
Path (i) `npm i @mdi/font` REJECTED (250 KB CSS, против бренда).
Path β rename all strings REJECTED (большой diff 51 файл).
Spec: docs/superpowers/specs/2026-05-13-cto-19-lucide-icon-migration-design.md
Plan: docs/superpowers/plans/2026-05-13-cto-19-lucide-icon-migration.md
Quirk 64: app/dev-indices.json attached per Vite watcher auto-regen.
Memory updates — git-untracked, отдельный шаг.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-13 05:16:31 +03:00 |
|
Дмитрий
|
952373fce5
|
phase2(trigger): Vue 3 + Vuetify 3 + ESLint+Prettier+Vue + vue-tsc + Vitest
Триггер фазы 2 выполнен — первый коммит в app/resources/js/. Активирует
5 из 6 инструментов фазы 2 (CLAUDE.md §3.3) — без Histoire (отдельно).
Tailwind удалён (правило CLAUDE.md §5 п.2).
Стек:
- vue@3.5, vuetify@3.12, @vitejs/plugin-vue@6 (для Vite 8 совместимости —
@vitejs/plugin-vue@5 поддерживает только Vite 5/6), vite-plugin-vuetify@2
(auto-import), sass-embedded
- eslint@10 (flat-config), eslint-plugin-vue@10,
@vue/eslint-config-typescript@14, eslint-config-prettier, prettier@3.8
- typescript@6, vue-tsc@3.2
- vitest@4.1, @vue/test-utils, jsdom, @vitest/coverage-v8
Конфиги:
- app/vite.config.js — vue + vuetify auto-import
- app/vitest.config.ts — jsdom + setup file для ResizeObserver/
IntersectionObserver/matchMedia/CSS.supports stubs (без них Vuetify
падает в JSDOM)
- app/eslint.config.js — flat-config
- app/.prettierrc.json, app/tsconfig.json
Frontend-структура:
- resources/js/app.ts — точка входа
- resources/js/plugins/vuetify.ts — палитра Forest (Teal/ivory/теало-нуар
из BRANDBOOK_v2 §3)
- resources/js/components/AppShell.vue — первый компонент: v-app +
v-app-bar + v-card
- resources/css/app.css — Inter (UI, opsz axis), JetBrains Mono
(.numeric, tnum)
- resources/views/welcome.blade.php — упрощён под Vue mount
Smoke-тесты Vitest 3/3 за 2.8 сек:
- монтируется без ошибок
- содержит «Лидерра.»
- рендерит chip с фазой 2
Build: 158 модулей за 386 ms (184 KB JS / 295 KB CSS gzipped).
npm-scripts: lint:vue, format, format:check, type-check, test:vue.
lefthook job #8 (ESLint на staged .ts/.vue) добавлен в pre-commit.
Полный type-check (vue-tsc) и Vitest — отдельно вручную (медленно для
pre-commit: ~3 сек на каждый).
CLAUDE.md v1.16 → v1.17 (фаза 1 → фаза 2 в §6).
Реестр Открытые_вопросы v1.25 → v1.26.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-08 16:07:14 +03:00 |
|