Version Packages#363
Merged
Merged
Conversation
fe48841 to
1537969
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Checkstack v0.117.0 Changelog
Minor Changes
feat(ai): add an onboarding playbook to the chat assistant
When a monitoring-setup tool is in scope this turn (creating a system, proposing
a health check, or managing environments), the chat system prompt now injects an
onboarding section that steers the model to prefer the HTTP strategy for a URL,
ask before guessing, create-and-assign a check in one step, and use environments
instead of cloning a system per deployment stage. Like the automation playbook,
it stays out of the always-on prompt on pure read turns.
Packages: @checkstack/ai-backend
feat(ai): clickable answer options in chat (askOperator)
Add an
askOperatortool the assistant calls to ask a question with clickableanswer chips (plus an optional free-text box) instead of a plaintext list.
Clicking a chip sends that answer as the operator's next message. The chat
renders the chips from a
__questiontool-output card, mirroring the existingconfirm-card pattern, and calling the tool ends the turn (the operator's choice
arrives as their next message).
The system prompt now steers the model to use
askOperatorfor discrete-choiceclarifications (which system, which protocol, how often, which environment),
reserving prose questions for free-form values like a URL.
Packages: @checkstack/ai-backend, @checkstack/ai-frontend
feat(catalog): AI tools for environments
Add
catalog.createEnvironmentandcatalog.setSystemEnvironmentsAI tools plusa
catalog.listEnvironmentsread projection, so the assistant can modelone-system-many-environments instead of suggesting a separate system per
environment. The
catalog.createSystemtool description now teaches the 1-1system/check pairing and points to environments for modelling dev/staging/prod.
Packages: @checkstack/catalog-backend
feat(common): add the environments docs slug to APP_DOC_SLUGS
Expose
APP_DOC_SLUGS.environmentsso in-app deep links can point to theEnvironments concept page (used by the onboarding wizard's environments hint).
Guarded by the existing docs-links contract test.
Packages: @checkstack/common, @checkstack/release
feat(frontend): guided "create your first check" wizard and onboarding nudges
Add a
FirstCheckWizard, reachable both from the Health Checks empty state andan always-available "Quick start" header button: the user picks a system (a new
one or an existing one), pastes a URL, and the wizard creates the HTTP health
check and the assignment (started immediately) in one guided flow, built on the
new
@checkstack/uiStepper. This makes guided setup usable when onboarding intoan instance that already has systems and checks, not only on first run.
Also add two in-product nudges: an inline "one system, many environments" hint
on the Create System form (so new users stop cloning a system per stage), and a
clear "what an assignment is and why a check needs one" explainer on the
assignment screen's empty state.
Packages: @checkstack/catalog-frontend, @checkstack/healthcheck-frontend
feat(healthcheck): atomically create and assign a health check in one step
Add a
createAndAssignRPC that creates a health-check configuration andassigns it to a system in a single transaction, so the common "one system, one
check" case can never leave a dormant, unassigned check that runs nothing. When
the assignment is enabled it is scheduled immediately, exactly like
associateSystem.The AI
healthcheck.proposetool now prefers the HTTP strategy for a URL(instead of authoring a script health check) and, when given
assignToSystemId,creates, assigns, and starts the check in the same approval.
Also fixes a latent bug where the
associateSystemhandler silently dropped theper-assignment
notificationPolicybefore it reached the database.Packages: @checkstack/healthcheck-backend, @checkstack/healthcheck-common
feat(ui): add a Stepper primitive
Add a presentational
Stepperstep-indicator component and auseStepperstatehook for building guided multi-step flows (used by the new "create your first
check" onboarding wizard). Completed steps are navigable; the active step is
highlighted; future steps are muted. Animations are disabled on low-power
devices via
usePerformance.Packages: @checkstack/ui
fix(catalog): emit a realtime signal on catalog mutations so clients refresh
Catalog was the only domain plugin that never broadcast a realtime signal, so
any out-of-band write - the AI assistant (which mutates on the backend, with no
frontend mutation to invalidate), GitOps reconcile, or another pod/user - left
every other client's catalog cache stale until a hard reload. Most visibly, a
system created via the assistant 404'd on the catalog detail page (which
resolves a system by finding it in the cached
getSystemslist) until reload.Add a
CATALOG_CHANGEDsignal (catalog.changed) and broadcast it from everycatalog mutation (system, group, environment CRUD and membership changes). The
frontend signal auto-invalidator refreshes the
[[catalog]]react-query cacheon every connected client, so out-of-band catalog changes now appear without a
reload.
Packages: @checkstack/catalog-backend, @checkstack/catalog-common
fix(healthcheck): emit a realtime signal on config/assignment changes
The health-check executor broadcasts run/status signals, but config and
assignment CRUD (create/update/delete/pause/resume, associate/disassociate,
create-and-assign) emitted nothing - so a check created or edited out-of-band
(the AI assistant, GitOps, another pod/user) did not appear in an open Health
Checks list until the first run fired a status signal, up to an interval later.
Add a
HEALTHCHECK_CONFIG_CHANGED(healthcheck.config.changed) signal,broadcast from every config/assignment mutation, so the frontend signal
auto-invalidator refreshes the
[[healthcheck]]cache on every connected clientimmediately.
Packages: @checkstack/healthcheck-backend, @checkstack/healthcheck-common
fix(mobile): make the nav drawer fully scrollable and de-clutter the navbar
The mobile navigation drawer (
Sheet) spanned the layout viewport(
inset-y-0 ... h-full), so on a phone its bottom - and the last menu items -sat behind the browser URL bar and could not be reached. The sheet is now bound
to the dynamic viewport (
h-[100dvh], top-anchored), so it ends at the visiblebottom and scrolls to the last item.
The "Checkstack" wordmark in the navbar is now hidden below the
smbreakpoint(the logo still anchors the home link), freeing space on the cramped mobile
navbar.
Packages: @checkstack/frontend, @checkstack/ui
Patch Changes
@checkstack/cache-api@0.3.15
Packages: @checkstack/cache-utils
@checkstack/scripts@0.6.5
Packages: create-checkstack-plugin
@checkstack/signal-common@0.2.13
Packages: @checkstack/signal-frontend