Releases: anantgarg/tinyhands
Releases · anantgarg/tinyhands
v1.31.0 - Google Workspace Split, Version History & KB Improvements
What's New
Google Workspace Split into 4 Integrations
- Google Drive, Google Sheets, Google Docs, Gmail as separate tools
- All connect via OAuth (no manual access token entry)
- Legacy Google Workspace hidden, migration 019 cleans up DB
Version History (Full Config Tracking)
- Tracks ALL changes: model, tools, effort, memory, access, write policy
- Version preview shows full config snapshot alongside instructions
KB Sources Improvements
- Edit existing sources (name + config)
- Help text on all config forms
- Google Drive folder picker with breadcrumb navigation
Agent Creation Wizard
- Settings descriptions, grouped tools with read/write toggles
- Goal analyzer auto-selects tools, model auto-filled
Non-Admin Restrictions
- Create Agent hidden for non-admins, actions dropdown owner-only
Tools & Integrations Page
- OAuth integrations show Connect with Google button
- Edit button hidden for OAuth integrations
v1.30.0 - Markdown Editor, User Avatars & Chat UX
What is New
Markdown Editor for Instructions (#8)
- Write/Preview tabs with live formatting preview
- Toolbar buttons: Bold, Italic, Heading, Bullet List, Numbered List, Link
- Toolbar inserts markdown at cursor position with smart selection handling
- Preview renders formatted text (headings, bold, italic, code, lists, links)
- Replaces the old plain monospace textarea
User Avatars in Dropdowns (#9)
- Agent Access tab: 'Add User' now shows search-with-autocomplete
- Type a name to see matching team members with their Slack avatar and display name
- Selected user appears as a styled chip with avatar
- No more raw 'User ID' text field
AI Chat UX Improvements (#10)
- Switching agents automatically starts a new conversation (no stale context)
- Empty state shows suggested action chips: 'Change the model', 'Update instructions', 'Add a tool', 'Respond to all messages'
- Clicking a suggestion fills the input field for quick action
- Agent selector dropdown also triggers new conversation on switch
v1.29.0 - Dashboard UX Polish Batch
What is New
Edit & Disconnect Integrations (v1.28.1)
- Connected integration cards now have Edit and Disconnect buttons
- Edit opens credentials dialog with 'Leave blank to keep current' for secrets
- Disconnect with confirmation warning
- New DELETE /tools/integrations/:id/disconnect endpoint
Knowledge Base Labels
- Renamed 'Approved' tab to 'Published', 'Pending' to 'Pending Review'
- Categories display in Title Case everywhere (dropdown + badges)
KB Sources Display
- Source type shows proper names (GitHub, Google Drive, Website, Notion, Zendesk) instead of slugs
- Status shows friendly labels (Setup Required, Active, Syncing, Error) instead of snake_case
Connections Page
- No longer admin-only - all users can manage their personal connections
- Team connections tab shows context-appropriate message (admin vs non-admin)
- Status badges show Title Case (Active, Expired, Revoked)
Already Completed (verified)
- Access & Roles: Add Admin with user autocomplete was already implemented
- Workspace Settings: confusing labels were already fixed
v1.28.1 - Edit & Disconnect Integrations
What is New
Tools & Integrations - Edit & Disconnect
- Connected integration cards now have Edit and Disconnect buttons
- Edit opens the same credentials dialog, pre-configured for updating. Secret fields show 'Leave blank to keep current' placeholder
- Disconnect button with confirmation dialog, warns that agents will lose access
- Backend: New DELETE /tools/integrations/:id/disconnect endpoint
- Integrations API now includes connectionId in the response for connected integrations
v1.28.0 - Tool Requests & Access Level Badges
What is New
Tool Requests System
- Full request/approve/deny workflow for tool access on agents
- New database table (tool_requests) for tracking requests
- Backend: createToolRequest, listToolRequests, approveToolRequest, denyToolRequest
- API endpoints for creating, listing, approving, and denying tool requests
Requests Page - Tool Requests Tab
- Now fully functional (was previously empty)
- Shows pending tool requests with agent name, tool, access level, requester, and reason
- Agent filter dropdown to narrow results
- Approve/Deny buttons per request
- When approved, the tool is automatically added to the agent
Agent Detail - Tools Tab Improvements
- Pending tool requests section shows when there are outstanding requests
- Links to the Requests page for approval
- Add Tool dialog now shows access level badges next to each tool
Human-Friendly Access Levels
- read-only shows as 'Can view data'
- read-write shows as 'Can view & make changes'
- Badges color-coded: blue for view, yellow for changes
Available Tools API
- Integration tools now include accessLevel in the response
v1.27.0 - Slack Channel Management and Credential Dropdowns
What is New
Slack Channel Management (Agent Detail > Triggers tab)
- Replaced the old Slack Activation card with a proper Slack Channels section
- Add/remove channels with channel chips, plus an Add Channel dialog with search
- Response mode dropdown moved below the channel list
Credential Dropdown (Agent Detail > Tools tab)
- Per-tool credential selector for integration tools - choose between Team credentials, Personal credentials, or Personal with team fallback
- Replaces the static Team badge that was previously shown
Bug Fix: Agent Config Saves
- Fixed a critical bug where most agent configuration changes from the dashboard (effort, memory, self-improvement, response mode, write policy, channel IDs) were silently failing to save
- Added camelCase-to-snake_case key conversion in the API client so all agent updates now properly persist to the backend
API Additions
- useSlackChannels() - fetch Slack workspace channels
- useAgentToolConnections(agentId) - get per-agent tool credential modes
- useSetAgentToolConnection() - update credential mode for a specific tool on an agent
v1.26.0 — Dashboard UX Overhaul
Dashboard UX Overhaul
Comprehensive rewrite of the web dashboard for non-technical users. Every page has been reviewed and fixed.
Agent Detail Page
- Click-to-rename agent name in header
- Model dropdown now works correctly (normalizes variant model IDs)
- "Response Depth" → "Effort" with friendly labels (Quick, Standard, Thorough, Maximum)
- Separate "Tools & Actions" section with action approval setting, tool list, and credentials note
- Friendly tool names: WebSearch → "Web Search", Glob → "Find Files", etc.
- Removed "Type: Built-in" column (meaningless to users)
- Slack activation moved to Triggers tab with clear descriptions
- User autocomplete with avatars for adding people (replaces raw User ID input)
- "Granted By" shows resolved names instead of Slack IDs
- Runs tab now works (fixed backend data shape), shows "Triggered By" name, friendly status labels
Tools & Integrations Page
- Integrations load correctly (new backend endpoint)
- Register integration flow works
- Grouped read/write tools by integration (e.g., "Chargebee" with Read & Write badges)
- Friendly tool names and removed Type/Creator columns
- Access badges show "Read & Write" / "Read Only"
Connections Page
- Data loads correctly (integration names resolved, no more dashes)
- Personal connections tab first (most relevant to users)
- OAuth integrations endpoint added
Knowledge Base
- Stats load correctly (new
/kb/statsendpoint) - Pagination and filtering work (entries return
{entries, total})
Dashboard
- Recent Runs show agent names and avatars (JOIN query)
- Recent Activity properly mapped fields
- Emoji rendering fixed across Error Logs and Dashboard
AI Assistant Chat
- New conversation on agent switch (saves history)
- History panel to browse past conversations
- Expand/fullscreen mode
- Greeting detection — "hi" no longer triggers agent update proposals
Global Pages
- Triggers page shows real data (backend JOINs agent names, maps fields)
- Requests page — renamed "Write Approvals" to "Action Approvals", added "Tool Requests" tab, agent filter
- Workflows page — "Coming Soon" placeholder (was showing broken empty tables)
- Access & Roles — "Add Admin" button with user autocomplete, "All Team Members" section, improved role descriptions
- Workspace Settings — clear labels ("Everyone", "Automatic", etc.)
- Error Logs — emoji rendering fixed, camelCase response shape
Developer
- Added CLAUDE.md "Dashboard UI Guidelines" section for non-technical audience
- All 3123 tests pass
v1.25.0
Dashboard Fixes
AI Assistant Chat
- Conversation history: saves and loads previous chat sessions
- Expanded mode: larger 700px panel for more workspace
- New chat, history, and expand buttons in header
- Greetings no longer trigger agent analysis
- Conversations auto-save when switching agents
Triggers Page
- Backend now properly JOINs agent names and maps fields to camelCase
- Added PATCH endpoint for enable/disable from frontend
- Accepts both
typeandtriggerTypein POST for frontend compatibility
Requests Page
- Renamed 'Write Approvals' to 'Action Approvals'
- Added 'Tool Requests' tab (placeholder)
- Agent filter dropdown on Upgrade Requests and Evolution Proposals tabs
Workflows Page
- Replaced broken empty tables with clean 'Coming Soon' state
Access & Roles Page
- Add Admin button with Slack user autocomplete search
- All Team Members section showing workspace member count
- Added Viewer role description
- Updated Member role description
Agent Detail
- New 'Tools & Actions' card consolidating tools table and action approval config
- Removed Type column from tools table
- Credentials note linking to Connections page
- Renamed 'Write Safety' to 'Action Approval' with improved labels
Tools Page
- Read/write tools grouped by integration name (e.g., chargebee-read + chargebee-write = Chargebee)
- Read/Write access badges per group
- Simplified table layout
New API
web/src/api/slack.ts—useSlackUsershook for Slack user autocomplete
v1.24.0
Web Admin Dashboard
Full web-based admin dashboard, accessible via "Sign in with Slack" at your TinyHands URL.
New Features
- Web Dashboard: Complete React SPA with 16 pages covering all admin functionality
- Sign in with Slack: OAuth-based authentication for the web dashboard
- Basecamp-inspired design: Clean, flat, green-accented UI with system fonts
- Agent management: Table-based agent list with filters, comprehensive detail page with inline-editable config, AI update bar, version history, tools management
- Dashboard metrics: Usage stats, popular agents, recent runs, activity feed
- All admin pages: Tools, Knowledge Base, Connections, Triggers, Workflows, Evolution Proposals, Audit Log, Access & Roles, Workspace Settings
- Permission-aware sidebar: Admin-only pages hidden for non-admin users
- Error boundaries: Friendly error pages instead of blank screens
Improvements
- Relative timestamps everywhere ("2 hours ago")
- Human-friendly labels (Response Depth instead of Max Turns, etc.)
- Info tooltips explaining roles, policies, and access levels
- Channel/Scheduled/Event trigger sections
- Agent create with conversational labels and clear explanations
Technical
- React 18 + Vite + TypeScript + Tailwind CSS + shadcn/ui
- TanStack Query for server state
- Zustand for auth state
- 266 new API route tests (3083 total)
- snake_case to camelCase API response transformer
- Express session with Redis store
- Static file serving with SPA fallback
Configuration
New env vars: SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, SESSION_SECRET
Add redirect URI to your Slack app: https://your-domain/api/v1/auth/slack/callback
v1.23.0 — Complete Tool Connections UX
Complete Tool Connections UX
Implements the full 13-flow tool connections user experience, making credential management accessible to all users.
/tools for Everyone
- All users can now run
/toolsto browse shared tools, personal connections, and available integrations - Three-section view: Shared Tools, My Connections, Available
- Admins see management buttons; regular users see connect buttons
Personal Connections
- OAuth flow: One-click Connect button sends DM with OAuth authorization link
- API key flow: Connect with API Key opens a modal with integration-specific fields
- Credentials stored encrypted in the connections table
Credential Resolution in Execution
- Agent runs resolve credentials through the connections system before falling back to config_json
- getIntegrationIdForTool uses manifest-based lookup instead of fragile string splitting
- Missing runtime credentials prompt users to connect in-thread, with auto-retry after connection
Agent Creation Credential Step
- Credential selection UI in agent confirmation: choose Shared / Creator's / Per-user credentials
- Auto-set when only one credential type is available
Write Policy Enforcement
- confirm: Posts approve/deny buttons in thread, 5-minute timeout
- admin_confirm: Posts approve/deny for agent owner, no timeout
- deny: Blocks all write tools via DISALLOWED_TOOLS
- Redis-backed approval state with HTTP polling from containers
Notifications and Editing
- deny_write_tools and deny_upgrade now DM the requesting user
- Agent config view shows tool connection modes
- New Edit Tool Connections button opens per-integration credential mode selector
Infrastructure
- Migration 016: Backfills connections table from existing tool configs
- connectionModel property set on all integration manifests
- Redis approval helpers and internal approval HTTP routes
- 46 new tests (2820 total)