Skip to content

Conversation

@mpreyskurantov
Copy link
Contributor

No description provided.

@mpreyskurantov mpreyskurantov self-assigned this Feb 11, 2026
@mpreyskurantov mpreyskurantov added the WIP Work in progress label Feb 11, 2026
@mpreyskurantov mpreyskurantov requested a review from a team as a code owner February 11, 2026 10:25
Copilot AI review requested due to automatic review settings February 11, 2026 10:25
@mpreyskurantov mpreyskurantov requested a review from a team as a code owner February 11, 2026 10:25
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds new Chat API surface for controlling the message input text and configuring speech-to-text (STT), and wires these options through the wrapper packages/types so consumers can use the feature across frameworks.

Changes:

  • Added dxChatOptions.inputFieldText and dxChatOptions.speechToTextOptions to DevExtreme typings.
  • Refactored dxSpeechToText option typings to expose dxSpeechToTextOptions (deprecated) and alias Properties to it.
  • Updated Angular/Vue/React Chat wrappers to expose speechToTextOptions and add nested configuration components for STT.

Reviewed changes

Copilot reviewed 8 out of 12 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
packages/devextreme/ts/dx.all.d.ts Adds inputFieldText/speechToTextOptions to dxChatOptions; refactors dxSpeechToText properties typing.
packages/devextreme/js/ui/speech_to_text_types.d.ts Re-exports dxSpeechToTextOptions from speech_to_text.
packages/devextreme/js/ui/speech_to_text.d.ts Introduces dxSpeechToTextOptions interface (deprecated) and aliases Properties to it.
packages/devextreme/js/ui/chat.d.ts Adds Chat inputFieldText and speechToTextOptions typings.
packages/devextreme-vue/src/chat.ts Exposes inputFieldText/speechToTextOptions and adds STT nested config components.
packages/devextreme-react/src/chat.ts Adds STT nested config components for Chat.
packages/devextreme-metadata/make-angular-metadata.ts Adjusts Angular metadata filtering for Chat members.
packages/devextreme-angular/src/ui/chat/nested/speech-to-text-options.ts Adds Angular nested option component for Chat STT options.
packages/devextreme-angular/src/ui/chat/nested/speech-recognition-config.ts Adds Angular nested option component for STT recognition config.
packages/devextreme-angular/src/ui/chat/nested/custom-speech-recognizer.ts Adds Angular nested option component for custom recognizer config.
packages/devextreme-angular/src/ui/chat/nested/index.ts Exports the new nested option components.
packages/devextreme-angular/src/ui/chat/index.ts Exposes inputFieldText and speechToTextOptions on the Angular Chat component and wires change emitters/modules.

Comment on lines +165 to 166
speechToTextOptions: Object as PropType<dxSpeechToTextOptions | Record<string, any>>,
typingUsers: Array as PropType<Array<User>>,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Vue wrapper types speechToTextOptions as dxSpeechToTextOptions, but dxChatOptions.speechToTextOptions is Omit<SpeechToTextProperties, 'stylingMode' | 'type'>. Please align the Vue prop type with the core Chat typings (and avoid accepting stylingMode/type here).

Copilot uses AI. Check for mistakes.
Comment on lines +666 to +669
stylingMode: String as PropType<ButtonStyle>,
tabIndex: Number,
type: String as PropType<ButtonType | string>,
visible: Boolean,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxSpeechToTextOptions currently exposes stylingMode and type, but dxChatOptions.speechToTextOptions omits these fields. Please remove these props from the nested option config (and drop the related ButtonStyle/ButtonType imports if they become unused) to keep wrapper API consistent with core typings.

Copilot uses AI. Check for mistakes.
Comment on lines +424 to +426
stylingMode?: ButtonStyle;
tabIndex?: number;
type?: ButtonType | string;
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ISpeechToTextOptionsProps includes stylingMode and type, but core dxChatOptions.speechToTextOptions is Omit<SpeechToTextProperties, 'stylingMode' | 'type'>. Please remove these props (and the ButtonStyle/ButtonType imports if they become unused) so the React nested option can’t set fields that Chat’s public API intentionally excludes.

Suggested change
stylingMode?: ButtonStyle;
tabIndex?: number;
type?: ButtonType | string;
tabIndex?: number;

