0.2.36: Investor View carries exit status + grey out fully-exited fund cards

The admin read-only Investor View built capital-account responses
without exited_on, so an exited position showed the active card with
$0s (the LP's own portal was correct). Extracted exit_dates() into
capital_account_router and stamp it in investor_view too; regression
test added. A fund card where every position is exited now renders
greyed (bg + title) so it reads as closed at a glance.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Jonathan Kirkwood
2026-07-03 09:35:03 -05:00
co-authored by Claude Opus 4.8
parent 2c87ab499a
commit 1deb6586b0
9 changed files with 65 additions and 18 deletions
+1 -1
View File
@@ -3,7 +3,7 @@
// - content-hashed /assets/* are cache-first (immutable, safe forever)
// - /api/* is never cached
// Bump CACHE on each release so old entries are purged.
const CACHE = 'ten31-portal-0.2.35'
const CACHE = 'ten31-portal-0.2.36'
self.addEventListener('install', () => self.skipWaiting())
+10 -2
View File
@@ -152,10 +152,18 @@ function FundSection({
return [...groups.values()];
}, [accounts]);
// When every position in this fund has been sold/transferred, grey the whole card so it
// reads as closed at a glance — documents inside stay fully usable.
const allExited = byName.length > 0 && byName.every((g) => g[0].exited_on);
return (
<section className="bg-white border border-gray-200 rounded-lg p-5">
<section
className={`border border-gray-200 rounded-lg p-5 ${allExited ? "bg-gray-50" : "bg-white"}`}
>
<div className="flex items-baseline justify-between">
<h2 className="text-lg font-semibold text-gray-900">{entity.name}</h2>
<h2 className={`text-lg font-semibold ${allExited ? "text-gray-500" : "text-gray-900"}`}>
{entity.name}
</h2>
<span className="text-xs text-gray-400 uppercase">{entity.type}</span>
</div>
+1 -1
View File
@@ -1,4 +1,4 @@
// Bumped each release so the running build is visible in the UI.
// If the number shown in the app doesn't match the installed s9pk version,
// the new frontend isn't actually being served.
export const APP_VERSION = "0.2.35";
export const APP_VERSION = "0.2.36";