Skip to content

Improve Arius.Explorer test coverage#64

Merged
woutervanranst merged 6 commits into
masterfrom
feat/explorer-coverage
Apr 19, 2026
Merged

Improve Arius.Explorer test coverage#64
woutervanranst merged 6 commits into
masterfrom
feat/explorer-coverage

Conversation

@woutervanranst

@woutervanranst woutervanranst commented Apr 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • fix and expand the Arius.Explorer test suite, including the open-repository command case, repository/session coverage, view model coverage, and Explorer coverage reporting
  • add a filtered Explorer coverage settings file and document the TUnit coverage workflow in README.md and AGENTS.md
  • remove Explorer-specific slopwatch findings by replacing timing-based waits with deterministic/event-driven test helpers and making cancellation/error handling explicit

Verification

  • dotnet test --project src/Arius.Explorer.Tests/Arius.Explorer.Tests.csproj
  • dotnet test --project src/Arius.Explorer.Tests/Arius.Explorer.Tests.csproj --coverage --coverage-settings src/Arius.Explorer.Tests/coverage.settings.xml --coverage-output-format cobertura --coverage-output coverage.filtered.cobertura.xml --results-directory artifacts/TestResults/Arius.Explorer.Tests
  • slopwatch analyze -d . --fail-on warning --no-baseline

Notes

  • filtered Arius.Explorer coverage is 84.1% line coverage / 73.8% branch coverage
  • slopwatch findings remaining after this branch are outside Arius.Explorer and its test suite

Summary by CodeRabbit

  • New Features

    • Injectable message-box delegate for dialog/confirmation flows
    • Configurable clock injection for deterministic time behavior
  • Bug Fixes

    • Improved exception logging and diagnostic messages for repository/credential flows
    • Enhanced cancellation logging for background loading operations
  • Tests

    • Large expansion of unit tests across view models, session management, settings, converters, and data protection
  • Chores

    • Added static-analysis baseline and example suppression config; updated test project guidance and deps

@coderabbitai

coderabbitai Bot commented Apr 19, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@woutervanranst has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 43 minutes and 38 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 43 minutes and 38 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 68308b25-3a6b-4b30-8761-3269cd73990e

📥 Commits

Reviewing files that changed from the base of the PR and between 3ea3329 and d97912b.

📒 Files selected for processing (1)
  • AGENTS.md
📝 Walkthrough

Walkthrough

Adds a SLOP Watch baseline and example config, updates docs and a test project dependency, injects ILogger and a test-injectable TimeProvider into production view models/settings, replaces polling waits with event-driven test helpers, and adds many new and expanded unit tests across Explorer components.

Changes

