Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
eaa3128
feat: add Text-to-Speech post-grab action
kmcnaught May 21, 2026
f1a8a69
feat: speak captured text instead of showing notification
kmcnaught May 22, 2026
4ee634b
feat: add Voice Output settings page with voice selection
kmcnaught May 22, 2026
1d68394
Add WindowsAiDescriptionEnabled user setting
TheJoeFin May 23, 2026
6aefcbf
Add Windows AI Description language and OCR line generators
TheJoeFin May 23, 2026
924268b
Add Windows AI image description as OCR pseudo-language
TheJoeFin May 23, 2026
4b6bf06
Add unit tests for Windows AI Description language
TheJoeFin May 23, 2026
25a49cb
Add Windows AI Description language option and toggle
TheJoeFin May 23, 2026
76b125a
Add Recognizers engine (Microsoft Recognizers-Text)
TheJoeFin Jun 30, 2026
367fa9d
Add unified PatternItem/PatternExecutor backbone
TheJoeFin Jun 30, 2026
9de3bc8
Unify patterns and recognizers in the UI as one "Patterns" concept
TheJoeFin Jun 30, 2026
eb323fa
Add shared SearchBar control with regex split-button and pattern picker
TheJoeFin Jul 1, 2026
4b0d7f3
Use shared SearchBar in Quick Simple Lookup, Find & Replace, and Grab…
TheJoeFin Jul 1, 2026
5654036
Add Ctrl+Shift+F shortcut to open Find & Replace from the editor
TheJoeFin Jul 1, 2026
8e27cc6
Refine default regex list to avoid recognizer overlap
TheJoeFin Jul 1, 2026
935c798
Merge pull request #651 from TheJoeFin/Recognizers
TheJoeFin Jul 1, 2026
b106034
Add WindowsAiDescriptionEnabled user setting
TheJoeFin May 23, 2026
712745d
Add Windows AI Description language and OCR line generators
TheJoeFin May 23, 2026
bda213e
Add Windows AI image description as OCR pseudo-language
TheJoeFin May 23, 2026
93f11ec
Add unit tests for Windows AI Description language
TheJoeFin May 23, 2026
e1d1735
Add Windows AI Description language option and toggle
TheJoeFin May 23, 2026
836e92a
Merge branch 'WinAI-description' of https://github.com/TheJoeFin/Text…
TheJoeFin Jul 1, 2026
672d302
Add cancellation and Bitmap support to WinAI description
TheJoeFin Jul 1, 2026
6148d55
Add interactive overlay for AI description grabs
TheJoeFin Jul 1, 2026
d94f30e
Style post-grab choice bar to match app theme and animate it in
TheJoeFin Jul 1, 2026
f82cee7
Improve AI description UX and null handling
TheJoeFin Jul 1, 2026
1f9211d
Await overlay close before post-grab insert actions
TheJoeFin Jul 1, 2026
888781a
Add Edit Text Window toggle to grab overlay UI
TheJoeFin Jul 1, 2026
5a2aa8a
Merge pull request #653 from TheJoeFin/WinAI-description
TheJoeFin Jul 1, 2026
b4307ab
Merge branch 'main' into tts
TheJoeFin Jul 1, 2026
15d33f3
Merge pull request #647 from kmcnaught/tts
TheJoeFin Jul 1, 2026
a1c3ff6
Update TTS settings and remove SpeakInsteadOfToast
TheJoeFin Jul 2, 2026
65a925c
Add speaking rate control to Voice Output Settings
TheJoeFin Jul 2, 2026
5f02282
Remove TTS and SpeakInsteadOfToast features
TheJoeFin Jul 2, 2026
0021aac
Add GrabFrameSpeakEnabled user setting (default: False)
TheJoeFin Jul 2, 2026
a39c6b3
Thread-safe TTS queue, BusyChanged event, resource fixes
TheJoeFin Jul 2, 2026
4e91467
Add GrabFrame TTS toggle and speaking progress overlay
TheJoeFin Jul 2, 2026
be55a64
Add setting to announce slow processing via TTS
TheJoeFin Jul 4, 2026
f65e60f
Merge pull request #654 from TheJoeFin/text-to-speech
TheJoeFin Jul 4, 2026
75dced6
Add Bash(gh issue view *) to allowed commands list
TheJoeFin Jul 4, 2026
b91fc26
Copy spreadsheet selection as Markdown table
TheJoeFin Jul 4, 2026
7f2845c
Add customizable bottom bar tool visibility to Grab Frame
TheJoeFin Jul 4, 2026
3d3af04
Freeze frame on word edit; diff-based unfreeze logic
TheJoeFin Jul 4, 2026
fd7b8a7
Add Grab Frame file (.tggf) save/load support
TheJoeFin Jul 4, 2026
d0f1dc9
Add configurable Grab Frame border style and color
TheJoeFin Jul 4, 2026
7751960
Filter furigana from Japanese OCR output
TheJoeFin Jul 5, 2026
6f015fa
Add thorough tests for CJK furigana filtering
TheJoeFin Jul 5, 2026
d1e0aa9
Add RemoveFurigana setting and UI for CJK OCR cleanup
TheJoeFin Jul 5, 2026
eb4bae7
Add Japanese OCR tests, furigana removal, and line order
TheJoeFin Jul 5, 2026
865556e
Merge pull request #570 from TheJoeFin/better-cjk
TheJoeFin Jul 5, 2026
c1f88ec
Add HDR capture correction and borderless settings
TheJoeFin Jul 6, 2026
bc4908e
Add HDR-aware screen capture and tone-mapping utilities
TheJoeFin Jul 6, 2026
dfcbf95
Add HDR-aware screen capture and tone mapping tests
TheJoeFin Jul 6, 2026
7e4b9a1
Add HDR capture correction toggle and permission check
TheJoeFin Jul 6, 2026
dc367d5
Allow Bash(git log *) in allowed commands list
TheJoeFin Jul 6, 2026
342660a
Allow gh pr view and gh pr diff in Bash allowlist
TheJoeFin Jul 6, 2026
6a67612
Refactor HDR capture: shared D3D11 device, faster timeout
TheJoeFin Jul 6, 2026
da93dd6
Merge pull request #660 from TheJoeFin/hdr-capture-wgc
TheJoeFin Jul 7, 2026
91b50e6
Add SettingsCard/Expander controls and refactor ShortcutControl
TheJoeFin Jul 7, 2026
d8455be
Add SettingsStyles.xaml for settings page text styles
TheJoeFin Jul 7, 2026
9303756
Modernize settings UI with SettingsCard/Expander controls
TheJoeFin Jul 7, 2026
8b07148
Prevent overlay from appearing in OCR screenshots
TheJoeFin Jul 9, 2026
b76eaed
Add git fetch to allowed Bash commands in settings
TheJoeFin Jul 9, 2026
86c3548
Track spreadsheet cell selection for Find/Replace
TheJoeFin Jul 9, 2026
c128b0b
Add flexible column split utility and comprehensive tests
TheJoeFin Jul 9, 2026
00458f3
Add SplitColumnWindow for advanced cell splitting
TheJoeFin Jul 9, 2026
7c7a5ea
Add spreadsheet cell split-to-columns feature
TheJoeFin Jul 9, 2026
f8d521f
Update NuGet packages and add NuGet.CommandLine refs
TheJoeFin Jul 9, 2026
eb9bb08
Bump app version to 4.15.0
TheJoeFin Jul 10, 2026
58c3c0a
Contain NuGet.CommandLine transitive dependency
TheJoeFin Jul 10, 2026
318946c
Stop SaveGrabFrameFileAsync from mutating the caller's HistoryInfo
TheJoeFin Jul 10, 2026
d6f086e
Decouple FormatResolvedValue from the recognizer library's collection…
TheJoeFin Jul 10, 2026
2036e03
Drop version column from BUILT-WITH, defer to the project files
TheJoeFin Jul 10, 2026
4b1bc0d
Add HiddenSmartPatternIds user setting
TheJoeFin Jul 12, 2026
0643fb0
Expand permissions for ProDuckMap data and CLI access
TheJoeFin Jul 12, 2026
50b77bc
Add test for file-backed hidden smart pattern IDs
TheJoeFin Jul 12, 2026
f4a763c
Rename Regex Manager to Patterns Manager; add pattern hiding
TheJoeFin Jul 12, 2026
c21b64e
Add HiddenSmartPatternIds managed setting support
TheJoeFin Jul 12, 2026
1ff3e4d
Rename Regex Manager to Patterns Manager, unify pattern list
TheJoeFin Jul 12, 2026
687182e
Add SymbolDropDownButton style and XAML formatting tweaks
TheJoeFin Jul 13, 2026
1defbb2
Refactor regex icon theming and chevron animation
TheJoeFin Jul 13, 2026
c532e96
Enhance Post Grab Actions button feedback and Freeze tool logic
TheJoeFin Jul 13, 2026
515cd6c
Add PDF support to history and lookup items
TheJoeFin Jul 17, 2026
724efb3
Add PDF history, harden file limits, and improve caching
TheJoeFin Jul 17, 2026
ff686e6
Expand unit test coverage for GrabFrame, History, PDF
TheJoeFin Jul 17, 2026
80b43d0
Add Recent PDFs menu, improve GrabFrame search & PDF history
TheJoeFin Jul 17, 2026
ad8252e
Add atomic file replace logic and related unit tests
TheJoeFin Jul 17, 2026
405410d
Fix HTML table parsing for rowspan/colspan conflicts
TheJoeFin Jul 17, 2026
60fe2fc
Support ordered list start numbers in Markdown utils
TheJoeFin Jul 17, 2026
8027acb
Preserve raw match text in FindResult and copy actions
TheJoeFin Jul 17, 2026
cdb0ef0
Improve Find/Replace sync with EditTextWindow modes
TheJoeFin Jul 17, 2026
accfe3a
Prevent stale unfreeze updates in GrabFrame with versioning
TheJoeFin Jul 17, 2026
8bddb72
Support multi-monitor HDR region capture and mapping
TheJoeFin Jul 17, 2026
6874664
Improve TTS busy state logic and add related tests
TheJoeFin Jul 17, 2026
43cec17
Improve OCR line merging and single-line output handling
TheJoeFin Jul 17, 2026
248e924
Update NuGet dependencies to latest versions
TheJoeFin Jul 17, 2026
4446dd8
Fix Smart Patterns in spreadsheet mode
TheJoeFin Jul 19, 2026
a8c2719
Fix tray-launched fullscreen grab focus
TheJoeFin Jul 19, 2026
b58bcc8
Improve post-grab action editor layout
TheJoeFin Jul 19, 2026
6d803f1
Align Find and Replace actions
TheJoeFin Jul 19, 2026
35f5677
Group Edit Text apply options
TheJoeFin Jul 19, 2026
7c47d51
Update icons
TheJoeFin Jul 19, 2026
66a667b
Format
TheJoeFin Jul 19, 2026
86c24a7
Update Units.NET
TheJoeFin Jul 19, 2026
f9a930d
Bump NuGet package versions in Text-Grab.csproj
TheJoeFin Jul 28, 2026
e82ed63
Improve accessibility with AutomationProperties support
TheJoeFin Jul 29, 2026
7899af7
Add AutomationIds to settings controls for accessibility
TheJoeFin Jul 29, 2026
9fefc46
Add AutomationId attributes for accessibility and UI tests
TheJoeFin Jul 29, 2026
898ebc5
Integrate AutomationProfile for profile-based isolation
TheJoeFin Jul 29, 2026
042f885
Add automation diagnostics, profile, and settings provider
TheJoeFin Jul 29, 2026
c2e91cd
Add automation profile support and settings isolation
TheJoeFin Jul 29, 2026
16d89a5
Add tests for automation profile and UI contracts
TheJoeFin Jul 29, 2026
f6970ec
Add interactive UI test workflow for Windows runners
TheJoeFin Jul 29, 2026
0966e22
Add WPF AutomationHost for deterministic UI testing
TheJoeFin Jul 29, 2026
24c4448
Add SystemIntegrationHelper console app for Windows APIs
TheJoeFin Jul 29, 2026
179801f
Add TextGrab.AutomationHost project to solution
TheJoeFin Jul 29, 2026
0a9ec81
Add PowerShell UI automation and capability test suite
TheJoeFin Jul 29, 2026
e34e2bb
Add UI automation & coverage validation system
TheJoeFin Jul 29, 2026
decac7d
Update .gitignore and README for UI test infra
TheJoeFin Jul 29, 2026
0684b49
Redirect classic settings into active automation profile
TheJoeFin Jul 29, 2026
0d3a6bf
Add FullscreenGrab UI test suite
TheJoeFin Jul 29, 2026
68bca23
Resolve interactive-UI lane matrix in a dedicated job
TheJoeFin Jul 29, 2026
b2e35da
Allow gh run list/view in local Claude permissions
TheJoeFin Jul 29, 2026
87971c7
Serialize AutomationSettingsProviderTests with settings tests
TheJoeFin Jul 29, 2026
34598a5
Ensure FullscreenGrab overlay is always maximized
TheJoeFin Jul 29, 2026
8874adf
Merge pull request #666 from TheJoeFin/automated-ui-testing
TheJoeFin Jul 29, 2026
4798856
Fix FullscreenGrab UI tests: CLI launch, real region-drag OCR
TheJoeFin Jul 30, 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
18 changes: 17 additions & 1 deletion .claude/settings.local.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,23 @@
"PowerShell(dotnet build *)",
"PowerShell(dotnet test *)",
"PowerShell(Get-ChildItem *)",
"WebFetch(domain:raw.githubusercontent.com)"
"WebFetch(domain:raw.githubusercontent.com)",
"Bash(gh issue view *)",
"Bash(git log *)",
"Bash(gh pr view *)",
"Bash(gh pr diff *)",
"Bash(git fetch *)",
"WebFetch(domain:app.produckmap.com)",
"Read(//c/Users/josep/.claude/skills/pdm/**)",
"Read(//c/Users/josep/.claude/skills/pdm/bin/**)",
"PowerShell(& \"C:\\\\Users\\\\josep\\\\.claude\\\\skills\\\\pdm\\\\bin\\\\pdm.ps1\" *)",
"PowerShell(& \"C:\\\\Users\\\\josep\\\\.claude\\\\skills\\\\pdm\\\\bin\\\\pdm.ps1\" auth)",
"Bash(\"/c/Users/josep/.claude/skills/pdm/bin/pdm\" story-map *)",
"Bash(\"/c/Users/josep/.claude/skills/pdm/bin/pdm\" type *)",
"Bash(\"/c/Users/josep/.claude/skills/pdm/bin/pdm\" ui-element *)",
"Bash(\"/c/Users/josep/.claude/skills/pdm/bin/pdm\" api *)",
"Bash(gh run list *)",
"Bash(gh run view *)"
],
"deny": []
}
Expand Down
198 changes: 198 additions & 0 deletions .github/workflows/interactive-ui.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
name: Interactive UI CI

