FN-7047: remove quick-entry keyboard hint
Remove the retired quick-entry keyboard hint and its empty UI shell from task creation. - Drop the quick-entry hint element and associated responsive styles. - Remove the retired quickEntryHint locale key from all app locales and generated resources. - Add coverage asserting the hint and shell stay absent across expanded and collapsed quick-entry modes. - Add a patch changeset for the published Fusion package. Files changed: .changeset/fn-7047-quick-entry-hint-removal.md | 7 +++++++ packages/dashboard/app/components/QuickEntryBox.css | 18 ------------------ packages/dashboard/app/components/QuickEntryBox.tsx | 4 +--- .../app/components/__tests__/QuickEntryBox.test.tsx | 18 ++++++++++++++++++ packages/i18n/locales/en/app.json | 1 - packages/i18n/locales/es/app.json | 1 - packages/i18n/locales/fr/app.json | 1 - packages/i18n/locales/ko/app.json | 1 - packages/i18n/locales/zh-CN/app.json | 1 - packages/i18n/locales/zh-TW/app.json | 1 - packages/i18n/src/resources.d.ts | 1 - 11 files changed, 26 insertions(+), 28 deletions(-) Fusion-Task-Id: FN-7047 Fusion-Task-Lineage: c838f25b-a3cf-4c2c-b214-511df12dd423
This commit is contained in:
7
.changeset/fn-7047-quick-entry-hint-removal.md
Normal file
7
.changeset/fn-7047-quick-entry-hint-removal.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
"@runfusion/fusion": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
summary: Remove the quick-entry keyboard hint from the task creation surface.
|
||||||
|
category: internal
|
||||||
|
dev: Removes the retired quickEntryHint locale key and QuickEntryBox hint shell/CSS.
|
||||||
@@ -205,12 +205,6 @@ The global `.description-with-refine textarea { padding-right: 70px }` (styles.c
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quick-entry-hint {
|
|
||||||
font-size: 0.6875rem;
|
|
||||||
color: var(--text-dim);
|
|
||||||
margin-left: auto;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quick-entry-model-trigger {
|
.quick-entry-model-trigger {
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@@ -355,12 +349,6 @@ The global `.description-with-refine textarea { padding-right: 70px }` (styles.c
|
|||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
gap: 10px;
|
gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quick-entry-hint {
|
|
||||||
margin-left: 0;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Quick Entry Box main row with toggle */
|
/* Quick Entry Box main row with toggle */
|
||||||
@@ -437,12 +425,6 @@ The global `.description-with-refine textarea { padding-right: 70px }` (styles.c
|
|||||||
gap: 10px;
|
gap: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quick-entry-hint {
|
|
||||||
margin-left: 0;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quick-entry-toggle {
|
.quick-entry-toggle {
|
||||||
height: 28px;
|
height: 28px;
|
||||||
width: 28px;
|
width: 28px;
|
||||||
|
|||||||
@@ -2229,9 +2229,7 @@ export function QuickEntryBox({ onCreate, addToast, tasks = [], availableModels,
|
|||||||
}}
|
}}
|
||||||
data-testid="quick-entry-file-input"
|
data-testid="quick-entry-file-input"
|
||||||
/>
|
/>
|
||||||
<div className="quick-entry-hint">
|
{/* FNXC:QuickEntry 2026-06-25-00:00: FN-7047 removes the persistent "Enter to create · Esc to cancel" hint so quick entry has no leftover affordance shell after the help text was retired. */}
|
||||||
{t("tasks.quickEntryHint", "Enter to create · Esc to cancel")}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
{duplicateMatches && (
|
{duplicateMatches && (
|
||||||
<DuplicateWarningModal
|
<DuplicateWarningModal
|
||||||
|
|||||||
@@ -296,6 +296,11 @@ function renderQuickEntryBox(props = {}, { startExpanded = false } = {}) {
|
|||||||
return { ...result, props: { ...defaultProps, ...props } };
|
return { ...result, props: { ...defaultProps, ...props } };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function expectQuickEntryHintAbsent(container: HTMLElement) {
|
||||||
|
expect(container.querySelector(".quick-entry-hint")).toBeNull();
|
||||||
|
expect(screen.queryByText("Enter to create · Esc to cancel")).toBeNull();
|
||||||
|
}
|
||||||
|
|
||||||
// Helper to ensure the QuickEntryBox is expanded by clicking the toggle only when needed.
|
// Helper to ensure the QuickEntryBox is expanded by clicking the toggle only when needed.
|
||||||
function expandQuickEntry() {
|
function expandQuickEntry() {
|
||||||
const toggleButton = screen.getByTestId("quick-entry-toggle");
|
const toggleButton = screen.getByTestId("quick-entry-toggle");
|
||||||
@@ -467,6 +472,19 @@ describe("QuickEntryBox", () => {
|
|||||||
expect((textarea as HTMLTextAreaElement).rows).toBe(2);
|
expect((textarea as HTMLTextAreaElement).rows).toBe(2);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/* FNXC:QuickEntry 2026-06-25-00:00: FN-7047 requires the retired quick-entry keyboard hint to be absent across board and list surfaces, with no empty `.quick-entry-hint` shell left behind. */
|
||||||
|
it("does not render the retired keyboard hint in desktop expanded or collapsed list modes", () => {
|
||||||
|
mockDesktopViewport();
|
||||||
|
const desktop = renderQuickEntryBox({ singleLine: false });
|
||||||
|
expectQuickEntryHintAbsent(desktop.container);
|
||||||
|
desktop.unmount();
|
||||||
|
|
||||||
|
mockMobileViewport();
|
||||||
|
const list = renderQuickEntryBox({ singleLine: true, defaultExpanded: false });
|
||||||
|
expect(screen.getByTestId("quick-entry-box").className).toContain("quick-entry-box--collapsed");
|
||||||
|
expectQuickEntryHintAbsent(list.container);
|
||||||
|
});
|
||||||
|
|
||||||
// FNXC:QuickEntry 2026-06-22-19:25: List view passes singleLine so quick-add is a compact one-line input (not the tall 80px auto-grow variant).
|
// FNXC:QuickEntry 2026-06-22-19:25: List view passes singleLine so quick-add is a compact one-line input (not the tall 80px auto-grow variant).
|
||||||
describe("singleLine (List view compact mode)", () => {
|
describe("singleLine (List view compact mode)", () => {
|
||||||
it("renders a one-line textarea that is not expanded and does not grow on focus/typing", () => {
|
it("renders a one-line textarea that is not expanded and does not grow on focus/typing", () => {
|
||||||
|
|||||||
@@ -7902,7 +7902,6 @@
|
|||||||
"promoteTask": "Promote task",
|
"promoteTask": "Promote task",
|
||||||
"promoting": "Promoting…",
|
"promoting": "Promoting…",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"quickEntryHint": "Enter to create · Esc to cancel",
|
|
||||||
"refine": "Refine",
|
"refine": "Refine",
|
||||||
"refineAddDetails": "Add details",
|
"refineAddDetails": "Add details",
|
||||||
"refineAddDetailsDesc": "Add implementation details and context",
|
"refineAddDetailsDesc": "Add implementation details and context",
|
||||||
|
|||||||
@@ -7892,7 +7892,6 @@
|
|||||||
"promoteTask": "",
|
"promoteTask": "",
|
||||||
"promoting": "",
|
"promoting": "",
|
||||||
"queued": "En cola",
|
"queued": "En cola",
|
||||||
"quickEntryHint": "Enter para crear · Esc para cancelar",
|
|
||||||
"refine": "Refinar",
|
"refine": "Refinar",
|
||||||
"refineAddDetails": "Añadir detalles",
|
"refineAddDetails": "Añadir detalles",
|
||||||
"refineAddDetailsDesc": "Añadir detalles de implementación y contexto",
|
"refineAddDetailsDesc": "Añadir detalles de implementación y contexto",
|
||||||
|
|||||||
@@ -7892,7 +7892,6 @@
|
|||||||
"promoteTask": "",
|
"promoteTask": "",
|
||||||
"promoting": "",
|
"promoting": "",
|
||||||
"queued": "En file d'attente",
|
"queued": "En file d'attente",
|
||||||
"quickEntryHint": "Entrée pour créer · Échap pour annuler",
|
|
||||||
"refine": "Affiner",
|
"refine": "Affiner",
|
||||||
"refineAddDetails": "Ajouter des détails",
|
"refineAddDetails": "Ajouter des détails",
|
||||||
"refineAddDetailsDesc": "Ajouter des détails d'implémentation et du contexte",
|
"refineAddDetailsDesc": "Ajouter des détails d'implémentation et du contexte",
|
||||||
|
|||||||
@@ -7892,7 +7892,6 @@
|
|||||||
"promoteTask": "",
|
"promoteTask": "",
|
||||||
"promoting": "",
|
"promoting": "",
|
||||||
"queued": "대기 중",
|
"queued": "대기 중",
|
||||||
"quickEntryHint": "Enter로 생성 · Esc로 취소",
|
|
||||||
"refine": "다듬기",
|
"refine": "다듬기",
|
||||||
"refineAddDetails": "세부 사항 추가",
|
"refineAddDetails": "세부 사항 추가",
|
||||||
"refineAddDetailsDesc": "구현 세부 사항과 맥락 추가",
|
"refineAddDetailsDesc": "구현 세부 사항과 맥락 추가",
|
||||||
|
|||||||
@@ -7892,7 +7892,6 @@
|
|||||||
"promoteTask": "",
|
"promoteTask": "",
|
||||||
"promoting": "",
|
"promoting": "",
|
||||||
"queued": "排队中",
|
"queued": "排队中",
|
||||||
"quickEntryHint": "Enter 创建 · Esc 取消",
|
|
||||||
"refine": "优化",
|
"refine": "优化",
|
||||||
"refineAddDetails": "添加细节",
|
"refineAddDetails": "添加细节",
|
||||||
"refineAddDetailsDesc": "添加实现细节和上下文",
|
"refineAddDetailsDesc": "添加实现细节和上下文",
|
||||||
|
|||||||
@@ -7892,7 +7892,6 @@
|
|||||||
"promoteTask": "",
|
"promoteTask": "",
|
||||||
"promoting": "",
|
"promoting": "",
|
||||||
"queued": "佇列中",
|
"queued": "佇列中",
|
||||||
"quickEntryHint": "Enter 建立 · Esc 取消",
|
|
||||||
"refine": "優化",
|
"refine": "優化",
|
||||||
"refineAddDetails": "新增細節",
|
"refineAddDetails": "新增細節",
|
||||||
"refineAddDetailsDesc": "新增實作細節與脈絡",
|
"refineAddDetailsDesc": "新增實作細節與脈絡",
|
||||||
|
|||||||
1
packages/i18n/src/resources.d.ts
vendored
1
packages/i18n/src/resources.d.ts
vendored
@@ -7935,7 +7935,6 @@ export default interface Resources {
|
|||||||
"promoteTask": "Promote task",
|
"promoteTask": "Promote task",
|
||||||
"promoting": "Promoting…",
|
"promoting": "Promoting…",
|
||||||
"queued": "Queued",
|
"queued": "Queued",
|
||||||
"quickEntryHint": "Enter to create · Esc to cancel",
|
|
||||||
"refine": "Refine",
|
"refine": "Refine",
|
||||||
"refineAddDetails": "Add details",
|
"refineAddDetails": "Add details",
|
||||||
"refineAddDetailsDesc": "Add implementation details and context",
|
"refineAddDetailsDesc": "Add implementation details and context",
|
||||||
|
|||||||
Reference in New Issue
Block a user