pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

pass context to dyff to display the context of changes in multiline diffs - #934

Open
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master
Open

pass context to dyff to display the context of changes in multiline diffs#934
nikitka wants to merge 1 commit into
databus23:masterfrom
nikitka:master

Conversation

@nikitka

Copy link
Copy Markdown

dyff can show context lines of multiline YAML value changes. the helm-diff plugin has context option. With this PR, I propose passing this context option to dyff as the MultilineContextLines option. This will help betterunderstand what has changed in multiline values.

For example, without passion MultilineContextLines I get the following output:

spec.configuration
± value change in multiline text (two inserts, two deletions)
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000

It looks like one block was changed; however, I actually modified different part of the multiline value. With passing 3 context lines, the diff looks much clearer:

spec.configuration
± value change in multiline text (two inserts, two deletions)
actor_system_config:
batch_executor: 2
executor:
[59 lines unchanged)]
bsc_settings:
cluster_balancing_settings:
enable: true
- iteration_interval_ms: 600000
+ iteration_interval_ms: 500000
max_replicating_pdisks: 10
max_replicating_vdisks: 10
prefer_less_occupied_rack: true
[1550 lines unchanged)]
max_traces_per_minute: 10
uploader:
max_batch_accumulation_milliseconds: 500
- max_bytes_in_batch: 300000
+ max_bytes_in_batch: 400000
max_export_requests_inflight: 3
max_exported_spans_per_second: 3000
max_spans_in_batch: 500
[ten lines unchanged)]
hull_comp_level0_max_ssts_at_once: 2
hull_comp_sorted_parts_num: 1
kind: LocalMode

@nikitkanikitka changed the title pass context to dyff to diaply the context of changes in multiline diffspass context to dyff to display the context of changes in multiline diffsFeb 17, 2026

CopilotAI 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.

Pull request overview

This PR wires the existing --context/-C option into dyff’s multiline diff rendering so dyff can show surrounding context lines within multiline YAML value changes, improving readability of multiline diffs.

Changes:

  • Capture the report entry context value during dyff report generation.
  • Set dyff.HumanReport.MultilineContextLines based on the captured context (when not -1).

Comment threaddiff/report.go
Comment on lines +93 to 96
context := -1
for _, entry := range r.Entries {
context = entry.Context
_, _ = currentFile.WriteString("---\n")

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

context is taken from each ReportEntry inside the loop and the final value (from the last entry) is applied to the whole dyff report. This makes the dyff multiline context setting dependent on entry ordering and can produce the wrong value when entries have different Context values (e.g., OWNERSHIP entries currently use Context=0). Consider deriving the value once from the global option (or from the first non-ownership/non-(-1) entry) and/or validating that all entries share the same context before setting MultilineContextLines.

Copilot uses AI. Check for mistakes.
Comment threaddiff/report.go
Comment on lines +122 to +124
if context != -1 {
reportWriter.MultilineContextLines = context
}

CopilotAIFeb 19, 2026

Copy link

Choose a reason for hiding this comment

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

This change introduces new behavior (wiring --context/-C into dyff via MultilineContextLines) but there’s no automated test coverage for dyff report output/behavior in the diff package. Adding a focused unit test that exercises a multiline YAML value change and asserts the presence/absence of context lines based on Context would help prevent regressions across dyff version changes.

Copilot generated this review using guidance from repository custom instructions.
Sign up for freeto 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.

2 participants

@nikitka