waybetter 0.1.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (515) hide show
  1. package/README.md +140 -6
  2. package/bin/waybetter.mjs +46 -0
  3. package/build/runtime.mjs +105 -0
  4. package/cli/buildenv.mjs +130 -0
  5. package/cli/dev.mjs +97 -0
  6. package/cli/i18n.mjs +382 -0
  7. package/cli/manifests.mjs +383 -0
  8. package/cli/privacy.mjs +768 -0
  9. package/cli/release.mjs +444 -0
  10. package/cli/remote.mjs +260 -0
  11. package/cli/store.mjs +326 -0
  12. package/cli/strings.mjs +121 -0
  13. package/dist/runtime/column.d.ts +93 -0
  14. package/dist/runtime/column.js +451 -0
  15. package/dist/runtime/column.js.map +1 -0
  16. package/dist/runtime/commandReport.d.ts +19 -0
  17. package/dist/runtime/commandReport.js +47 -0
  18. package/dist/runtime/commandReport.js.map +1 -0
  19. package/dist/runtime/commands.d.ts +72 -0
  20. package/dist/runtime/commands.js +214 -0
  21. package/dist/runtime/commands.js.map +1 -0
  22. package/dist/runtime/devErrors.d.ts +16 -0
  23. package/dist/runtime/devErrors.js +30 -0
  24. package/dist/runtime/devErrors.js.map +1 -0
  25. package/dist/runtime/domHub.d.ts +21 -0
  26. package/dist/runtime/domHub.js +139 -4
  27. package/dist/runtime/domHub.js.map +1 -1
  28. package/dist/runtime/featureModules.d.ts +157 -0
  29. package/dist/runtime/featureModules.js +484 -0
  30. package/dist/runtime/featureModules.js.map +1 -0
  31. package/dist/runtime/featureTable.d.ts +144 -0
  32. package/dist/runtime/featureTable.js +223 -0
  33. package/dist/runtime/featureTable.js.map +1 -0
  34. package/dist/runtime/fonts.d.ts +22 -0
  35. package/dist/runtime/fonts.js +72 -0
  36. package/dist/runtime/fonts.js.map +1 -0
  37. package/dist/runtime/i18n.d.ts +138 -0
  38. package/dist/runtime/i18n.js +614 -0
  39. package/dist/runtime/i18n.js.map +1 -0
  40. package/dist/runtime/i18nCheck.d.ts +30 -0
  41. package/dist/runtime/i18nCheck.js +224 -0
  42. package/dist/runtime/i18nCheck.js.map +1 -0
  43. package/dist/runtime/pageLang.d.ts +8 -0
  44. package/dist/runtime/pageLang.js +64 -0
  45. package/dist/runtime/pageLang.js.map +1 -0
  46. package/dist/runtime/pageStrings.d.ts +35 -0
  47. package/dist/runtime/pageStrings.js +76 -0
  48. package/dist/runtime/pageStrings.js.map +1 -0
  49. package/dist/runtime/panelButton.d.ts +33 -0
  50. package/dist/runtime/panelButton.js +83 -0
  51. package/dist/runtime/panelButton.js.map +1 -0
  52. package/dist/runtime/permissions.d.ts +47 -0
  53. package/dist/runtime/permissions.js +141 -0
  54. package/dist/runtime/permissions.js.map +1 -0
  55. package/dist/runtime/pluginApi.d.ts +51 -2
  56. package/dist/runtime/pluginApi.js +137 -22
  57. package/dist/runtime/pluginApi.js.map +1 -1
  58. package/dist/runtime/pluginI18n.d.ts +29 -0
  59. package/dist/runtime/pluginI18n.js +119 -0
  60. package/dist/runtime/pluginI18n.js.map +1 -0
  61. package/dist/runtime/settingsForm.d.ts +66 -0
  62. package/dist/runtime/settingsForm.js +114 -0
  63. package/dist/runtime/settingsForm.js.map +1 -0
  64. package/dist/runtime/site.d.ts +5 -0
  65. package/dist/runtime/site.js +1 -1
  66. package/dist/runtime/site.js.map +1 -1
  67. package/dist/runtime/siteRuntime.d.ts +144 -0
  68. package/dist/runtime/siteRuntime.js +175 -0
  69. package/dist/runtime/siteRuntime.js.map +1 -0
  70. package/dist/runtime/stringPackHook.d.ts +84 -0
  71. package/dist/runtime/stringPackHook.js +220 -0
  72. package/dist/runtime/stringPackHook.js.map +1 -0
  73. package/dist/runtime/stringPackTranslate.d.ts +59 -0
  74. package/dist/runtime/stringPackTranslate.js +264 -0
  75. package/dist/runtime/stringPackTranslate.js.map +1 -0
  76. package/dist/runtime/stringPacks.d.ts +200 -0
  77. package/dist/runtime/stringPacks.js +474 -0
  78. package/dist/runtime/stringPacks.js.map +1 -0
  79. package/dist/runtime/styles.d.ts +15 -0
  80. package/dist/runtime/styles.js +81 -0
  81. package/dist/runtime/styles.js.map +1 -0
  82. package/dist/runtime/textNet.d.ts +15 -0
  83. package/dist/runtime/textNet.js +131 -0
  84. package/dist/runtime/textNet.js.map +1 -0
  85. package/dist/runtime/themeApi.d.ts +121 -0
  86. package/dist/runtime/themeApi.js +220 -0
  87. package/dist/runtime/themeApi.js.map +1 -0
  88. package/dist/runtime/themeChoice.d.ts +52 -0
  89. package/dist/runtime/themeChoice.js +69 -0
  90. package/dist/runtime/themeChoice.js.map +1 -0
  91. package/dist/runtime/themeComponents.d.ts +435 -0
  92. package/dist/runtime/themeComponents.js +463 -0
  93. package/dist/runtime/themeComponents.js.map +1 -0
  94. package/dist/runtime/themeDecor.d.ts +73 -0
  95. package/dist/runtime/themeDecor.js +131 -0
  96. package/dist/runtime/themeDecor.js.map +1 -0
  97. package/dist/runtime/themeDoctor.d.ts +11 -0
  98. package/dist/runtime/themeDoctor.js +51 -0
  99. package/dist/runtime/themeDoctor.js.map +1 -0
  100. package/dist/runtime/themeIcons.d.ts +130 -0
  101. package/dist/runtime/themeIcons.js +263 -0
  102. package/dist/runtime/themeIcons.js.map +1 -0
  103. package/dist/runtime/themeRuntime.d.ts +100 -0
  104. package/dist/runtime/themeRuntime.js +497 -0
  105. package/dist/runtime/themeRuntime.js.map +1 -0
  106. package/dist/runtime/themeSchema.d.ts +10 -0
  107. package/dist/runtime/themeSchema.js +150 -0
  108. package/dist/runtime/themeSchema.js.map +1 -0
  109. package/dist/runtime/themeSpec.d.ts +259 -0
  110. package/dist/runtime/themeSpec.js +439 -0
  111. package/dist/runtime/themeSpec.js.map +1 -0
  112. package/dist/runtime/themeTokens.d.ts +12 -0
  113. package/dist/runtime/themeTokens.js +14 -6
  114. package/dist/runtime/themeTokens.js.map +1 -1
  115. package/dist/runtime/themeVariants.d.ts +30 -0
  116. package/dist/runtime/themeVariants.js +53 -0
  117. package/dist/runtime/themeVariants.js.map +1 -0
  118. package/dist/runtime/ui.d.ts +192 -0
  119. package/dist/runtime/ui.js +926 -0
  120. package/dist/runtime/ui.js.map +1 -0
  121. package/dist/shell/InstallDialog.d.ts +40 -0
  122. package/dist/shell/InstallDialog.js +170 -0
  123. package/dist/shell/InstallDialog.js.map +1 -0
  124. package/dist/shell/StoreView.d.ts +66 -0
  125. package/dist/shell/StoreView.js +103 -0
  126. package/dist/shell/StoreView.js.map +1 -0
  127. package/dist/shell/addressModel.js.map +1 -1
  128. package/dist/shell/chrome.js.map +1 -1
  129. package/dist/shell/deckModel.d.ts +117 -0
  130. package/dist/shell/deckModel.js +267 -0
  131. package/dist/shell/deckModel.js.map +1 -0
  132. package/dist/shell/frame/AccountSwitcher.d.ts +42 -0
  133. package/dist/shell/frame/AccountSwitcher.js +243 -0
  134. package/dist/shell/frame/AccountSwitcher.js.map +1 -0
  135. package/dist/shell/frame/AddColumnDialog.d.ts +8 -0
  136. package/dist/shell/frame/AddColumnDialog.js +81 -0
  137. package/dist/shell/frame/AddColumnDialog.js.map +1 -0
  138. package/dist/shell/frame/AppMenu.d.ts +21 -0
  139. package/dist/shell/frame/AppMenu.js +642 -0
  140. package/dist/shell/frame/AppMenu.js.map +1 -0
  141. package/dist/shell/frame/CommandPalette.d.ts +7 -0
  142. package/dist/shell/frame/CommandPalette.js +118 -0
  143. package/dist/shell/frame/CommandPalette.js.map +1 -0
  144. package/dist/shell/frame/DeckView.d.ts +13 -0
  145. package/dist/shell/frame/DeckView.js +287 -0
  146. package/dist/shell/frame/DeckView.js.map +1 -0
  147. package/dist/shell/frame/FindBar.d.ts +10 -0
  148. package/dist/shell/frame/FindBar.js +108 -0
  149. package/dist/shell/frame/FindBar.js.map +1 -0
  150. package/dist/shell/frame/MediaPanel.d.ts +8 -0
  151. package/dist/shell/frame/MediaPanel.js +76 -0
  152. package/dist/shell/frame/MediaPanel.js.map +1 -0
  153. package/dist/shell/frame/NewTabPage.d.ts +9 -0
  154. package/dist/shell/frame/NewTabPage.js +71 -0
  155. package/dist/shell/frame/NewTabPage.js.map +1 -0
  156. package/dist/shell/frame/PaneTheme.d.ts +16 -0
  157. package/dist/shell/frame/PaneTheme.js +67 -0
  158. package/dist/shell/frame/PaneTheme.js.map +1 -0
  159. package/dist/shell/frame/ReportDialog.d.ts +3 -0
  160. package/dist/shell/frame/ReportDialog.js +95 -0
  161. package/dist/shell/frame/ReportDialog.js.map +1 -0
  162. package/dist/shell/frame/Shell.d.ts +8 -0
  163. package/dist/shell/frame/Shell.js +1131 -0
  164. package/dist/shell/frame/Shell.js.map +1 -0
  165. package/dist/shell/frame/Titlebar.d.ts +16 -0
  166. package/dist/shell/frame/Titlebar.js +77 -0
  167. package/dist/shell/frame/Titlebar.js.map +1 -0
  168. package/dist/shell/frame/TitlebarExtras.d.ts +4 -0
  169. package/dist/shell/frame/TitlebarExtras.js +202 -0
  170. package/dist/shell/frame/TitlebarExtras.js.map +1 -0
  171. package/dist/shell/frame/WebPanel.d.ts +4 -0
  172. package/dist/shell/frame/WebPanel.js +182 -0
  173. package/dist/shell/frame/WebPanel.js.map +1 -0
  174. package/dist/shell/frame/accountModel.d.ts +49 -0
  175. package/dist/shell/frame/accountModel.js +67 -0
  176. package/dist/shell/frame/accountModel.js.map +1 -0
  177. package/dist/shell/frame/accountSwitcher.css +91 -0
  178. package/dist/shell/frame/appI18n.d.ts +44 -0
  179. package/dist/shell/frame/appI18n.js +64 -0
  180. package/dist/shell/frame/appI18n.js.map +1 -0
  181. package/dist/shell/frame/appMenu.css +121 -0
  182. package/dist/shell/frame/backupModel.d.ts +38 -0
  183. package/dist/shell/frame/backupModel.js +192 -0
  184. package/dist/shell/frame/backupModel.js.map +1 -0
  185. package/dist/shell/frame/boot.d.ts +8 -0
  186. package/dist/shell/frame/boot.js +35 -0
  187. package/dist/shell/frame/boot.js.map +1 -0
  188. package/dist/shell/frame/brand.d.ts +1 -0
  189. package/dist/shell/frame/brand.js +4 -0
  190. package/dist/shell/frame/brand.js.map +1 -0
  191. package/dist/shell/frame/bridge.d.ts +35 -0
  192. package/dist/shell/frame/bridge.js +70 -0
  193. package/dist/shell/frame/bridge.js.map +1 -0
  194. package/dist/shell/frame/chromeTheme.d.ts +29 -0
  195. package/dist/shell/frame/chromeTheme.js +81 -0
  196. package/dist/shell/frame/chromeTheme.js.map +1 -0
  197. package/dist/shell/frame/deck.css +209 -0
  198. package/dist/shell/frame/deckStore.d.ts +89 -0
  199. package/dist/shell/frame/deckStore.js +239 -0
  200. package/dist/shell/frame/deckStore.js.map +1 -0
  201. package/dist/shell/frame/devHost.d.ts +35 -0
  202. package/dist/shell/frame/devHost.js +80 -0
  203. package/dist/shell/frame/devHost.js.map +1 -0
  204. package/dist/shell/frame/devModel.d.ts +7 -0
  205. package/dist/shell/frame/devModel.js +17 -0
  206. package/dist/shell/frame/devModel.js.map +1 -0
  207. package/dist/shell/frame/diag.d.ts +7 -0
  208. package/dist/shell/frame/diag.js +39 -0
  209. package/dist/shell/frame/diag.js.map +1 -0
  210. package/dist/shell/frame/findBar.css +14 -0
  211. package/dist/shell/frame/frameMessages.d.ts +248 -0
  212. package/dist/shell/frame/frameMessages.js +252 -0
  213. package/dist/shell/frame/frameMessages.js.map +1 -0
  214. package/dist/shell/frame/hooks.d.ts +39 -0
  215. package/dist/shell/frame/hooks.js +97 -0
  216. package/dist/shell/frame/hooks.js.map +1 -0
  217. package/dist/shell/frame/i18n.d.ts +27 -0
  218. package/dist/shell/frame/i18n.js +66 -0
  219. package/dist/shell/frame/i18n.js.map +1 -0
  220. package/dist/shell/frame/iconPack.d.ts +11 -0
  221. package/dist/shell/frame/iconPack.js +45 -0
  222. package/dist/shell/frame/iconPack.js.map +1 -0
  223. package/dist/shell/frame/icons.d.ts +71 -0
  224. package/dist/shell/frame/icons.js +75 -0
  225. package/dist/shell/frame/icons.js.map +1 -0
  226. package/dist/shell/frame/index.d.ts +34 -0
  227. package/dist/shell/frame/index.js +43 -0
  228. package/dist/shell/frame/index.js.map +1 -0
  229. package/dist/shell/frame/language.d.ts +58 -0
  230. package/dist/shell/frame/language.js +165 -0
  231. package/dist/shell/frame/language.js.map +1 -0
  232. package/dist/shell/frame/mediaModel.d.ts +34 -0
  233. package/dist/shell/frame/mediaModel.js +53 -0
  234. package/dist/shell/frame/mediaModel.js.map +1 -0
  235. package/dist/shell/frame/menuMessages.en.json +54 -0
  236. package/dist/shell/frame/menuModel.d.ts +277 -0
  237. package/dist/shell/frame/menuModel.js +293 -0
  238. package/dist/shell/frame/menuModel.js.map +1 -0
  239. package/dist/shell/frame/paletteModel.d.ts +139 -0
  240. package/dist/shell/frame/paletteModel.js +112 -0
  241. package/dist/shell/frame/paletteModel.js.map +1 -0
  242. package/dist/shell/frame/paneTheme.css +9 -0
  243. package/dist/shell/frame/pluginCommandStore.d.ts +23 -0
  244. package/dist/shell/frame/pluginCommandStore.js +70 -0
  245. package/dist/shell/frame/pluginCommandStore.js.map +1 -0
  246. package/dist/shell/frame/reportModel.d.ts +52 -0
  247. package/dist/shell/frame/reportModel.js +105 -0
  248. package/dist/shell/frame/reportModel.js.map +1 -0
  249. package/dist/shell/frame/safeStore.d.ts +7 -0
  250. package/dist/shell/frame/safeStore.js +40 -0
  251. package/dist/shell/frame/safeStore.js.map +1 -0
  252. package/dist/shell/frame/searchInput.d.ts +2 -0
  253. package/dist/shell/frame/searchInput.js +11 -0
  254. package/dist/shell/frame/searchInput.js.map +1 -0
  255. package/dist/shell/frame/shell.css +629 -0
  256. package/dist/shell/frame/site.d.ts +206 -0
  257. package/dist/shell/frame/site.js +22 -0
  258. package/dist/shell/frame/site.js.map +1 -0
  259. package/dist/shell/frame/state.d.ts +99 -0
  260. package/dist/shell/frame/state.js +284 -0
  261. package/dist/shell/frame/state.js.map +1 -0
  262. package/dist/shell/frame/syncGate.d.ts +10 -0
  263. package/dist/shell/frame/syncGate.js +36 -0
  264. package/dist/shell/frame/syncGate.js.map +1 -0
  265. package/dist/shell/frame/syncHost.d.ts +35 -0
  266. package/dist/shell/frame/syncHost.js +85 -0
  267. package/dist/shell/frame/syncHost.js.map +1 -0
  268. package/dist/shell/frame/tabStill.d.ts +2 -0
  269. package/dist/shell/frame/tabStill.js +62 -0
  270. package/dist/shell/frame/tabStill.js.map +1 -0
  271. package/dist/shell/frame/themeScopes.d.ts +29 -0
  272. package/dist/shell/frame/themeScopes.js +61 -0
  273. package/dist/shell/frame/themeScopes.js.map +1 -0
  274. package/dist/shell/frame/themeStore.d.ts +99 -0
  275. package/dist/shell/frame/themeStore.js +252 -0
  276. package/dist/shell/frame/themeStore.js.map +1 -0
  277. package/dist/shell/frame/windowBinding.d.ts +2 -0
  278. package/dist/shell/frame/windowBinding.js +7 -0
  279. package/dist/shell/frame/windowBinding.js.map +1 -0
  280. package/dist/shell/frame/workspaceModel.d.ts +82 -0
  281. package/dist/shell/frame/workspaceModel.js +250 -0
  282. package/dist/shell/frame/workspaceModel.js.map +1 -0
  283. package/dist/shell/frame/workspaces.css +84 -0
  284. package/dist/shell/frame/workspaces.d.ts +22 -0
  285. package/dist/shell/frame/workspaces.js +125 -0
  286. package/dist/shell/frame/workspaces.js.map +1 -0
  287. package/dist/shell/frame/zoomStore.d.ts +10 -0
  288. package/dist/shell/frame/zoomStore.js +65 -0
  289. package/dist/shell/frame/zoomStore.js.map +1 -0
  290. package/dist/shell/installController.d.ts +122 -0
  291. package/dist/shell/installController.js +146 -0
  292. package/dist/shell/installController.js.map +1 -0
  293. package/dist/shell/installerMessages.d.ts +30 -0
  294. package/dist/shell/installerMessages.js +36 -0
  295. package/dist/shell/installerMessages.js.map +1 -0
  296. package/dist/shell/linkDrop.js.map +1 -1
  297. package/dist/shell/messages.d.ts +16 -0
  298. package/dist/shell/messages.js +27 -0
  299. package/dist/shell/messages.js.map +1 -0
  300. package/dist/shell/palette.js.map +1 -1
  301. package/dist/shell/paneModel.d.ts +22 -0
  302. package/dist/shell/paneModel.js +24 -1
  303. package/dist/shell/paneModel.js.map +1 -1
  304. package/dist/shell/panel/Appearance.d.ts +8 -0
  305. package/dist/shell/panel/Appearance.js +256 -0
  306. package/dist/shell/panel/Appearance.js.map +1 -0
  307. package/dist/shell/panel/BackupPanel.d.ts +5 -0
  308. package/dist/shell/panel/BackupPanel.js +198 -0
  309. package/dist/shell/panel/BackupPanel.js.map +1 -0
  310. package/dist/shell/panel/DeveloperPanel.d.ts +4 -0
  311. package/dist/shell/panel/DeveloperPanel.js +51 -0
  312. package/dist/shell/panel/DeveloperPanel.js.map +1 -0
  313. package/dist/shell/panel/FeatureToggles.d.ts +13 -0
  314. package/dist/shell/panel/FeatureToggles.js +42 -0
  315. package/dist/shell/panel/FeatureToggles.js.map +1 -0
  316. package/dist/shell/panel/Home.d.ts +3 -0
  317. package/dist/shell/panel/Home.js +23 -0
  318. package/dist/shell/panel/Home.js.map +1 -0
  319. package/dist/shell/panel/IconPackInstall.d.ts +15 -0
  320. package/dist/shell/panel/IconPackInstall.js +41 -0
  321. package/dist/shell/panel/IconPackInstall.js.map +1 -0
  322. package/dist/shell/panel/LanguageSettings.d.ts +1 -0
  323. package/dist/shell/panel/LanguageSettings.js +54 -0
  324. package/dist/shell/panel/LanguageSettings.js.map +1 -0
  325. package/dist/shell/panel/MakePanel.d.ts +3 -0
  326. package/dist/shell/panel/MakePanel.js +237 -0
  327. package/dist/shell/panel/MakePanel.js.map +1 -0
  328. package/dist/shell/panel/MarkdownDoc.d.ts +6 -0
  329. package/dist/shell/panel/MarkdownDoc.js +35 -0
  330. package/dist/shell/panel/MarkdownDoc.js.map +1 -0
  331. package/dist/shell/panel/Modes.d.ts +40 -0
  332. package/dist/shell/panel/Modes.js +270 -0
  333. package/dist/shell/panel/Modes.js.map +1 -0
  334. package/dist/shell/panel/NavIcon.d.ts +4 -0
  335. package/dist/shell/panel/NavIcon.js +6 -0
  336. package/dist/shell/panel/NavIcon.js.map +1 -0
  337. package/dist/shell/panel/Panel.d.ts +7 -0
  338. package/dist/shell/panel/Panel.js +139 -0
  339. package/dist/shell/panel/Panel.js.map +1 -0
  340. package/dist/shell/panel/PluginFeatures.d.ts +24 -0
  341. package/dist/shell/panel/PluginFeatures.js +165 -0
  342. package/dist/shell/panel/PluginFeatures.js.map +1 -0
  343. package/dist/shell/panel/Plugins.d.ts +33 -0
  344. package/dist/shell/panel/Plugins.js +112 -0
  345. package/dist/shell/panel/Plugins.js.map +1 -0
  346. package/dist/shell/panel/PowerSettings.d.ts +4 -0
  347. package/dist/shell/panel/PowerSettings.js +52 -0
  348. package/dist/shell/panel/PowerSettings.js.map +1 -0
  349. package/dist/shell/panel/Settings.d.ts +23 -0
  350. package/dist/shell/panel/Settings.js +116 -0
  351. package/dist/shell/panel/Settings.js.map +1 -0
  352. package/dist/shell/panel/ShareSetup.d.ts +8 -0
  353. package/dist/shell/panel/ShareSetup.js +130 -0
  354. package/dist/shell/panel/ShareSetup.js.map +1 -0
  355. package/dist/shell/panel/StoreSection.d.ts +6 -0
  356. package/dist/shell/panel/StoreSection.js +48 -0
  357. package/dist/shell/panel/StoreSection.js.map +1 -0
  358. package/dist/shell/panel/StringPacks.d.ts +11 -0
  359. package/dist/shell/panel/StringPacks.js +106 -0
  360. package/dist/shell/panel/StringPacks.js.map +1 -0
  361. package/dist/shell/panel/ThemeBuilder.d.ts +5 -0
  362. package/dist/shell/panel/ThemeBuilder.js +205 -0
  363. package/dist/shell/panel/ThemeBuilder.js.map +1 -0
  364. package/dist/shell/panel/backup.css +34 -0
  365. package/dist/shell/panel/builder.css +232 -0
  366. package/dist/shell/panel/builderModel.d.ts +55 -0
  367. package/dist/shell/panel/builderModel.js +95 -0
  368. package/dist/shell/panel/builderModel.js.map +1 -0
  369. package/dist/shell/panel/compare.d.ts +10 -0
  370. package/dist/shell/panel/compare.js +51 -0
  371. package/dist/shell/panel/compare.js.map +1 -0
  372. package/dist/shell/panel/controls.d.ts +135 -0
  373. package/dist/shell/panel/controls.js +213 -0
  374. package/dist/shell/panel/controls.js.map +1 -0
  375. package/dist/shell/panel/featureModel.d.ts +69 -0
  376. package/dist/shell/panel/featureModel.js +79 -0
  377. package/dist/shell/panel/featureModel.js.map +1 -0
  378. package/dist/shell/panel/fonts/FontBrowser.d.ts +10 -0
  379. package/dist/shell/panel/fonts/FontBrowser.js +189 -0
  380. package/dist/shell/panel/fonts/FontBrowser.js.map +1 -0
  381. package/dist/shell/panel/fonts/FontRoles.d.ts +20 -0
  382. package/dist/shell/panel/fonts/FontRoles.js +77 -0
  383. package/dist/shell/panel/fonts/FontRoles.js.map +1 -0
  384. package/dist/shell/panel/fonts/catalog.d.ts +37 -0
  385. package/dist/shell/panel/fonts/catalog.js +68 -0
  386. package/dist/shell/panel/fonts/catalog.js.map +1 -0
  387. package/dist/shell/panel/fonts/googleFontsCatalog.json +1 -0
  388. package/dist/shell/panel/index.d.ts +20 -0
  389. package/dist/shell/panel/index.js +34 -0
  390. package/dist/shell/panel/index.js.map +1 -0
  391. package/dist/shell/panel/languageModel.d.ts +5 -0
  392. package/dist/shell/panel/languageModel.js +7 -0
  393. package/dist/shell/panel/languageModel.js.map +1 -0
  394. package/dist/shell/panel/make.css +72 -0
  395. package/dist/shell/panel/makeModel.d.ts +32 -0
  396. package/dist/shell/panel/makeModel.js +84 -0
  397. package/dist/shell/panel/makeModel.js.map +1 -0
  398. package/dist/shell/panel/markdown.d.ts +46 -0
  399. package/dist/shell/panel/markdown.js +100 -0
  400. package/dist/shell/panel/markdown.js.map +1 -0
  401. package/dist/shell/panel/nav.d.ts +12 -0
  402. package/dist/shell/panel/nav.js +50 -0
  403. package/dist/shell/panel/nav.js.map +1 -0
  404. package/dist/shell/panel/panel.css +401 -0
  405. package/dist/shell/panel/panelMessages.d.ts +763 -0
  406. package/dist/shell/panel/panelMessages.js +767 -0
  407. package/dist/shell/panel/panelMessages.js.map +1 -0
  408. package/dist/shell/panel/plugins.css +59 -0
  409. package/dist/shell/panel/setupModel.d.ts +87 -0
  410. package/dist/shell/panel/setupModel.js +152 -0
  411. package/dist/shell/panel/setupModel.js.map +1 -0
  412. package/dist/shell/panel/site.d.ts +259 -0
  413. package/dist/shell/panel/site.js +25 -0
  414. package/dist/shell/panel/site.js.map +1 -0
  415. package/dist/shell/panel/strings.css +7 -0
  416. package/dist/shell/panel/themes.d.ts +10 -0
  417. package/dist/shell/panel/themes.js +8 -0
  418. package/dist/shell/panel/themes.js.map +1 -0
  419. package/dist/shell/profileModel.d.ts +3 -2
  420. package/dist/shell/profileModel.js +7 -5
  421. package/dist/shell/profileModel.js.map +1 -1
  422. package/dist/shell/store.css +230 -0
  423. package/dist/shell/storeMessages.d.ts +169 -0
  424. package/dist/shell/storeMessages.js +172 -0
  425. package/dist/shell/storeMessages.js.map +1 -0
  426. package/dist/shell/storeModel.d.ts +181 -0
  427. package/dist/shell/storeModel.js +133 -0
  428. package/dist/shell/storeModel.js.map +1 -0
  429. package/dist/shell/stringPacksModel.d.ts +44 -0
  430. package/dist/shell/stringPacksModel.js +94 -0
  431. package/dist/shell/stringPacksModel.js.map +1 -0
  432. package/dist/shell/updateModel.d.ts +2 -1
  433. package/dist/shell/updateModel.js +5 -4
  434. package/dist/shell/updateModel.js.map +1 -1
  435. package/dist/shell/windowControls.d.ts +4 -0
  436. package/dist/shell/windowControls.js +5 -0
  437. package/dist/shell/windowControls.js.map +1 -1
  438. package/i18n-config.schema.json +29 -0
  439. package/i18n-meta.schema.json +26 -0
  440. package/i18n.schema.json +42 -0
  441. package/icons.schema.json +646 -0
  442. package/languages.schema.json +23 -0
  443. package/locales/ar-x-fm.json +11 -0
  444. package/locales/ar.json +1281 -0
  445. package/locales/bg.json +1280 -0
  446. package/locales/bn.json +1280 -0
  447. package/locales/ca.json +1280 -0
  448. package/locales/cs.json +1280 -0
  449. package/locales/da.json +1280 -0
  450. package/locales/de.json +1280 -0
  451. package/locales/el.json +1280 -0
  452. package/locales/en-GB.json +27 -0
  453. package/locales/en.json +1280 -0
  454. package/locales/en.meta.json +51 -0
  455. package/locales/es.json +1280 -0
  456. package/locales/eu.json +1280 -0
  457. package/locales/fa.json +1281 -0
  458. package/locales/fi.json +1280 -0
  459. package/locales/fil.json +1280 -0
  460. package/locales/fr.json +1280 -0
  461. package/locales/ga.json +1280 -0
  462. package/locales/gl.json +1280 -0
  463. package/locales/gu.json +1280 -0
  464. package/locales/ha.json +1280 -0
  465. package/locales/he.json +1281 -0
  466. package/locales/hi.json +1280 -0
  467. package/locales/hr.json +1280 -0
  468. package/locales/hu.json +1279 -0
  469. package/locales/id.json +1280 -0
  470. package/locales/ig.json +1280 -0
  471. package/locales/it.json +1280 -0
  472. package/locales/ja.json +1280 -0
  473. package/locales/kn.json +1280 -0
  474. package/locales/ko.json +1280 -0
  475. package/locales/mr.json +1280 -0
  476. package/locales/ms.json +1280 -0
  477. package/locales/nb.json +1280 -0
  478. package/locales/nl.json +1280 -0
  479. package/locales/pl.json +1280 -0
  480. package/locales/pt.json +1280 -0
  481. package/locales/ro.json +1280 -0
  482. package/locales/ru.json +1280 -0
  483. package/locales/sk.json +1280 -0
  484. package/locales/sr.json +1280 -0
  485. package/locales/sv.json +1280 -0
  486. package/locales/ta.json +1280 -0
  487. package/locales/th.json +1280 -0
  488. package/locales/tr.json +1280 -0
  489. package/locales/uk.json +1280 -0
  490. package/locales/ur.json +1281 -0
  491. package/locales/vi.json +1280 -0
  492. package/locales/yo.json +1280 -0
  493. package/locales/zh-Hans.json +1280 -0
  494. package/locales/zh-Hant.json +1280 -0
  495. package/package.json +139 -5
  496. package/store-catalog.schema.json +65 -0
  497. package/theme.schema.json +4659 -0
  498. package/windows/installer.nsi +926 -0
  499. package/windows/languages/Basque.nsh +28 -0
  500. package/windows/languages/Catalan.nsh +28 -0
  501. package/windows/languages/Croatian.nsh +28 -0
  502. package/windows/languages/Czech.nsh +28 -0
  503. package/windows/languages/Danish.nsh +28 -0
  504. package/windows/languages/Finnish.nsh +28 -0
  505. package/windows/languages/Galician.nsh +28 -0
  506. package/windows/languages/Greek.nsh +28 -0
  507. package/windows/languages/Hungarian.nsh +28 -0
  508. package/windows/languages/Indonesian.nsh +28 -0
  509. package/windows/languages/Irish.nsh +28 -0
  510. package/windows/languages/Malay.nsh +28 -0
  511. package/windows/languages/Polish.nsh +28 -0
  512. package/windows/languages/Romanian.nsh +28 -0
  513. package/windows/languages/Serbian.nsh +28 -0
  514. package/windows/languages/Slovak.nsh +28 -0
  515. package/windows/languages/Thai.nsh +28 -0
