Skip to content

Release Notes - v0.12.0

Release Date: 2026-08-23

Overview

v0.12.0 adds custom field mutations to AQL and the MCP server, syncs idea voter and customer-org identity into new resources (get_voter_domain_histogram, a cache-backed omnisignalcache provider), ships a cache-backed omniroadmap provider for the omniroadmap-core ecosystem, and adds a direct MCP tool-invocation CLI subcommand. It also closes out three previously-open roadmap phases (write tools, HTTP API observability, analytics) and fixes a sync resilience gap.

Highlights

  • Custom Field Mutations - UPDATE <entity> SET custom.<key> = <value> now works in AQL (CLI exec and the set_custom_field_values MCP tool) for features, initiatives, and releases, routed through aha-go's GraphQL SetCustomFieldValues
  • Idea Voter & Customer-Org Sync - new idea_endorsements/idea_users/idea_organizations Ent schemas and incremental sync, a get_voter_domain_histogram MCP tool, and a new cache-backed omnisignalcache OmniSignal provider with voter/customer-org tiering
  • omniroadmap Package - cache-backed provider.Provider implementation for the omniroadmap ecosystem, registered as "aha-studio", reading entirely from the local cache with no Aha API traffic
  • aha-mcp-server tool Subcommand - invoke any registered MCP tool directly from the shell without a running server session
  • Rate-Limited Sync - a sync_data MCP tool and --detailed/--rate-limit CLI flags, plus context.Context threaded through all cache query methods
  • Phase 2/4/5 Complete - all remaining write-tool gaps, HTTP API observability (OpenAPI spec, Prometheus metrics), and analytics tools now shipped
  • Sync Resilience - GraphQL feature sync falls back to REST API when project resolution fails

Installation

# Install AQL CLI
go install github.com/grokify/aha-studio/cmd/aha-studio@v0.12.0

# Install MCP Server
go install github.com/grokify/aha-studio/cmd/aha-mcp-server@v0.12.0

What's New

Custom Field Mutations

UPDATE statements now accept custom.<key> alongside standard fields, for features, initiatives, and releases:

aha-studio exec --product PROJ \
  "UPDATE features SET status = 'Done', custom.priority = 'High' WHERE reference_num = 'PROJ-123'"
{
  "tool": "set_custom_field_values",
  "arguments": {
    "entity_type": "feature",
    "record_id": "PROJ-123",
    "custom_fields": {"priority": "High", "story_points": 8}
  }
}

Custom fields have no REST equivalent in aha-go, so both paths route through graphql.SetCustomFieldValues; a custom.* assignment and a standard-field assignment in the same UPDATE are each evaluated (and can each fail) independently rather than one silently masking the other.

Idea Voter and Customer-Org Sync

New idea_endorsements, idea_users, and idea_organizations sync (opt-in, incremental) populate voter identity and organization data, including email_domains/revenue when synced with Detailed=true:

aha-studio sync --product PROJ --entities idea_endorsements,idea_organizations --detailed
{
  "tool": "get_voter_domain_histogram",
  "arguments": {"product": "PROJ", "limit": 10}
}

A new omnisignalcache package implements omnisignal.Provider over this cache (registered "aha-studio"), resolving each idea's voters against synced organizations to populate signal.MetaCustomers — see the omnisignalcache package docs.

omniroadmap Provider

import (
    studiosync "github.com/grokify/aha-studio/sync"
    ahastudio "github.com/grokify/aha-studio/omniroadmap"
)

db, err := studiosync.Open(studiosync.DefaultDBPath())
p := ahastudio.NewProvider(db, ahastudio.WithProduct("PROJ"))
resp, err := p.ListItems(ctx, &provider.ListItemsRequest{})

Reads need no Aha API traffic — see the omniroadmap package docs for capabilities and fidelity notes versus the live aha-go/omniroadmap provider.

Direct MCP Tool Invocation

aha-mcp-server tool list
aha-mcp-server tool schema list_initiative_features
echo '{"initiative_id":"PROD-S-34"}' | aha-mcp-server tool call list_initiative_features

Useful for agent sessions that can't register a new or updated MCP tool mid-session — an agent's MCP servers only start once, at session launch, so a tool that was added or changed doesn't require a session restart.

Rate-Limited Sync

aha-studio sync --product PROJ --entities features,initiatives --detailed --rate-limit 15
{"tool": "sync_data", "arguments": {"product": "PROJ", "detailed": true}}

The sync_data tool and --rate-limit/AHA_SYNC_RPS use a dedicated throttled client (default 10 req/s) so bulk sync doesn't share/contend with the shared per-request client used by other tools.

Phase 2/4/5: Write Tools, HTTP API, and Analytics

Tool / Endpoint Description
create_release Create releases with dates, parking lot status, and theme
delete_idea Delete ideas with required confirm: true safety parameter
list_idea_categories List idea categories for a product
get_feature_ideas List ideas linked to or promoted from a feature
/api/openapi.json Dynamically generated OpenAPI 3.0.3 specification
/metrics Prometheus exposition format: HTTP, AQL, cache, sync, graph, uptime
get_ideas_statistics Aggregated idea stats (status counts, votes, top ideas) from the cache
get_features_statistics Aggregated feature stats (status/release counts) from the cache

