waybetter/packages/runtime/tests
CRT dc449de9c2 shell: the Store view and install screen as framework React components, strings in the framework catalogs
Moved from wayBetter for X so every wayBetter app gets the Store UI; the app passes its native
bridge, theme adapter, translator and (optionally) its own controls and button classes.

- storeModel.ts: wire types of the native store commands (InstallPreview, StoreCatalogView,
  LinkEvent, StoreItem with `apps`), permission badges in the site's words, categories, item state
  (install/installed/update/changed locally/built in), search, free theme ids, versions, previews.
- installController.ts: the install screen's state machine (links incl. those queued before the
  shell listened, dropped files, store items, cancel, confirm), generic over the app's theme format
  (`ThemeAdapter`: parse, ids, facts, save) and its bridge (`StoreBackend`: invoke/listen).
- InstallDialog.tsx (`InstallHost`): the screen (Install enabled after 1 s, Enter never installs,
  tabs hidden via setOverlay) and the window-wide drop target. StoreView.tsx: search, kinds,
  categories, cards, permission badges, install/update/remove; default controls or the app's.
- store.css: both, themed with framework `--wb-*` tokens (documented; dark defaults).
- storeMessages.ts + every framework catalog: 120 `wb.store.*`, `wb.install.*`, `wb.permission.*`
  messages moved from the app catalogs with all existing translations; the six that named X take
  `{site}`; generic words the components need copied with their translations.
- npm package: exports for the new modules and store.css, optional react/react-dom peers; @types
  for the typecheck. Tests: models, controller flows with a fake bridge, every looked-up key exists.
2026-09-29 11:08:04 +07:00
..
column.test.ts runtime column: set the column attributes on scan (config delivered at document start has no <html> yet), no scrollbar in columns, unread only above both the read items and what is on screen, a hidden 1 px webview counts as off screen 2026-09-28 23:42:21 +07:00
commands.test.ts runtime: plugin commands for the command palette (api.commands / scope.commands: register, list, run, owner = the starting plugin, removed on stop, caps, in-page shortcuts); host: start/stop scripts own and drop a plugin's commands; dev_start_script with sourceURL + devError for live reload; devErrors (file:line from a start failure) 2026-09-29 01:35:44 +07:00
devErrors.test.ts runtime: plugin commands for the command palette (api.commands / scope.commands: register, list, run, owner = the starting plugin, removed on stop, caps, in-page shortcuts); host: start/stop scripts own and drop a plugin's commands; dev_start_script with sourceURL + devError for live reload; devErrors (file:line from a start failure) 2026-09-29 01:35:44 +07:00
hubs.test.ts Extract the wayBetter framework core from wayBetter for X 2026-09-28 03:01:33 +07:00
i18n.test.ts shell: the Store view and install screen as framework React components, strings in the framework catalogs 2026-09-29 11:08:04 +07:00
linkRouting.test.ts Extract the wayBetter framework core from wayBetter for X 2026-09-28 03:01:33 +07:00
pageLang.test.ts pageLang: report X's language even when installed before <html> exists or before the IPC bridge 2026-09-29 11:01:53 +07:00
paneNav.test.ts Extract the wayBetter framework core from wayBetter for X 2026-09-28 03:01:33 +07:00
permissions.test.ts Plugin permissions and app installs: @permissions header, per-plugin API views, validated install/remove 2026-09-29 01:08:52 +07:00
pluginApi.test.ts Extract the wayBetter framework core from wayBetter for X 2026-09-28 03:01:33 +07:00
styles.test.ts runtime: styles for created roots are constructed sheets (CSP-proof) 2026-09-29 04:09:14 +07:00
themeTokens.test.ts Extract the wayBetter framework core from wayBetter for X 2026-09-28 03:01:33 +07:00
ui.test.ts runtime: plugin UI kit (api.ui: toast, alert, confirm, prompt, dialog, modal) and theme API (api.theme, --wb-* vars); theme JSON Schema; waybetter 0.2.0 2026-09-28 21:47:09 +07:00