@jant/core 0.6.16 → 0.7.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 (508) hide show
  1. package/README.md +11 -11
  2. package/bin/commands/assets/upload.js +192 -15
  3. package/bin/commands/import-site.js +60 -4
  4. package/bin/commands/reset-password.js +21 -8
  5. package/bin/commands/site/snapshot/export.js +1 -1
  6. package/bin/commands/site/snapshot/import.js +1 -1
  7. package/bin/lib/d1-query.js +5 -16
  8. package/bin/lib/node-env.js +40 -4
  9. package/bin/lib/site-selection.js +85 -29
  10. package/bin/lib/wrangler-cli.js +28 -2
  11. package/bin/lib/wrangler-json.js +35 -0
  12. package/dist/{app-C7_4oab9.js → app-K_Aa1MMn.js} +52476 -13330
  13. package/dist/client/.vite/manifest.json +255 -90
  14. package/dist/client/_assets/chunks/confirm-D7GrwsCN.js +45 -0
  15. package/dist/client/_assets/chunks/create-editor-CD3FhrOB.js +257 -0
  16. package/dist/client/_assets/chunks/{native-DpcrFAPh.js → emoji-mart-C4RpRKcU.js} +716 -1
  17. package/dist/client/_assets/chunks/footnote-rail-CmeoVtnU.js +1 -0
  18. package/dist/client/_assets/chunks/heic-to-CuP2Qlsw.js +1 -0
  19. package/dist/client/_assets/chunks/jant-locale-picker-DL6mIOT5.js +69 -0
  20. package/dist/client/_assets/chunks/lit-DW8VmJAT.js +2 -0
  21. package/dist/client/_assets/chunks/mediabunny-DRaCQ1r-.js +31 -0
  22. package/dist/client/_assets/chunks/rolldown-runtime-hePW80VL.js +1 -0
  23. package/dist/client/_assets/chunks/settings-paths-BcdySNx6.js +84 -0
  24. package/dist/client/_assets/chunks/site-header-nav-DzXsFk05.js +1 -0
  25. package/dist/client/_assets/chunks/slug-format-CRXO1AL5.js +1 -0
  26. package/dist/client/_assets/chunks/slugify-373citbs.js +1 -0
  27. package/dist/client/_assets/chunks/sortable-list-CgaL2jCs.js +2 -0
  28. package/dist/client/_assets/chunks/types-D5iF3H1a.js +1 -0
  29. package/dist/client/_assets/chunks/unsafe-html-B5ZEXaxg.js +1 -0
  30. package/dist/client/_assets/chunks/unsafe-svg-0QCkP0vZ.js +2 -0
  31. package/dist/client/_assets/client-GiYENVw8.css +2 -0
  32. package/dist/client/_assets/client-VnFxJN7G.js +295 -0
  33. package/dist/client/_assets/client-auth-k8gJ6QJj.js +828 -0
  34. package/dist/client/_assets/client-author-DQ8R-8KR.css +2 -0
  35. package/dist/client/_assets/client-compose-B_kDtWkW.js +2004 -0
  36. package/dist/client/_assets/client-manage-M90aSTOk.js +2170 -0
  37. package/dist/client/_assets/client-settings-DfYs9n1F.js +1112 -0
  38. package/dist/{export-Dl5KCiEs.js → github-sync-BPAvT999.js} +2254 -107
  39. package/dist/index.js +2 -5
  40. package/dist/node.js +5 -7
  41. package/package.json +3 -3
  42. package/src/__tests__/auth-session-freshness.test.ts +57 -0
  43. package/src/__tests__/basecoat-variants.test.ts +121 -0
  44. package/src/__tests__/bin/assets-upload.test.ts +68 -0
  45. package/src/__tests__/export-hugo-build.test.ts +260 -0
  46. package/src/__tests__/export-service.test.ts +231 -0
  47. package/src/__tests__/helpers/component-css.ts +91 -0
  48. package/src/__tests__/helpers/db.ts +33 -0
  49. package/src/__tests__/helpers/export-fixtures.ts +3 -0
  50. package/src/__tests__/stylesheet-audience.test.ts +159 -0
  51. package/src/__tests__/stylesheet-breakpoints.test.ts +183 -0
  52. package/src/app.tsx +71 -16
  53. package/src/auth.ts +18 -1
  54. package/src/client/__tests__/collection-page-actions.test.ts +51 -2
  55. package/src/client/__tests__/compose-bridge-image-upload.test.ts +196 -0
  56. package/src/client/__tests__/compose-bridge-video-poster.test.ts +159 -0
  57. package/src/client/__tests__/compose-bridge.test.ts +272 -0
  58. package/src/client/__tests__/compose-launch.test.ts +62 -1
  59. package/src/client/__tests__/compose-shortcuts.test.ts +38 -9
  60. package/src/client/__tests__/compose-triggers.test.ts +90 -0
  61. package/src/client/__tests__/copy-field.test.ts +162 -0
  62. package/src/client/__tests__/custom-url-menu.test.ts +127 -6
  63. package/src/client/__tests__/image-processor.test.ts +324 -2
  64. package/src/client/__tests__/lazy-entries.test.ts +92 -0
  65. package/src/client/__tests__/media-scroll-hint.test.ts +155 -0
  66. package/src/client/__tests__/runtime-paths.test.ts +84 -0
  67. package/src/client/__tests__/smart-collection-page-actions.test.ts +158 -0
  68. package/src/client/__tests__/toast.test.ts +23 -0
  69. package/src/client/__tests__/video-processor-probe.test.ts +175 -0
  70. package/src/client/__tests__/video-processor.test.ts +181 -0
  71. package/src/client/audio-processor.ts +24 -15
  72. package/src/client/audio-waveform.ts +49 -0
  73. package/src/client/collection-dialog-host.ts +72 -0
  74. package/src/client/collection-navigation.ts +51 -16
  75. package/src/client/collection-page-actions.ts +26 -0
  76. package/src/client/components/__tests__/jant-collection-dialog.test.ts +329 -0
  77. package/src/client/components/__tests__/jant-collection-directory.test.ts +274 -10
  78. package/src/client/components/__tests__/jant-collection-form.test.ts +59 -178
  79. package/src/client/components/__tests__/jant-command-palette.test.ts +28 -0
  80. package/src/client/components/__tests__/jant-compose-dialog-draft-storage.test.ts +340 -0
  81. package/src/client/components/__tests__/jant-compose-dialog.test.ts +1250 -53
  82. package/src/client/components/__tests__/jant-compose-editor.test.ts +544 -40
  83. package/src/client/components/__tests__/jant-compose-fullscreen.test.ts +0 -1
  84. package/src/client/components/__tests__/jant-locale-picker.test.ts +207 -0
  85. package/src/client/components/__tests__/jant-nav-manager.test.ts +234 -15
  86. package/src/client/components/__tests__/jant-post-menu.test.ts +413 -2
  87. package/src/client/components/__tests__/jant-post-picker.test.ts +197 -0
  88. package/src/client/components/__tests__/jant-settings-avatar.test.ts +15 -12
  89. package/src/client/components/__tests__/jant-settings-general.test.ts +541 -172
  90. package/src/client/components/__tests__/jant-settings-language.test.ts +851 -0
  91. package/src/client/components/__tests__/jant-smart-collection-dialog.test.ts +665 -0
  92. package/src/client/components/collection-dialog-types.ts +49 -0
  93. package/src/client/components/collection-manager-types.ts +32 -1
  94. package/src/client/components/collection-types.ts +1 -15
  95. package/src/client/components/compose-types.ts +75 -1
  96. package/src/client/components/jant-collection-dialog.ts +722 -0
  97. package/src/client/components/jant-collection-directory.ts +567 -182
  98. package/src/client/components/jant-collection-form.ts +53 -232
  99. package/src/client/components/jant-command-palette.ts +100 -49
  100. package/src/client/components/jant-compose-dialog.ts +1486 -707
  101. package/src/client/components/jant-compose-editor.ts +673 -336
  102. package/src/client/components/jant-compose-fullscreen.ts +51 -43
  103. package/src/client/components/jant-config-editor.ts +65 -53
  104. package/src/client/components/jant-confirm-dialog.ts +13 -11
  105. package/src/client/components/jant-locale-picker.ts +418 -0
  106. package/src/client/components/jant-media-lightbox.ts +146 -136
  107. package/src/client/components/jant-nav-manager.ts +690 -366
  108. package/src/client/components/jant-post-menu.ts +1086 -282
  109. package/src/client/components/jant-post-picker.ts +324 -0
  110. package/src/client/components/jant-repo-picker.ts +138 -106
  111. package/src/client/components/jant-settings-avatar.ts +31 -27
  112. package/src/client/components/jant-settings-general.ts +617 -543
  113. package/src/client/components/jant-settings-language.ts +1087 -0
  114. package/src/client/components/jant-smart-collection-dialog.ts +1021 -0
  115. package/src/client/components/jant-text-preview.ts +94 -86
  116. package/src/client/components/nav-manager-types.ts +62 -1
  117. package/src/client/components/settings-types.ts +14 -29
  118. package/src/client/components/smart-collection-conditions.ts +285 -0
  119. package/src/client/components/smart-collection-dialog-types.ts +68 -0
  120. package/src/client/compose-bridge.ts +214 -141
  121. package/src/client/compose-launch.ts +76 -2
  122. package/src/client/compose-shortcuts.ts +6 -8
  123. package/src/client/compose-triggers.ts +50 -0
  124. package/src/client/copy-field.ts +108 -0
  125. package/src/client/custom-url-menu.ts +60 -4
  126. package/src/client/icons.ts +14 -0
  127. package/src/client/image-plan.ts +165 -0
  128. package/src/client/image-processor.ts +195 -117
  129. package/src/client/image-worker-client.ts +45 -0
  130. package/src/client/image-worker.ts +135 -0
  131. package/src/client/lazy-entries.ts +95 -0
  132. package/src/client/lazy-slugify.ts +2 -2
  133. package/src/client/media-scroll-hint.ts +43 -2
  134. package/src/client/mediabunny.ts +29 -0
  135. package/src/client/post-picker.ts +41 -0
  136. package/src/client/runtime-paths.ts +74 -1
  137. package/src/client/settings-bridge.ts +4 -10
  138. package/src/client/site-header-nav.js +18 -6
  139. package/src/client/smart-collection-dialog-host.ts +116 -0
  140. package/src/client/smart-collection-page-actions.ts +208 -0
  141. package/src/client/tiptap/__tests__/bubble-menu.test.ts +110 -0
  142. package/src/client/tiptap/__tests__/floating-position.test.ts +136 -1
  143. package/src/client/tiptap/__tests__/inline-image-upload.test.ts +37 -0
  144. package/src/client/tiptap/bubble-menu.ts +47 -16
  145. package/src/client/tiptap/floating-position.ts +216 -2
  146. package/src/client/tiptap/inline-image-upload.ts +7 -3
  147. package/src/client/tiptap/link-toolbar.ts +22 -9
  148. package/src/client/toast.ts +13 -0
  149. package/src/client/types/vite-worker.d.ts +12 -0
  150. package/src/client/upload-with-metadata.ts +3 -13
  151. package/src/client/video-processor.ts +351 -107
  152. package/src/client-auth.ts +14 -31
  153. package/src/client-compose.ts +19 -0
  154. package/src/client-manage.ts +13 -0
  155. package/src/client-settings.ts +14 -0
  156. package/src/client-site.ts +10 -3
  157. package/src/client.ts +4 -0
  158. package/src/db/__tests__/backfill-nav-label-mirrors.test.ts +149 -0
  159. package/src/db/__tests__/schema-enum-sources.test.ts +33 -0
  160. package/src/db/__tests__/smart-collection-placement.test.ts +402 -0
  161. package/src/db/backfills/0006_clear_mirrored_page_nav_labels.sql +31 -0
  162. package/src/db/migrations/0032_married_tomas.sql +3 -0
  163. package/src/db/migrations/0033_busy_johnny_storm.sql +198 -0
  164. package/src/db/migrations/0034_cheerful_rumiko_fujikawa.sql +35 -0
  165. package/src/db/migrations/meta/0032_snapshot.json +2582 -0
  166. package/src/db/migrations/meta/0033_snapshot.json +2816 -0
  167. package/src/db/migrations/meta/0034_snapshot.json +2816 -0
  168. package/src/db/migrations/meta/_journal.json +21 -0
  169. package/src/db/migrations/pg/0030_abandoned_nighthawk.sql +3 -0
  170. package/src/db/migrations/pg/0031_strong_ultimatum.sql +128 -0
  171. package/src/db/migrations/pg/0032_furry_multiple_man.sql +6 -0
  172. package/src/db/migrations/pg/meta/0030_snapshot.json +3329 -0
  173. package/src/db/migrations/pg/meta/0031_snapshot.json +3660 -0
  174. package/src/db/migrations/pg/meta/0032_snapshot.json +3660 -0
  175. package/src/db/migrations/pg/meta/_journal.json +21 -0
  176. package/src/db/pg/schema.ts +195 -27
  177. package/src/db/post-visibility.ts +117 -0
  178. package/src/db/schema.ts +222 -27
  179. package/src/i18n/__tests__/detect.test.ts +26 -81
  180. package/src/i18n/__tests__/supported-locales.test.ts +83 -0
  181. package/src/i18n/context.tsx +12 -2
  182. package/src/i18n/detect.ts +7 -66
  183. package/src/i18n/locales/glossary.zh-Hans.yml +44 -4
  184. package/src/i18n/locales/glossary.zh-Hant.yml +44 -4
  185. package/src/i18n/locales/public/en.po +490 -158
  186. package/src/i18n/locales/public/en.ts +1 -1
  187. package/src/i18n/locales/public/zh-Hans.po +487 -155
  188. package/src/i18n/locales/public/zh-Hans.ts +1 -1
  189. package/src/i18n/locales/public/zh-Hant.po +487 -155
  190. package/src/i18n/locales/public/zh-Hant.ts +1 -1
  191. package/src/i18n/locales/settings/en.po +551 -69
  192. package/src/i18n/locales/settings/en.ts +1 -1
  193. package/src/i18n/locales/settings/zh-Hans.po +597 -115
  194. package/src/i18n/locales/settings/zh-Hans.ts +1 -1
  195. package/src/i18n/locales/settings/zh-Hant.po +610 -128
  196. package/src/i18n/locales/settings/zh-Hant.ts +1 -1
  197. package/src/i18n/locales.ts +94 -0
  198. package/src/i18n/middleware.ts +12 -2
  199. package/src/i18n/supported-locales.ts +80 -0
  200. package/src/lib/__tests__/api-settings.test.ts +11 -2
  201. package/src/lib/__tests__/asset-path.test.ts +92 -0
  202. package/src/lib/__tests__/deferred.test.ts +90 -0
  203. package/src/lib/__tests__/discover-ping.test.ts +89 -0
  204. package/src/lib/__tests__/discover.test.ts +410 -0
  205. package/src/lib/__tests__/feed-policy.test.ts +26 -0
  206. package/src/lib/__tests__/feed.test.ts +1526 -15
  207. package/src/lib/__tests__/filter-dimensions.test.ts +341 -0
  208. package/src/lib/__tests__/hosted-signin.test.ts +1 -1
  209. package/src/lib/__tests__/http-cache.test.ts +162 -0
  210. package/src/lib/__tests__/jant-docs-dev.test.ts +21 -0
  211. package/src/lib/__tests__/jant-docs.test.ts +23 -0
  212. package/src/lib/__tests__/lang-detect.test.ts +231 -0
  213. package/src/lib/__tests__/media-helpers.test.ts +81 -0
  214. package/src/lib/__tests__/navigation.test.ts +135 -1
  215. package/src/lib/__tests__/resolve-config.test.ts +64 -3
  216. package/src/lib/__tests__/schemas.test.ts +42 -4
  217. package/src/lib/__tests__/site-unavailable-page.test.ts +25 -0
  218. package/src/lib/__tests__/slug.test.ts +70 -0
  219. package/src/lib/__tests__/slugify.test.ts +85 -0
  220. package/src/lib/__tests__/storage.test.ts +32 -0
  221. package/src/lib/__tests__/thread-fold.test.ts +113 -0
  222. package/src/lib/__tests__/upload-sideload.test.ts +14 -0
  223. package/src/lib/__tests__/url-fetch.test.ts +1 -2
  224. package/src/lib/__tests__/url.test.ts +78 -72
  225. package/src/lib/__tests__/view-language.test.ts +413 -0
  226. package/src/lib/__tests__/worker-response-cache.test.ts +90 -0
  227. package/src/lib/address.ts +57 -0
  228. package/src/lib/api-posts.ts +12 -0
  229. package/src/lib/asset-path.ts +98 -1
  230. package/src/lib/build-env.ts +16 -0
  231. package/src/lib/collection-groups.ts +5 -1
  232. package/src/lib/collection-paths.ts +3 -10
  233. package/src/lib/constants.ts +28 -3
  234. package/src/lib/copy-field.ts +36 -0
  235. package/src/lib/crypto.ts +40 -0
  236. package/src/lib/csp-builder.ts +2 -1
  237. package/src/lib/deferred.ts +79 -0
  238. package/src/lib/discover-ping.ts +141 -0
  239. package/src/lib/discover.ts +437 -0
  240. package/src/lib/env.ts +134 -0
  241. package/src/lib/errors.ts +33 -0
  242. package/src/lib/feed-policy.ts +236 -2
  243. package/src/lib/feed.ts +926 -73
  244. package/src/lib/filter-dimensions.ts +1349 -0
  245. package/src/lib/github-sync-site-config.ts +3 -0
  246. package/src/lib/hosted-signin.ts +1 -1
  247. package/src/lib/http-cache.ts +148 -0
  248. package/src/lib/hugo-markdown.ts +16 -0
  249. package/src/lib/icons.ts +9 -2
  250. package/src/lib/ids.ts +3 -0
  251. package/src/lib/jant-docs.ts +42 -0
  252. package/src/lib/lang-detect.ts +308 -0
  253. package/src/lib/media-helpers.ts +13 -1
  254. package/src/lib/navigation.ts +78 -11
  255. package/src/lib/pagination.ts +28 -24
  256. package/src/lib/per-language-surfaces.ts +67 -0
  257. package/src/lib/post-meta.ts +19 -0
  258. package/src/lib/render.tsx +55 -7
  259. package/src/lib/resolve-config.ts +53 -5
  260. package/src/lib/schemas.ts +201 -10
  261. package/src/lib/site-header-fragment.tsx +2 -1
  262. package/src/lib/site-unavailable-page.ts +47 -0
  263. package/src/lib/slug.ts +51 -7
  264. package/src/lib/slugify.ts +113 -0
  265. package/src/lib/startup-config.ts +4 -6
  266. package/src/lib/storage.ts +7 -0
  267. package/src/lib/summary.ts +50 -0
  268. package/src/lib/thread-fold.ts +161 -0
  269. package/src/lib/time.ts +32 -0
  270. package/src/lib/timeline.ts +42 -1
  271. package/src/lib/tiptap-render.ts +1 -2
  272. package/src/lib/upload.ts +16 -13
  273. package/src/lib/url.ts +139 -86
  274. package/src/lib/version.ts +10 -8
  275. package/src/lib/view-language.ts +436 -0
  276. package/src/lib/view.ts +51 -23
  277. package/src/lib/viewer-context.ts +62 -0
  278. package/src/middleware/__tests__/auth.test.ts +70 -2
  279. package/src/middleware/__tests__/cache-control.test.ts +71 -3
  280. package/src/middleware/__tests__/onboarding.test.ts +76 -5
  281. package/src/middleware/__tests__/secure-headers.test.ts +1 -1
  282. package/src/middleware/__tests__/session.test.ts +181 -33
  283. package/src/middleware/auth.ts +50 -31
  284. package/src/middleware/cache-control.ts +75 -10
  285. package/src/middleware/config.ts +6 -6
  286. package/src/middleware/error-handler.ts +12 -0
  287. package/src/middleware/onboarding.ts +32 -10
  288. package/src/middleware/secure-headers.ts +1 -1
  289. package/src/middleware/session.ts +96 -8
  290. package/src/node/__tests__/cli-migrate.test.ts +21 -19
  291. package/src/node/__tests__/cli-reset-password.test.ts +81 -8
  292. package/src/node/__tests__/cli-runtime-target.test.ts +48 -1
  293. package/src/node/__tests__/cli-site-selection.test.ts +128 -38
  294. package/src/node/__tests__/runtime.test.ts +37 -0
  295. package/src/node/index.ts +1 -0
  296. package/src/preset.css +76 -22
  297. package/src/routes/__tests__/feed-validator.test.ts +156 -0
  298. package/src/routes/api/__tests__/collections.test.ts +114 -0
  299. package/src/routes/api/__tests__/discover.test.ts +222 -0
  300. package/src/routes/api/__tests__/nav-items.test.ts +212 -2
  301. package/src/routes/api/__tests__/post-translations.test.ts +829 -0
  302. package/src/routes/api/__tests__/settings.test.ts +24 -3
  303. package/src/routes/api/__tests__/telegram.test.ts +6 -5
  304. package/src/routes/api/collections.ts +49 -6
  305. package/src/routes/api/custom-urls.ts +0 -1
  306. package/src/routes/api/discover.ts +95 -0
  307. package/src/routes/api/export.ts +3 -0
  308. package/src/routes/api/internal/__tests__/sites.test.ts +42 -2
  309. package/src/routes/api/nav-items.ts +55 -8
  310. package/src/routes/api/posts.ts +159 -0
  311. package/src/routes/api/public/__tests__/archive.test.ts +111 -0
  312. package/src/routes/api/public/archive.ts +77 -81
  313. package/src/routes/api/public/posts.ts +23 -6
  314. package/src/routes/api/smart-collections.ts +132 -0
  315. package/src/routes/api/telegram.ts +2 -40
  316. package/src/routes/api/uploads.ts +1 -2
  317. package/src/routes/auth/__tests__/setup-auth.test.ts +137 -0
  318. package/src/routes/auth/__tests__/setup-discover.test.ts +204 -0
  319. package/src/routes/auth/__tests__/setup-flow.test.ts +270 -0
  320. package/src/routes/auth/__tests__/setup-page.test.tsx +329 -0
  321. package/src/routes/auth/__tests__/setup-steps.test.ts +310 -0
  322. package/src/routes/auth/__tests__/setup.test.ts +278 -26
  323. package/src/routes/auth/__tests__/signin.test.ts +135 -0
  324. package/src/routes/auth/setup.tsx +934 -186
  325. package/src/routes/auth/signin.tsx +10 -8
  326. package/src/routes/compose.tsx +5 -0
  327. package/src/routes/dash/__tests__/custom-urls-archive.test.ts +44 -0
  328. package/src/routes/dash/__tests__/custom-urls-page.test.ts +49 -0
  329. package/src/routes/dash/__tests__/delete-account.test.ts +106 -0
  330. package/src/routes/dash/__tests__/settings-discover.test.ts +213 -0
  331. package/src/routes/dash/custom-urls.tsx +1 -37
  332. package/src/routes/dash/settings.tsx +502 -41
  333. package/src/routes/discover-announce.ts +96 -0
  334. package/src/routes/feed/__tests__/feed.test.ts +165 -2
  335. package/src/routes/feed/feed.ts +69 -40
  336. package/src/routes/feed/sitemap.ts +95 -11
  337. package/src/routes/pages/__tests__/archive-indexing.test.ts +200 -0
  338. package/src/routes/pages/__tests__/archive-params.test.ts +370 -6
  339. package/src/routes/pages/__tests__/collection-routing.test.ts +16 -0
  340. package/src/routes/pages/__tests__/collections-feed-links.test.ts +72 -0
  341. package/src/routes/pages/__tests__/collections.test.ts +9 -3
  342. package/src/routes/pages/__tests__/custom-archive-url.test.ts +119 -0
  343. package/src/routes/pages/__tests__/feed-autodiscovery.test.ts +148 -0
  344. package/src/routes/pages/__tests__/language-routing.test.ts +679 -0
  345. package/src/routes/pages/__tests__/post-preview-partial.test.ts +96 -0
  346. package/src/routes/pages/__tests__/smart-collection.test.ts +298 -0
  347. package/src/routes/pages/__tests__/subscribe.test.ts +248 -0
  348. package/src/routes/pages/archive.tsx +471 -369
  349. package/src/routes/pages/collection.tsx +94 -96
  350. package/src/routes/pages/collections.tsx +38 -50
  351. package/src/routes/pages/featured.tsx +32 -13
  352. package/src/routes/pages/home.tsx +25 -6
  353. package/src/routes/pages/language.tsx +113 -0
  354. package/src/routes/pages/latest.tsx +26 -16
  355. package/src/routes/pages/new.tsx +3 -0
  356. package/src/routes/pages/page.tsx +178 -17
  357. package/src/routes/pages/partials.tsx +41 -0
  358. package/src/routes/pages/search.tsx +18 -3
  359. package/src/routes/pages/smart-collection.tsx +340 -0
  360. package/src/routes/pages/subscribe.tsx +182 -0
  361. package/src/runtime/__tests__/index.test.ts +19 -0
  362. package/src/runtime/__tests__/node.test.ts +129 -4
  363. package/src/runtime/cloudflare.ts +21 -2
  364. package/src/runtime/index.ts +27 -1
  365. package/src/runtime/node.ts +18 -1
  366. package/src/runtime/site.ts +95 -24
  367. package/src/services/__tests__/auth.test.ts +116 -7
  368. package/src/services/__tests__/collection.test.ts +108 -4
  369. package/src/services/__tests__/language.test.ts +495 -0
  370. package/src/services/__tests__/navigation.test.ts +213 -10
  371. package/src/services/__tests__/path.test.ts +180 -0
  372. package/src/services/__tests__/post-language.test.ts +830 -0
  373. package/src/services/__tests__/post.test.ts +46 -9
  374. package/src/services/__tests__/settings.test.ts +228 -17
  375. package/src/services/__tests__/site-admin.test.ts +5 -5
  376. package/src/services/__tests__/smart-collection.test.ts +651 -0
  377. package/src/services/about-page.ts +22 -1
  378. package/src/services/auth.ts +51 -49
  379. package/src/services/bootstrap.ts +188 -38
  380. package/src/services/collection-directory-position.ts +76 -0
  381. package/src/services/collection.ts +331 -46
  382. package/src/services/custom-url.ts +27 -22
  383. package/src/services/export-theme/assets/client-site.css +1 -1
  384. package/src/services/export-theme/assets/client-site.js +123 -123
  385. package/src/services/export-theme/layouts/_default/rss.xml +77 -1
  386. package/src/services/export-theme/layouts/partials/feed-post-content.xml +105 -2
  387. package/src/services/export-theme/layouts/partials/media-gallery.html +35 -21
  388. package/src/services/export-theme/layouts/partials/pagination.html +14 -13
  389. package/src/services/export-theme/layouts/partials/post-card.html +8 -4
  390. package/src/services/export-theme/layouts/partials/reply.html +2 -1
  391. package/src/services/export-theme/layouts/partials/thread-preview.html +40 -30
  392. package/src/services/export-theme/styles/main.css +13 -1
  393. package/src/services/export.ts +278 -19
  394. package/src/services/index.ts +34 -3
  395. package/src/services/language.ts +412 -0
  396. package/src/services/mcp.ts +3 -1
  397. package/src/services/media.ts +14 -6
  398. package/src/services/navigation.ts +429 -67
  399. package/src/services/path.ts +221 -6
  400. package/src/services/post.ts +1021 -152
  401. package/src/services/search.ts +39 -2
  402. package/src/services/settings.ts +238 -43
  403. package/src/services/site-admin.ts +24 -7
  404. package/src/services/site.ts +77 -1
  405. package/src/services/smart-collection.ts +636 -0
  406. package/src/services/telegram.ts +20 -22
  407. package/src/services/upload-session.ts +1 -3
  408. package/src/style-author.css +27 -0
  409. package/src/styles/components-author.css +1622 -0
  410. package/src/styles/components.css +24 -1571
  411. package/src/styles/site-media.css +16 -2
  412. package/src/styles/tokens.css +82 -12
  413. package/src/styles/ui-author.css +7602 -0
  414. package/src/styles/ui.css +1087 -7219
  415. package/src/types/app-context.ts +7 -0
  416. package/src/types/bindings.ts +3 -0
  417. package/src/types/config.ts +94 -15
  418. package/src/types/constants.ts +188 -16
  419. package/src/types/entities.ts +87 -1
  420. package/src/types/operations.ts +64 -2
  421. package/src/types/props.ts +157 -31
  422. package/src/types/views.ts +55 -1
  423. package/src/ui/__tests__/font-themes.test.ts +52 -12
  424. package/src/ui/compose/ComposeDialog.tsx +201 -7
  425. package/src/ui/compose/ComposePrompt.tsx +1 -5
  426. package/src/ui/compose/__tests__/ComposeDialog.test.tsx +125 -0
  427. package/src/ui/dash/appearance/AdvancedContent.tsx +2 -2
  428. package/src/ui/dash/appearance/CodeInjectionContent.tsx +12 -16
  429. package/src/ui/dash/appearance/NavigationContent.tsx +117 -16
  430. package/src/ui/dash/appearance/__tests__/NavigationContent.test.tsx +33 -11
  431. package/src/ui/dash/appearance/__tests__/system-nav-descriptions.test.ts +44 -0
  432. package/src/ui/dash/appearance/system-nav-descriptions.ts +75 -0
  433. package/src/ui/dash/settings/AccountMenuContent.tsx +2 -2
  434. package/src/ui/dash/settings/ApiTokensContent.tsx +2 -1
  435. package/src/ui/dash/settings/ConfigEditorContent.tsx +35 -16
  436. package/src/ui/dash/settings/GeneralContent.tsx +275 -113
  437. package/src/ui/dash/settings/LanguageContent.tsx +409 -0
  438. package/src/ui/dash/settings/SettingsRootContent.tsx +19 -1
  439. package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +324 -4
  440. package/src/ui/dash/settings/__tests__/LanguageContent.test.tsx +144 -0
  441. package/src/ui/dash/settings/__tests__/discover-copy.test.ts +66 -0
  442. package/src/ui/dash/settings/discover-copy.ts +116 -0
  443. package/src/ui/feed/LinkCard.tsx +55 -45
  444. package/src/ui/feed/NoteCard.tsx +9 -4
  445. package/src/ui/feed/PostStatusBadges.tsx +90 -43
  446. package/src/ui/feed/QuoteCard.tsx +55 -30
  447. package/src/ui/feed/ThreadPreview.tsx +6 -2
  448. package/src/ui/feed/__tests__/thread-preview.test.ts +13 -16
  449. package/src/ui/feed/__tests__/timeline-cards.test.ts +314 -49
  450. package/src/ui/feed/thread-preview-state.ts +20 -6
  451. package/src/ui/font-themes.ts +39 -29
  452. package/src/ui/layouts/BaseLayout.tsx +155 -10
  453. package/src/ui/layouts/SiteLayout.tsx +192 -34
  454. package/src/ui/layouts/__tests__/BaseLayout.test.tsx +196 -17
  455. package/src/ui/layouts/__tests__/SiteLayout.test.tsx +109 -85
  456. package/src/ui/pages/ArchivePage.tsx +282 -289
  457. package/src/ui/pages/CollectionPage.tsx +86 -76
  458. package/src/ui/pages/CollectionsPage.tsx +5 -0
  459. package/src/ui/pages/ComposePage.tsx +8 -0
  460. package/src/ui/pages/PostPage.tsx +47 -0
  461. package/src/ui/pages/SearchPage.tsx +3 -3
  462. package/src/ui/pages/SmartCollectionPage.tsx +434 -0
  463. package/src/ui/pages/SubscribePage.tsx +236 -0
  464. package/src/ui/pages/__tests__/ArchivePage.test.tsx +65 -9
  465. package/src/ui/pages/__tests__/collections-directory-rows.test.tsx +92 -0
  466. package/src/ui/pages/__tests__/collections-view-links.test.tsx +81 -0
  467. package/src/ui/shared/CollectionDirectory.tsx +178 -3
  468. package/src/ui/shared/CollectionsManager.tsx +70 -17
  469. package/src/ui/shared/CopyField.tsx +127 -0
  470. package/src/ui/shared/EmptyPostContent.tsx +23 -0
  471. package/src/ui/shared/MediaGallery.tsx +125 -46
  472. package/src/ui/shared/Pagination.tsx +20 -5
  473. package/src/ui/shared/PostFooter.tsx +20 -11
  474. package/src/ui/shared/__tests__/archive-labels.test.ts +100 -0
  475. package/src/ui/shared/__tests__/media-gallery.test.ts +210 -2
  476. package/src/ui/shared/__tests__/navigation-labels.test.ts +16 -22
  477. package/src/ui/shared/__tests__/pagination.test.ts +38 -24
  478. package/src/ui/shared/__tests__/post-footer.test.ts +32 -0
  479. package/src/ui/shared/archive-labels.ts +98 -0
  480. package/src/ui/shared/collection-management-labels.ts +94 -16
  481. package/src/ui/shared/navigation-labels.ts +45 -71
  482. package/src/ui/shared/post-article-attributes.ts +2 -0
  483. package/src/ui/shared/smart-collection-labels.ts +343 -0
  484. package/dist/app-C75Zc8dD.js +0 -6
  485. package/dist/client/_assets/chunks/heic-to-DUUaO23q.js +0 -1
  486. package/dist/client/_assets/chunks/module-DcsAZQZ_.js +0 -716
  487. package/dist/client/_assets/chunks/url-CU9pEbk5.js +0 -1
  488. package/dist/client/_assets/client-Bq0vre8Y.js +0 -296
  489. package/dist/client/_assets/client-D3VZyG4L.css +0 -2
  490. package/dist/client/_assets/client-auth-F2rb9WfF.js +0 -5571
  491. package/dist/env-BPYViDJJ.js +0 -281
  492. package/dist/github-api-BNF35Lkx.js +0 -176
  493. package/dist/github-app-DdiD-bC4.js +0 -275
  494. package/dist/github-sync-Bqg62IvV.js +0 -4
  495. package/dist/github-sync-HdK2EgvJ.js +0 -431
  496. package/dist/url-CbLAtlZe.js +0 -900
  497. package/src/client/__tests__/collection-created-notice.test.ts +0 -36
  498. package/src/client/__tests__/collection-form-bridge.test.ts +0 -216
  499. package/src/client/__tests__/post-form-bridge.test.ts +0 -82
  500. package/src/client/collection-created-notice.ts +0 -66
  501. package/src/client/collection-form-bridge.ts +0 -191
  502. package/src/client/components/__tests__/jant-post-form.test.ts +0 -193
  503. package/src/client/components/jant-post-form.ts +0 -422
  504. package/src/client/components/post-form-template.ts +0 -352
  505. package/src/client/components/post-form-types.ts +0 -96
  506. package/src/client/media-metadata.ts +0 -247
  507. package/src/client/post-form-bridge.ts +0 -193
  508. package/src/ui/pages/CollectionEditorPage.tsx +0 -175
