Sloth-ninja closes the privacy gap in company search

Saved company searches now follow the same deletion and access rules as the rest of a user's account data.

complianceworkflow

The fork caught a gap that feature-by-feature review had missed: a person could delete their account while saved and recently viewed companies remained behind. Those records are now removed with the account, and data-access exports include the full saved-company history.

  • Account deletion clears saved and recent company records, while older self-hosted installations can still complete deletion if this feature's database update is absent.
  • Data-access exports include saved-company records, with the same safe fallback for incomplete installations.
  • Failed attempts to save a company are now visible during an active search.
  • Land Registry results now say whether the list is complete or capped at 25 transactions.
So what Legal teams handling privacy requests, and self-hosters running mixed upgrade states, should care because small search features now carry their proper data-governance obligations.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

1 commit from Sloth-ninja/JessicaOSS, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
cd346c7e Company-search train: composed-range fix wave sloth-ninja 2026-07-28 ↗ GitHub
commit body
Four cross-module findings from the composed-range review of the
company-search train (none catchable per-PR):

1. Right-to-erasure gap: deleteUserAccountData now deletes the user's
   company_search_saves rows (42P01/42703-tolerant so a self-hosted DB that
   has not run migration 20260728_01 does not fail account deletion). Saves
   are user-level, so project cleanup paths are untouched.
2. SAR completeness: buildUserAccountExport now includes company_search_saves
   (all columns; missing table -> empty section via a tolerateMissing option
   on selectAll).
3. Star-error visibility: surface the fixed star-failed message under the
   detail-header StarToggle on company-search (not only in the empty rail).
4. Copy honesty: land-registry Price Paid footnote reports the real count
   ("Showing all N transaction(s)." / capped-at-25 wording) instead of a
   hardcoded "25 most recent".

The 42P01/42703 idiom is shared, not duplicated: isMissingTableOrColumn is
exported from companySearchSaves.ts. New backend tests cover deletion +
export inclusion and the missing-table tolerance (+7). Backend tsc clean,
vitest 442 passed; frontend tsc + eslint clean.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-1134.md from inside the repo you want the changes in.

⬇ Download capture-thread-1134.md