Skip to content
DocsZones

Zones

When a project grows a dozen buttons, a zone keeps related ones together: a framed spot in the header or footer, one to three rows tall, that shows its buttons as buttons instead of hiding them in a menu. It fills top to bottom, then the next column, and keeps its size when it’s empty.

Declaring a zone. Add an entry under zones with rows, then set a button’s display to the zone’s key. position orders buttons inside the zone, and on the zone itself orders it among the other items of its bar. Try changing rows or display:

~/.lpm/projects/myapp.ymlvalid
name: myapp
root: ~/Projects/myapp
services:
  web: npm run dev
zones:
  mobile:
    rows: 2                   # 1, 2 or 3 rows of the bar tall
    label: Mobile             # shown in menus; defaults to the key
    display: header           # header (default) or footer
actions:
  ios:
    cmd: make ios
    label: iOS
    display: mobile           # the zone's key puts the button inside
    position: 1               # order inside the zone
  android:
    cmd: make android
    label: Android
    display: mobile
    position: 2
  testflight:
    cmd: make testflight
    label: TestFlight
    display: mobile
    position: 3

Layers. A zone can hold several sets of buttons and slide between them with dots under its frame. List them under layers and point each button at one with layer; a button without one lands in the first layer. Zones work in a repo’s .lpm.yml too, so the whole team gets the same layout:

~/Projects/myapp/.lpm.ymlvalid
zones:
  build:
    rows: 2
    layers:                   # button sets, switched with the dots
      mobile:
        label: Mobile         # shown left of the dots
        position: 1
      release:
        label: Release
        position: 2
actions:
  ios:
    cmd: make ios
    label: iOS
    display: build
    layer: mobile
  android:
    cmd: make android
    label: Android
    display: build
    layer: mobile
  testflight:
    cmd: make testflight
    label: TestFlight
    display: build
    layer: mobile
  tag:
    cmd: ./scripts/tag-release.sh
    label: Tag release
    display: build
    layer: release
    confirm: true

Good to know

collapsed: true folds a zone into a single button that shows the rest on hover. Zones live in your project file, .lpm.yml, or global.yml — not in templates or a duplicate’s own file. Only top-level actions sit in a zone, and a button whose display names a zone that doesn’t exist shows in the header.

The quickest way to build one is to ask your agent: “Put the iOS and Android builds in a two-row zone in the footer.”