@@ -13,11 +13,46 @@ msgstr ""
13
13
  "Language-Team: \n"
14
14
  "Plural-Forms: \n"
15
15
 
16
+ #. @context: Help text under the Jant Discover checkbox on the settings page. {about} is the sentence saying what the directory is, translated on its own and shown alone on the setup screen; keep it, and join it to what follows as your language joins two sentences. {links} and {quotes} are the directory's two list names, which stay in English, and {rules} is the name of its rules page; each is rendered as a link, so keep every placeholder as one run of text. {hours} is how long the directory waits before showing a post, which is the time left to edit it. 'Featured' is the mark on a post, as this site's own UI spells it; the lowercase 'link and quote' are the post formats, not the lists.
17
+ #: src/ui/dash/settings/discover-copy.ts
18
+ msgid "{about} A post you mark Featured appears on the Discover home page {hours} hours later, and link and quote posts appear on the {links} and {quotes} lists {hours} hours after they are published. You can keep editing them in the meantime. See the {rules}."
19
+ msgstr "{about} A post you mark Featured appears on the Discover home page {hours} hours later, and link and quote posts appear on the {links} and {quotes} lists {hours} hours after they are published. You can keep editing them in the meantime. See the {rules}."
20
+
21
+ #. @context: Warning in the multilingual dialog about stamping posts that have no language
22
+ #: src/ui/dash/settings/LanguageContent.tsx
23
+ msgid "{count, plural, one {# existing post} other {# existing posts}} with no language yet will be marked as {language}."
24
+ msgstr "{count, plural, one {# existing post} other {# existing posts}} with no language yet will be marked as {language}."
25
+
26
+ #. @context: Error when a content language that posts still use would be dropped
27
+ #: src/routes/dash/settings.tsx
28
+ msgid "{count, plural, one {# post is} other {# posts are}} still written in {language}. Change their language, or keep the language."
29
+ msgstr "{count, plural, one {# post is} other {# posts are}} still written in {language}. Change their language, or keep the language."
30
+
31
+ #. @context: Refusal in the multilingual dialog when the list drops a language that posts still use
32
+ #: src/routes/dash/settings.tsx
33
+ msgid "{count, plural, one {# post is} other {# posts are}} written in {language}, which is not on this list. Add it back, or change their language first."
34
+ msgstr "{count, plural, one {# post is} other {# posts are}} written in {language}, which is not on this list. Add it back, or change their language first."
35
+
16
36
  #. @context: Config Editor live search result count
