From b67e34127a77e231a80ec7caa0b2f4ae11a6c522 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 4 Apr 2026 16:43:32 +0000
Subject: [PATCH 1/2] Initial plan
From f5bff0b1399ae8e9a2f2163f50bb013fd987c6ab Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sat, 4 Apr 2026 16:48:15 +0000
Subject: [PATCH 2/2] Make logo bigger, clarify Bitcoin node mutual
exclusivity, and improve domain setup instructions
Agent-Logs-Url: https://github.com/naturallaw777/staging_alpha/sessions/45129e42-f838-47b6-a33d-61c50a2ba927
Co-authored-by: naturallaw777 <99053422+naturallaw777@users.noreply.github.com>
---
app/sovran_systemsos_web/server.py | 6 +++---
app/sovran_systemsos_web/static/app.js | 15 ++++++++++-----
app/sovran_systemsos_web/static/onboarding.js | 16 +++++++++++++++-
app/sovran_systemsos_web/static/style.css | 2 +-
.../templates/onboarding.html | 2 +-
5 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/app/sovran_systemsos_web/server.py b/app/sovran_systemsos_web/server.py
index b1abb4e..684ad0a 100644
--- a/app/sovran_systemsos_web/server.py
+++ b/app/sovran_systemsos_web/server.py
@@ -166,8 +166,8 @@ FEATURE_REGISTRY = [
},
{
"id": "bip110",
- "name": "BIP-110 (Bitcoin Better Money)",
- "description": "Bitcoin Knots with BIP-110 consensus changes",
+ "name": "Bitcoin Knots + BIP110",
+ "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",
"needs_domain": False,
"domain_name": None,
@@ -179,7 +179,7 @@ FEATURE_REGISTRY = [
{
"id": "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",
"needs_domain": False,
"domain_name": None,
diff --git a/app/sovran_systemsos_web/static/app.js b/app/sovran_systemsos_web/static/app.js
index 8e10f57..36a6943 100644
--- a/app/sovran_systemsos_web/static/app.js
+++ b/app/sovran_systemsos_web/static/app.js
@@ -1316,7 +1316,7 @@ function openDomainSetupModal(feat, onSaved) {
'
Before continuing:
' +
'' +
'- Create an account at https://njal.la
' +
- '- Purchase your domain on Njal.la
' +
+ '- 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.
' +
'- In the Njal.la web interface, create a Dynamic record pointing to this machine\'s external IP address:
' +
'' + escHtml(externalIp) + ' ' +
'- Njal.la will give you a curl command like:
' +
@@ -1595,10 +1595,15 @@ function handleFeatureToggle(feat, newEnabled) {
}
if (conflictNames.length > 0) {
- openFeatureConfirm(
- "This will disable " + conflictNames.join(", ") + ". Continue?",
- proceedAfterConflictCheck
- );
+ 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 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 {
proceedAfterConflictCheck();
}
diff --git a/app/sovran_systemsos_web/static/onboarding.js b/app/sovran_systemsos_web/static/onboarding.js
index 293ef1f..195e51e 100644
--- a/app/sovran_systemsos_web/static/onboarding.js
+++ b/app/sovran_systemsos_web/static/onboarding.js
@@ -145,7 +145,7 @@ async function loadStep2() {
+ 'Before you continue:'
+ ''
+ '- Create an account at https://njal.la
'
- + '- Purchase your domain on Njal.la
'
+ + '- 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.
'
+ '- In the Njal.la web interface, create a Dynamic record pointing to this machine\'s external IP address:
'
+ '' + escHtml(externalIp) + ' '
+ '- Njal.la will give you a curl command like:
'
@@ -553,6 +553,20 @@ function renderFeaturesStep(data) {
}
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");
// Collect nostr_npub if needed
diff --git a/app/sovran_systemsos_web/static/style.css b/app/sovran_systemsos_web/static/style.css
index 3ebe747..90a87ea 100644
--- a/app/sovran_systemsos_web/static/style.css
+++ b/app/sovran_systemsos_web/static/style.css
@@ -70,7 +70,7 @@ body {
}
.header-logo {
- height: 46px;
+ height: 64px;
width: auto;
vertical-align: middle;
margin-right: 10px;
diff --git a/app/sovran_systemsos_web/templates/onboarding.html b/app/sovran_systemsos_web/templates/onboarding.html
index 807568c..756c67b 100644
--- a/app/sovran_systemsos_web/templates/onboarding.html
+++ b/app/sovran_systemsos_web/templates/onboarding.html
@@ -72,7 +72,7 @@
Domain Configuration
Sovran_SystemsOS uses Njal.la for domains and Dynamic DNS.
- First, create an account at Njal.la and purchase your domain.
+ First, create an account at Njal.la 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 Dynamic 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.