feat: Phase 1 spec fixes — H1-H5 + Bookmark rename + B1 middleware#1200
feat: Phase 1 spec fixes — H1-H5 + Bookmark rename + B1 middleware#1200le-dawg wants to merge 341 commits into
Conversation
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com> Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/2c26aef7-3ba9-4ef9-991e-0976756f503c
…sorting-and-deletion Fix tags admin bulk-delete parse error
Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/6eec3745-a1f6-4d81-8513-7b29510e42fe Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…caping Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…as HTML Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…ng or encoding Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Potential fix for code scanning alert no. 24: Double escaping or unescaping
…rofile feat: Admin Delete User from Profile Page
Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/5e80a312-f424-4179-ad30-cb9065992835 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…-merge-logic Move middleware.ts to src/middleware.ts, absorb src/proxy.ts
- Install @vercel/speed-insights package - Add SpeedInsights component to root layout - Enable real-time performance monitoring for the application Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…thorized-error Add Vercel Speed Insights integration
Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/128431b7-8013-4f0a-a585-924ececd83f2 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…uthorized-errors Add structured [AUTH] logging to diagnose unauthorized redirects
… NextAuth v5 Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/cc33612c-60aa-4827-8af8-ca6025a19039 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/e0759abe-7c5c-484b-b6e8-68b080deb807 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
… callback Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/e0759abe-7c5c-484b-b6e8-68b080deb807 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/56d751bb-764c-46fb-8a2f-a0af8a275062 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
fix: NextAuth `error=Configuration` on GitHub sign-in
1. src/lib/auth/index.ts: Add githubUsername to both db.user.findUnique
selects in jwt callback; update admin checks to evaluate both
dbUser.githubUsername and dbUser.username (OR logic via De Morgan's law)
2. src/middleware.ts: Add NEXTAUTH_SECRET fallback to getToken secret
3. src/app/unauthorized/page.tsx: Change Go Home link to /login with
prefetch=false to prevent prefetch bouncing back to /unauthorized
4. src/components/layout/header.tsx: Wrap all protected nav links
(/prompts, /skills, /taste, /workflows, /categories, /tags,
/discover, /promptmasters) in {user && (...)} for both mobile
and desktop menus to eliminate background prefetch spam
Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/cf338f63-b46e-4dbc-831b-4581051a55d7
Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Fix infinite 401 redirect loop, admin lockout via username sanitization, and middleware secret mismatch
… discovery Agent-Logs-Url: https://github.com/solution8-com/S8-Utility-Promptschat/sessions/62b75c31-b63b-4218-a2a1-afe38d226947 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
- Remove hardcoded skill.nd.json requirement for folder uploads - Support dragging single skill files in addition to folders - Enable direct download of single-file skills (not wrapped in ZIP) - Maintain ZIP download for multi-file skills - Add comprehensive tests for skill editor functionality This addresses the user's request to improve skill uploading through the DUI interface with drag-and-drop capabilities and flexible download options.
Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/a8701f05-ff65-4494-a857-a72669cadf72 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/a8701f05-ff65-4494-a857-a72669cadf72 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/a8701f05-ff65-4494-a857-a72669cadf72 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…lization Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/a8701f05-ff65-4494-a857-a72669cadf72 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/a8701f05-ff65-4494-a857-a72669cadf72 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Fix PR #59 review issues in SkillEditor drop flow and single-file download headers
…replace confirmation dialog Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/14aeefbc-78ff-4065-a56e-e9bc1b85b4f3 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…t is correct Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/0b9c9ac3-0a1a-47b7-805a-3f70ebac4477 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…mits feat(skill): enhance upload/download capabilities - Remove hardcoded skill.nd.json requirement for folder uploads - Support dragging single skill files in addition to folders - Enable direct download of single-file skills (not wrapped in ZIP) - Maintain ZIP download for multi-file skills - Add comprehensive tests for skill editor functionality This addresses the user's request to improve skill uploading through the DUI interface with drag-and-drop capabilities and flexible download options.
Entire-Checkpoint: 75bf672334cb
…mits hook fix + test changes (4 files)
…pansion URLs containing query params (e.g. ?users=le-dawg) were embedded unquoted in the claude and gemini CLI commands, causing zsh to treat ? as a glob wildcard and fail with "no matches found". Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: 708305c02561
Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/13b45d86-8185-4467-b86e-ca9f6183443f Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/13b45d86-8185-4467-b86e-ca9f6183443f Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
fix: quote MCP URL in generated shell commands
MCP clients (Claude Code, Cursor, etc.) use PROMPTS_API_KEY header auth and have no browser session. Middleware was blocking before the route handler could validate the key, causing 401 → OAuth probe → HTML parse error. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: ecba472feaaa
…ut fix Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/b491529a-397e-4670-a282-b84f10388b2f Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
… behind showOfficialBranding Agent-Logs-Url: https://github.com/solution8-com/AIRstack-Promptbar/sessions/3790ce93-195b-4962-8a03-254299c33f28 Co-authored-by: le-dawg <3172733+le-dawg@users.noreply.github.com>
…eject-button Fix admin change-request actions + env-driven MCP branding across all clients
Entire-Checkpoint: 2fa989faaa05
…entHash, username stability Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: e271fadc42c8
…Phase 1 Includes forward migration (20260604000000) and rollback migration (20260604000001). All db.collection.* refs → db.bookmark.*, collectedBy relation → bookmarks. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: af62f2909406
…se 1 integrity computePromptContentHash() in src/lib/collections/content-hash.ts provides order-independent SHA-256 over skill content + alphabetically sorted files. Wired into add_file_to_skill, update_skill_file, remove_file_from_skill with try/catch guard (no-op until Phase 1 CollectionItem table is migrated). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: 6e9c47ad453c
…se 1 marketplace URL stability) Guard checks collection visibility before allowing username rename; test suite covers locked, unlocked, and unchanged-username paths. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: 210d55d1757f
…sma rename Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: f01f362e1317
…leware exemption prisma/migrations/ is apply-only — migrate deploy would have renamed bookmarks back to collections. Rollback script now lives in prisma/manual-rollbacks/ for manual use only. Also commits the /api/collections PUBLIC_PATHS exemption (B1 fix) and its tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Entire-Checkpoint: 63ca5e85f1f5
|
Important Review skippedToo many files! This PR contains 277 files, which is 127 over the limit of 150. To get a review, narrow the scope: ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (7)
📒 Files selected for processing (277)
You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
model Collection→model Bookmark(@@map("bookmarks")) frees thecollectionstable name for Phase 1 marketplace schema; forward migration + manual rollback script added/api/collectionsadded toPUBLIC_PATHSin middleware so collection routes aren't 401'd before route code runscomputePromptContentHash()utility (src/lib/collections/content-hash.ts) — SHA-256 over main content + alphabetically sorted skill files; recomputation hook wired into MCPadd_file_to_skill,update_skill_file,remove_file_from_skillwith pre-migration try/catch guardrole=ADMINTest Plan
npx vitest run)prisma generateworks:DATABASE_URL="postgresql://placeholder" DIRECT_URL="postgresql://placeholder" npx prisma generateusername_locked/api/collectionsroutes accessible without session (middleware exemption)Notes
prisma/manual-rollbacks/— NOT inprisma/migrations/(Prisma would auto-apply it and rename bookmarks back to collections)CollectionItemtable exists (Phase 1 migration)(db as any).collection?.count— will be a typed call once Phase 1 schema lands🤖 Generated with Claude Code