on:
workflow_dispatch:
inputs:
lane:
description: "Lane to run. all-enabled runs only provisioned specialized lanes."
required: true
default: smoke-unpackaged-x64
type: choice
options:
- smoke-unpackaged-x64
- system-integration
- display-mixed-dpi
- packaged
- arm64
- copilot-plus-winai
- all-enabled
configuration:
description: Build configuration
required: true
default: Debug
type: choice
options: [Debug, Release]
record:
description: Capture WinApp recordings where supported
required: true
default: true
type: boolean
run_xunit:
description: Run the normal xUnit suite before UI automation
required: true
default: true
type: boolean
dry_run:
description: Print the selected lane configuration without building or automating
required: true
default: false
type: boolean
schedule:
- cron: "17 4 * * 2-6"

permissions:
contents: read

# This workflow intentionally has no pull_request trigger and is not a PR gate.
# An interactive runner must be a dedicated logged-in desktop, not a runner service.
# Specialized runners declare TEXT_GRAB_INTERACTIVE_CAPABILITIES themselves; the
# disposable package runner must expose TEXT_GRAB_DISPOSABLE_VM=1 itself. The
# workflow never manufactures that destructive-lifecycle confirmation. Its
# current user must be allowed to trust and remove the per-run test signer.
concurrency:
group: interactive-ui-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false

