@archetech/hub-client (1.0.2)
Installation
@archetech:registry=https://git.archetech.ch/api/packages/archetech/npm/npm install @archetech/hub-client@1.0.2"@archetech/hub-client": "1.0.2"About this package
@archetech/hub-client
Client-Bausteine für Produkte an der Archetech-Update-/Feedback-Pipeline: anonyme Registrierung, Meldungen einreichen und verfolgen, Auto-Update und Testversionen (Preview) für den Melder.
Quelle: client/ im Infra-Repo archetech/hub. Ausführliche Anleitung inklusive Serverseite:
docs/produkt-anschliessen.md in demselben Repo.
Installation
bun add @archetech/hub-client
.npmrc im Webapp-Verzeichnis, direkt neben der package.json (enthält kein Geheimnis,
gehört ins Git). Bun liest .npmrc nicht aus übergeordneten Verzeichnissen — am Repo-Root wird
sie stillschweigend ignoriert:
@archetech:registry=https://git.archetech.ch/api/packages/archetech/npm/
Voraussetzungen: Solid 1.9+, Vite mit vite-plugin-solid, @tauri-apps/api,
@tauri-apps/plugin-updater, @tauri-apps/plugin-process.
Verwendung
Einmal beim App-Start, vor jedem anderen Aufruf:
import { configureHub } from "@archetech/hub-client"
configureHub({
product: "mein-produkt", // exakt wie im Produktregister des hub
baseUrl: "https://mein-produkt.archetech.ch",
teamLabel: "Feedback an das Mein-Produkt-Team", // optional
storagePrefix: "mein-produkt", // optional, Default: product
})
Danach:
import {
getInstanceInfo, registerInstance,
refreshMyReports, countUnseenChanges, markReportsSeen,
checkForAppUpdate, installUpdate, relaunchApp,
} from "@archetech/hub-client"
import { FeedbackDialog } from "@archetech/hub-client/FeedbackDialog"
<FeedbackDialog
instanceInfo={instanceInfo()}
onClose={() => setFeedbackOpen(false)}
onBeforeInstall={stopSidecarForUpdate} // optional
onInstallAborted={resumeSidecar} // optional
/>
Was das Produkt selbst stellen muss
- CSS. Der Dialog nutzt die Klassen
dialog-backdrop,dialog,dialog-input,primary-button,secondary-button,dialog-actions,dialog-text,dialog-errorundfeedback-*. So behält jede App ihr eigenes Aussehen. - Tauri-Kommandos in
src-tauri:get_instance_id(fällt im Browser-Dev-Modus auflocalStoragezurück),install_preview_update,open_download_url. - Lebenszyklus-Haken, falls die App Dateien sperrt, die ein Installer ersetzen muss —
etwa einen Sidecar:
onBeforeInstallstoppt ihn,onInstallAbortedfährt ihn wieder hoch (nach erfolgreicher Installation läuft es bewusst nicht, dann folgt ein Neustart der App).
Auslieferung
Das Paket liefert TypeScript-/TSX-Quellcode unter der solid-Export-Bedingung aus; die
Kompilierung übernimmt vite-plugin-solid im Produkt. Das ist der übliche Weg für
Solid-Bibliotheken und stellt sicher, dass Solids JSX-Transform greift — ein vorkompiliertes
Paket würde die Reaktivität still verlieren.
Versionierung
Die Hauptversion folgt dem API-Vertrag des hub (Umsetzungsplan 2.2/2.4). Eine Änderung am Vertrag heisst neue Hauptversion hier und ein Update in allen Produkten.
Dependencies
Development Dependencies
| ID | Version |
|---|---|
| @tauri-apps/api | ^2 |
| @tauri-apps/plugin-process | ^2 |
| @tauri-apps/plugin-updater | ^2 |
| solid-js | ^1.9.13 |
| typescript | ~6.0.2 |
Peer Dependencies
| ID | Version |
|---|---|
| @tauri-apps/api | >=2 |
| @tauri-apps/plugin-process | >=2 |
| @tauri-apps/plugin-updater | >=2 |
| solid-js | >=1.9 |