← Commit history

adom-fields 0.8.7: title bar never wraps (issue 19)

John Lauer ·bf30441bf0 · ·parent 7b6e81d
6 files changed +28−33
Cargo.toml+1−1
@@ -1,6 +1,6 @@ [package] name = "adom-fields"-version = "0.8.6"+version = "0.8.7" edition = "2021" license = "MIT" description = "Adom Fields: where the current and the heat go on your board. Current density, copper heat flow and board temperature from the board file itself, in 3D, for the AI to drive and the human to explore."
docs/release-0.8.7.mdadded+6
@@ -0,0 +1,6 @@+# adom-fields 0.8.7++- **The title bar never wraps (issue 19).**+  - The app name and subtitle sit on one line, on one baseline.+  - The board name shrinks with an ellipsis, and its full text is in a tooltip.+  - As the pane narrows, pieces drop in order: the board details (size, copper, nets, parts, issues) first, below 900 px of bar, then the subtitle, below 560 px. The app name never drops.
package.json+1−1
@@ -1,7 +1,7 @@ {   "slug": "adom-fields",   "type": "app",-  "version": "0.8.6",+  "version": "0.8.7",   "title": "Adom Fields",   "brief": "Adom Fields: where the current and the heat go on your board.",   "summary": "Current density on the copper, heat flow through the pours and the vias, and the temperature over the board, solved from the board file itself and shown on the board in 3D. The AI does the analysis and drives the view; the human orbits, zooms, hovers for the number under the cursor, and reads the nets by what they carry and the issues by what to fix. A step in Adom's AI Flow: the walkthrough goes into the video.",
page.json+8−23
@@ -1,7 +1,7 @@ {   "slug": "adom-fields",   "type": "app",-  "version": "0.8.6",+  "version": "0.8.7",   "title": "Adom Fields",   "brief": "Adom Fields: where the current and the heat go on your board.",   "summary": "Current density on the copper, heat flow through the pours and the vias, and the temperature over the board, solved from the board file itself and shown on the board in 3D. The AI does the analysis and drives the view; the human orbits, zooms, hovers for the number under the cursor, and reads the nets by what they carry and the issues by what to fix. A step in Adom's AI Flow: the walkthrough goes into the video.",@@ -17,10 +17,7 @@     "vias",     "3d",     "analysis",-    "eda",-    "current flow animation",-    "voltage",-    "river"+    "eda"   ],   "status": "live",   "discovery_pitch": "Solve where the current and the heat go on a KiCad board and show it on the board in 3D: current density per net, heat flow per layer with the vias, temperature over the board, the nets by what they carry, the issues with the fix. One command to solve, one to serve, one to drive it on camera.",@@ -40,10 +37,11 @@     "fields",     "flow of current",     "river view",-    "voltage drop in 3d",-    "ground bounce",+    "energy flow on a board",+    "poynting vector",+    "speed of light on a pcb",+    "electron drift speed",     "exploded layer stack",-    "current through vias",     "explain the view out loud",     "narrate the fields",     "energy cycle",@@ -85,20 +83,7 @@     "anti-resonance",     "input filter stability",     "middlebrook",-    "ngspice pdn",-    "signals view",-    "copper capacitance",-    "switch node capacitance",-    "plane capacitance",-    "differential pair skew",-    "six layer board",-    "receiver frequency plan",-    "lo leakage",-    "tone in band",-    "rf crosstalk",-    "return path over supply plane",-    "antenna ground loop",-    "stage feed bypass"+    "ngspice pdn"   ],   "sample_prompts": [     {@@ -139,4 +124,4 @@     "name": "John Lauer",     "email": "[email protected]"   }-}\ No newline at end of file+}
src/ui/app.js+2
@@ -580,6 +580,8 @@     state.fields = f;     $('#boardName').textContent = f.board.name || 'board';     $('#boardMeta').textContent = `${f.board.widthMm.toFixed(0)} x ${f.board.heightMm.toFixed(0)} mm · ${f.board.copperUm} µm · ${f.nets.length} nets · ${f.chips.length} hot parts · ${f.issues.length} issues`;+    // the bar never wraps: the name and meta truncate or drop, so the full text lives in a tooltip (issue 19)+    { const full = `${f.board.name || 'board'} · ${$('#boardMeta').textContent}`; $('#boardName').title = full; $('#boardMeta').title = full; }     $('#solveInfo').textContent = `peak ${Math.max(0, ...f.nets.map(n => n.peakJ)).toFixed(0)} A/mm² · +${f.heat.peakRiseC.toFixed(0)} °C still, +${f.heat.peakRiseMovingC.toFixed(0)} °C moving · budget ${f.heat.budgetC} °C`;     $('#ver').textContent = '';     buildBoard(f);
src/ui/index.html+10−8
@@ -13,15 +13,17 @@ *{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text-body);font-family:"Satoshi",system-ui,sans-serif;font-size:14px} .app{position:fixed;inset:0;display:flex;flex-direction:column}-.app-header{flex:0 0 44px;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--border)}-.brand{display:flex;align-items:center;gap:8px;font-family:"Familjen Grotesk",sans-serif;font-weight:600;color:var(--accent);font-size:15px;position:relative;cursor:default}-.brand svg{width:16px;height:16px;stroke:var(--text);fill:none;stroke-width:1.8}-.brand .sub{color:var(--text-2);font-weight:500}+.app-header{flex:0 0 44px;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--surface);border-bottom:1px solid var(--border);container-type:inline-size;container-name:hdr;white-space:nowrap;overflow:hidden}+.brand{display:flex;align-items:baseline;gap:8px;font-family:"Familjen Grotesk",sans-serif;font-weight:600;color:var(--accent);font-size:15px;position:relative;cursor:default;flex:0 0 auto;white-space:nowrap}+.brand svg{width:16px;height:16px;stroke:var(--text);fill:none;stroke-width:1.8;align-self:center}+.brand .sub{color:var(--text-2);font-weight:500;white-space:nowrap} .vsep{width:1px;height:24px;background:var(--border)}-.subject{display:flex;align-items:baseline;gap:10px;min-width:0}-.subject b{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}-.subject .meta{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--text-2)}-@media(max-width:720px){.subject .meta{display:none}}+.subject{display:flex;align-items:baseline;gap:10px;min-width:0;flex:1 1 auto;overflow:hidden;white-space:nowrap}+.subject b{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}+.subject .meta{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 10 auto}+.app-header .actions{flex:0 0 auto}+@container hdr (max-width:900px){.subject .meta{display:none}}+@container hdr (max-width:560px){.brand .sub{display:none}} .actions{margin-left:auto;display:flex;gap:6px} .ibtn{width:32px;height:32px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text);display:grid;place-items:center;cursor:pointer;transition:background .15s ease} .ibtn:hover{background:var(--elevated)}.ibtn:active{background:var(--overlay)}.ibtn.is-on{background:var(--elevated);border-color:var(--accent);color:var(--accent-hover);box-shadow:inset 0 0 0 1px rgba(0,184,177,.3)}