fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

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

fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

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

fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

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

fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

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

fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

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

fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

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

fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

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

fix(ci): stop SDK publish after native cancel - #105

Merged
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate
Apr 12, 2026
Merged

fix(ci): stop SDK publish after native cancel#105
Lythaeon merged 1 commit into
mainfrom
fix/ts-sdk-cancelled-native-gate

Conversation

@Lythaeon

Copy link
Copy Markdown
Owner

Description

Stop TypeScript SDK release workflows from publishing the SDK after native publish jobs were manually cancelled. This closes the current release control gap where publish-sdk could keep running and polling npm even after the native matrix had been cancelled.

Changes

Detailed list of what changed:

  • .github/workflows/release-typescript-sdk.yml: added actions: read so the workflow can inspect its own job conclusions through the Actions API
  • .github/workflows/release-typescript-sdk.yml: tightened the publish-sdk job gate from always() to !cancelled()
  • .github/workflows/release-typescript-sdk.yml: added a native job conclusion check before SDK install/wait/publish
  • .github/workflows/release-typescript-sdk.yml: updated the npm indexing wait loop to stop early when any native publish job is cancelled
  • .github/workflows/release-typescript-sdk.yml: preserved the existing partial-success behavior for native failures, but no longer treats explicit cancellation as eligible for SDK publish

For slice-related changes, include:

  • Affected slices: CI / release automation only
  • Cross-slice communication changes (if any) and why: none
  • Migration requirements (if any): none

Motivation

Business motivation:

  • Avoid wasting release CI minutes and avoid publishing the top-level SDK from a partially cancelled release run.

Technical motivation:

  • publish-native uses continue-on-error: true, so publish-sdk was still allowed to run.
  • The wait loop only polled npm visibility and had no awareness of upstream job cancellation state.

Alternative approaches considered:

  • Relying on workflow-run cancellation only. Rejected because users may cancel matrix jobs directly and expect downstream publish to stop.

Scope and impact

  • Affected slices: GitHub Actions release workflow for the TypeScript SDK
  • Data/API changes: none
  • Backward compatibility: no user-facing SDK/API change
  • Performance impact: fewer wasted release minutes in cancelled runs
  • Security impact: none beyond adding read access to Actions metadata for the workflow itself

Testing

  • Unit tests
  • Integration tests
  • Manual verification
  • Performance checks (if applicable)
  • Security checks (if applicable)

Commands/results:

python - <<'PY'import yamlfrom pathlib import Pathwith Path('.github/workflows/release-typescript-sdk.yml').open() as f: yaml.safe_load(f)print('yaml-ok')PY
act workflow_dispatch -W .github/workflows/release-typescript-sdk.yml -j publish-sdk -n
bash -n <<'EOF2'# validated the updated wait-loop shell logic parses cleanlyEOF2

Related issues and documentation

  • Fixes:
  • Related: TypeScript SDK release rerun control after cancelled native publish jobs
  • Architecture docs: docs/architecture/README.md
  • Relevant ARD/ADR:
  • Operations/runbook updates:

Reviewer checklist

  • Code follows project standards and architecture constraints
  • Slice boundaries are respected (docs/architecture/ard/0003-slice-dependency-contracts.md)
  • Tests added/updated and passing
  • Documentation updated (README/docs/operations as needed)
  • No undocumented breaking change
  • Performance trade-offs documented where relevant
  • Security considerations addressed where relevant

Additional notes

This change only affects release control flow. It does not change package contents or publish order when all native jobs run normally.

@Lythaeon
Lythaeon merged commit 3c21c0f into mainApr 12, 2026
0 of 3 checks passed
@Lythaeon
Lythaeon deleted the fix/ts-sdk-cancelled-native-gate branch April 14, 2026 15:13
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.

1 participant

@Lythaeon