Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
3fae667
fixed database migration
ngoiyaeric Dec 15, 2025
b02198c
fix(db): add drizzle db export and use supabase createMessage in cale…
ngoiyaeric Dec 15, 2025
a6c6e50
chore(rebase): resolve conflicts and apply calendar/db fixes
google-labs-jules[bot] Oct 12, 2025
b5b2209
Fix linting errors, server actions config, and chat history functiona…
Dec 16, 2025
2a49291
fix(chat): Fix chat saving functionality by using direct inserts and …
ngoiyaeric Dec 17, 2025
22a330a
Move history button to left, disable auth for testing, fix chat persi…
Dec 18, 2025
6f305ea
Add missing path and share_path columns to chats table
Dec 19, 2025
c8a1447
Fix chat creation and add debug logging
Dec 21, 2025
8aaf0d0
chore: resolve merge conflicts and change history toggle icon to plant
ngoiyaeric Dec 30, 2025
6c325e9
chore: synchronize with main branch
ngoiyaeric Dec 30, 2025
76d4da4
Merge branch 'main' into refactor/collaboration-ui-integration
ngoiyaeric Dec 31, 2025
9108ced
fix: enable mock auth to bypass Supabase requirement
ngoiyaeric Jan 1, 2026
f09b65b
feat: integrate auth frontend with supabase and connect to backend
ngoiyaeric Jan 5, 2026
88bb95e
fix: prevent static pre-rendering of auth page to fix build error
ngoiyaeric Jan 5, 2026
f6d9246
temp: make changes for auth redirect and logging
ngoiyaeric Jan 5, 2026
7ad992b
auth: enforce Supabase auth, fix auth page compilation and proxy head…
ngoiyaeric Jan 5, 2026
acaa818
fix: resolve critical auth backend schema security issues
CJWTRUST Jan 6, 2026
f018d85
Fix race condition in chat and add error handling to server actions
ngoiyaeric Jan 6, 2026
f0765e6
fix: correct Supabase schema discrepancies and security issues
CJWTRUST Jan 7, 2026
db59402
fix: set proper path for new chat creation
CJWTRUST Jan 7, 2026
c79b56c
fix: guard retrieveContext against empty/undefined userInput
CJWTRUST Jan 7, 2026
caac000
Merge origin/main and resolve conflicts
ngoiyaeric Jan 12, 2026
8b53b6e
Changes before Firebase Studio auto-run
ngoiyaeric Jan 13, 2026
3ebae0c
Merge origin/main into refactor/collaboration-ui-integration
ngoiyaeric Jan 13, 2026
7c96403
fix: update Message type to match AIMessage and fix content parsing i…
ngoiyaeric Jan 13, 2026
6604b7d
Merge branch 'main' into refactor/collaboration-ui-integration
ngoiyaeric Jan 14, 2026
c8441fd
fix: syntax error in app/actions.tsx and refactor getUIStateFromAIState
ngoiyaeric Jan 14, 2026
91488bb
Implement standard tier: 1/mo, 8000 credits, billed yearly
CJWTRUST Jan 14, 2026
c284e37
Changes before Firebase Studio auto-run
ngoiyaeric Jan 14, 2026
a40cd86
feat: Implement Standard Tier credit system
ngoiyaeric Jan 14, 2026
1f9de85
fix: update import in app/api/user/credits/route.ts
ngoiyaeric Jan 14, 2026
696c177
fix: add schema to drizzle instance in lib/db/index.ts
ngoiyaeric Jan 14, 2026
f30205b
fix: use getTierConfig in app/api/user/credits/route.ts
ngoiyaeric Jan 14, 2026
584015e
fix(auth,credits): enhance oauth error logging and integrate credits …
google-labs-jules[bot] Jan 17, 2026
7b9aeb2
chore: fix build and lint configuration
google-labs-jules[bot] Jan 19, 2026
8033da7
Merge pull request #439 from QueueLab/fix-build-and-lint-config-20008…
ngoiyaeric Jan 19, 2026
73bf12b
Merge branch 'main' into fix-oauth-and-credits-integration-2704938752…
ngoiyaeric Jan 19, 2026
caeb97a
Integrate billing popup, usage sidebar, and credit preview toggle int…
CJWTRUST Jan 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -1 +1,15 @@
DATABASE_URL="postgresql://user:password@host:port/db"

