Remove artifacts

parent d3cd9ca9
# Backend selection file
.backend
# Virtual environments
venv/
.venv/
env/
# Python cache
__pycache__/
*.pyc
*.pyo
*.pyd
.Python
# Debug logs
debug.log
# Test files
test_*.py
{
"openclaw.terminal.enabled": true,
"openclaw.gatewayHost": "192.168.11.46",
"openclaw.gatewayToken": "415fa3c21b7ef06f22aff571697d88c59c2dc67737681267",
"openclaw.gatewayUrl": "http://192.168.11.46:18789"
}
\ No newline at end of file
...@@ -188,6 +188,22 @@ td code{font-family:var(--mono);font-size:11.5px;background:var(--raised);paddin ...@@ -188,6 +188,22 @@ td code{font-family:var(--mono);font-size:11.5px;background:var(--raised);paddin
.modal-close{background:none;border:none;color:var(--text-3);cursor:pointer;font-size:1.125rem;line-height:1;padding:.125rem;border-radius:3px;transition:color .1s} .modal-close{background:none;border:none;color:var(--text-3);cursor:pointer;font-size:1.125rem;line-height:1;padding:.125rem;border-radius:3px;transition:color .1s}
.modal-close:hover{color:var(--text)} .modal-close:hover{color:var(--text)}
.modal-body{padding:1.125rem} .modal-body{padding:1.125rem}
.donate-modal-box{max-width:520px}
.nav-donate-btn{cursor:pointer;font-family:inherit;font-size:inherit;border:none}
.donate-tagline{font-size:13px;color:var(--text-2);margin:0 0 1.25rem;line-height:1.55}
.donate-coins{display:flex;gap:1rem}
.donate-coin{flex:1;display:flex;flex-direction:column;align-items:center;gap:.625rem;padding:.875rem;background:var(--raised);border:1px solid var(--border);border-radius:8px}
.donate-coin-header{display:flex;align-items:center;gap:.375rem}
.donate-coin-icon{font-size:1rem;font-weight:700}
.donate-coin-btc{color:#f7931a}
.donate-coin-eth{color:#627eea}
.donate-coin-name{font-size:13px;font-weight:600}
.donate-qr{border-radius:6px;border:1px solid var(--border);background:#fff;padding:4px}
.donate-addr-wrap{display:flex;align-items:center;gap:.375rem;width:100%}
.donate-addr{flex:1;font-family:var(--mono);font-size:9.5px;color:var(--accent);word-break:break-all;line-height:1.4}
.donate-copy{flex-shrink:0;background:none;border:1px solid var(--border);border-radius:4px;cursor:pointer;padding:.2rem .35rem;font-size:.8rem;color:var(--text-2);transition:color .1s,border-color .1s}
.donate-copy:hover{color:var(--text);border-color:var(--border-2)}
@media(max-width:480px){.donate-coins{flex-direction:column}}
/* ── Tabs ────────────────────────────────────────────────────────── */ /* ── Tabs ────────────────────────────────────────────────────────── */
.tabs{display:flex;gap:1px;border-bottom:1px solid var(--border);margin-bottom:1.25rem} .tabs{display:flex;gap:1px;border-bottom:1px solid var(--border);margin-bottom:1.25rem}
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
<a href="/admin/users" class="nav-link {% if '/users' in request.url.path %}active{% endif %}">Users</a> <a href="/admin/users" class="nav-link {% if '/users' in request.url.path %}active{% endif %}">Users</a>
<a href="/admin/settings" class="nav-link {% if '/settings' in request.url.path %}active{% endif %}">Settings</a> <a href="/admin/settings" class="nav-link {% if '/settings' in request.url.path %}active{% endif %}">Settings</a>
{% endif %} {% endif %}
<button class="nav-link nav-donate-btn" onclick="document.getElementById('donateModal').classList.add('show')">Donate</button>
</div> </div>
</div> </div>
<div class="topnav-right"> <div class="topnav-right">
...@@ -38,6 +39,51 @@ ...@@ -38,6 +39,51 @@
</div> </div>
</div> </div>
</nav> </nav>
<div class="modal" id="donateModal" onclick="if(event.target===this)this.classList.remove('show')">
<div class="modal-box donate-modal-box">
<div class="modal-head">
<span class="modal-title">Support CoderAI</span>
<button class="modal-close" onclick="document.getElementById('donateModal').classList.remove('show')">&times;</button>
</div>
<div class="modal-body">
<p class="donate-tagline">CoderAI is free and open source. If you find it useful, consider supporting its development with a crypto donation — every bit helps!</p>
<div class="donate-coins">
<div class="donate-coin">
<div class="donate-coin-header">
<span class="donate-coin-icon donate-coin-btc">&#₿;</span>
<span class="donate-coin-name">Bitcoin (BTC)</span>
</div>
<img class="donate-qr" src="https://api.qrserver.com/v1/create-qr-code/?size=160x160&data=bitcoin:bc1qcpt2uutqkz4456j5r78rjm3gwq03h5fpwmcc5u" alt="BTC QR code" width="160" height="160">
<div class="donate-addr-wrap">
<code class="donate-addr" id="btcAddr">bc1qcpt2uutqkz4456j5r78rjm3gwq03h5fpwmcc5u</code>
<button class="donate-copy" onclick="donateCopy('btcAddr',this)" title="Copy">&#128203;</button>
</div>
</div>
<div class="donate-coin">
<div class="donate-coin-header">
<span class="donate-coin-icon donate-coin-eth">&#9830;</span>
<span class="donate-coin-name">Ethereum (ETH)</span>
</div>
<img class="donate-qr" src="https://api.qrserver.com/v1/create-qr-code/?size=160x160&data=ethereum:0xdA6dAb526515b5cb556d20269207D43fcc760E51" alt="ETH QR code" width="160" height="160">
<div class="donate-addr-wrap">
<code class="donate-addr" id="ethAddr">0xdA6dAb526515b5cb556d20269207D43fcc760E51</code>
<button class="donate-copy" onclick="donateCopy('ethAddr',this)" title="Copy">&#128203;</button>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function donateCopy(id, btn) {
navigator.clipboard.writeText(document.getElementById(id).textContent).then(function() {
var orig = btn.innerHTML;
btn.innerHTML = '&#10003;';
setTimeout(function(){ btn.innerHTML = orig; }, 1500);
});
}
</script>
<main class="main"> <main class="main">
{% endif %} {% endif %}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment