What this prevents
- I can pick a theme from the theme switcher on the first launch of the desktop app.
Every desktop launch seeds skills, MCP servers, and workflow templates correctly, but reports zero themes seeded because the PyInstaller spec is missing the themes seed directory in its datas list. The theme switcher renders empty until the user hand-installs a theme. This is a packaging bug, not a code bug. Other seed assets bundle correctly.
Surface
- The sidecar PyInstaller spec(s) define the
datas list passed to PyInstaller. The list includes other seed directories but omits the themes directory.
- The themes seeder logs the runtime error.
Repro
bash desktop/scripts/dev.sh
# wait for sidecar startup
# observe log line:
# ERROR Themes directory not found at .../_MEIxxxx/app/seeds/themes
# INFO Seed themes: 0 processed
Other seeds in the same boot succeed:
INFO Skills: 0 created, 11 updated
INFO Seed MCP servers: 17 created, 5 updated
INFO Workflow templates updated
Expected vs Actual
Expected: themes seed directory is unpacked next to the bundled binary at _MEIxxxx/app/seeds/themes, the seeder iterates it, and themes are inserted into the SQLite DB.
Actual: the directory is absent because the PyInstaller spec never copies it. The seeder logs an error and returns 0 processed.
Suggested fix
Add the themes seed directory to the datas tuple in the sidecar PyInstaller spec, alongside the existing seed directories. Verify by running the sidecar build and grepping the bundled _MEI extract for themes/.
# sidecar PyInstaller spec (datas list)
datas += collect_data_files("app.seeds.themes")
# or explicit:
datas += [(str(repo_root / "orchestrator/app/seeds/themes"), "app/seeds/themes")]
What this prevents
Every desktop launch seeds skills, MCP servers, and workflow templates correctly, but reports zero themes seeded because the PyInstaller spec is missing the themes seed directory in its
dataslist. The theme switcher renders empty until the user hand-installs a theme. This is a packaging bug, not a code bug. Other seed assets bundle correctly.Surface
dataslist passed to PyInstaller. The list includes other seed directories but omits the themes directory.Repro
Other seeds in the same boot succeed:
Expected vs Actual
Expected: themes seed directory is unpacked next to the bundled binary at
_MEIxxxx/app/seeds/themes, the seeder iterates it, and themes are inserted into the SQLite DB.Actual: the directory is absent because the PyInstaller spec never copies it. The seeder logs an error and returns 0 processed.
Suggested fix
Add the themes seed directory to the
datastuple in the sidecar PyInstaller spec, alongside the existing seed directories. Verify by running the sidecar build and grepping the bundled_MEIextract forthemes/.