Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ Before reading text, ClipDiff inspects and honours these advisory [clipboard for
- `CanIncludeInClipboardHistory` when its DWORD is zero
- `CanUploadToCloudClipboard` when its DWORD is zero

Malformed or unreadable privacy markers are excluded conservatively. **Copy diff** writes its Unicode text and all three exclusion formats in one native clipboard operation, and ClipDiff suppresses the resulting clipboard update.
Malformed or unreadable privacy markers are excluded conservatively. **Copy unified diff** writes its Unicode text and all three exclusion formats in one native clipboard operation, and ClipDiff suppresses the resulting clipboard update.

Some password managers clear an unmarked value shortly after copying it. If an accepted value is immediately followed by an explicit clipboard clear within 60 seconds, ClipDiff removes that current entry. An intervening unrelated, sensitive, or failed clipboard observation cancels this eligibility. **This is only a best-effort heuristic and does not come with a guarantee.**

Expand Down Expand Up @@ -216,7 +216,7 @@ On a Windows desktop, verify:
- removing or renaming the selected viewer executable causes **Show Diff** to fall back to the built-in viewer;
- `%LOCALAPPDATA%\ClipDiff\settings.json` contains only the executable preference, warning acknowledgement, and shortcut codes, never clipboard content;
- **Keyboard shortcut...** records a replacement such as `Ctrl+Alt+6`, keeps the old shortcut active when the replacement is already in use, updates the tray label after success, persists across restart, and resets to `Ctrl+Alt+D`;
- **Copy diff** pastes into Notepad, has all three exclusion formats, and is not recaptured;
- **Copy unified diff** pastes into Notepad, has all three exclusion formats, and is not recaptured;
- two identical copies produce a diff reporting **No differences**, while images leave history unchanged;
- a copied `.bat` contributes its full text, a copied `.exe` contributes its filename plus `(binary file)`, and a renamed binary is still treated as binary;
- exactly two copied files—or two files copied with Explorer **Copy as path**—become the previous/current comparison pair in clipboard order, while copies of more than two files are ignored; missing, unreadable, empty, directory, oversized, and binary entries fall back to a filename with the reason appended;
Expand Down
12 changes: 6 additions & 6 deletions SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ The application must:
- Accept consecutive copies of identical text as separate entries.
- Ignore unsupported non-text clipboard changes; handle copied file lists as defined in section 6.4.
- Ignore privacy-marked clipboard items.
- Avoid capturing its own **Copy diff** output.
- Avoid capturing its own **Copy unified diff** output.
- Continue working if global hotkey registration fails.
- Lose all in-memory captured text when the application exits and attempt to delete all external-diff temporary files.
- Use one notification-area icon and one reusable diff window.
Expand Down Expand Up @@ -356,7 +356,7 @@ A personal source denylist can be considered later if genuinely needed, but it i

## 8. ClipDiff’s own clipboard writes

The **Copy diff** command writes the currently displayed unified diff to the Windows clipboard.
The **Copy unified diff** command writes the currently displayed unified diff to the Windows clipboard.

Requirements:

Expand Down Expand Up @@ -840,7 +840,7 @@ The top header contains:
- View selector:
- `Side by Side`
- `Unified`
- **Copy diff** button
- **Copy unified diff** button
- **Clear captured text** button

The view defaults to **Side by Side** each application launch. It may remain at the user’s selected mode during the current process lifetime. It does not need to be persisted.
Expand Down Expand Up @@ -871,7 +871,7 @@ Requirements:
- Missing text on one side leaves an empty cell.
- Thin row separators.
- Text should be selectable where reasonably possible.
- **Copy diff** remains the reliable way to copy the entire comparison.
- **Copy unified diff** remains the reliable way to copy the entire comparison.

Backgrounds:

Expand Down Expand Up @@ -1092,7 +1092,7 @@ Handle:
- Clipboard temporarily locked: asynchronous retry.
- Clipboard read exhausted retries: ignore update.
- Hotkey unavailable: tray status, menu remains functional.
- Copy diff failure: beep or concise status.
- Copy unified diff failure: beep or concise status.
- No two entries: disable menu command; hotkey gives a nonmodal indication.
- Native listener registration failure: show a concise tray status and keep the app open if manual retry is possible.

Expand Down Expand Up @@ -1448,7 +1448,7 @@ The first release is complete when all of these are true:
- Unified mode is readable.
- File-backed sides show their basenames, using shortest unique path suffixes only when equal basenames need disambiguation.
- Summary counts are correct.
- **Copy diff** produces the agreed output.
- **Copy unified diff** produces the agreed output.
- Copied diff output is excluded from history/cloud processing and is not recaptured.
- **Clear Captured Text** resets state without changing the Windows clipboard.
- Closing the diff window leaves the tray app running.
Expand Down
2 changes: 1 addition & 1 deletion src/ClipDiff.Windows/Views/DiffWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@
<ComboBoxItem Content="Unified" />
</ComboBox>
<Button Grid.Column="3"
Content="Copy diff"
Content="Copy unified diff"
Command="{Binding CopyCommand}"
Padding="14,6"
Margin="0,0,8,0"
Expand Down