Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,5 @@ Thumbs.db

# Bitcoin (optional, profile: bitcoin)
bitcoin-data/
bitcoin-wallet-data/
bitcoin-wallet-data*/
bdk-wallet/target/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Mintlayer Web GUI
# Mintlayer Nexus

A Docker Compose stack that runs a full Mintlayer node, a headless wallet, and an Astro-based web interface for wallet management.

Expand Down
2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"node": ">=22.12.0",
"npm": ">=9.6.5"
},
"version": "1.0.0-rc1",
"version": "1.0.0-rc2",
"scripts": {
"dev": "astro dev",
"build": "astro build",
Expand Down
8 changes: 4 additions & 4 deletions app/src/layouts/Layout.astro
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ const PLUGIN_ICON_DEFAULT = 'M11.42 15.17L17.25 21A2.652 2.652 0 0021 17.25l-5.8
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Mintlayer GUI-X: {title}</title>
<title>Mintlayer Nexus: {title}</title>
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
</head>

Expand All @@ -93,7 +93,7 @@ const PLUGIN_ICON_DEFAULT = 'M11.42 15.17L17.25 21A2.652 2.652 0 0021 17.25l-5.8
<div class="flex items-center h-14 px-4 border-b border-gray-800 shrink-0 gap-2">
<a href="/" class="flex items-center gap-2 min-w-0">
<img src="/mintlayer-logo.svg" alt="Mintlayer" class="h-5 shrink-0 brightness-0 invert" />
<span id="logo-text" class="text-mint-400 font-semibold text-sm whitespace-nowrap">Mintlayer GUI-X</span>
<span id="logo-text" class="text-mint-400 font-semibold text-sm whitespace-nowrap">Mintlayer Nexus</span>
</a>
<button
id="collapse-btn"
Expand Down Expand Up @@ -309,7 +309,7 @@ const PLUGIN_ICON_DEFAULT = 'M11.42 15.17L17.25 21A2.652 2.652 0 0021 17.25l-5.8
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
</svg>
</button>
<span class="text-mint-400 font-semibold text-sm">Mintlayer GUI-X</span>
<span class="text-mint-400 font-semibold text-sm">Mintlayer Nexus</span>
</header>

<!-- ═══════════════════ CONTENT AREA ═══════════════════ -->
Expand All @@ -332,7 +332,7 @@ const PLUGIN_ICON_DEFAULT = 'M11.42 15.17L17.25 21A2.652 2.652 0 0021 17.25l-5.8

<!-- Footer -->
<footer class="border-t border-gray-800 py-4 text-center text-xs text-gray-600">
Mintlayer GUI-X v{version} &mdash;
Mintlayer Nexus v{version} &mdash;
<a href="https://www.mintlayer.org" target="_blank" rel="noopener"
class="text-gray-500 hover:text-gray-400 transition-colors">mintlayer.org</a>
</footer>
Expand Down
2 changes: 1 addition & 1 deletion app/src/lib/telegram-commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ export async function handleUpdate(

async function cmdHelp(botToken: string, chatId: string): Promise<void> {
await sendTelegramMessage(botToken, chatId, [
'🤖 <b>Mintlayer GUI-X Bot</b>',
'🤖 <b>Mintlayer Nexus Bot</b>',
'',
'<b>Read-only commands:</b>',
'/balance - Current wallet balance',
Expand Down
2 changes: 1 addition & 1 deletion app/src/pages/api/passkey/register-options.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ export const POST: APIRoute = async ({ request, clientAddress }) => {
const existingCreds = getCredentials();

const options = await generateRegistrationOptions({
rpName: 'Mintlayer GUI-X',
rpName: 'Mintlayer Nexus',
rpID: rpId,
userName: 'wallet',
userDisplayName: 'Mintlayer Wallet',
Expand Down
2 changes: 1 addition & 1 deletion app/src/pages/api/settings/reset-2fa.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const POST: APIRoute = async ({ request, clientAddress }) => {
const newSecret = generateTotpSecret();
setPref('auth.totp_secret', newSecret);

const label = encodeURIComponent('Mintlayer GUI-X');
const label = encodeURIComponent('Mintlayer Nexus');
const issuer = encodeURIComponent('Mintlayer');
const uri = `otpauth://totp/${label}?secret=${newSecret}&issuer=${issuer}`;

Expand Down
2 changes: 1 addition & 1 deletion app/src/pages/api/settings/telegram.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export const POST: APIRoute = async ({ request, clientAddress }) => {

if (test) {
try {
await sendTelegramMessage(botToken, chatId, '✅ Test message from <b>Mintlayer GUI-X</b> - Telegram notifications are working.');
await sendTelegramMessage(botToken, chatId, '✅ Test message from <b>Mintlayer Nexus</b> - Telegram notifications are working.');
} catch (err) {
return json({ ok: false, error: `Saved, but test message failed: ${(err as Error).message}` }, 200);
}
Expand Down
6 changes: 3 additions & 3 deletions app/src/pages/login.astro
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ if (Astro.request.method === 'POST' && !unconfigured) {
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Mintlayer GUI-X - Sign In</title>
<title>Mintlayer Nexus - Sign In</title>
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
</head>

Expand All @@ -162,7 +162,7 @@ if (Astro.request.method === 'POST' && !unconfigured) {
<!-- Logo / branding -->
<div class="flex flex-col items-center mb-8 gap-3">
<img src="/mintlayer-logo.svg" alt="Mintlayer" class="h-7 brightness-0 invert" />
<span class="text-mint-400 text-xl font-semibold tracking-tight">Mintlayer GUI-X</span>
<span class="text-mint-400 text-xl font-semibold tracking-tight">Mintlayer Nexus</span>
<p class="text-gray-500 text-sm">Sign in to your wallet</p>
</div>

Expand Down Expand Up @@ -215,7 +215,7 @@ if (Astro.request.method === 'POST' && !unconfigured) {
>
<p class="text-xs text-gray-500">Scan this QR code with your authenticator app, then enter the 6-digit code to finish setup.</p>
<div class="flex flex-col items-center gap-3">
<TotpQrCode client:load uri={`otpauth://totp/${encodeURIComponent('Mintlayer GUI-X')}?secret=${pendingSecret}&issuer=${encodeURIComponent('Mintlayer')}`} />
<TotpQrCode client:load uri={`otpauth://totp/${encodeURIComponent('Mintlayer Nexus')}?secret=${pendingSecret}&issuer=${encodeURIComponent('Mintlayer')}`} />
<div class="bg-gray-800 rounded-lg p-3 space-y-1 w-full">
<p class="text-xs text-gray-400">Secret key (manual entry):</p>
<p class="font-mono text-xs text-gray-200 break-all">{pendingSecret}</p>
Expand Down
4 changes: 2 additions & 2 deletions app/src/pages/management/settings.astro
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ if (Astro.request.method === 'POST') {
} else {
const newSecret = generateTotpSecret();
setPref('auth.totp_secret', newSecret);
const label = encodeURIComponent('Mintlayer GUI-X');
const label = encodeURIComponent('Mintlayer Nexus');
const issuer = encodeURIComponent('Mintlayer');
const uri = `otpauth://totp/${label}?secret=${newSecret}&issuer=${issuer}`;
result = { action: 'success', section, message: 'New 2FA secret generated. Scan the QR code below.', extra: { secret: newSecret, uri } };
Expand Down Expand Up @@ -150,7 +150,7 @@ if (Astro.request.method === 'POST') {
setPref('telegram.bot_token', botToken);
setPref('telegram.chat_id', chatId);
try {
await sendTelegramMessage(botToken, chatId, '✅ Test message from <b>Mintlayer GUI-X</b> - Telegram notifications are working.');
await sendTelegramMessage(botToken, chatId, '✅ Test message from <b>Mintlayer Nexus</b> - Telegram notifications are working.');
result = { action: 'success', section, message: 'Settings saved and test message delivered. The bot answers /help within about a minute.' };
} catch (err) {
result = { action: 'error', section, message: `Saved — the new settings are live, but the test message could not be delivered: ${(err as Error).message}` };
Expand Down
4 changes: 2 additions & 2 deletions init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
set -euo pipefail

# ─────────────────────────────────────────────────────────────────────────────
# Mintlayer Web GUI — interactive setup
# Mintlayer Nexus — interactive setup
# Inspired by the Astro create CLI style
# ─────────────────────────────────────────────────────────────────────────────

Expand Down Expand Up @@ -341,7 +341,7 @@ UI_TOTP_SECRET=$(node -e "
SESSION_SECRET=$(openssl rand -hex 32)

# Construct the otpauth URI
TOTP_URI="otpauth://totp/Mintlayer%20GUI-X?secret=${UI_TOTP_SECRET}&issuer=Mintlayer"
TOTP_URI="otpauth://totp/Mintlayer%20Nexus?secret=${UI_TOTP_SECRET}&issuer=Mintlayer"

printf "${CYAN}│${RESET}\n"
ok "TOTP secret generated"
Expand Down
Loading