Store kind "strings": string packs install like themes and plugins (dropped .strings.json, links, the signed Store), validated as plain data on this side (envelope, plain text, size caps, the app's own site), kept in app data strings/ with their order and which are on (at most 8); licence and credits are optional fields of every catalog item; five shell-only commands (strings_list, strings_read, strings_set, strings_remove, strings_apply); the shell's delivery (packs + the inventory slice) goes into site tabs' session storage by revision, as the first document-start layer of a site tab and never in safe mode

This commit is contained in:
CRTkafa 2026-10-01 03:56:54 +07:00
parent fd6ae707ca
commit c3bfc7a6f8
10 changed files with 593 additions and 13 deletions

View file

@ -26,7 +26,7 @@
"description": "The wayBetter apps this item is for (app ids such as \"x\"). An app never shows, stages or installs another app's items.",
"items": { "type": "string", "pattern": "^[a-z0-9-]{1,32}$" }
},
"kind": { "enum": ["theme", "plugin"] },
"kind": { "enum": ["theme", "plugin", "strings"], "description": "strings: a string pack (data that replaces the site's own UI strings; waybetter docs/STRING-PACKS.md)." },
"id": { "type": "string", "pattern": "^[a-z0-9-]{1,40}$", "description": "Unique per app and kind." },
"name": { "allOf": [{ "$ref": "#/$defs/text" }], "type": "string", "minLength": 1, "maxLength": 60 },
"author": { "allOf": [{ "$ref": "#/$defs/text" }], "type": "string", "maxLength": 60 },
@ -46,6 +46,9 @@
{ "type": "array", "uniqueItems": true, "items": { "enum": ["storage", "ui", "clipboard", "account", "users", "commands", "network", "network:none"] } }
]
},
"language": { "type": "string", "pattern": "^[A-Za-z]{2,8}(-[A-Za-z0-9]{1,8})*$", "description": "String packs only (required there): the language tag of the pack." },
"license": { "allOf": [{ "$ref": "#/$defs/text" }], "type": "string", "minLength": 1, "maxLength": 60, "description": "The licence of the item (an SPDX id such as CC-BY-4.0, or a short name)." },
"credits": { "allOf": [{ "$ref": "#/$defs/text" }], "type": "string", "maxLength": 600, "description": "Who made, translated or reviewed it, plain text." },
"colors": {
"description": "Themes only: swatches for the card.",
"anyOf": [