Releases: pike00/Kindred
Release list
v0.2.93
v0.2.92
Kindred v0.2.92 is a quiet but impactful tuning pass—one that makes the app feel faster from the very first paint, and a bit more human when you reach out to someone.
We’ve tightened up the frontend’s startup sequence: a slower-than-it-should-be first paint is now fixed, and the eagerly loaded JavaScript bundle has gotten notably leaner. On top of that, we brought our display font in‑house, so pages now render with zero layout shift and no third‑party round‑trip stealing milliseconds from your first glance. The result is a noticeably snappier, more stable shell right as you land.
Under the hood, contact fields are learning better manners. Phone fields now politely reject non‑numeric input, and email fields push back when the value doesn’t look like an address—catching typos before they become undelivered messages. It’s a small guardrail that keeps your contact list clean and dependable.
All in all, v0.2.92 is the kind of release that doesn’t scream for attention, but earns it every time you open the app.
v0.2.91
Here’s a short editorial release narrative for kindred v0.2.91:
Contact cards just got a little more personal. In this release we reordered the details so that the phone number now sits right above email — because sometimes a quick call comes first. We also brought age and a birthday countdown directly onto the contact card and the dashboard, giving every connection that extra touch of warmth.
Behind the curtain, our backend tests caught up with the removal of the journal and mood features. And in a small but fun automation upgrade, we enlisted DeepSeek v4 Pro to help draft these release notes — faster, sharper, and maybe a bit cleverer than before.
Small steps that keep Kindred human.
v0.2.90
What's new
Added
- Edit a contact's birthday from the Edit dialog. Previously a birthday could only be set when creating a contact and never changed afterward, even though the API supported it. The Edit Contact dialog now has a birthday field that pre-fills the existing value.
Full changelog: v0.2.89...v0.2.90
v0.2.89
v0.2.86
v0.2.85
v0.2.84 — Fix global search and duplicate contact header buttons
Fixes
- Global search no longer 500s. Every
/searchquery failed: search referencedModel.search_vectoron Contact / Note / Interaction / JournalEntry, but the tsvector columns (created by migrationa0b1c2d3e4f5) were never declared on the SQLModel classes (AttributeError: search_vector). The columns are now mapped on all four table models (DB-trigger maintained, excluded from the API). Additionally, interaction search referencedInteraction.updated_atandInteraction.contact_id, neither of which exist — interactions have noupdated_atand link to contacts viainteraction_attendee. Shared-contact visibility now scopes through the attendee join. - Contact detail header no longer shows duplicate buttons. Removed an accidentally duplicated "Download PDF + Edit" button group.
v0.2.83 — Fix contact detail page crash
Fixes
- Contact detail page no longer crashes. The interaction-activity heatmap rendered two sibling
<button>elements (light/dark variants) inside a single RadixTooltipTrigger asChild, which requires exactly one child.React.Children.onlythrew on every render and the route error boundary replaced the whole page with "Error / Oops!". The cell is now a single button with inner light/dark color spans. - Contact heatmap endpoint no longer 500s for contacts with interactions.
get_contact_heatmapunpacked a single-column scalarSELECTas a tuple (for (occurred_at,) in ...), raisingTypeError: cannot unpack non-iterable datetime.datetime object.
v0.2.82 — Stack QuickLog FAB above the voice-record FAB
Fixed
- The QuickLog and hold-to-record floating action buttons were both pinned to the bottom-right corner with the same z-index, so the 48px QuickLog button rendered on top of the 64px voice button as one overlapping green blob. QuickLog now sits above the voice FAB with a clean gap.
Commit: cb390db