Sync Resilience

The GraphQL-based feature sync now falls back to the REST API when project resolution fails, handling cases where GraphQL lacks visibility into products the REST API can access.

New MCP Tools

This release brings the total to 87 MCP tools. New in v0.12.0:

set_custom_field_values, sync_data, list_initiative_features, get_initiative_with_features, list_initiatives_by_tag, get_voter_domain_histogram, create_release, delete_idea, list_idea_categories, get_feature_ideas, get_ideas_statistics, get_features_statistics, create_idea, add_goal_to_feature, list_features_by_release_date, list_features_by_release_name.

See the Tools Reference for full parameter docs on every tool.

Dependency Updates

  • Upgraded github.com/grokify/aha-go to v0.10.0 and github.com/grokify/omniroadmap-core to v0.1.0 as published modules, removing the local replace directives used during development
  • Added entgo.io/ent for the new IdeaEndorsement/IdeaUser/IdeaOrganization schemas
  • Routine transitive bumps (omniskill, w3pilot, modernc.org/sqlite, Go toolchain to 1.26.4)

Roadmap Status

With v0.12.0, the roadmap advances to 5 of 8 phases complete, and Phase 8 (voter identity and organization sync) is in progress:

Phase Status
Phase 1: Release Query Completion Complete
Phase 2: Write Tool Gaps Complete (v0.12.0)
Phase 3: OmniSignal Adapter Complete
Phase 4: HTTP API Remainder Complete (v0.12.0)
Phase 5: Analytics Tools Complete (v0.12.0)
Phase 6: DuckDB Evaluation Not started
Phase 7: Atlassian Integration & Cross-Tool Workflows Not started
Phase 8: Voter Identity and Organization Sync In progress (v0.12.0)

Commits

Commit Type Description
f562db1 feat(aql) Support custom.* field references in UPDATE SET clauses
33df380 test(aql) Add tests for custom field UPDATE parsing
33148d1 feat(executor) Route custom.* field updates through GraphQL SetCustomFieldValues
eb01f9a test(executor) Add mutation tests for standard and custom field updates
7b51714 fix(schema) Register release_reference_num as a queryable AQL field
116c591 feat(sync) Thread context.Context through queries and add generic record access
53993c2 test(sync) Add tests for records, query building, and incremental sync
d41d950 feat(mcp) Add custom field, sync, and initiative-scoped tools
35df331 test(mcp) Add tests for custom field, sync, and initiative tool handlers
f41f5c2 feat(cmd) Wire custom-field exec, rate-limited sync, and context-aware queries into aha-studio CLI
4b2c0c6 feat(cmd) Add direct tool invocation subcommand to aha-mcp-server
451f95c feat(omniroadmap) Add cache-backed provider for aha-studio
79fcebf feat(sync) Add Ent schema for IdeaEndorsement, IdeaUser, IdeaOrganization
3a3ef80 chore(codegen) Regenerate Ent client (includes IdeaEndorsement/IdeaUser/IdeaOrganization)
4b01be8 feat(sync) Add idea endorsement/user/organization query and upsert methods
3e68538 feat(sync) Add opt-in incremental sync for idea endorsements, users, and organizations
a5ab308 chore(deps) Add entgo.io/ent for the new Ent schemas
701e416 feat(sync) Add idea endorsement/user/organization Ent upserts
d8760d0 test(sync) Add idea endorsement/user/organization store tests
6f94f49 feat(mcp) Register get_voter_domain_histogram tool
cbaa895 feat(mcp) Add GetVoterDomainHistogram handler
6082dbd test(mcp) Bump expected tool count for get_voter_domain_histogram
dd6f261 feat(omnisignalcache) Add cache-backed omnisignal provider for Aha ideas
437c400 test(omnisignalcache) Add provider test suite
0af7850 docs(roadmap) Unblock RMI-AHASTUDIO-023, add Phase 8
b319140 chore(deps) Update aha-go to v0.9.0
0e30ad1 feat(httpserver) Add Prometheus metrics at /metrics
765f906 feat(httpserver) Add OpenAPI 3.0 spec at /api/openapi.json
abd24bc feat(mcp) Add Phase 2 write tools and Phase 5 analytics tools
e9479a1 feat(sync) Add statistics methods for ideas and features
3a59ca5 fix(sync) Fallback to REST API when GraphQL project resolution fails
7a793a0 feat(mcp) Add create_idea and add_goal_to_feature GraphQL tools
1ac837b feat(mcp) Add release query tools and AQL release.* qualifier support
559844c docs Update tool count to 81 and add HTTP API feature
72de791 docs(roadmap) Mark Phases 2, 4, 5 complete
37c989c docs Add omnisignal package reference page
bd9f11e docs Fix mkdocs nav orphans and update_release parameter docs
f8c9007 docs(roadmap) Mark Phase 3 OmniSignal Adapter complete
cf008c1 chore(deps) go mod tidy
3f7ef2f chore(deps) go mod tidy
13a561c chore(deps) Update dependencies (aha-go v0.10.0, omniroadmap-core v0.1.0, remove local replaces)
236768e docs Document custom field mutations, sync tool, and omniroadmap package

Full Changelog

See the CHANGELOG for complete version history.