# refactor\(web\): remove reducer pattern, use Zustand \+ pure functions · gitcafe/t3code

[View on GitCafe](https://git.cafe/gitcafe/t3code/commit/7522d3bde34e7178fb1618ee6ca14ea7c1dc6d0d)

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

Visibility: public

Requested revision: 7522d3bde34e7178fb1618ee6ca14ea7c1dc6d0d

Requested commit: 7522d3bde34e7178fb1618ee6ca14ea7c1dc6d0d

Commit: 7522d3bde34e7178fb1618ee6ca14ea7c1dc6d0d

Tree: d5243f9dc553ef7e6b678d6c40f229a33409d719

Author: Julius Marminge

Committer: Julius Marminge

## Message

```
refactor(web): remove reducer pattern, use Zustand + pure functions

- Main store: replace useReducer with Zustand; pure state transition
  functions (syncServerReadModel, markThreadVisited, setError, etc.)
  called via store methods. Persist via subscribe.
- Terminal store: single store keyed by threadId; replace
  dispatchTerminalAction with direct methods (setTerminalOpen,
  setTerminalHeight, splitTerminal, newTerminal, setActiveTerminal,
  closeTerminal, setTerminalActivity). Pure reduceThreadTerminalState
  used internally.
- Update all consumers to call dispatch.method(...) and terminal
  store methods. Fix store tests to use markThreadUnread pure fn.
- Fix Fragment import in store.ts; fix unused get param for lint.

Made-with: Cursor

```

## Parents

- [ed26b84177b93790481cf34ffe0edd010760e542](https://git.cafe/gitcafe/t3code/commit/ed26b84177b93790481cf34ffe0edd010760e542?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/t3code/tree/7522d3bde34e7178fb1618ee6ca14ea7c1dc6d0d?format=markdown)
