Skip to content

v0.45.0

Choose a tag to compare

@angel-ip angel-ip released this 13 Oct 13:45
· 134 commits to main since this release
083f41f

@kanzo-tech/llm (minor)

  • A local model's load is something you read. localModelLoad(id) from @kanzo-tech/llm/local answers where the download and load stand: { state: "idle" }, { state: "loading", progress, text }, { state: "ready" } or { state: "failed", error }. The type is ModelLoad, on @kanzo-tech/llm. It answers the same whichever screen started the load. watchLocalModel(id, listener) says when it changes, so useSyncExternalStore((l) => watchLocalModel(id, l), () => localModelLoad(id)) is the whole subscription.
  • Breaking: LocalModelSettings.onProgress is gone. A host that kept its own store from it reads localModelLoad instead, and draws it with @kanzo-tech/ai's ModelBadge.

@kanzo-tech/ai (minor)

  • The parts a guided chat is built from, beside the transcript and the composer:

    • Question, QuestionPrompt, QuestionDescription, QuestionOptions and QuestionOption put a question to the person in a panel. The options are outline buttons and the chosen one is filled. It is a radio group, so the arrow keys move between options, and onValueChange is the answer, in one press. A Task's Decision has this shape.
    • Working says work is under way: a spinner and its words in a role="status", with @kanzo-tech/ui's Progress beside it when there is a measure.
    • ModelBadge (ModelBadgeProps, ModelBadgeTranslations) shows the model in the page as a badge: Preparing the model · 42%, Model ready or Model failed. Pressing it opens the progress bar and the engine's words, or the failure as a Problem with a retry (no retry for ai/unavailable). Give it localModelLoad's value.

    These replace a decision drawn with RadioGroup, a spinner beside a sentence, or a model-loading bar of your own.

  • ConversationScrollButton no longer stays on screen with nothing to scroll to. When the transcript stops overflowing without a scroll (the panel grew, the device turned, a turn was removed), Conversation measures again and takes the pin back.

  • Chat and Assist draw a model's offers with @kanzo-tech/ui's Suggestions.

@kanzo-tech/ui (minor)

  • Suggestions takes pending: that many pills in skeleton after the ones already there, and the strip stays aria-busy until they land. It is for offers that arrive one by one, such as a model's. A strip that drew its own skeletons beside its pills can pass the count instead.

@kanzo-tech/theme (patch)

  • kanzo-dark carries its brand at the same weight as kanzo:

    • --primary and --ring are #5cb572 rather than the neon #1ae973.
    • The first chart series, --chart-1, is the brand's green #52b770 rather than the lime #64c600.
    • The neon stays as --success, as in the light theme.

    Buttons, focus rings and the first series of every chart are calmer on a dark Kanzo page. A host that matched the old neon in its own CSS should read var(--primary) instead.