Custom workspace not appearing on home grid despite being in allowed_workspaces (Frappe v16.18.3)

Environment:

  • Frappe: 16.18.3
  • ERPNext: 16.19.1
  • HRMS: 16.7.0
  • Docker (custom app: velocv)

Problem:
A custom workspace “VeloOnboarding” (app=velocv, module=VeloOnboarding) is
returned by get_workspace_sidebar_items and appears in
frappe.boot.allowed_workspaces, but does NOT appear as a card on the home
desk grid.

A second workspace “VeloRH” (same app=velocv, module=Veloc) DOES appear
correctly as an orange icon on the home grid.

What we confirmed in DB:

  • name: VeloOnboarding
  • app: velocv
  • module: VeloOnboarding
  • public: 1
  • is_hidden: 0
  • parent_page: “Home” (tried “” as well, same result)
  • for_user: “” (tried null as well, same result)
  • content: valid JSON with header + shortcut blocks

What we tried:

  1. parent_page = “” → not showing
  2. parent_page = “Home” → not showing
  3. for_user = null → not showing
  4. for_user = “” → not showing
  5. Created Module Def “VeloOnboarding” with a dummy DocType (read permission
    for Architect/Trainee roles) → module appears in allowed_modules :white_check_mark: but
    workspace still not showing on home
  6. bench clear-cache, localStorage.clear(), hard refresh → no change
  7. frappe.boot.allowed_workspaces includes VeloOnboarding :white_check_mark:

The workspace IS accessible via direct URL:
/desk/workspace/VeloOnboarding

“Add to Desktop” button throws: “Nombre duplicado: Barra lateral del espacio
de trabajo VeloOnboarding ya existe”

Question:
What additional configuration is required for a custom workspace to appear
as a home grid card, beyond what’s documented? Is there a known difference
in behavior between the first workspace of an app (which shows) and
subsequent workspaces (which don’t)?

Related issue: Workaround: Workspaces not showing?