docs(t-paliad-149): renumber migrations 058→060 (PR 1) and 059→061 (PR 2)
058 = paliadin_poc (t-146), 059 = profession_vs_responsibility (t-148), both shipped on main 2026-05-07. Next available is 060. Per maria's coder-shift instruction.
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
m answered the 4 surfaced questions:
|
||||
- **Q1 default landing:** Last-viewed restore (sessionStorage; first-ever visit falls back to Tree + Alle + top-level only)
|
||||
- **New-Q20 Cards default content:** Rich (~9 facts)
|
||||
- **New-Q21 Cards customisation:** Full drag-rearrange + named layouts (needs new `paliad.user_card_layouts` table — migration 059)
|
||||
- **New-Q21 Cards customisation:** Full drag-rearrange + named layouts (needs new `paliad.user_card_layouts` table — migration 061)
|
||||
- **Q13 search shape:** Both simultaneously (in-place tree/cards filter on page + global Cmd-K palette stays as the from-anywhere shortcut)
|
||||
|
||||
These 4 are LOCKED. The other 17 recommendations remain READY-FOR-REVIEW;
|
||||
@@ -22,7 +22,7 @@ m may challenge any in the review pass.
|
||||
Angepinnt / Status / Typ / Mit aktiven Fristen) with **AND-across-chips,
|
||||
OR-within-multi-select** combinatorics, plus a single prominent search input that
|
||||
filters the active view (in-place for tree; substring filter for cards / flat).
|
||||
Pinning is a per-user dot table (`paliad.user_pinned_projects`, migration 058) with
|
||||
Pinning is a per-user dot table (`paliad.user_pinned_projects`, migration 060) with
|
||||
a star marker on every row/card + an "Angepinnt" filter chip.
|
||||
|
||||
**Cards view** (m's addition 2026-05-07 22:00) is a quick-overview surface:
|
||||
@@ -110,7 +110,7 @@ m's framing 2026-05-07 21:52:
|
||||
3. Visibility (`paliad.can_see_project`) already extends through ancestors
|
||||
+ descendants + partner-unit derivation (t-139 shipped). Nothing to add
|
||||
on the visibility front.
|
||||
4. Migration tracker is at 057 (next available is 058).
|
||||
4. Migration tracker is at 059 on main (058 = paliadin_poc t-146, 059 = profession_vs_responsibility t-148, both shipped 2026-05-07). Next available is 060 (PR 1) and 061 (PR 2).
|
||||
5. The Custom Views substrate (t-144) is **NOT** the right place for projects
|
||||
— see §6.
|
||||
|
||||
@@ -329,7 +329,7 @@ row but the row is full-width and tappable.
|
||||
|
||||
### 4.7 Pinning storage (Q9, Q11)
|
||||
|
||||
New table `paliad.user_pinned_projects`. Migration 058 (next available).
|
||||
New table `paliad.user_pinned_projects`. Migration 060 (next available).
|
||||
|
||||
```sql
|
||||
CREATE TABLE paliad.user_pinned_projects (
|
||||
@@ -532,7 +532,7 @@ Default visible facts (all on by default):
|
||||
|
||||
m chose **full per-user customisation with named layouts**. Implementation:
|
||||
|
||||
**New table — migration 059:**
|
||||
**New table — migration 061:**
|
||||
|
||||
```sql
|
||||
CREATE TABLE paliad.user_card_layouts (
|
||||
@@ -806,10 +806,10 @@ size today. Lazy-loading deferred to when telemetry shows it matters.
|
||||
|
||||
## 7. Data model
|
||||
|
||||
One new table (migration 058):
|
||||
One new table (migration 060):
|
||||
|
||||
```sql
|
||||
-- 058_user_pinned_projects.up.sql
|
||||
-- 060_user_pinned_projects.up.sql
|
||||
|
||||
CREATE TABLE paliad.user_pinned_projects (
|
||||
user_id uuid NOT NULL REFERENCES paliad.users(id) ON DELETE CASCADE,
|
||||
@@ -973,7 +973,7 @@ would be nice but is a v2 follow-on. Out of scope.
|
||||
**Two-PR split** (added with Cards-view scope):
|
||||
|
||||
- **PR 1 — Tree-first redesign + chips + pinning + search.** ~1100-1400 LoC.
|
||||
- Migration 058 (`paliad.user_pinned_projects`, ~30 LoC).
|
||||
- Migration 060 (`paliad.user_pinned_projects`, ~30 LoC).
|
||||
- PinService (~80 LoC) + handlers (~50 LoC).
|
||||
- `BuildTree` extension with `BuildTreeOptions` (~250 LoC) — chip filters,
|
||||
subtree counts, `?scope=mine` greyed-ancestor branch, `?q=…` server-side.
|
||||
@@ -986,7 +986,7 @@ would be nice but is a v2 follow-on. Out of scope.
|
||||
|
||||
- **PR 2 — Project Cards view + drag-rearrange named layouts.** ~1300-1700
|
||||
LoC (bumped from ~700-900 by the locked Q21 = full drag-rearrange).
|
||||
- Migration 059 (`paliad.user_card_layouts`, ~40 LoC).
|
||||
- Migration 061 (`paliad.user_card_layouts`, ~40 LoC).
|
||||
- `CardLayoutService` (CRUD + auto-seed default + tx-flip-default) (~150 LoC).
|
||||
- Layout-JSON validator (`layout_spec.go`, fact-key registry, count
|
||||
bounds, title-row invariant) (~120 LoC).
|
||||
@@ -1074,7 +1074,7 @@ metadata that Tree already has.
|
||||
|
||||
### 11.7 Cards customisation in localStorage vs server table
|
||||
|
||||
m chose option (c) — server-side `paliad.user_card_layouts` (migration 059)
|
||||
m chose option (c) — server-side `paliad.user_card_layouts` (migration 061)
|
||||
with named layouts and drag-rearrange. Layouts follow the user across
|
||||
devices automatically. Trade-off: more surface to ship, more UX to design
|
||||
(layout dropdown, edit mode, drag-and-drop, save/discard semantics). Cost
|
||||
@@ -1110,7 +1110,7 @@ The 4 surfaced questions answered by m via AskUserQuestion this session:
|
||||
Seed "Standard" layout = title + type + status + clientmatter + parent
|
||||
path + deadline counts + next 3 + last 3 + team. See §5b.4.
|
||||
3. **New-Q21 Cards customisation → (c) Full drag-rearrange + named layouts.**
|
||||
New `paliad.user_card_layouts` table (migration 059). HTML5 drag-and-drop
|
||||
New `paliad.user_card_layouts` table (migration 061). HTML5 drag-and-drop
|
||||
edit mode. CRUD endpoints. See §5b.3.
|
||||
4. **Q13 search shape → (c) Both simultaneously.**
|
||||
Page input does in-place filter on the active view (Tree / Cards / Flat).
|
||||
@@ -1126,7 +1126,7 @@ in the next pass. Recommendations m hasn't explicitly addressed:
|
||||
- Q6 lazy-loading (deferred — full tree fits today)
|
||||
- Q7 inline counts (subtree-aggregated default, "nur direkt" toggle)
|
||||
- Q8 affordances (always-visible pin star + click-row-open + no context menu)
|
||||
- Q9 pin storage (paliad.user_pinned_projects, migration 058)
|
||||
- Q9 pin storage (paliad.user_pinned_projects, migration 060)
|
||||
- Q10 pin display (recommended option (a) — star marker only)
|
||||
- Q11 pins per-user (confirmed)
|
||||
- Q12 search scope (title + parent path + reference + clientmatter)
|
||||
@@ -1145,8 +1145,8 @@ in the next pass. Recommendations m hasn't explicitly addressed:
|
||||
### PR 1 — Tree + chips + pin + search
|
||||
|
||||
Backend:
|
||||
- `internal/db/migrations/058_user_pinned_projects.up.sql` (NEW, ~30 LoC)
|
||||
- `internal/db/migrations/058_user_pinned_projects.down.sql` (NEW)
|
||||
- `internal/db/migrations/060_user_pinned_projects.up.sql` (NEW, ~30 LoC)
|
||||
- `internal/db/migrations/060_user_pinned_projects.down.sql` (NEW)
|
||||
- `internal/services/pin_service.go` (NEW, ~80 LoC)
|
||||
- `internal/services/project_service.go` (extend `BuildTree`, ~250 LoC)
|
||||
- `internal/handlers/projects.go` (route registration, query-param parsing, ~80 LoC)
|
||||
@@ -1167,8 +1167,8 @@ Frontend:
|
||||
### PR 2 — Cards view + drag-rearrange named layouts
|
||||
|
||||
Backend:
|
||||
- `internal/db/migrations/059_user_card_layouts.up.sql` (NEW, ~40 LoC)
|
||||
- `internal/db/migrations/059_user_card_layouts.down.sql` (NEW)
|
||||
- `internal/db/migrations/061_user_card_layouts.up.sql` (NEW, ~40 LoC)
|
||||
- `internal/db/migrations/061_user_card_layouts.down.sql` (NEW)
|
||||
- `internal/services/layout_spec.go` (NEW, fact-key registry + JSON validator, ~120 LoC)
|
||||
- `internal/services/card_layout_service.go` (NEW, CRUD + auto-seed
|
||||
default + tx-flip-default, ~150 LoC)
|
||||
|
||||
Reference in New Issue
Block a user