feat(ui): submit task composers with Enter by default (#19272)

Use Enter to submit task replies and new tasks, with Shift+Enter for a new line. Add an experimental preference to require Command/Ctrl+Enter.

Preserve autocomplete selection and IME confirmation, and retain the modifier shortcut until saved settings load.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip authored and GitHub committed 2026-11-05 11:40:18 -06:00
1 parent b4e7b76635
commit b400f76647
19 files changed
+309 -9

No files matched your search

@@ -10,6 +10,14 @@ import {
import type { ManagedInstanceConfig } from "../services/managed-config.js";
describe("instance settings service", () => {
it("retains the legacy composer preference through saved and unrelated settings updates", () => {
expect(normalizeExperimentalSettings({}).enableLegacyComposerSubmit).toBe(false);
const enabled = applyExperimentalSettingsPatch({}, { enableLegacyComposerSubmit: true });
const saved = JSON.parse(JSON.stringify(enabled));
expect(normalizeExperimentalSettings(saved).enableLegacyComposerSubmit).toBe(true);
expect(applyExperimentalSettingsPatch(saved, { enableCases: true }).enableLegacyComposerSubmit).toBe(true);
expect(applyExperimentalSettingsPatch(saved, { enableLegacyComposerSubmit: false }).enableLegacyComposerSubmit).toBe(false);
});
it("defaults remote workspace enrollment on while preserving explicit operator choices", () => {
expect(instanceExperimentalSettingsSchema.parse({}).remoteWorkspaceStorageEnabled).toBe(true);
expect(INSTANCE_FEATURE_CATALOG.remoteWorkspaceStorageEnabled).toMatchObject({ cloudDefault: true, selfHostedDefault: true });
@@ -118,6 +126,7 @@ describe("instance settings service", () => {
enableGoogleWorkspaceConnector: false,
enableConferenceRoomChat: false,
enableClassicTaskInterface: false,
enableLegacyComposerSubmit: false,
enableExternalObjects: false,
enableSmokeLab: false,
enableCases: false,
+2
View File
@@ -272,6 +272,7 @@ export function normalizeExperimentalSettings(raw: unknown): InstanceExperimenta
enableArtifactsV1: parsed.data.enableArtifactsV1 ?? true,
enableConferenceRoomChat: parsed.data.enableConferenceRoomChat ?? false,
enableClassicTaskInterface: parsed.data.enableClassicTaskInterface ?? false,
enableLegacyComposerSubmit: parsed.data.enableLegacyComposerSubmit ?? false,
enableIssuePlanDecompositions: parsed.data.enableIssuePlanDecompositions ?? false,
enableExperimentalFileViewer: parsed.data.enableExperimentalFileViewer ?? false,
enableExternalObjects: parsed.data.enableExternalObjects ?? false,
@@ -330,6 +331,7 @@ export function normalizeExperimentalSettings(raw: unknown): InstanceExperimenta
enableArtifactsV1: true,
enableConferenceRoomChat: false,
enableClassicTaskInterface: false,
enableLegacyComposerSubmit: false,
enableIssuePlanDecompositions: false,
enableExperimentalFileViewer: false,
enableExternalObjects: false,