Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
19 changes: 19 additions & 0 deletions apps/docs/fast-sessions.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,25 @@ dashboard page.
You do not need to choose a separate conversation mode. The Session grows from
conversation to execution to review without changing identity.

### Reuse a prompt template

On Home or in **New Session**, write a prompt, open **Templates**, enter a
template name, and select **Save current prompt**. Names must be unique within
your library (ignoring capitalization); to reuse a name, delete its existing
template first. Blank names and blank prompts cannot be saved.

Open **Templates** and select a saved name to replace the composer's text.
Review or edit it, check any attachments and model settings, then send normally
to start a new Session. Loading a template does not start work. Use the delete
button beside a template to remove just that entry.

Templates store the exact prompt text, including whitespace, but not attachments,
models, environments, or other settings. They are saved only in this browser for
your signed-in account, not shared with teammates or synced across devices.
Clearing browser storage removes them, and private browsing may discard them.
If browser storage is unavailable, full, or unreadable, Roomote reports the error
rather than claiming a save or deletion succeeded.

## Source-control work without a workspace

Fast uses existing integration APIs for bounded repository inspection when the
Expand Down
63 changes: 61 additions & 2 deletions apps/web/src/app/(authenticated)/home/Home.client.test.tsx

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

28 changes: 18 additions & 10 deletions apps/web/src/components/tasks/NewTaskForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { useStartFastSession } from '@/hooks/task-runs';
import type { PromptInputMessage } from '@/components/ai-elements';
import { SessionModelSwitcher, TaskPromptInput } from '@/components/tasks';
import { useTaskLaunchConfig } from '@/components/tasks/TaskLaunchConfig';
import { PromptTemplates } from '@/components/tasks/PromptTemplates';

const DEFAULT_PROMPT_PLACEHOLDER = 'What do you want to do?';

Expand Down Expand Up @@ -238,16 +239,23 @@ export function NewTaskForm({
submitWithMetaKey={false}
submitDisabledReason={submitDisabledReason}
tools={
<SessionModelSwitcher
model={selectedModelOverrideId ?? ''}
onModelChange={(model) =>
setSelectedModelOverrideId(model || undefined)
}
reasoningEffort={selectedReasoningEffort ?? null}
onReasoningEffortChange={setSelectedReasoningEffort}
defaultModelId={defaultModelId}
defaultReasoningEffort={defaultReasoningEffort}
/>
<>
<SessionModelSwitcher
model={selectedModelOverrideId ?? ''}
onModelChange={(model) =>
setSelectedModelOverrideId(model || undefined)
}
reasoningEffort={selectedReasoningEffort ?? null}
onReasoningEffortChange={setSelectedReasoningEffort}
defaultModelId={defaultModelId}
defaultReasoningEffort={defaultReasoningEffort}
/>
<PromptTemplates
prompt={promptText}
onLoad={setPromptText}
disabled={isBusy}
/>
</>
}
/>
</div>
Expand Down
151 changes: 151 additions & 0 deletions apps/web/src/components/tasks/PromptTemplates.client.test.tsx

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

Loading
Loading