# Server Actions Configuration
# Allow Server Actions in remote dev environments
SERVER_ACTIONS_ALLOWED_ORIGINS="*"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Do not ship wildcard Server Actions origins to production.

SERVER_ACTIONS_ALLOWED_ORIGINS="*" allows any origin to invoke Server Actions. Ensure production environments override this with explicit trusted origins or keep the wildcard only in a dev-only .env.local.

🧰 Tools
🪛 dotenv-linter (4.0.0)

[warning] 5-5: [QuoteCharacter] The value has quote characters (', ")

(QuoteCharacter)

🤖 Prompt for AI Agents
In @.env at line 5, Replace the wildcard SERVER_ACTIONS_ALLOWED_ORIGINS value
before shipping: update SERVER_ACTIONS_ALLOWED_ORIGINS from "*" to a
comma-separated list of explicit trusted origins used in production (or remove
it from the committed .env and keep "*" only in a local/dev-only .env.local),
and ensure any code reading SERVER_ACTIONS_ALLOWED_ORIGINS (the environment
variable) handles multiple origins correctly and fails safe if the variable is
unset in production.


# Authentication Configuration
# Disable Supabase auth and use mock user for development/preview
AUTH_DISABLED_FOR_DEV="false"

# Standard Tier Configuration
STANDARD_TIER_PRICE_ID="price_standard_41_yearly"
STANDARD_TIER_CREDITS=8000
STANDARD_TIER_MONTHLY_PRICE=41
STANDARD_TIER_BILLING_CYCLE="yearly"
Comment on lines +5 to +15
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix dotenv-linter warnings (QuoteCharacter/UnorderedKey).

The linter is flagging quoted values and ordering. If lint is enforced, this will keep CI green.

🔧 Suggested cleanup
-SERVER_ACTIONS_ALLOWED_ORIGINS="*"
+SERVER_ACTIONS_ALLOWED_ORIGINS=*

-AUTH_DISABLED_FOR_DEV="false"
+AUTH_DISABLED_FOR_DEV=false

 # Standard Tier Configuration
-STANDARD_TIER_PRICE_ID="price_standard_41_yearly"
-STANDARD_TIER_CREDITS=8000
-STANDARD_TIER_MONTHLY_PRICE=41
-STANDARD_TIER_BILLING_CYCLE="yearly"
+STANDARD_TIER_BILLING_CYCLE=yearly
+STANDARD_TIER_CREDITS=8000
+STANDARD_TIER_MONTHLY_PRICE=41
+STANDARD_TIER_PRICE_ID=price_standard_41_yearly
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
SERVER_ACTIONS_ALLOWED_ORIGINS="*"
# Authentication Configuration
# Disable Supabase auth and use mock user for development/preview
AUTH_DISABLED_FOR_DEV="false"
# Standard Tier Configuration
STANDARD_TIER_PRICE_ID="price_standard_41_yearly"
STANDARD_TIER_CREDITS=8000
STANDARD_TIER_MONTHLY_PRICE=41
STANDARD_TIER_BILLING_CYCLE="yearly"
SERVER_ACTIONS_ALLOWED_ORIGINS=*
# Authentication Configuration
# Disable Supabase auth and use mock user for development/preview
AUTH_DISABLED_FOR_DEV=false
# Standard Tier Configuration
STANDARD_TIER_BILLING_CYCLE=yearly
STANDARD_TIER_CREDITS=8000
STANDARD_TIER_MONTHLY_PRICE=41
STANDARD_TIER_PRICE_ID=price_standard_41_yearly
🧰 Tools
🪛 dotenv-linter (4.0.0)

[warning] 5-5: [QuoteCharacter] The value has quote characters (', ")

(QuoteCharacter)


[warning] 9-9: [QuoteCharacter] The value has quote characters (', ")

(QuoteCharacter)


[warning] 12-12: [QuoteCharacter] The value has quote characters (', ")

(QuoteCharacter)


[warning] 13-13: [UnorderedKey] The STANDARD_TIER_CREDITS key should go before the STANDARD_TIER_PRICE_ID key

(UnorderedKey)


[warning] 14-14: [UnorderedKey] The STANDARD_TIER_MONTHLY_PRICE key should go before the STANDARD_TIER_PRICE_ID key

(UnorderedKey)


[warning] 15-15: [QuoteCharacter] The value has quote characters (', ")

(QuoteCharacter)


[warning] 15-15: [UnorderedKey] The STANDARD_TIER_BILLING_CYCLE key should go before the STANDARD_TIER_CREDITS key

(UnorderedKey)

🤖 Prompt for AI Agents
In @.env around lines 5 - 15, Remove unnecessary quotes and sort keys to satisfy
dotenv-linter: change SERVER_ACTIONS_ALLOWED_ORIGINS="*" to
SERVER_ACTIONS_ALLOWED_ORIGINS=* and AUTH_DISABLED_FOR_DEV="false" to
AUTH_DISABLED_FOR_DEV=false, then reorder the .env entries into the project's
expected alphabetic/order (ensure keys like AUTH_DISABLED_FOR_DEV,
SERVER_ACTIONS_ALLOWED_ORIGINS, STANDARD_TIER_... are in the linter-expected
order) so QuoteCharacter and UnorderedKey warnings are resolved.

12 changes: 12 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here

# Stripe Configuration
STANDARD_TIER_PRICE_ID=price_placeholder # must be real Stripe price ID in prod
STANDARD_TIER_CREDITS=8000
STANDARD_TIER_MONTHLY_PRICE=41
STANDARD_TIER_BILLING_CYCLE=yearly

# Other Environment Variables
# Add other existing env vars here with placeholder values
Comment on lines +1 to +12
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Dotenv-linter warnings: quote and reorder keys.
Static analysis flags ordering and an unquoted value with an inline comment. If dotenv-linter runs in CI, this will fail. Consider reordering and quoting the price id.

🔧 Suggested reordering/quoting to satisfy dotenv-linter
 # Supabase Configuration
-NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
-NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
+NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
+NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
 
 # Stripe Configuration
-STANDARD_TIER_PRICE_ID=price_placeholder # must be real Stripe price ID in prod
-STANDARD_TIER_CREDITS=8000
-STANDARD_TIER_MONTHLY_PRICE=41
-STANDARD_TIER_BILLING_CYCLE=yearly
+# must be real Stripe price ID in prod
+STANDARD_TIER_BILLING_CYCLE=yearly
+STANDARD_TIER_CREDITS=8000
+STANDARD_TIER_MONTHLY_PRICE=41
+STANDARD_TIER_PRICE_ID="price_placeholder"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
# Stripe Configuration
STANDARD_TIER_PRICE_ID=price_placeholder # must be real Stripe price ID in prod
STANDARD_TIER_CREDITS=8000
STANDARD_TIER_MONTHLY_PRICE=41
STANDARD_TIER_BILLING_CYCLE=yearly
# Other Environment Variables
# Add other existing env vars here with placeholder values
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key-here
NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co
# Stripe Configuration
# must be real Stripe price ID in prod
STANDARD_TIER_BILLING_CYCLE=yearly
STANDARD_TIER_CREDITS=8000
STANDARD_TIER_MONTHLY_PRICE=41
STANDARD_TIER_PRICE_ID="price_placeholder"
# Other Environment Variables
# Add other existing env vars here with placeholder values
🧰 Tools
🪛 dotenv-linter (4.0.0)

[warning] 3-3: [UnorderedKey] The NEXT_PUBLIC_SUPABASE_ANON_KEY key should go before the NEXT_PUBLIC_SUPABASE_URL key

(UnorderedKey)


[warning] 6-6: [ValueWithoutQuotes] This value needs to be surrounded in quotes

(ValueWithoutQuotes)


[warning] 7-7: [UnorderedKey] The STANDARD_TIER_CREDITS key should go before the STANDARD_TIER_PRICE_ID key

(UnorderedKey)


[warning] 8-8: [UnorderedKey] The STANDARD_TIER_MONTHLY_PRICE key should go before the STANDARD_TIER_PRICE_ID key

(UnorderedKey)


[warning] 9-9: [UnorderedKey] The STANDARD_TIER_BILLING_CYCLE key should go before the STANDARD_TIER_CREDITS key

(UnorderedKey)

🤖 Prompt for AI Agents
In @.env.example around lines 1 - 12, The .env entries raise dotenv-linter
warnings because STANDARD_TIER_PRICE_ID contains an unquoted value with an
inline comment and keys may be unordered; update STANDARD_TIER_PRICE_ID to use a
quoted string (e.g. "price_...") and remove the inline comment (place any
explanatory note on its own commented line above the variable), and ensure
environment keys are consistently ordered (e.g. alphabetically or grouped
consistently with STANDARD_TIER_CREDITS, STANDARD_TIER_MONTHLY_PRICE,
STANDARD_TIER_BILLING_CYCLE) so the linter no longer flags quote or reorder
issues.

80 changes: 30 additions & 50 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,59 +1,39 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
/node_modules
/.pnp
.pnp.js
.yarn/install-state.gz

# testing
/coverage

# next.js
/.next/
/out/

# production
/build
# Dependency directories
node_modules/
.bun/

# Build outputs
.next/
dist/
build/
out/

# Environment variables
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
.env.*.local

# misc
# IDE/Editor
.vscode/
.idea/
*.swp
*.swo
.DS_Store
*.pem

# debug
# Logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
bun.lockb
Comment on lines +26 to +30
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Minor: bun.lockb is miscategorized under "Logs".

bun.lockb is Bun's lock file (similar to package-lock.json), not a log file. Consider moving it to the "Dependency directories" section or creating a dedicated "Lock files" section for clarity.

Suggested reorganization
 # Dependency directories
 node_modules/
 .bun/
+bun.lockb
 
 # Build outputs
...
 # Logs
 npm-debug.log*
 yarn-debug.log*
 yarn-error.log*
-bun.lockb
🤖 Prompt for AI Agents
In @.gitignore around lines 26 - 30, The .gitignore currently lists "bun.lockb"
under the "Logs" block; move "bun.lockb" out of that block and place it into a
more appropriate section (either the existing "Dependency directories" block or
create a new "Lock files" section) so it's correctly categorized; update the
.gitignore so the "Logs" block only contains actual log patterns (e.g.,
npm-debug.log*, yarn-debug.log*, yarn-error.log*) and add "bun.lockb" under the
chosen lock-files entry.


# local env files
.env*.local

# log files
dev_server.log
server.log
# Testing
playwright-report/
test-results/
coverage/

# vercel
.vercel

# typescript
# Misc
.vercel/
*.tsbuildinfo
Comment on lines +1 to 39

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sensitive Supabase local metadata is being committed (supabase/.temp/*), including pooler-url and project-ref. This is typically machine-local and should not be in source control; it leaks infrastructure details and is noisy churn.

This is a clear repo hygiene/security issue.

Suggestion

Add ignores and remove committed temp files:

  • Add supabase/.temp/ to .gitignore.
  • Remove the committed supabase/.temp/* files from the repo.

Reply with "@CharlieHelps yes please" if you'd like me to add a commit that updates .gitignore and deletes the tracked temp files.

next-env.d.ts

# Playwright
/playwright-report/
/test-results/
/dev.log
# AlphaEarth Embeddings - Sensitive Files
# Add these lines to your main .gitignore

# GCP Service Account Credentials (NEVER commit)
gcp_credentials.json
**/gcp_credentials.json

# AlphaEarth Index File (large, should be downloaded separately)
aef_index.csv

# Environment variables with GCP credentials
.env.local
.env.production.local
*.log
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
"IDX.corgiMode": true
Comment on lines +3 to +4
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Confirm repo-wide intent for IDX.corgiMode.
If this is a team standard, LGTM; otherwise consider moving it to a user-level setting to avoid imposing editor behavior on all contributors.

🤖 Prompt for AI Agents
In @.vscode/settings.json around lines 3 - 4, Confirm whether the
"IDX.corgiMode" workspace setting is intended as a repo-wide standard; if it is,
add a short comment in the project README or CONTRIBUTING noting that
"IDX.corgiMode": true is required for consistent dev setup (and keep the key
next to "editor.defaultFormatter"), otherwise remove "IDX.corgiMode" from the
shared settings and move it to a user-level config (Personal Settings / VSCode
user settings) so it does not impose editor behavior on all contributors.

}
74 changes: 74 additions & 0 deletions FIXES_SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# Auth Backend Schema Fixes - PR #327

## Summary of Changes

This commit addresses critical security vulnerabilities and auth backend schema issues identified in the CodeRabbit review.

## Critical Security Fixes

### 1. ✅ Deleted RLS Disable Migration
**File:** `supabase/migrations/0002_disable_rls_for_testing.sql` (DELETED)
- **Issue:** This migration disabled Row Level Security on all tables, creating a critical security vulnerability
- **Risk:** Anyone could read, modify, or delete ANY user's chats, messages, and participants
- **Fix:** Completely removed this migration file to ensure RLS remains enabled in production

### 2. ✅ Added pgcrypto Extension
**File:** `supabase/migrations/0000_init.sql`
- **Issue:** Used `gen_random_uuid()` without enabling the pgcrypto extension
- **Risk:** Migration would fail on typical Supabase setups
- **Fix:** Added `CREATE EXTENSION IF NOT EXISTS "pgcrypto";` at the start of the migration

### 3. ✅ Fixed User Lookup in Collaboration
**File:** `lib/actions/collaboration.ts`
- **Issue:** Queried non-existent `public.users` table instead of `auth.users`
- **Risk:** User invitation flow always failed
- **Fix:** Updated `inviteUserToChat()` to use `auth.admin.listUsers()` via the service client to properly look up users by email

### 4. ✅ Added Auth Check to RAG Function
**File:** `lib/actions/rag.ts`
- **Issue:** `retrieveContext()` had no authentication check
- **Risk:** Unauthorized users could access message embeddings
- **Fix:** Added authentication validation at the start of the function using `getCurrentUserIdOnServer()`

### 5. ✅ Added Environment Validation
**File:** `lib/supabase/client.ts`
- **Issue:** Service client creation didn't validate required environment variables
- **Risk:** Service client could fail silently, bypassing RLS checks
- **Fix:** Added proper validation with descriptive error messages for missing `NEXT_PUBLIC_SUPABASE_URL` or `SUPABASE_SERVICE_ROLE_KEY`

### 6. ✅ Improved INSERT Policy Security
**File:** `supabase/migrations/0002_add_insert_policy_for_chats.sql`
- **Issue:** Policy allowed any authenticated user to insert chats with any user_id
- **Risk:** Users could create chats impersonating other users
- **Fix:** Updated policy to enforce `auth.uid() = user_id`, ensuring users can only create chats where they are the owner

## Files Modified

1. `lib/actions/collaboration.ts` - Fixed user lookup to use auth.admin API
2. `lib/actions/rag.ts` - Added authentication check
3. `lib/supabase/client.ts` - Added environment variable validation
4. `supabase/migrations/0000_init.sql` - Added pgcrypto extension
5. `supabase/migrations/0002_add_insert_policy_for_chats.sql` - Improved security policy
6. `supabase/migrations/0002_disable_rls_for_testing.sql` - DELETED (critical security issue)

## Security Improvements

- ✅ RLS remains enabled on all tables
- ✅ All server actions now validate authentication
- ✅ User lookup uses proper Supabase auth APIs
- ✅ Environment variables are validated before use
- ✅ INSERT policies enforce proper ownership
- ✅ Database migrations will run successfully on standard Supabase setups

## Testing Recommendations

1. Verify RLS policies are active: Check Supabase dashboard
2. Test user invitation flow: Ensure users can be invited by email
3. Test RAG context retrieval: Verify auth check prevents unauthorized access
4. Test chat creation: Ensure users can only create chats as themselves
5. Run migrations on a test Supabase project to verify they execute without errors

## Related Issues

Addresses CodeRabbit review comments:
- https://github.com/QueueLab/QCX/pull/327#issuecomment-3714336689
Comment on lines +7 to +74
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix markdownlint MD022/MD034 violations.
Add blank lines around headings and wrap the bare URL in a markdown link.

📝 Example fix (apply consistently)
-## Critical Security Fixes
+## Critical Security Fixes

-### 1. ✅ Deleted RLS Disable Migration
+### 1. ✅ Deleted RLS Disable Migration

-## Related Issues
+## Related Issues

-Addresses CodeRabbit review comments:
-- https://github.com/QueueLab/QCX/pull/327#issuecomment-3714336689
+Addresses CodeRabbit review comments:
+- [Review comment](https://github.com/QueueLab/QCX/pull/327#issuecomment-3714336689)
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

9-9: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


15-15: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


21-21: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


27-27: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


33-33: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


39-39: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


74-74: Bare URL used

(MD034, no-bare-urls)

🤖 Prompt for AI Agents
In `@FIXES_SUMMARY.md` around lines 7 - 74, The markdown file FIXES_SUMMARY.md has
markdownlint MD022/MD034 violations: ensure each heading (e.g., "Critical
Security Fixes", "Files Modified", "Security Improvements", "Testing
Recommendations", "Related Issues") has a blank line above and below it, and
replace the bare URL under "Related Issues" with a proper markdown link (e.g.,
[Related PR
comment](https://github.com/QueueLab/QCX/pull/327#issuecomment-3714336689)) so
no naked URLs remain; apply this formatting consistently throughout the file.

Loading