Releases: motojinc25/chatwalaau
ChatWalaʻau v0.91.0
This release adds one new feature to ChatWalaʻau: the OpenAI (direct) provider.
Highlights
OpenAI (direct) provider (v0.91.0)
- Use OpenAI's own public API as a third model provider. Alongside Azure OpenAI and Anthropic (Claude), you can now configure models from the direct OpenAI API. Set
OPENAI_MODELS(comma-separated) andOPENAI_API_KEY, and the models appear in the same model selector and can be switched per turn. - API-key authentication, with an optional gateway override. The OpenAI public API authenticates by API key only. Set
OPENAI_API_KEY; optionally setOPENAI_BASE_URLto point at an OpenAI-compatible gateway. - Reasoning models, identical experience to Azure OpenAI. v1 supports reasoning models (for example gpt-5.x / o-series). They behave exactly like Azure OpenAI reasoning models: the same per-message reasoning-effort and verbosity controls, hosted web search (country-scoped via
WEB_SEARCH_COUNTRY), structured output (JSON / JSON Schema), and background responses. Non-reasoning models (gpt-4o / gpt-4.1) are planned for a later release. - Predictable model ordering and unique ids. The model selector lists Azure first, then Anthropic, then OpenAI, and the default model is unchanged. Model ids must be unique across
AZURE_OPENAI_MODELS,ANTHROPIC_MODELS, andOPENAI_MODELS; a collision is reported at startup. - Clearer billing errors. When a provider rejects a request because the account is out of credits or quota, the on-screen guidance now names OpenAI billing alongside Anthropic Plans & Billing and the Azure OpenAI quota, so it is obvious where to add credits.
Included in this release
This release includes implementation work from:
- v0.91.0 through v0.91.0
Notes
- No breaking changes. The OpenAI provider is additive. With
OPENAI_MODELSunset (the default), the new provider is inert and existing Azure-only and Anthropic deployments behave byte-for-byte identically to v0.90.1 -- no removed or renamed endpoints, settings, or environment variables, no data migration, and no new dependency. - Upgrade note (additive, non-breaking): three new optional environment variables (
OPENAI_MODELS,OPENAI_API_KEY,OPENAI_BASE_URL). No operator action is required to upgrade. - Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.91.0 - Previous release:
0.90.0
ChatWalaʻau v0.90.1
This release contains quality-of-life fixes for ChatWalaʻau: the coding workspace is created automatically, and the File Explorer gets a clearer Refresh indicator and a safer download surface.
Highlights
Fixes and improvements (v0.90.1)
- The coding workspace is created automatically. When
CODING_ENABLED=trueand the configuredCODING_WORKSPACE_DIRdoes not exist, the runtime now creates it (including parent directories) at startup instead of failing withCODING_WORKSPACE_DIR does not exist. If it cannot be created (e.g. a read-only parent or a path component that is a file), a clear error is shown explaining why. - File Explorer Refresh shows progress. Clicking Refresh in the file tree now spins the icon and disables the button until the reload completes. The indicator is held for at least one full spin (about one second) so a fast refresh is still visible instead of flashing by.
- Removed the "Download workspace as ZIP" toolbar button. Downloading the entire workspace could target a very large amount of data, so the whole-workspace ZIP shortcut was removed. Per-folder Download as ZIP (from a folder's right-click menu) and single-file download remain, and stay bounded by the existing download size / entry limits.
- Operator declarative-agent files are ignored by tooling. The default declarative-agents folder (
.agents/, used byDECLARATIVE_AGENTS_DIR) is now excluded from Git, the Docker build context, and the public repository sync -- consistent with the other operator runtime folders -- so operator-authored agent YAML is not committed or shipped. The built-in CORE agent is code and is unaffected.
Included in this release
This release includes implementation work from:
- v0.90.1 through v0.90.1
Notes
- No breaking changes. This is a patch release: the changes are additive or behavior-preserving (a previously fatal startup error becomes a successful auto-create, a UI affordance is clarified, and a redundant whole-workspace download shortcut is removed). No removed or renamed endpoints, settings, environment variables, contracts, or capabilities; no data migration; no new dependency.
- Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.90.1 - Previous release:
0.90.0
ChatWalaʻau v0.90.0
This release adds one new feature to ChatWalaʻau: Declarative Agent Configuration.
Highlights
Declarative Agent Configuration (v0.90.0)
- Define agents in YAML, switch them at runtime. Describe an agent's persona, model selection, reasoning options, and output policy in a YAML file using the Microsoft Agent Framework declarative format (
agent-framework-declarative), then switch the active agent from the web app -- no code change and no restart. A new robot icon in the sidebar footer (next to the File Explorer icon) opens a manager that lists the agents as a nested-folder tree; activating one rebuilds the agents with a blocking "rebuilding" indicator. - The YAML is a specification; ChatWalaʻau owns construction. Fields ChatWalaʻau understands are mapped onto the real agent:
instructions-> the agent persona (use=Identityor omit it to keep the global identity);model.id-> the preferred default model (the other configured models stay selectable, so the model picker never disappears);model.options.effort/verbosity-> reasoning effort and text verbosity;outputSchema-> a default JSON output schema. Credentials / connection in the YAML are never honored, and classic sampling parameters (temperature,top_p, ...) are rejected -- the supported models are reasoning-only. - Applied as defaults, reflected in the UI, overridable per message. When you switch to an agent, the model picker, the reasoning-effort / verbosity controls, and the JSON-schema editor update to reflect it; its options take effect by default and you can still override any of them per message.
- Built-in CORE agent, byte-for-byte default. The standard ChatWalaʻau agent is registered as the built-in CORE agent and is active out of the box. With
DECLARATIVE_AGENTS_DIRunset there are no custom agents and the runtime is exactly as before. Custom agents are discovered fromDECLARATIVE_AGENTS_DIR(nested folders allowed) through a path-jailed loader. - Validation with visible errors; warnings block activation. Each agent is validated on listing and activation: a malformed YAML or a rejected sampling parameter is a hard error, and an agent that maps with any warning (ignored connection/credentials, an unknown or invalid
effort/verbosityvalue, or an unconfiguredmodel.id) cannot be activated until the YAML is fixed -- the manager flags it, lists the warnings, and disables Activate. The active agent is also written to the log at startup and on every switch. - Web-app only switching; API and Teams follow. The active agent is switched from the web app; the OpenAI-compatible API and Microsoft Teams always use whichever agent is currently active. The selection is in-memory only, so a restart re-initializes to the CORE agent.
Included in this release
This release includes implementation work from:
- v0.90.0 through v0.90.0
Notes
- No breaking changes. Declarative agent configuration is additive. With
DECLARATIVE_AGENTS_DIRunset (the default) the only agent is the built-in CORE agent, which reproduces the previous behavior byte-for-byte; no removed or renamed endpoints, settings, or environment variables, and no data migration. - Upgrade note (additive, non-breaking): one new backend dependency (
agent-framework-declarative, used only to parse/validate YAML; the loader degrades gracefully if it is absent) and one new environment variable (DECLARATIVE_AGENTS_DIR, default empty). No new frontend dependency. - Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.90.0 - Previous release:
0.89.0
ChatWalaʻau v0.89.0
This release enhances the File Explorer in ChatWalaʻau with four hands-on additions: file/folder download, PDF preview, image preview, and a split editor.
Highlights
File Explorer Enhancements (v0.89.0)
- Download a file or a folder. Right-click a file in the tree (or an open editor tab) and choose Download; right-click a folder and choose Download as ZIP to package it on the fly. A toolbar button downloads the whole workspace. Downloads are size/entry capped (
FILE_EXPLORER_MAX_DOWNLOAD_BYTES, default 100 MiB;FILE_EXPLORER_MAX_DOWNLOAD_ENTRIES, default 5000) and are separate from the editor's open/save limit, so you can download files larger than the editor will open. - Preview PDFs with zoom. Opening a
.pdfnow shows a built-in viewer with zoom in / out and page navigation, instead of the old "binary file -- read-only" message. The PDF viewer is fully self-hosted (no external/CDN requests), keeping the localhost-first / offline posture. - Preview images with zoom. Opening an image shows a built-in viewer with zoom and pan (mouse wheel and on-screen controls). Previews are view-only.
- Split the editor and move tabs. The editor area can be split into multiple panes (side-by-side or stacked): drag a tab to a pane's edge to split in that direction, or drag it onto another pane's tab strip to move it there. Drag the divider to resize. A file lives in one pane at a time, the unsaved-changes confirmations are preserved across panes, and the split layout is temporary (it resets to a single pane the next time you open the explorer).
- Still opt-in and jailed. Everything stays inside
CODING_WORKSPACE_DIRthrough the same workspace boundary the coding tools use. The feature is off by default (FILE_EXPLORER_ENABLED); when off, the launcher icon is hidden,/filesis not offered, and the API is inert.
Included in this release
This release includes implementation work from:
- v0.89.0 through v0.89.0
Notes
- No breaking changes. These are additive enhancements to an opt-in feature. With
FILE_EXPLORER_ENABLEDoff (the default) the runtime is byte-for-byte the previous behavior. No removed or renamed endpoints, settings, or environment variables, and no data migration. - Upgrade note (additive, non-breaking): the PDF viewer adds one new frontend dependency (
pdfjs-dist, with a self-hosted worker). No new backend dependency. - Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.89.0 - Previous release:
0.88.1
ChatWalaʻau v0.88.1
This release adds one new feature to ChatWalaʻau: Microsoft Teams Integration.
Highlights
Microsoft Teams Integration (v0.88.1)
- Talk to the ChatWalaʻau agent directly from Microsoft Teams -- a 1:1 personal chat, a group chat, or a channel -- using the Teams bot chat UI and Adaptive Cards. It is the first external chat-channel integration: the same agent you use in the web app answers in Teams, with no separate chat logic.
- Receives messages at
POST /api/teams/messages(path configurable), authenticated by Microsoft Bot Framework JWT. In a group or channel the bot is addressed with an @mention (its own mention is stripped before the agent reads your message), and its reply @mentions you back so it is clear who it is answering (personal chats carry no mention). - Replies proactively so long answers never time out Teams: the request is acknowledged immediately, the agent turn runs in the background, a typing indicator shows while it works, and the reply is posted when ready (split to stay within Teams' ~25000-character message limit).
- Conversations are real chat history. Every Teams turn is saved to the same session store as your Web and API chats, so a personal chat, group chat, or channel accumulates as one conversation, shows up in the sidebar and search with a "Teams" badge, and the assistant remembers the earlier turns of that conversation.
- Generated images display inline in Teams -- the actual image data is sent to the conversation (not a link), and the same image renders when you open that Teams conversation in the Web app.
- Tool approval in Teams is an Adaptive Card with Allow Once / Allow Session / Deny -- the agent never runs an approval-gated tool without your decision, and Allow Session remembers the choice for that conversation so it does not re-ask.
- A welcome message is posted when the bot is added to a chat, group chat, or channel, so you can confirm a successful add.
- Access control: optionally restrict who can use the bot to specific Microsoft Entra ID users (by Object ID) via
TEAMS_ALLOWED_USERS; the default is everyone in the bot's reach. - Off by default and self-contained: set
TEAMS_ENABLED=trueplus the bot credentials (TEAMS_APP_ID,TEAMS_APP_PASSWORD,TEAMS_TENANT_ID) to turn it on. When off, the Teams endpoint is not mounted and the Teams SDK is never loaded -- the runtime is unchanged. DEMO_MODE deployments are unaffected. - Local development exposes your machine to Teams through a public HTTPS tunnel (Microsoft Dev Tunnels by default; ngrok or cloudflared also work); the bot is registered with the Microsoft Teams CLI (or the Entra / Azure portal).
Included in this release
This release includes implementation work from:
- v0.88.0 through v0.88.1
Notes
- No breaking changes. With no operator action (
TEAMS_ENABLEDunset/false, the default) the Teams endpoint is not mounted, the Teams SDK is never imported, and the runtime is byte-for-byte the previous behavior. No removed or renamed endpoints, settings, or environment variables, and no data migration. - Upgrade note (additive, non-breaking): the Microsoft Teams SDK for Python (
microsoft-teams-apps) is now a default dependency, so an upgrade pulls it in; it is only imported at runtime whenTEAMS_ENABLED=true. - Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.88.1 - Previous release:
0.87.0
ChatWalaʻau v0.87.0
This release adds one new feature to ChatWalaʻau: the Workspace File Explorer.
Highlights
Workspace File Explorer (v0.87.0)
- A hands-on, VSCode-style File Explorer for browsing and editing files in your coding workspace by hand -- a human counterpart to the agent's coding tools, over the same workspace and the same safety boundary.
- Open it from a file-tree icon in the sidebar footer (next to the Cron icon) or by typing
/filesin the chat input. It opens a full-screen overlay: a file tree on the left and a tabbed code editor (monaco, light theme) on the right, with an adjustable splitter between them. - Browse and open: the tree loads one level at a time; a single click selects (a folder also expands/collapses) and a double click opens a file in a tab (Enter opens it too). Open several files as tabs; each tab shows a dot when it has unsaved changes.
- Edit and save: full monaco editing, including its built-in Copy / Cut / Paste / Find right-click menu. Save with
Ctrl/Cmd+Sor the Save button; a brief indicator shows progress. - Manage files: right-click the tree for New File / New Folder / Rename / Delete / Open (folders and files show the right options), and drag items to move them. Right-click a tab for Close / Close Others / Close All.
- Safe by design: deleting asks for a final confirmation; any close that would drop unsaved work asks first, and confirming an explorer close discards your in-progress edits and reopens those files clean (so editing the same file from elsewhere is never blocked). Large files and binary files open read-only, and saving warns if the file changed on disk since you opened it.
- Off by default and self-contained: set
FILE_EXPLORER_ENABLED=true(withCODING_ENABLED=trueand aCODING_WORKSPACE_DIR) to turn it on; when off, the icon is hidden and the feature is inert. Everything stays inside your workspace folder, and the editor assets are bundled (no external/CDN fetch) and loaded only when the feature is opened.
Included in this release
This release includes implementation work from:
- v0.87.0 through v0.87.0
Notes
- No breaking changes. With no operator action (
FILE_EXPLORER_ENABLEDunset/false, the default) the launcher icon is hidden,/filesis not advertised, and the runtime is byte-for-byte the previous behavior. No removed or renamed endpoints, settings, or environment variables, and no new Python dependency; existing deployments need no migration. - Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.87.0 - Previous release:
0.86.0
ChatWalaʻau v0.86.0
This release improves three existing ChatWalaʻau features so you can pick up out-of-band changes without restarting: Skills runtime reload, MCP tools runtime reload, and a Cron job delete confirmation.
Highlights
Skills runtime reload (v0.86.0)
- A new Reload button in the Skills manager re-reads
SKILL.mdfrom your skills directory and rebuilds the agents, so a skill folder you added or removed on disk is applied without a restart. - Reload is guarded by a confirmation dialog and the same blocking "rebuilding" indicator as Save.
- A skill found on disk but not loaded yet (added since the last build) shows a disabled toggle with a "Reload to apply" hint, so you never toggle something the agent does not actually have.
- The Skills icon is now always shown when reachable, with an empty state (your skills directory + a Reload button) -- so you can bootstrap from zero skills.
MCP tools runtime reload (v0.86.0)
- A new Reload button in the MCP Tools manager re-parses
mcp_servers.jsoncand fully reconnects the servers, then rebuilds the agents -- so a server you added or edited in the config is connected without a restart. - Reconnect uses a new-before-teardown sequence (new connections are established and swapped in before the old ones are closed) to keep the change safe for other concurrent users.
- A server that is configured but not connected yet appears with a disabled toggle and a "Reload to apply" hint until you reconnect it.
- The MCP icon is now always shown when reachable, with an empty state (your config path + a Reload button).
Cron job delete confirmation (v0.86.0)
- Deleting a job from the Cron portal now asks for a final confirmation before it is removed, with a blocking indicator until the delete completes.
Included in this release
This release includes implementation work from:
- v0.86.0 through v0.86.0
Notes
- No breaking changes. With no operator action the runtime is unchanged: agents are still built once at startup, and Reload is an explicit, confirmed action. The only visible change is that the Skills/MCP management icons are now always shown when reachable (previously hidden when empty). No new environment variable, no new dependency.
- Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.86.0 - Previous release:
0.85.1
ChatWalaʻau v0.85.0
This release adds one user-facing feature to ChatWalaʻau: a Cron Scheduler -- run scripts on a schedule, managed from a portal, the API, or the agent.
Highlights
Cron Scheduler
- Schedule scripts to run on a cron expression (5+ field crontab, e.g.
0 9 * * MON), a recurring interval, or once after a delay ("in 30 minutes"). A small, built-in tick loop (default every 60s) runs due jobs -- no OScrontab, no extra daemon. - Three ways to manage jobs: a portal (the clock icon in the sidebar footer next to the info icon, or the new
/croncommand), a REST API (/api/cron/*), and amanage_cronagent tool so you can just ask the assistant ("runscripts/backup.pyevery weekday at 9am"). - Run timeline: the portal shows each job's runs in chronological order with status at a glance; click a run to see its
stdout/stderr. A Refresh button re-polls. - Robust by design: each job stores its next run time and is advanced before it executes, so a crash mid-run never causes a re-fire loop; if the app was down, overdue runs are fast-forwarded instead of firing a backlog; a cross-platform lock keeps a single tick in flight.
- Script-only, sandboxed: jobs run inside your coding workspace through the existing path jail and require coding tools to be enabled. Scripts run via the running interpreter map (
.py,.sh,.ps1,.js, ...) with a per-run timeout and captured logs. - Off by default: the whole feature is opt-in via
CRON_ENABLED; when off, nothing runs and the UI is hidden.
Included in this release
This release includes implementation work from:
- v0.85.0 through v0.85.0
Notes
- No breaking changes. The Cron Scheduler is opt-in via
CRON_ENABLED(default off); with it off the runtime is byte-for-byte the previous release. Cron runs are unattended and execute scripts on a timer, so they require coding tools to be enabled and stay confined to the coding workspace -- only schedule scripts you trust. - Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.85.0 - Previous release:
0.84.0
ChatWalaʻau v0.84.0
This release adds one user-facing feature to ChatWalaʻau: Slash Commands -- run common actions straight from the chat input by typing /.
Highlights
Slash Commands (v0.84.0)
- Type
/in the chat input to run a command. The initial set is/help(a searchable portal of every command),/prompt(run a saved Prompt Template),/skill(invoke an Agent Skill), and/model(switch the active model, alias/m). - Inline completion: as you type you get ghost-text suggestions plus a candidate dropdown -- commands after
/, model names after/model, skill names after/skill, and workspace files after@. Press Tab (or the Right-arrow) to accept, Up/Down to move, Esc to dismiss. - Dynamic arguments for templates and skills: positional
$1,$2,${N}(wrap a value in"double quotes"to keep spaces together) and the$ARGUMENTScatch-all, with$$/\$for a literal dollar. For example, a template bodySummarize $1 in $2 words. Context: $ARGUMENTSrun as/<template> "Q3 report" 100expands accordingly -- and the expanded text appears in the box for you to review before sending. - Templates as commands: each Prompt Template gains an optional Slash command field (blank uses the template name), so any template is runnable as
/<your-command>and shows up in/help. - Safe by design: a leading
/is treated as a command only when its first word matches a known command, so an absolute path like/Users/me/file.mdis sent as a normal message./helpand/modelare UI actions;/promptand/skillonly ever produce ordinary, editable message text.@filecompletion is confined to your coding workspace and is available only when coding tools are enabled. - Zero configuration: the four built-in commands always work. Operators who want to add or relabel commands can supply an optional JSONC registry via
COMMANDS_CONFIG_FILE(it falls back to a bundled default).
Included in this release
This release includes implementation work from:
- v0.84.0 through v0.84.0
Notes
- No breaking changes. The feature works with zero configuration and the chat/streaming behavior is unchanged. The only new setting,
COMMANDS_CONFIG_FILE, is optional;@filereuses the existing coding-workspace settings. - Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.84.0 - Previous release:
0.83.0
ChatWalaʻau v0.83.0
This release adds one user-facing feature to ChatWalaʻau: Skills Management -- runtime control of which Agent Skills the agent advertises. It is the Skills counterpart of the MCP Tool Management shipped in v0.82.0.
Highlights
Skills Management (v0.83.0)
- New Skills (book) button next to the model controls opens a management modal where you can enable or disable Agent Skills while the server is running -- no file edit, no restart.
- Skills are organized by folder group:
A/B/SKILL.mdshows as groupA/ skillB, and a skill placed directly under the skills directory is "ungrouped". A group checkbox bulk-toggles every skill under it, and each skill shows its description as an overview. - Disabling skills you are not using reduces token usage: each advertised skill's name and description are sent to the model on every turn, so a smaller set means cheaper turns (and steadier prompt caching). Disabling every skill removes the skill tooling entirely.
- The modal opens large (about 90% of the window) with the group list on the left and a per-skill detail pane on the right. Save is enabled only after a change, asks for confirmation, and shows a "rebuilding agents" indicator while the change is applied. Closing with unsaved changes prompts you to save or discard. A warning appears when the same skill name exists in more than one group.
- Saving rebuilds the agents so your next message advertises only the selected skills. The selection is in-memory only -- a restart re-enables every skill -- and skill files on disk are never modified.
- The manager is an operator function protected by the same authentication as other write endpoints (localhost is exempt).
Included in this release
This release includes implementation work from:
- v0.83.0 through v0.83.0
Notes
- No breaking changes. With no selection made (and after any restart) behavior is byte-for-byte unchanged -- every discovered skill stays advertised. No new configuration is required.
- Internal design management content and architecture control artifacts are intentionally omitted from this release note.
Installation
See the repository README for setup and usage instructions.
Version
- Release version:
0.83.0 - Previous release:
0.82.0