Skip to content

LP-0024: Basecamp Theming — theme engine, format, and community themes - #135

Draft
weboko wants to merge 1 commit into
masterfrom
lp-0024-basecamp-theming
Draft

LP-0024: Basecamp Theming — theme engine, format, and community themes#135
weboko wants to merge 1 commit into
masterfrom
lp-0024-basecamp-theming

Conversation

@weboko

@weboko weboko commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

Draft prize for user-selectable, community-authored themes in Basecamp.

What it covers

Three parts, as one prize:

  1. Make Basecamp themeable — a runtime theme registry in logos-design-system, plus the token cleanup in logos-basecamp that makes the shell actually respond to a theme. Expected to land upstream as community contributions, not as a fork.
  2. An initial set of themes — light, high-contrast (WCAG AA, measured), and one expressive theme, all authored through the same public path a third party would use.
  3. Community distribution — themes packaged as LGX and published to a Logos module catalog, with the decentralised software directory treated as a preferred-but-optional integration so the prize stays self-contained.

Grounding

The Starting Point section is measured against logos-basecamp 76bcd03 and logos-design-system 3312444 (the rev Basecamp's flake.lock pins), so the criteria describe work that actually remains:

  • Theme.qml already has setTheme() / switchTheme() / availableThemes and persists the choice — but availableThemes is a compile-time literal with exactly one entry, "dark", and the design system is linked STATIC into main_ui. Nothing can accept a theme that arrives on disk after the build.
  • The token surface is real and worth themeing: 61 semantic colour tokens, 5 spacing steps + 5 radii, typography; Logos.Controls (47 controls) is already fully token-clean.
  • Basecamp is not: 48 hardcoded hex literals across five production QML files, plus 4 setStyleSheet sites in C++.
  • docs/spec.md:362 already lists "Theme customization" under Future Work.
  • The ui_qml sandbox (app/restricted/) deliberately stops a module directory from answering Logos.* imports. Themes load into the unsandboxed shell process, which is why the prize requires the format to be data, not code — and why "how did you reach that guarantee" is one of the submitter design decisions rather than an assertion.

Adoption criteria

Follows the adoption-first scheme (same shape as LP-0021/0022/0023), with only the dimensions that fit a client-side, off-chain feature:

  • Upstream merge into logos-design-system and logos-basecamp master — the one signal the submitter can't manufacture.
  • 15 third-party themes from ≥10 independent authors, of whom ≥3 have no prior code contribution to any Logos repo — the point of the prize is a contribution surface for people the stack has no on-ramp for, so that is measured directly.
  • 5 third-party ui_qml apps that are theme-clean under an evaluator-chosen theme.
  • Sustained authorship over ≥2 months, ≥5 themes/month.
  • 20 Discord + 20 X testimonials; on-chain testimonials only if LP-0021's testimonial mini app is live when this opens, otherwise waived with the social counts rising to 35 each.
  • No install-count criterion — Basecamp ships no telemetry and this prize doesn't add any. Catalog download counts are supporting colour only.

Notes for reviewers

🤖 Generated with Claude Code

Adds an adoption-first prize covering runtime theming for Basecamp: the
theme engine in logos-design-system, a data-only theme format, three
initial themes, an authoring path for contributors, and LGX/catalog
distribution.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

✅ Validation passed

A reviewer will assess against the prize criteria.
ℹ️ Prize proposal for LP-0024.


Automated check. See solution template and TERMS.

@weboko
weboko marked this pull request as draft September 1, 2026 21:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant