Дмитрий
40202caf34
feat(projects-bulk): extend validation for 6 actions + scope
...
- BulkProjectActionRequest: add update_regions/update_days/update_limit actions, scope.filter, withValidator for ids-or-scope + delta/replace mutual exclusion
- ProjectBulkActionsTest: 4 new tests (3 pass, 1 todo pending Task 2 service handler)
- ProjectsActionsTest: update > 100 ids limit test to match new max:500
- phpstan-baseline: add 4 actingAs false-positive entries for new test file
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 14:38:59 +03:00
Дмитрий
5c8ad2738a
feat(layout): dark topbar + sidebar cleanup + DevIndexBadge moved below
...
Sidebar: убраны Менеджеры/Напоминания; Работа в порядке
Проекты/Сделки/Канбан/Дашборд; Команда — только Настройки;
снят useRemindersStore (был только под reminders badge).
Topbar: тёмный фон linear-gradient(noir → #04261E) совпадающий
с sidebar #1271 ; убран breadcrumb «Рабочая область»;
v-toolbar__content padding-left:240 (не уходит под sidebar).
DevIndexBadge: top:64 (ниже топбара, не перекрывает user-chip).
Vitest AppLayout 15/15 PASS.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 14:32:03 +03:00
Дмитрий
4e27db63a3
plan(projects-bulk): implementation plan — 15 tasks TDD
2026-05-12 14:29:35 +03:00
Дмитрий
1d6d1f2671
docs(spec): projects bulk actions — design
2026-05-12 14:23:37 +03:00
Дмитрий
9a7615b257
fix(dev-indices): Esc pause-hover + skip inert Vue compiler tags
...
#1 (review-Important) — Esc now also calls pauseHover(2000) so the next
mousemove doesn't re-target the cursor element within 16ms. User gets
2 seconds to move off before hover re-engages.
#4 (review-Important) — Plugin walker now skips data-dx injection for
inert Vue compiler tags (template / slot / component / Transition /
TransitionGroup / Suspense / KeepAlive) but still recurses into their
children with the tag preserved in ancestor chain (keeps descendant
signatures stable). Manifest regenerated — no more phantom IDs that
reference no-DOM-element nodes.
Other review findings (CI integration, save-amplification, code-style
polish) skipped: this feature is temporary, will be removed at final
release.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 12:32:15 +03:00
Дмитрий
e3804cd12b
feat(dev-indices): CLI 'npm run dx <id>' for manifest lookup
...
Prints file:line/tag/text/parent-chain/signature/created for any manifest
entry. Handles deleted IDs (tombstones) with separate message format.
Exit codes: 0=found, 1=not-found-or-no-manifest, 2=usage-error.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 12:07:13 +03:00
Дмитрий
d238ca5f4a
feat(dev-indices): overlay Alt-keys (up/down) + Alt+Shift+I toggle + mini-badges
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 12:05:53 +03:00
Дмитрий
d8c33b4cd6
feat(dev-indices): DevIndexOverlay (hover badge + click-copy + Esc + AppShell mount)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 12:02:38 +03:00
Дмитрий
901530ae41
feat(dev-indices): useDevIndices composable (state + DOM walk)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 11:57:35 +03:00
Дмитрий
c771192db2
feat(dev-indices): JSON Schema for manifest validation
...
IDE auto-completion/validation for app/dev-indices.json via the $schema
reference in the manifest header.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 11:54:56 +03:00
Дмитрий
b182dae89b
feat(dev-indices): register plugin in vite.config (dev-only + Vitest guard)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 11:54:13 +03:00
Дмитрий
f27ccc0081
feat(dev-indices): Vite plugin core (transform + magic-string injection)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 11:50:15 +03:00
Дмитрий
8edd720395
feat(dev-indices): signature module (structural + data-dev-name escape hatch)
2026-05-12 11:46:20 +03:00
Дмитрий
1f834bfac3
test(dev-indices): cover loadManifest error branches + markDeleted no-op
2026-05-12 11:43:59 +03:00
Дмитрий
baf51bd2cf
feat(dev-indices): manifest IO module (types + load/save/lookup/tombstones)
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-12 11:37:36 +03:00
Дмитрий
611506faa1
docs(plans): impl plan — dev element indices (10 tasks, TDD-bite-sized)
...
10 задач с TDD-разбиением: types + manifest IO → signature → Vite plugin core
→ vite.config wiring → JSON Schema → useDevIndices composable → DevIndexOverlay
(hover/click/Esc + App.vue mount) → overlay Alt-keys + Alt+Shift+I toggle → CLI
'npm run dx <id>' → end-to-end smoke. Каждая задача self-contained, кончается
commit'ом.
App.vue mount через defineAsyncComponent + import.meta.env.DEV для надёжного
tree-shake в production. Spec coverage table в конце плана.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 11:31:52 +03:00
Дмитрий
f90ddb09c1
docs(specs): design — dev element indices (per-element data-dx + manifest)
...
Утверждённый дизайн: Vite plugin инжектирует data-dx на каждый element
+ persistent dev-indices.json (commit'ится) + DevIndexOverlay
(hover/Alt-keys/Alt+Shift+I toggle/click-to-copy).
Cтабильность через structural signature (file + ancestor chain + tag +
static attrs + text snippet), tombstones для удалённых ID, escape-hatch
через data-dev-name на важных местах. Production: tree-shake'ится через
import.meta.env.DEV.
+3 слова в cspell-words.txt (реордере/реорден/hmr).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 11:22:30 +03:00
Дмитрий
f4ec5dcafa
fix(redesign): sidebar position:fixed + main padding-left — restore main content visibility
...
Hotfix: после Task 12 замены v-navigation-drawer на plain <aside> sidebar остался position:static и толкал v-main в flow ниже (y=901), весь контент уезжал за viewport. Добавлен .ld-sidebar position:fixed top:0 left:0 height:100vh z-index:1006 + .app-main padding-left:232px. Verified via Playwright snapshot — Dashboard KPI/charts отрисованы корректно.
2026-05-12 10:48:15 +03:00
Дмитрий
43250b6773
docs(specs): I2 backlog +5 final-review findings (token leaks + naming + stagger)
2026-05-12 10:33:53 +03:00
Дмитрий
3ce52fc52f
docs(specs): Task 18 — portal redesign Iteration 1 acceptance + I2 backlog
...
Iteration 1 verification sweep (commits 38b985a..e266927):
- Vitest 579 passed / 3 skipped / 0 failed (full suite green)
- ESLint debt 15 errors — all in pre-existing Plan 5 files
(NewProjectDialog/ProjectsView/projectsStore .spec.ts), 0 touched by redesign
- Type-check errors — all in pre-existing Plan 5 files
(EditProjectDialog.vue, ProjectsView.vue, NewProjectDialog.spec.ts), 0 touched by redesign
- Histoire build — 4 new stories (StatusPill, Kbd, FilterChip, DensityToggle)
discovered; build fails on pre-existing BulkActionsBar.story.vue Pinia issue
Acceptance §13 checklist (10 items): 8 ✅ / 1 ❌ / 1 N/A
- 12 CSS tokens ✅ , Inter+JetBrains Mono tnum ✅ , AppLayout shell ✅
- StatusPill in Deals ✅ but ❌ NOT integrated in KanbanCard/DashboardView
- 7 motion patterns + prefers-reduced-motion ✅ , Density localStorage ✅
- Vitest unit tests ✅ , Histoire stories ✅
- Pa11y SPA + Lighthouse N/A (skipped per I1 scope)
§15 new section captures 9 Iteration-2 backlog items: slug reconciliation,
sidebar drawer regression, filter chip stubs, status-legend strip,
KanbanCard hover overlap, sidebar marker regex tightening,
prefers-reduced-motion test for ld-marker-grow, Pa11y SPA config, Lighthouse run.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 10:31:14 +03:00
Дмитрий
e2669270f3
feat(redesign): Task 17 — ProjectCard tokens (hover lift + JetBrains Mono numerics)
2026-05-12 10:22:36 +03:00
Дмитрий
22e6bdf8b8
feat(redesign): Task 16 — KanbanView StatusPill + hover lift (motion #4 )
...
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 10:19:21 +03:00
Дмитрий
2f46a3e5ec
feat(redesign): Task 15 — DealsView filterbar + density + StatusPill + hover lift (motion #2,#4)
2026-05-12 10:13:19 +03:00
Дмитрий
35662f7b56
feat(redesign): Task 14 — DashboardView KPI count-up (motion #1 ) + live pulse
2026-05-12 10:06:08 +03:00
Дмитрий
a09434eca0
feat(redesign): Task 13 — page transition wiring (Vue Transition + CSS fadeup, motion #6 )
2026-05-12 09:59:22 +03:00
Дмитрий
3f956224bd
feat(redesign): Task 12 — AppSidebar двухтоновый shell + ⌘K stub + active marker (motion #7 )
2026-05-12 09:54:54 +03:00
Дмитрий
2707ff64ab
feat(redesign): Task 11 — DensityToggle component (compact/comfortable + persist)
2026-05-12 09:49:37 +03:00
Дмитрий
0b2ec5b802
feat(redesign): Task 10 — FilterChip component (label + count + active states)
2026-05-12 09:47:02 +03:00
Дмитрий
52cc64c9e6
feat(redesign): Task 9 — Kbd component (⌘K, Esc badges; light+dark variants)
2026-05-12 09:45:22 +03:00
Дмитрий
ff3bc8bcc1
feat(redesign): Task 8 — StatusPill component + 14-variant Histoire story
2026-05-12 09:43:02 +03:00
Дмитрий
7322c7f33a
feat(redesign): Task 7 — useDensity composable (localStorage + rowHeight)
2026-05-12 09:37:43 +03:00
Дмитрий
eda13679b4
feat(redesign): Task 6 — useCountUp composable (RAF tween + prefers-reduced-motion)
2026-05-12 09:34:55 +03:00
Дмитрий
cdd1b5efdb
feat(redesign): Task 5 — useStatusPill composable (14 slugs из db/schema.sql)
2026-05-12 09:29:53 +03:00
Дмитрий
ea4570dafe
feat(redesign): Task 4 — extend Vuetify theme (12 colors) + global component defaults
2026-05-12 09:27:22 +03:00
Дмитрий
b858df569e
feat(redesign): Task 3 — motion.css (5 keyframes + reduced-motion wrapper + utilities)
2026-05-12 09:23:50 +03:00
Дмитрий
baf27bd02d
feat(redesign): Task 2 — typography.css (Inter variable + JetBrains Mono + tnum)
2026-05-12 09:20:13 +03:00
Дмитрий
688d9cfb24
feat(redesign): Task 1 — tokens.css (12 colors + spacing + radii + shadows)
2026-05-12 09:15:29 +03:00
Дмитрий
38b985a473
docs(plans): portal redesign — Quiet Luxury Iteration 1 — 18-task TDD decomposition
...
Tasks 1-3 CSS foundation (tokens/typography/motion). Task 4 Vuetify theme + global defaults. Tasks 5-7 composables (useStatusPill/useCountUp/useDensity). Tasks 8-11 UI components (StatusPill/Kbd/FilterChip/DensityToggle) + Histoire stories. Task 12 AppSidebar redesign (двухтоновый shell + Cmd-K stub + active marker motion #7 ). Task 13 page transition wiring (motion #6 ). Tasks 14-17 view applications (Dashboard count-up #1 , Deals filterbar + stagger #2 + hover lift #4 , Kanban hover lift, Projects tokens). Task 18 acceptance verification + Pa11y CI sweep.
Self-review: spec coverage complete (all 7 motion patterns wired; stagger #2 added в Task 3 utility + Task 15 application). 0 placeholders. Type consistency across composables verified.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 09:09:58 +03:00
Дмитрий
17e07fbe69
docs(specs): portal redesign — Quiet Luxury (Forest extended) design
...
Approved through superpowers:brainstorming. Direction A (Quiet Luxury) + двухтоновый Pro Console sidebar + 7 motion patterns (count-up, stagger, pill-morph, hover-lift, skeleton, page-transition, sidebar-marker). Forest palette extended до 12 токенов. Inter + JetBrains Mono с tnum. 44px row default + 36px compact toggle. 14 status-pills (точные slugs из db/schema.sql). prefers-reduced-motion обязательный wrapper. Iteration 1 scope: tokens + typography + shell + components defaults + 4 ключевых view (Dashboard, Deals, Kanban, Projects).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 08:57:42 +03:00
Дмитрий
615db99547
chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)
...
Conscious rollback of v1.83 audited construction per user decision
12.05.2026. R15 PSR_v1 section deleted entirely; framer-motion remains
technical block (React-only peerDep), no longer regulatory rule.
Affected:
- PSR_v1 v1.7 -> v2.0 (R15, R0.6 p.11, R8 motion, R11.6, R13 motion rows
removed; finale + properties reformulated)
- CLAUDE.md v1.87 -> v1.88 (#5 p.12 -> marker; #2 motion stack -> guidance)
- Tooling v1.15 -> v1.16 (#9.2 reformulated; framer-motion + react-spring
marked as technical block, not regulatory)
- Pravila v1.10 -> v1.11 (#11.5/#13.2 counts updated; #13.9/#13.10 cross-ref
bumps; #13.10 NOT deleted - it governs R14 UPM/21st pipeline, not R15)
- CHANGELOG_claude_md.md - v1.88 entry
Brainstormed via superpowers:brainstorming. Planned via
superpowers:writing-plans. Executed via superpowers:executing-plans +
/claude-md-management:claude-md-improver + manual Edit.
Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md
Plan: docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 07:30:57 +03:00
Дмитрий
0fd93fd686
docs(spec+plan): R15 motion-runtime removal — design + impl plan
...
Brainstormed via superpowers:brainstorming. User decision 12.05.2026:
remove R15 PSR_v1 section entirely (variant B). Conscious rollback of
audited construction from v1.83 (10.05.2026).
Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md
Plan: docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-05-12 07:17:19 +03:00
Дмитрий
0245f12b51
chore(dev): inject DevIndexBadge for visual feature feedback on localhost
2026-05-12 04:45:18 +03:00
Дмитрий
76b1562593
feat(frontend): Plan 5 Task 11 — polling integration (setTimeout-recursion + backoff)
2026-05-11 19:44:56 +03:00
Дмитрий
1c3989a6df
feat(frontend): Plan 5 Task 10 — EditProjectDialog wrapper + BulkActionsBar + 7 tests
2026-05-11 19:41:53 +03:00
Дмитрий
92082606e3
feat(frontend): Plan 5 Task 8 — ProjectsView + projectsStore (no polling) + 9 tests
2026-05-11 19:38:59 +03:00
Дмитрий
8bc7838f0c
feat(frontend): Plan 5 Task 9 — NewProjectDialog (3 tabs Site/Call/SMS) + story
2026-05-11 19:31:26 +03:00
Дмитрий
c9ee8d866e
feat(frontend): Plan 5 Task 7 — router + nav + regions + ProjectCard + story
2026-05-11 19:31:23 +03:00
Дмитрий
458fa0b84d
feat(projects): Plan 5 Task 6 — destroy + sync + toggle-active + bulk endpoints
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-11 19:06:07 +03:00
Дмитрий
32135e62d2
docs(spec): roadmap post-Plan 5 birdseye до production launch
...
Линейная лента Sprint 5 → 6 → 7 → 8 → 9 → soft-launch → public launch.
Учитывает закрытые Sprint 0/Sprint 4 и supplier-линию Plans 1-5.
Birdseye-обзор поверх roadmap-to-production-design.md v1.0.
2026-05-11 19:05:31 +03:00
Дмитрий
6238b8b580
feat(projects): Plan 5 Task 5 — update + UpdateProjectRequest + resync trigger
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-11 19:00:39 +03:00