Cohort / File(s) Summary
SLOP Watch files
\.slopwatch/baseline.json, \.slopwatch/config.json.example
Add initial SLOP Watch baseline with known findings (empty catch blocks, timing usages) and an example suppression config targeting **/Generated/**.
Documentation
AGENTS.md
Change test coverage invocation to --coverage and point to a preferred coverage settings file for Explorer tests.
Test project config & usings
src/Arius.Explorer.Tests/Arius.Explorer.Tests.csproj, src/Arius.Explorer.Tests/Usings.cs
Add Microsoft.Extensions.Diagnostics.Testing package and a global using Arius.Explorer.Tests.Settings.
ChooseRepository view model & tests
src/Arius.Explorer/ChooseRepository/ChooseRepositoryViewModel.cs, src/Arius.Explorer.Tests/ChooseRepository/ChooseRepositoryViewModelTests.cs
Inject ILogger<ChooseRepositoryViewModel>; replace noop exception handling with debug/error logs; tests swapped polling waits for an event-driven WaitForAsync, updated assertions, and added/expanded repository-open tests.
RepositoryExplorer view model & tests
src/Arius.Explorer/RepositoryExplorer/RepositoryExplorerViewModel.cs, src/Arius.Explorer.Tests/RepositoryExplorer/RepositoryExplorerViewModelTests.cs
Add public static ShowMessageBox delegate (replaces direct MessageBox.Show), add debug logs on cancellation paths, and add comprehensive tests for load/selection/restore flows and async synchronization helper.
Recent repositories / settings
src/Arius.Explorer/Settings/ApplicationSettings.cs, src/Arius.Explorer.Tests/Settings/RecentRepositoryManagerTests.cs, src/Arius.Explorer.Tests/Settings/ApplicationSettingsTests.cs
Make RecentRepositoryManager accept an injectable TimeProvider (capture single UTC time per operation) and update tests to use a deterministic SequencedTimeProvider; add tests for limits, emptiness, and remove behavior.
RepositorySession & FileItem tests
src/Arius.Explorer.Tests/Infrastructure/RepositorySessionTests.cs, src/Arius.Explorer.Tests/RepositoryExplorer/FileItemViewModelTests.cs
Add RepositorySession tests (connect/dispose/placeholder behaviors) and FileItemViewModel mapping and hydration-status tests.
Tree & utility tests
src/Arius.Explorer.Tests/RepositoryExplorer/TreeNodeViewModelTests.cs, src/Arius.Explorer.Tests/Shared/Converters/BytesToReadableSizeConverterTests.cs, src/Arius.Explorer.Tests/Shared/Extensions/DataProtectionExtensionsTests.cs, src/Arius.Explorer.Tests/Settings/RepositoryOptionsTests.cs
Add TreeNode selection/expansion tests, converter convert/convertback tests, data protection protect/unprotect round-trip tests, and RepositoryOptions behavior/ToString tests.
Test synchronization helpers
src/Arius.Explorer.Tests/... (multiple test files)
Introduce an event-driven WaitForAsync helper using INotifyPropertyChanged/INotifyCollectionChanged and a bounded Channel<bool> to replace time-based polling in many tests.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 1.52% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Improve Arius.Explorer test coverage' accurately reflects the main change: the PR adds comprehensive test coverage for multiple Arius.Explorer components including view models, infrastructure, converters, and extensions.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/explorer-coverage

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@woutervanranst woutervanranst changed the title Improve Arius.Explorer test coverage and slopwatch compliance Improve Arius.Explorer test coverage Apr 19, 2026
@codecov

codecov Bot commented Apr 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 68.42105% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 78.69%. Comparing base (c8a5c91) to head (d97912b).
⚠️ Report is 9 commits behind head on master.

Files with missing lines Patch % Lines
...orer/ChooseRepository/ChooseRepositoryViewModel.cs 62.50% 3 Missing ⚠️
.../RepositoryExplorer/RepositoryExplorerViewModel.cs 50.00% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master      #64      +/-   ##
==========================================
+ Coverage   72.75%   78.69%   +5.93%     
==========================================
  Files          66       66              
  Lines        4831     4840       +9     
  Branches      654      655       +1     
==========================================
+ Hits         3515     3809     +294     
+ Misses       1171      875     -296     
- Partials      145      156      +11     
Flag Coverage Δ
linux 81.94% <ø> (+0.04%) ⬆️
windows 74.97% <68.42%> (+5.90%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (5)
src/Arius.Explorer.Tests/ChooseRepository/ChooseRepositoryViewModelTests.cs (2)

146-149: Avoid sync-over-async (GetAwaiter().GetResult()) in a test that can simply be async.

OpenRepositoryCommand_WhenAllFieldsAreValid_IsEnabledAndBuildsRepository is otherwise sync, but blocking on WaitForAsync(...).GetAwaiter().GetResult() defeats the deterministic event-driven wait you just introduced and is inconsistent with the other tests here that are async Task. Under a synchronization context this can deadlock; even without one, it ties up a thread-pool thread for up to the timeout window.

♻️ Proposed fix
-    public void OpenRepositoryCommand_WhenAllFieldsAreValid_IsEnabledAndBuildsRepository()
+    public async Task OpenRepositoryCommand_WhenAllFieldsAreValid_IsEnabledAndBuildsRepository()
     {
         ...
-        WaitForAsync(viewModel, () =>
+        await WaitForAsync(viewModel, () =>
             viewModel.ContainerNames.Count == 1 &&
             viewModel.ContainerName == "valid-container-123" &&
-            !viewModel.IsLoading).GetAwaiter().GetResult();
+            !viewModel.IsLoading);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Arius.Explorer.Tests/ChooseRepository/ChooseRepositoryViewModelTests.cs`
around lines 146 - 149, The test
OpenRepositoryCommand_WhenAllFieldsAreValid_IsEnabledAndBuildsRepository should
not block on WaitForAsync(...).GetAwaiter().GetResult(); instead make the test
method async Task, remove the synchronous GetResult call, and await the
WaitForAsync call (await WaitForAsync(viewModel, () => ...);). Update the test
method signature to async Task
OpenRepositoryCommand_WhenAllFieldsAreValid_IsEnabledAndBuildsRepository and
ensure any test framework attributes remain; this preserves the event-driven
wait in WaitForAsync and avoids sync-over-async deadlocks.

244-286: WaitForAsync swallows OperationCanceledException on timeout, making timeouts look like success.

When condition() is still false at timeout, WaitToReadAsync(cancellationTokenSource.Token) will throw OperationCanceledException, which propagates out of WaitForAsync — but because the surrounding tests then immediately assert against the very state the wait was supposed to establish, the assertion failure (rather than a clear "wait timed out") is what you'll see. More importantly, if a later writer happens to signal between the cancel and the next loop iteration, it's easy to misread flaky failures.

Consider catching OperationCanceledException inside the loop and throwing a descriptive TimeoutException (or asserting with Shouldly) so timeouts are unambiguous, e.g.:

catch (OperationCanceledException) when (cancellationTokenSource.IsCancellationRequested)
{
    throw new TimeoutException($"Condition not met within {timeoutMilliseconds} ms.");
}

Minor: the initial Signal(signal) at line 266 is redundant since you already evaluated condition() at line 246 and re-evaluate it at the top of the while.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Arius.Explorer.Tests/ChooseRepository/ChooseRepositoryViewModelTests.cs`
around lines 244 - 286, The WaitForAsync helper currently allows
OperationCanceledException from signal.Reader.WaitToReadAsync to escape and be
misinterpreted as a failed assertion; update WaitForAsync (the method and its
loop that calls signal.Reader.WaitToReadAsync) to catch
OperationCanceledException when cancellationTokenSource.IsCancellationRequested
and rethrow a descriptive TimeoutException (e.g. include timeoutMilliseconds),
and remove the redundant initial Signal(signal) call before entering the read
loop; keep the existing registrations/removals for OnPropertyChanged and
OnContainerNamesChanged and ensure the cancellationTokenSource is used for the
WaitToReadAsync call.
src/Arius.Explorer.Tests/Settings/RecentRepositoryManagerTests.cs (1)

124-128: Clamping the clock can mask off-by-one errors in tests.

CreateClock silently returns the last value forever after the array is exhausted. That's convenient, but in tests like RecentRepositoryManager_TouchOrAdd_RespectsRecentLimit (3 supplied values, 3 calls) it means a future change that adds a 4th TouchOrAdd call would silently reuse the same timestamp instead of failing the test, potentially hiding ordering bugs. Consider throwing (or ShouldFail-ing) when the clock is overdrawn so tests fail loudly when expectations drift.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Arius.Explorer.Tests/Settings/RecentRepositoryManagerTests.cs` around
lines 124 - 128, The CreateClock helper currently clamps and reuses the last
timestamp when calls exceed the provided values, which can mask off-by-one
errors; update CreateClock (used by tests like
RecentRepositoryManager_TouchOrAdd_RespectsRecentLimit) to instead throw an
exception (or call the test framework's fail helper) when the clock is overdrawn
so tests fail loudly if more ticks are requested than supplied. Locate the
CreateClock method and replace the Math.Min clamping logic with a bounds check
that throws (or signals test failure) when index >= values.Length, otherwise
return values[index++].
src/Arius.Explorer/RepositoryExplorer/RepositoryExplorerViewModel.cs (1)

26-27: Make RepositoryExplorerViewModel and ShowMessageBox internal, per coding guidelines.

The class is marked public but not used outside the Arius.Explorer assembly. Per guidelines, non-test classes should be internal unless consumed by another assembly. Change public partial class to internal partial class and public static to internal static, then add InternalsVisibleTo in AssemblyInfo.cs so tests can access it.

Alternatively, inject ShowMessageBox as a constructor dependency (e.g., Func<...>) to remove the mutable static state entirely—this aligns with the existing IDialogService pattern and is more testable.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@src/Arius.Explorer/RepositoryExplorer/RepositoryExplorerViewModel.cs` around
lines 26 - 27, Change the accessibility of RepositoryExplorerViewModel from
public partial class to internal partial class and change the ShowMessageBox
field from public static to internal static, then add an InternalsVisibleTo
entry for the test assembly in AssemblyInfo.cs so tests can access the type;
alternatively (preferred for testability) remove the mutable static
ShowMessageBox and accept a
Func<string,string,MessageBoxButton,MessageBoxImage,MessageBoxResult>
showMessageBox parameter on the RepositoryExplorerViewModel constructor (or use
the existing IDialogService), store it on an instance field, and update all
usages to call the instance delegate instead of the static.
src/Arius.Explorer.Tests/RepositoryExplorer/RepositoryExplorerViewModelTests.cs (1)

409-425: Move FakeRepositorySession into the local Fakes/ folder.

This fake is reused across the test suite in this file, so placing it beside the tests under RepositoryExplorer/Fakes/ keeps test doubles consistent and reusable. As per coding guidelines, **/*.Tests/**/*.cs: Put reusable test doubles in Fakes/. Put scenario-specific test doubles in a local Fakes/ subfolder beside the tests that use them.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@src/Arius.Explorer.Tests/RepositoryExplorer/RepositoryExplorerViewModelTests.cs`
around lines 409 - 425, Move the FakeRepositorySession test double out of the
test file and into the test project's shared Fakes folder used by
RepositoryExplorer tests: create a new file containing the same
FakeRepositorySession class (implementing IRepositorySession, with Mediator,
Repository, ConnectCalls, ConnectAsync and Dispose members) in the test
namespace so other tests can reuse it, remove the duplicate nested definition
from RepositoryExplorerViewModelTests, and update any tests to reference the
single shared FakeRepositorySession type.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@AGENTS.md`:
- Around line 120-121: Update AGENTS.md to remove or correct the non-existent
coverage settings path: either add the missing file
src/Arius.Explorer.Tests/coverage.settings.xml to the repo or replace that
reference with the actual coverage configuration used by the project; ensure the
guidance uses the correct flag (--coverage vs --collect:"XPlat Code Coverage")
and that the file path and flag examples in AGENTS.md accurately reflect the
current project setup.

