Repository navigation
Conversation
…d action The Store inspector's action log now tags each entry with the manager that dispatched it through its controller (origin) and the manager whose middleware handled it without passing it on (consumedBy), and each history records its chain of manager names. No UI yet. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
…he Store inspector Action rows tag the code's own managers (↑ StreamManager, ⊘ handled by StreamManager); an action's detail lists sentBy and handledBy. The State tab gets a Managers section: the chain in order with what each manager sent and handled up to the moment, and a row opens that manager's actions. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4445 +/- ##
=======================================
Coverage 98.37% 98.37%
=======================================
Files 161 161
Lines 3073 3073
Branches 604 604
=======================================
Hits 3023 3023
Misses 10 10
Partials 40 40 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Docs preview: https://docs-site-pr-4445-data-client.vercel.app Built from 8cdcb2a merged into |
…nd credit copies A manager's view now lists the actions it kept from the store, not only those that changed it. When a middleware passes on a copy, whoever handles the copy is credited on the recorded action, and the store's change is recorded on it too. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
…s copy A middleware that passes on its action and then another one no longer records the second on the first's entry. Copy links can't loop. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
…n the Action side A manager isn't state: it's a stage every dispatch passes between the app and the store. The State tab's Managers section and manager view give way to a pipeline strip over the Store's actions (the app, each manager in order, the store, with what each sent and kept; picking one shows only its actions) and each action's path through it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 0ccfb98. Configure here.
With nothing picked, the Store's actions still list every step (a fetch the network handled included). A picked stage the chain no longer has is let go. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
…as they do Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM

Requested by Nathaniel · project thread
Motivation
The playground's Store inspector logs every action, but it doesn't say who caused one. A custom manager can push data with
controller.set, as a websocketStreamManagerdoes, or swallow aSUBSCRIBEbefore it reachesSubscriptionManager. The log shows neither, so readers learning about managers can't watch the chain at work.Solution
Manager attribution is added to the existing action log. There is still one log, recorded by the preview's recorder. The public
ManagerAPI doesn't change.origin: each user manager is wrapped (store/attribution.ts), and its controller is proxied. Anything it dispatches throughset,fetch,dispatchand the like is credited to it. A nested dispatch is credited to whoever made the call.consumedBy: when a middleware returns without callingnext, that manager is marked as having handled the action. Async middleware is checked after its promise settles.next({...action})) counts as passing it on.instanceof), so minified production names still readNetworkManager.DevToolsManagerhands its controller to the console, so calls made through it aren't credited to it.Store panel. A manager isn't state: it's a stage every dispatch passes between the app and the store. So it shows on the Action side.
↑ StreamManagerand⊘ handled by StreamManageron rows, for the code's own managers.sentBy/handledByin words.Tests
website/src/components/Playground/preview/__tests__/managerAttribution.test.tsxcovers:The Playground suite passes (377 tests). Desktop and phone screenshots are in the project thread.
🤖 Generated with Claude Code
https://claude.ai/code/session_013oVRifbiMMFhcDHM5wYAkM
Note
Low Risk
Playground Store inspector and internal logging/UI only; no changes to core
@data-client/reactmanager behavior in app code paths.Overview
The playground Store inspector now records who dispatched each action (
origin) and which manager swallowed it (consumedBy) by wrapping user managers vialog.track()inattribution.ts(controller proxy + middleware hooks), without changing the publicManagerAPI.UI: When playground code adds custom managers, the Actions tab shows a pipeline (app → managers → store) with send/handle counts and stage filtering; action rows get ↑ / ⊘ chips for custom managers; action detail shows an ActionPath through the chain. Default-only chains keep text
sentBy/handledByfields and hide the pipeline.Log:
actionLog.connect()gainstrack,patchfor late attribution updates, and copy-tracking fornext({...action})edge cases.stageFilterand updated unapplied-action copy reflect attribution.Tests: New
managerAttribution.test.tsxcovers attribution rules and pipeline UI.Reviewed by Cursor Bugbot for commit 8cdcb2a. Bugbot is set up for automated code reviews on this repo. Configure here.