mobile · input models

Chat-based vs REPL

Same day, same block model, two ways to author it. Left is today's composer — an input box with a tool row on top. Right is the day as a live transcript with a single grammar prompt. The lower row shows how each writes a multi-line block: headline + content.

1 · chat-based (current)

Input box, tools on top

A tab strip + block-picker + input row docked over the buffer. Capture is a destination you tap into; the tools sit above the field permanently.

2 · repl-based (proposed)

The day is the transcript

Blocks scroll up; one grammar prompt is pinned above the keyboard. Tools became the grammar — chips when empty, a live hint while typing. One for camera / voice.

A tools → grammar

No permanent tool row. The chip strip (t :tag: >> ?w ?t /) shows only when the prompt is empty, and swaps to a "what this line will do" hint as you type.

B reviews print, don't save

?w and ?t print a dismissible card into the stream and write nothing. Reopen and they're gone — ?w is ls, not touch.

C one attach affordance

The opens camera / photo / voice — the only things a typed line can't carry. Everything else is text.

Writing multiple lines — header + content

A block is a headline plus body content. Here's the same block being composed in each model.

1·M two fields, promote to compose

Pressing on the input promotes it into a dedicated composer: a bold header field on top, a content textarea below, and a to expand to a full-screen zen editor.

Two separate inputs, each parsed on its own — mirrors LifeLab Pro's split. Powerful, but it's a mode you enter and leave.

2·M one editor, first line is the headline

The prompt is a single growing textarea. Line 1 is the headline; every line after is content. Add lines with the button or ⇧⏎; plain writes the block.

Type >> to prefix a content line explicitly. The caret turns * to signal "this is a block, not a quick note." Same one-editor rule as desktop Mini — the grammar is bidirectional, so u later recalls it back into these exact lines.

which to ship

REPL as default. Multi-line stays in one editor instead of a promote-a-mode composer — fewer states, and it matches desktop Mini exactly (line 1 = headline, >> = content, bidirectional recall).

Keep the composer available behind the Input model tweak for anyone who prefers discrete header/content fields + zen.

try it live

Open LifeLab Mobile Companion and toggle Tweaks → Input model → repl. Type t buy milk :errands:, then and a second line, then send.