In
`@src/Arius.Explorer.Tests/RepositoryExplorer/RepositoryExplorerViewModelTests.cs`:
- Around line 144-149: Add an assertion that the chosen repository was actually
passed to the session connect flow: after executing
viewModel.OpenChooseRepositoryDialogCommand and the existing assertions, verify
that the fake session's mediator had ConnectAsync invoked with the selected
repository (e.g. assert
FakeRepositorySession.Mediator.Received(1).ConnectAsync(repository) or
equivalent), ensuring the session handoff occurred rather than relying on
pre-populated FakeRepositorySession.Mediator.
- Around line 28-32: The static delegate
RepositoryExplorerViewModel.ShowMessageBox is being overridden in tests and not
restored afterwards, causing cross-test static state leakage; modify the test
fixture by capturing the original delegate in ResetMessageBox (or a new
[Before(Test)] method) into a private field (e.g., originalShowMessageBox) and
add an [After(Test)] teardown method that restores
RepositoryExplorerViewModel.ShowMessageBox = originalShowMessageBox so any
overrides made in tests (the ones that currently mutate ShowMessageBox) are
reverted after each test.

In `@src/Arius.Explorer/ChooseRepository/ChooseRepositoryViewModel.cs`:
- Line 4: ChooseRepositoryViewModel currently uses System.Diagnostics.Trace for
logging; replace it with constructor-injected
ILogger<ChooseRepositoryViewModel>: add a constructor parameter
ILogger<ChooseRepositoryViewModel> logger, store it in a private readonly field
(e.g., _logger), and remove System.Diagnostics.Trace usages—import
Microsoft.Extensions.Logging and replace Trace.TraceError/TraceInformation calls
in methods of ChooseRepositoryViewModel with _logger.LogError,
_logger.LogInformation or _logger.LogWarning as appropriate so logs flow through
the app's Serilog-backed logging pipeline.

