Skip to content

EPIC: app consolidation + launcher tiering (45 default apps -> ~12) #2143

Description

@jaylfc

App consolidation and launcher tiering

Jay, 2026-07-26: taOS ships 45 always-on apps plus 9 optional studios and 3
games. macOS ships around 30 and hides most of them. The problem is not the
feature count, it is that many entries are not apps at all: they are settings
panes or file handlers wearing app costumes.

The tiering model

  • Tier 1 - apps (launcher by default): Files, Messages, Mail, Browser,
    Projects, Agents, Teams, Decisions, Store, Library, Images, Settings.
  • Tier 2 - System group (launcher, grouped, not Settings): Cluster,
    Memory, Observatory, Models. These are real management surfaces with their
    own workflows; burying them in Settings would repeat the Decisions mistake.
  • Tier 3 - Settings sections (no launcher entry): Providers (into Models),
    MCP, Secrets, Channels. Genuinely config-shaped.
  • Tier 4 - handlers (no launcher entry, open from Files): Text Editor,
    Image Viewer, Media Player. Preview/QuickLook model.
  • Tier 5 - Store-optional, off by default: studios, games, feeds.

Result: ~12 default icons instead of 45, with nothing deleted.

Merges

  1. Models + Providers -> one app. Providers configures models; one mental
    model, one icon.
  2. Notification Archive -> tab inside Notifications. A launcher icon for
    "the archive of the thing in your menu bar" is a UX smell.
  3. Text Editor / Image Viewer / Media Player -> file handlers. Registry
    gains handler: true; excluded from the launcher, still openable by id
    (agents open them directly - the id must keep working).
  4. Todo -> Projects Lists. The Lists feature (Projects app: Lists section for idea capture with agent triage (statuses, checkboxes, agent tidy) #2140) IS the personal
    checklist. Blocked until Lists S1+S2 land.
  5. Contacts -> shared pane read by Mail and Messages; Channels ->
    Settings
    (it is connector configuration).
  6. Reddit / YouTube / X / GitHub browsers -> one Feeds app, Store-optional,
    off by default. agent-browsers needs an inventory before it is folded -
    do not assume it duplicates Browser.
  7. Chess / Wordle / Crosswords -> one Games entry, Store-optional.
  8. Dashboard ("Activity") vs Observatory overlap on "what is happening now"
    and need an inventory before the split is decided.

Explicitly NOT merged: Decisions. It looks like a notifications duplicate
but it is the human-in-the-loop approval gate. Burying approvals inside a
notification feed is how agent consent requests get missed.

Constraints any slice must respect

  • Existing installs must not break. Users have these apps pinned to docks
    and launchpads. Removing an app id orphans a pin. Every removal ships a
    redirect map (old id -> {app, section}) so a pinned Providers icon opens
    Models/Providers rather than vanishing. Unresolvable pins are removed once,
    with a notification explaining where the thing went.
  • Agents drive the OS by app id. Renaming or removing ids breaks agent
    skills, the agent manual, and the desktop control API. Every slice updates
    the agent-facing docs in the SAME PR, and ids are kept resolvable.
  • Optional apps are a backend contract (OPTIONAL_FRONTEND_APPS in
    tinyagentos/routes/apps.py), not just a frontend flag. Tier 5 moves must
    update both sides plus the store catalog.
  • Deep links keep working. Any documented URL route for a moved surface
    redirects to its new home.

Slices

  • S1 registry tiering foundation - tier/group/handler fields, launcher
    grouping + System group, redirect map + migration for pinned items. Blocks
    most others.
  • S2 Models + Providers merge.
  • S3 Notification Archive -> tab.
  • S4 file handlers out of the launcher.
  • S5 Contacts pane + Channels -> Settings.
  • S6 Feeds consolidation (after agent-browsers inventory).
  • S7 Games hub.
  • S8 Todo -> Projects Lists (blocked on Lists S1+S2).
  • S9 docs + agent-manual sweep across every id that moved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions