You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bug: all text shown in entity cards should be selectable and copyable #1624
Text displayed in an entity card should be selectable and copyable using the application's established copyable-text control/style. In the shown House card (git-worktree, filesystem-path), the title, type labels, field keys (path, branch, head-commit, target-branch) and values (including the full path and commit SHA) must be copyable directly from the card. Apply the same rule to every other textual item rendered by entity cards, not just this entity type.
Reproduction
Open an entity card with text fields, such as a git-worktree card containing path, branch, head-commit and target-branch.
Try selecting an individual label or value and copying it (mouse selection / Ctrl+C), then paste into a text editor.
Repeat for the card title, type labels and other text-based card content.
Actual: Text in the card cannot consistently be selected and copied as expected; users must find the value elsewhere (for example in the underlying entity data).
Expected: Every displayed textual item in read mode can be selected and copied with its exact content, while existing buttons/links, editing, wrapping, search highlighting, and card navigation still work. Long paths and SHA values must be copied intact, without truncation.
Context / regression check
#1214 previously implemented SafeSelectableTextBlock for the title, type labels and read-mode property keys/values. Current XAML still appears to use that control in these locations; investigate whether interaction, styling, pointer handling, rendering paths or additional templates prevent actual copying, rather than only replacing TextBlock tags. Use the existing safe selectable/copyable text convention (not bare SelectableTextBlock, which has a zero-width wrapping issue). Include a rendered-card interaction regression test for selection and clipboard copying on the screenshot's git-worktree fields, and cover other text/card templates as needed.
Status: ❌ 3 issue(s) found Commits checked:e94916a Fix #1624: make rendered entity-card text selectable and copyable (against features)
Outstanding gaps
Feature coverage — button labels are still not selectable/copyable. Phantom.Workspaces/Controls/EntityCardControl.axaml still renders shortcut labels (Shortcut.Label) and the JSON action text (JsonButtonText) as ordinary Button Content in read mode; Phantom.Workspaces/Templates/WorkspaceDataTemplates.axaml also renders reference-search candidate names as Button Content. Those text items cannot be mouse-selected and copied with Ctrl+C. Preserve their actions while enabling selection, as required for all textual card items, including buttons.
Test coverage — other card renderings are unverified by rendered selection/clipboard tests. The new tests cover one git-worktree card, one reference, one external URL, one plain attachment, and a badge; they do not exercise copy/navigation on the button labels above, entity-list links, array/object expander headers, markdown attachment headers/content, or external URL activation. The issue explicitly requires all text/card templates and preservation of link activation, not just presence of selectable control types.
Branch coverage — new CopyableLinkTextBlock logic lacks interaction tests for its conditional paths. No test exercises disabled/null commands, right-button presses, releasing outside the control, small versus threshold-exceeding drags, or Space-key activation (CopyableLinkTextBlock.cs); only left click/drag and Enter on a reference link are covered. The shared verification criteria require conditional branches in new code to have tests.
Tests
Focused command: .\scripts\run-tests.ps1 -Mode fast -TestProject .\Phantom.Workspaces.Tests\Phantom.Workspaces.Tests.csproj -TestNames EntityCardControlTests,EntityCardControlInteractionTests (invoked from skills root with worktree-prefixed paths). Runner results log:
Phantom.Workspaces.Data.Core -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Data.Core\bin\Debug\net10.0\Phantom.Workspaces.Data.Core.dll
Phantom.Workspaces.Llm.Interfaces -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Llm.Interfaces\bin\Debug\net10.0\Phantom.Workspaces.Llm.Interfaces.dll
Phantom.Workspaces.Data.Web.Client -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Data.Web.Client\bin\Debug\net10.0\Phantom.Workspaces.Data.Web.Client.dll
Phantom.Workspaces.Llm.Echo -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Llm.Echo\bin\Debug\net10.0\Phantom.Workspaces.Llm.Echo.dll
Phantom.Workspaces.Containers -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Containers\bin\Debug\net10.0\Phantom.Workspaces.Containers.dll
Phantom.Workspaces.Data.MongoDB -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Data.MongoDB\bin\Debug\net10.0\Phantom.Workspaces.Data.MongoDB.dll
Phantom.Workspaces.Transport -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Transport\bin\Debug\net10.0\Phantom.Workspaces.Transport.dll
mxc: building the native unit and generating C# P/Invoke bindings (cargo build -p mxc_ffi -p plm --features "dotnetsdk" --target x86_64-pc-windows-msvc )
Compiling mxc_ffi v0.8.0 (C:\dev\Phantom.Workspaces-Skills\worktrees\20\microsoft\mxc\src\ffi\mxc_ffi)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.97s
Microsoft.Mxc.Sdk -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\microsoft\mxc\sdk\dotnet\Microsoft.Mxc.Sdk\bin\Debug\net8.0\Microsoft.Mxc.Sdk.dll
Phantom.Workspaces.Llm.Core -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Llm.Core\bin\Debug\net10.0\Phantom.Workspaces.Llm.Core.dll
Phantom.Workspaces.Gui.Shared -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Gui.Shared\bin\Debug\net10.0\Phantom.Workspaces.Gui.Shared.dll
Phantom.Workspaces.Logging -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Logging\bin\Debug\net10.0\Phantom.Workspaces.Logging.dll
Phantom.Dock.Avalonia.TabSwitching -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Dock.Avalonia.TabSwitching\Phantom.Dock.Avalonia.TabSwitching\bin\Debug\net10.0\Phantom.Dock.Avalonia.TabSwitching.dll
Phantom.Workspaces.Agent.Gui -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Agent.Gui\bin\Debug\net10.0\Phantom.Workspaces.Agent.Gui.dll
Phantom.Workspaces.Data.Offline -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Data.Offline\bin\Debug\net10.0\Phantom.Workspaces.Data.Offline.dll
Phantom.Workspaces.Testing -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Testing\bin\Debug\net10.0\Phantom.Workspaces.Testing.dll
Phantom.Workspaces.Test.WindowsProcessProbe -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Test.WindowsProcessProbe\bin\Debug\net10.0\Phantom.Workspaces.Test.WindowsProcessProbe.dll
Phantom.Workspaces.Data.Core.Tests -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Data.Core.Tests\bin\Debug\net10.0\Phantom.Workspaces.Data.Core.Tests.dll
Phantom.Workspaces.Data.MongoDB.Tests -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Data.MongoDB.Tests\bin\Debug\net10.0\Phantom.Workspaces.Data.MongoDB.Tests.dll
Phantom.Workspaces.Data.Web.Server -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Data.Web.Server\bin\Debug\net10.0\Phantom.Workspaces.Data.Web.Server.dll
Phantom.Workspaces.Install -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Install\bin\Debug\net10.0\Phantom.Workspaces.Install.dll
Phantom.Workspaces.Web.Server -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Web.Server\bin\Debug\net10.0\Phantom.Workspaces.Web.Server.dll
Phantom.Workspaces.Copilot.Cli.Wrapper -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Copilot.Cli.Wrapper\bin\Debug\net10.0\phantom-copilot-wrapper.dll
Phantom.Workspaces -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces\bin\Debug\net10.0\Phantom.Workspaces.dll
Phantom.Workspaces.ProcessAcceptance -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.ProcessAcceptance\bin\Debug\net10.0\Phantom.Workspaces.ProcessAcceptance.dll
Phantom.Workspaces.Testing.Gui -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Testing.Gui\bin\Debug\net10.0\Phantom.Workspaces.Testing.Gui.dll
Phantom.Workspaces.Tests -> C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Tests\bin\Debug\net10.0\Phantom.Workspaces.Tests.dll
Test run for C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Tests\bin\Debug\net10.0\Phantom.Workspaces.Tests.dll (.NETCoreApp,Version=v10.0)
A total of 1 test files matched the specified pattern.
Data collector 'Blame' message: All tests finished running, Sequence file will not be generated.
Results File: C:\dev\Phantom.Workspaces-Skills\worktrees\20\Phantom.Workspaces.Tests\TestResults\jrowe_DAEMON_2026-10-08_17_40_14_net10.0.trx
Passed! - Failed: 0, Passed: 34, Skipped: 0, Total: 34, Duration: 37 s - Phantom.Workspaces.Tests.dll (net10.0)
=== Test Run Summary ===
Executed : 34
Passed : 34
Failed : 0
Slow suite: Not required: diff changes UI, UI tests, and test runner only; no filesystem or Git repository layer changes. No �erified-locally label applied.
Status: ✅ Verified Commits checked:b7482cc Follow up #1624: copy action labels and exercise card interactions; e94916a Fix #1624: make rendered entity-card text selectable and copyable (against features)
Outstanding gaps
None — all criteria satisfied. The three previously reported gaps are addressed: button/action labels use selectable content while retaining command activation; rendered-card interaction tests cover worktree title/types/field keys/full path/SHA, shortcuts, JSON/edit controls, references, entity-list links, search candidates, array/object and attachment expanders, markdown, external URLs, and badges; selectable-link tests cover null/disabled commands, right clicks, out-of-bounds release, small/large drags, Enter and Space. Selection/Ctrl+C tests inspect the actual clipboard and guard against accidental card navigation.
Tests
Approved targeted scripts\run-tests.ps1 -Mode fast runs at tip b7482cc:
Checked into features via #1626 (merge 1b86a98). Hosted fast CI 37966216282 passed 8,019/8,019; full CI 37966209695 passed on Windows and Linux. #1617 and #1618 retain their separate acceptance gates.
Activity
JoshuaRowePhantom commentedon Oct 9, 2026
Verification result
Status: ❌ 3 issue(s) found
Commits checked: e94916a Fix #1624: make rendered entity-card text selectable and copyable (against features)
Outstanding gaps
Tests
Focused command: .\scripts\run-tests.ps1 -Mode fast -TestProject .\Phantom.Workspaces.Tests\Phantom.Workspaces.Tests.csproj -TestNames EntityCardControlTests,EntityCardControlInteractionTests (invoked from skills root with worktree-prefixed paths). Runner results log:
Slow suite: Not required: diff changes UI, UI tests, and test runner only; no filesystem or Git repository layer changes. No �erified-locally label applied.
JoshuaRowePhantom commentedon Oct 9, 2026
Verification result
Status: ✅ Verified
Commits checked: b7482cc Follow up #1624: copy action labels and exercise card interactions; e94916a Fix #1624: make rendered entity-card text selectable and copyable (against features)
Outstanding gaps
None — all criteria satisfied. The three previously reported gaps are addressed: button/action labels use selectable content while retaining command activation; rendered-card interaction tests cover worktree title/types/field keys/full path/SHA, shortcuts, JSON/edit controls, references, entity-list links, search candidates, array/object and attachment expanders, markdown, external URLs, and badges; selectable-link tests cover null/disabled commands, right clicks, out-of-bounds release, small/large drags, Enter and Space. Selection/Ctrl+C tests inspect the actual clipboard and guard against accidental card navigation.
Tests
Approved targeted
scripts\run-tests.ps1 -Mode fastruns at tip b7482cc:-TestProject .\worktrees\20\Phantom.Workspaces.Gui.Shared.Tests\Phantom.Workspaces.Gui.Shared.Tests.csproj -TestNames CopyableLinkTextBlockTests: Executed 4, Passed 4, Failed 0.-TestProject .\worktrees\20\Phantom.Workspaces.Tests\Phantom.Workspaces.Tests.csproj -TestNames EntityCardControlTests,EntityCardControlInteractionTests: Executed 40, Passed 40, Failed 0. Finalworktrees\20\scripts\test-results.logreportsPassed! - Failed: 0, Passed: 40, Skipped: 0, Total: 40.Slow suite not required: no filesystem or Git repository layer changes. Checkout source/submodules completed successfully; working tree clean.
Merge pull request #1626 from JoshuaRowePhantom/integration/release-1…
JoshuaRowePhantom commentedon Oct 9, 2026
Checked into features via #1626 (merge 1b86a98). Hosted fast CI 37966216282 passed 8,019/8,019; full CI 37966209695 passed on Windows and Linux. #1617 and #1618 retain their separate acceptance gates.