jobs:
# Lane selection cannot live in the interactive-ui job's `if:` because the
# `matrix` context is not available there (it is only expanded afterwards).
# This job resolves the lane catalog against the event, dispatch inputs, and
# repository variables, then emits a dynamic matrix the real job consumes.
select-lanes:
name: Select lanes
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.select.outputs.matrix }}
has_lanes: ${{ steps.select.outputs.has_lanes }}
steps:
- id: select
shell: pwsh
env:
EVENT_NAME: ${{ github.event_name }}
INPUT_LANE: ${{ inputs.lane }}
# All repository variables, so per-lane enable flags can be resolved by name.
REPO_VARS: ${{ toJSON(vars) }}
run: |
# The full lane catalog. `scheduled`, `default_enabled`, and
# `enable_variable` drive selection only; the remaining fields are
# consumed by the interactive-ui job via the emitted matrix.
$lanes = @(
[ordered]@{ lane = 'smoke-unpackaged-x64'; desktop = 'text-grab-ui-x64'; runner_labels = '["self-hosted","Windows","X64","text-grab-ui","text-grab-ui-x64"]'; required_capabilities = ''; require_mixed_dpi = 'false'; destructive = 'false'; scheduled = 'true'; default_enabled = 'true'; enable_variable = 'INTERACTIVE_CI_SMOKE_ENABLED' }
[ordered]@{ lane = 'system-integration'; desktop = 'text-grab-ui-system'; runner_labels = '["self-hosted","Windows","X64","text-grab-ui","text-grab-ui-system"]'; required_capabilities = 'system-integration'; require_mixed_dpi = 'false'; destructive = 'true'; scheduled = 'false'; default_enabled = 'false'; enable_variable = 'INTERACTIVE_CI_SYSTEM_INTEGRATION_ENABLED' }
[ordered]@{ lane = 'display-mixed-dpi'; desktop = 'text-grab-ui-mixed-dpi'; runner_labels = '["self-hosted","Windows","X64","text-grab-ui","text-grab-ui-mixed-dpi"]'; required_capabilities = 'mixed-dpi'; require_mixed_dpi = 'true'; destructive = 'false'; scheduled = 'false'; default_enabled = 'false'; enable_variable = 'INTERACTIVE_CI_MIXED_DPI_ENABLED' }
[ordered]@{ lane = 'packaged'; desktop = 'text-grab-ui-packaged'; runner_labels = '["self-hosted","Windows","X64","text-grab-ui","text-grab-ui-packaged"]'; required_capabilities = 'packaged,disposable-vm'; require_mixed_dpi = 'false'; destructive = 'true'; scheduled = 'false'; default_enabled = 'false'; enable_variable = 'INTERACTIVE_CI_PACKAGED_ENABLED' }
[ordered]@{ lane = 'arm64'; desktop = 'text-grab-ui-arm64'; runner_labels = '["self-hosted","Windows","ARM64","text-grab-ui","text-grab-ui-arm64"]'; required_capabilities = 'arm64,winrt-ocr'; require_mixed_dpi = 'false'; destructive = 'false'; scheduled = 'false'; default_enabled = 'false'; enable_variable = 'INTERACTIVE_CI_ARM64_ENABLED' }
[ordered]@{ lane = 'copilot-plus-winai'; desktop = 'text-grab-ui-copilot-plus'; runner_labels = '["self-hosted","Windows","ARM64","text-grab-ui","text-grab-ui-copilot-plus"]'; required_capabilities = 'arm64,winrt-ocr,windows-ai,packaged'; require_mixed_dpi = 'false'; destructive = 'false'; scheduled = 'false'; default_enabled = 'false'; enable_variable = 'INTERACTIVE_CI_COPILOT_PLUS_WINAI_ENABLED' }
)

