aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2026-11-15 14:29:52 -0700
committerAdam Soltys <[email protected]>2026-11-15 14:29:52 -0700
commit513fd7db08fb3c7e89fe651ac70913264a4bff22 (patch)
treea1b5e84f0bb90dc2e5d816259eff14b7650c5e97 /src
parent392e73b9d163f39555895e9652d3a80f41cce6f3 (diff)
downloadcoinosv3-513fd7db08fb3c7e89fe651ac70913264a4bff22.tar.gz
coinosv3-513fd7db08fb3c7e89fe651ac70913264a4bff22.zip
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 <[email protected]> Claude-Session: https://claude.ai/code/session_01VMan6SwkivduFDDkMmnXjZ
Diffstat (limited to 'src')
-rw-r--r--src/app.js14
-rw-r--r--src/style.css1
2 files changed, 12 insertions, 3 deletions
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: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>' }),
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; }