Skip to content

plugin.json's nav.screen/nav.icon fields are dead config #21

Closed

Description

@cchacs

Problem

plugin.json's documented nav object includes a screen field (CLAUDE.md example: "nav": { "label": "My Plugin", "screen": "plugin-my_plugin" }), but the frontend never reads it. The nav dropdown builder in static/app.js hardcodes:

screenId = "plugin-" + plugin.id

regardless of whatever nav.screen a plugin declares. Similarly, at least one plugin (multiplayer in slopsmith-stems) sets an undocumented nav.icon field that also has no consumer anywhere in app.js.

Evidence of confusion this causes

Across the plugin ecosystem, authors keep populating nav.screen inconsistently despite it doing nothing:

  • slopsmith-plugin-editor sets "screen": "editor"
  • slopsmith-plugin-tabimport sets "screen": "tab-import", which doesn't even match its own plugin id (tab_import)
  • slopsmith-plugin-rooms omits screen entirely

Since the field is silently ignored, none of this affects runtime behavior today — but it's actively misleading documentation, and plugin authors are cargo-culting a value that does nothing.

Ask

Either:

  1. Wire nav.screen (and drop or formally support nav.icon) into the dropdown builder so plugin authors can actually control their nav entry's screen id, or
  2. Remove nav.screen from the documented manifest schema in CLAUDE.md and note it's derived automatically from plugin.id, so authors stop setting a value with no effect.

Option 2 is probably the safer/simpler fix given no plugin currently depends on nav.screen being anything other than "plugin-" + id.


Migrated from Maestro-Ltd/slopsmith#33.

Activity

  1. added theissue type on Aug 3, 2026
  2. added and removed on Aug 3, 2026
  3. assigned and unassigned on Aug 3, 2026
  4. added 2 commits that reference this issue on Aug 19, 2026
    45ae3ef
    02fc3d5
  5. added a commit that references this issue on Aug 19, 2026
    32126dd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions