Omniscio documentation
Browse all documentation
  1. Getting Started13
  2. Sessions & Agents115
  3. Inbox & Notifications59
  4. Projects & Tasks95
  5. Automation & Scheduling75
  6. Knowledge & Memory26
  7. AI Features60
  8. Integrations100
  9. Plugins & Marketplace33
  10. Cloud & Teams56
  11. Settings & Customization58
  12. Account & Billing28
  13. Troubleshooting84
  14. CLI & API Reference22
  15. Legal & Policies4
  16. Uncategorised22

Quick SMS (Control Space → SMS tab)

How to fire off a text without leaving the keyboard, from the SMS tab of the Quick Launch composer — picking a recipient, the short undoable delay before it sends, and the SMS Favorites list that sits behind it.

What it is

A tab inside the Quick Launch / Control Space floating composer (Ctrl+Space → SMS tab) for firing off a text without leaving the keyboard — the SMS sibling of the Quick Email tab. Pick a recipient, type a message, press Ctrl/Cmd+Enter; the text sends through Omniscio's existing SMS pipeline after a few-second undoable delay, and the composer closes immediately.

This is the "quick text to someone I message a lot" path. It is not a full SMS client — there is no picture/GIF/MMS, no conversation thread, no inbox. Those live in the main SMS view; the Quick Launch tab is deliberately a lean text-only quick-send.

The tab is gated on smsEnabled (off by default). With SMS disabled at Settings → SMS, the tab is hidden from the Quick Launch strip. When SMS is enabled but the provider (Pushbullet or the native phone endpoint) isn't connected yet, the tab shows a short "SMS isn't connected yet — open Settings → SMS" message instead of a form that couldn't send.

What it looks like (SMS tab, connected):

  • A To combobox. It merges your saved SMS favorites with people you've recently texted (from your SMS conversations), deduplicated by number with favorites first. Because a phone number is an open set (unlike the closed Message/DM roster), you can also just type any number — a "Text <number>" row appears once what you've typed looks like a phone number. The cursor starts here on open.
  • A Message textarea with placeholder "Type your message…". Like the Email tab, plain Enter (and Shift+Enter) inserts a newline — you send with Ctrl/Cmd+Enter.
  • A footer with Cancel + Send text (the latter also fires on Ctrl/Cmd+Enter). Send is disabled until a recipient is set and the message is non-empty.

Because you can always type a number, the tab is never a dead-end — even with zero favorites and no texting history you can address a text.

Where to find it

The tab lives inside the Quick Launch / Control Space floating composer: press Ctrl+Space and click the SMS tab. If the tab isn't already in the strip, pin it first from Settings → Quick Launch tabs. It only appears when SMS is enabled at Settings → SMS, and that same Settings page is where the SMS Favorites card sits.

How it behaves

