feat(ui): add roadblock reply field to the ROADBLOCK card

A task that reports a roadblock but finishes successfully (Done/WaitingForReview/
Failed/Cancelled) had no way to answer it short of a full reset-and-rerun, losing
the run's context. Adds a reply textbox + Send button to the existing ROADBLOCK
card, modeled on the AskUser question card, that resumes the session via
ContinueTaskAsync with the user's own text. Gated on LatestRunSessionId (disabled
with a hint when there's nothing to resume); failures surface through the footer
error strip instead of a modal.
This commit is contained in:
mika kuns
2026-08-05 11:49:33 +02:00
parent 5ba0b63e03
commit d2ca7fb500
8 changed files with 321 additions and 1 deletions
@@ -78,6 +78,25 @@
<SelectableTextBlock Text="{Binding Roadblocks}"
TextWrapping="Wrap"
Foreground="{DynamicResource TextDimBrush}"/>
<Grid ColumnDefinitions="*,Auto" ColumnSpacing="6">
<TextBox Grid.Column="0"
Text="{Binding RoadblockReplyDraft, UpdateSourceTrigger=PropertyChanged}"
PlaceholderText="{loc:Tr details.roadblockReply.placeholder}"
IsEnabled="{Binding CanReplyToRoadblock}"
AcceptsReturn="False">
<TextBox.KeyBindings>
<KeyBinding Gesture="Enter" Command="{Binding SendRoadblockReplyCommand}"/>
</TextBox.KeyBindings>
</TextBox>
<Button Grid.Column="1"
Content="{loc:Tr details.roadblockReply.send}"
Command="{Binding SendRoadblockReplyCommand}"/>
</Grid>
<TextBlock Classes="meta"
Text="{loc:Tr details.roadblockReply.noSession}"
IsVisible="{Binding !CanReplyToRoadblock}"
TextWrapping="Wrap"
Foreground="{DynamicResource TextDimBrush}"/>
</StackPanel>
</Border>