Tabs (My Flows / My Team / Public / All) belong on the Dashboard page
(/), not on the separate Flow Editor page (/my-trees). MyTreesPage is
restored to its original state. QuickStartPage gets the tab bar replacing
the 'My Flows' section header, with Create button visible on My Flows tab
only, and window focus reload to fix stale data after returning from editor.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
When visibility changes to 'public', is_public=True. When it changes away
from 'public', is_public=False. When is_public is set via TreeUpdate,
visibility column is updated to match.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The User model has account_id as Optional[UUID] but the frontend type
and backend schema declared it non-nullable. Solo users without a team
have no account, so both must allow null.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Tabs filter by visibility scope; My Team hidden for solo users
- Data reloads on tab change and window focus (fixes stale-after-editor bug)
- Create button moves into My Flows tab header
- Fork button on flows not owned by current user; opens reason modal
- Author attribution shown on cards from other users
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
GET /trees now accepts ?visibility=private|team|link|public to scope results.
TreeListResponse includes author_name (full_name or email) and visibility.
Author names fetched in single query to avoid N+1.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Previously build_tree_access_filter used is_public boolean and ignored the
visibility column entirely. Now private/link trees are only visible to their
author, team trees require matching account_id, and public trees are open to all.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- BranchSelector: add Regenerate button to re-trigger scaffold suggestions
- BranchDetailView: promote Generate All as primary action above Generate Detail/Skip
- GeneratingAnimation: replace rotating messages with plain honest status text
- TreePreviewCard: add Start Flow + Build Another alongside Open in Editor
- AIFlowBuilderModal: wire up handleStartFlow (navigates to flow) and handleBuildAnother (resets)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
hasTriggeredScaffold ref was not reset on Start Over/close, preventing
scaffold() from firing on subsequent attempts after an error.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rewrote CORRECTIVE_PROMPT_TEMPLATE to clearly distinguish option→child
vs action→sibling next_node_id semantics with concrete examples
- Added global check in ai_tree_validator that action next_node_ids
actually reference existing nodes in the tree (was silently unchecked)
- Added max_tokens truncation warning to branch_detail logger
- Added test for action next_node_id referencing nonexistent node
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>