[object Object]

← back to Commercialrealestate

chore: lint, refactor (path.join, delete stale note keys), v-minor (per-listing broker + notes + cost-logging) — session close

685110b1d8ae327336813b12b8db7a2fb8d3df47 · 2026-08-03 09:13:31 -0700 · Steve Abrams

Files touched

Diff

commit 685110b1d8ae327336813b12b8db7a2fb8d3df47
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Mon Aug 3 09:13:31 2026 -0700

    chore: lint, refactor (path.join, delete stale note keys), v-minor (per-listing broker + notes + cost-logging) — session close
---
 package-lock.json              | 4 ++--
 package.json                   | 2 +-
 public/condos.html             | 2 +-
 scripts/fetch-condos-redfin.js | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 750f671..ddae611 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "commercialrealestate",
-  "version": "0.15.1",
+  "version": "0.16.0",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "commercialrealestate",
-      "version": "0.15.1",
+      "version": "0.16.0",
       "dependencies": {
         "better-sqlite3": "^12.11.1",
         "express": "^4.22.2",
diff --git a/package.json b/package.json
index 14f391f..88e8d02 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "commercialrealestate",
-  "version": "0.15.1",
+  "version": "0.16.0",
   "private": true,
   "description": "LA County CRE investment explorer — multi-firm sourced, Census + assessor enriched, Qwen-analyzed",
   "scripts": {
diff --git a/public/condos.html b/public/condos.html
index d134acd..ce44328 100644
--- a/public/condos.html
+++ b/public/condos.html
@@ -409,7 +409,7 @@ $('#grid').addEventListener('input',e=>{
   clearTimeout(_noteTimers[id]);
   _noteTimers[id]=setTimeout(async()=>{
     try{ await fetch('/api/condo-notes/'+encodeURIComponent(id),{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({note:val})});
-      NOTES[id]=val.trim()?{note:val,updated_at:new Date().toISOString()}:undefined;
+      if(val.trim()) NOTES[id]={note:val,updated_at:new Date().toISOString()}; else delete NOTES[id];
       if(stat){ stat.textContent='✓ saved'; setTimeout(()=>{if(stat)stat.textContent='';},1500); }
     }catch(_){ if(stat) stat.textContent='⚠ not saved'; }
   },600);
diff --git a/scripts/fetch-condos-redfin.js b/scripts/fetch-condos-redfin.js
index dd97d32..408e999 100644
--- a/scripts/fetch-condos-redfin.js
+++ b/scripts/fetch-condos-redfin.js
@@ -222,7 +222,7 @@ function condosFromCSV(text, regionName) {
       const row = { ts: new Date().toISOString(), api: 'browserbase', vendor: 'Browserbase',
         app: 'commercialrealestate/fetch-condos-redfin', note: `Redfin LA condo re-scrape (${sessions} sessions, ${condos.length} condos)`,
         units: [{ qty: sessions, unit: 'session', rate: SESSION_COST, subtotal: +actualCost }], cost_usd: +actualCost };
-      fs.appendFileSync(process.env.HOME + '/.claude/cost-ledger.jsonl', JSON.stringify(row) + '\n');
+      fs.appendFileSync(path.join(process.env.HOME, '.claude', 'cost-ledger.jsonl'), JSON.stringify(row) + '\n');
       process.stderr.write(`  ✔ logged $${actualCost} to cost-ledger (AbramsEgo budget tracking)\n`);
     } catch (e) { process.stderr.write('  cost-ledger log skipped: ' + e.message + '\n'); }
   }

← 640b812 fetch-condos-redfin: log Browserbase spend to cost-ledger fo  ·  back to Commercialrealestate  ·  condos viewer: always-on created date+time chip on cards + d f7b6b05 →