---

Nitpick comments:
In `@src/Arius.Explorer.Tests/ChooseRepository/ChooseRepositoryViewModelTests.cs`:
- Around line 146-149: The test
OpenRepositoryCommand_WhenAllFieldsAreValid_IsEnabledAndBuildsRepository should
not block on WaitForAsync(...).GetAwaiter().GetResult(); instead make the test
method async Task, remove the synchronous GetResult call, and await the
WaitForAsync call (await WaitForAsync(viewModel, () => ...);). Update the test
method signature to async Task
OpenRepositoryCommand_WhenAllFieldsAreValid_IsEnabledAndBuildsRepository and
ensure any test framework attributes remain; this preserves the event-driven
wait in WaitForAsync and avoids sync-over-async deadlocks.
- Around line 244-286: The WaitForAsync helper currently allows
OperationCanceledException from signal.Reader.WaitToReadAsync to escape and be
misinterpreted as a failed assertion; update WaitForAsync (the method and its
loop that calls signal.Reader.WaitToReadAsync) to catch
OperationCanceledException when cancellationTokenSource.IsCancellationRequested
and rethrow a descriptive TimeoutException (e.g. include timeoutMilliseconds),
and remove the redundant initial Signal(signal) call before entering the read
loop; keep the existing registrations/removals for OnPropertyChanged and
OnContainerNamesChanged and ensure the cancellationTokenSource is used for the
WaitToReadAsync call.

