Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
4e8d6c1
FEAT: Warn GUI users when target doesn't support attachment modality
romanlutz May 5, 2026
50ff2b7
FIX: Block sending when target doesn't support attachment modality
romanlutz May 5, 2026
0d9eb90
FEAT: Block sending when converter output type is unsupported by target
romanlutz May 6, 2026
5a9e735
FIX: Expand textarea max height and unify scrollbar styling
romanlutz May 6, 2026
01b204b
FIX: Share textarea space equally between original and converted
romanlutz May 6, 2026
fc3941f
FIX: Redesign input area layout for proper space sharing
romanlutz May 6, 2026
bf62cad
FIX: Restore scroll, style clear button, fix spacing and badge alignment
romanlutz May 6, 2026
d4a6848
FIX: Proper textarea sizing, scrolling, and button styling
romanlutz May 6, 2026
e5987f5
Merge remote-tracking branch 'origin/main' into gui-modality-check
romanlutz May 6, 2026
8e1e5c9
STYLE: Apply ruff formatting after main merge
romanlutz May 6, 2026
7ed2b67
REFACTOR: Nest target capabilities under capabilities field
romanlutz May 6, 2026
79883d1
Merge branch 'main' into gui-modality-check
romanlutz May 7, 2026
e6d3564
MERGE: Reconcile with PR #1691 capability rendering
romanlutz May 8, 2026
7e4b3d9
Merge remote-tracking branch 'romanlutz/gui-modality-check' into gui-…
romanlutz May 8, 2026
6c88624
REFACTOR: Drop redundant supported_*_types fallbacks in ConverterPanel
romanlutz May 8, 2026
1ba9181
DOC: Document target modality validation helper
romanlutz May 8, 2026
83e6da7
Merge remote-tracking branch 'origin/main' into gui-modality-check
romanlutz May 8, 2026
1fd3110
PR FEEDBACK: Address review comments on PR #1692
romanlutz May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion frontend/e2e/converters.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,16 @@ async function mockBackendAPIs(page: Page) {
target_type: "OpenAIChatTarget",
endpoint: "https://mock.openai.com",
model_name: "gpt-4o-mock",
supports_multi_turn: true,
capabilities: {
supports_multi_turn: true,
supports_multi_message_pieces: false,
supports_json_schema: false,
supports_json_output: false,
supports_editable_history: false,
supports_system_prompt: false,
supported_input_data_types: ["text"],
supported_output_data_types: ["text"],
},
},
],
pagination: { limit: 50, has_more: false },
Expand Down
4 changes: 2 additions & 2 deletions frontend/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 43 additions & 7 deletions frontend/src/components/Chat/ChatInputArea.styles.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ export const useChatInputAreaStyles = makeStyles({
columnLeft: {
display: 'flex',
flexDirection: 'column',
gap: tokens.spacingVerticalXXS,
gap: tokens.spacingVerticalS,
alignItems: 'center',
marginRight: tokens.spacingHorizontalS,
alignSelf: 'center',
Expand All @@ -77,24 +77,24 @@ export const useChatInputAreaStyles = makeStyles({
flexDirection: 'column',
flex: 1,
minWidth: 0,
gap: tokens.spacingVerticalXXS,
gap: tokens.spacingVerticalXS,
},
columnRight: {
display: 'flex',
flexDirection: 'column',
gap: tokens.spacingVerticalXXS,
gap: tokens.spacingVerticalS,
alignItems: 'center',
marginLeft: tokens.spacingHorizontalS,
alignSelf: 'center',
},
textRow: {
display: 'flex',
alignItems: 'center',
alignItems: 'flex-start',
gap: tokens.spacingHorizontalXXS,
},
convertedRow: {
display: 'flex',
alignItems: 'center',
alignItems: 'flex-start',
gap: tokens.spacingHorizontalXXS,
},
textInput: {
Expand All @@ -107,7 +107,7 @@ export const useChatInputAreaStyles = makeStyles({
color: tokens.colorNeutralForeground1,
resize: 'none',
minHeight: '24px',
maxHeight: '96px',
maxHeight: '60vh',
overflowY: 'auto',
'::placeholder': {
color: tokens.colorNeutralForeground4,
Expand All @@ -123,12 +123,16 @@ export const useChatInputAreaStyles = makeStyles({
borderRadius: '4px',
},
},
textInputShared: {
maxHeight: '30vh',
},
iconButton: {
minWidth: '32px',
width: '32px',
height: '32px',
padding: 0,
borderRadius: '50%',
border: `1px solid ${tokens.colorNeutralStroke1}`,
},
dismissBtn: {
minWidth: '24px',
Expand All @@ -143,6 +147,20 @@ export const useChatInputAreaStyles = makeStyles({
padding: 0,
borderRadius: '50%',
},
clearConversionButton: {
minWidth: '32px',
width: '32px',
height: '32px',
padding: 0,
borderRadius: '50%',
border: `1px solid ${tokens.colorNeutralStroke1}`,
backgroundColor: tokens.colorNeutralBackground1,
color: tokens.colorNeutralForeground2,
':hover': {
backgroundColor: tokens.colorNeutralBackground1Hover,
color: tokens.colorNeutralForeground1,
},
},
singleTurnWarning: {
display: 'flex',
alignItems: 'center',
Expand Down Expand Up @@ -204,11 +222,21 @@ export const useChatInputAreaStyles = makeStyles({
color: tokens.colorNeutralForeground1,
resize: 'none',
minHeight: '20px',
maxHeight: '80px',
maxHeight: '30vh',
overflowY: 'auto',
whiteSpace: 'pre-wrap',
wordBreak: 'break-word',
padding: 0,
'::-webkit-scrollbar': {
width: '8px',
},
'::-webkit-scrollbar-track': {
backgroundColor: 'transparent',
},
'::-webkit-scrollbar-thumb': {
backgroundColor: tokens.colorNeutralStroke1,
borderRadius: '4px',
},
},
convertedMediaPreview: {
maxHeight: '60px',
Expand All @@ -228,6 +256,13 @@ export const useChatInputAreaStyles = makeStyles({
fontSize: tokens.fontSizeBase200,
color: tokens.colorNeutralForeground2,
},
unsupportedWarning: {
display: 'flex',
alignItems: 'center',
gap: tokens.spacingHorizontalXXS,
color: tokens.colorPaletteYellowForeground2,
fontSize: tokens.fontSizeBase200,
},
originalBadge: {
display: 'inline-block',
padding: `0 ${tokens.spacingHorizontalXS}`,
Expand All @@ -242,6 +277,7 @@ export const useChatInputAreaStyles = makeStyles({
convertedBadge: {
display: 'inline-block',
padding: `0 ${tokens.spacingHorizontalXS}`,
marginRight: tokens.spacingHorizontalXS,
borderRadius: tokens.borderRadiusSmall,
backgroundColor: tokens.colorPaletteGreenBackground2,
color: tokens.colorPaletteGreenForeground2,
Expand Down
Loading
Loading