Docs

Metasheet

A popup menu is the same thing as a nested dictionary. The metasheet is that dictionary, opened as a mini-sheet you can walk and change.

Why menus are sheets

Every ribbon section button, the profile menu, field ☰, and the empty-cell picker is a JSON object. Metagrid already maps objects to dictionaries, so a menu is just a nested dictionary: names on the left, commands or more objects on the right.

The metasheet is that JSON, opened as a mini-sheet next to the button that launched it.

What opens as a metasheet

SourceRootCustomizable
Ribbon tab (always visible)That tab as a docked sheet in the left columnYes — Edit on the ribbon
Keytips / AltFloating metasheet for the section (same tree)Yes — stored in this browser
Profile (avatar)Account commandsYes
Field ☰Live Filter / Sort / Type / Format treeNo — depends on the current field
Empty-cell pickerFrom a list / Grid / Table / List / DictionaryNo
Profile → Menus…Full catalog (Ribbon, Profile, Field)Yes

Keys

InputEffect
↑ ↓Move the selection
Enter / Space / →Open a nested menu, or run the row. Same action.
LetterJump to that hotkey and run (same as the old menu letters)
Esc / ←Back one menu; at the root, close. Same action.
EditTreat the menu as a sheet: names on the left, nested dictionaries on the right. Space opens a command or submenu. Change cmd, key, kind inside the command dictionary.

Edits persist as JSON in localStorage (metagrid:metasheet-v2). Reset restores the live tree. Field ☰ always rebuilds from the current field.

Shape

A menu is a dictionary. Each row is an option: the Name is the label you see, the Value is another dictionary.

{
  "Ribbon": {
    "Insert": {
      "Table": { "cmd": "table", "key": "T", "tone": "table" },
      "Dictionary": { "cmd": "dictionary", "key": "D" }
    },
    "Data": {
      "Sort & filter": {
        "Sort A→Z": { "cmd": "sortasc", "key": "S" }
      }
    }
  },
  "Profile": { "Settings…": { "cmd": "prefs", "kind": "profile", "key": "S" } }
}

That JSON is the file/storage shape. In the app it is the same nested dictionaries you already use in the workbook. Full list of cmd names: Commands.