@@ -0,0 +1,763 @@
1
+ export declare const PANEL_MESSAGES: {
2
+ readonly 'wb.appearance.accent': "Accent";
3
+ readonly 'wb.appearance.accentColor': "Accent color";
4
+ readonly 'wb.appearance.accentHint': "Links, the active tab, focus rings and filled buttons.";
5
+ readonly 'wb.appearance.icons': "Icons";
6
+ readonly 'wb.appearance.iconsHint': "The icons of the site and of this window. A theme may suggest a pack; your pick wins.";
7
+ readonly 'wb.appearance.icons.theme': "Follow the theme";
8
+ readonly 'wb.appearance.icons.import': "Import icon pack…";
9
+ readonly 'wb.appearance.icons.review': "Install the icon pack “{name}”?";
10
+ readonly 'wb.appearance.icons.author': "Author";
11
+ readonly 'wb.appearance.icons.license': "Licence";
12
+ readonly 'wb.appearance.icons.source': "Source";
13
+ readonly 'wb.appearance.icons.credits': "Credits";
14
+ readonly 'wb.appearance.icons.size': "Contents";
15
+ readonly 'wb.appearance.icons.sizeValue': "{count} icons, {size}";
16
+ readonly 'wb.appearance.icons.dataOnly': "Data only: drawings, no code. The icons of the site and of this window change when you pick the pack.";
17
+ readonly 'wb.appearance.icons.replaces': "An icon pack called “{name}” is already installed; this replaces it.";
18
+ readonly 'wb.appearance.icons.install': "Install";
19
+ readonly 'wb.appearance.icons.installed': "Installed the icon pack “{name}”.";
20
+ readonly 'wb.appearance.icons.remove': "Remove {name}";
21
+ readonly 'wb.appearance.icons.removed': "Removed the icon pack “{name}”.";
22
+ readonly 'wb.appearance.icons.imported': "Imported icon packs";
23
+ readonly 'wb.appearance.doctorHints': "{count, plural, one {The theme doctor has a hint:} other {The theme doctor has # hints, the first:}} {hint}";
24
+ readonly 'wb.appearance.icons.site': "The site's own icons";
25
+ readonly 'wb.appearance.accountTheme': "Account theme · {name}";
26
+ readonly 'wb.appearance.accountsHint': "Every pane of an account shows its theme unless the pane has its own.";
27
+ readonly 'wb.appearance.appTheme': "App theme · {name}";
28
+ readonly 'wb.appearance.askFonts': "Download fonts for this theme";
29
+ readonly 'wb.appearance.askFontsText': "Download {count, plural, one {it} other {them}} now? wayBetter fetches the font files once from fonts.googleapis.com and fonts.gstatic.com into its app data (open-source licenses). Until then the theme falls back to its other fonts.";
30
+ readonly 'wb.appearance.askFontsTitle': "“{name}” uses {fonts} from Google Fonts";
31
+ readonly 'wb.appearance.avatars': "Avatars";
32
+ readonly 'wb.appearance.avatars.circle': "Circle";
33
+ readonly 'wb.appearance.avatars.rounded': "Rounded";
34
+ readonly 'wb.appearance.background': "Background";
35
+ readonly 'wb.appearance.backgroundHint': "The canvas around {site}'s columns. Text on it stays readable.";
36
+ readonly 'wb.appearance.basedOn': "Based on {name}.";
37
+ readonly 'wb.appearance.bg.clouds': "Clouds";
38
+ readonly 'wb.appearance.bg.diagonal': "Diagonal lines";
39
+ readonly 'wb.appearance.bg.dots': "Dots";
40
+ readonly 'wb.appearance.bg.glow': "Glow";
41
+ readonly 'wb.appearance.bg.grid': "Grid";
42
+ readonly 'wb.appearance.bg.image': "Photo…";
43
+ readonly 'wb.appearance.bg.imageHint': "PNG, JPEG, WebP, GIF or AVIF up to 800 KB";
44
+ readonly 'wb.appearance.bg.none': "Plain";
45
+ readonly 'wb.appearance.bg.paper': "Paper grain";
46
+ readonly 'wb.appearance.bg.scanlines': "Scanlines";
47
+ readonly 'wb.appearance.bold': "Bold weight";
48
+ readonly 'wb.appearance.bold.bold': "Bold";
49
+ readonly 'wb.appearance.bold.heavy': "Heavy";
50
+ readonly 'wb.appearance.bold.medium': "Medium";
51
+ readonly 'wb.appearance.boldHint': "Names, headings and buttons.";
52
+ readonly 'wb.appearance.chrome': "Theme wayBetter’s window";
53
+ readonly 'wb.appearance.chromeHint': "Tabs, address bar, titlebar and this panel take the theme’s colors and its window font. Off keeps wayBetter’s own Night Ink look.";
54
+ readonly 'wb.appearance.corners': "Corners";
55
+ readonly 'wb.appearance.corners.crisp': "Crisp";
56
+ readonly 'wb.appearance.corners.round': "Round";
57
+ readonly 'wb.appearance.corners.soft': "Soft";
58
+ readonly 'wb.appearance.corners.square': "Square";
59
+ readonly 'wb.appearance.cornersHint': "Cards, media, menus and buttons.";
60
+ readonly 'wb.appearance.crt': "CRT overlay";
61
+ readonly 'wb.appearance.crtHint': "Scanlines and a vignette over the whole page.";
62
+ readonly 'wb.appearance.cssApplied': "CSS applied to {name}.";
63
+ readonly 'wb.appearance.cssLines': "{count, plural, one {# line} other {# lines}} · Ctrl+S applies";
64
+ readonly 'wb.appearance.customName': "{name} (custom)";
65
+ readonly 'wb.appearance.customize': "Customize {name}";
66
+ readonly 'wb.appearance.customizeHint': "Changes apply to {site} immediately and stay on top of this theme until you reset or switch themes.";
67
+ readonly 'wb.appearance.density': "Density";
68
+ readonly 'wb.appearance.density.compact': "Compact";
69
+ readonly 'wb.appearance.density.default': "Default";
70
+ readonly 'wb.appearance.density.roomy': "Roomy";
71
+ readonly 'wb.appearance.densityHint': "Space around each post.";
72
+ readonly 'wb.appearance.dim': "Photo dimming";
73
+ readonly 'wb.appearance.dimHint': "A layer of the page color over the photo keeps the navigation legible.";
74
+ readonly 'wb.appearance.downloaded': "Downloaded fonts";
75
+ readonly 'wb.appearance.downloadedEmpty': "Google Fonts you pick in a font role are downloaded once and listed here.";
76
+ readonly 'wb.appearance.downloadedFont': "Downloaded {family}.";
77
+ readonly 'wb.appearance.downloadedHint': "{count, plural, one {# Google Fonts family} other {# Google Fonts families}} · {size} in wayBetter’s app data. They work offline.";
78
+ readonly 'wb.appearance.families': "Families";
79
+ readonly 'wb.appearance.familiesHint': "Google Fonts are open source (SIL Open Font License 1.1 or Apache License 2.0). Removing one makes themes that use it fall back to their other fonts.";
80
+ readonly 'wb.appearance.followAccount': "Follow account / app";
81
+ readonly 'wb.appearance.followApp': "Follow the app theme";
82
+ readonly 'wb.appearance.followsApp': "Follows the app theme · {name}";
83
+ readonly 'wb.appearance.fonts': "Fonts";
84
+ readonly 'wb.appearance.fontsHint': "Which font goes where. Every role inherits the interface font until you give it one: Google Fonts (downloaded once), Geist, or any installed font.";
85
+ readonly 'wb.appearance.hover': "Hover";
86
+ readonly 'wb.appearance.hover.lift': "Lift";
87
+ readonly 'wb.appearance.hover.none': "None";
88
+ readonly 'wb.appearance.hover.tint': "Tint";
89
+ readonly 'wb.appearance.hoverEffect': "Hover effect";
90
+ readonly 'wb.appearance.hoverHint': "What a post does under the pointer.";
91
+ readonly 'wb.appearance.imageTooLarge': "That image is too large. Keep it under about 800 KB (a 1920px JPEG usually is).";
92
+ readonly 'wb.appearance.imageType': "Use a PNG, JPEG, WebP, GIF or AVIF image.";
93
+ readonly 'wb.appearance.importJson': "Import JSON";
94
+ readonly 'wb.appearance.importSafe': "Unknown fields are ignored; unsafe values are dropped.";
95
+ readonly 'wb.appearance.importText': "A .json theme document with colors, fonts, shape, layout, background and effects. Drop it here, or export any theme to see the format. Google fonts it names are downloaded only if you say so.";
96
+ readonly 'wb.appearance.importTitle': "Import a theme file";
97
+ readonly 'wb.appearance.imported': "Imported “{name}”.";
98
+ readonly 'wb.appearance.mode.auto': "Follows {site}";
99
+ readonly 'wb.appearance.mode.dark': "Dark";
100
+ readonly 'wb.appearance.mode.light': "Light";
101
+ readonly 'wb.appearance.motion': "Motion";
102
+ readonly 'wb.appearance.motion.lively': "Lively";
103
+ readonly 'wb.appearance.motion.subtle': "Subtle";
104
+ readonly 'wb.appearance.motionHint': "Hover and state transitions. Reduced-motion settings are respected.";
105
+ readonly 'wb.appearance.noneYet': "None yet";
106
+ readonly 'wb.appearance.ownTheme': "Own theme";
107
+ readonly 'wb.appearance.pane': "pane";
108
+ readonly 'wb.appearance.panes': "Panes";
109
+ readonly 'wb.appearance.panesEmpty': "Open {site} panes appear here.";
110
+ readonly 'wb.appearance.panesHint': "A pane’s own theme wins over its account’s. Closed panes forget theirs.";
111
+ readonly 'wb.appearance.pasteJson': "…or paste theme JSON here";
112
+ readonly 'wb.appearance.percent': "{value, number, percent}";
113
+ readonly 'wb.appearance.px': "{value} px";
114
+ readonly 'wb.appearance.removeNamed': "Remove {name}";
115
+ readonly 'wb.appearance.removeTheme': "Remove theme";
116
+ readonly 'wb.appearance.removedFont': "Removed {family}.";
117
+ readonly 'wb.appearance.removedTheme': "Removed “{name}”.";
118
+ readonly 'wb.appearance.saveAsTheme': "Save as theme";
119
+ readonly 'wb.appearance.saved': "Saved “{name}”. You can export or rename it by editing the JSON.";
120
+ readonly 'wb.appearance.savedName': "{name} custom";
121
+ readonly 'wb.appearance.scopes': "Where themes apply";
122
+ readonly 'wb.appearance.scopesHint': "Give an account or a single pane its own theme. A pane’s ⋯ menu (next to Split) does the same.";
123
+ readonly 'wb.appearance.sidebarWidth': "Sidebar width";
124
+ readonly 'wb.appearance.textSize': "Text size";
125
+ readonly 'wb.appearance.textSizeHint': "Scales {site}'s own text sizes.";
126
+ readonly 'wb.appearance.theme': "Theme";
127
+ readonly 'wb.appearance.themeCss': "Theme CSS";
128
+ readonly 'wb.appearance.themeCssHint': "CSS that belongs to this theme: it is exported and saved with it. For CSS that applies to every theme, use Custom CSS below.";
129
+ readonly 'wb.appearance.themeCssLabel': "CSS for this theme";
130
+ readonly 'wb.appearance.themeFor': "Theme for {name}";
131
+ readonly 'wb.appearance.themeHint': "A theme restyles {site} itself and this window: type, corners, density, layout, canvas and motion, with readable contrast guaranteed.";
132
+ readonly 'wb.appearance.themeJson': "Theme JSON";
133
+ readonly 'wb.appearance.timeline': "Timeline";
134
+ readonly 'wb.appearance.timeline.cards': "Cards";
135
+ readonly 'wb.appearance.timeline.flat': "Flat";
136
+ readonly 'wb.appearance.timeline.framed': "Framed";
137
+ readonly 'wb.appearance.timelineHint': "Flat rows, a framed column, or posts as separate cards.";
138
+ readonly 'wb.appearance.timelineStyle': "Timeline style";
139
+ readonly 'wb.appearance.timelineWidth': "Timeline width";
140
+ readonly 'wb.appearance.you': "You";
141
+ readonly 'wb.appearance.yours': "Yours";
142
+ readonly 'wb.backup.anotherComputer': "another computer";
143
+ readonly 'wb.backup.applied': "Applied {count, plural, one {# section} other {# sections}}.";
144
+ readonly 'wb.backup.applySection': "Apply {section}";
145
+ readonly 'wb.backup.applySelected': "Apply selected";
146
+ readonly 'wb.backup.applying': "Applying…";
147
+ readonly 'wb.backup.chosen': "{count} of {total} sections · the rest stays as it is";
148
+ readonly 'wb.backup.comparing': "Comparing with this computer…";
149
+ readonly 'wb.backup.encryptedSnapshot': "Encrypted snapshot";
150
+ readonly 'wb.backup.export': "Export settings";
151
+ readonly 'wb.backup.exportButton': "Export settings…";
152
+ readonly 'wb.backup.exportHint': "Themes (incl. account and pane themes), plugins you enabled and your own plugin files, custom CSS, {site} tweaks, links, keyword alerts, decks, workspaces and your account list. Never cookies, {site} sessions, tokens or keys.";
153
+ readonly 'wb.backup.exportedAt': "Exported {when}";
154
+ readonly 'wb.backup.exporting': "Exporting…";
155
+ readonly 'wb.backup.hint': "Everything you set up, in one .waybetter file: move it to another computer or keep it safe.";
156
+ readonly 'wb.backup.import': "Import settings";
157
+ readonly 'wb.backup.importButton': "Import…";
158
+ readonly 'wb.backup.importFile': "Import {file}";
159
+ readonly 'wb.backup.importHint': "Opens a .waybetter file and shows what would change. Pick the sections to apply; nothing changes before you confirm.";
160
+ readonly 'wb.backup.includeDrafts': "Include drafts";
161
+ readonly 'wb.backup.noKnown': "This file has no settings wayBetter knows.";
162
+ readonly 'wb.backup.saved': "Saved {file}.";
163
+ readonly 'wb.backup.status.changes': "Changes";
164
+ readonly 'wb.backup.status.new': "New";
165
+ readonly 'wb.backup.status.same': "Same";
166
+ readonly 'wb.backup.syncedAgo': "Synced {when} · encrypted snapshot";
167
+ readonly 'wb.backup.title': "Backup";
168
+ readonly 'wb.backup.unknownDate': "unknown date";
169
+ readonly 'wb.builder.adjusted': "Adjusted {count, plural, one {# color pair} other {# color pairs}} to pass.";
170
+ readonly 'wb.builder.allPass': "All pass";
171
+ readonly 'wb.builder.angle': "Angle";
172
+ readonly 'wb.builder.author': "Author";
173
+ readonly 'wb.builder.auto': "Auto";
174
+ readonly 'wb.builder.autoFix': "Auto-fix {count}";
175
+ readonly 'wb.builder.backgroundColor': "Background color";
176
+ readonly 'wb.builder.backgroundEffects': "Background and effects";
177
+ readonly 'wb.builder.buttonShape': "Button shape";
178
+ readonly 'wb.builder.buttons': "Buttons";
179
+ readonly 'wb.builder.cardCorners': "Card corners";
180
+ readonly 'wb.builder.colors': "Colors";
181
+ readonly 'wb.builder.colorsHint': "Pick three; every other role is derived from them with the same proportions as the built-in themes. Click a role to set it by hand.";
182
+ readonly 'wb.builder.contrast': "Contrast";
183
+ readonly 'wb.builder.contrast.accent-bg': "Links and accent";
184
+ readonly 'wb.builder.contrast.accent-elevated': "Links on hover";
185
+ readonly 'wb.builder.contrast.button-label': "Post button label";
186
+ readonly 'wb.builder.contrast.button-page': "Post button on the page";
187
+ readonly 'wb.builder.contrast.muted-bg': "Secondary text";
188
+ readonly 'wb.builder.contrast.muted-surface': "Secondary text on cards";
189
+ readonly 'wb.builder.contrast.text-bg': "Text on background";
190
+ readonly 'wb.builder.contrast.text-page': "Text on the page canvas";
191
+ readonly 'wb.builder.contrast.text-surface': "Text on cards and menus";
192
+ readonly 'wb.builder.contrastHint': "What {site} draws with this palette. wayBetter enforces these levels on {site} either way; Auto-fix makes the draft itself pass.";
193
+ readonly 'wb.builder.copyFailed': "Could not copy to the clipboard.";
194
+ readonly 'wb.builder.cover': "Cover";
195
+ readonly 'wb.builder.cssHint': "Free-form CSS that travels with this theme (same trust as your own Custom CSS).";
196
+ readonly 'wb.builder.cssLines': "{count, plural, one {# line} other {# lines}} · applied live";
197
+ readonly 'wb.builder.deep': "Deep";
198
+ readonly 'wb.builder.derived': "Derived";
199
+ readonly 'wb.builder.description': "Description";
200
+ readonly 'wb.builder.dimming': "Dimming";
201
+ readonly 'wb.builder.fit': "Fit";
202
+ readonly 'wb.builder.from': "From";
203
+ readonly 'wb.builder.gradient': "Gradient";
204
+ readonly 'wb.builder.gradientAngle': "Gradient angle";
205
+ readonly 'wb.builder.gradientEnd': "Gradient end";
206
+ readonly 'wb.builder.gradientStart': "Gradient start";
207
+ readonly 'wb.builder.ink': "Ink";
208
+ readonly 'wb.builder.leading': "Post line height";
209
+ readonly 'wb.builder.leadingSite': "{site}'s";
210
+ readonly 'wb.builder.liveNote': "Live on your {site} panes and this window. Nothing is saved until you save.";
211
+ readonly 'wb.builder.liveOff': "Live preview on {site} is off; this miniature still follows every change.";
212
+ readonly 'wb.builder.liveOnSite': "Live on {site}";
213
+ readonly 'wb.builder.ms': "{value} ms";
214
+ readonly 'wb.builder.name': "Theme name";
215
+ readonly 'wb.builder.needs': "needs {ratio}:1";
216
+ readonly 'wb.builder.paletteRoles': "Palette roles";
217
+ readonly 'wb.builder.pattern': "Pattern";
218
+ readonly 'wb.builder.patternInk': "Pattern ink";
219
+ readonly 'wb.builder.patternScale': "Pattern scale";
220
+ readonly 'wb.builder.patternStrength': "Pattern strength";
221
+ readonly 'wb.builder.photo': "Photo";
222
+ readonly 'wb.builder.photoFit': "Photo fit";
223
+ readonly 'wb.builder.pill': "Pill";
224
+ readonly 'wb.builder.preview': "Preview";
225
+ readonly 'wb.builder.previewLive': "Preview live on {site}";
226
+ readonly 'wb.builder.redo': "Redo (Ctrl+Shift+Z)";
227
+ readonly 'wb.builder.regularWeight': "Regular weight";
228
+ readonly 'wb.builder.replace': "Replace…";
229
+ readonly 'wb.builder.role.border': "Border";
230
+ readonly 'wb.builder.role.elevated': "Elevated";
231
+ readonly 'wb.builder.role.inverse': "Button";
232
+ readonly 'wb.builder.role.muted': "Secondary text";
233
+ readonly 'wb.builder.role.onInverse': "Button label";
234
+ readonly 'wb.builder.role.page': "Page canvas";
235
+ readonly 'wb.builder.role.surface': "Surface";
236
+ readonly 'wb.builder.saved': "Saved “{name}” and switched to it.";
237
+ readonly 'wb.builder.savedMissing': "Download {fonts} in its font roles to see {count, plural, one {it} other {them}} on {site}.";
238
+ readonly 'wb.builder.scale': "Scale";
239
+ readonly 'wb.builder.setByHand': "Set by hand";
240
+ readonly 'wb.builder.shadow': "Shadow";
241
+ readonly 'wb.builder.shape': "Shape and layout";
242
+ readonly 'wb.builder.share': "Share";
243
+ readonly 'wb.builder.shared': "Theme JSON copied. Anyone can paste it into Appearance → Import.";
244
+ readonly 'wb.builder.startFrom': "Start from";
245
+ readonly 'wb.builder.startFromPlaceholder': "Start from…";
246
+ readonly 'wb.builder.startedFrom': "Started from {name}. Undo brings your draft back.";
247
+ readonly 'wb.builder.strength': "Strength";
248
+ readonly 'wb.builder.text': "Text";
249
+ readonly 'wb.builder.textColor': "Text color";
250
+ readonly 'wb.builder.tile': "Tile";
251
+ readonly 'wb.builder.to': "To";
252
+ readonly 'wb.builder.tooLow': "Too low";
253
+ readonly 'wb.builder.tracking': "Letter spacing";
254
+ readonly 'wb.builder.type': "Type";
255
+ readonly 'wb.builder.typeHint': "Which font goes where. Every role inherits the interface font until you give it one.";
256
+ readonly 'wb.builder.undo': "Undo (Ctrl+Z)";
257
+ readonly 'wb.builder.untitled': "Untitled theme";
258
+ readonly 'wb.common.add': "Add";
259
+ readonly 'wb.common.apply': "Apply";
260
+ readonly 'wb.common.chooseFile': "Choose file…";
261
+ readonly 'wb.common.clear': "Clear";
262
+ readonly 'wb.common.clipboardUnavailable': "Clipboard unavailable.";
263
+ readonly 'wb.common.copied': "Copied.";
264
+ readonly 'wb.common.copy': "Copy";
265
+ readonly 'wb.common.create': "Create";
266
+ readonly 'wb.common.discard': "Discard";
267
+ readonly 'wb.common.export': "Export";
268
+ readonly 'wb.common.import': "Import";
269
+ readonly 'wb.common.notNow': "Not now";
270
+ readonly 'wb.common.removedNamed': "{name} removed.";
271
+ readonly 'wb.common.reset': "Reset";
272
+ readonly 'wb.css.applied': "Custom CSS applied to {site}.";
273
+ readonly 'wb.css.applied.short': "Applied";
274
+ readonly 'wb.css.empty': "Empty";
275
+ readonly 'wb.css.hint': "Applied to every {site} tab on top of whichever theme is selected, like BetterDiscord's Custom CSS. CSS for one theme goes in Theme CSS above.";
276
+ readonly 'wb.css.label': "Custom CSS for {site}";
277
+ readonly 'wb.css.title': "Custom CSS";
278
+ readonly 'wb.css.unsaved': "Unsaved changes";
279
+ readonly 'wb.dev.chooseTheme': "Choose theme file…";
280
+ readonly 'wb.dev.desktopOnly': "Developer mode is available in the desktop app.";
281
+ readonly 'wb.dev.errors': "Load errors";
282
+ readonly 'wb.dev.errorsHint': "Syntax errors are caught before a plugin reloads (the running version stays). Errors thrown while a plugin starts show here and as a toast in the {site} tab, with file and line.";
283
+ readonly 'wb.dev.hint': "For writing plugins and themes: save a file and every {site} tab updates at once. Off by default; nothing is watched while it is off.";
284
+ readonly 'wb.dev.mode': "Developer mode";
285
+ readonly 'wb.dev.modeHint': "Watches the plugins folder, custom.css and the theme file below. Enabled plugins reload on save (stop, then start the new version); themes and CSS apply instantly.";
286
+ readonly 'wb.dev.noErrors': "No errors";
287
+ readonly 'wb.dev.notAvailable': "Not available here.";
288
+ readonly 'wb.dev.off': "Developer mode off.";
289
+ readonly 'wb.dev.on': "Developer mode on: saved files reload in every {site} tab.";
290
+ readonly 'wb.dev.pluginsFolder': "Plugins folder";
291
+ readonly 'wb.dev.saveToReload': "Save a plugin, custom.css or the theme file to reload it.";
292
+ readonly 'wb.dev.stopWatching': "Stop watching";
293
+ readonly 'wb.dev.stoppedTheme': "Stopped watching the theme file; {site} tabs show your theme again.";
294
+ readonly 'wb.dev.themeFile': "Theme file";
295
+ readonly 'wb.dev.themeFileHint': "A theme .json you are editing (Appearance → Export, or npm create waybetter theme). While developer mode is on it is shown in every {site} tab as a preview; nothing is saved until you import it.";
296
+ readonly 'wb.dev.title': "Live reload";
297
+ readonly 'wb.dev.turnOn': "Turn developer mode on to watch your files.";
298
+ readonly 'wb.dev.watching': "Watching";
299
+ readonly 'wb.features.areas': "Area plugins";
300
+ readonly 'wb.features.areasHint': "One plugin for each part of {site}. Switch a whole plugin off, or open it and pick its features one by one.";
301
+ readonly 'wb.features.count': "{on} of {total} on";
302
+ readonly 'wb.features.default': "default";
303
+ readonly 'wb.features.fixes': "Fixes";
304
+ readonly 'wb.features.fixesHint': "On in every mode. No plugin switches them off.";
305
+ readonly 'wb.features.inApp': "runs in the app";
306
+ readonly 'wb.features.missing': "not installed";
307
+ readonly 'wb.features.off': "Off. Its features are paused; your choices are kept.";
308
+ readonly 'wb.features.ownCopy': "You have your own copy of {name}, so the built-in feature is off.";
309
+ readonly 'wb.features.ownCopyAsk': "Your own copy of {name} is on. Turn it off and use the built-in one?";
310
+ readonly 'wb.features.paused': "Paused in the open {site} tab: the page changed under it. Everything else keeps working; an update brings it back.";
311
+ readonly 'wb.features.pausedBadge': "paused";
312
+ readonly 'wb.features.pluginFile': "plugin file";
313
+ readonly 'wb.features.settingsNoTab': "Open a {site} tab first, then choose Settings again.";
314
+ readonly 'wb.features.soon': "Its features arrive in a later update.";
315
+ readonly 'wb.features.useBuiltIn': "Use the built-in one";
316
+ readonly 'wb.fonts.asSite': "As {site} draws it";
317
+ readonly 'wb.fonts.builtIn': "Built-in & system";
318
+ readonly 'wb.fonts.category': "Category";
319
+ readonly 'wb.fonts.category.all': "All";
320
+ readonly 'wb.fonts.category.display': "Display";
321
+ readonly 'wb.fonts.category.handwriting': "Handwriting";
322
+ readonly 'wb.fonts.category.mono': "Mono";
323
+ readonly 'wb.fonts.category.sans': "Sans";
324
+ readonly 'wb.fonts.category.serif': "Serif";
325
+ readonly 'wb.fonts.categoryName.display': "Display";
326
+ readonly 'wb.fonts.categoryName.handwriting': "Handwriting";
327
+ readonly 'wb.fonts.categoryName.mono': "Monospace";
328
+ readonly 'wb.fonts.categoryName.sans': "Sans serif";
329
+ readonly 'wb.fonts.categoryName.serif': "Serif";
330
+ readonly 'wb.fonts.choice.humanist': "Humanist (Segoe, Avenir)";
331
+ readonly 'wb.fonts.choice.mono': "System mono";
332
+ readonly 'wb.fonts.choice.rounded': "Rounded";
333
+ readonly 'wb.fonts.choice.serif': "Serif (Charter, Georgia)";
334
+ readonly 'wb.fonts.choice.system': "System UI";
335
+ readonly 'wb.fonts.choose': "Choose a font";
336
+ readonly 'wb.fonts.chooseFor': "Choose the font for: {role}";
337
+ readonly 'wb.fonts.detailEmpty': "Pick a family to preview it with your own text, choose weights and use it for: {role}.";
338
+ readonly 'wb.fonts.downloadUseFor': "Download and use for: {role}";
339
+ readonly 'wb.fonts.downloaded': "Downloaded";
340
+ readonly 'wb.fonts.downloadedSize': "Downloaded ({size})";
341
+ readonly 'wb.fonts.downloading': "Downloading…";
342
+ readonly 'wb.fonts.families': "Google Fonts families";
343
+ readonly 'wb.fonts.fineTune': "Fine-tune {role}";
344
+ readonly 'wb.fonts.fineTuneTitle': "Weight, size, spacing";
345
+ readonly 'wb.fonts.footer': "Google Fonts are open source (SIL Open Font License 1.1 or Apache License 2.0; see each family’s page). wayBetter downloads the files you pick once, from fonts.googleapis.com and fonts.gstatic.com, into its app data; {site} never loads fonts from the web. Previews fetch only the letters shown.";
346
+ readonly 'wb.fonts.forRole': "for: {role}";
347
+ readonly 'wb.fonts.fromWeight': "from {weight}";
348
+ readonly 'wb.fonts.googleCount': "{count, plural, one {# open-source family} other {# open-source families}} from Google Fonts, previewed live.";
349
+ readonly 'wb.fonts.heaviest': "Heaviest weight";
350
+ readonly 'wb.fonts.inUse': "In use";
351
+ readonly 'wb.fonts.inheritAgain': "Inherit again";
352
+ readonly 'wb.fonts.inherits': "Inherits · {font}";
353
+ readonly 'wb.fonts.installedFont': "A font installed on this computer";
354
+ readonly 'wb.fonts.installedPlaceholder': "e.g. Iosevka, Avenir Next, SF Pro";
355
+ readonly 'wb.fonts.license': "License and designers ↗";
356
+ readonly 'wb.fonts.lightest': "Lightest weight";
357
+ readonly 'wb.fonts.loadingCatalog': "Loading the catalog…";
358
+ readonly 'wb.fonts.monospace': "Monospace";
359
+ readonly 'wb.fonts.noMatch': "No family matches “{query}”.";
360
+ readonly 'wb.fonts.previewWeight': "Preview weight";
361
+ readonly 'wb.fonts.role.chrome.hint': "Tabs, address bar, titlebar and this panel.";
362
+ readonly 'wb.fonts.role.chrome.label': "wayBetter window";
363
+ readonly 'wb.fonts.role.dialog.hint': "Dialogs and toasts from plugins (the UI kit).";
364
+ readonly 'wb.fonts.role.dialog.label': "Plugin dialogs";
365
+ readonly 'wb.fonts.role.heading.hint': "Display names, profile names and page headings.";
366
+ readonly 'wb.fonts.role.heading.label': "Names and headings";
367
+ readonly 'wb.fonts.role.interface.hint': "All of {site}: navigation, buttons, menus. Every other role inherits it.";
368
+ readonly 'wb.fonts.role.interface.label': "Interface";
369
+ readonly 'wb.fonts.role.mono.hint': "Code blocks. Inherits a monospaced face.";
370
+ readonly 'wb.fonts.role.mono.label': "Code";
371
+ readonly 'wb.fonts.role.numbers.hint': "Like, repost and follower counts.";
372
+ readonly 'wb.fonts.role.numbers.label': "Numbers";
373
+ readonly 'wb.fonts.role.post.hint': "The text of posts and replies.";
374
+ readonly 'wb.fonts.role.post.label': "Post text";
375
+ readonly 'wb.fonts.roleInherited': "{role} font: {font} (inherited). Change";
376
+ readonly 'wb.fonts.roleOwn': "{role} font: {font}. Change";
377
+ readonly 'wb.fonts.roleSize': "{role} size";
378
+ readonly 'wb.fonts.roleSpacing': "{role} letter spacing";
379
+ readonly 'wb.fonts.roleTabular': "{role} tabular figures";
380
+ readonly 'wb.fonts.roleWeight': "{role} weight";
381
+ readonly 'wb.fonts.sample': "Sample text";
382
+ readonly 'wb.fonts.search': "Search Google Fonts";
383
+ readonly 'wb.fonts.searchPlaceholder': "Search Inter, Fraunces, Space Mono…";
384
+ readonly 'wb.fonts.showMore': "Show {count} more of {total}";
385
+ readonly 'wb.fonts.size': "Size";
386
+ readonly 'wb.fonts.source': "Font source";
387
+ readonly 'wb.fonts.spacing': "Spacing";
388
+ readonly 'wb.fonts.staticFiles': "Each weight is a separate file (Latin and Latin Extended).";
389
+ readonly 'wb.fonts.systemHint': "Fonts that ship with wayBetter, or any font installed on this computer.";
390
+ readonly 'wb.fonts.tabular': "Tabular figures";
391
+ readonly 'wb.fonts.toWeight': "to {weight}";
392
+ readonly 'wb.fonts.useFor': "Use for: {role}";
393
+ readonly 'wb.fonts.useIt': "Use it";
394
+ readonly 'wb.fonts.variable': "Variable";
395
+ readonly 'wb.fonts.variableFile': "One variable file covers every weight in the range (Latin and Latin Extended).";
396
+ readonly 'wb.fonts.variableRange': "Variable {min}–{max}";
397
+ readonly 'wb.fonts.weight': "Weight";
398
+ readonly 'wb.fonts.weightCount': "{count, plural, one {# weight} other {# weights}}";
399
+ readonly 'wb.fonts.weightsList': "Weights {weights}";
400
+ readonly 'wb.fonts.weightsToDownload': "Weights to download";
401
+ readonly 'wb.make.copiedDoc': "{doc} copied.";
402
+ readonly 'wb.make.copiedVar': "{name} copied.";
403
+ readonly 'wb.make.copyCommand': "Copy: {command}";
404
+ readonly 'wb.make.copyMarkdown': "Copy Markdown";
405
+ readonly 'wb.make.copyVar': "Copy {name}";
406
+ readonly 'wb.make.create.app': "A wayBetter app for another site";
407
+ readonly 'wb.make.create.plugin': "A plugin";
408
+ readonly 'wb.make.create.pluginTs': "A plugin in TypeScript";
409
+ readonly 'wb.make.create.theme': "A theme";
410
+ readonly 'wb.make.demo.cannotUndo': "This cannot be undone.";
411
+ readonly 'wb.make.demo.couldNotSave': "Could not save";
412
+ readonly 'wb.make.demo.deleteNote': "Delete this note?";
413
+ readonly 'wb.make.demo.exported': "Exported";
414
+ readonly 'wb.make.demo.exportedText': "Your list was saved to Downloads.";
415
+ readonly 'wb.make.demo.hideTrends': "Hide trends";
416
+ readonly 'wb.make.demo.linkCopied': "Link copied";
417
+ readonly 'wb.make.demo.min3': "Use at least 3 characters.";
418
+ readonly 'wb.make.demo.myPlugin': "My plugin";
419
+ readonly 'wb.make.demo.name': "Name";
420
+ readonly 'wb.make.demo.postHidden': "Post hidden";
421
+ readonly 'wb.make.demo.reading': "Reading";
422
+ readonly 'wb.make.demo.renameList': "Rename list";
423
+ readonly 'wb.make.demo.saved': "Saved";
424
+ readonly 'wb.make.demo.undo': "Undo";
425
+ readonly 'wb.make.demo.undoClicked': "Undo clicked";
426
+ readonly 'wb.make.demo.whatHidden': "What should be hidden?";
427
+ readonly 'wb.make.document': "Document";
428
+ readonly 'wb.make.examples': "Example plugins";
429
+ readonly 'wb.make.examplesHint': "Pick one, change it, then copy or download the file.";
430
+ readonly 'wb.make.file': "File";
431
+ readonly 'wb.make.fileName': "File name";
432
+ readonly 'wb.make.fileRule': "File names are letters, digits, spaces, -, _ or . and end in .plugin.js.";
433
+ readonly 'wb.make.fontsHint': "The theme's font roles as --wb-font and the resolved stacks. Theme files set them with font.family and font.tweet.";
434
+ readonly 'wb.make.inCode': "In code";
435
+ readonly 'wb.make.inCodeHint': "Plugins read the same values; plugin CSS uses the variables.";
436
+ readonly 'wb.make.intro': "Plugins are one *.plugin.js file with a class that has start() and stop(); themes are one JSON file. Both use the same wayBetter API every wayBetter app has. Start from an example here, or scaffold a project:";
437
+ readonly 'wb.make.kit.alert': "Alert";
438
+ readonly 'wb.make.kit.confirm': "Confirm";
439
+ readonly 'wb.make.kit.dialog': "Dialog";
440
+ readonly 'wb.make.kit.prompt': "Prompt";
441
+ readonly 'wb.make.kit.toast': "Toast";
442
+ readonly 'wb.make.kit.toastAction': "Toast with Undo";
443
+ readonly 'wb.make.kit.toastDanger': "Danger toast";
444
+ readonly 'wb.make.kit.toastSuccess': "Success toast";
445
+ readonly 'wb.make.kitHint': "What this.scope.ui opens in {site}: the same kit, in the current theme. Dialogs draw above the panes; toasts stay inside this panel.";
446
+ readonly 'wb.make.kitTitle': "Plugin UI kit";
447
+ readonly 'wb.make.liveAfter': "show up here.";
448
+ readonly 'wb.make.liveBefore': "Live:";
449
+ readonly 'wb.make.liveMiddle': "as plugins in {site} see it now. Changes in";
450
+ readonly 'wb.make.loadingTheme': "Loading the theme…";
451
+ readonly 'wb.make.openPluginsFolder': "Open plugins folder";
452
+ readonly 'wb.make.pluginCopied': "Plugin copied.";
453
+ readonly 'wb.make.pluginsList': "Plugins list:";
454
+ readonly 'wb.make.reference': "Reference:";
455
+ readonly 'wb.make.referenceBundled': "(bundled with the app, in English).";
456
+ readonly 'wb.make.role.accent': "Links, focus";
457
+ readonly 'wb.make.role.bg': "Main surface";
458
+ readonly 'wb.make.role.border': "Lines";
459
+ readonly 'wb.make.role.elevated': "Hover, selected";
460
+ readonly 'wb.make.role.inverse': "Filled button";
461
+ readonly 'wb.make.role.muted': "Secondary text";
462
+ readonly 'wb.make.role.onAccent': "Text on accent";
463
+ readonly 'wb.make.role.onInverse': "Its label";
464
+ readonly 'wb.make.role.page': "Behind the columns";
465
+ readonly 'wb.make.role.surface': "Cards, inputs";
466
+ readonly 'wb.make.role.text': "Text";
467
+ readonly 'wb.make.savedDownloads': "{file} saved to Downloads.";
468
+ readonly 'wb.make.siteDefaultLeading': "{site} default";
469
+ readonly 'wb.make.source': "Source of {file}";
470
+ readonly 'wb.make.step1': "Copy or download the file and put it in the plugins folder as {file}.";
471
+ readonly 'wb.make.step2After': ", press Rescan and turn it on. It starts live in every {site} tab; turning it off calls stop().";
472
+ readonly 'wb.make.step2Before': "In";
473
+ readonly 'wb.make.step3': "Errors show in the {site} tab's console and in wayBetter.errors. wayBetter never installs plugin code by itself: only files you put in the folder run.";
474
+ readonly 'wb.make.tab.docs': "Docs";
475
+ readonly 'wb.make.tab.kit': "UI kit";
476
+ readonly 'wb.make.tab.theme': "Theme API";
477
+ readonly 'wb.make.themeCopied': "Theme copied.";
478
+ readonly 'wb.make.themeFile': "A theme file";
479
+ readonly 'wb.make.themeFileHint': "Three colors are enough; everything else is derived. Import it in Appearance → Import.";
480
+ readonly 'wb.make.warn.export': "Export the plugin: module.exports = class '{ start() {} stop() {} }';";
481
+ readonly 'wb.make.warn.header': "Start the file with a /** … */ header; without it the Plugins list shows only the file name.";
482
+ readonly 'wb.make.warn.permissions': "No @permissions line: the plugin is listed as “legacy, full page access” and gets the whole API. Declare what it uses, e.g. @permissions storage, ui, network:none.";
483
+ readonly 'wb.make.warn.stop': "Add stop() that undoes everything start() did (scope.dispose() does it for a scope).";
484
+ readonly 'wb.make.warn.tag': "The header has no {tag}.";
485
+ readonly 'wb.modes.applied': "{mode} is on.";
486
+ readonly 'wb.modes.current': "in use";
487
+ readonly 'wb.modes.custom': "Custom (based on {mode})";
488
+ readonly 'wb.modes.existing': "You already set {app} up. Nothing changes unless you pick a mode.";
489
+ readonly 'wb.modes.grew': "{mode} has new features: {count}.";
490
+ readonly 'wb.modes.keep': "Keep my changes";
491
+ readonly 'wb.modes.keepHint': "Changed by hand: {count}. Those would be replaced.";
492
+ readonly 'wb.modes.keepQuestion': "Keep your manual changes?";
493
+ readonly 'wb.modes.keepSetup': "Keep my current setup";
494
+ readonly 'wb.modes.lede': "Pick a starting point. Every plugin and feature stays individually switchable, and you can change the mode later in Settings.";
495
+ readonly 'wb.modes.reapply': "Re-apply {mode}";
496
+ readonly 'wb.modes.reapplyHint': "Every feature goes back to what {mode} starts with.";
497
+ readonly 'wb.modes.recommended': "Recommended";
498
+ readonly 'wb.modes.reset': "Use {mode} as it is";
499
+ readonly 'wb.modes.review': "Review";
500
+ readonly 'wb.modes.section': "Mode";
501
+ readonly 'wb.modes.sectionHint': "A starting point, not a lock. Changing it never takes a switch away.";
502
+ readonly 'wb.modes.start': "Start with {mode}";
503
+ readonly 'wb.modes.title': "How much should {app} change {site}?";
504
+ readonly 'wb.modes.turnsOff': "Turns off: {list}";
505
+ readonly 'wb.modes.turnsOn': "Turns on: {list}";
506
+ readonly 'wb.modes.use': "Use this mode";
507
+ readonly 'wb.setup.title': "Share my setup";
508
+ readonly 'wb.setup.hint': "Your theme, icons, mode and which features are on, as one link or one small file. Anyone can use it to start from what you have.";
509
+ readonly 'wb.setup.shareLabel': "Your setup";
510
+ readonly 'wb.setup.private': "Nothing about you goes in it: no accounts, profiles, notes, drafts, keywords or starred messages.";
511
+ readonly 'wb.setup.copyLink': "Copy link";
512
+ readonly 'wb.setup.linkCopied': "Setup link copied.";
513
+ readonly 'wb.setup.saveFile': "Save file";
514
+ readonly 'wb.setup.useLabel': "Use a setup";
515
+ readonly 'wb.setup.useHint': "Paste a waybetter://setup link or open a setup file. You see what would change before anything does.";
516
+ readonly 'wb.setup.paste': "Setup link";
517
+ readonly 'wb.setup.preview': "Preview";
518
+ readonly 'wb.setup.openFile': "Open file…";
519
+ readonly 'wb.setup.changes': "What will change";
520
+ readonly 'wb.setup.same': "Nothing would change: this is already your setup.";
521
+ readonly 'wb.setup.theme': "Theme: {from} → {to}";
522
+ readonly 'wb.setup.accent': "Accent color: {to}";
523
+ readonly 'wb.setup.accentTheme': "the theme's own";
524
+ readonly 'wb.setup.icons': "Icons: {to}";
525
+ readonly 'wb.setup.mode': "Mode: {from} → {to}";
526
+ readonly 'wb.setup.modeNone': "none";
527
+ readonly 'wb.setup.missingTheme': "The theme “{id}” is not installed here, so yours stays.";
528
+ readonly 'wb.setup.missingIcons': "The icon pack “{id}” is not installed here, so yours stays.";
529
+ readonly 'wb.setup.dropped': "Left out, this version does not know them: {list}";
530
+ readonly 'wb.setup.apply': "Apply";
531
+ readonly 'wb.setup.applied': "Setup applied.";
532
+ readonly 'wb.setup.err.format': "This is not a wayBetter setup.";
533
+ readonly 'wb.setup.err.version': "This setup comes from a newer version. Update the app to use it.";
534
+ readonly 'wb.setup.err.app': "This setup is for another app ({app}).";
535
+ readonly 'wb.setup.err.appUnknown': "This setup is for another app.";
536
+ readonly 'wb.setup.err.size': "This is too large to be a setup.";
537
+ readonly 'wb.panel.accounts.add': "+ Add account";
538
+ readonly 'wb.panel.accounts.hint': "Each account is its own {site} sign-in on this computer and stays signed in across restarts. Click one to open its feed beside this pane.";
539
+ readonly 'wb.panel.accounts.newTabsBadge': "new tabs";
540
+ readonly 'wb.panel.accounts.newTabsHere': "New tabs here";
541
+ readonly 'wb.panel.accounts.newTabsTitle': "New tabs (Ctrl+T) open in this account";
542
+ readonly 'wb.panel.accounts.openCount': "{count} open";
543
+ readonly 'wb.panel.accounts.openFeed': "Open its feed beside this pane";
544
+ readonly 'wb.panel.accounts.removeConfirm': "Remove “{name}” from this computer? {tabs, plural, =0 {} one {Its open tab closes, } other {Its # open tabs close, }}its sign-in and site data here are deleted. The {site} account itself is not touched.";
545
+ readonly 'wb.panel.accounts.signIn': "Sign in";
546
+ readonly 'wb.panel.accounts.signInBeside': "Sign in on {site} beside this pane";
547
+ readonly 'wb.panel.accounts.useForNewTabs': "Use for new tabs";
548
+ readonly 'wb.panel.nav.label': "wayBetter sections";
549
+ readonly 'wb.panel.search.for': "for “{query}”";
550
+ readonly 'wb.panel.search.label': "Search settings";
551
+ readonly 'wb.panel.search.none': "No settings match";
552
+ readonly 'wb.panel.search.noneHint': "Try a shorter word, like “font”, “logo” or “links”. Drafts have their own search in Drafts.";
553
+ readonly 'wb.panel.search.results': "Results";
554
+ readonly 'wb.panel.section.accounts': "Accounts";
555
+ readonly 'wb.panel.section.backup': "Backup & sync";
556
+ readonly 'wb.panel.section.builder': "Theme Builder";
557
+ readonly 'wb.panel.section.developer': "Developer";
558
+ readonly 'wb.panel.section.home': "wayBetter";
559
+ readonly 'wb.panel.section.make': "Make";
560
+ readonly 'wb.panel.section.plugins': "Plugins";
561
+ readonly 'wb.panel.section.power': "Deck";
562
+ readonly 'wb.panel.section.settings': "Settings";
563
+ readonly 'wb.panel.section.store': "Store";
564
+ readonly 'wb.panel.section.themes': "Appearance";
565
+ readonly 'wb.panel.section.updates': "Updates";
566
+ readonly 'wb.panel.updates.checking': "Checking for updates…";
567
+ readonly 'wb.panel.updates.download': "Download";
568
+ readonly 'wb.panel.updates.downloading': "Downloading an update…";
569
+ readonly 'wb.panel.updates.error': "The last update check failed.";
570
+ readonly 'wb.panel.updates.hint': "Signed updates are downloaded and verified natively. Tabs come back after the restart.";
571
+ readonly 'wb.panel.updates.idle': "Updates are checked automatically in the background.";
572
+ readonly 'wb.panel.updates.installing': "Installing the update…";
573
+ readonly 'wb.panel.updates.problem': "The last update did not start correctly.";
574
+ readonly 'wb.panel.updates.ready': "An update is downloaded and verified.";
575
+ readonly 'wb.panel.updates.restart': "Restart & update";
576
+ readonly 'wb.panel.updates.upToDate': "wayBetter for {site} is up to date.";
577
+ readonly 'wb.panel.updates.version': "Version {version}";
578
+ readonly 'wb.plugins.deleteFile': "Delete file";
579
+ readonly 'wb.plugins.enabled': "{name} enabled";
580
+ readonly 'wb.plugins.headerProblem': "header problem";
581
+ readonly 'wb.plugins.hint': "Install from the Store, drop a *.plugin.js file on the window (you see its code, hash and permissions first), or copy it into the plugins folder. Plugins run inside {site} with the page's access; permissions limit the wayBetter API, not the page. Only install code you trust.";
582
+ readonly 'wb.plugins.keep': "Keep";
583
+ readonly 'wb.plugins.noVersion': "no version";
584
+ readonly 'wb.plugins.none': "No plugins yet";
585
+ readonly 'wb.plugins.noneHint': "Add a file like this to the plugins folder, then Rescan.";
586
+ readonly 'wb.plugins.openFolder': "Open folder";
587
+ readonly 'wb.plugins.rescan': "Rescan";
588
+ readonly 'wb.plugins.source.file': "Dropped file";
589
+ readonly 'wb.plugins.source.fileTitle': "Installed from a file you dropped";
590
+ readonly 'wb.plugins.source.link': "Link";
591
+ readonly 'wb.plugins.started': "{name} started.";
592
+ readonly 'wb.plugins.stopped': "{name} stopped.";
593
+ readonly 'wb.plugins.title': "JavaScript plugins";
594
+ readonly 'wb.power.addAccountFirst': "Add an account first";
595
+ readonly 'wb.power.columnCount': "{count, plural, one {# column} other {# columns}}";
596
+ readonly 'wb.power.columnsFlag': "Columns: {flag}";
597
+ readonly 'wb.power.comfortable': "Comfortable";
598
+ readonly 'wb.power.deckCreated': "{name} deck created.";
599
+ readonly 'wb.power.decks': "Decks";
600
+ readonly 'wb.power.decksHint': "Presets add a ready deck; you can change every column afterwards.";
601
+ readonly 'wb.power.densityComfortable': "Columns are comfortable.";
602
+ readonly 'wb.power.densityCompact': "Columns are compact.";
603
+ readonly 'wb.power.densityHint': "Compact trims post padding and text size inside columns.";
604
+ readonly 'wb.power.flagOff': "{flag}: off in columns.";
605
+ readonly 'wb.power.flagOn': "{flag}: on in columns.";
606
+ readonly 'wb.power.guard': "Memory guard";
607
+ readonly 'wb.power.hint': "A TweetDeck-style deck: {site} columns side by side, each in the account you pick. Every column is a real {site} page; posts, likes and replies are {site}’s own.";
608
+ readonly 'wb.power.key.column': "Previous / next column";
609
+ readonly 'wb.power.key.columnHint': "[ and ] (not while typing)";
610
+ readonly 'wb.power.key.jump': "Jump to column 1–9";
611
+ readonly 'wb.power.key.page': "Previous / next page";
612
+ readonly 'wb.power.key.post': "Post from the deck";
613
+ readonly 'wb.power.key.postHint': "Ctrl+Alt+N opens {site}’s composer in the dock; you press {site}’s Post";
614
+ readonly 'wb.power.key.read': "Mark column read / jump to unread";
615
+ readonly 'wb.power.key.toggle': "Deck and back";
616
+ readonly 'wb.power.keys': "Keys";
617
+ readonly 'wb.power.memory': "Memory";
618
+ readonly 'wb.power.memoryHint': "Each column is a full {site} page. Measured on the developer's Windows machine: about {range} MB per column (whole app, 60 s idle).";
619
+ readonly 'wb.power.openDeck': "Open deck";
620
+ readonly 'wb.power.park': "Park off-page columns";
621
+ readonly 'wb.power.parkHint': "Columns on another page drop caches and decoded images (WebView2’s low memory target). They keep running.";
622
+ readonly 'wb.power.parkOff': "Off-page columns stay at normal memory.";
623
+ readonly 'wb.power.parkOn': "Off-page columns are parked.";
624
+ readonly 'wb.power.perPage': "Columns per page";
625
+ readonly 'wb.power.perPageGuard': "More than {max} visible columns: about {mb} MB for the columns alone.";
626
+ readonly 'wb.power.perPageHint': "Up to {count} columns on screen, about {mb} MB. The rest wait on the next page.";
627
+ readonly 'wb.power.perPageSaved': "{count, plural, one {# column} other {# columns}} per page.";
628
+ readonly 'wb.power.title': "Deck";
629
+ readonly 'wb.power.width': "Column width";
630
+ readonly 'wb.power.widthHint': "New columns start at this width; a page stretches its columns to fill the window.";
631
+ readonly 'wb.power.widthSaved': "New columns are {width} px wide.";
632
+ readonly 'wb.settings.alerts.add': "Add keyword";
633
+ readonly 'wb.settings.alerts.hint': "A desktop notification when a post {site} already showed you mentions one of your words. Matching stays on this device; at most one alert per keyword a minute.";
634
+ readonly 'wb.settings.alerts.keywords': "Keywords";
635
+ readonly 'wb.settings.alerts.keywordsHint': "Up to {max}. Case does not matter. Separate several with commas.";
636
+ readonly 'wb.settings.alerts.label': "Alerts";
637
+ readonly 'wb.settings.alerts.none': "No keywords yet.";
638
+ readonly 'wb.settings.alerts.onCount': "On · {count, plural, one {# keyword} other {# keywords}}";
639
+ readonly 'wb.settings.alerts.stopped': "Stopped watching “{word}”.";
640
+ readonly 'wb.settings.alerts.title': "Keyword alerts";
641
+ readonly 'wb.settings.alerts.turnedOff': "Keyword alerts off.";
642
+ readonly 'wb.settings.alerts.turnedOn': "Keyword alerts on.";
643
+ readonly 'wb.settings.alerts.watching': "Watching “{word}”.";
644
+ readonly 'wb.settings.alerts.watchingMore': "Watching {count, plural, one {# more keyword} other {# more keywords}}.";
645
+ readonly 'wb.settings.home.hint': "Opens on first launch and in every new tab (Ctrl+T).";
646
+ readonly 'wb.settings.home.label': "Home page";
647
+ readonly 'wb.settings.home.reset': "Reset to {site}";
648
+ readonly 'wb.settings.home.resetDone': "Home page reset to {site}.";
649
+ readonly 'wb.settings.home.saved': "Home page saved.";
650
+ readonly 'wb.settings.home.url': "Home page URL";
651
+ readonly 'wb.settings.language.active': "Showing {language}";
652
+ readonly 'wb.settings.language.communityAvailable': "{language} is available as a community translation";
653
+ readonly 'wb.settings.language.communitySwitch': "Switch";
654
+ readonly 'wb.settings.language.followSite': "Follow {site}";
655
+ readonly 'wb.settings.language.followSiteHint': "The language your {site} account is set to";
656
+ readonly 'wb.settings.language.followSiteNow': "Now: {language}";
657
+ readonly 'wb.settings.language.followSystem': "Follow system";
658
+ readonly 'wb.settings.language.followSystemHint': "Your computer's language";
659
+ readonly 'wb.settings.language.groupCommunity': "Community translations — machine-drafted, not reviewed yet";
660
+ readonly 'wb.settings.language.groupSupported': "Supported languages";
661
+ readonly 'wb.settings.language.help': "Help translate";
662
+ readonly 'wb.settings.language.helpMachine': "This {language} translation was drafted by a machine and has not been checked by people yet. Fixes are welcome.";
663
+ readonly 'wb.settings.language.helpReviewed': "{language}: {percent} translated and reviewed by volunteers.";
664
+ readonly 'wb.settings.language.helpTitle': "Translation";
665
+ readonly 'wb.settings.language.hint': "wayBetter speaks the languages {site}'s own website offers. Changes apply at once to every window, {site} tab and plugin.";
666
+ readonly 'wb.settings.language.keywords': "language locale translation dil sprache idioma langue";
667
+ readonly 'wb.settings.language.label': "App language";
668
+ readonly 'wb.settings.language.machine': "Machine-drafted";
669
+ readonly 'wb.settings.language.reviewed': "Reviewed";
670
+ readonly 'wb.settings.language.title': "Language";
671
+ readonly 'wb.settings.links.beside': "Beside";
672
+ readonly 'wb.settings.links.browser': "System browser";
673
+ readonly 'wb.settings.links.external': "Links to other sites";
674
+ readonly 'wb.settings.links.externalHint': "Beside opens a split next to the tab you clicked in and reuses it for the next link.";
675
+ readonly 'wb.settings.links.externalSaved': "Links to other sites {how}.";
676
+ readonly 'wb.settings.links.hint': "How tabs and links behave in the app.";
677
+ readonly 'wb.settings.links.newTab': "New tab";
678
+ readonly 'wb.settings.links.opens.browser': "open in your browser";
679
+ readonly 'wb.settings.links.opens.pane': "open beside the tab";
680
+ readonly 'wb.settings.links.opens.same': "open in place, as on {site}";
681
+ readonly 'wb.settings.links.opens.tab': "open in a new tab";
682
+ readonly 'wb.settings.links.sameTab': "Same tab";
683
+ readonly 'wb.settings.links.site': "Links to {site} pages";
684
+ readonly 'wb.settings.links.siteHint': "Posts, profiles, hashtags and lists you click in a timeline or hover card. Photos, videos, menus and {site}'s navigation always stay in place.";
685
+ readonly 'wb.settings.links.siteSaved': "{site} pages {how}.";
686
+ readonly 'wb.settings.links.title': "Tabs and links";
687
+ readonly 'wb.settings.media.addFolder': "Add folder…";
688
+ readonly 'wb.settings.media.cleared': "Clipboard history cleared.";
689
+ readonly 'wb.settings.media.clipboard': "Clipboard history";
690
+ readonly 'wb.settings.media.clipboardHint': "Keeps your recent copied images and texts on this device, from the next copy on. Off by default.";
691
+ readonly 'wb.settings.media.clipboardOff': "Clipboard history off.";
692
+ readonly 'wb.settings.media.clipboardOn': "Clipboard history on.";
693
+ readonly 'wb.settings.media.folderRemoved': "Folder removed.";
694
+ readonly 'wb.settings.media.folders': "Gallery folders";
695
+ readonly 'wb.settings.media.foldersHint': "The newest images from these folders. Only files directly inside them are read.";
696
+ readonly 'wb.settings.media.hint': "The Media panel (Ctrl+Shift+G) beside {site}.";
697
+ readonly 'wb.settings.media.keep': "Items to keep";
698
+ readonly 'wb.settings.media.keepHint': "Older items drop off the end.";
699
+ readonly 'wb.settings.media.noFolders': "No folders yet. Add one to see its images in the Media panel.";
700
+ readonly 'wb.settings.media.title': "Media";
701
+ readonly 'wb.settings.restore.hint': "Reopen your tabs and split layout from last time. Pinned tabs always come back.";
702
+ readonly 'wb.settings.restore.label': "Restore tabs on launch";
703
+ readonly 'wb.settings.restore.off': "Tabs will not be restored.";
704
+ readonly 'wb.settings.restore.on': "Tabs will be restored.";
705
+ readonly 'wb.sync.auto': "Sync changes automatically";
706
+ readonly 'wb.sync.autoHint': "Writes a new snapshot shortly after your settings change (the last 10 of this computer are kept).";
707
+ readonly 'wb.sync.change': "Change…";
708
+ readonly 'wb.sync.check': "Check for newer";
709
+ readonly 'wb.sync.chooseFolder': "Choose folder…";
710
+ readonly 'wb.sync.choosePass': "Choose a passphrase";
711
+ readonly 'wb.sync.choosePassHint': "At least 8 characters. Use the same one on your other computers. It cannot be recovered: without it the snapshots cannot be read.";
712
+ readonly 'wb.sync.computerName': "This computer's name";
713
+ readonly 'wb.sync.deriving': "Deriving key…";
714
+ readonly 'wb.sync.differ': "The passphrases differ.";
715
+ readonly 'wb.sync.folder': "Sync folder";
716
+ readonly 'wb.sync.folderHint': "Encrypted with a passphrase only you know (Argon2id + XChaCha20-Poly1305).";
717
+ readonly 'wb.sync.hint': "Pick a folder you already sync (OneDrive, iCloud Drive, Dropbox, a network share). wayBetter writes encrypted snapshots of your settings there and offers newer ones on your other computers. No wayBetter server or account; drafts are never synced.";
718
+ readonly 'wb.sync.last': "Last synced from here";
719
+ readonly 'wb.sync.lastHint': "{when} · {count, plural, one {# snapshot} other {# snapshots}} of this computer in the folder";
720
+ readonly 'wb.sync.lock': "Lock";
721
+ readonly 'wb.sync.lockRemembered': "The key is remembered on this computer (never in a backup or snapshot). Lock forgets it; you then enter the passphrase again.";
722
+ readonly 'wb.sync.lockSession': "The key is kept only until wayBetter closes.";
723
+ readonly 'wb.sync.locked': "Locked. Automatic sync pauses until you unlock.";
724
+ readonly 'wb.sync.new': "new";
725
+ readonly 'wb.sync.newerFrom': "Newer settings from {device}.";
726
+ readonly 'wb.sync.notYet': "Not yet";
727
+ readonly 'wb.sync.nothingNewer': "Nothing newer from your other computers.";
728
+ readonly 'wb.sync.now': "Sync now";
729
+ readonly 'wb.sync.on': "Encrypted · on";
730
+ readonly 'wb.sync.others': "From your other computers";
731
+ readonly 'wb.sync.othersEmpty': "Nothing yet. Set up sync with the same folder and passphrase on another computer.";
732
+ readonly 'wb.sync.othersHint': "Review shows what would change; you pick the sections.";
733
+ readonly 'wb.sync.passphrase': "Passphrase";
734
+ readonly 'wb.sync.passphraseLabel': "Sync passphrase";
735
+ readonly 'wb.sync.problem': "Problem";
736
+ readonly 'wb.sync.remember': "Remember on this computer";
737
+ readonly 'wb.sync.rename': "Rename";
738
+ readonly 'wb.sync.repeat': "Repeat passphrase";
739
+ readonly 'wb.sync.repeatLabel': "Repeat sync passphrase";
740
+ readonly 'wb.sync.review': "Review…";
741
+ readonly 'wb.sync.setUp': "Set up sync";
742
+ readonly 'wb.sync.setUpDone': "Sync is set up. Your settings sync from now on.";
743
+ readonly 'wb.sync.stop': "Stop syncing";
744
+ readonly 'wb.sync.stopped': "Sync stopped on this computer. The folder and its snapshots stay.";
745
+ readonly 'wb.sync.syncing': "Syncing…";
746
+ readonly 'wb.sync.thisComputer': "This computer";
747
+ readonly 'wb.sync.thisComputerHint': "How your other computers see this one.";
748
+ readonly 'wb.sync.title': "Sync through a folder";
749
+ readonly 'wb.sync.unlock': "Unlock";
750
+ readonly 'wb.sync.unlockPass': "Unlock with your passphrase";
751
+ readonly 'wb.sync.unlockPassHint': "The passphrase you chose on the computer that set up this folder.";
752
+ readonly 'wb.sync.unlocked': "Unlocked.";
753
+ readonly 'wb.sync.written': "Snapshot written.";
754
+ readonly 'wb.ui.chip.remove': "Remove {item}";
755
+ readonly 'wb.ui.color.custom': "{label}: custom color";
756
+ readonly 'wb.ui.color.hex': "{label}: hex code";
757
+ readonly 'wb.ui.color.pick': "Pick any color";
758
+ readonly 'wb.ui.search.clear': "Clear search";
759
+ readonly 'wb.ui.select.placeholder': "Choose…";
760
+ readonly 'wb.ui.stepper.decrease': "Decrease {label}";
761
+ readonly 'wb.ui.stepper.increase': "Increase {label}";
762
+ };
763
+ export type PanelKey = keyof typeof PANEL_MESSAGES;