Desktop Material

Offline GitHub Projects workspace

Desktop Material exposes GitHub Projects inside the repository Tools hub for repositories associated with a GitHub account. The workspace is deliberately read-only: it can inspect project metadata, views, items, and each item's Status field, but it does not provide a mutation request or imply that a Project can be edited in Desktop.

Behavior

Offline persistence

The cache is app-owned local storage under desktop-material-github-projects-cache-v1. It stores only normalized ordinary project metadata: repository coordinates, project/view/item titles and public links, item state and Status values, timestamps, and partial-result markers. Tokens, headers, request bodies, account objects, comments, and arbitrary API fields are never persisted.

Each snapshot is revalidated before reading or writing. A snapshot is limited to 256 KiB, the whole cache to 512 KiB, and the cache to 20 repositories. If a snapshot is too large, item display metadata is trimmed and explicitly marked partial; oldest entries are evicted to fit the global budget. Malformed or oversized app-owned cache data is discarded rather than interpreted.

There is no user configuration beyond the existing repository/account choice and the app-wide English, playful Hong Kong Cantonese, or bilingual language mode.

Failure and recovery

Security and privacy

The loader reuses the existing authenticated GitHub API workbench transport, which returns a size-bounded response with allowlisted headers and recursive credential redaction. Queries and REST paths are fixed read operations; no editable query, mutation, host, executable, or shell argument reaches the workspace. Repository coordinates are length/control-character checked and URL-encoded. Display links allow only credential-free HTTP(S) URLs and are opened through Desktop's external-link boundary.

The classic fallback is capability-aware, not a permission bypass: 401, 403, rate-limit, not-found, and service failures are surfaced directly rather than silently switching APIs.

Verification

Focused tests cover:

The feature consumes GitHub APIs but does not expose a Desktop Material HTTP endpoint, so a Postman collection is not applicable.