$eventName = $env:EVENT_NAME
$inputLane = $env:INPUT_LANE

# Repository variable names are case-insensitive; resolve them that way.
$rawVars = ($env:REPO_VARS | ConvertFrom-Json -AsHashtable)
$repoVars = [System.Collections.Hashtable]::new([System.StringComparer]::OrdinalIgnoreCase)
if ($null -ne $rawVars) {
foreach ($key in $rawVars.Keys) { $repoVars[$key] = $rawVars[$key] }
}

$selected = $lanes | Where-Object {
if ($eventName -eq 'schedule') {
return $_.scheduled -eq 'true'
}
if ($eventName -eq 'workflow_dispatch') {
if ($inputLane -eq $_.lane) { return $true }
if ($inputLane -eq 'all-enabled') {
if ($_.default_enabled -eq 'true') { return $true }
return ($repoVars[$_.enable_variable] -eq 'true')
}
}
return $false
}

$selected = @($selected)
$matrixJson = @{ include = $selected } | ConvertTo-Json -Depth 5 -Compress
$hasLanes = if ($selected.Count -gt 0) { 'true' } else { 'false' }

Write-Host "Selected $($selected.Count) lane(s): $(($selected | ForEach-Object { $_.lane }) -join ', ')"
Add-Content -Path $env:GITHUB_OUTPUT -Value "matrix=$matrixJson"
Add-Content -Path $env:GITHUB_OUTPUT -Value "has_lanes=$hasLanes"

