Skip to content

Slash menu to insert a block #251

Description

@HMarzban

Parent

#249 Deepen the installed PWA. Sibling of #247, #248, and caret find. Not blocked by them.

What to build

Add a slash menu on the pad. On an empty textblock, / opens a command list. A pick inserts that block at the caret.

This is insert, not find, and not a command jump. It must not open History or Settings.

Acceptance criteria

  • Desktop and phone: / on an empty textblock that is not Title opens the menu.
  • / in the middle of a word, in a URL, or after other text stays text. The menu does not open.
  • Typing after / filters the list. Escape closes the menu and leaves the typed text.
  • A pick removes the / query and inserts that block. The caret stays in the new block.
  • The list uses these names only: Heading 1–6, Subtitle, Normal, Bullet List, Ordered List, Task List, Blockquote, Code Block, Picture, Link to a section.
  • Heading 1 starts a new Section. It uses the same Block style path the toolbar already uses.
  • Picture opens the existing Insert Media flow. It does not invent a second upload path.
  • Link to a section opens the existing hyperlink create flow and heading pick. It does not add a second URL builder.
  • Title never appears. / on Title does not open the menu.
  • Editing lock or Read-only: the menu does not open and a pick does not insert.
  • Pad only. The chat composer does not gain /.
  • Light and dark: desktop is a caret-anchored popover. Phone may use the existing sheet host. Do not invent a third frame.

Agent Brief

Category: enhancement
Summary: Type / on an empty pad line to insert a block.

Current behavior:
There is no slash menu. Users insert through Block style, the toolbar, Markdown rules, Append heading, media insert, and the hyperlink dialog.

/ is not a pad input rule. It is a path character in URLs and in Filter segments. The pad does not load Mention. @ lives on the chat composer only.

Tables are in the schema. Word import can create them. The pad has no insert-table control.

Section reorder is TOC-only. There is no in-editor plus handle. The old bubble menu is gone.

Nothing opens History or Settings from a typed / or a palette.

Desired behavior:
Open the menu only on an empty textblock that is not Title. Empty-block-only is the rule, because / is common in URLs. Do not copy the mention “after whitespace” rule.

Reuse what already inserts:

  • Headings, Subtitle, and Normal through Block style only.
  • Lists, Blockquote, and Code Block through the same commands the toolbar uses.
  • Picture through Insert Media.
  • Link to a section through the hyperlink create flow and heading suggestions.

Heading 3–6 stay in the list so /h3 works. Skip Title. Skip inline marks. Skip Indent.

Copy the mention typeahead host for open, filter, and Escape. Do not copy the mention RPC. Do not rebuild a bubble menu.

Gate every insert on the Editing lock first. insertContent can still write when the editor is not editable.

Phone users type / the same way. Do not add a toolbar slash button. Do not add a plus handle.

Key interfaces:

  • Slash menu — caret insert list; empty textblock only
  • Block style — Title, Subtitle, Heading 1–6, Normal
  • Title — first heading; locked; no menu
  • Section — Heading 1 starts a new one
  • Insert Media — Picture row
  • Hyperlink create — Link to a section row
  • Editing lock — no open, no insert
  • Command jump — later, separate; do not build it here

Out of scope

  • Tables authoring and insertTable
  • Plus handle or in-editor Section reorder
  • Bubble menu
  • Command jump (History, Settings, Documents, Filter)
  • Caret find
  • Chat composer slash
  • Inline marks already on the toolbar
  • Indent
  • A second URL pipeline
  • AI

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions