Merge pull request #49 from naturallaw777/copilot/update-logo-size-and-clarify-features

Larger logo, Bitcoin node mutual exclusivity UX, and uniform domain subdomain guidance
This commit is contained in:
Sovran_Systems
2026-04-04 11:55:01 -05:00
committed by GitHub
5 changed files with 30 additions and 11 deletions

View File

@@ -166,8 +166,8 @@ FEATURE_REGISTRY = [
}, },
{ {
"id": "bip110", "id": "bip110",
"name": "BIP-110 (Bitcoin Better Money)", "name": "Bitcoin Knots + BIP110",
"description": "Bitcoin Knots with BIP-110 consensus changes", "description": "Only one Bitcoin node implementation can be active at a time: Bitcoin Knots (default), Bitcoin Knots + BIP110, or Bitcoin Core. Enabling this option replaces the default Bitcoin Knots with Bitcoin Knots + BIP110 consensus changes. It will disable the currently active alternative.",
"category": "bitcoin", "category": "bitcoin",
"needs_domain": False, "needs_domain": False,
"domain_name": None, "domain_name": None,
@@ -179,7 +179,7 @@ FEATURE_REGISTRY = [
{ {
"id": "bitcoin-core", "id": "bitcoin-core",
"name": "Bitcoin Core", "name": "Bitcoin Core",
"description": "Use Bitcoin Core instead of Bitcoin Knots", "description": "Only one Bitcoin node implementation can be active at a time: Bitcoin Knots (default), Bitcoin Knots + BIP110, or Bitcoin Core. Enabling this option replaces the default Bitcoin Knots with Bitcoin Core. It will disable the currently active alternative.",
"category": "bitcoin", "category": "bitcoin",
"needs_domain": False, "needs_domain": False,
"domain_name": None, "domain_name": None,

View File

@@ -1316,7 +1316,7 @@ function openDomainSetupModal(feat, onSaved) {
'<p><strong>Before continuing:</strong></p>' + '<p><strong>Before continuing:</strong></p>' +
'<ol>' + '<ol>' +
'<li>Create an account at <a href="https://njal.la" target="_blank" rel="noopener noreferrer" style="color:var(--accent-color);">https://njal.la</a></li>' + '<li>Create an account at <a href="https://njal.la" target="_blank" rel="noopener noreferrer" style="color:var(--accent-color);">https://njal.la</a></li>' +
'<li>Purchase your domain on Njal.la</li>' + '<li>Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost.</li>' +
'<li>In the Njal.la web interface, create a <strong>Dynamic</strong> record pointing to this machine\'s external IP address:<br>' + '<li>In the Njal.la web interface, create a <strong>Dynamic</strong> record pointing to this machine\'s external IP address:<br>' +
'<span style="display:inline-block;margin-top:4px;padding:4px 10px;background:var(--card-color);border:1px solid var(--border-color);border-radius:6px;font-family:monospace;font-size:1em;font-weight:700;">' + escHtml(externalIp) + '</span></li>' + '<span style="display:inline-block;margin-top:4px;padding:4px 10px;background:var(--card-color);border:1px solid var(--border-color);border-radius:6px;font-family:monospace;font-size:1em;font-weight:700;">' + escHtml(externalIp) + '</span></li>' +
'<li>Njal.la will give you a curl command like:<br>' + '<li>Njal.la will give you a curl command like:<br>' +
@@ -1595,10 +1595,15 @@ function handleFeatureToggle(feat, newEnabled) {
} }
if (conflictNames.length > 0) { if (conflictNames.length > 0) {
openFeatureConfirm( var confirmMsg;
"This will disable " + conflictNames.join(", ") + ". Continue?", if (feat.id === "bip110") {
proceedAfterConflictCheck confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Knots + BIP110 will disable Bitcoin Core (if active). Continue?";
); } else if (feat.id === "bitcoin-core") {
confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Core will disable Bitcoin Knots + BIP110 (if active). Continue?";
} else {
confirmMsg = "This will disable " + conflictNames.join(", ") + ". Continue?";
}
openFeatureConfirm(confirmMsg, proceedAfterConflictCheck);
} else { } else {
proceedAfterConflictCheck(); proceedAfterConflictCheck();
} }

View File

@@ -145,7 +145,7 @@ async function loadStep2() {
+ '<strong>Before you continue:</strong>' + '<strong>Before you continue:</strong>'
+ '<ol style="margin:8px 0 0 16px; padding:0; line-height:1.7;">' + '<ol style="margin:8px 0 0 16px; padding:0; line-height:1.7;">'
+ '<li>Create an account at <a href="https://njal.la" target="_blank" style="color:var(--accent-color);">https://njal.la</a></li>' + '<li>Create an account at <a href="https://njal.la" target="_blank" style="color:var(--accent-color);">https://njal.la</a></li>'
+ '<li>Purchase your domain on Njal.la</li>' + '<li>Purchase a new domain on Njal.la, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost.</li>'
+ '<li>In the Njal.la web interface, create a <strong>Dynamic</strong> record pointing to this machine\'s external IP address:<br>' + '<li>In the Njal.la web interface, create a <strong>Dynamic</strong> record pointing to this machine\'s external IP address:<br>'
+ '<span style="display:inline-block;margin-top:4px;padding:4px 12px;background:var(--card-color);border:1px solid var(--border-color);border-radius:6px;font-family:monospace;font-size:1.1em;font-weight:700;letter-spacing:0.03em;">' + escHtml(externalIp) + '</span></li>' + '<span style="display:inline-block;margin-top:4px;padding:4px 12px;background:var(--card-color);border:1px solid var(--border-color);border-radius:6px;font-family:monospace;font-size:1.1em;font-weight:700;letter-spacing:0.03em;">' + escHtml(externalIp) + '</span></li>'
+ '<li>Njal.la will give you a curl command like:<br>' + '<li>Njal.la will give you a curl command like:<br>'
@@ -553,6 +553,20 @@ function renderFeaturesStep(data) {
} }
async function handleFeatureToggleStep5(feat, newEnabled, inputEl, labelEl) { async function handleFeatureToggleStep5(feat, newEnabled, inputEl, labelEl) {
// For Bitcoin features being enabled, show a clear mutual-exclusivity confirmation
if (newEnabled && (feat.id === "bip110" || feat.id === "bitcoin-core")) {
var confirmMsg;
if (feat.id === "bip110") {
confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Knots + BIP110 will disable Bitcoin Core (if active). Continue?";
} else {
confirmMsg = "Only one Bitcoin node implementation can be active. Enabling Bitcoin Core will disable Bitcoin Knots + BIP110 (if active). Continue?";
}
if (!confirm(confirmMsg)) {
if (inputEl) inputEl.checked = feat.enabled;
return;
}
}
setStatus("step-5-rebuild-status", "Saving…", "info"); setStatus("step-5-rebuild-status", "Saving…", "info");
// Collect nostr_npub if needed // Collect nostr_npub if needed

View File

@@ -70,7 +70,7 @@ body {
} }
.header-logo { .header-logo {
height: 46px; height: 64px;
width: auto; width: auto;
vertical-align: middle; vertical-align: middle;
margin-right: 10px; margin-right: 10px;

View File

@@ -72,7 +72,7 @@
<h2 class="onboarding-step-title">Domain Configuration</h2> <h2 class="onboarding-step-title">Domain Configuration</h2>
<p class="onboarding-step-desc"> <p class="onboarding-step-desc">
Sovran_SystemsOS uses <strong><a href="https://njal.la" target="_blank" style="color: var(--accent-color);">Njal.la</a></strong> for domains and Dynamic DNS. Sovran_SystemsOS uses <strong><a href="https://njal.la" target="_blank" style="color: var(--accent-color);">Njal.la</a></strong> for domains and Dynamic DNS.
First, create an account at <strong>Njal.la</strong> and purchase your domain. First, create an account at <strong>Njal.la</strong> and purchase a new domain, or create a subdomain from a domain you already own. Tip: Subdomains are free to create — you only need to purchase one domain, and you can add as many subdomains as you need at no extra cost.
Then, in the Njal.la web interface, create a <strong>Dynamic</strong> record pointing to this machine's external IP address (shown below). Then, in the Njal.la web interface, create a <strong>Dynamic</strong> record pointing to this machine's external IP address (shown below).
Finally, paste the DDNS curl command from your Njal.la dashboard for each service below. Finally, paste the DDNS curl command from your Njal.la dashboard for each service below.
</p> </p>