archetech

@archetech/hub-client (1.0.2)

Published 2026-09-11 12:37:40 +00:00 by mahboob

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-error und feedback-*. So behält jede App ihr eigenes Aussehen.
  • Tauri-Kommandos in src-tauri: get_instance_id (fällt im Browser-Dev-Modus auf localStorage zurück), install_preview_update, open_download_url.
  • Lebenszyklus-Haken, falls die App Dateien sperrt, die ein Installer ersetzen muss — etwa einen Sidecar: onBeforeInstall stoppt ihn, onInstallAborted fä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
Details
npm
2026-09-11 12:37:40 +00:00
2
UNLICENSED
latest
11 KiB
Assets (1)
Versions (3) View all
1.0.2 2026-09-11
1.0.1 2026-09-11
1.0.0 2026-09-11