Befunde
Ein Befund ist ein Problem, das der Befehl pithyx meldet, auf der Standardfehlerausgabe als <level> <code>: <message>. Ein Fehler stoppt pack und lässt den Befehl mit 1 enden; eine Warnung nicht. Die meisten Codes sind die Fehlercodes der Box mit der Meldung der Box, die CLI sagt also, was die Box sagen würde; die Codes in cli.* gibt es nur in der CLI, weil die Box ein Paket sieht und nicht das Projekt, aus dem es gebaut wurde. Diese Liste wird aus packages/cli/src/issues.ts, findings.ts und i18n/<locale>/errors.json erzeugt. Die CLI selbst gibt die Meldungen immer englisch aus; hier stehen die deutschen Texte der Box, die cli.*-Meldungen gibt es nur englisch. {name} markiert einen Parameter; hängt eine Meldung von einem Parameter ab, folgen ihre Varianten darunter.
App-Pakete
Abschnitt betitelt „App-Pakete“Gemeldet von validate und pack, die Compose-Codes auch von build, und von catalog check und catalog index für die Apps eines Katalogs.
app.compose.key_unsupported(Fehler): Die Compose-Datei der App nutzt {key} unter {path}, was Pithyx nicht erlaubt.app.compose.reference_unknown(Fehler): Das Backend der App verweist unter {path} auf {name}, das nicht deklariert ist.app.compose.right_missing(Fehler): Die Compose-Datei der App braucht unter {path} das Recht {right}, das ihr Manifest nicht deklariert.app.compose.right_unused(Fehler): Das Manifest der App deklariert unter {path} das Recht {right}, das ihre Compose-Datei nicht nutzt.app.compose.storage_mismatch(Fehler): Der Speicher {storage} passt nicht zur Compose-Datei unter {path}: {reason}.reason=not_mounted: der Dienst bindet ihn nicht einreason=not_listed: der Dienst bindet ihn ein, ohne im Manifest genannt zu seinreason=read_only: er ist schreibgeschützt und muss mit :ro eingebunden werdenreason=other: Manifest und Compose-Datei widersprechen sich
app.compose.value_invalid(Fehler): Die Compose-Datei der App hat unter {path} einen Wert, den Pithyx ablehnt: {reason}.reason=required: er fehltreason=type: er hat den falschen Typreason=format: sein Format ist ungültigreason=range: er liegt außerhalb des erlaubten Bereichsreason=unpinned: das Image ist nicht mit @sha256 festgelegtreason=interpolation: er nutzt $ für eine Variable (schreib $$ für ein Dollarzeichen)reason=no_value: die Variable hat keinen Wertreason=duplicate: er kommt doppelt vorreason=reserved: er ist für Pithyx reserviertreason=host_path: er bindet einen Ordner des Hosts einreason=anonymous: das Volume hat keinen Namenreason=cycle: die Dienste hängen im Kreis voneinander abreason=image_and_build: der Dienst hat image und build, nutze nur eins davonreason=other: er ist ungültig
app.compose.yaml_invalid(Fehler): Die Compose-Datei der App ist nicht lesbar: {reason}.reason=too_large: sie ist größer als 64 KBreason=not_utf8: sie ist kein UTF-8reason=character: sie enthält einen Tabulator oder ein anderes nicht erlaubtes Zeichenreason=syntax: sie ist kein gültiges YAMLreason=documents: sie muss genau ein Dokument enthaltenreason=too_deep: sie ist zu tief verschachteltreason=directive: sie enthält eine YAML-Direktivereason=anchor: sie nutzt Anker oder Aliasereason=tag: sie nutzt YAML-Tagsreason=duplicate_key: {path} kommt doppelt vorreason=merge_key: sie nutzt unter {path} einen Merge-Schlüsselreason=key_not_string: ein Schlüssel unter {path} ist kein Textreason=other: sie verletzt eine Regel für Compose-Dateien
app.elevated.unsupported(Fehler): Die App verlangt das Recht {right}, das diese Version von Pithyx nicht vergibt.app.icon.invalid(Fehler): Das Symbol der App ist nicht verwendbar: {reason}.reason=too_large: es ist größer als 64 KBreason=malformed: es ist keine gültige SVG-Dateireason=not_svg: es ist kein SVG-Bildreason=viewbox: seine viewBox fehlt oder ist nicht quadratischreason=doctype: es enthält einen DOCTYPEreason=processing_instruction: es enthält eine Verarbeitungsanweisungreason=element_forbidden: es enthält das Element {element}reason=event_attribute: es enthält das Ereignisattribut {attribute}reason=external_href: es verweist auf etwas außerhalb der Dateireason=style_import: seine Styles nutzen @importreason=style_url: es lädt mit url() etwas außerhalb der Dateireason=style_escape: seine Styles enthalten Escape-Sequenzenreason=other: es verletzt eine Regel für Symbole
app.manifest.cron_invalid(Fehler): Der Zeitplan unter {path} ist kein gültiger Cron-Ausdruck: {cron}app.manifest.duplicate(Fehler): Das Manifest enthält {value} doppelt (unter {path}).app.manifest.id_invalid(Fehler): Die App-ID {id} ist ungültig. Sie besteht aus der umgekehrten Domain des Autors und dem App-Namen, zum Beispiel com.example.chat.app.manifest.id_reserved(Fehler): Die App-ID {id} ist für die Apps reserviert, die mit Pithyx kommen.app.manifest.invalid_json(Fehler): Das Manifest der App (pithyx.json) ist kein gültiges JSON.app.manifest.pithyx_invalid(Fehler): Der Pithyx-Versionsbereich {pithyx} im Manifest ist ungültig.app.manifest.reference_unknown(Fehler): Das Manifest verweist unter {path} auf {name}, das es nicht deklariert.app.manifest.schema_violation(Fehler): Das Manifest der App ist unter {path} ungültig ({keyword}).app.manifest.sdk_invalid(Fehler): Der SDK-Versionsbereich {sdk} im Manifest ist ungültig.app.manifest.version_unsupported(Fehler): Diese App braucht eine neuere Version von Pithyx (Manifest-Version {version}, diese Box liest Version {supported}).app.manifest.window_size_invalid(Fehler): Die kleinste Fenstergröße der App ist größer als ihre Standardgröße.app.package.invalid(Fehler): Die Datei ist kein gültiges App-Paket: {reason}.reason=gzip: sie ist nicht mit gzip komprimiert oder beschädigtreason=format: sie ist kein tar-Archiv, das diese Box liestreason=checksum: ein Header ist beschädigtreason=truncated: sie endet zu frühreason=trailing_data: nach ihrem Ende folgen noch Datenreason=entry_type: {path} ist ein Link oder eine Spezialdateireason=extended_header: sie hat einen erweiterten Header, der nicht erlaubt istreason=name_mismatch: der lange Name von {path} passt nicht zu seinem eigenen Namenreason=other: sie kann nicht gelesen werden
app.package.layout_invalid(Fehler): Das App-Paket ist ungültig: {reason}.reason=missing: {path} fehltreason=unsafe: der Pfad {path} ist nicht erlaubtreason=duplicate: {path} ist doppelt enthaltenreason=unexpected: {path} gehört nicht in ein App-Paketreason=reserved: {path} nutzt einen Namen, der für das Backend reserviert istreason=other: {path} ist nicht erlaubt
Projekte
Abschnitt betitelt „Projekte“Nur die CLI meldet diese. cli.backend.unbuilt kommt vom Vite-Plugin nach vite build, für eine App, deren Backend bisher nur seine Quellform compose.dev.yaml hat, wie in einem Katalog, bevor seine CI die Images baut.
cli.backend.unbuilt(Warnung): {path} is not built yet: run pithyx build, or let the catalog build it from the source form.cli.compose.healthcheck_redundant(Warnung): Service {service} has a Compose healthcheck next to the health of the manifest. Docker starts a process in the container for every check, which delays every start and keeps the idle backend busy. Remove it and let health decide.cli.frontend.missing(Fehler): The frontend build {folder} does not exist. Build the app first, or name the folder with –frontend.cli.frontend.skipped(Warnung): {path} is left out of the package: hidden files and folders cannot be in an app package.cli.icon.template(Warnung): icon.svg is still the template icon (the Pithyx box). Replace it with the icon of your app.cli.lock.invalid(Fehler): {path} is not a valid images lock. Run pithyx lock to write it again.cli.lock.missing(Fehler): {path} is missing. Run pithyx lock to resolve the images of the backend.cli.lock.platform_missing(Warnung): {image} has no image for {arch}; the app will not install on {arch} boxes.cli.lock.stale(Fehler): {path} does not match the Compose file ({reason}). Run pithyx lock.reason=missing: {image} is not lockedreason=unused: {image} is not usedreason=other: {image} differs
cli.manifest.missing(Fehler): pithyx.json does not exist in {folder}. Run the command in the project folder of an app, or name that folder.
Kataloge
Abschnitt betitelt „Kataloge“Gemeldet von den catalog-Befehlen.
store.catalog.architecture_missing(Fehler): Der Katalog führt unter {path} ein Image ohne die Architektur {architecture}.store.catalog.data_version_decreased(Fehler): Der Katalog senkt unter {path} die Datenversion auf {dataVersion}, nach {previous} in einer älteren Version.store.catalog.id_reserved(Fehler): Der Katalog nutzt unter {path} die ID {id}, die nur der offizielle Pithyx-Katalog nutzen darf.store.catalog.invalid_json(Fehler): Die Datei {file} des Katalogs ist kein gültiges JSON.store.catalog.mismatch(Fehler): Der Index des Katalogs hat unter {path} den Wert {value}, diese Box erwartet aber {expected}.store.catalog.rule_violation(Fehler): Der Pull Request verletzt eine Regel des Katalogs: {rule}.rule=one_app: {path} liegt außerhalb des einen App-Ordners, den ein Pull Request ändern darfrule=required_file: {path} fehltrule=file_type: {path} ist eine Dateiart, die ein Katalog nicht annimmtrule=binary: {path} ist binär oder kein UTF-8rule=minified: {path} sieht minifiziert oder generiert ausrule=media: {path} ist nicht das Bild oder die Schrift, die der Name angibtrule=unpinned: Zeile {line} von {path} nutzt das Image {image}, das nicht mit @sha256 festgelegt istrule=screenshot: {path} ist kein Screenshot direkt in screenshots/ als PNG-, JPEG- oder WebP-Datei mit kleingeschriebenem Namen und höchstens 1 MBrule=screenshots: {path} enthält mehr als {limit} Screenshotsrule=app_size: {path} ist größer als {limit} Byterule=folder_id: der Ordner von {path} muss wie die ID der App heißen: {id}rule=manifest_field: das Manifest {path} braucht das Feld {field}rule=license: {license} in {path} ist keine von der OSI anerkannte Lizenzrule=version_not_higher: Version {version} in {path} ist nicht höher als die veröffentlichte {published}rule=maintainer: {author} gehört nicht zu den Maintainern der Apprule=maintainers_invalid: {path} ist keine gültige Liste von Maintainernrule=other: {path} verletzt eine Regel
store.catalog.schema_violation(Fehler): Die Datei {file} des Katalogs ist unter {path} ungültig ({keyword}).store.catalog.sequence_old(Fehler): Der Index des Katalogs ist älter (Sequenz {sequence}) als einer, den diese Box schon geprüft hat ({known}). Die Box behält ihre Kopie.store.catalog.signature_invalid(Fehler): Der Index des Katalogs ist nicht korrekt signiert ({reason}). Die Box behält ihre zuletzt geprüfte Kopie.reason=missing: die Signatur fehltreason=malformed: die Signaturdatei ist ungültigreason=untrusted: keine Signatur stammt von einem Schlüssel, dem diese Box für ihren Kanal vertrautreason=mismatch: eine Signatur passt nicht zum Indexreason=other: die Signatur belegt ihn nicht
store.catalog.version_unsupported(Fehler): Die Datei {file} des Katalogs hat die Formatversion {version}, diese Box liest Version {supported}. Aktualisiere Pithyx, um diesen Katalog zu nutzen.store.package.hash_mismatch(Fehler): Eine Datei des Katalogs passt nicht zu seinem Index ({path}). Die Box installiert sie nicht.