interactive-ui:
name: ${{ matrix.lane }}
needs: select-lanes
if: needs.select-lanes.outputs.has_lanes == 'true'
runs-on: ${{ fromJSON(matrix.runner_labels) }}
timeout-minutes: 90
concurrency:
# desktop is an exclusive label: provision one runner with each desktop label.
group: text-grab-interactive-desktop-${{ matrix.desktop }}
cancel-in-progress: false
strategy:
fail-fast: false
# Matrix entries are intentionally serialized, including all-enabled dispatches.
max-parallel: 1
matrix: ${{ fromJSON(needs.select-lanes.outputs.matrix) }}

steps:
- uses: actions/checkout@v6
- uses: actions/setup-dotnet@v5
with:
global-json-file: global.json

- name: Prepare artifacts
shell: pwsh
run: New-Item -ItemType Directory -Path UiTests\artifacts\ci\${{ matrix.lane }} -Force | Out-Null

- name: Verify interactive runner
shell: pwsh
run: >-
.\UiTests\Test-InteractiveCiPreflight.ps1
-OutputPath UiTests\artifacts\ci\${{ matrix.lane }}\preflight.json
-RequiredCapability "${{ matrix.required_capabilities }}".Split(',', [System.StringSplitOptions]::RemoveEmptyEntries)
-RequireDisplay
-RequireMixedDpi:${{ matrix.require_mixed_dpi }}
-Destructive:${{ matrix.destructive }}
-MinimumFreeDiskGB 25

