← back to Rentv 2026
fix(watchlist): deal cards drill to the specific deal (/news/:id), not the generic /deals list
4e674a2815d206a59e505612a8b8ff632613f603 · 2026-07-31 17:04:59 -0700 · Steve Abrams
HARD RULE (all data points href to deeper data): watchlist deal cards linked to
the /deals firehose instead of the individual deal. Now each card (image + title)
links to /news/${id} — the same in-app reader deals.html uses (no rentv.com hotlink).
Verified: all 30 live deals carry ids, /news/:id route resolves to article.html,
JS parses, no stray generic /deals in the card render.
Files touched
Diff
commit 4e674a2815d206a59e505612a8b8ff632613f603
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri Jul 31 17:04:59 2026 -0700
fix(watchlist): deal cards drill to the specific deal (/news/:id), not the generic /deals list
HARD RULE (all data points href to deeper data): watchlist deal cards linked to
the /deals firehose instead of the individual deal. Now each card (image + title)
links to /news/${id} — the same in-app reader deals.html uses (no rentv.com hotlink).
Verified: all 30 live deals carry ids, /news/:id route resolves to article.html,
JS parses, no stray generic /deals in the card render.
---
public/watchlist.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/public/watchlist.html b/public/watchlist.html
index 220c2379..cd5457e9 100644
--- a/public/watchlist.html
+++ b/public/watchlist.html
@@ -188,10 +188,10 @@ function render(){
$('cnt').innerHTML=any?`<b>${list.length}</b> deal${list.length===1?'':'s'} match your watchlist`:`Showing all <b>${list.length}</b> tracked deals — pin filters above to narrow`;
if(!list.length){ $('grid').innerHTML=`<div class="empty"><h3>No deals match yet</h3><div>Loosen a filter, or <a href="/subscribe" style="color:var(--red);font-weight:700">get alerted</a> when one lands.</div></div>`; return; }
$('grid').innerHTML=list.map(d=>`<div class="card">
- ${d.image?`<a class="im" href="/deals" style="background-image:url('${esc(d.image)}')"></a>`:''}
+ ${d.image?`<a class="im" href="${d.id?('/news/'+encodeURIComponent(d.id)):'/deals'}" style="background-image:url('${esc(d.image)}')"></a>`:''}
<div class="bd">
<div class="tags">${d.property_type?`<span class="tg red">${esc(d.property_type)}</span>`:''}${d.txn_type?`<span class="tg">${esc(d.txn_type)}</span>`:''}</div>
- <a href="/deals"><h4>${esc(d.title)}</h4></a>
+ <a href="${d.id?('/news/'+encodeURIComponent(d.id)):'/deals'}"><h4>${esc(d.title)}</h4></a>
<div class="meta"><span>${esc([d.city,d.state].filter(Boolean).join(', '))}</span><span class="amt">${esc(d.amount_label||'')}</span></div>
</div></div>`).join('');
}
← afcf869a feat(watchlist): add sort + density to the deal watchlist gr
·
back to Rentv 2026
·
fix(metros): metro deal items drill to the specific deal (/n c06e94ce →