Copilot uses AI. Check for mistakes.
Comment on lines +427 to +431
get speechToTextOptions(): dxSpeechToTextOptions {
return this._getOption('speechToTextOptions');
}
set speechToTextOptions(value: dxSpeechToTextOptions) {
this._setOption('speechToTextOptions', value);
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

speechToTextOptions is typed as dxSpeechToTextOptions, but the core dxChatOptions.speechToTextOptions type is Omit<SpeechToTextProperties, 'stylingMode' | 'type'>. The Angular wrapper should use the same omitted type (and update the corresponding speechToTextOptionsChange output type as well) so consumers can’t pass unsupported stylingMode/type values.

Copilot uses AI. Check for mistakes.
Comment on lines +228 to +234
@Input()
get stylingMode(): ButtonStyle {
return this._getOption('stylingMode');
}
set stylingMode(value: ButtonStyle) {
this._setOption('stylingMode', value);
}
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stylingMode is exposed on the dxo-chat-speech-to-text-options nested option, but dxChatOptions.speechToTextOptions intentionally omits stylingMode (and type). Please remove these inputs from the nested option (or otherwise prevent them from being set) to match the Chat public API typings.

Copilot uses AI. Check for mistakes.
Comment on lines +244 to +250
@Input()
get type(): ButtonType | string {
return this._getOption('type');
}
set type(value: ButtonType | string) {
this._setOption('type', value);
}
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

type is exposed on the dxo-chat-speech-to-text-options nested option, but dxChatOptions.speechToTextOptions omits type (and stylingMode) in the core typings. Please remove this input (or block it from being set) so Angular wrapper matches the supported Chat option surface.

Copilot uses AI. Check for mistakes.
Copilot AI review requested due to automatic review settings February 11, 2026 11:13
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 9 out of 13 changed files in this pull request and generated 3 comments.

Comment on lines +633 to +638
"update:stopIcon": null,
"update:stopText": null,
"update:stylingMode": null,
"update:tabIndex": null,
"update:type": null,
"update:visible": null,
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DxSpeechToTextOptions exposes stylingMode/type updates, but dxChatOptions.speechToTextOptions omits these fields. Remove these emits (and related props) so the nested configuration surface matches the underlying Chat option type.

Copilot uses AI. Check for mistakes.
Comment on lines +427 to +430
get speechToTextOptions(): dxSpeechToTextOptions {
return this._getOption('speechToTextOptions');
}
set speechToTextOptions(value: dxSpeechToTextOptions) {
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dxChatOptions.speechToTextOptions is typed in core as Omit<dxSpeechToTextOptions, 'stylingMode' | 'type'> (see packages/devextreme/js/ui/chat.d.ts). The Angular wrapper exposes it as full dxSpeechToTextOptions, which allows unsupported options to be passed in and diverges from the runtime API. Align the type here with the core option (omit stylingMode and type).

Suggested change
get speechToTextOptions(): dxSpeechToTextOptions {
return this._getOption('speechToTextOptions');
}
set speechToTextOptions(value: dxSpeechToTextOptions) {
get speechToTextOptions(): Omit<dxSpeechToTextOptions, 'stylingMode' | 'type'> {
return this._getOption('speechToTextOptions');
}
set speechToTextOptions(value: Omit<dxSpeechToTextOptions, 'stylingMode' | 'type'>) {

Copilot uses AI. Check for mistakes.
* This member supports the internal infrastructure and is not intended to be used directly from your code.

*/
@Output() speechToTextOptionsChange: EventEmitter<dxSpeechToTextOptions>;
Copy link

Copilot AI Feb 11, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

speechToTextOptionsChange should match the actual option type exposed by the component (Omit<dxSpeechToTextOptions, 'stylingMode' | 'type'>). Using dxSpeechToTextOptions here makes the event type broader than the supported option surface.

Suggested change
@Output() speechToTextOptionsChange: EventEmitter<dxSpeechToTextOptions>;
@Output() speechToTextOptionsChange: EventEmitter<Omit<dxSpeechToTextOptions, 'stylingMode' | 'type'>>;

Copilot uses AI. Check for mistakes.
@mpreyskurantov mpreyskurantov changed the title WIP: Chat / STT Chat: Add STT / SpeechToText Integration (d.ts) Feb 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant