Documents require:
- revisionCount >= 1 (was 0)
- content field with ProseMirror JSON structure
Without these, documents don't appear in collection sidebar.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents with empty collaboratorIds don't appear in collection sidebar.
Now includes creator's userId in the array.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Outline requires collaboratorIds to be an array, not NULL.
Error was: "TypeError: b.collaboratorIds is not iterable"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Outline uses 10-char alphanumeric urlId, not 21-char hex.
Documents with wrong format returned 404 "Not found".
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Documents created via MCP were not visible in Outline interface.
Outline requires an entry in the revisions table to display documents.
Now uses transaction to insert into both documents and revisions tables.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Collections without sort field cause frontend error:
"Cannot read properties of null (reading 'field')"
Now sets {"field": "index", "direction": "asc"} as default.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Renamed outline_bulk_remove_users_from_collection (41 chars)
to outline_bulk_remove_collection_users (38 chars)
- With MCP prefix (24 chars), total was 65 > 64 limit
- Bumped version to 1.3.7
- Updated all version references in source files
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Tested full CRUD cycle via MCP in production:
- list_collections, create_document, update_document, delete_document
- All operations successful with SSH tunnel on port 5433
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Verified all 6 schema bugs fixed in source code
- Confirmed unit tests passing (209/209)
- HTTP server initializes correctly with 164 tools
- Updated CONTINUE.md with validation results
- Ready for MCP tool testing when available
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixed 3 schema compatibility bugs found during Round 3 write testing:
- create_document: Added id, urlId, teamId, isWelcome, fullWidth, insightsEnabled
- create_collection: Added id, maintainerApprovalRequired
- shares_create: Added id, allowIndexing, showLastUpdated
All write operations now include required NOT NULL columns.
Bumped version to 1.3.6.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Bug Fixes:
- auth.ts: Remove non-existent ap.updatedAt column
- subscriptions.ts: Add LIMIT 25 to prevent 136KB+ responses
- collections.ts: Remove documentStructure from list (use get for full)
Documentation:
- TESTING-GUIDE.md: Complete 164-tool reference with test status
- CONTINUE.md: Updated with verification status and MCP loading issue
- CHANGELOG.md: Document fixes and Round 1-2 test results
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add HTTP transport (StreamableHTTPServerTransport)
- Add shared server module (src/server/)
- Configure production for hub.descomplicar.pt
- Add SSH tunnel script (start-tunnel.sh)
- Fix connection leak in pg-client.ts
- Fix atomicity bug in comments deletion
- Update docs with test plan for 164 tools
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- fix(pagination): SQL injection em cursor pagination - validação de nomes de campos
- fix(transaction): substituir Math.random() por crypto.randomBytes() para jitter
- fix(monitoring): memory leak - adicionar .unref() ao setInterval
- docs: adicionar relatório completo de bugs (BUG-REPORT-2026-01-31.md)
- chore: actualizar versão para 1.2.4
Security:
- Fix potential SQL injection in Savepoint class by sanitizing savepoint names
- Only allow alphanumeric characters and underscores
- Prefix with "sp_" if name starts with number
- Limit to 63 characters (PostgreSQL identifier limit)
Code quality:
- Add missing radix parameter to parseInt calls in:
- collections.ts (4 occurrences)
- groups.ts (1 occurrence)
- revisions.ts (1 occurrence)
- users.ts (1 occurrence)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
New modules:
- export-import.ts (2 tools): export_collection_to_markdown, import_markdown_folder
- desk-sync.ts (2 tools): create_desk_project_doc, link_desk_task
Updated:
- CHANGELOG.md: Version 1.2.1
- CLAUDE.md: Updated to 164 tools across 33 modules
- CONTINUE.md: Updated state documentation
- AUDIT-REQUEST.md: Updated metrics and file list
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- auth.ts: Use suspendedAt instead of isSuspended, role instead of isAdmin
- comments.ts: Use role='admin' for admin user queries
- documents.ts: Use suspendedAt IS NULL for active users
- events.ts: Return actorRole instead of actorIsAdmin
- shares.ts: Use role='admin' for admin user queries
All queries validated against Outline v0.78 schema (10/10 tests pass).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Users: Use role enum instead of isAdmin/isViewer/isSuspended booleans
- Users: Remove non-existent username column
- Groups: Fix group_users table (no deletedAt, composite PK)
- Attachments: Remove url and deletedAt columns, use hard delete
All 10/10 core queries now pass validation.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>