From 513fd7db08fb3c7e89fe651ac70913264a4bff22 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sun, 15 Nov 2026 14:29:52 -0700 Subject: No footer once a wallet is open, no empty history, no default name on a lone balance. "Actually those can go into settings too. And let's not show an empty history section just keep it hidden until we have history. I don't think we need the spending account name by default let's leave it blank unless the user supplies one" (Adam, 2026-11-15). The language and currency pickers now sit at the top of the Settings hub; the footer under every page is gone while a wallet is open (a visitor reading the public feed, with no wallet and so no Settings, still has them there; the wizard keeps its language picker). The wallet's history shows nothing at all until there's a first payment, instead of a 'No transactions yet' card. A single-balance account (a sign-up's Spending) shows no SPENDING over its amount unless its owner named it; the two-face carousel keeps Spending/Savings. footer-support (no footer with a wallet, pickers in Settings, About), signup-quick (no name on the lone face), chat-layout, onboard-backup, balance-settings-row, feed-window-dom and features-smoke pass Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01VMan6SwkivduFDDkMmnXjZ --- src/app.js | 14 +++++++++++--- src/style.css | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/app.js b/src/app.js index 60b0ac9..0cf2447 100644 --- a/src/app.js +++ b/src/app.js @@ -380,6 +380,9 @@ function setupFooter() { // here (credits, How it works, support, install, the theme, the commit) is // on Settings → About (Adam, 2026-11-15). function footer() { + // with a wallet open they're in Settings (Adam, 2026-11-15); a visitor + // reading the public feed still gets them here + if (activeAccount()) return h('div', { class: 'footer', style: 'display:none' }); return h('div', { class: 'footer small muted center' }, h('div', { class: 'row gap6', style: 'justify-content:center' }, languagePicker(), currencyPicker())); } @@ -3277,6 +3280,8 @@ function settingsTab() { h('div', { class: 'row gap6', style: 'align-items:center;margin:2px 0 6px 4px' }, h('span', { style: 'display:flex;color:var(--muted)', html: '' }), h('h3', { style: 'margin:0' }, t('tabSettings'))), + // display preferences, right at the top: the language and the currency + h('div', { class: 'row gap6 settings-prefs', style: 'margin:0 0 4px' }, languagePicker(), currencyPicker()), grid([ tile('wallet', t('settingsWallet'), t('settingsWalletDesc')), tile('payments', t('settingsPayments'), t('settingsPaymentsDesc')), @@ -5304,7 +5309,9 @@ function balanceCard() { }) : null, h('div', { class: 'small faint', style: 'text-transform:uppercase;letter-spacing:.06em' }, - kindLocked ? viewLabel(acc0, view) + // a lone balance needs no name: blank unless its owner gave it + // one (Adam, 2026-11-15); the two-face carousel keeps its labels + kindLocked ? ((acc0.viewLabels && acc0.viewLabels[view]) || '') : hasSpending ? (viewSpending ? t('spendingLabel') : t('savingLabel')) : t('balance'))), manageBtn(view)), h('div', { class: 'amt', style: firstLoad ? 'opacity:.3' : '' }, @@ -6770,8 +6777,9 @@ function historyTab() { wallet.historyLoading ? h('p', { class: 'small muted', style: 'margin:0' }, t('loadingHistory')) : null ); const featEntries = featureAll('historyEntries', txs, histSel); - if (!txs.length && !featEntries.length) - return h('div', { class: 'card' }, h('p', { class: 'muted center', style: 'margin:0' }, t('noTxYet'))); + // nothing yet: no card at all, it appears with the first payment + // (Adam, 2026-11-15: "let's not show an empty history section") + if (!txs.length && !featEntries.length) return null; // Transactions and feature entries merge into one timeline. const entries = [ diff --git a/src/style.css b/src/style.css index cd17b48..2bbf8fc 100644 --- a/src/style.css +++ b/src/style.css @@ -2195,3 +2195,4 @@ html:has(.call-overlay:not(.call-min)) { overflow: hidden; scrollbar-gutter: aut .balance-settings-row .bs-text { flex: 1; gap: 3px; min-width: 0; } .balance-settings-row .bs-title { font-weight: 600; } .balance-settings-row .bs-tail { color: var(--muted); font-size: 20px; line-height: 1; flex-shrink: 0; width: 14px; text-align: center; } +.settings-prefs select { flex: 1 1 0; min-width: 0; } -- cgit v1.2.3