Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

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

Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

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

Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

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

Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

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

Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

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

Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

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

Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

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

Refresh the case studies grid - #325

Merged
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh
Aug 20, 2026
Merged

Refresh the case studies grid#325
ConorOkus merged 2 commits into
mainfrom
case-studies-refresh

Conversation

@ConorOkus

@ConorOkusConorOkus commented Aug 20, 2026

Copy link
Copy Markdown
Contributor

Adds four projects, drops seven, and fixes two logos that were invisible in dark mode. The grid goes from 29 entries to 26.

Added

ProjectCategoryLDK connection
ZeusMobileEmbeds LDK Node — ZeusLN maintains a fork of lightningdevkit/ldk-node and the app ships an ldknode/ layer
MegalithInfrastructureServes LSPS1 and LSPS2 inbound liquidity to mobile wallets
zinqqWebSelf-custodial wallet running LDK compiled to WebAssembly, entirely client-side
zinqq-kmpMobileKotlin Multiplatform client wrapping the LDK crates over UniFFI

Removed

Stale or unmaintained: AtomicLightningExchange, EttaWallet, Kumuly, kuutamo, uMlando — plus etta.png, kumuly.png and kuutamo.png, which had no other referrer. (The other two used the shared GitHub mark, which stays.)

Dead destinations: Mutiny (mutinywallet.com returns 404 -- the wallet shut down; its case study post stays published, and the orphaned mutiny.png is deleted) and The Hidden LN (BitcoinDevShop/hidden-lightning-network is gone from GitHub, leaving only a stale 2022 fork).

c= stays for now, though cequals.xyz resolves to nameservers with no A record.

Fixed link

ldk-sample with Tor resolved only through a redirect -- the owner renamed TonyGiorgio to AnthonyRonning. It now points at the current URL directly.

Dark-mode logo fixes

Alby Hub now points at alby-logo-dark.png. That asset already existed for the home page but the case studies page wasn't using it, so the mark's black center pin was vanishing against the dark card. Swapping the logo beats inverting it, which would ruin the yellow.

Lightspark is a single near-black path with no dark variant shipped, so it gets a new invertOnDark flag on the Project interface:

.dark .case-study-itemimg.cs-invert-dark {
filter:invert(1);
}

This mirrors what HomeCaseStudies.vue already does for the same logo, so both pages now treat it identically instead of one page rendering it as a black smudge.

One gotcha worth noting

The Zeus logo pulled from zeusln.com had a viewBox but no width/height. As a flex item inside .case-study-item > a that collapsed to zero width, leaving the card's logo slot blank — and a dist grep still "passed", because the src attribute was emitted correctly. Only a screenshot caught it. The committed copy has intrinsic dimensions, matching lightspark-logo.svg (102×64) and cashapp-badge.svg (400×400).

Testing

  • npm run build:vitepress passes; dist/case-studies.html contains all four new names and none of the five removed ones.
  • Rendered the page in a headless browser in light mode and confirmed every new card's logo actually paints (this is what caught the Zeus bug).
  • Dark mode was verified against a harness replicating the .case-study-item logo CSS on #1b1b1f, since the headless shell won't flip VitePress's appearance toggle. Lightspark inverts to a legible light mark; Alby's dark variant keeps its center pin. Worth an eyeball on the deploy preview with the real toggle.

🤖 Generated with Claude Code

Adds four projects and drops five, so the page reflects who is actually
building on LDK today.
New entries:
- Zeus, whose app embeds LDK Node (they maintain a fork of ldk-node and
ship an ldknode/ layer in the wallet)
- Megalith, a large routing node serving LSPS1 and LSPS2 inbound
liquidity to mobile wallets
- zinqq, a browser wallet running LDK compiled to WebAssembly
- zinqq-kmp, its Kotlin Multiplatform client over UniFFI
Removed AtomicLightningExchange, EttaWallet, Kumuly, kuutamo and uMlando,
along with the three logo files that no longer had a referrer.
Two dark-mode logo fixes while here. Alby Hub now uses the
alby-logo-dark.png variant that already existed for the home page — its
black center pin disappears against a dark card. Lightspark's mark is a
single near-black path with no dark variant, so it gets an invertOnDark
flag mirroring HomeCaseStudies.vue, rather than a duplicated white asset.
The Zeus logo from zeusln.com carried a viewBox but no width/height,
which collapsed it to zero width as a flex item and left the card's logo
slot empty; the committed copy has intrinsic dimensions, matching the
other SVG logos in public/img.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@netlify

netlifyBot commented Aug 20, 2026

Copy link
Copy Markdown

Deploy Preview for lightningdevkit ready!

NameLink
🔨 Latest commitbf7d7e7
🔍 Latest deploy loghttps://app.netlify.com/projects/lightningdevkit/deploys/6a871eeac62e740008a772c5
😎 Deploy Previewhttps://deploy-preview-325--lightningdevkit.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Mutiny's site returns 404 (the wallet shut down) and the Hidden LN repo is
gone from BitcoinDevShop, leaving only a stale 2022 fork. Both cards sent
readers to nothing, so they come out of the grid; Mutiny's case study post
stays published, and its now-unreferenced logo is deleted.
ldk-sample with Tor still resolves, but only through a redirect: the owner
renamed TonyGiorgio to AnthonyRonning. Point at the current URL directly.
c= stays for now despite cequals.xyz having nameservers but no A record.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ConorOkus
ConorOkusforce-pushed the case-studies-refresh branch from 371a402 to bf7d7e7CompareAugust 20, 2026 15:36
@ConorOkus
ConorOkus merged commit 8a57e59 into mainAug 20, 2026
5 checks passed
@ConorOkus
ConorOkus deleted the case-studies-refresh branch August 20, 2026 15:52
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

@ConorOkus