17
37
  #: src/ui/dash/settings/ConfigEditorContent.tsx
18
38
  msgid "{count} settings shown"
19
39
  msgstr "{count} settings shown"
20
40
 
41
+ #. @context: Body of the dialog confirming removal of the last additional language
42
+ #: src/ui/dash/settings/LanguageContent.tsx
43
+ msgid "{language} is the only other language on this site, so removing it turns multilingual content off. The root address goes back to showing every language, {prefix} stops working, and each post keeps the language it is written in."
44
+ msgstr "{language} is the only other language on this site, so removing it turns multilingual content off. The root address goes back to showing every language, {prefix} stops working, and each post keeps the language it is written in."
45
+
46
+ #. @context: What the Jant Discover directory is, in one sentence. The whole help line under the Discover checkbox on the first-run setup screen, and the opening of the settings page's longer one. {name} is the directory's name and is rendered as the link to it, so keep it as one run of text.
47
+ #: src/ui/dash/settings/discover-copy.ts
48
+ msgid "{name} is a directory of Jant blogs, curated by hand by the Jant community to help people find new Jant blogs and posts."
49
+ msgstr "{name} is a directory of Jant blogs, curated by hand by the Jant community to help people find new Jant blogs and posts."
50
+
51
+ #. @context: Body of the change-primary-language dialog
52
+ #: src/ui/dash/settings/LanguageContent.tsx
53
+ msgid "{next} will be served at the root address (/, /feed, /archive), and {previous} moves to {prefix}. Post addresses do not change, but anyone subscribed to /feed starts receiving {next} posts."
54
+ msgstr "{next} will be served at the root address (/, /feed, /archive), and {previous} moves to {prefix}. Post addresses do not change, but anyone subscribed to /feed starts receiving {next} posts."
55
+
21
56
  #. @context: Custom CSS textarea placeholder