- name: Build and run ${{ matrix.lane }}
shell: pwsh
run: |
$arguments = @(
'-NoProfile', '-File', '.\UiTests\Invoke-InteractiveCiLane.ps1',
'-Lane', '${{ matrix.lane }}',
'-ArtifactRoot', '.\UiTests\artifacts\ci\${{ matrix.lane }}',
'-Configuration', '${{ inputs.configuration || 'Debug' }}'
)
if ('${{ inputs.record }}' -ne 'false') { $arguments += '-Record' }
if ('${{ inputs.run_xunit }}' -eq 'false') { $arguments += '-SkipXunit' }
if ('${{ inputs.dry_run }}' -eq 'true') { $arguments += '-DryRun' }
& pwsh @arguments
exit $LASTEXITCODE

- name: Publish UI test summary
if: always()
shell: pwsh
run: |
$junit = Get-ChildItem UiTests\artifacts\ci\${{ matrix.lane }} -Filter junit.xml -Recurse -ErrorAction SilentlyContinue | Select-Object -First 1
if ($null -eq $junit) {
"## ${{ matrix.lane }}`nNo UI JUnit report was produced." >> $env:GITHUB_STEP_SUMMARY
exit 0
}
[xml]$report = Get-Content -LiteralPath $junit.FullName
$suite = $report.testsuite
@(
"## ${{ matrix.lane }}",
"| Tests | Failures | Skipped | Duration |",
"| ---: | ---: | ---: | ---: |",
"| $($suite.tests) | $($suite.failures) | $($suite.skipped) | $($suite.time)s |",
"",
"JUnit: ``$($junit.FullName)``"
) | Add-Content -LiteralPath $env:GITHUB_STEP_SUMMARY

- name: Upload interactive UI artifacts
if: always()
uses: actions/upload-artifact@v7
with:
name: interactive-ui-${{ matrix.lane }}-${{ github.run_attempt }}
path: UiTests\artifacts\ci\${{ matrix.lane }}
if-no-files-found: warn
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ BenchmarkDotNet.Artifacts/
project.lock.json
project.fragment.lock.json
artifacts/
UiTests/artifacts/

# StyleCop
StyleCopReport.xml
Expand Down
Loading