Repository navigation
Conversation
chore(beta): release 1.1.0-beta
Ports the standalone web-search extension into the add-on, adapted: - Providers: perplexity (API), perplexity_openrouter (Perplexity models via OpenRouter), brave (Brave Search). Chosen in a new websearch config section. - HA-tailored intents: docs, troubleshoot, howto, quick, search. No disk cache. Never uses a deep-research model. - Registers ONLY when enabled + keyed (lib/websearch-config.ts); disabled leaves no tool and no prompt footprint. When enabled, injects a 'validate via search instead of pre-trained knowledge' instruction into the system prompt. - Rich output via defineHaTool (kind:message markdown + Sources); tool-meta entry for the web_search render block. - config.yaml websearch section + schema, init-pi env mapping, en/da translations.
chore(beta): release 1.1.0-beta.1
Web search is now set up inside the Pi Agent panel (⚙️ settings) like the AI provider, not via editable config.yaml fields: - provider-setup.ts: a 'Web search (optional)' section — provider + API key, Test&save, disable, live status. - engine.ts: readWebsearch + validateWebsearch (real per-provider test call) + saveWebsearch/disableWebsearch → writeAddonOptions(websearch) → set WEBSEARCH_* env → reloadTools() (loader.reload + rebuild session) so web_search registers LIVE with no restart. WS save_websearch/disable_websearch + websearch_status. - types.ts / chat-app.ts / i18n: websearch events, status plumbing, labels. - config.yaml websearch is now an app-managed stub (translations updated); the beta tile mirrors it, enforced by dev-scripts/check-beta-config.py wired into build.yaml (this drift hid web_search from beta.1). Refs #EFEAR? no — web_search.
The in-app websearch validate call sent max_tokens:1, which Perplexity (and Perplexity-via-OpenRouter) reject with HTTP 400 'max_tokens must be at least 16'. Bump to 16 so Save & test succeeds.
chore(beta): release 1.1.0-beta.2
Full-window width felt wrong on desktop. Cap + center ONLY the message rows at 900px (--pi-maxw); the header/nav bar and the composer (chat input) stay full width. Bubbles are 90% max — user right-aligned, assistant replies left-aligned. Tool blocks keep the message-column width. On mobile the rows just fill the viewport (max-width only caps).
…rger On phones the in-app header stacked under Home Assistant's own ingress header, wasting vertical space. Below 640px: hide our header entirely and show a menu burger at the bottom-left of the composer that opens the drawer. Moved AI settings and the theme toggle into the drawer (alongside new chat + setup) so every header action stays reachable. Desktop keeps the full top header.
chore(beta): release 1.1.0-beta.3
beta is the integration branch (feature PRs target beta); main is release-only via a beta->main merge at stable time. Every commit must carry its true Conventional-Commit type so features flow cleanly on beta->main and both release-please changelogs stay correct.
…lease flow Grounded in release-please's branch-history model (googleapis/release-please#2515): features are authored once on beta and promoted to stable by git-merging beta->main, never cherry-picked. Adds the post-release main->beta back-merge and the Release-As graduation note.
…cal goes stale) release-please + the tile-sync bot push to both main and beta on their own, so local refs fall behind origin — fetch and branch/rebase onto the remote ref before working.
The virtual /setup-guide session row in the drawer is no longer used. Removed it from the history list; the wizard stays reachable via the welcome-screen chip. Closes #WSWXV
pi's bash has no default timeout and an effectively unbounded max, so a command with no timeout runs forever. Clamp event.input.timeout in the tool_call hook (default 60, max 600); in-place mutation is honored by the agent loop. Closes #EFEAR
On WS (re)connect the engine sent config/websearch/stats/sessions but not the active session history, so a page reload dropped to a blank new chat. Send the current history (+ title) on connect; empty for a fresh session. Closes #DMDQW
chore(beta): release 1.1.0-beta.4
…t slow amd64 built in 1.4 min while the aarch64 leg hung ~50 min on the deprecated home-assistant/builder@master action. Never wait out a stalled build.
The mobile drawer rendered AI provider & theme as .sess rows under the Sessions heading, so they looked like virtual chat-history entries. Move them into a distinct icon-labelled actions group above a divider; the Sessions list now only holds real chats.
@master is deprecated + moving and hung the aarch64 leg for ~50 min during the beta.4 build. Pin to the latest immutable release for reproducible builds. Full BuildKit migration tracked in #H5U58.
chore(beta): release 1.1.0-beta.5
The builder action resolves the builder *image* by its own version tag, and
only 2026.02.1 has a published {arch}-builder image. Pinning the action to
2026.06.0 made it pull ghcr.io/home-assistant/amd64-builder:2026.06.0 which
does not exist (manifest unknown) and the build failed. 2026.02.1 is the last
tag with a real builder image — what @master silently falls back to — so it is
immutable and working.
Release-As: 1.1.0-beta.6
chore(beta): release 1.1.0-beta.6
…ombie tell = frozen timestamps)
…stant/builder) Replace the deprecated home-assistant/builder action with docker buildx + docker/build-push-action, building each arch on its NATIVE runner (ubuntu-latest for amd64, ubuntu-24.04-arm for aarch64) — no QEMU emulation, so aarch64 builds fast instead of the ~15-20 min emulated builds that hung beta.4. The Dockerfile is already buildx-ready (ARG BUILD_FROM). Per-arch image names + io.hass labels are preserved; PR builds build without pushing. Resolves the deprecated-builder + slow/hung-aarch64 problems (#H5U58). Release-As: 1.1.0-beta.7
chore(beta): release 1.1.0-beta.7
…r sessions Sessions were global — every HA user saw the same conversation + session list. Now each user (X-Remote-User-Id from ingress) gets its own AgentSession, event stream, and single-flight lock, held in a Map (cap 5, LRU-evict idle). Sessions run in PARALLEL across users, one turn at a time per user, on the shared ModelRuntime (HA WS is id-multiplexed so concurrent tool calls are safe). Storage is isolated via a per-user sessionDir (SessionManager.create/list/open take a sessionDir separate from cwd) — cwd stays agentCwd so tools/scratch/ write-guard are unchanged. Idle sessions (>30 min, no clients) dispose to free heap and reopen from disk on demand. pi_agent.ask keeps its own isolated ephemeral session + queue. Model change applies via setModel (preserves each user's conversation); websearch enable recreates sessions to re-register tools. Closes #NANH3
chore(beta): release 1.1.0-beta.8
Add a firm Core Principle: talking/asking is not a command to change things. When the user asks or discusses, answer or propose — do not create/edit automations, scripts, helpers, config, write files, or call side-effecting services unless told to do that specific thing. May show a plan or proof, then wait for an explicit go-ahead. Stops the agent running off coding on its own.
chore(beta): release 1.1.0-beta.9
Reframe the scope guardrail around identity + method: it is a Home Assistant assistant that behaves like a knowledgeable USER, not a software developer. It must always use approved, normal Home Assistant ways (API tools, standard config, conventions), never hack or work around guards (.storage edits, write-guard bypass, shell tricks), and when there is no normal path it must propose and get explicit user approval before going off the beaten path.
On desktop the AI-provider/model and theme controls already live in the top-right header, so repeating them in the drawer's action group was redundant. The header is hidden on mobile (<=640px) where the drawer is the only way to reach them, so scope .drawer-actions to the mobile breakpoint.
chore(beta): release 1.1.0-beta.10
# Conflicts: # addon/translations/da.yaml # addon/translations/en.yaml
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.
Promote the beta integration branch to main for the 1.1.0 stable release. Brings web search + in-app setup, responsive chat layout, per-user sessions, buildx-on-native-runners CI, and the batch of drawer/bug/guardrail fixes. Merge (not squash) so release-please computes the stable changelog from the true commit history.