# fix\(mobile\): keep never-painted Home crashes fatal and de-collide reset identities · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/commit/333b8feae9c3dbaaf98935e8e01533f877724e6a)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

Requested revision: 333b8feae9c3dbaaf98935e8e01533f877724e6a

Requested commit: 333b8feae9c3dbaaf98935e8e01533f877724e6a

Commit: 333b8feae9c3dbaaf98935e8e01533f877724e6a

Tree: dd81897c91c5ca1bd76d462b807302da3852ef11

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
fix(mobile): keep never-painted Home crashes fatal and de-collide reset identities

- Cold-launch OTA lockout: checkForAppUpdateOnLaunch lives in HomeRouteScreen's
  effect, so a bad OTA crashing Home before first paint would strand the user
  on a fallback whose update check never ran — and ErrorRecovery's rollback
  only fires for fatals. The Home seam now rethrows when the guarded subtree
  has never committed healthy children, restoring the pre-boundary fatal path
  (rollback + its startup crash log, deliberately not also recorded in the
  render-error log). Any failure after the first successful paint still
  recovers in-session on every screen, Home included.
- workspaceInspectorContentIdentity is a JSON tuple, not a ':'-join: paths
  and ids contain colons, and null previously mapped to the same string a
  real content id of "none" would produce.
- The thread feed boundary resets on cwd changes too: the feed renders the
  worktree setup surface, so a same-thread worktree move is new content.
  threadFeedResetKeys covers it with a test.

```

## Parents

- [2232d2d72b476fea6c4bbee88aa92a73b3efd39d](https://git.cafe/pingdotgg/t3code/commit/2232d2d72b476fea6c4bbee88aa92a73b3efd39d?format=markdown)

[Source at this commit](https://git.cafe/pingdotgg/t3code/tree/333b8feae9c3dbaaf98935e8e01533f877724e6a?format=markdown)
