+ Add row

No rows match the current filters.

## Help — ZDDC Table

### What is this table?

The directory you opened — say `archive/Acme/mdl/` — is the table. `table.yaml` describes the columns; `form.yaml` describes the row-edit form schema; every other `.yaml` file in the directory is one row. Copying the directory anywhere takes the whole table (spec + form + every row) with it.

### Editing cells

Click a cell to select it. Then:

`↑` / `↓` / `←` / `→`
  Move selection. Hold `Shift` to extend a range.
`Tab` / `Shift+Tab`
  Move right / left, wrap to next / previous row.
`Enter` / `F2` / double-click / typing
  Enter edit mode. Typing replaces the cell value; the others keep it.
`Enter` in edit mode
  Commit and move down.
`Tab` in edit mode
  Commit and move right.
`Esc`
  Cancel the edit; restore the prior value.
`Delete` / `Backspace`
  Clear every cell in the current selection.
`Ctrl+D` / `Ctrl+R`
  Fill the top row down / left column right through the selected range.
`Ctrl+C` / `Ctrl+V`
  Copy / paste — interoperates with Excel and Google Sheets via tab-separated values.
`Ctrl+Z`
  Undo the last edit (one history per session).

Edits save automatically when you move to a different row. A small left-edge swatch on the row indicates state: blue = unsaved, amber = the server flagged a validation error, orange = someone else changed this row since you loaded it (you'll get a prompt with Use mine / Reload).

### Sorting

Click a column header to sort by that column. Click again to toggle direction. `Shift`-click another header to add a secondary sort key.

### Filtering

Type in the box under a column header to filter rows whose value contains your text (case-insensitive). Same filter UI for every column.

### Customizing the columns

The default Master Deliverables List has columns for every component of a tracking number (`originator`, `phase`, `project`, `area`, `discipline`, `type`, `sequence`, `suffix`) plus deliverable metadata. To customize, drop your own `table.yaml` (and matching `form.yaml`) into this directory:

    archive/<party>/mdl/
      table.yaml          ← columns + sort/filter defaults
      form.yaml           ← per-row schema (JSON Schema)
      <id>.yaml ...     ← rows

Operator-supplied files override the embedded defaults. Hide a column by omitting it from `columns:`; add a column by appending one (and adding the matching property in `form.yaml`'s `schema.properties`). The same pattern works for any directory — `<dir>/table.html` is automatically a table whenever `<dir>/table.yaml` exists.

### Permissions

Whether a row is editable depends on the cascading `.zddc` permissions for the directory. Rows in `Issued` or `Received` archives are read-only by design (WORM).

### Header buttons

◐ Theme
  Cycle auto / light / dark.
? Help
  This panel. Press `Esc` to close.