Skip to content

pyvelm v0.15.0

Release date: 2026-05-27

Configurable shell navigation with an apps layout (application rail + top-bar subsections), a three-level sidebar alternative, and three-level menu data across bundled and example modules.

See docs/navigation.md.


Highlights

Apps layout (default)

PYVELM_MENU_LAYOUT=apps   # default — omit the variable
┌──────────┬──────────────────────────────────────────────────┐
│ Dashboard│  [Organization ▾]  [Users & access ▾]  …  user  │
│ CRM      ├──────────────────────────────────────────────────┤
│ Settings │  page content                                    │
│ …        │                                                  │
└──────────┴──────────────────────────────────────────────────┘
  • Left rail — root applications only (Dashboard, CRM, Settings, …).
  • Top bar — level-2 subsections for the active app; level-3 pages open in a dropdown (closed by default, click to toggle).
  • Mobile — drawer shows the full nested tree; top bar shows the active app name (no horizontal tab strip).

PYVELM_MENU_LAYOUT=odoo is still accepted as an alias for apps.

PYVELM_MENU_LAYOUT=sidebar

Classic three-level column: section subheading → collapsible group → indented links. Same ir.ui.menu tree as the apps layout.

Three-level menu authoring

Shipped and example menus are reorganised so pages sit at level 3 and subsections at level 2 (Organization, Pipeline, Operations, …).

  • m.group(..., parent=) for nested sections.
  • Dotted menu names (settings.organization) resolve correctly via menu_ref(module, name).
  • Loader upserts parents before children (_menu_sync_order).

pyvelm.menu

New module centralising tree build, layout mode, and template context:

  • build_menu_tree, menu_layout, menu_layout_context
  • find_menu_entry, MENU_LAYOUT_APPS, MENU_LAYOUT_SIDEBAR

Fixes

  • Kanban drag-and-droppvKanbanBoard config moved to window._pvKanbanCfg so Alpine no longer breaks on quoted attributes in x-data.

Upgrade

pip install -U pyvelm==0.15.0

After pulling menu changes, Apps → Sync affected modules (or pyvelm db migrate on a dev database) so ir.ui.menu matches the new three-level structure.


Docs

  • docs/navigation.md — layouts, mobile behaviour, authoring convention, parent references, Python API.