Add Bates installer: Core + Enhancement Wizard#1
Open
Conversation
…, dashboard, Telegram Complete Step 1 "Bates Core" installer that gets a working AI assistant with dashboard and Telegram in 15 minutes: - Windows Inno Setup script (BatesCore.iss) + PowerShell WSL2 bootstrap (install.ps1) - Linux setup scripts: core-setup.sh, core-configure.sh, core-verify.sh - Shared libraries: common.sh, prerequisites.sh, template-engine.sh - 7 core workspace rules, 2 skills, templatized SOUL.md/TOOLS.md - Config templates: openclaw.json, auth-profiles.json, systemd service, crontab - 8 sanitized core scripts (health-check, watchdog, archive, tmux, etc.) - 2 plugins: cost-tracker + dashboard (glassmorphism UI, 14 panels, agent org chart) - Step 2 enhancement wizard scaffold (bates-enhance.sh) with 5 shared libraries - Build pipeline: sanitize-check.sh (15 forbidden patterns) + build-package.sh - All personal data sanitized — 0 forbidden patterns detected Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Complete bates-enhance package with all 14 integration setup scripts: - m365: 22 files (6 refs, 3 rules, 6 skills, 4 scripts, 14 cron jobs) - agents: 15 files (12 deputy configs, 8 scripts, 15 cron jobs, delegation rules) - search: 11 files (6 Python scripts, config.yaml template, Ollama setup) - teams, twilio, social, tailscale, google: medium integrations with configs - telegram, elevenlabs, image, github, deepseek, websearch: simple integrations Also includes: - Patch management: cost-footer, adaptive-cards, channel-bridge, reapply-patches.sh - 8 documentation guides (manual-steps for each integration + troubleshooting) - All sanitized — 0/15 forbidden patterns detected Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…hema Found via Option B testing (fresh user install). 8 schema errors prevented gateway startup: wrong key names (definitions→list, token→botToken, ttlMinutes→ttl), misplaced sections (heartbeat, session), and missing required fields (gateway.mode, model object format, subagents config). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add prominent disclaimer to README: experimental software, no warranty, use at your own risk, not affiliated with any third-party services - Fix core-configure.sh: openclaw models auth setup-token requires an interactive TTY. Now falls back to manual credential storage when piped input is detected, with instructions to complete setup later. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Claude Code is essential for delegation (run-delegation.sh, claude-tmux.sh, coding-agent skill) but was never installed. Also adds tmux which is needed for the claude-tmux.sh persistent session wrapper. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All config fragments and setup scripts were using non-existent OpenClaw
config keys (mcp, features, assistant) and wrong key names/paths.
Fixed to match actual OpenClaw v2026.2 schema:
- telegram: token -> botToken, removed allowFrom, added dmPolicy/streamMode
- twilio: channels.voice -> plugins.entries.voice-call.config,
maxConcurrent -> maxConcurrentCalls
- elevenlabs: channels.voice.tts -> plugins.entries.voice-call.config.tts.elevenlabs,
model -> modelId, added talk section
- m365: removed assistant/mcp keys, use env.vars; fixed config_merge -> config_merge_inline
- github: removed mcp key, store token in env.vars
- google: removed mcp key, store credentials in env.vars
- websearch: removed mcp key, use tools.web.search for Brave,
models.providers for Perplexity
- image: removed features key, store API keys in env.vars
- search: removed features key (search index uses own config.yaml)
- social: removed features key, store MixPost URL in env.vars
- deepseek: replaced {enabled:true} with full provider structure
(baseUrl, apiKey, api, models array), added template rendering
- agents: added archiveAfterMinutes and model to subagents config
- config-merge.sh: fixed telegram and voice helper functions
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- bates-icon.ico: Multi-size ICO (256/128/64/48/32/16) from app icon - installer-banner.bmp: 164x314 wizard banner from splash screen - installer-logo.bmp: 55x55 wizard logo from avatar - installer-splash.png: Full splash screen for reference - BatesCore.iss: Enable SetupIconFile, WizardSmallImageFile, WizardImageFile referencing the new assets Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- All 12 deputy heartbeat crons now include delivery config with
{{PRIMARY_CHANNEL}}/{{DELIVERY_TARGET}} placeholders and bestEffort
- Heartbeat prompts reference deputy-specific HEARTBEAT.md paths
({{HOME}}/.openclaw/agents/{name}/HEARTBEAT.md) instead of generic
- message-router cron changed to sessionTarget: "isolated" to prevent
main session pollution
- daily-standup-compile and weekly-strategy-review get proper delivery
- cron-unlock.sh resolves {{USER_TZ}}, {{PRIMARY_CHANNEL}},
{{DELIVERY_TARGET}}, {{HOME}} from env vars or openclaw.json config
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- channel-bridge.patch.ts: add __openclawUpdateTeamsCard bridge + abort-signal blocking fix - send-update.patch.ts: new patch for updateAdaptiveCardMSTeams function - policy-dm.patch.ts: new patch fixing DM proxy revocation (replyStyle thread -> top-level) - reapply-patches.sh: add sections 4-5 for send.ts and policy.ts auto-patching - model-fallback.sh: expand from 2 to 4 provider options (+ Codex 5.3, Gemini, Sonnet) - troubleshooting.md: add proxy revocation fix, channel auto-restart loop, 1M context warning Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sub-agent result cards, thinking bubbles, progress updates, and failure cards now show the deputy's unique avatar image instead of a generic robot emoji. Avatars are served from GitHub raw URLs (public repo) so Teams servers can fetch them directly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- DISCLAIMER.txt: standalone file with full experimental/risk/autonomous-agent warnings - BatesCore.iss: shows disclaimer as Inno Setup license page (must click "I accept"), Apache 2.0 license shown as info-before page - install.ps1: shows disclaimer and requires "I ACCEPT" before Windows bootstrap; persists acceptance marker to avoid re-prompting after reboot - core-setup.sh: shows disclaimer and requires "I ACCEPT" before Linux setup; supports BATES_ACCEPT_DISCLAIMER=yes for non-interactive/CI use Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add OpenAI Codex (GPT-5.3) as provider option 4 in core-configure.sh - Update OpenAI default from GPT-4o to GPT-5.2 - Update Google default from Gemini 2.0 Pro to Gemini 3 Pro Preview - Add cross-provider fallback chain to openclaw.json template Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ation
Extract all deployed patches from v2026.2.21 into a single reply-composite
patch that applies avatars, thinking bubble, progress/failure cards, announce
directive fixes, and agentId tracking. Previously these were manual edits
that reapply-patches.sh couldn't reproduce.
Changes:
- New reply-composite.patch.js (replaces adaptive-cards.patch.js for reply-*.js)
- Avatar map with 13 agent images + helper functions
- Thinking card on sessions_spawn ("working on..." bubble)
- Result card with avatar in runSubagentAnnounceFlow
- Progress card updates for 2+ minute tasks
- Failure cards at timeout/error/archive points
- Announce directives: enforce incremental delivery, no NO_REPLY
- agentId tracking in registerSubagentRun
- Updated reapply-patches.sh to use composite patch + deliver-file iteration
- Updated README.md with full patch documentation
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The cost footer transform hook was the only patch that required manual
intervention. Now auto-applied by anchoring on the exact
`await options.deliver(normalized, { kind })` call site.
All 9/9 reply-composite patches now apply automatically.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
All 9/9 reply-composite patches apply cleanly on v2026.2.22-2. Added tested versions section to patches README. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SOUL.md: delegation is now NON-NEGOTIABLE, coordinator-not-worker pattern, 1-tool-call rule, no 2+ turns before spawning - model-routing: remove Gemini, add tiered agent model table - subagent-policy: add three enforcement directives for immediate delegation, remove stale Gemini temporary override - Google no longer supports OpenClaw — all Gemini references removed Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… main agent Text-based delegation directives were insufficient — Bates was making 62 exec calls and 22 process polls per session instead of spawning sub-agents (only 1 sessions_spawn in 138 turns). Fix: deny runtime/filesystem tools on the main agent via tools.deny in openclaw.json. Main session can only coordinate (sessions_spawn, messaging, web_search). All actual work must go through sub-agents which have full tools. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
OpenClaw's tool restriction hierarchy means agent-level tools.deny cascades to all sessions under that agentId, including sub-agents. This broke sub-agent exec/read/write capabilities. Replaced with behavioral rules in SOUL.md and subagent-policy.md instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace generic heuristic regex patterns with structural matching: insert between normalizedPayloads flatMap closing and getGlobalHookRunner(), which has been stable across v2026.2.19-2.24. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Teams card update/send calls in runSubagentAnnounceFlow were awaited, blocking the announce flow for 3-5s on Teams API round-trips. Combined with delivery retries, this exceeded the 10s gateway internal timeout causing "Subagent announce failed: gateway timeout after 10000ms". Wrap the card operations in an async IIFE (no await) so they run in the background. Capture closure variables to avoid mutation issues. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All 9/9 reply-composite patches and cost-footer patches apply cleanly on v2026.2.25 despite the announce flow state machine refactor — function names and insertion points unchanged. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- send-update.patch.ts: rewrite to use simpler getMSTeamsRuntime() + createMSTeamsConversationStoreFs() approach instead of the heavier resolveMSTeamsSendContext() pattern. Matches what's actually deployed and working in production. - channel-bridge.patch.ts: remove `return result;` (startAccount doesn't return), use `await result.shutdown()` after abort signal fires. Matches deployed channel.ts patch. Both scripts verified against clean v2026.2.25 files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Complete deputy agent system: 12 heartbeat configs with Graph API channel posting, shared memory templates for cross-deputy persistence, deputy feedback loop, updated cron jobs with correct agentId routing, rewritten collect-standups with all deputies. SOUL.md gains agentId delegation rule and read-back-in-conversation directive. Patches tested through v2026.2.26. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The edit/write tools enforce workspace root boundary checks that block access to shared/ (symlink resolves outside agent workspace). Added directive to all 12 HEARTBEAT.md files instructing deputies to use exec (bash) for shared memory writes instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Teams channel message delivery requires RSC permissions that haven't propagated in the Admin Center. This plugin bypasses that by using Graph API change notifications (subscriptions) to receive real-time channel messages and inject them into the gateway's agent pipeline. - Creates Graph subscriptions for all 8 Bates Operations channels - Handles webhook validation and notification processing - Fetches full message content, strips HTML, deduplicates - Injects messages using finalizeInboundContext/dispatchReplyFromConfig - Sends replies back via Bot Framework REST API - Auto-renews subscriptions every 50 minutes - Stores conversation references for proactive messaging - Updated dashboard plugin to exclude /channel-bridge from SPA catch-all Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Cron heartbeat announces were sending redundant Adaptive Cards that rendered as "Card - access it on go.skype.com/cards.unsupported" in Teams DMs. The result card now only fires for sessions_spawn calls (which have a registry entry) not for cron announce deliveries. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Session-continuity: persists conversational context across session resets via handoff digests. Uses before_prompt_build hook to inject prior session context into new sessions so Bates never loses awareness of recent interactions, active tasks, or pending decisions. Rule-based summarization (no LLM calls). Rolling buffer of last 5 interactions. Channel-bridge: fix message ID extraction for delegated permission subscriptions (resourceData.id is empty, parse from resource path instead), add duplicate init guard, add Bates user ID to skip filter. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…n enforcer Plugins: - channel-bridge: add media download, voice channels, thread reply support - cost-tracker: migrate to registerHttpRoute (v2026.3.2), add Codex subscription zero-cost - dashboard: migrate to registerHttpRoute (v2026.3.2), restructure route handlers - session-continuity: fix recursive handoff nesting, add sessionId dedup, artifact detection - delegation-enforcer: new plugin — rate-limits main agent tool calls, forces delegation, anti-circumvention (3-layer enforcement), self-protection (integrity monitoring) Scripts: - post-to-channel.sh: Teams channel posting with thread reply support (secrets from config) - lookup-deputy.sh: deputy agent routing (GPT-5.4 model refs) - lookup-skill-file.sh: skill file lookup with plural aliases - acp-health-check.sh: ACP runtime diagnostics Workspace: - SOUL.md: core personality and behavioral rules - 21 workspace rules (delegation, heartbeat policy, teams channels, etc.) - 12 deputy heartbeat configs (absolute paths for sandbox compatibility) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Install @openai/codex alongside @anthropic-ai/claude-code in core-setup.sh - Update provider selection: openai-codex/gpt-5.3-codex → openai-codex/gpt-5.4 - Add CLI presence checks for both Claude Code and Codex in core-verify.sh Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 12 Sub-Agents with current role names - Remove Docker/Ollama/ChromaDB references - Generic hardware reference - Fix quick start to match actual installer behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
C1/H6 (dashboard token):
- dashboard/index.ts reads OPENCLAW_GATEWAY_TOKEN from env instead of
config.gateway.auth.token
- Updated login hint to reference ~/.openclaw/gateway-token
- Updated browser extension README.md and options.html help text
H3 (anonymisation — deep pass):
- channel-bridge/index.ts: removed hardcoded conversation IDs, read from
config/msteams-conversations.json dynamically
- post-to-channel.sh: removed hardcoded team/channel IDs, read from config
- cron-channel-router.sh: removed hardcoded channel mapping, read from config
- find-channel-thread.sh: removed hardcoded team ID, read from config
- collect-standups.sh: removed hardcoded paths
- rescue-bates.sh: fixed hardcoded path
- core-client-setup.ps1: fixed hardcoded reference
H4 (workspace refs):
- SOUL.md.template: removed references to non-existent skill paths
(presentations, word-documents, spreadsheets, legal-docs)
- Removed Bates Prompt Stack section (references non-existent runtime kit)
- Made QUEUE.md references conditional ("if it exists")
- Made call-transcription skill reference generic
M3 (README):
- Fixed Quick Start to match actual installer behavior
- Removed "builds local search index" (that's enhance)
- Fixed manual steps (only Telegram needed, M365 optional)
- Removed business branding from footer
Mailing list subscribe: already present on finish page (getBates.ai/newsletter)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tion Inspired by openclaw_quick_installer (JustinBIBERRR): install.ps1: - Timestamped install logging to $InstallDir/logs/install-*.log - Write-Step/Success/Warn/Fail all log with elapsed time - Progress file (install-progress.txt) with step/total/label for future GUI integration (8 steps tracked) - Final elapsed time shown on success and failure core-configure.sh: - Existing installation detection: detects ~/.openclaw/openclaw.json, offers upgrade/fresh/cancel with automatic backup - API key validation: Anthropic token format check (20+ chars), API key prefix check (sk-ant-), Telegram bot token format (digits:alphanumeric), Telegram user ID (numeric only) Also includes remaining anonymisation fixes from H3 agent: - 62 files across plugins, scripts, agents, workspace, dashboard - Removed hardcoded business names, channel IDs, email addresses - All replaced with $HOME, config reads, or template variables Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Complete Tauri + React installer with 7 pages: - Welcome: branded landing with feature highlights - Role Selection: Server/Client with architecture diagram - License: tabbed Bates disclaimer + OpenClaw security notice - System Check: real-time prereq validation (OS, RAM, disk, internet, WSL) - API Setup: AI provider selection, token validation, Telegram config - Installing: real-time progress bar + log output streaming - Success: next steps, dashboard link, GitHub/newsletter/share buttons Tech stack: Tauri 2 (Rust backend), React 18, Tailwind CSS, Vite Rust backend: syscheck via PowerShell, install process streaming, progress file polling Frontend builds successfully (vite build). Rust build requires VS Build Tools on Windows (MSVC linker). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
M365-tools: exposes 13 email/calendar/tasks/OneDrive tools as native gateway tools via mcporter, so sub-agents can access them directly. Mixpost: social media management plugin with HTTP API for posts, accounts, tags, and scheduling via Mixpost Pro Team. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Skill files that guide Bates on how to delegate document creation (DOCX, XLSX, PPTX) to Claude Code / Codex sub-agents. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
CLI reminder manager with add/list/due/done/snooze/delete commands. JSON-backed persistence with migration logic for older entries. Integrated into heartbeat flow to surface due reminders automatically. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Use OPENCLAW_HOME env var or platform-specific default (Windows: %APPDATA%/openclaw, Linux: ~/.openclaw) - Add reminders.py deployment to core-setup.sh installer Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New tools via direct Graph API calls: - create_calendar_event (with attendees, Teams meeting link) - update_calendar_event - delete_calendar_event - find_meeting_times (across multiple attendees) - get_user_info (profile lookup by email) Total: 18 native gateway tools for M365. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Bates can now compose emails and place them in Robert's Drafts folder for review. No email is sent without human action. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Email drafts now go directly to Outlook Drafts folder via draft_email tool instead of saving as MD files on OneDrive - Calendar operations use native create/update/delete/find_meeting_times tools instead of ms365-assistant - Updated SOUL.md and refs/email-ops.md Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
draft_email now takes an account parameter (vernot or fdesk) to create drafts in the correct Outlook mailbox. Graph API token management updated to support per-account tokens. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All links open in external browser via Rust open::that() (Welcome, License, Success, AssistantEmail pages) - License page: click handler intercepts <a> tags, routes through open_url Rust command - Install backend: accepts full InstallConfig with all user settings, writes install-config.json, passes to install.ps1 - get_install_dir command: finds installer files next to exe or falls back to LocalAppData - Streams both stdout and stderr to frontend via events Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
H4: Fix remaining broken references - context-hygiene.md: remove hardcoded refs/mcp-servers.md and refs/email-ops.md examples (enhance-only), simplify to generic guidance - proactive-philosophy.md: remove refs/onedrive.md reference, make OneDrive conditional. Remove hardcoded skill paths. - Create observations/tasks.md and captures.md (referenced by quick-capture skill) - TOOLS.md exists as .template (rendered during install) - not broken M3: Fix README to accurately reflect core vs enhance - Split "What Bates Does" into Core (ships with installer) and Optional Integrations (enhance) - Update metrics table to show what actually ships in core - Remove deployment-specific numbers (49 cron jobs, 6 MCP servers, 4 email inboxes) that only apply to the dev deployment Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New plugin detects injection patterns (identity override, authority impersonation, mode switching, prompt extraction, data exfiltration) in messages from non-owner senders. Injects defensive context into agent prompts and logs attempts. Also hardens SOUL.md trust boundary, adds rules/prompt-injection-defense.md, wires into installer and config template, and protects the plugin from tampering via delegation-enforcer. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…kills
Replaces all hardcoded personal references (names, emails, company names,
Azure IDs, colleague names) with {{TEMPLATE_VARS}} across 91 files.
Added 18 missing scripts (check-command-safety, format-standup,
memory-archival, memory-health-check, route-task, score-checkin-item,
build-code-review-card, lookup-* utilities, etc.).
Added 5 missing refs (code-review-card-template.json, cron-jobs.md,
network.md, search-index.md, subagent-mcp.md), 1 rule (group-chat.md),
and 2 skills (call-transcription, meeting-prep).
Genericized m365-tools plugin to read email accounts from env config
instead of hardcoding. Sanitize-check.sh updated with template patterns.
All heartbeat files, workspace rules, shared memory, and social media
configs cleaned of personal data.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add refs/ directory deployment (6 files were never copied) - Add *.py script deployment alongside *.sh (10 Python scripts missed) - Add m365-tools plugin deployment block - Add mixpost plugin deployment block - Add both plugins to openclaw.json.template allow list and entries Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Free HTTP MCP server providing multi-turn retrieval, keyword search, and embedding search across millions of arXiv papers. No API key required. Registered as bates-enhance integration with setup.sh for the activator. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… warnings New generate-video.py script supporting OpenAI Sora (sora-2, sora-2-pro) and Google Veo (veo-3.1, veo-3, veo-2). Shows cost estimate before every generation and requires --yes or interactive confirmation to proceed. Includes --cost-only flag for price checks without generating. Updated generate-image.py with: - New nano-banana provider (Gemini native image gen: gemini-2.5-flash-image, gemini-3-pro-image-preview, gemini-3.1-flash-image-preview) - Cost warnings for all providers (OpenAI gpt-image-1 pricing table, Nano Banana approximate costs, Google Imagen costs) New bates-enhance/integrations/video/ with setup.sh, skill, and ref docs. Cost reference: - sora-2 720p 8s = $0.80, sora-2-pro 1080p 8s = $5.60 - veo-3.1 720p 8s = $3.20, veo-3.1 4k 8s = $4.80 - gpt-image-1 1024x1024 high = $0.167 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds the stop-slop skill by Hardik Pandya (MIT, 913 stars) which eliminates predictable AI writing patterns: throat-clearing openers, emphasis crutches, passive voice, formulaic structures, business jargon, and adverbs. Includes phrase blocklist, structural patterns to avoid, and before/after examples. Deployed via existing skills bulk copy in installer. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Embeds the core stop-slop rules (no filler, no adverbs, active voice, no em dashes, no jargon, vary rhythm) directly into the mandatory delegation prompt template. Every Claude Code and Codex delegation from Bates now includes these writing quality rules automatically. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add PKCE OAuth flows for Anthropic (claude.ai), OpenAI (auth.openai.com), and Google (accounts.google.com) directly in the Tauri Rust backend - Bundle bates-core + bates-enhance as Tauri resources (single exe ships everything) - Add non-interactive mode to core-configure.sh (BATES_NONINTERACTIVE=true) - install.ps1: read install-config.json from GUI, self-elevate for WSL2/DISM - Make Telegram optional, token optional (configure post-install) - Fix syscheck: raw JSON output with lowercase booleans, try/catch WSL check - Add Tauri ACL capabilities for event:listen - Add sync-and-build.sh for repo <-> desktop <-> build-dir sync - Deploy all enhance integration files in core installer (activate via bates-enhance) - Brand assets: high-res icon (1024x1024), transparent avatar hero - Log output now selectable/copyable Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Implement BATES_AUTH_METHOD for all 4 providers (subscription + API key paths) - API key mode: stores in systemd env drop-in + api_key profile in auth-profiles.json - Subscription mode: stores OAuth token + refresh_token in auth-profiles.json - refresh_token plumbed end-to-end (GUI -> Rust -> install-config.json -> core-configure.sh) - Google OAuth credentials base64-obfuscated at build time (matches upstream pattern) - Telegram verify only runs when enabled (no hard-fail on skip) - npm ignore-scripts moved before global installs - install-env.sh written BOM-less (UTF8Encoding($false)) - bates-enhance staged in WSL as sibling at /tmp/bates-enhance - bates-enhance added to Tauri resource bundle - Google OAuth state parameter added and validated - Teams MSTEAMS_APP_ID hardcoded, TEAMS_ENABLED conditional in template Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ignment - Build freshness: sync-and-build.sh writes .git-sync-head marker, build.ps1 warns if stale - Transient secrets: install-config.json + install-env.sh deleted after successful verify - WSL readiness: probe whoami/sudo before copy, handle root-only distro, clear error messages - Anthropic auth: removed spurious refresh_token (upstream uses token-only profile) - API key profiles: use 'key' field (not 'token') matching upstream auth-profiles.json format Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove unused M365_NAME variable - Remove unused end_tag variable in template-engine.sh - Fix SC2155: declare LINUX_USER separately from assignment Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… as recommended Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- README: 16GB requirement for quick single-machine setup - SysCheck GUI: warns with recommendation message when 8-15GB - prerequisites.sh: warns at <16GB for single-machine setups Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.
Summary
bates-enhance.shwizard with 14 optional integrations: Microsoft 365, Teams, Twilio voice calls, ElevenLabs TTS, search index, image generation, social media, Tailscale, on-demand agents (12 deputies), Google APIs, GitHub, DeepSeek, and web searchStats
Test plan
sanitize-check.sh— verify 0/15 forbidden patternscore-setup.sh+core-configure.sh+core-verify.shon fresh WSL2 UbuntuBatesCore.isswith Inno Setup 6 on Windowsbates-enhance.shand test individual integrations{{PLACEHOLDER}}values correctly🤖 Generated with Claude Code