v0.5.0¶
Release Date: 2026-06-20
Overview¶
This release adds product CRUD operations (create, update, list with filters), ListFeatures GraphQL query, tree-structured product listing, and fixes for nullable date fields and Idea description handling.
Highlights¶
- Product CRUD - Create, update, and list products with filtering options
- ListFeatures GraphQL - Query features with release info, position, tags, and workspace
- Tree View - Product list now shows hierarchical structure with product lines
- Nullable Date Fix - Date fields now correctly handle null values from API
Installation¶
What's New¶
Product Create and Update¶
Create and manage products via SDK and CLI:
// Create a product
product, err := client.CreateProduct(ctx, "My Product", "PROD",
aha.WithProductDescription("Product description"),
aha.WithProductParentID("PORTFOLIO"),
)
// Create a product line
product, err := client.CreateProductLine(ctx, "My Portfolio", "PORT", "portfolio")
// Update a product
product, err := client.UpdateProduct(ctx, "PROD",
aha.WithUpdateProductName("New Name"),
aha.WithUpdateProductDescription("Updated description"),
)
CLI commands:
# Create a product
aha product create --name "My Product" --prefix PROD
# Create a product line
aha product create --name "My Portfolio" --prefix PORT --product-line --product-line-type portfolio
# Update a product
aha product update PROD --name "New Name" --description "Updated description"
Enhanced Product List¶
List products with filters and tree-structured output:
// List with filters
products, err := client.ListProducts(ctx,
aha.WithUpdatedSince(time.Now().AddDate(0, -1, 0)),
aha.WithIdeaPortals(),
)
CLI with tree view:
aha product list # Tree structure by default
aha product list --with-idea-portals # Filter to products with idea portals
aha product list --updated-since 2024-01-01
aha product list --output json # JSON tree structure
ListFeatures GraphQL Query¶
Query features with release information, position, and workspace:
import "github.com/grokify/aha-go/graphql/generated"
client := graphql.NewGenqlientClient("mycompany", "your-api-key")
// List features with release info
resp, err := generated.ListFeatures(ctx, client,
&page, // page number
&pageSize, // results per page
nil, // filters
&orderBy, // e.g., "position", "createdAt"
)
for _, feature := range resp.Features.Nodes {
fmt.Printf("%s: %s (release: %s, position: %d)\n",
feature.ReferenceNum,
feature.Name,
feature.Release.Name,
feature.Position,
)
}
ListProjects GraphQL Query¶
Query projects (workspaces) with parent filtering for tree traversal:
// List root projects (no parent)
resp, err := generated.ListProjects(ctx, client, &page, &pageSize, nil, nil)
// List children of a product line
resp, err := generated.ListProjects(ctx, client, &page, &pageSize, nil, &parentID)
Bug Fixes¶
Nullable Date Fields¶
Date fields (start_date, due_date, end_date, release_date, external_release_date) now correctly handle null values from the API. Previously, null dates could cause decode errors.
Idea Description Object¶
The Idea description field now properly handles the object format returned by the Aha API (with body and html_body fields), fixing JSON decode errors.
New SDK Methods¶
| Method | Description |
|---|---|
CreateProduct |
Create a new product |
CreateProductLine |
Create a new product line |
UpdateProduct |
Update an existing product |
ListProducts |
List products with filtering options |
Product Options¶
// ListProducts options
aha.WithUpdatedSince(t time.Time)
aha.WithIdeaPortals()
aha.WithProductsPage(page int)
aha.WithProductsPerPage(perPage int)
// CreateProduct options
aha.WithProductDescription(desc string)
aha.WithProductParentID(parentID string)
aha.WithProductWorkspaceType(workspaceType string)
// UpdateProduct options
aha.WithUpdateProductName(name string)
aha.WithUpdateProductReferencePrefix(prefix string)
aha.WithUpdateProductDescription(desc string)
aha.WithUpdateProductParentID(parentID string)
aha.WithUpdateProductWorkspaceType(workspaceType string)
New CLI Commands¶
| Command | Description |
|---|---|
aha product create |
Create a product or product line |
aha product update |
Update a product |
Enhanced Commands¶
| Command | Enhancement |
|---|---|
aha product list |
Tree view, --with-idea-portals, --updated-since flags |
aha product get |
Shows workspace_type, parent_id, description |
New GraphQL Operations¶
| Operation | Description |
|---|---|
ListFeatures |
List features with release info, position, tags |
ListProjects |
List projects with parent filtering |
UpdateFeatureRank |
Update feature position/rank |
Commits¶
| Hash | Description |
|---|---|
e0ab2c1 |
docs: document go-rod dependency situation and migration plan |
2fc96ad |
fix(deps): pin fetchup v0.2.4 for go-rod compatibility |
ed56045 |
docs: add product create and update documentation |
50c36d3 |
feat(cli): enhance product get output |
bedcdbe |
feat(cli): enhance product list with tree view and GraphQL |
17e306f |
feat(cli): add product create and update commands |
af59927 |
feat(graphql): add ListFeatures and ListProjects queries |
e0985d5 |
fix(api): handle nullable date fields and description objects |
844155b |
feat(api): add product create, update, and enhanced list methods |
beb8821 |
refactor(api): regenerate ogen client from updated OpenAPI spec |
e568fcc |
feat(openapi): add product CRUD endpoints and nullable date fields |
Dependency Notes¶
This release pins fetchup v0.2.4 for compatibility with go-rod v0.116.2. The go-rod library is used for browser automation (template creation) and appears unmaintained since 2024. A migration to chromedp is planned as non-blocking technical debt. See docs/specs/ROADMAP.md for details.
Upgrade Notes¶
This is a backward-compatible release. No breaking changes from v0.4.0.