Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727
, '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

Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727
, '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

Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727
, '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

Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727
, '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

Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727
, '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

Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727
, '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

Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727
, '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

Release: LanguageTags.7z packaging + protected-branch fix - #209

Merged
ptr727 merged 2 commits into
mainfrom
develop
Jun 28, 2026
Merged

Release: LanguageTags.7z packaging + protected-branch fix#209
ptr727 merged 2 commits into
mainfrom
develop

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Promotes develop to main for a stable release (same 1.5 floor; NBGV advances the patch).

Ships

  • LanguageTags.7z release asset (Bundle release assets into LanguageTags.7z #208): each release attaches one flat, fixed-name LanguageTags.7z bundling the compiled library + .nupkg/.snupkg, giving a deterministic releases/latest/download/LanguageTags.7z URL.
  • Auto-delete-head-branches off: protected branches survive promotions; feature/bot branches clean up via --delete-branch.

Verified on develop

The 1.5.4-g6c6ba047fa prerelease attached a flat LanguageTags.7z (LanguageTags.dll/.pdb/.deps.json/.xml + ptr727.LanguageTags..nupkg/.snupkg, no subdirs), and the NuGet push succeeded.

Merging publishes the stable release with the new 7z asset.

🤖 Generated with Claude Code

Reinstates the v1.3-style release packaging: each GitHub release
attaches a single fixed-name `LanguageTags.7z` bundling the compiled
library (dll, pdb, deps.json, xml) plus the `.nupkg` and `.snupkg`,
instead of the raw `.nupkg`/`.snupkg`. This gives external clients a
deterministic `releases/latest/download/LanguageTags.7z` URL with no
asset-list parsing.
## Changes (build-release-task.yml)
- Build `OutputPath` and `PackageOutputPath` both to the `publish` dir
(library + packages together).
- New `Compress release asset step`: `7z a -t7z .../LanguageTags.7z
.../publish/*` (publish-gated). `ubuntu-24.04` ships `p7zip-full`, so
`7z` needs no install.
- Upload + attach `LanguageTags.7z` (replacing `publish/*`).
NuGet publishing is unchanged (the `.nupkg`/`.snupkg` still push to
NuGet.org). WORKFLOW.md D4.4 / single-target seam / 5A-D4 updated to
describe the 7z bundle.
Verified end-to-end via a `workflow_dispatch` prerelease before
promotion.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 28, 2026 02:02

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

Promotes develop to main for a stable release while updating the release/promotion mechanics to ship a deterministic LanguageTags.7z asset and avoid deleting protected branches during promotions.

Changes:

  • Update the release workflow to bundle build outputs and NuGet packages into a single fixed-name LanguageTags.7z asset.
  • Disable repo-wide “delete branch on merge” and explicitly delete bot/feature branches via gh pr merge --delete-branch.
  • Update workflow documentation to reflect the single LanguageTags.7z release-asset contract.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
FileDescription
WORKFLOW.mdDocuments the new fixed-name LanguageTags.7z release asset and updates the operational guarantees/audit checklist accordingly.
repo-config/settings.jsonDisables repo-wide auto-delete-on-merge to keep protected branches (e.g., promotions) from being deleted.
repo-config/README.mdUpdates repo-config documentation to match the new branch-deletion approach (--delete-branch instead of global setting).
.github/workflows/merge-bot-pull-request.ymlEnsures bot PRs still clean up their head branches by passing --delete-branch.
.github/workflows/build-release-task.ymlProduces and publishes LanguageTags.7z as the single release asset, and uploads/downloads it across jobs.

Comment thread.github/workflows/build-release-task.yml
Defensive install of p7zip-full only when 7z is missing, so a future
ubuntu-latest change can't break the release archive step (no-op on
current runners, which ship p7zip-full). Addresses Copilot's recurring
note on the compress step.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727
ptr727 merged commit decfa8d into mainJun 28, 2026
10 checks passed
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

@ptr727