22
57
  #: src/ui/dash/appearance/AdvancedContent.tsx
23
58
  msgid "/* Your custom CSS here */"
@@ -109,11 +144,26 @@ msgstr "Active Tokens"
109
144
  msgid "Add"
110
145
  msgstr "Add"
111
146
 
147
+ #. @context: One-click fix in the multilingual dialog, putting a language with posts back on the list
148
+ #: src/ui/dash/settings/LanguageContent.tsx
149
+ msgid "Add {language}"
150
+ msgstr "Add {language}"
151
+
112
152
  #. @context: Description in link popover form
113
153
  #: src/ui/dash/appearance/NavigationContent.tsx
114
154
  msgid "Add a custom link to any URL"
115
155
  msgstr "Add a custom link to any URL"
116
156
 
157
+ #. @context: Button that opens the link form with the pasted address filled in
158
+ #: src/ui/dash/appearance/NavigationContent.tsx
159
+ msgid "Add as link"
160
+ msgstr "Add as link"
161
+
162
+ #. @context: Validation message when the multilingual dialog has no second language
163
+ #: src/ui/dash/settings/LanguageContent.tsx
164
+ msgid "Add at least one more language to turn this on."
165
+ msgstr "Add at least one more language to turn this on."
166
+
117
167
  #. @context: Button for adding a collection to nav
118
168
  #: src/ui/dash/appearance/NavigationContent.tsx
119
169
  msgid "Add Collection"
@@ -149,6 +199,11 @@ msgstr "Add it to navigation now or open the editor to add content."
149
199
  msgid "Add it to navigation now or open the editor to add details."
150
200
  msgstr "Add it to navigation now or open the editor to add details."
151
201
 
202
+ #. @context: Button that adds another content language
203
+ #: src/ui/dash/settings/LanguageContent.tsx
204
+ msgid "Add language"
205
+ msgstr "Add language"
206
+
152
207
  #. @context: Button and heading for adding custom link
153
208
  #: src/ui/dash/appearance/NavigationContent.tsx
154
209
  msgid "Add Link"
@@ -199,6 +254,16 @@ msgstr "all available endpoints and request formats."
199
254
  msgid "All collections are already in your navigation."
200
255
  msgstr "All collections are already in your navigation."
201
256
 
257
+ #. @context: Link text to the feeds documentation, under the fixed feed URLs in General settings
258
+ #: src/ui/dash/settings/GeneralContent.tsx
259
+ msgid "All feed addresses"
260
+ msgstr "All feed addresses"
261
+
262
+ #. @context: Checkbox for joining the Jant Discover directory, on the settings page and once on the first-run setup screen. {name} is the directory's name, kept as one run of text.
263
+ #: src/ui/dash/settings/discover-copy.ts
264
+ msgid "Allow {name} to list my site"
265
+ msgstr "Allow {name} to list my site"
266
+
202
267
  #. @context: Config Editor setting description
203
268
  #: src/ui/dash/settings/ConfigEditorContent.tsx
204
269
  msgid "Allow published content to be read without an API token."
@@ -209,6 +274,11 @@ msgstr "Allow published content to be read without an API token."
209
274
  msgid "Allow search engines to index my site"
210
275
  msgstr "Allow search engines to index my site"
211
276
 
277
+ #. @context: Shown when a pasted address is already a navigation item
278
+ #: src/ui/dash/appearance/NavigationContent.tsx
279
+ msgid "Already in navigation. Drag it in the list above to move it."
280
+ msgstr "Already in navigation. Drag it in the list above to move it."
281
+
212
282
  #. @context: Theme mode option description
213
283
  #: src/ui/dash/appearance/ColorThemeContent.tsx
214
284
  msgid "Always show the dark version of the theme."
@@ -224,6 +294,21 @@ msgstr "Always show the light version of the theme."
224
294
  msgid "An earthier, warmer tone."
225
295
  msgstr "An earthier, warmer tone."
226
296
 
297
+ #. @context: Button sending the Discover announcement, shown when the site has never announced itself or when the announcement failed
298
+ #: src/ui/dash/settings/GeneralContent.tsx
299
+ msgid "Announce my site"
300
+ msgstr "Announce my site"
301
+
302
+ #. @context: Toast after sending the Discover announcement. It runs in the background, so the page does not yet know how it went.
303
+ #: src/routes/dash/settings.tsx
304
+ msgid "Announcing your site. Reload to see the result."
305
+ msgstr "Announcing your site. Reload to see the result."
306
+
307
+ #. @context: Follow-up hint under the stamping warning
308
+ #: src/ui/dash/settings/LanguageContent.tsx
309
+ msgid "Any post written in another language can be corrected from its own menu afterwards."
310
+ msgstr "Any post written in another language can be corrected from its own menu afterwards."
311
+
227
312
  #. @context: Code Injection security warning body
228
313
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
229
314
  msgid "Anything you paste here has full access to your visitors' browsers. Only use code from sources you trust."
@@ -254,10 +339,8 @@ msgid "Applies to your entire site, including admin pages. Pick a palette, then
254
339
  msgstr "Applies to your entire site, including admin pages. Pick a palette, then choose whether it follows the system or stays fixed."
255
340
 
256
341
  #. @context: Custom URL target type badge for an archive view
257
- #. @context: Custom URL type option for filtered archive view
258
342
  #. @context: Suggested navigation link target type
259
343
  #: src/routes/dash/custom-urls.tsx
260
- #: src/routes/dash/custom-urls.tsx
261
344
  #: src/ui/dash/appearance/NavigationContent.tsx
262
345
  msgid "Archive"
263
346
  msgstr "Archive"
@@ -267,16 +350,21 @@ msgstr "Archive"
267
350
  msgid "Archive feed"
268
351
  msgstr "Archive feed"
269
352
 
270
- #. @context: Help text for archive custom URL query params
271
- #: src/routes/dash/custom-urls.tsx
272
- msgid "Archive filter parameters (e.g. format=note&view=list)"
273
- msgstr "Archive filter parameters (e.g. format=note&view=list)"
274
-
275
353
  #. @context: Config Editor setting description
276
354
  #: src/ui/dash/settings/ConfigEditorContent.tsx
277
355
  msgid "Ask search engines not to index public pages or include them in results."
278
356
  msgstr "Ask search engines not to index public pages or include them in results."
279
357
 
358
+ #. @context: Heading above the page a pasted address resolved to
359
+ #: src/ui/dash/appearance/NavigationContent.tsx
360
+ msgid "At that address"
361
+ msgstr "At that address"
362
+
363
+ #. @context: Error toast when authentication secret is missing from server config
364
+ #: src/routes/auth/setup.tsx
365
+ msgid "Auth secret is missing. Check your environment variables."
366
+ msgstr "Auth secret is missing. Check your environment variables."
367
+
280
368
  #. @context: Theme mode option label
281
369
  #: src/ui/dash/appearance/ColorThemeContent.tsx
282
370
  msgid "Auto"
@@ -369,6 +457,7 @@ msgstr "Calm and natural, easy on the eyes."
369
457
  #. @context: Button to cancel form
370
458
  #. @context: Button to cancel settings changes
371
459
  #. @context: Button to cancel unsaved changes and revert to original values
460
+ #. @context: Dialog cancel button
372
461
  #. @context: GitHub sync picker — cancel action
373
462
  #: src/routes/dash/custom-urls.tsx
374
463
  #: src/routes/dash/custom-urls.tsx
@@ -381,6 +470,7 @@ msgstr "Calm and natural, easy on the eyes."
381
470
  #: src/ui/dash/settings/DeleteAccountContent.tsx
382
471
  #: src/ui/dash/settings/GeneralContent.tsx
383
472
  #: src/ui/dash/settings/GitHubSyncContent.tsx
473
+ #: src/ui/dash/settings/LanguageContent.tsx
384
474
  #: src/ui/dash/settings/SessionsContent.tsx
385
475
  #: src/ui/dash/settings/TelegramContent.tsx
386
476
  #: src/ui/dash/settings/TelegramContent.tsx
@@ -394,6 +484,11 @@ msgstr "Cancel"
394
484
  msgid "Change Password"
395
485
  msgstr "Change Password"
396
486
 
487
+ #. @context: Title of the change-primary-language dialog
488
+ #: src/ui/dash/settings/LanguageContent.tsx
489
+ msgid "Change the primary language?"
490
+ msgstr "Change the primary language?"
491
+
397
492
  #. @context: Warning shown when changing the canonical RSS feed selection
398
493
  #: src/ui/dash/settings/GeneralContent.tsx
399
494
  msgid "Changing this updates what subscribers get from /feed."
@@ -449,11 +544,6 @@ msgstr "Choose the time zone used to display dates and times."
449
544
  msgid "Choose the typography used across Jant."
450
545
  msgstr "Choose the typography used across Jant."
451
546
 
452
- #. @context: Settings field for a manual Chinese, Japanese, or Korean font fallback
453
- #: src/ui/dash/settings/GeneralContent.tsx
454
- msgid "CJK fallback"
455
- msgstr "CJK fallback"
456
-
457
547
  #. @context: Paper color theme preview help line
458
548
  #: src/ui/dash/appearance/ColorThemeContent.tsx
459
549
  msgid "Clean and high-contrast, close to white."
@@ -605,11 +695,25 @@ msgstr "Connecting will sync your site onto {repo}'s default branch on top of it
605
695
  msgid "Connecting…"
606
696
  msgstr "Connecting…"
607
697
 
608
- #. @context: Settings form field for the public content language
609
- #: src/ui/dash/settings/GeneralContent.tsx
698
+ #. @context: Language settings field — the site's language
699
+ #. @context: Setup form field - site content language
700
+ #. @context: Setup form field - site content language
701
+ #: src/routes/auth/setup.tsx
702
+ #: src/routes/auth/setup.tsx
703
+ #: src/ui/dash/settings/LanguageContent.tsx
610
704
  msgid "Content language"
611
705
  msgstr "Content language"
612
706
 
707
+ #. @context: Settings item description for language
708
+ #: src/ui/dash/settings/SettingsRootContent.tsx
709
+ msgid "Content language, dashboard language, multilingual"
710
+ msgstr "Content language, dashboard language, multilingual"
711
+
712
+ #. @context: Setup submit button on the first screen, which is followed by the site screen
713
+ #: src/routes/auth/setup.tsx
714
+ msgid "Continue"
715
+ msgstr "Continue"
716
+
613
717
  #. @context: Slate color theme preview title
614
718
  #: src/ui/dash/appearance/ColorThemeContent.tsx
