← back to Rentv 2026
fix(pr-intelligence): graceful 404 on people?id=<dead> — openPerson caught PR.api's throw on a non-existent person id (e.g. deep-link ?id=2539, which isn't among the 844 real people) and the detail drawer crashed unhandled. Now shows 'Person not found' instead of throwing.
b14737eb4688d247e044d2e26506da858e039802 · 2026-08-06 10:09:53 -0700 · Steve Abrams
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Files touched
M public/admin/pr-intelligence/people.html
Diff
commit b14737eb4688d247e044d2e26506da858e039802
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu Aug 6 10:09:53 2026 -0700
fix(pr-intelligence): graceful 404 on people?id=<dead> — openPerson caught PR.api's throw on a non-existent person id (e.g. deep-link ?id=2539, which isn't among the 844 real people) and the detail drawer crashed unhandled. Now shows 'Person not found' instead of throwing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---
public/admin/pr-intelligence/people.html | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/public/admin/pr-intelligence/people.html b/public/admin/pr-intelligence/people.html
index 790cfd18..e81433e7 100644
--- a/public/admin/pr-intelligence/people.html
+++ b/public/admin/pr-intelligence/people.html
@@ -75,7 +75,12 @@
const drawer = PR.drawer();
async function openPerson(id) {
- const p = await PR.api('/people/' + id);
+ let p;
+ try { p = await PR.api('/people/' + id); }
+ catch (e) {
+ drawer.open('Person not found', `<p style="padding:16px 18px;color:var(--muted)">No person with id <code>${PR.esc(String(id))}</code>${e && e.status === 404 ? ' — it may have been merged or removed.' : ' (' + PR.esc((e && e.message) || 'load failed') + ')'}</p>`);
+ return;
+ }
const originals = p.original_values || {};
const body = drawer.open(`${PR.esc(p.full_name)} ${PR.statusBadge(p.lifecycle_status)} ${p.suppressed ? PR.badge('SUPPRESSED', 'red') : ''}`, `
<div class="kv">
← ea0ef6cd PR intel (b2 complete): tenant isolation via Postgres RLS
·
back to Rentv 2026
·
Sitewide nav: collapse all tab strips into a hamburger + cen 9d3b82a9 →