How to use it

  1. Open — Ctrl+Space, then click the SMS tab (pin it first from Settings → Quick Launch tabs if it isn't in the strip). SMS must be enabled.
  2. Pick who — choose a favorite or a recently-texted contact from the dropdown, or type any phone number.
  3. Type + send — write your message and press Ctrl/Cmd+Enter (or click Send text). The composer closes and a "Sending to <name>…" toast appears in the main Omniscio window with an Undo button and a ~6-second countdown. The text does not go out yet.
  4. Undo (optional) — click Undo on the toast within the window and nothing is sent. When the window elapses, the text sends through your SMS provider and a brief "Sent to <name>" confirmation replaces the toast. If the send fails (phone offline, rate-limited, auth expired) you get a humanized error toast instead — never a silent drop.

If the scheduling step is rejected (SMS turned off, or the number doesn't validate), the tab stays open with an inline hint so you can fix it or copy the message out.

SMS Favorites (Settings → SMS)

Under Settings → SMS there's an SMS Favorites card — pin the people you text most so they're one pick away in the SMS tab. Each favorite is a Name (optional — just a label; only the number is texted) and a phone number (up to 50 favorites — a defensive ceiling, not a real limit). Click Add Favorite for a blank row; it saves when you click away, but only once the number looks valid, so a blank/half-typed row never triggers a save error. Removing a favorite saves immediately. You don't have to build this list by hand — everyone you've already texted shows up in the SMS tab automatically; favorites just pin the ones you use most.

For agents

How it works (for repo-aware readers)

  • Tab + picker: QuickLaunchSmsTab.tsx loads favorites (SETTINGS_GET → quickSmsRecipients), suggestions (SMS_LIST_CONVERSATIONS), and the connected gate (SMS_STATUS) on mount, then renders QuickSmsRecipientPicker.tsx (favorites + suggestions merged/deduped by digits + a type-any-number ad-hoc row) plus the message box. canSend needs a resolved recipient + a non-empty body; a submittingRef blocks the Enter+Click double-fire. On a successful schedule it calls onSuccess() (the composer closes); a failure keeps it open with a hint.
  • Action registry: id: 'quick-sms' in quick-launch-actions.ts (enabledSelector = smsEnabled, icon MessageSquareText), component map entry in quick-launch-action-components.ts. Default unpinned.
  • Send-with-undo relay: the composer can't host the undo toast (it closes on submit), so — like the Message/DM tab — it fires QUICK_SMS_SCHEDULE and the "Sending… Undo" toast + the timed send run in the main window. quick-sms-handlers.ts validates + gates (re-checks smsEnabled, canonicalizes + validates the number via phone-utils), mints a scheduleId, and re-emits QUICK_SMS_SCHEDULE_REQUEST; quick-sms-scheduler.ts (wired in useAppPushListeners) shows the toast (QUICK_SMS_UNDO_SECONDS = 6, fixed), arms a timer, and on fire sends through the existing IPC.SMS_SEND — a provider data.success:false throws a humanized error toast. Undo is a toast button only (no global Ctrl+Z), so it never collides with Quick Email's global undo.
  • Favorites: quickSmsRecipients ([{id,name,phone}], default []) lives in the single-source Zod slice hotkeys-quicklaunch-settings.ts; the settings card is QuickSmsRecipientsCard.tsx, which edits a local draft and commits only the valid subset (selectPersistable in quick-sms-recipients-ops.ts) on blur/remove — so a blank in-progress row never autosaves.
  • Push scope: QUICK_SMS_SCHEDULE_REQUEST is registered desktop-only (no mobile Quick Launch surface) in mobile-push-listener-coverage.test.ts; QUICK_SMS_SCHEDULE is CLI-parity-exempt (feature-scoped-surface) + web-invoke-baselined.
  • Behavior lock: QuickLaunchSmsTab.test.tsx, quick-sms-scheduler.test.ts, quick-sms-recipients-ops.test.ts.

Design decisions worth knowing

  1. DM-style relay, not the email service. The SMS send lives in the main process already (sendOperatorSms), so the tab reuses the lighter Message/DM pattern (a main-window scheduler that fires SMS_SEND) rather than re-implementing Quick Email's main-process pending-map service. Less code, and the fire reuses the already-tested SMS send + its dedup.
  2. Toast-button undo, no global Ctrl+Z. Quick Email owns a global Ctrl+Z while a send is pending; giving SMS its own would collide. The SMS undo is the toast button only — simpler and conflict-free.
  3. Reuse your text history for suggestions. Unlike email (which had no contact store and built its own), SMS already has your conversations — so suggestions come from there for free, and favorites are an optional curated layer on top.
  4. Text-only. Pictures/GIFs/threads stay in the full SMS view; the quick tab is a lean two-keystroke text.

Related

The parent feature is quick-launch-modal.md — the global hotkey, the floating window, and the tab strip this tab lives in. The email sibling is quick-email.md: it is the richer of the two (per-recipient hotkeys, Google-contact suggestions, and a main-process undo service), while SMS is the leaner take. Anything the quick tab deliberately leaves out — pictures, GIFs, conversation threads, the SMS inbox — belongs to the full SMS surfaces, whose provider connection is covered by set-up-sms-integration.md.

Last verified 2026-09-23