@jant/core 0.6.8 → 0.6.10
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.
- package/bin/commands/uploads/cleanup.js +1 -0
- package/dist/{app-9P4rVCe2.js → app-CGHkOdme.js} +3450 -3121
- package/dist/app-D24n0DoH.js +6 -0
- package/dist/client/.vite/manifest.json +3 -3
- package/dist/client/_assets/{client-CXnEhyyv.js → client-DYrWuaIk.js} +1 -1
- package/dist/client/_assets/{client-auth-CSItbyU8.js → client-auth-B5Re0uCd.js} +187 -167
- package/dist/client/_assets/client-xWDl78yi.css +2 -0
- package/dist/{export-Be082J0n.js → export-DY1v5Iqu.js} +2 -2
- package/dist/{github-sync-D1Cw8mOY.js → github-sync-2_T7nbOv.js} +1 -1
- package/dist/{github-sync-_kPWM4m9.js → github-sync-LefaslGJ.js} +2 -2
- package/dist/index.js +3 -3
- package/dist/node.js +4 -4
- package/package.json +1 -1
- package/src/client/components/__tests__/jant-settings-avatar.test.ts +8 -2
- package/src/client/components/__tests__/jant-settings-general.test.ts +64 -12
- package/src/client/components/jant-compose-dialog.ts +12 -0
- package/src/client/components/jant-settings-general.ts +74 -21
- package/src/client/components/settings-types.ts +13 -0
- package/src/client/settings-bridge.ts +3 -0
- package/src/client/tiptap/__tests__/link-toolbar.test.ts +41 -0
- package/src/client/tiptap/__tests__/mark-exit.test.ts +99 -0
- package/src/client/tiptap/bubble-menu.ts +37 -4
- package/src/client/tiptap/link-toolbar.ts +63 -1
- package/src/db/migrations/0026_absent_rhodey.sql +14 -0
- package/src/db/migrations/meta/0026_snapshot.json +2511 -0
- package/src/db/migrations/meta/_journal.json +7 -0
- package/src/db/migrations/pg/0024_high_violations.sql +14 -0
- package/src/db/migrations/pg/meta/0024_snapshot.json +3204 -0
- package/src/db/migrations/pg/meta/_journal.json +7 -0
- package/src/db/pg/schema.ts +36 -0
- package/src/db/schema.ts +36 -0
- package/src/i18n/__tests__/middleware.test.ts +46 -0
- package/src/i18n/locales/settings/en.po +282 -27
- package/src/i18n/locales/settings/en.ts +1 -1
- package/src/i18n/locales/settings/zh-Hans.po +282 -27
- package/src/i18n/locales/settings/zh-Hans.ts +1 -1
- package/src/i18n/locales/settings/zh-Hant.po +282 -27
- package/src/i18n/locales/settings/zh-Hant.ts +1 -1
- package/src/i18n/middleware.ts +17 -8
- package/src/i18n/supported-locales.ts +5 -4
- package/src/lib/__tests__/feed.test.ts +5 -1
- package/src/lib/feed.ts +6 -3
- package/src/lib/ids.ts +1 -0
- package/src/lib/resolve-config.ts +1 -0
- package/src/lib/upload.ts +14 -0
- package/src/routes/api/__tests__/settings.test.ts +1 -4
- package/src/routes/api/__tests__/upload.test.ts +2 -0
- package/src/routes/api/internal/__tests__/uploads.test.ts +19 -1
- package/src/routes/api/settings.ts +2 -1
- package/src/routes/auth/__tests__/setup.test.ts +14 -0
- package/src/routes/dash/__tests__/settings-avatar.test.ts +35 -17
- package/src/routes/dash/settings.tsx +22 -4
- package/src/routes/feed/__tests__/feed.test.ts +58 -19
- package/src/routes/feed/feed.ts +37 -28
- package/src/routes/pages/featured.tsx +17 -0
- package/src/routes/pages/latest.tsx +25 -0
- package/src/services/__tests__/media.test.ts +191 -30
- package/src/services/__tests__/settings.test.ts +55 -0
- package/src/services/bootstrap.ts +7 -0
- package/src/services/export-theme/layouts/_default/baseof.html +2 -1
- package/src/services/media.ts +169 -42
- package/src/services/post.ts +1 -1
- package/src/services/settings.ts +49 -15
- package/src/services/upload-session.ts +13 -3
- package/src/styles/tokens.css +21 -4
- package/src/styles/ui.css +44 -1
- package/src/types/bindings.ts +1 -0
- package/src/types/config.ts +13 -0
- package/src/ui/__tests__/color-themes.test.ts +2 -2
- package/src/ui/color-themes.ts +32 -0
- package/src/ui/dash/appearance/ColorThemeContent.tsx +264 -29
- package/src/ui/dash/settings/GeneralContent.tsx +54 -4
- package/src/ui/dash/settings/__tests__/GeneralContent.test.tsx +3 -2
- package/src/ui/layouts/BaseLayout.tsx +3 -2
- package/src/ui/layouts/__tests__/BaseLayout.test.tsx +17 -4
- package/dist/app-DaxS_Cz-.js +0 -6
- package/dist/client/_assets/client-C6peCkkD.css +0 -2
package/src/db/pg/schema.ts
CHANGED
|
@@ -324,6 +324,42 @@ export const media = pgTable(
|
|
|
324
324
|
],
|
|
325
325
|
);
|
|
326
326
|
|
|
327
|
+
/**
|
|
328
|
+
* Recycle bin for deleted media storage objects. When media is deleted we
|
|
329
|
+
* hard-remove the DB row and immediately delete the object from its original
|
|
330
|
+
* (public) key — so the original URL 404s right away — but first move the bytes
|
|
331
|
+
* to a `trash/` key recorded here. The cleanup sweep deletes the trash object
|
|
332
|
+
* once `purge_after` elapses. `original_key` records where the object lived so
|
|
333
|
+
* it can be restored within the window. Only used when the storage driver
|
|
334
|
+
* supports server-side copy; otherwise deletes are immediate with no recycle.
|
|
335
|
+
*/
|
|
336
|
+
export const storagePurge = pgTable(
|
|
337
|
+
"storage_purge",
|
|
338
|
+
{
|
|
339
|
+
id: text("id").primaryKey(),
|
|
340
|
+
siteId: text("site_id")
|
|
341
|
+
.notNull()
|
|
342
|
+
.references(() => sites.id, { onDelete: "cascade" }),
|
|
343
|
+
provider: text("provider").notNull(),
|
|
344
|
+
storageKey: text("storage_key").notNull(),
|
|
345
|
+
originalKey: text("original_key").notNull(),
|
|
346
|
+
reason: text("reason"),
|
|
347
|
+
purgeAfter: integer("purge_after").notNull(),
|
|
348
|
+
createdAt: integer("created_at").notNull(),
|
|
349
|
+
},
|
|
350
|
+
(table) => [
|
|
351
|
+
uniqueIndex("uq_storage_purge_provider_key").on(
|
|
352
|
+
table.provider,
|
|
353
|
+
table.storageKey,
|
|
354
|
+
),
|
|
355
|
+
index("idx_storage_purge_site_provider_due").on(
|
|
356
|
+
table.siteId,
|
|
357
|
+
table.provider,
|
|
358
|
+
table.purgeAfter,
|
|
359
|
+
),
|
|
360
|
+
],
|
|
361
|
+
);
|
|
362
|
+
|
|
327
363
|
export const uploadSessions = pgTable(
|
|
328
364
|
"upload_session",
|
|
329
365
|
{
|
package/src/db/schema.ts
CHANGED
|
@@ -304,6 +304,42 @@ export const media = sqliteTable(
|
|
|
304
304
|
],
|
|
305
305
|
);
|
|
306
306
|
|
|
307
|
+
/**
|
|
308
|
+
* Recycle bin for deleted media storage objects. When media is deleted we
|
|
309
|
+
* hard-remove the DB row and immediately delete the object from its original
|
|
310
|
+
* (public) key — so the original URL 404s right away — but first move the bytes
|
|
311
|
+
* to a `trash/` key recorded here. The cleanup sweep deletes the trash object
|
|
312
|
+
* once `purge_after` elapses. `original_key` records where the object lived so
|
|
313
|
+
* it can be restored within the window. Only used when the storage driver
|
|
314
|
+
* supports server-side copy; otherwise deletes are immediate with no recycle.
|
|
315
|
+
*/
|
|
316
|
+
export const storagePurge = sqliteTable(
|
|
317
|
+
"storage_purge",
|
|
318
|
+
{
|
|
319
|
+
id: text("id").primaryKey(),
|
|
320
|
+
siteId: text("site_id")
|
|
321
|
+
.notNull()
|
|
322
|
+
.references(() => sites.id, { onDelete: "cascade" }),
|
|
323
|
+
provider: text("provider").notNull(),
|
|
324
|
+
storageKey: text("storage_key").notNull(),
|
|
325
|
+
originalKey: text("original_key").notNull(),
|
|
326
|
+
reason: text("reason"),
|
|
327
|
+
purgeAfter: integer("purge_after").notNull(),
|
|
328
|
+
createdAt: integer("created_at").notNull(),
|
|
329
|
+
},
|
|
330
|
+
(table) => [
|
|
331
|
+
uniqueIndex("uq_storage_purge_provider_key").on(
|
|
332
|
+
table.provider,
|
|
333
|
+
table.storageKey,
|
|
334
|
+
),
|
|
335
|
+
index("idx_storage_purge_site_provider_due").on(
|
|
336
|
+
table.siteId,
|
|
337
|
+
table.provider,
|
|
338
|
+
table.purgeAfter,
|
|
339
|
+
),
|
|
340
|
+
],
|
|
341
|
+
);
|
|
342
|
+
|
|
307
343
|
export const uploadSessions = sqliteTable(
|
|
308
344
|
"upload_session",
|
|
309
345
|
{
|
|
@@ -122,4 +122,50 @@ describe("i18nMiddleware", () => {
|
|
|
122
122
|
|
|
123
123
|
expect(await res.text()).toBe("en|en");
|
|
124
124
|
});
|
|
125
|
+
|
|
126
|
+
it("DASHBOARD_LANGUAGE drives the admin catalog independently of content", async () => {
|
|
127
|
+
const app = createApp({
|
|
128
|
+
ONBOARDING_STATUS: "completed",
|
|
129
|
+
SITE_LANGUAGE: "fr",
|
|
130
|
+
DASHBOARD_LANGUAGE: "zh-Hans",
|
|
131
|
+
});
|
|
132
|
+
const res = await app.request("/settings");
|
|
133
|
+
|
|
134
|
+
// Content stays French; the dashboard renders in the explicit zh-Hans.
|
|
135
|
+
expect(await res.text()).toBe("fr|zh-Hans");
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
it("ignores DASHBOARD_LANGUAGE on public routes", async () => {
|
|
139
|
+
const app = createApp({
|
|
140
|
+
ONBOARDING_STATUS: "completed",
|
|
141
|
+
SITE_LANGUAGE: "fr",
|
|
142
|
+
DASHBOARD_LANGUAGE: "zh-Hans",
|
|
143
|
+
});
|
|
144
|
+
const res = await app.request("/");
|
|
145
|
+
|
|
146
|
+
expect(await res.text()).toBe("fr|en");
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it("derives the admin catalog from content when DASHBOARD_LANGUAGE is empty", async () => {
|
|
150
|
+
const app = createApp({
|
|
151
|
+
ONBOARDING_STATUS: "completed",
|
|
152
|
+
SITE_LANGUAGE: "zh-TW",
|
|
153
|
+
DASHBOARD_LANGUAGE: "",
|
|
154
|
+
});
|
|
155
|
+
const res = await app.request("/settings");
|
|
156
|
+
|
|
157
|
+
expect(await res.text()).toBe("zh-TW|zh-Hant");
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
it("ignores a DASHBOARD_LANGUAGE that is not a translated catalog locale", async () => {
|
|
161
|
+
const app = createApp({
|
|
162
|
+
ONBOARDING_STATUS: "completed",
|
|
163
|
+
SITE_LANGUAGE: "zh-Hans",
|
|
164
|
+
DASHBOARD_LANGUAGE: "fr",
|
|
165
|
+
});
|
|
166
|
+
const res = await app.request("/settings");
|
|
167
|
+
|
|
168
|
+
// "fr" is not one of the 3 catalog locales, so we derive from content.
|
|
169
|
+
expect(await res.text()).toBe("zh-Hans|zh-Hans");
|
|
170
|
+
});
|
|
125
171
|
});
|
|
@@ -33,16 +33,31 @@ msgstr "301 (Permanent)"
|
|
|
33
33
|
msgid "302 (Temporary)"
|
|
34
34
|
msgstr "302 (Temporary)"
|
|
35
35
|
|
|
36
|
+
#. @context: Slate color theme preview help line
|
|
37
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
38
|
+
msgid "A calm, cool backdrop."
|
|
39
|
+
msgstr "A calm, cool backdrop."
|
|
40
|
+
|
|
36
41
|
#. @context: Help text for site description field
|
|
37
42
|
#: src/ui/dash/settings/GeneralContent.tsx
|
|
38
43
|
msgid "A short intro shown on your home page."
|
|
39
44
|
msgstr "A short intro shown on your home page."
|
|
40
45
|
|
|
46
|
+
#. @context: Parchment color theme preview help line
|
|
47
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
48
|
+
msgid "A warmer look, like slightly aged paper."
|
|
49
|
+
msgstr "A warmer look, like slightly aged paper."
|
|
50
|
+
|
|
41
51
|
#. @context: Settings form field for site description
|
|
42
52
|
#: src/ui/dash/settings/GeneralContent.tsx
|
|
43
53
|
msgid "About this blog"
|
|
44
54
|
msgstr "About this blog"
|
|
45
55
|
|
|
56
|
+
#. @context: Label next to the theme accent-color swatch in a color theme preview card
|
|
57
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
58
|
+
msgid "Accent"
|
|
59
|
+
msgstr "Accent"
|
|
60
|
+
|
|
46
61
|
#. @context: Breadcrumb label
|
|
47
62
|
#. @context: GitHub sync picker — owner dropdown label
|
|
48
63
|
#. @context: Page title for the account settings menu
|
|
@@ -131,6 +146,11 @@ msgstr "Always show the dark version of the theme."
|
|
|
131
146
|
msgid "Always show the light version of the theme."
|
|
132
147
|
msgstr "Always show the light version of the theme."
|
|
133
148
|
|
|
149
|
+
#. @context: Clay color theme preview help line
|
|
150
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
151
|
+
msgid "An earthier, warmer tone."
|
|
152
|
+
msgstr "An earthier, warmer tone."
|
|
153
|
+
|
|
134
154
|
#. @context: Code Injection security warning body
|
|
135
155
|
#: src/ui/dash/appearance/CodeInjectionContent.tsx
|
|
136
156
|
msgid "Anything you paste here has full access to your visitors' browsers. Only use code from sources you trust."
|
|
@@ -167,6 +187,11 @@ msgstr "Applies to your entire site, including admin pages. Pick a palette, then
|
|
|
167
187
|
msgid "Archive"
|
|
168
188
|
msgstr "Archive"
|
|
169
189
|
|
|
190
|
+
#. @context: Label for the full-archive RSS feed URL
|
|
191
|
+
#: src/ui/dash/settings/GeneralContent.tsx
|
|
192
|
+
msgid "Archive feed"
|
|
193
|
+
msgstr "Archive feed"
|
|
194
|
+
|
|
170
195
|
#. @context: Help text for archive custom URL query params
|
|
171
196
|
#: src/routes/dash/custom-urls.tsx
|
|
172
197
|
msgid "Archive filter parameters (e.g. format=note&view=list)"
|
|
@@ -226,11 +251,26 @@ msgstr "Blog Avatar"
|
|
|
226
251
|
msgid "Bot token"
|
|
227
252
|
msgstr "Bot token"
|
|
228
253
|
|
|
254
|
+
#. @context: Paper color theme preview title
|
|
255
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
256
|
+
msgid "Bright paper white"
|
|
257
|
+
msgstr "Bright paper white"
|
|
258
|
+
|
|
259
|
+
#. @context: Paper color theme preview body
|
|
260
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
261
|
+
msgid "Bright warm-white with a moss-green accent."
|
|
262
|
+
msgstr "Bright warm-white with a moss-green accent."
|
|
263
|
+
|
|
229
264
|
#. @context: Section heading for built-in nav items
|
|
230
265
|
#: src/ui/dash/appearance/NavigationContent.tsx
|
|
231
266
|
msgid "Built-in links"
|
|
232
267
|
msgstr "Built-in links"
|
|
233
268
|
|
|
269
|
+
#. @context: Sage color theme preview help line
|
|
270
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
271
|
+
msgid "Calm and natural, easy on the eyes."
|
|
272
|
+
msgstr "Calm and natural, easy on the eyes."
|
|
273
|
+
|
|
234
274
|
#. @context: Button label to dismiss a dialog or action
|
|
235
275
|
#. @context: Button label to dismiss a dialog or action
|
|
236
276
|
#. @context: Button label to dismiss a dialog or action
|
|
@@ -294,6 +334,11 @@ msgstr "Choose the GitHub account and repository to sync with this site."
|
|
|
294
334
|
msgid "CJK Font"
|
|
295
335
|
msgstr "CJK Font"
|
|
296
336
|
|
|
337
|
+
#. @context: Paper color theme preview help line
|
|
338
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
339
|
+
msgid "Clean and high-contrast, close to white."
|
|
340
|
+
msgstr "Clean and high-contrast, close to white."
|
|
341
|
+
|
|
297
342
|
#. @context: Breadcrumb label
|
|
298
343
|
#. @context: Settings item — code injection settings
|
|
299
344
|
#: src/routes/dash/settings.tsx
|
|
@@ -397,6 +442,21 @@ msgstr "Connecting will sync your site onto {repo}'s default branch on top of it
|
|
|
397
442
|
msgid "Connecting…"
|
|
398
443
|
msgstr "Connecting…"
|
|
399
444
|
|
|
445
|
+
#. @context: Settings form field for the public content language
|
|
446
|
+
#: src/ui/dash/settings/GeneralContent.tsx
|
|
447
|
+
msgid "Content language"
|
|
448
|
+
msgstr "Content language"
|
|
449
|
+
|
|
450
|
+
#. @context: Slate color theme preview title
|
|
451
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
452
|
+
msgid "Cool blue-gray"
|
|
453
|
+
msgstr "Cool blue-gray"
|
|
454
|
+
|
|
455
|
+
#. @context: Frost color theme preview title
|
|
456
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
457
|
+
msgid "Cool white"
|
|
458
|
+
msgstr "Cool white"
|
|
459
|
+
|
|
400
460
|
#. @context: Feedback after copying API token
|
|
401
461
|
#. @context: Feedback after copying to clipboard
|
|
402
462
|
#: src/ui/dash/settings/ApiTokensContent.tsx
|
|
@@ -447,6 +507,16 @@ msgstr "Couldn't delete. Try again in a moment."
|
|
|
447
507
|
msgid "Couldn't save. Try again in a moment."
|
|
448
508
|
msgstr "Couldn't save. Try again in a moment."
|
|
449
509
|
|
|
510
|
+
#. @context: Ember color theme preview help line
|
|
511
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
512
|
+
msgid "Cozy and bold among the warm tones."
|
|
513
|
+
msgstr "Cozy and bold among the warm tones."
|
|
514
|
+
|
|
515
|
+
#. @context: Espresso color theme preview title
|
|
516
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
517
|
+
msgid "Cream and coffee brown"
|
|
518
|
+
msgstr "Cream and coffee brown"
|
|
519
|
+
|
|
450
520
|
#. @context: Help text explaining where to get a Telegram bot token
|
|
451
521
|
#: src/ui/dash/settings/TelegramContent.tsx
|
|
452
522
|
msgid "Create a bot by messaging @BotFather on Telegram, then paste the token it gives you."
|
|
@@ -537,6 +607,11 @@ msgstr "Danger Zone"
|
|
|
537
607
|
msgid "Dark"
|
|
538
608
|
msgstr "Dark"
|
|
539
609
|
|
|
610
|
+
#. @context: Settings form field for the admin interface language
|
|
611
|
+
#: src/ui/dash/settings/GeneralContent.tsx
|
|
612
|
+
msgid "Dashboard language"
|
|
613
|
+
msgstr "Dashboard language"
|
|
614
|
+
|
|
540
615
|
#. @context: Settings group label for data export/import
|
|
541
616
|
#: src/ui/dash/settings/AccountMenuContent.tsx
|
|
542
617
|
msgid "Data"
|
|
@@ -684,6 +759,16 @@ msgstr "Edit"
|
|
|
684
759
|
msgid "Empty repository. Ready to connect."
|
|
685
760
|
msgstr "Empty repository. Ready to connect."
|
|
686
761
|
|
|
762
|
+
#. @context: Help text under the archive feed URL, explaining it is the complete feed
|
|
763
|
+
#: src/ui/dash/settings/GeneralContent.tsx
|
|
764
|
+
msgid "Every published post, including ones hidden from Latest."
|
|
765
|
+
msgstr "Every published post, including ones hidden from Latest."
|
|
766
|
+
|
|
767
|
+
#. @context: Placeholder link label shown in color theme preview cards
|
|
768
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
769
|
+
msgid "Example link"
|
|
770
|
+
msgstr "Example link"
|
|
771
|
+
|
|
687
772
|
#. @context: Confirmation text after downloading the site export in delete flow
|
|
688
773
|
#: src/ui/dash/settings/DeleteAccountContent.tsx
|
|
689
774
|
msgid "Export downloaded."
|
|
@@ -728,11 +813,6 @@ msgstr "Feed URL copied."
|
|
|
728
813
|
msgid "Feeds"
|
|
729
814
|
msgstr "Feeds"
|
|
730
815
|
|
|
731
|
-
#. @context: Color theme preview card title
|
|
732
|
-
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
733
|
-
msgid "Field notes on quiet design"
|
|
734
|
-
msgstr "Field notes on quiet design"
|
|
735
|
-
|
|
736
816
|
#. @context: Error toast when file storage is not set up
|
|
737
817
|
#: src/routes/dash/settings.tsx
|
|
738
818
|
msgid "File storage isn't set up. Check your server config."
|
|
@@ -808,6 +888,11 @@ msgstr "Header links, home feed, and overflow menu"
|
|
|
808
888
|
msgid "Header RSS points to your {feed} feed (/feed). Change what /feed returns in General."
|
|
809
889
|
msgstr "Header RSS points to your {feed} feed (/feed). Change what /feed returns in General."
|
|
810
890
|
|
|
891
|
+
#. @context: Fallback color theme preview body
|
|
892
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
893
|
+
msgid "Headings, body text, and links in this theme."
|
|
894
|
+
msgstr "Headings, body text, and links in this theme."
|
|
895
|
+
|
|
811
896
|
#. @context: Post badge for posts hidden from Latest
|
|
812
897
|
#: src/ui/dash/StatusBadge.tsx
|
|
813
898
|
msgid "Hidden from Latest"
|
|
@@ -875,11 +960,6 @@ msgstr "Label and URL are required"
|
|
|
875
960
|
msgid "Label is required"
|
|
876
961
|
msgstr "Label is required"
|
|
877
962
|
|
|
878
|
-
#. @context: Settings form field for site/admin language
|
|
879
|
-
#: src/ui/dash/settings/GeneralContent.tsx
|
|
880
|
-
msgid "Language"
|
|
881
|
-
msgstr "Language"
|
|
882
|
-
|
|
883
963
|
#. @context: Settings subsection heading for language and time zone fields
|
|
884
964
|
#: src/ui/dash/settings/GeneralContent.tsx
|
|
885
965
|
msgid "Language & Time"
|
|
@@ -932,6 +1012,16 @@ msgstr "lets you override any theme variable."
|
|
|
932
1012
|
msgid "Light"
|
|
933
1013
|
msgstr "Light"
|
|
934
1014
|
|
|
1015
|
+
#. @context: Slate color theme preview body
|
|
1016
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1017
|
+
msgid "Light blue-gray background, cool and even."
|
|
1018
|
+
msgstr "Light blue-gray background, cool and even."
|
|
1019
|
+
|
|
1020
|
+
#. @context: Sage color theme preview body
|
|
1021
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1022
|
+
msgid "Light sage-green with a matching green accent."
|
|
1023
|
+
msgstr "Light sage-green with a matching green accent."
|
|
1024
|
+
|
|
935
1025
|
#. @context: Nav item type badge
|
|
936
1026
|
#: src/ui/dash/appearance/NavigationContent.tsx
|
|
937
1027
|
msgid "link"
|
|
@@ -1012,6 +1102,11 @@ msgstr "Markdown supported"
|
|
|
1012
1102
|
msgid "Message the bot any text and it's published as a note."
|
|
1013
1103
|
msgstr "Message the bot any text and it's published as a note."
|
|
1014
1104
|
|
|
1105
|
+
#. @context: Ink color theme preview help line
|
|
1106
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1107
|
+
msgid "Minimal color, low distraction."
|
|
1108
|
+
msgstr "Minimal color, low distraction."
|
|
1109
|
+
|
|
1015
1110
|
#. @context: Section label for nav items hidden under More dropdown
|
|
1016
1111
|
#: src/ui/dash/appearance/NavigationContent.tsx
|
|
1017
1112
|
msgid "More"
|
|
@@ -1022,6 +1117,11 @@ msgstr "More"
|
|
|
1022
1117
|
msgid "More actions"
|
|
1023
1118
|
msgstr "More actions"
|
|
1024
1119
|
|
|
1120
|
+
#. @context: Clay color theme preview body
|
|
1121
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1122
|
+
msgid "Muted red-brown background, earthy and warm."
|
|
1123
|
+
msgstr "Muted red-brown background, earthy and warm."
|
|
1124
|
+
|
|
1025
1125
|
#. @context: Settings item description for general
|
|
1026
1126
|
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
1027
1127
|
msgid "Name, metadata, language, and search defaults"
|
|
@@ -1054,11 +1154,26 @@ msgstr "Navigation placement updated."
|
|
|
1054
1154
|
msgid "Navigation Preview"
|
|
1055
1155
|
msgstr "Navigation Preview"
|
|
1056
1156
|
|
|
1157
|
+
#. @context: Ink color theme preview body
|
|
1158
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1159
|
+
msgid "Near-neutral light gray with a steel-blue accent."
|
|
1160
|
+
msgstr "Near-neutral light gray with a steel-blue accent."
|
|
1161
|
+
|
|
1162
|
+
#. @context: Cotton color theme preview help line
|
|
1163
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1164
|
+
msgid "Nearly white, with a touch of warmth."
|
|
1165
|
+
msgstr "Nearly white, with a touch of warmth."
|
|
1166
|
+
|
|
1057
1167
|
#. @context: Help text for GitHub PAT input explaining required permissions
|
|
1058
1168
|
#: src/ui/dash/settings/GitHubSyncContent.tsx
|
|
1059
1169
|
msgid "Needs Contents (read/write) and Webhooks (read/write) on the target repository."
|
|
1060
1170
|
msgstr "Needs Contents (read/write) and Webhooks (read/write) on the target repository."
|
|
1061
1171
|
|
|
1172
|
+
#. @context: Ink color theme preview title
|
|
1173
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1174
|
+
msgid "Neutral gray"
|
|
1175
|
+
msgstr "Neutral gray"
|
|
1176
|
+
|
|
1062
1177
|
#. @context: Button to create new custom URL
|
|
1063
1178
|
#. @context: Button to create new custom URL
|
|
1064
1179
|
#. @context: Page heading
|
|
@@ -1125,6 +1240,11 @@ msgstr "Not synced yet"
|
|
|
1125
1240
|
msgid "Note"
|
|
1126
1241
|
msgstr "Note"
|
|
1127
1242
|
|
|
1243
|
+
#. @context: Tufte color theme preview body
|
|
1244
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1245
|
+
msgid "Off-white paper with a deep forest-green accent."
|
|
1246
|
+
msgstr "Off-white paper with a deep forest-green accent."
|
|
1247
|
+
|
|
1128
1248
|
#. @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.
|
|
1129
1249
|
#: src/ui/dash/settings/TelegramContent.tsx
|
|
1130
1250
|
msgid "Open {linkOpen}@{botUsername}{linkClose} and send:"
|
|
@@ -1145,11 +1265,26 @@ msgstr "Open the bot and send the binding code, then anything you message it bec
|
|
|
1145
1265
|
msgid "or"
|
|
1146
1266
|
msgstr "or"
|
|
1147
1267
|
|
|
1268
|
+
#. @context: Ember color theme preview body
|
|
1269
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1270
|
+
msgid "Orange-tinted background. The warmest palette."
|
|
1271
|
+
msgstr "Orange-tinted background. The warmest palette."
|
|
1272
|
+
|
|
1148
1273
|
#. @context: GitHub sync picker — placeholder text showing the expected input shape
|
|
1149
1274
|
#: src/routes/dash/settings.tsx
|
|
1150
1275
|
msgid "owner/repo"
|
|
1151
1276
|
msgstr "owner/repo"
|
|
1152
1277
|
|
|
1278
|
+
#. @context: Bone color theme preview body
|
|
1279
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1280
|
+
msgid "Pale bone-white with a muted green accent."
|
|
1281
|
+
msgstr "Pale bone-white with a muted green accent."
|
|
1282
|
+
|
|
1283
|
+
#. @context: Frost color theme preview body
|
|
1284
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1285
|
+
msgid "Pale cool-white with deep indigo text. High contrast."
|
|
1286
|
+
msgstr "Pale cool-white with deep indigo text. High contrast."
|
|
1287
|
+
|
|
1153
1288
|
#. @context: Settings item description for color theme
|
|
1154
1289
|
#: src/ui/dash/settings/SettingsRootContent.tsx
|
|
1155
1290
|
msgid "Palette, surface tone, and overall mood"
|
|
@@ -1202,6 +1337,11 @@ msgstr "Pick a repository"
|
|
|
1202
1337
|
msgid "Pick an account first"
|
|
1203
1338
|
msgstr "Pick an account first"
|
|
1204
1339
|
|
|
1340
|
+
#. @context: Fallback color theme preview help line
|
|
1341
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1342
|
+
msgid "Pick the one that fits your writing."
|
|
1343
|
+
msgstr "Pick the one that fits your writing."
|
|
1344
|
+
|
|
1205
1345
|
#. @context: Description in collection picker section
|
|
1206
1346
|
#: src/ui/dash/appearance/NavigationContent.tsx
|
|
1207
1347
|
msgid "Pin a collection to your navigation bar. An asterisk (*) appears next to collections updated in the last 48 hours."
|
|
@@ -1239,6 +1379,16 @@ msgstr "Processing..."
|
|
|
1239
1379
|
msgid "Published"
|
|
1240
1380
|
msgstr "Published"
|
|
1241
1381
|
|
|
1382
|
+
#. @context: Snow color theme preview title
|
|
1383
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1384
|
+
msgid "Pure white"
|
|
1385
|
+
msgstr "Pure white"
|
|
1386
|
+
|
|
1387
|
+
#. @context: Snow color theme preview body
|
|
1388
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1389
|
+
msgid "Pure white with neutral grays. No color tint."
|
|
1390
|
+
msgstr "Pure white with neutral grays. No color tint."
|
|
1391
|
+
|
|
1242
1392
|
#. @context: Description for manual push action on GitHub Sync settings
|
|
1243
1393
|
#: src/ui/dash/settings/GitHubSyncContent.tsx
|
|
1244
1394
|
msgid "Push all posts to GitHub right now instead of waiting for the next automatic sync."
|
|
@@ -1254,20 +1404,15 @@ msgstr "QR code linking to the Telegram bot"
|
|
|
1254
1404
|
msgid "Query Parameters"
|
|
1255
1405
|
msgstr "Query Parameters"
|
|
1256
1406
|
|
|
1257
|
-
#. @context: Color theme preview card secondary sentence
|
|
1258
|
-
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1259
|
-
msgid "Quiet surfaces let writing lead."
|
|
1260
|
-
msgstr "Quiet surfaces let writing lead."
|
|
1261
|
-
|
|
1262
1407
|
#. @context: Post format badge - quote
|
|
1263
1408
|
#: src/ui/dash/FormatBadge.tsx
|
|
1264
1409
|
msgid "Quote"
|
|
1265
1410
|
msgstr "Quote"
|
|
1266
1411
|
|
|
1267
|
-
#. @context:
|
|
1268
|
-
#: src/ui/dash/
|
|
1269
|
-
msgid "
|
|
1270
|
-
msgstr "
|
|
1412
|
+
#. @context: Lead text before a live <html lang> preview of the content language
|
|
1413
|
+
#: src/ui/dash/settings/GeneralContent.tsx
|
|
1414
|
+
msgid "Readers and search engines see"
|
|
1415
|
+
msgstr "Readers and search engines see"
|
|
1271
1416
|
|
|
1272
1417
|
#. @context: Custom URL target type badge for a redirect
|
|
1273
1418
|
#. @context: Custom URL type option
|
|
@@ -1354,6 +1499,11 @@ msgstr "Revoke this token? Any scripts using it will stop working."
|
|
|
1354
1499
|
msgid "Safe to leave this page — syncing continues in the background."
|
|
1355
1500
|
msgstr "Safe to leave this page — syncing continues in the background."
|
|
1356
1501
|
|
|
1502
|
+
#. @context: Dune color theme preview body
|
|
1503
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1504
|
+
msgid "Sandy background with a green accent."
|
|
1505
|
+
msgstr "Sandy background with a green accent."
|
|
1506
|
+
|
|
1357
1507
|
#. @context: Button to save Code Injection settings
|
|
1358
1508
|
#. @context: Button to save settings
|
|
1359
1509
|
#. @context: Button to save settings changes
|
|
@@ -1444,11 +1594,6 @@ msgstr "Sessions"
|
|
|
1444
1594
|
msgid "Sessions and password"
|
|
1445
1595
|
msgstr "Sessions and password"
|
|
1446
1596
|
|
|
1447
|
-
#. @context: Help text under the site language input
|
|
1448
|
-
#: src/ui/dash/settings/GeneralContent.tsx
|
|
1449
|
-
msgid "Sets the content language announced to readers (HTML lang, RSS) and the dashboard language. Any BCP 47 tag is accepted; tags without a dashboard translation fall back to English."
|
|
1450
|
-
msgstr "Sets the content language announced to readers (HTML lang, RSS) and the dashboard language. Any BCP 47 tag is accepted; tags without a dashboard translation fall back to English."
|
|
1451
|
-
|
|
1452
1597
|
#. @context: Breadcrumb label
|
|
1453
1598
|
#. @context: Page title for the settings home page
|
|
1454
1599
|
#: src/routes/dash/settings.tsx
|
|
@@ -1510,10 +1655,20 @@ msgstr "Site settings updated."
|
|
|
1510
1655
|
msgid "Site-wide HTML for analytics and widgets"
|
|
1511
1656
|
msgstr "Site-wide HTML for analytics and widgets"
|
|
1512
1657
|
|
|
1513
|
-
#. @context:
|
|
1658
|
+
#. @context: Linen color theme preview body
|
|
1659
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1660
|
+
msgid "Soft cream background with a muted green accent."
|
|
1661
|
+
msgstr "Soft cream background with a muted green accent."
|
|
1662
|
+
|
|
1663
|
+
#. @context: Sage color theme preview title
|
|
1664
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1665
|
+
msgid "Soft green"
|
|
1666
|
+
msgstr "Soft green"
|
|
1667
|
+
|
|
1668
|
+
#. @context: Cotton color theme preview title
|
|
1514
1669
|
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1515
|
-
msgid "Soft
|
|
1516
|
-
msgstr "Soft
|
|
1670
|
+
msgid "Soft ivory"
|
|
1671
|
+
msgstr "Soft ivory"
|
|
1517
1672
|
|
|
1518
1673
|
#. @context: Description for the Telegram disconnect action
|
|
1519
1674
|
#: src/ui/dash/settings/TelegramContent.tsx
|
|
@@ -1566,6 +1721,31 @@ msgstr "That font theme isn't available. Pick another one."
|
|
|
1566
1721
|
msgid "That theme isn't available. Pick another one."
|
|
1567
1722
|
msgstr "That theme isn't available. Pick another one."
|
|
1568
1723
|
|
|
1724
|
+
#. @context: Snow color theme preview help line
|
|
1725
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1726
|
+
msgid "The cleanest, most neutral option."
|
|
1727
|
+
msgstr "The cleanest, most neutral option."
|
|
1728
|
+
|
|
1729
|
+
#. @context: Tufte color theme preview help line
|
|
1730
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1731
|
+
msgid "The default. Calm and easy for long reading."
|
|
1732
|
+
msgstr "The default. Calm and easy for long reading."
|
|
1733
|
+
|
|
1734
|
+
#. @context: Help text under the dashboard language picker
|
|
1735
|
+
#: src/ui/dash/settings/GeneralContent.tsx
|
|
1736
|
+
msgid "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
|
|
1737
|
+
msgstr "The language this admin dashboard shows in. Available in English, 简体中文, and 繁體中文."
|
|
1738
|
+
|
|
1739
|
+
#. @context: Help text under the content language picker
|
|
1740
|
+
#: src/ui/dash/settings/GeneralContent.tsx
|
|
1741
|
+
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."
|
|
1742
|
+
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."
|
|
1743
|
+
|
|
1744
|
+
#. @context: Linen color theme preview help line
|
|
1745
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1746
|
+
msgid "The original Jant palette, and a solid everyday pick."
|
|
1747
|
+
msgstr "The original Jant palette, and a solid everyday pick."
|
|
1748
|
+
|
|
1569
1749
|
#. @context: Custom URL target slug help text
|
|
1570
1750
|
#: src/routes/dash/custom-urls.tsx
|
|
1571
1751
|
msgid "The slug of the target post or collection"
|
|
@@ -1606,6 +1786,11 @@ msgstr "This hosted site signs in through {providerLabel}. Manage password and h
|
|
|
1606
1786
|
msgid "This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels."
|
|
1607
1787
|
msgstr "This is used for your favicon and apple-touch-icon. For best results, upload a square PNG with a solid background at least 512x512 pixels."
|
|
1608
1788
|
|
|
1789
|
+
#. @context: Fallback color theme preview title
|
|
1790
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1791
|
+
msgid "This palette"
|
|
1792
|
+
msgstr "This palette"
|
|
1793
|
+
|
|
1609
1794
|
#. @context: GitHub sync picker — confirmation card heading for foreign repos
|
|
1610
1795
|
#: src/routes/dash/settings.tsx
|
|
1611
1796
|
msgid "This repository already has commits"
|
|
@@ -1746,6 +1931,11 @@ msgstr "Uses featured posts for /feed."
|
|
|
1746
1931
|
msgid "Uses the latest public posts for /feed."
|
|
1747
1932
|
msgstr "Uses the latest public posts for /feed."
|
|
1748
1933
|
|
|
1934
|
+
#. @context: Cotton color theme preview body
|
|
1935
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1936
|
+
msgid "Very light ivory with a faint tea-green accent."
|
|
1937
|
+
msgstr "Very light ivory with a faint tea-green accent."
|
|
1938
|
+
|
|
1749
1939
|
#. @context: Button to view item on public site
|
|
1750
1940
|
#: src/ui/dash/ActionButtons.tsx
|
|
1751
1941
|
msgid "View"
|
|
@@ -1756,6 +1946,61 @@ msgstr "View"
|
|
|
1756
1946
|
msgid "Want more control?"
|
|
1757
1947
|
msgstr "Want more control?"
|
|
1758
1948
|
|
|
1949
|
+
#. @context: Dune color theme preview help line
|
|
1950
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1951
|
+
msgid "Warm and earthy, but still light."
|
|
1952
|
+
msgstr "Warm and earthy, but still light."
|
|
1953
|
+
|
|
1954
|
+
#. @context: Espresso color theme preview help line
|
|
1955
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1956
|
+
msgid "Warm and rich, with strong brown tones."
|
|
1957
|
+
msgstr "Warm and rich, with strong brown tones."
|
|
1958
|
+
|
|
1959
|
+
#. @context: Linen color theme preview title
|
|
1960
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1961
|
+
msgid "Warm cream"
|
|
1962
|
+
msgstr "Warm cream"
|
|
1963
|
+
|
|
1964
|
+
#. @context: Espresso color theme preview body
|
|
1965
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1966
|
+
msgid "Warm cream background with deep coffee-brown accents."
|
|
1967
|
+
msgstr "Warm cream background with deep coffee-brown accents."
|
|
1968
|
+
|
|
1969
|
+
#. @context: Tufte color theme preview title
|
|
1970
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1971
|
+
msgid "Warm ivory"
|
|
1972
|
+
msgstr "Warm ivory"
|
|
1973
|
+
|
|
1974
|
+
#. @context: Bone color theme preview title
|
|
1975
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1976
|
+
msgid "Warm off-white"
|
|
1977
|
+
msgstr "Warm off-white"
|
|
1978
|
+
|
|
1979
|
+
#. @context: Ember color theme preview title
|
|
1980
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1981
|
+
msgid "Warm orange"
|
|
1982
|
+
msgstr "Warm orange"
|
|
1983
|
+
|
|
1984
|
+
#. @context: Parchment color theme preview title
|
|
1985
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1986
|
+
msgid "Warm parchment"
|
|
1987
|
+
msgstr "Warm parchment"
|
|
1988
|
+
|
|
1989
|
+
#. @context: Dune color theme preview title
|
|
1990
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1991
|
+
msgid "Warm sand"
|
|
1992
|
+
msgstr "Warm sand"
|
|
1993
|
+
|
|
1994
|
+
#. @context: Clay color theme preview title
|
|
1995
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
1996
|
+
msgid "Warm terracotta"
|
|
1997
|
+
msgstr "Warm terracotta"
|
|
1998
|
+
|
|
1999
|
+
#. @context: Bone color theme preview help line
|
|
2000
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
2001
|
+
msgid "Warm-neutral and easy for long reading."
|
|
2002
|
+
msgstr "Warm-neutral and easy for long reading."
|
|
2003
|
+
|
|
1759
2004
|
#. @context: GitHub sync picker — hint under the create-on-github entry. Placeholder {name} is the suggested repo name.
|
|
1760
2005
|
#: src/routes/dash/settings.tsx
|
|
1761
2006
|
msgid "We'll prefill the name {name}. The list refreshes on return."
|
|
@@ -1766,6 +2011,16 @@ msgstr "We'll prefill the name {name}. The list refreshes on return."
|
|
|
1766
2011
|
msgid "When to use site export, database backups, and recovery drills."
|
|
1767
2012
|
msgstr "When to use site export, database backups, and recovery drills."
|
|
1768
2013
|
|
|
2014
|
+
#. @context: Frost color theme preview help line
|
|
2015
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
2016
|
+
msgid "When you want a cooler, sharper look."
|
|
2017
|
+
msgstr "When you want a cooler, sharper look."
|
|
2018
|
+
|
|
2019
|
+
#. @context: Parchment color theme preview body
|
|
2020
|
+
#: src/ui/dash/appearance/ColorThemeContent.tsx
|
|
2021
|
+
msgid "Yellow-tinted paper with an olive-green accent."
|
|
2022
|
+
msgstr "Yellow-tinted paper with an olive-green accent."
|
|
2023
|
+
|
|
1769
2024
|
#. @context: Fallback name when a connected Telegram account has no username
|
|
1770
2025
|
#: src/ui/dash/settings/TelegramContent.tsx
|
|
1771
2026
|
msgid "your Telegram account"
|