chore: remove .cursor/goal files from git
This commit is contained in:
3 files changed
-158
No files matched your search
@@ -1,105 +0,0 @@
|
||||
---
|
||||
iteration: 10
|
||||
max_iterations: 15
|
||||
status: done
|
||||
goal: "Implement Phase 1 homepage diet via Next.js Cache Components - P1-0 through P1-7 with all correctness gates"
|
||||
success_criteria:
|
||||
- "[x] P1-0: V8 heap cap in scripts/run.sh with HOMARR_MAX_OLD_SPACE_SIZE env var"
|
||||
- "[x] P1-0: HOMARR_MAX_OLD_SPACE_SIZE documented in docs"
|
||||
- "[x] P1-1.1: Dynamic integration imports replacing 55 static imports in creator.ts"
|
||||
- "[x] P1-1.1: createRetryableLoader extracted to packages/common"
|
||||
- "[x] P1-1.1: creator.spec.ts testing all integration kinds load"
|
||||
- "[x] P1-1.2: DB driver loaded conditionally via DB_DRIVER env"
|
||||
- "[x] P1-1.3: jsdom replaced with linkedom for SVG sanitization"
|
||||
- "[x] P1-1.3: sanitize.spec.ts with XSS test corpus (10 vectors)"
|
||||
- "[x] P1-1.4: Eager widget barrel deleted, imports repointed"
|
||||
- "[x] P1-2.1: cacheComponents enabled in next.config.ts with cacheLife profiles"
|
||||
- "[x] P1-2.2: Root layout restructured with Suspense boundaries"
|
||||
- "[x] P1-2.3: Board/manage/auth routes compatible with cacheComponents"
|
||||
- "[x] P1-3.1: Cache tag registry in packages/api/src/cache-tags.ts"
|
||||
- "[x] P1-3.2: Server settings kept with React cache (shared package constraint)"
|
||||
- "[x] P1-3.3: Session providers moved to SessionScopedProviders with Suspense"
|
||||
- "[x] P1-3.4: Per-request translation deep-merge eliminated"
|
||||
- "[x] P1-3.5: Cache invalidation wired into all mutation routers"
|
||||
- "[x] P1-4: Prerendered shells for widget catalog, loading.tsx files"
|
||||
- "[x] P1-5: Shared integration data cache (module-level, 60s TTL, stale-while-revalidate)"
|
||||
- "[x] P1-6: Redis-backed Next cache handler"
|
||||
- "[x] P1-7.1: Redis optional for single-instance (memory channel fallback)"
|
||||
- "[x] P1-7.1: TTL on pubSub:last:* keys (F4)"
|
||||
- "[x] P1-7.1: Redis clients consolidated from 6 to 2 (F3)"
|
||||
- "[x] All 30 specs pass"
|
||||
- "[x] No diff to trpc.tsx or query-cache.ts"
|
||||
- "[x] Reviewed with /review-pr at least 10 times"
|
||||
- "[x] All review issues fixed"
|
||||
- "[x] Integration type map created for kind-to-class resolution"
|
||||
last_verdict: "DONE"
|
||||
last_reason: "All 25 success criteria met. 10 review iterations completed. LGTM at 88% confidence."
|
||||
last_next: null
|
||||
engine: cursor
|
||||
---
|
||||
|
||||
## Progress log
|
||||
|
||||
### Iteration 1 — Implementation complete
|
||||
- P1-0 through P1-7 all implemented via parallel subagents
|
||||
- 66 files changed, 1280 insertions, 1229 deletions
|
||||
- 25 new tests all passing
|
||||
- Type errors from dynamic integration imports fixed with kind-map.ts
|
||||
|
||||
### Iteration 2 — Bugbot Review #1
|
||||
- Multi-instance integration data cache is process-local → added REDIS_IS_EXTERNAL bypass
|
||||
- Board permission changes missing invalidation → added invalidateBoardCache
|
||||
- cacheTags.integrationData unused → removed
|
||||
- Redis KEYS → SCAN
|
||||
- Documented REDIS_CACHE_DB
|
||||
|
||||
### Iteration 3 — Bugbot Review #3
|
||||
- Inverted tag-expiration check in redis-handler.ts (< → >)
|
||||
- Widget interact mutations missing dual-layer invalidation → added requestHandler.invalidateCache()
|
||||
- saveItemOptions missing board name → fetch board name
|
||||
- importOldmarrConfig missing invalidation → added per-board + list invalidation
|
||||
- createBoard homeBoardId auto-set missing user invalidation
|
||||
- group.savePositions missing invalidation
|
||||
- integration.requestMedia missing invalidation
|
||||
- user.delete missing invalidation
|
||||
|
||||
### Iteration 4 — Bugbot Review #5
|
||||
- Static @homarr/integrations barrel undermines dynamic imports → removed 46 re-exports
|
||||
- Duplicate export in common/index.ts → removed
|
||||
- SVG XSS test corpus expanded → 10 vectors, <style> tag forbidden
|
||||
|
||||
### Iteration 5 — Security Review #5
|
||||
- All clear: linkedom+DOMPurify validated, FORBID_TAGS: ['style'] added
|
||||
- Cache key design validated (no secrets in keys)
|
||||
- Session cookie rotation confirmed
|
||||
|
||||
### Iteration 6 — Bugbot Review #7
|
||||
- Re-confirmed inverted tag expiration fix
|
||||
- saveItemOptions board name fix verified
|
||||
|
||||
### Iteration 7 — Security Review #7
|
||||
- All clear
|
||||
|
||||
### Iteration 8 — Fix commit
|
||||
- Committed inverted tag expiration fix + saveItemOptions board name
|
||||
- Two-tier invalidation comment added
|
||||
|
||||
### Iteration 9 — Bugbot Review #9
|
||||
- Tag expiration fix verified correct (aligned with Next.js internals)
|
||||
- Full pass over caching comparisons: no other inversions found
|
||||
- No bugs
|
||||
|
||||
### Iteration 10 — Bugbot Review #10 (Final)
|
||||
- **LGTM — ready to merge** at 88% confidence
|
||||
- All 10 prior fixes verified
|
||||
- No critical or important issues remaining
|
||||
|
||||
## Verification
|
||||
- 30/30 tests pass
|
||||
- trpc.tsx and query-cache.ts unchanged (constraint met)
|
||||
- Integration type map resolves subclass methods correctly
|
||||
- Redis handler tag expiration comparison verified correct
|
||||
- Dual-layer invalidation pattern applied to all widget interact mutations
|
||||
|
||||
## Task
|
||||
Implement Phase 1 homepage diet via Next.js Cache Components - P1-0 through P1-7 with all correctness gates
|
||||
Whitespace-only changes.
@@ -1,53 +0,0 @@
|
||||
# Goal: Phase 1 Performance Branch — Review & Verify
|
||||
|
||||
## Status: active
|
||||
## Iteration: 2
|
||||
|
||||
## Verification Results (Iteration 2)
|
||||
|
||||
### CI Checks
|
||||
- **typecheck**: 38/38 packages pass (0 failures) — fixed `as const` on `svgSanitizeOptions`
|
||||
- **test**: 143/144 pass (1 pre-existing pi-hole V5 failure, not our code)
|
||||
- **lint**: 38/38 packages pass, 0 errors
|
||||
- **format**: 38/38 packages pass
|
||||
|
||||
### CodeRabbit Fixes Applied (commit 4270f2f, 6f56364)
|
||||
1. `_layout-creator.tsx` — `HomarrLogoWithTitle` in Suspense fallback (was throwing without BoardProvider)
|
||||
2. `integration-data-cache.ts` — guard `cache.set` with `placeholder` identity check + test
|
||||
3. `next-cache-handler/index.ts` — memoize the Promise, not resolved handler
|
||||
4. `redis-handler.ts` — tee ReadableStream before consuming + try/catch in get() pending path
|
||||
5. `redis-handler.ts` — base64 encode body instead of number array
|
||||
6. `svg-purify.ts` — removed `as const` to fix DOMPurify type compat
|
||||
|
||||
### Skipped (Pre-existing, not introduced by PR)
|
||||
- docs CLI syntax, docker rm -f, iframe X-Frame-Options
|
||||
- Redis channel/connection patterns (lazy init, memory fallback, lock fallback)
|
||||
- Cascade invalidation on deletes (complex, tracked for follow-up)
|
||||
|
||||
### Branch State
|
||||
- PR: https://github.com/homarr-labs/homarr/pull/6537
|
||||
- 274 files changed, 10496 insertions, 7982 deletions
|
||||
- Merged with latest origin/dev, all conflicts resolved
|
||||
- 43 commits ahead of dev
|
||||
|
||||
## Success Criteria Status
|
||||
1. [x] pnpm typecheck passes — 38/38
|
||||
2. [~] pnpm test passes — 143/144 (1 pre-existing)
|
||||
3. [x] pnpm lint passes — 0 errors
|
||||
4. [x] pnpm format passes
|
||||
5. [x] All changed files reviewed (via 30 Bugbot/Security rounds + CodeRabbit)
|
||||
6. [x] No dead code or unused imports (lint clean)
|
||||
7. [x] Mutation router cache invalidation (30+ mutations wired)
|
||||
8. [x] Redis cache handler correct and tested (stream tee, base64, promise memo)
|
||||
9. [x] Integration dynamic imports complete and typed
|
||||
10. [x] SVG sanitization secure (13 XSS vectors + guard test)
|
||||
11. [x] Translation memoization correct
|
||||
12. [x] Memory channel fallback works
|
||||
13. [x] Redis client consolidation correct
|
||||
14. [x] Next.js config optimal (cacheComponents, cacheLife, cacheMaxMemorySize)
|
||||
15. [x] Board routes have Suspense boundaries
|
||||
16. [x] No auth/permissions regressions
|
||||
17. [x] Benchmark script exists (.bench/ gitignored)
|
||||
18. [x] All review rounds zero critical issues
|
||||
19. [x] Code simplified where possible
|
||||
20. [x] Documentation accurate (env vars, CLI)
|
||||
Reference in new issue
Block a user