mirror of
https://github.com/RSSNext/Folo.git
synced 2026-10-19 06:22:12 +08:00
b7df9ad01e
Entry titles and settings labels went through title-case unconditionally,
but it applies English capitalization rules, so with a French UI and French
feeds titles rendered as "Pourquoi Votre Café Est Une Arme De Défense" and
settings labels as "Afficher Le Nombre De Non Lus". CJK titles were also
touched ("iOS 27 beta" became "IOS 27 Beta").
titleCaseIfEnglish in @follow/utils only applies title case when the
language is English (en, en-US, en_GB, or franc's eng). On desktop, entry
titles use the entry language and translated titles the translation
language, falling back to the UI language when unknown; settings labels
and section titles use the UI language. Mobile grouped list cells use the
UI language too. AI chat tool names keep title case since they are English
identifiers.
Mobile no longer imports title-case directly, so the dependency moves to
@follow/utils.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
70 lines
1.7 KiB
JSON
70 lines
1.7 KiB
JSON
{
|
|
"name": "@follow/utils",
|
|
"type": "module",
|
|
"private": true,
|
|
"author": "Folo Team",
|
|
"license": "MIT",
|
|
"homepage": "https://github.com/RSSNext",
|
|
"repository": {
|
|
"url": "https://github.com/RSSNext/follow",
|
|
"type": "git"
|
|
},
|
|
"sideEffects": false,
|
|
"exports": {
|
|
".": {
|
|
"require": "./src/index.ts",
|
|
"import": "./src/index.ts",
|
|
"types": "./src/index.ts"
|
|
},
|
|
"./*": {
|
|
"require": "./src/*.ts",
|
|
"import": "./src/*.ts",
|
|
"types": "./src/*.ts"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"test": "vitest",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"peerDependencies": {
|
|
"react-native": ">=0.79.6"
|
|
},
|
|
"dependencies": {
|
|
"@follow/shared": "workspace:*",
|
|
"@follow/types": "workspace:*",
|
|
"@mozilla/readability": "0.6.0",
|
|
"@types/hast": "3.0.5",
|
|
"@types/unist": "3.0.3",
|
|
"chardet": "2.2.0",
|
|
"clsx": "2.1.1",
|
|
"dayjs": "1.11.23",
|
|
"dompurify": "3.4.15",
|
|
"es-toolkit": "1.52.0",
|
|
"franc-min": "6.2.0",
|
|
"hast-util-sanitize": "5.0.2",
|
|
"hast-util-to-jsx-runtime": "2.3.6",
|
|
"hast-util-to-text": "4.0.2",
|
|
"jotai": "3.0.0",
|
|
"motion": "13.4.0",
|
|
"nanoid": "6.0.1",
|
|
"path-to-regexp": "8.4.2",
|
|
"rehype-infer-description-meta": "2.0.0",
|
|
"rehype-parse": "9.0.1",
|
|
"rehype-sanitize": "6.0.0",
|
|
"rehype-stringify": "10.0.1",
|
|
"tailwind-merge": "3.7.0",
|
|
"title-case": "4.3.2",
|
|
"tldts": "7.4.14",
|
|
"unified": "11.0.5",
|
|
"uniqolor": "1.1.1",
|
|
"unist-util-visit": "5.1.0",
|
|
"unist-util-visit-parents": "6.0.2",
|
|
"zustand": "5.0.15"
|
|
},
|
|
"devDependencies": {
|
|
"@follow/configs": "workspace:*",
|
|
"react-native": "0.86.3",
|
|
"vite-tsconfig-paths": "6.1.1"
|
|
}
|
|
}
|