Files
Termix/plugins/homepage

Homepage

A customizable widget canvas (clock, notes, host status, RSS feeds, an embedded terminal, and more) plus the dashboard's service link buttons.

Bundled with Termix and enabled by default. It imports only @termix/plugin-sdk.

What it does

  • The canvas: a pannable, zoomable grid of widgets, opened as its own tab (singleton, ?view=homepage) or from the command palette. Widgets save their own layout and config.
  • Widget types: clock, notes, markdown notes, folders, host status, host grid, bookmarks, weather, iframe embed, RSS feed, ping status, recent activity, Termix uptime, system overview, an embedded SSH terminal, quick connect, calendar, countdown, search bar, text banner, image, custom API, service grid, dashboard links, search shortcuts and link trees. Other plugins (docker, tunnels, file-manager, host-metrics) add their own widget types through app.registerHomepageWidget; the widget type registry itself lives in core (src/ui/plugin-host/homepage-widget-registry.ts) so those widgets keep working with this plugin disabled.
  • Dashboard cards: service_links (clickable service URL buttons) and homepage_preview (a read-only scaled preview of the canvas), both offered in the dashboard's card tray. The dashboard's "Dashboard / Homepage" toggle is a contribution to core's generic dashboard.secondaryView slot.
  • Outbound requests: the favicon, RSS, ping and custom-API widgets fetch through ctx.fetch, which keeps the SSRF guard (private and loopback addresses refused, no redirects, DNS pinned) every other plugin's outbound call gets.
  • homepage.items: a service the AI assistant reads optionally, to list a user's homepage tiles.

Layout

manifest.json         id, capabilities and what this plugin contributes
src/backend/           activate(ctx), routes, the outbound proxy routes
src/frontend/           the canvas, widgets, dialogs and dashboard cards
migrations/             one .sql per dialect, generated from src/backend/tables.ts
locales/en.json         its strings (English only; the rest are translated)
tests/backend/          vitest, node
tests/frontend/         vitest, jsdom

Data

  • p_homepage_homepage_items, p_homepage_homepage_layouts and p_homepage_dashboard_service_links, adopted from core's homepage_items, homepage_layouts and dashboard_service_links.

Core's own uptime, recent-activity and database-health routes are unrelated to the canvas and stay on the main server (src/backend/database/routes/dashboard-routes.ts, mounted at /dashboard).

See packages/plugin-sdk/ARCHITECTURE.md for the contract this follows.