Merged
Conversation
olasunkanmi-dev
pushed a commit
that referenced
this pull request
Mar 21, 2026
#1 clearAllForAgent: remove try/catch — let errors propagate to caller #2 clearWorkspaceContext cmd: add withProgress + try/catch error UX #3 resolveWorkspacePath: resolve symlinks via fs.realpathSync before check #4 Global rules priority: reorder to global → settings → workspace (highest) #5 DRY getAgentId: add getWorkspaceAgentId() facade, all wrappers use it #6 Remove dead AGENT_ID constant from BaseWebViewProvider #7 loadGlobalRules: convert to async (fs.promises.readFile), skip ENOENT #8 initialize() idempotency: guard against double-init, add reinitialize() #9 Tests: OS-agnostic paths via os.tmpdir(), add init guard + facade tests #10 FileTool: collect all violations before returning, report all denied paths Also fixed 4 remaining AGENT_ID references in base.ts generateResponse
olasunkanmi-dev
pushed a commit
that referenced
this pull request
Mar 21, 2026
- Fix handleHistoryUpdate bug: message.message → message.messages (#4) - Add ChatHistoryCache.clear()+deactivate() in clearWorkspaceContext (#6) - Clear cache on workspace folder change to prevent stale writes (#2) - Reset currentSessionId in base.ts on workspace change (#2) - Add migrateFromGlobalAgentId() for legacy 'agentId' → scoped ID (#9) - Call migration on first activation in extension.ts (#9) - Classify EACCES/ELOOP errors separately in validatePathWithinWorkspace (#7/8) - Document 48-bit hash collision probability on truncation (#12) - Clean up _logger in _resetForTesting (#13) - Add icon to clearWorkspaceContext command (#14) - Add transaction API comment in clearAllForAgent (#1) - Add reinitialize isolation + path validation tests (#10)
olasunkanmi-dev
pushed a commit
that referenced
this pull request
Mar 21, 2026
- #1 Duplicate ID guard: acquire() rejects if id already running/waiting - #2 AbortSignal/timeout: acquire() accepts options.signal + options.timeoutMs - #3 Release slot leak: outer try/finally ensures unconditional slot release even if code between acquire() and inner try block throws - #5 Stable sort: starvation boost uses enqueuedAt as FIFO tiebreaker - #6 Queue depth cap: MAX_QUEUE_DEPTH=50 with ConcurrencyQueueFullError - #7+#8 QuickPick UI: showStatus uses QuickPick with per-item cancel - #9 Logger init: moved from field initializer to constructor body - #13 Status bar comment: clarified alignment semantics - #14 Localized command titles: added NLS tokens for both commands Tests updated: duplicate ID, queue depth cap, AbortSignal, pre-aborted signal, isPending() helper replaces setTimeout-based assertions.
olasunkanmi-dev
pushed a commit
that referenced
this pull request
Mar 21, 2026
Service (concurrency-queue.service.ts): - #1/#8: createReleaser guards on disposed, no longer calls fireChange - #2: drain() resolves with createReleaser(id) instead of undefined - #3: enableTelemetry: false on logger to avoid noisy spans - #4: waitingIds Set for O(1) duplicate-ID checks instead of Array.some - #5: buildAbortSignal() polyfills for AbortSignal.timeout and .any - #9: Split QueueItem into QueueItemView (exported) + QueueItemInternal (private) - #10: boostStarvedItems mutates QueueItemInternal.priority directly - #13: $(watch) icon for queued state instead of $(loading~spin) - #14: JSDoc on constants explaining why not configurable Agent service (codebuddy-agent.service.ts): - #6: conversationId uses randomUUID() instead of Date.now() Extension (extension.ts): - #7: QuickPick cancel-all uses CANCEL_ALL_ID sentinel
olasunkanmi-dev
pushed a commit
that referenced
this pull request
Mar 21, 2026
Service (concurrency-queue.service.ts): - #1: cancel() logs invariant violation and self-heals on Set/Array desync - #2: drain() has ordering comment explaining running.set() before resolve() - #3: buildAbortSignal() timeout polyfill clears timer on external abort - #6: starvationTimer.unref() allows Node.js to exit in test environments - #8: MAX_QUEUE_DEPTH replaced with derived maxQueueDepth getter (maxConcurrent * 10), scales proportionally with concurrency limit - #10: initStatusBar() guards against double-initialization - #11: JSDoc on QueueItemInternal explaining intentional readonly override - #12: $(loading~spin) for queued-with-running, $(sync~spin) for running-only - #14: getWaitingIds() returns Object.freeze'd snapshot Agent service (codebuddy-agent.service.ts): - #13: Queue label uses trim() + fallback to "(empty request)" Test file (concurrency-queue.test.ts): - DEFAULT_MAX_QUEUE_DEPTH replaced with derived QUEUE_DEPTH_MULTIPLIER Skipped #7/#9 (ctx/span finally safety): Both are const-initialized before the inner try block; the inner finally only runs if the try is entered, so both are guaranteed to exist. False positive.
Stanley00
pushed a commit
to stanley-fork/codebuddy
that referenced
this pull request
Mar 27, 2026
convert optimize review to a class
Stanley00
pushed a commit
to stanley-fork/codebuddy
that referenced
this pull request
Mar 27, 2026
olasunkanmi-SE#1 clearAllForAgent: remove try/catch — let errors propagate to caller olasunkanmi-SE#2 clearWorkspaceContext cmd: add withProgress + try/catch error UX olasunkanmi-SE#3 resolveWorkspacePath: resolve symlinks via fs.realpathSync before check olasunkanmi-SE#4 Global rules priority: reorder to global → settings → workspace (highest) olasunkanmi-SE#5 DRY getAgentId: add getWorkspaceAgentId() facade, all wrappers use it olasunkanmi-SE#6 Remove dead AGENT_ID constant from BaseWebViewProvider olasunkanmi-SE#7 loadGlobalRules: convert to async (fs.promises.readFile), skip ENOENT olasunkanmi-SE#8 initialize() idempotency: guard against double-init, add reinitialize() olasunkanmi-SE#9 Tests: OS-agnostic paths via os.tmpdir(), add init guard + facade tests olasunkanmi-SE#10 FileTool: collect all violations before returning, report all denied paths Also fixed 4 remaining AGENT_ID references in base.ts generateResponse
Stanley00
pushed a commit
to stanley-fork/codebuddy
that referenced
this pull request
Mar 27, 2026
- Fix handleHistoryUpdate bug: message.message → message.messages (olasunkanmi-SE#4) - Add ChatHistoryCache.clear()+deactivate() in clearWorkspaceContext (olasunkanmi-SE#6) - Clear cache on workspace folder change to prevent stale writes (olasunkanmi-SE#2) - Reset currentSessionId in base.ts on workspace change (olasunkanmi-SE#2) - Add migrateFromGlobalAgentId() for legacy 'agentId' → scoped ID (olasunkanmi-SE#9) - Call migration on first activation in extension.ts (olasunkanmi-SE#9) - Classify EACCES/ELOOP errors separately in validatePathWithinWorkspace (olasunkanmi-SE#7/8) - Document 48-bit hash collision probability on truncation (olasunkanmi-SE#12) - Clean up _logger in _resetForTesting (olasunkanmi-SE#13) - Add icon to clearWorkspaceContext command (olasunkanmi-SE#14) - Add transaction API comment in clearAllForAgent (olasunkanmi-SE#1) - Add reinitialize isolation + path validation tests (olasunkanmi-SE#10)
Stanley00
pushed a commit
to stanley-fork/codebuddy
that referenced
this pull request
Mar 27, 2026
- olasunkanmi-SE#1 Duplicate ID guard: acquire() rejects if id already running/waiting - olasunkanmi-SE#2 AbortSignal/timeout: acquire() accepts options.signal + options.timeoutMs - olasunkanmi-SE#3 Release slot leak: outer try/finally ensures unconditional slot release even if code between acquire() and inner try block throws - olasunkanmi-SE#5 Stable sort: starvation boost uses enqueuedAt as FIFO tiebreaker - olasunkanmi-SE#6 Queue depth cap: MAX_QUEUE_DEPTH=50 with ConcurrencyQueueFullError - olasunkanmi-SE#7+olasunkanmi-SE#8 QuickPick UI: showStatus uses QuickPick with per-item cancel - olasunkanmi-SE#9 Logger init: moved from field initializer to constructor body - olasunkanmi-SE#13 Status bar comment: clarified alignment semantics - olasunkanmi-SE#14 Localized command titles: added NLS tokens for both commands Tests updated: duplicate ID, queue depth cap, AbortSignal, pre-aborted signal, isPending() helper replaces setTimeout-based assertions.
Stanley00
pushed a commit
to stanley-fork/codebuddy
that referenced
this pull request
Mar 27, 2026
Service (concurrency-queue.service.ts): - olasunkanmi-SE#1/olasunkanmi-SE#8: createReleaser guards on disposed, no longer calls fireChange - olasunkanmi-SE#2: drain() resolves with createReleaser(id) instead of undefined - olasunkanmi-SE#3: enableTelemetry: false on logger to avoid noisy spans - olasunkanmi-SE#4: waitingIds Set for O(1) duplicate-ID checks instead of Array.some - olasunkanmi-SE#5: buildAbortSignal() polyfills for AbortSignal.timeout and .any - olasunkanmi-SE#9: Split QueueItem into QueueItemView (exported) + QueueItemInternal (private) - olasunkanmi-SE#10: boostStarvedItems mutates QueueItemInternal.priority directly - olasunkanmi-SE#13: $(watch) icon for queued state instead of $(loading~spin) - olasunkanmi-SE#14: JSDoc on constants explaining why not configurable Agent service (codebuddy-agent.service.ts): - olasunkanmi-SE#6: conversationId uses randomUUID() instead of Date.now() Extension (extension.ts): - olasunkanmi-SE#7: QuickPick cancel-all uses CANCEL_ALL_ID sentinel
Stanley00
pushed a commit
to stanley-fork/codebuddy
that referenced
this pull request
Mar 27, 2026
Service (concurrency-queue.service.ts): - olasunkanmi-SE#1: cancel() logs invariant violation and self-heals on Set/Array desync - olasunkanmi-SE#2: drain() has ordering comment explaining running.set() before resolve() - olasunkanmi-SE#3: buildAbortSignal() timeout polyfill clears timer on external abort - olasunkanmi-SE#6: starvationTimer.unref() allows Node.js to exit in test environments - olasunkanmi-SE#8: MAX_QUEUE_DEPTH replaced with derived maxQueueDepth getter (maxConcurrent * 10), scales proportionally with concurrency limit - olasunkanmi-SE#10: initStatusBar() guards against double-initialization - olasunkanmi-SE#11: JSDoc on QueueItemInternal explaining intentional readonly override - olasunkanmi-SE#12: $(loading~spin) for queued-with-running, $(sync~spin) for running-only - olasunkanmi-SE#14: getWaitingIds() returns Object.freeze'd snapshot Agent service (codebuddy-agent.service.ts): - olasunkanmi-SE#13: Queue label uses trim() + fallback to "(empty request)" Test file (concurrency-queue.test.ts): - DEFAULT_MAX_QUEUE_DEPTH replaced with derived QUEUE_DEPTH_MULTIPLIER Skipped olasunkanmi-SE#7/olasunkanmi-SE#9 (ctx/span finally safety): Both are const-initialized before the inner try block; the inner finally only runs if the try is entered, so both are guaranteed to exist. False positive.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.