waybetter/packages/shell
CRT d6300aee3a Report a problem: a diagnostic summary with no personal data, shown as it would be shared, with Copy and the issue page
The app menu's "Report a problem…" opens a small dialog with the summary (reportModel.ts, English on purpose: the people who read reports do): the app and framework versions, the system and webview (coarse, from the user agent), the language and how it was chosen, the mode, the theme and icon pack ids, the file names of the plugins that are on, what paused itself (the panel's `reportDetails`), and safe mode. The model has no field for an account, a handle, an address, a tab or a path, and a value that is not made of id characters is left out rather than trimmed into shape, so nothing of that kind can ride along (tested with hostile input). The dialog sends nothing: Copy puts the text on the clipboard, and "Open the issue page" opens `ShellSite.menu.report.issueUrl` bare in the system browser (the summary is never put in a URL). Without an issue page the button is off and the dialog says so.
2026-09-30 23:25:13 +07:00
..
scripts shell: the panel, createPanel(site) (moved from wayBetter for X) 2026-09-30 14:03:40 +07:00
src Report a problem: a diagnostic summary with no personal data, shown as it would be shared, with Copy and the issue page 2026-09-30 23:25:13 +07:00
tests Report a problem: a diagnostic summary with no personal data, shown as it would be shared, with Copy and the issue page 2026-09-30 23:25:13 +07:00
package.json shell: the Store view and install screen as framework React components, strings in the framework catalogs 2026-09-29 11:08:04 +07:00
README.md READMEs for strangers: overview, three layers, a real minimal adapter, security model; the long reference moves to docs/ARCHITECTURE.md 2026-09-30 23:20:58 +07:00
tsconfig.build.json shell: the panel, createPanel(site) (moved from wayBetter for X) 2026-09-30 14:03:40 +07:00

shell (internal)

Sources of waybetter/shell/*: the shell models, the Store screens, the shell frame (src/frame, createShell) and the panel (src/panel, createPanel: the app's own tab). Published as part of the waybetter package; not published on its own. The repository's docs/ARCHITECTURE.md ("The shell frame" and "The panel") describes what an app supplies.

The panel is here rather than in a package of its own because it is drawn inside the frame and shares its state: the frame's profile, deck, theme, sync and developer-mode stores, its native bridge and its language. It imports the theme document model from ../runtime by source path; the package build (packages/waybetter/scripts/build.mjs) points those imports at dist/runtime.

scripts/google-fonts-catalog.mjs regenerates the font browser's offline Google Fonts list (src/panel/fonts/googleFontsCatalog.json).