615
719
  msgid "Cool blue-gray"
@@ -670,6 +774,11 @@ msgstr "Couldn't create the collection. Check the details and try again."
670
774
  msgid "Couldn't create the page. Check the details and try again."
671
775
  msgstr "Couldn't create the page. Check the details and try again."
672
776
 
777
+ #. @context: Error toast when account creation fails
778
+ #: src/routes/auth/setup.tsx
779
+ msgid "Couldn't create your account. Check the details and try again."
780
+ msgstr "Couldn't create your account. Check the details and try again."
781
+
673
782
  #. @context: Error toast when nav delete fails
674
783
  #: src/ui/dash/appearance/NavigationContent.tsx
675
784
  msgid "Couldn't delete. Try again in a moment."
@@ -755,6 +864,11 @@ msgstr "Create one on GitHub"
755
864
  msgid "Create Page"
756
865
  msgstr "Create Page"
757
866
 
867
+ #. @context: Setup page description on the first screen, which asks only for credentials
868
+ #: src/routes/auth/setup.tsx
869
+ msgid "Create the account you write from."
870
+ msgstr "Create the account you write from."
871
+
758
872
  #. @context: Help text for GitHub repository input on GitHub Sync settings, telling users they must create the repo themselves
759
873
  #: src/ui/dash/settings/GitHubSyncContent.tsx
760
874
  msgid "Create the repository on GitHub first — it can be empty."
@@ -825,8 +939,13 @@ msgstr "Danger Zone"
825
939
  msgid "Dark"
826
940
  msgstr "Dark"
827
941
 
828
- #. @context: Settings form field for the admin interface language
829
- #: src/ui/dash/settings/GeneralContent.tsx
942
+ #. @context: Language settings section for author-facing settings
943
+ #: src/ui/dash/settings/LanguageContent.tsx
944
+ msgid "Dashboard"
945
+ msgstr "Dashboard"
946
+
947
+ #. @context: Language settings field — the admin UI language
948
+ #: src/ui/dash/settings/LanguageContent.tsx
830
949
  msgid "Dashboard language"
831
950
  msgstr "Dashboard language"
832
951
 
@@ -893,6 +1012,11 @@ msgstr "Demo mode hides sessions, password changes, and account deletion. Export
893
1012
  msgid "Demo sites always stay hidden from search engines."
894
1013
  msgstr "Demo sites always stay hidden from search engines."
895
1014
 
1015
+ #. @context: Help text explaining that Discover is locked off in demo mode
1016
+ #: src/ui/dash/settings/GeneralContent.tsx
1017
+ msgid "Demo sites are never listed in Discover."
1018
+ msgstr "Demo sites are never listed in Discover."
1019
+
896
1020
  #. @context: Color theme preview collection label
897
1021
  #: src/ui/dash/appearance/ColorThemeContent.tsx
898
1022
  msgid "Design"
@@ -922,6 +1046,16 @@ msgstr "Disconnect from GitHub? The webhook will be removed. Your repository con
922
1046
  msgid "Disconnect Telegram? You can reconnect any time with a new binding code."
923
1047
  msgstr "Disconnect Telegram? You can reconnect any time with a new binding code."
924
1048
 
1049
+ #. @context: Link text at the end of the help line under the Discover checkbox, leading to the directory's page on how blogs are listed: joining, review, and what takes a blog off. This run of text is rendered as the link, so translate it as it should read inside that sentence.
1050
+ #: src/ui/dash/settings/discover-copy.ts
1051
+ msgid "Discover community rules"
1052
+ msgstr "Discover community rules"
1053
+
1054
+ #. @context: Help text explaining that Discover cannot work while Atom feeds are disabled
1055
+ #: src/ui/dash/settings/GeneralContent.tsx
1056
+ msgid "Discover reads your Atom feed, so it needs feeds turned on."
1057
+ msgstr "Discover reads your Atom feed, so it needs feeds turned on."
1058
+
925
1059
  #. @context: Checkbox to show avatar in the site header
926
1060
  #: src/ui/dash/settings/AvatarContent.tsx
927
1061
  msgid "Display avatar in my site header"
@@ -1007,6 +1141,11 @@ msgstr "Edit the multi-line footer rendered at the bottom of public pages."
1007
1141
  msgid "Edit the multi-line introduction used on your home page and in metadata."
1008
1142
  msgstr "Edit the multi-line introduction used on your home page and in metadata."
1009
1143
 
1144
+ #. @context: Setup/signin form field - email
1145
+ #: src/routes/auth/setup.tsx
1146
+ msgid "Email"
1147
+ msgstr "Email"
1148
+
1010
1149
  #. @context: GitHub sync picker — shown when the selected repo has no commits
1011
1150
  #: src/routes/dash/settings.tsx
1012
1151
  msgid "Empty repository. Ready to connect."
@@ -1061,6 +1200,11 @@ msgstr "Featured feed"
1061
1200
  msgid "Featured posts"
1062
1201
  msgstr "Featured posts"
1063
1202
 
1203
+ #. @context: Discover status line right after a successful announcement, while the first crawl is still due
1204
+ #: src/ui/dash/settings/GeneralContent.tsx
1205
+ msgid "Feed address sent. A directory reads a newly announced feed within {hours} hours."
1206
+ msgstr "Feed address sent. A directory reads a newly announced feed within {hours} hours."
1207
+
1064
1208
  #. @context: Toast after saving feed settings
1065
1209
  #: src/routes/dash/settings.tsx
1066
1210
  msgid "Feed settings updated."
@@ -1091,12 +1235,10 @@ msgstr "Fine-grained styling overrides"
1091
1235
  msgid "Fixed feed URLs"
1092
1236
  msgstr "Fixed feed URLs"
1093
1237
 
1094
- #. @context: CJK font fallback option that uses the configured content language
1095
- #. @context: Config Editor enum option for automatic CJK font fallback
1096
1238
  #. @context: Config Editor enum option for no explicit dashboard language
1239
+ #. @context: Dashboard language option that follows the site language
1097
1240
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1098
- #: src/ui/dash/settings/ConfigEditorContent.tsx
1099
- #: src/ui/dash/settings/GeneralContent.tsx
1241
+ #: src/ui/dash/settings/LanguageContent.tsx
1100
1242
  msgid "Follow content language"
1101
1243
  msgstr "Follow content language"
1102
1244
 
@@ -1122,6 +1264,11 @@ msgstr "Font theme"
1122
1264
  msgid "Font Theme"
1123
1265
  msgstr "Font Theme"
1124
1266
 
1267
+ #. @context: Config Editor archive layout enum option
1268
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
1269
+ msgid "Full posts"
1270
+ msgstr "Full posts"
1271
+
1125
1272
  #. @context: Breadcrumb label
1126
1273
  #. @context: Settings item — general settings
1127
1274
  #. @context: Settings section heading
@@ -1150,6 +1297,11 @@ msgstr "Get a new code"
1150
1297
  msgid "GitHub Sync"
1151
1298
  msgstr "GitHub Sync"
1152
1299
 
1300
+ #. @context: Help text for the multilingual content toggle
1301
+ #: src/ui/dash/settings/LanguageContent.tsx
1302
+ msgid "Give each language its own home page, archive, and feed. Once it's on, you pick a language when you publish, and can link an existing post to a version of it in another language."
1303
+ msgstr "Give each language its own home page, archive, and feed. Once it's on, you pick a language when you publish, and can link an existing post to a version of it in another language."
1304
+
1153
1305
  #. @context: Section label for nav items shown in header
1154
1306
  #: src/ui/dash/appearance/NavigationContent.tsx
1155
1307
  msgid "Header"
@@ -1160,11 +1312,6 @@ msgstr "Header"
1160
1312
  msgid "Header links, built-in destinations, and overflow menu"
1161
1313
  msgstr "Header links, built-in destinations, and overflow menu"
1162
1314
 
1163
- #. @context: Description for the RSS system navigation toggle. {feed} is either Latest or Featured.
1164
- #: src/ui/dash/appearance/NavigationContent.tsx
1165
- msgid "Header RSS points to your {feed} feed (/feed). Change what /feed returns in General."
1166
- msgstr "Header RSS points to your {feed} feed (/feed). Change what /feed returns in General."
1167
-
1168
1315
  #. @context: Fallback color theme preview body
1169
1316
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1170
1317
  msgid "Headings, body text, and links in this theme."
@@ -1222,6 +1369,11 @@ msgstr "Install the GitHub App to grant access without managing personal tokens.
1222
1369
  msgid "Integrations"
1223
1370
  msgstr "Integrations"
1224
1371
 
1372
+ #. @context: Name of the Jant blog directory. Appears inside the Discover checkbox label, and in the help line under it as the link to the directory.
1373
+ #: src/ui/dash/settings/discover-copy.ts
1374
+ msgid "Jant Discover"
1375
+ msgstr "Jant Discover"
1376
+
1225
1377
  #. @context: Validation error for a long page slug
1226
1378
  #: src/ui/dash/appearance/NavigationContent.tsx
1227
1379
  msgid "Keep the page address under 200 characters."
@@ -1247,15 +1399,37 @@ msgstr "Label and URL are required"
1247
1399
  msgid "Label is required"
1248
1400
  msgstr "Label is required"
1249
1401
 
1250
- #. @context: Settings subsection heading for language and time zone fields
1251
- #: src/ui/dash/settings/GeneralContent.tsx
1252
- msgid "Language & Time"
1253
- msgstr "Language & Time"
1402
+ #. @context: Breadcrumb label
1403
+ #. @context: Settings item — language settings
1404
+ #: src/routes/dash/settings.tsx
1405
+ #: src/ui/dash/settings/SettingsRootContent.tsx
1406
+ msgid "Language"
1407
+ msgstr "Language"
1408
+
1409
+ #. @context: Toast after adding a content language
1410
+ #: src/routes/dash/settings.tsx
1411
+ msgid "Language added."
1412
+ msgstr "Language added."
1413
+
1414
+ #. @context: Toast after removing a content language
1415
+ #: src/routes/dash/settings.tsx
1416
+ msgid "Language removed."
1417
+ msgstr "Language removed."
1254
1418
 
1255
- #. @context: Toast after saving language and time settings
1419
+ #. @context: Toast after removing the last additional content language
1256
1420
  #: src/routes/dash/settings.tsx
1257
- msgid "Language and time updated."
1258
- msgstr "Language and time updated."
1421
+ msgid "Language removed. Multilingual content is off."
1422
+ msgstr "Language removed. Multilingual content is off."
1423
+
1424
+ #. @context: Toast after saving a language setting
1425
+ #: src/routes/dash/settings.tsx
1426
+ msgid "Language updated."
1427
+ msgstr "Language updated."
1428
+
1429
+ #. @context: Label above the list of the site's languages
1430
+ #: src/ui/dash/settings/LanguageContent.tsx
1431
+ msgid "Languages"
1432
+ msgstr "Languages"
1259
1433
 
1260
1434
  #. @context: Label for last push commit SHA on GitHub Sync status
1261
1435
  #: src/ui/dash/settings/GitHubSyncContent.tsx
@@ -1344,6 +1518,36 @@ msgstr "Link"
1344
1518
  msgid "Link added to navigation."
1345
1519
  msgstr "Link added to navigation."
1346
1520
 
1521
+ #. @context: Description for the featured system navigation toggle
1522
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1523
+ msgid "Link to posts you've marked as featured."
1524
+ msgstr "Link to posts you've marked as featured."
1525
+
1526
+ #. @context: Description for the archive system navigation toggle
1527
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1528
+ msgid "Link to the post archive"
1529
+ msgstr "Link to the post archive"
1530
+
1531
+ #. @context: Description for the collections system navigation toggle
1532
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1533
+ msgid "Link to your collections page"
1534
+ msgstr "Link to your collections page"
1535
+
1536
+ #. @context: Description for the latest system navigation toggle
1537
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1538
+ msgid "Link to your latest posts. Your homepage shows this feed."
1539
+ msgstr "Link to your latest posts. Your homepage shows this feed."
1540
+
1541
+ #. @context: Description for the RSS system navigation toggle. {feed} is either Latest or Featured. Pairs with the Subscribe toggle's description.
1542
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1543
+ msgid "Links straight to /feed — the raw Atom file, currently your {feed} feed. Best for readers who already use a feed reader."
1544
+ msgstr "Links straight to /feed — the raw Atom file, currently your {feed} feed. Best for readers who already use a feed reader."
1545
+
1546
+ #. @context: Description for the Subscribe system navigation toggle. Pairs with the RSS toggle's description.
1547
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
1548
+ msgid "Links to /subscribe, a page listing your feeds with copy buttons. Best for readers who don't already use one."
1549
+ msgstr "Links to /subscribe, a page listing your feeds with copy buttons. Best for readers who don't already use one."
1550
+
1347
1551
  #. @context: Label for list posts curl example