In
`@src/Arius.Explorer.Tests/RepositoryExplorer/RepositoryExplorerViewModelTests.cs`:
- Around line 409-425: Move the FakeRepositorySession test double out of the
test file and into the test project's shared Fakes folder used by
RepositoryExplorer tests: create a new file containing the same
FakeRepositorySession class (implementing IRepositorySession, with Mediator,
Repository, ConnectCalls, ConnectAsync and Dispose members) in the test
namespace so other tests can reuse it, remove the duplicate nested definition
from RepositoryExplorerViewModelTests, and update any tests to reference the
single shared FakeRepositorySession type.

In `@src/Arius.Explorer.Tests/Settings/RecentRepositoryManagerTests.cs`:
- Around line 124-128: The CreateClock helper currently clamps and reuses the
last timestamp when calls exceed the provided values, which can mask off-by-one
errors; update CreateClock (used by tests like
RecentRepositoryManager_TouchOrAdd_RespectsRecentLimit) to instead throw an
exception (or call the test framework's fail helper) when the clock is overdrawn
so tests fail loudly if more ticks are requested than supplied. Locate the
CreateClock method and replace the Math.Min clamping logic with a bounds check
that throws (or signals test failure) when index >= values.Length, otherwise
return values[index++].

In `@src/Arius.Explorer/RepositoryExplorer/RepositoryExplorerViewModel.cs`:
- Around line 26-27: Change the accessibility of RepositoryExplorerViewModel
from public partial class to internal partial class and change the
ShowMessageBox field from public static to internal static, then add an
InternalsVisibleTo entry for the test assembly in AssemblyInfo.cs so tests can
access the type; alternatively (preferred for testability) remove the mutable
static ShowMessageBox and accept a
Func<string,string,MessageBoxButton,MessageBoxImage,MessageBoxResult>
showMessageBox parameter on the RepositoryExplorerViewModel constructor (or use
the existing IDialogService), store it on an instance field, and update all
usages to call the instance delegate instead of the static.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 0923f1d6-ba01-459d-9892-f53e9ee92336

📥 Commits

Reviewing files that changed from the base of the PR and between 7942ff7 and 8f70575.

📒 Files selected for processing (18)
  • .slopwatch/baseline.json
  • .slopwatch/config.json.example
  • AGENTS.md
  • src/Arius.Explorer.Tests/Arius.Explorer.Tests.csproj
  • src/Arius.Explorer.Tests/ChooseRepository/ChooseRepositoryViewModelTests.cs
  • src/Arius.Explorer.Tests/Infrastructure/RepositorySessionTests.cs
  • src/Arius.Explorer.Tests/RepositoryExplorer/FileItemViewModelTests.cs
  • src/Arius.Explorer.Tests/RepositoryExplorer/RepositoryExplorerViewModelTests.cs
  • src/Arius.Explorer.Tests/RepositoryExplorer/TreeNodeViewModelTests.cs
  • src/Arius.Explorer.Tests/Settings/ApplicationSettingsTests.cs
  • src/Arius.Explorer.Tests/Settings/RecentRepositoryManagerTests.cs
  • src/Arius.Explorer.Tests/Settings/RepositoryOptionsTests.cs
  • src/Arius.Explorer.Tests/Shared/Converters/BytesToReadableSizeConverterTests.cs
  • src/Arius.Explorer.Tests/Shared/Extensions/DataProtectionExtensionsTests.cs
  • src/Arius.Explorer.Tests/Usings.cs
  • src/Arius.Explorer/ChooseRepository/ChooseRepositoryViewModel.cs
  • src/Arius.Explorer/RepositoryExplorer/RepositoryExplorerViewModel.cs
  • src/Arius.Explorer/Settings/ApplicationSettings.cs

Comment thread AGENTS.md Outdated
Comment thread src/Arius.Explorer/ChooseRepository/ChooseRepositoryViewModel.cs Outdated
@woutervanranst

Copy link
Copy Markdown
Owner Author

@CodeRabbit resume review

@coderabbitai

coderabbitai Bot commented Apr 19, 2026

Copy link
Copy Markdown
Contributor

@woutervanranst Sure! Resuming the automated reviews for this PR.

✅ Actions performed

Reviews resumed.

@woutervanranst woutervanranst merged commit 7b77503 into master Apr 19, 2026
10 checks passed
@woutervanranst woutervanranst deleted the feat/explorer-coverage branch April 19, 2026 10:45
@coderabbitai coderabbitai Bot mentioned this pull request May 8, 2026
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant