fix(explore): keep the event-pane chevron live on skill pages#126
Merged
Conversation
Once collapsed, the left event pane could not be re-opened on a skill page — the expand chevron was dead. The auto-minimize was modelled as `effective = leftCollapsed || isSkill`, and the chevron wrote `leftCollapsed`; on a skill `isSkill` is true, so the OR stayed true no matter what the chevron wrote (`false || true == true`). Make `leftCollapsedProvider` an explicit choice (`bool?`, null = follow the page-type default) that `effective` prefers over the skill default, and reset it to null in `_SplitBody` when the focused page flips skill↔instance. The chevron is now always authoritative for the current page (it can re-open the event pane on a skill), while skills still auto-minimize by default and instances still show events. Test: crm_workspace_test `the event-pane chevron re-opens an auto-minimized skill page` drives the real chevron on a skill page — verified red under the old OR-logic, green after the fix. Updates left_pane_minimize_test for the explicit-choice semantics; adds a discovered-note. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Once the left event pane was collapsed it could not be re-opened on a skill page — the expand chevron was dead. (Instance pages toggled fine, so it looked intermittent.)
Cause. The event pane auto-minimizes on skill pages (skills carry no events), modelled as a derived OR:
On a skill,
isSkillistrue, so the OR is stucktrueregardless of the chevron — clicking expand setleftCollapsed = false, butfalse || true == true.Fix. Make
leftCollapsedProvideran explicit choice (bool?,null= follow the page-type default) thateffectiveprefers over the skill default, and reset it tonullin_SplitBodywhen the focused page flips skill↔instance. The chevron is now always authoritative for the current page (it can re-open the event pane on a skill), while skills still auto-minimize by default and instances still show events.Verified live via chrome-devtools on the seeded
:8080gateway: on the customer skill page the auto-minimized event pane now re-opens when the chevron is clicked.Test plan
test/crm/crm_workspace_test.dart→ newthe event-pane chevron re-opens an auto-minimized skill page: drives the real chevron on a skill page and asserts the pane expands. Verified red under the old OR-logic, green after the fix.test/crm/left_pane_minimize_test.dart: updated for the explicit-choice semantics — skill auto-minimizes by default, an explicit expand wins on a skill, instances default to shown and honour an explicit collapse.test/crm/crm_workspace_test.dartcollapsing the left view…still green (override=> trueis a validbool?).flutter analyzeclean; full suite green (94 tests).docs/notes/discovered/2026-05-31-dead-event-pane-chevron-on-skill.mddocuments the anti-pattern (user flag OR-ed with a derived condition → control inert where the condition holds).🤖 Generated with Claude Code