1348
1552
  #: src/ui/dash/settings/ApiTokensContent.tsx
1349
1553
  msgid "List posts:"
@@ -1369,6 +1573,11 @@ msgstr "Main feed"
1369
1573
  msgid "Main RSS feed"
1370
1574
  msgstr "Main RSS feed"
1371
1575
 
1576
+ #. @context: Button that moves a language to the site's root address
1577
+ #: src/ui/dash/settings/LanguageContent.tsx
1578
+ msgid "Make primary"
1579
+ msgstr "Make primary"
1580
+
1372
1581
  #. @context: Settings item label for opening the hosted account management page
1373
1582
  #: src/ui/dash/settings/AccountMenuContent.tsx
1374
1583
  msgid "Manage Account"
@@ -1439,6 +1648,31 @@ msgstr "More actions"
1439
1648
  msgid "More options are available after you create it."
1440
1649
  msgstr "More options are available after you create it."
1441
1650
 
1651
+ #. @context: Language settings toggle for multilingual content
1652
+ #: src/ui/dash/settings/LanguageContent.tsx
1653
+ msgid "Multilingual content"
1654
+ msgstr "Multilingual content"
1655
+
1656
+ #. @context: Toast after turning multilingual content off
1657
+ #: src/routes/dash/settings.tsx
1658
+ msgid "Multilingual content is off. Your languages are still saved."
1659
+ msgstr "Multilingual content is off. Your languages are still saved."
1660
+
1661
+ #. @context: Toast after turning multilingual content on with no existing posts
1662
+ #: src/routes/dash/settings.tsx
1663
+ msgid "Multilingual content is on."
1664
+ msgstr "Multilingual content is on."
1665
+
1666
+ #. @context: Toast after turning multilingual content on with existing posts
1667
+ #: src/routes/dash/settings.tsx
1668
+ msgid "Multilingual content is on. {count, plural, one {# post was marked} other {# posts were marked}} as {language}."
1669
+ msgstr "Multilingual content is on. {count, plural, one {# post was marked} other {# posts were marked}} as {language}."
1670
+
1671
+ #. @context: Link to multilingual documentation on the Language settings page
1672
+ #: src/ui/dash/settings/LanguageContent.tsx
1673
+ msgid "Multilingual guide"
1674
+ msgstr "Multilingual guide"
1675
+
1442
1676
  #. @context: Clay color theme preview body
1443
1677
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1444
1678
  msgid "Muted red-brown background, earthy and warm."
@@ -1451,8 +1685,8 @@ msgstr "My Collection"
1451
1685
 
1452
1686
  #. @context: Settings item description for general
1453
1687
  #: src/ui/dash/settings/SettingsRootContent.tsx
1454
- msgid "Name, metadata, language, and search defaults"
1455
- msgstr "Name, metadata, language, and search defaults"
1688
+ msgid "Name, visibility, feeds, and time zone"
1689
+ msgstr "Name, visibility, feeds, and time zone"
1456
1690
 
1457
1691
  #. @context: Breadcrumb label
1458
1692
  #. @context: Settings item — navigation settings
@@ -1461,6 +1695,11 @@ msgstr "Name, metadata, language, and search defaults"
1461
1695
  msgid "Navigation"
1462
1696
  msgstr "Navigation"
1463
1697
 
1698
+ #. @context: Shown for a page on the site that can only be a link, such as an archive URL
1699
+ #: src/ui/dash/appearance/NavigationContent.tsx
1700
+ msgid "Navigation holds that address as a link."
1701
+ msgstr "Navigation holds that address as a link."
1702
+
1464
1703
  #. @context: Section heading for nav items
1465
1704
  #: src/ui/dash/appearance/NavigationContent.tsx
1466
1705
  msgid "Navigation items"
@@ -1540,8 +1779,10 @@ msgstr "No custom URLs yet. Create one to add redirects or custom paths for post
1540
1779
  msgid "No file selected. Choose a file to upload."
1541
1780
  msgstr "No file selected. Choose a file to upload."
1542
1781
 
1543
- #. @context: Empty state shown when the language search filters out every entry
1544
- #: src/ui/dash/settings/GeneralContent.tsx
1782
+ #. @context: Empty state in the language picker
1783
+ #. @context: Empty state in the language picker
1784
+ #: src/routes/auth/setup.tsx
1785
+ #: src/ui/dash/settings/LanguageContent.tsx
1545
1786
  msgid "No matches."
1546
1787
  msgstr "No matches."
1547
1788
 
@@ -1565,6 +1806,11 @@ msgstr "No pages available. Create one to add it to navigation."
1565
1806
  msgid "No repositories match."
1566
1807
  msgstr "No repositories match."
1567
1808
 
1809
+ #. @context: Discover status line before the site has ever announced itself. The button under the lines is how it is sent.
1810
+ #: src/ui/dash/settings/GeneralContent.tsx
1811
+ msgid "Not announced yet. No directory has been told this site exists."
1812
+ msgstr "Not announced yet. No directory has been told this site exists."
1813
+
1568
1814
  #. @context: Config Editor linked setting status
1569
1815
  #. @context: Config Editor linked setting status
1570
1816
  #: src/ui/dash/settings/ConfigEditorContent.tsx
@@ -1584,16 +1830,36 @@ msgstr "Not synced yet"
1584
1830
  msgid "Note"
1585
1831
  msgstr "Note"
1586
1832
 
1833
+ #. @context: Shown when a pasted address matches no page on the site
1834
+ #: src/ui/dash/appearance/NavigationContent.tsx
1835
+ msgid "Nothing at {address}. Check it, or search by title."
1836
+ msgstr "Nothing at {address}. Check it, or search by title."
1837
+
1587
1838
  #. @context: Config Editor empty search state
1588
1839
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1589
1840
  msgid "Nothing matches this search. Try a different name or description."
1590
1841
  msgstr "Nothing matches this search. Try a different name or description."
1591
1842
 
1843
+ #. @context: Discover status line when the site does not meet the directory's threshold yet. Stated as jant.me's rule, because a directory of your own may decide differently.
1844
+ #: src/ui/dash/settings/GeneralContent.tsx
1845
+ msgid "Nothing published yet. jant.me lists a blog once it has {minCount, plural, one {one public post} other {# public posts}}."
1846
+ msgstr "Nothing published yet. jant.me lists a blog once it has {minCount, plural, one {one public post} other {# public posts}}."
1847
+
1592
1848
  #. @context: Tufte color theme preview body
1593
1849
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1594
1850
  msgid "Off-white paper with a deep forest-green accent."
1595
1851
  msgstr "Off-white paper with a deep forest-green accent."
1596
1852
 
1853
+ #. @context: Status badge — multilingual content is on
1854
+ #: src/ui/dash/settings/LanguageContent.tsx
1855
+ msgid "On"
1856
+ msgstr "On"
1857
+
1858
+ #. @context: Title of the stamping warning in the multilingual dialog
1859
+ #: src/ui/dash/settings/LanguageContent.tsx
1860
+ msgid "One-time change to your existing posts"
1861
+ msgstr "One-time change to your existing posts"
1862
+
1597
1863
  #. @context: Caption inside the manual Telegram binding fallback. {linkOpen}/{linkClose} wrap the bot username as a t.me link — keep them around the @username token in translations.
1598
1864
  #: src/ui/dash/settings/TelegramContent.tsx
1599
1865
  msgid "Open {linkOpen}@{botUsername}{linkClose} and send:"
@@ -1616,16 +1882,31 @@ msgstr "Open Telegram to connect"
1616
1882
  msgid "Open the bot and send the binding code, then anything you message it becomes a note."
1617
1883
  msgstr "Open the bot and send the binding code, then anything you message it becomes a note."
1618
1884
 
1885
+ #. @context: Accessible label on a language row's actions menu trigger
1886
+ #: src/ui/dash/settings/LanguageContent.tsx
1887
+ msgid "Options for {language}"
1888
+ msgstr "Options for {language}"
1889
+
1619
1890
  #. @context: Separator between the QR code and the deep-link button on the Telegram connect page
1620
1891
  #: src/ui/dash/settings/TelegramContent.tsx
1621
1892
  msgid "or"
1622
1893
  msgstr "or"
1623
1894
 
1895
+ #. @context: Link to the directory's manual submission form, shown only when the automatic announcement failed
1896
+ #: src/ui/dash/settings/GeneralContent.tsx
1897
+ msgid "Or submit your address by hand"
1898
+ msgstr "Or submit your address by hand"
1899
+
1624
1900
  #. @context: Ember color theme preview body
1625
1901
  #: src/ui/dash/appearance/ColorThemeContent.tsx
1626
1902
  msgid "Orange-tinted background. The warmest palette."
1627
1903
  msgstr "Orange-tinted background. The warmest palette."
1628
1904
 
1905
+ #. @context: Label for the list of non-primary languages
1906
+ #: src/ui/dash/settings/LanguageContent.tsx
1907
+ msgid "Other languages"
1908
+ msgstr "Other languages"
1909
+
1629
1910
  #. @context: GitHub sync picker — placeholder text showing the expected input shape
1630
1911
  #: src/routes/dash/settings.tsx
1631
1912
  msgid "owner/repo"
@@ -1673,6 +1954,8 @@ msgstr "Palette, surface tone, and overall mood"
1673
1954
 
1674
1955
  #. @context: Breadcrumb label
1675
1956
  #. @context: Settings item — password settings
1957
+ #. @context: Setup/signin form field - password
1958
+ #: src/routes/auth/setup.tsx
1676
1959
  #: src/routes/dash/settings.tsx
1677
1960
  #: src/ui/dash/settings/AccountMenuContent.tsx
1678
1961
  msgid "Password"
@@ -1740,11 +2023,31 @@ msgstr "Pinned"
1740
2023
  msgid "Post"
1741
2024
  msgstr "Post"
1742
2025
 
2026
+ #. @context: Reassurance line at the bottom of the multilingual dialog
2027
+ #: src/ui/dash/settings/LanguageContent.tsx
2028
+ msgid "Post addresses do not change, and you can turn this off again at any time."
2029
+ msgstr "Post addresses do not change, and you can turn this off again at any time."
2030
+
1743
2031
  #. @context: Settings item description for Telegram integration
1744
2032
  #: src/ui/dash/settings/SettingsRootContent.tsx
1745
2033
  msgid "Post notes by messaging a Telegram bot"
1746
2034
  msgstr "Post notes by messaging a Telegram bot"
1747
2035
 
2036
+ #. @context: Badge on the language served at the root address
2037
+ #: src/ui/dash/settings/LanguageContent.tsx
2038
+ msgid "Primary"
2039
+ msgstr "Primary"
2040
+
2041
+ #. @context: Label the content language field takes once multilingual is on
2042
+ #: src/ui/dash/settings/LanguageContent.tsx
2043
+ msgid "Primary language"
2044
+ msgstr "Primary language"
2045
+
2046
+ #. @context: Toast after changing the primary language
2047
+ #: src/routes/dash/settings.tsx
2048
+ msgid "Primary language changed."
2049
+ msgstr "Primary language changed."
2050
+
1748
2051
  #. @context: GitHub sync picker — badge next to private repos
1749
2052
  #: src/routes/dash/settings.tsx
1750
2053
  msgid "Private"
@@ -1785,21 +2088,11 @@ msgstr "Push all posts to GitHub right now instead of waiting for the next autom
1785
2088
  msgid "QR code linking to the Telegram bot"
1786
2089
  msgstr "QR code linking to the Telegram bot"
1787
2090
 
1788
- #. @context: Archive custom URL query params field
1789
- #: src/routes/dash/custom-urls.tsx
1790
- msgid "Query Parameters"
1791
- msgstr "Query Parameters"
1792
-
1793
2091
  #. @context: Post format badge - quote
1794
2092
  #: src/ui/dash/FormatBadge.tsx
1795
2093
  msgid "Quote"
1796
2094
  msgstr "Quote"
1797
2095
 
1798
- #. @context: Lead text before a live <html lang> preview of the content language
1799
- #: src/ui/dash/settings/GeneralContent.tsx
1800
- msgid "Readers and search engines see"
1801
- msgstr "Readers and search engines see"
1802
-
1803
2096
  #. @context: Heading above recent pages in the page picker
1804
2097
  #: src/ui/dash/appearance/NavigationContent.tsx
1805
2098
  msgid "Recently updated"
@@ -1834,6 +2127,16 @@ msgstr "Refresh repository list"
1834
2127
  msgid "Remove"
1835
2128
  msgstr "Remove"
1836
2129
 
2130
+ #. @context: Accessible label on the button removing a language
2131
+ #: src/ui/dash/settings/LanguageContent.tsx
2132
+ msgid "Remove {language}"
2133
+ msgstr "Remove {language}"
2134
+
2135
+ #. @context: Confirm button when removing the last additional language
2136
+ #: src/ui/dash/settings/LanguageContent.tsx
2137
+ msgid "Remove and turn off"
2138
+ msgstr "Remove and turn off"
2139
+
1837
2140
  #. @context: Button to remove the saved Telegram bot token
1838
2141
  #: src/ui/dash/settings/TelegramContent.tsx
1839
2142
  msgid "Remove bot"
@@ -1914,10 +2217,12 @@ msgstr "Sandy background with a green accent."
1914
2217
  #. @context: Button to save settings
1915
2218
  #. @context: Button to save settings changes
1916
2219
  #. @context: Save nav item changes
2220
+ #. @context: Settings save button
1917
2221
  #: src/ui/dash/appearance/CodeInjectionContent.tsx
1918
2222
  #: src/ui/dash/appearance/NavigationContent.tsx
1919
2223
  #: src/ui/dash/settings/AvatarContent.tsx
1920
2224
  #: src/ui/dash/settings/GeneralContent.tsx
2225
+ #: src/ui/dash/settings/LanguageContent.tsx
1921
2226
  msgid "Save"
1922
2227
  msgstr "Save"
1923
2228
 
@@ -1937,25 +2242,32 @@ msgid "Saved"
1937
2242
  msgstr "Saved"
1938
2243
 
1939
2244
  #. @context: Config Editor row save status
2245
+ #. @context: Settings save in progress
1940
2246
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2247
+ #: src/ui/dash/settings/LanguageContent.tsx
1941
2248
  msgid "Saving…"
1942
2249
  msgstr "Saving…"
1943
2250
 
1944
- #. @context: Settings section heading for search engine indexing settings
1945
- #: src/ui/dash/settings/GeneralContent.tsx
1946
- msgid "Search"
1947
- msgstr "Search"
1948
-
1949
2251
  #. @context: Config Editor page description
1950
2252
  #: src/ui/dash/settings/ConfigEditorContent.tsx
1951
2253
  msgid "Search and edit runtime settings. Changes apply immediately; reset restores the environment or built-in default."
1952
2254
  msgstr "Search and edit runtime settings. Changes apply immediately; reset restores the environment or built-in default."
1953
2255
 
2256
+ #. @context: Shown under the Jant Discover checkbox when the site has turned search engines away and has never answered Discover itself, which is what unticks the box. Says why the box moved, and that it is still the owner's to tick.
2257
+ #: src/ui/dash/settings/GeneralContent.tsx
2258
+ msgid "Search engine indexing is off, so this site is not listed by default. Ticking the box above lists it anyway."
2259
+ msgstr "Search engine indexing is off, so this site is not listed by default. Ticking the box above lists it anyway."
2260
+
1954
2261
  #. @context: Placeholder for the navigation page search
1955
2262
  #: src/ui/dash/appearance/NavigationContent.tsx
1956
2263
  msgid "Search pages"
1957
2264
  msgstr "Search pages"
1958
2265
 
2266
+ #. @context: Placeholder for the navigation page search, which also accepts a pasted URL or path
2267
+ #: src/ui/dash/appearance/NavigationContent.tsx
2268
+ msgid "Search pages, or paste an address"
2269
+ msgstr "Search pages, or paste an address"
2270
+
1959
2271
  #. @context: GitHub sync picker — search input placeholder
1960
2272
  #: src/routes/dash/settings.tsx
1961
2273
  msgid "Search repositories"
@@ -1980,8 +2292,10 @@ msgstr "Search settings"
1980
2292
  msgid "Search settings updated."
1981
2293
  msgstr "Search settings updated."
1982
2294
 
1983
- #. @context: Placeholder inside the language combobox search field
1984
- #: src/ui/dash/settings/GeneralContent.tsx
2295
+ #. @context: Placeholder in the language picker search box
2296
+ #. @context: Placeholder in the language picker search box
2297
+ #: src/routes/auth/setup.tsx
2298
+ #: src/ui/dash/settings/LanguageContent.tsx
1985
2299
  msgid "Search…"
1986
2300
  msgstr "Search…"
1987
2301
 
@@ -2047,6 +2361,11 @@ msgstr "Set results per search page; reset to inherit the main page size."
2047
2361
  msgid "Set the default number of items shown per page."
2048
2362
  msgstr "Set the default number of items shown per page."
2049
2363
 
2364
+ #. @context: Setup heading on the second self-hosted screen, which asks for the site's name and language
2365
+ #: src/routes/auth/setup.tsx
2366
+ msgid "Set up your site"
2367
+ msgstr "Set up your site"
2368
+
2050
2369
  #. @context: Breadcrumb label
2051
2370
  #. @context: Page title for the settings home page
2052
2371
  #: src/routes/dash/settings.tsx
@@ -2054,6 +2373,11 @@ msgstr "Set the default number of items shown per page."
2054
2373
  msgid "Settings"
2055
2374
  msgstr "Settings"
2056
2375
 
2376
+ #. @context: Name of the first-run setup screen — shown above the setup card and as the browser tab title
2377
+ #: src/routes/auth/setup.tsx
2378
+ msgid "Setup"
2379
+ msgstr "Setup"
2380
+
2057
2381
  #. @context: Checkbox for showing the optional Jant credit link on the home page
2058
2382
  #: src/ui/dash/settings/GeneralContent.tsx
2059
2383
  msgid "Show \"Build with Jant\" at the bottom of the home page"
@@ -2084,6 +2408,11 @@ msgstr "Show the site avatar in the public header."
2084
2408
  msgid "Showing {shown} of {total}"
2085
2409
  msgstr "Showing {shown} of {total}"
2086
2410
 
2411
+ #. @context: Description for the settings system navigation toggle
2412
+ #: src/ui/dash/appearance/system-nav-descriptions.ts
2413
+ msgid "Shows 'Settings' when logged in, 'Sign in' when logged out"
2414
+ msgstr "Shows 'Settings' when logged in, 'Sign in' when logged out"
2415
+
2087
2416
  #. @context: Settings link — sign out action
2088
2417
  #: src/ui/dash/settings/SettingsRootContent.tsx
2089
2418
  msgid "Sign Out"
@@ -2099,9 +2428,11 @@ msgstr "Sign-in, export, and deletion"
2099
2428
  msgid "Signed in {date}"
2100
2429
  msgstr "Signed in {date}"
2101
2430
 
2431
+ #. @context: Language settings section for reader-facing settings
2102
2432
  #. @context: Settings group label for site settings
2103
2433
  #. @context: Settings subsection heading for basic site fields
2104
2434
  #: src/ui/dash/settings/GeneralContent.tsx
2435
+ #: src/ui/dash/settings/LanguageContent.tsx
2105
2436
  #: src/ui/dash/settings/SettingsRootContent.tsx
2106
2437
  msgid "Site"
2107
2438
  msgstr "Site"
@@ -2119,6 +2450,8 @@ msgid "Site Header"
2119
2450
  msgstr "Site Header"
2120
2451
 
2121
2452
  #. @context: Settings form field
2453
+ #. @context: Setup form field - site name
2454
+ #: src/routes/auth/setup.tsx
2122
2455
  #: src/ui/dash/settings/GeneralContent.tsx
2123
2456
  msgid "Site Name"
2124
2457
  msgstr "Site Name"
@@ -2128,6 +2461,18 @@ msgstr "Site Name"
2128
2461
  msgid "Site settings updated."
2129
2462
  msgstr "Site settings updated."
2130
2463
 
2464
+ #. @context: Settings section heading covering search engine indexing and the Jant Discover directory
2465
+ #: src/ui/dash/settings/GeneralContent.tsx
2466
+ msgid "Site visibility"
2467
+ msgstr "Site visibility"
2468
+
2469
+ #. @context: Toast after saving the site visibility settings
2470
+ #. @context: Toast after saving the site visibility settings
2471
+ #: src/routes/dash/settings.tsx
2472
+ #: src/routes/dash/settings.tsx
2473
+ msgid "Site visibility updated."
2474
+ msgstr "Site visibility updated."
2475
+
2131
2476
  #. @context: Settings item description for code injection
2132
2477
  #: src/ui/dash/settings/SettingsRootContent.tsx
2133
2478
  msgid "Site-wide HTML for analytics and widgets"
@@ -2148,6 +2493,21 @@ msgstr "Soft green"
2148
2493
  msgid "Soft ivory"
2149
2494
  msgstr "Soft ivory"
2150
2495
 
2496
+ #. @context: Fallback validation error for setup form
2497
+ #: src/routes/auth/setup.tsx
2498
+ msgid "Something doesn't look right. Check the form and try again."
2499
+ msgstr "Something doesn't look right. Check the form and try again."
2500
+
2501
+ #. @context: Setup submit button on the last screen, after which the site is live
2502
+ #: src/routes/auth/setup.tsx
2503
+ msgid "Start writing"
2504
+ msgstr "Start writing"
2505
+
2506
+ #. @context: How far along first-run setup is, shown beside the screen's name on a self-hosted install
2507
+ #: src/routes/auth/setup.tsx
2508
+ msgid "Step {current} of {total}"
2509
+ msgstr "Step {current} of {total}"
2510
+
2151
2511
  #. @context: Description for the Telegram disconnect action
2152
2512
  #: src/ui/dash/settings/TelegramContent.tsx
2153
2513
  msgid "Stop accepting posts from Telegram. Your existing notes stay published."
@@ -2158,6 +2518,11 @@ msgstr "Stop accepting posts from Telegram. Your existing notes stay published."
2158
2518
  msgid "Suggested links"
2159
2519
  msgstr "Suggested links"
2160
2520
 
2521
+ #. @context: Confirm button in the change-primary-language dialog
2522
+ #: src/ui/dash/settings/LanguageContent.tsx
2523
+ msgid "Switch"
2524
+ msgstr "Switch"
2525
+
2161
2526
  #. @context: Button to trigger a full content push to GitHub on GitHub Sync settings
2162
2527
  #: src/ui/dash/settings/GitHubSyncContent.tsx
2163
2528
  msgid "Sync Now"
@@ -2199,6 +2564,11 @@ msgstr "Telegram is set up, but the bot couldn't be reached. Check the bot token
2199
2564
  msgid "That address is already in use. Choose another one."
2200
2565
  msgstr "That address is already in use. Choose another one."
2201
2566
 
2567
+ #. @context: Shown when a pasted address points off the site
2568
+ #: src/ui/dash/appearance/NavigationContent.tsx
2569
+ msgid "That address is on another site. Navigation holds it as a link."
2570
+ msgstr "That address is on another site. Navigation holds it as a link."
2571
+
2202
2572
  #. @context: Validation error for a reserved page slug
2203
2573
  #: src/ui/dash/appearance/NavigationContent.tsx
2204
2574
  msgid "That address is reserved. Choose another one."
@@ -2209,6 +2579,21 @@ msgstr "That address is reserved. Choose another one."
2209
2579
  msgid "That font theme isn't available. Pick another one."
2210
2580
  msgstr "That font theme isn't available. Pick another one."
2211
2581
 
2582
+ #. @context: Shown when a pasted address resolves to an untitled post
2583
+ #: src/ui/dash/appearance/NavigationContent.tsx
2584
+ msgid "That page has no title yet, so a menu has nothing to show."
2585
+ msgstr "That page has no title yet, so a menu has nothing to show."
2586
+
2587
+ #. @context: Shown when a pasted address resolves to a draft
2588
+ #: src/ui/dash/appearance/NavigationContent.tsx
2589
+ msgid "That page is a draft. Publish it, then add it."
2590
+ msgstr "That page is a draft. Publish it, then add it."
2591
+
2592
+ #. @context: Shown when a pasted address resolves to a private page
2593
+ #: src/ui/dash/appearance/NavigationContent.tsx
2594
+ msgid "That page is private, so nobody could open it from a menu."
2595
+ msgstr "That page is private, so nobody could open it from a menu."
2596
+
2212
2597
  #. @context: Error toast when selected theme is not valid
2213
2598
  #: src/routes/dash/settings.tsx
2214
2599
  msgid "That theme isn't available. Pick another one."
