Fix lit() truncating decimals; restore last selected stack on load

- lit() was calling Math.trunc() on numbers, dropping decimals from balance_offset and any other numeric SQL params
- Stacks page now saves last selected stack to localStorage and restores it on load

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Paul Trowbridge 2026-04-19 16:38:02 -04:00
parent a89bd36f40
commit 4e477420ad
2 changed files with 9 additions and 2 deletions

View File

@ -8,7 +8,7 @@
function lit(val) { function lit(val) {
if (val === null || val === undefined) return 'NULL'; if (val === null || val === undefined) return 'NULL';
if (typeof val === 'boolean') return val ? 'TRUE' : 'FALSE'; if (typeof val === 'boolean') return val ? 'TRUE' : 'FALSE';
if (typeof val === 'number') return String(Math.trunc(val)); if (typeof val === 'number') return String(val);
if (typeof val === 'object') return `'${JSON.stringify(val).replace(/'/g, "''")}'`; if (typeof val === 'object') return `'${JSON.stringify(val).replace(/'/g, "''")}'`;
return `'${String(val).replace(/'/g, "''")}'`; return `'${String(val).replace(/'/g, "''")}'`;
} }

View File

@ -658,17 +658,24 @@ export default function Stacks({ sources, onStackStale, onStackViewGenerated })
async function load() { async function load() {
const s = await api.getStacks() const s = await api.getStacks()
setStacks(s) setStacks(s)
return s
} }
async function loadDetail(name) { async function loadDetail(name) {
const s = await api.getStack(name) const s = await api.getStack(name)
setStackDetail(s) setStackDetail(s)
setSelected(name) setSelected(name)
localStorage.setItem('stacks_last_selected', name)
setSqlDraft('') setSqlDraft('')
setSqlResult(null) setSqlResult(null)
} }
useEffect(() => { load() }, []) useEffect(() => {
load().then(s => {
const last = localStorage.getItem('stacks_last_selected')
if (last && s.find(x => x.name === last)) loadDetail(last)
})
}, [])
useEffect(() => { if (selected) loadDetail(selected) }, [selected]) useEffect(() => { if (selected) loadDetail(selected) }, [selected])
async function createStack() { async function createStack() {