Block a user
[High] Trail handlers return HTTP 400 instead of 404 for missing trails
[High] canRun enables Run button while local runtime is still loading (when SignalR is connected)
[Medium] quick-type activity tracking serializes full settings into metadata (privacy/size)
[Medium] Chess test suite asserts the weak move generator, not full legality (stalemate/checkmate gaps)
[High] Activity/knowledge query handlers load entire UserProfiles/UserActivities tables into memory
[Medium] github-snake :host-context(:fullscreen) selector may not match when host enters fullscreen
[Medium] AggregateKnowledgeCommandHandler has N+1 queries per domain group
[Medium] domain-detail route has no auth guard but API requires Authorize
[Critical] Chess: getPossibleMovesForPiece is incomplete (missing castling, en passant, double pawn push) - breaks checkmate/stalemate detection
[High] C# free-play CodeExecutionOptions dropped end-to-end on server path
[High] requestNewAttempt failures are silently swallowed in language-runner
[Medium] TrailValidator does not validate GeoJSON type or coordinate structure
[Critical][Security] IDOR on GET /progress/domain/{domainKey} - any authenticated user can read another user's activity
[Medium] FreePlayCodeExecutorFactory silently picks last duplicate registration
[Medium] Chess test suite asserts the weak move generator, not full legality (stalemate/checkmate gaps)
Resolved.
Added two new describe blocks to the chess spec:
hasAnyLegalMove with special moves(3 tests)- Pawn double-push counted as a legal move
- En passant counted as a legal move…
[Medium] FreePlayCodeExecutorFactory silently picks last duplicate registration
Resolved.
The factory now scans for duplicate LanguageId registrations and throws InvalidOperationException with the offending key(s) and counts during construction:
var…
[Medium] quick-type activity tracking serializes full settings into metadata (privacy/size)
Resolved.
Added summarizeObfuscationSettings(settings) private helper. It walks the boolean flags on the settings object and returns:
{ enabledCount: number, totalToggles: number,…
[Medium] github-snake :host-context(:fullscreen) selector may not match when host enters fullscreen
Resolved.
Both fullscreen rules now combine :host-context(:fullscreen) & with :host(:fullscreen) & so the layout adjusts whether an ancestor or the host element itself enters fullscreen.
…
[Medium] Dead BSON conversion methods in GetTrailByIdQueryHandler
Resolved.
Removed the unused ConvertBsonToGeometry, ConvertBsonToDictionary, and ConvertBsonValueToObject methods plus the using MongoDB.Bson; import. Also simplified the handler --…
[Medium] domain-detail route has no auth guard but API requires Authorize
Resolved.
Applied two changes:
routes.ts-- thetree-of-knowledge/domain/:domainKeyroute now usescanActivate: [AuthGuard]to match the[Authorize]API endpoint.- `domain-detail.…