@@ -2224,20 +2609,35 @@ msgstr "The cleanest, most neutral option."
2224
2609
  msgid "The default. Calm and easy for long reading."
2225
2610
  msgstr "The default. Calm and easy for long reading."
2226
2611
 
2227
- #. @context: Help text under the dashboard language picker
2612
+ #. @context: Discover status line when the announcement failed. {reason} is the error, such as an HTTP status or a network message.
2228
2613
  #: src/ui/dash/settings/GeneralContent.tsx
2229
- msgid "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
2230
- msgstr "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
2614
+ msgid "The directory could not be reached: {reason}"
2615
+ msgstr "The directory could not be reached: {reason}"
2616
+
2617
+ #. @context: Help text for the dashboard language field
2618
+ #: src/ui/dash/settings/LanguageContent.tsx
2619
+ msgid "The language of your admin pages. Only you see this."
2620
+ msgstr "The language of your admin pages. Only you see this."
2231
2621
 
2232
2622
  #. @context: Config Editor setting description
2233
2623
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2234
2624
  msgid "The language used by the private Jant dashboard."
2235
2625
  msgstr "The language used by the private Jant dashboard."
2236
2626
 
2237
- #. @context: Help text under the content language picker
2238
- #: src/ui/dash/settings/GeneralContent.tsx
2239
- msgid "The language your posts are written in. Announced to readers and search engines through HTML lang and your RSS feed. Any BCP 47 tag works."
2240
- msgstr "The language your posts are written in. Announced to readers and search engines through HTML lang and your RSS feed. Any BCP 47 tag works."
2627
+ #. @context: Help text for the content language field
2628
+ #: src/ui/dash/settings/LanguageContent.tsx
2629
+ msgid "The language you write in."
2630
+ msgstr "The language you write in."
2631
+
2632
+ #. @context: Setup form help text under the content language field
2633
+ #: src/routes/auth/setup.tsx
2634
+ msgid "The language your readers and search engines see."
2635
+ msgstr "The language your readers and search engines see."
2636
+
2637
+ #. @context: Config Editor linked setting description
2638
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2639
+ msgid "The languages served under a URL prefix. Managed on the Language page."
2640
+ msgstr "The languages served under a URL prefix. Managed on the Language page."
2241
2641
 
2242
2642
  #. @context: Linen color theme preview help line
2243
2643
  #: src/ui/dash/appearance/ColorThemeContent.tsx
@@ -2249,10 +2649,15 @@ msgstr "The original Jant palette, and a solid everyday pick."
2249
2649
  msgid "The page is public but stays out of Latest."
2250
2650
  msgstr "The page is public but stays out of Latest."
2251
2651
 
2252
- #. @context: Config Editor setting description
2253
- #: src/ui/dash/settings/ConfigEditorContent.tsx
2254
- msgid "The serif fallback used when the content language has no built-in profile."
2255
- msgstr "The serif fallback used when the content language has no built-in profile."
2652
+ #. @context: Help text for the primary language field
2653
+ #: src/ui/dash/settings/LanguageContent.tsx
2654
+ msgid "The root address (/, /feed) shows this language."
2655
+ msgstr "The root address (/, /feed) shows this language."
2656
+
2657
+ #. @context: Body of the disable-multilingual dialog
2658
+ #: src/ui/dash/settings/LanguageContent.tsx
2659
+ msgid "The root address goes back to showing every language, and addresses like {prefix} redirect to it, so existing links and feed subscriptions keep working. Post addresses and each post's language are unchanged, so you can turn this back on any time."
2660
+ msgstr "The root address goes back to showing every language, and addresses like {prefix} redirect to it, so existing links and feed subscriptions keep working. Post addresses and each post's language are unchanged, so you can turn this back on any time."
2256
2661
 
2257
2662
  #. @context: Custom URL target slug help text
2258
2663
  #: src/routes/dash/custom-urls.tsx
@@ -2339,16 +2744,41 @@ msgstr "This repository is already backing up this site."
2339
2744
  msgid "This setting wasn't saved. Check the value and try again."
2340
2745
  msgstr "This setting wasn't saved. Check the value and try again."
2341
2746
 
2747
+ #. @context: Toast when the Discover announcement cannot be sent because no directory is configured, or the site cannot be listed at all
2748
+ #: src/routes/dash/settings.tsx
2749
+ msgid "This site has no directory to announce to."
2750
+ msgstr "This site has no directory to announce to."
2751
+
2752
+ #. @context: Discover status line for a site that chose the old featured-only mode and has no featured posts. Says how to move to the current setting, which reads every public post.
2753
+ #: src/ui/dash/settings/GeneralContent.tsx
2754
+ msgid "This site still limits Discover to featured posts, and no post is marked Featured, so your feed carries nothing to show. Untick and tick the box to let Discover read every public post."
2755
+ msgstr "This site still limits Discover to featured posts, and no post is marked Featured, so your feed carries nothing to show. Untick and tick the box to let Discover read every public post."
2756
+
2342
2757
  #. @context: Warning text on account deletion page
2343
2758
  #: src/ui/dash/settings/DeleteAccountContent.tsx
2344
2759
  msgid "This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone."
2345
2760
  msgstr "This will permanently delete all your data — posts, media, collections, settings, and your account. Your blog will be reset to its initial setup state. This cannot be undone."
2346
2761
 
2762
+ #. @context: Config Editor archive layout enum option
2763
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
2764
+ msgid "Tile grid"
2765
+ msgstr "Tile grid"
2766
+
2767
+ #. @context: Settings subsection heading for the time zone field
2768
+ #: src/ui/dash/settings/GeneralContent.tsx
2769
+ msgid "Time"
2770
+ msgstr "Time"
2771
+
2347
2772
  #. @context: Settings form field
2348
2773
  #: src/ui/dash/settings/GeneralContent.tsx
2349
2774
  msgid "Time Zone"
2350
2775
  msgstr "Time Zone"
2351
2776
 
2777
+ #. @context: Toast after saving the time zone
2778
+ #: src/routes/dash/settings.tsx
2779
+ msgid "Time zone updated."
2780
+ msgstr "Time zone updated."
2781
+
2352
2782
  #. @context: Collection title field in Navigation settings
2353
2783
  #. @context: Title field label in quick page creation
2354
2784
  #: src/ui/dash/appearance/NavigationContent.tsx
@@ -2381,6 +2811,28 @@ msgstr "Try again"
2381
2811
  msgid "Tune how your site looks, reads, and runs."
2382
2812
  msgstr "Tune how your site looks, reads, and runs."
2383
2813
 
2814
+ #. @context: Confirm button in the disable-multilingual dialog
2815
+ #: src/ui/dash/settings/LanguageContent.tsx
2816
+ msgid "Turn off"
2817
+ msgstr "Turn off"
2818
+
2819
+ #. @context: Title of the dialog confirming removal of the last additional language
2820
+ #. @context: Title of the disable-multilingual dialog
2821
+ #: src/ui/dash/settings/LanguageContent.tsx
2822
+ #: src/ui/dash/settings/LanguageContent.tsx
2823
+ msgid "Turn off multilingual content?"
2824
+ msgstr "Turn off multilingual content?"
2825
+
2826
+ #. @context: Link in the multilingual section that opens the setup dialog
2827
+ #: src/ui/dash/settings/LanguageContent.tsx
2828
+ msgid "Turn on"
2829
+ msgstr "Turn on"
2830
+
2831
+ #. @context: Title of the dialog that configures languages and turns multilingual on
2832
+ #: src/ui/dash/settings/LanguageContent.tsx
2833
+ msgid "Turn on multilingual content"
2834
+ msgstr "Turn on multilingual content"
2835
+
2384
2836
  #. @context: Custom URL form field
2385
2837
  #: src/routes/dash/custom-urls.tsx
2386
2838
  msgid "Type"
@@ -2446,6 +2898,11 @@ msgstr "Uploading..."
2446
2898
  msgid "URL"
2447
2899
  msgstr "URL"
2448
2900
 
2901
+ #. @context: Description of the multilingual documentation link
2902
+ #: src/ui/dash/settings/LanguageContent.tsx
2903
+ msgid "URL structure, per-language feeds, and linking translations."
2904
+ msgstr "URL structure, per-language feeds, and linking translations."
2905
+
2449
2906
  #. @context: Heading for API token usage examples
2450
2907
  #: src/ui/dash/settings/ApiTokensContent.tsx
2451
2908
  msgid "Usage"
@@ -2466,11 +2923,6 @@ msgstr "Use lowercase letters, numbers, and hyphens."
2466
2923
  msgid "Use these when you want a feed URL that never changes."
2467
2924
  msgstr "Use these when you want a feed URL that never changes."
2468
2925
 
2469
- #. @context: Help text for the manual CJK font fallback setting
2470
- #: src/ui/dash/settings/GeneralContent.tsx
2471
- msgid "Used when the content language has no built-in font profile. Your font theme still controls serif and sans styling."
2472
- msgstr "Used when the content language has no built-in font profile. Your font theme still controls serif and sans styling."
2473
-
2474
2926
  #. @context: Description for choosing featured posts as the main RSS feed
2475
2927
  #: src/ui/dash/settings/GeneralContent.tsx
2476
2928
  msgid "Uses featured posts for /feed."
@@ -2491,6 +2943,11 @@ msgstr "Very light ivory with a faint tea-green accent."
2491
2943
  msgid "View"
2492
2944
  msgstr "View"
2493
2945
 
2946
+ #. @context: Link in the cannot-remove-language error, leading to that language's archive
2947
+ #: src/ui/dash/settings/LanguageContent.tsx
2948
+ msgid "View these posts"
2949
+ msgstr "View these posts"
2950
+
2494
2951
  #. @context: Prefix before Custom CSS link on color theme page
2495
2952
  #: src/ui/dash/appearance/ColorThemeContent.tsx
2496
2953
  msgid "Want more control?"
@@ -2561,6 +3018,16 @@ msgstr "Warm-neutral and easy for long reading."
2561
3018
  msgid "We'll prefill the name {name}. The list refreshes on return."
2562
3019
  msgstr "We'll prefill the name {name}. The list refreshes on return."
2563
3020
 
3021
+ #. @context: Setup page welcome heading
3022
+ #: src/routes/auth/setup.tsx
3023
+ msgid "Welcome to Jant"
3024
+ msgstr "Welcome to Jant"
3025
+
3026
+ #. @context: Setup heading on a hosted site, where the language is all that is left to ask
3027
+ #: src/routes/auth/setup.tsx
3028
+ msgid "What language do you write in?"
3029
+ msgstr "What language do you write in?"
3030
+
2564
3031
  #. @context: Description for backup and restore documentation link in account settings
2565
3032
  #: src/ui/dash/settings/AccountMenuContent.tsx
2566
3033
  msgid "When to use site export, database backups, and recovery drills."
@@ -2571,6 +3038,16 @@ msgstr "When to use site export, database backups, and recovery drills."
2571
3038
  msgid "When you want a cooler, sharper look."
2572
3039
  msgstr "When you want a cooler, sharper look."
2573
3040
 
3041
+ #. @context: Config Editor linked setting description
3042
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
3043
+ msgid "Whether each language gets its own home page, archive, and feed. Managed on the Language page."
3044
+ msgstr "Whether each language gets its own home page, archive, and feed. Managed on the Language page."
3045
+
3046
+ #. @context: Config Editor setting description
3047
+ #: src/ui/dash/settings/ConfigEditorContent.tsx
3048
+ msgid "Which layout /archive opens with. Readers can switch layouts from the page."
3049
+ msgstr "Which layout /archive opens with. Readers can switch layouts from the page."
3050
+
2574
3051
  #. @context: Config Editor setting description
2575
3052
  #: src/ui/dash/settings/ConfigEditorContent.tsx
2576
3053
  msgid "Which post stream the canonical /feed URL returns."
@@ -2581,6 +3058,11 @@ msgstr "Which post stream the canonical /feed URL returns."
2581
3058
  msgid "Yellow-tinted paper with an olive-green accent."
2582
3059
  msgstr "Yellow-tinted paper with an olive-green accent."
2583
3060
 
3061
+ #. @context: Note at the foot of the last setup screen, after the submit button
3062
+ #: src/routes/auth/setup.tsx
3063
+ msgid "You can change all of this later in Settings."
3064
+ msgstr "You can change all of this later in Settings."
3065
+
2584
3066
  #. @context: Fallback name when a connected Telegram account has no username
2585
3067
  #: src/ui/dash/settings/TelegramContent.tsx
2586
3068
  msgid "your Telegram account"