Skip to content

v0.11.0: EKS Support (5 resources, 169 total)#129

Merged
yimsk merged 1 commit into
mainfrom
develop
Jan 10, 2026
Merged

v0.11.0: EKS Support (5 resources, 169 total)#129
yimsk merged 1 commit into
mainfrom
develop

Conversation

@yimsk
Copy link
Copy Markdown
Contributor

@yimsk yimsk commented Jan 10, 2026

v0.11.0 Release

New Features

EKS Support (5 resources)

  • EKS clusters (parent resource)
  • EKS node-groups (child)
  • EKS fargate-profiles (child)
  • EKS addons (child)
  • EKS access-entries (child)

Navigation Enhancements

  • 26 cross-resource navigation links
  • Filter support: ASG, LaunchTemplate, KeyPair, IAM roles/users, RDS, StepFunctions, VPC Transit Gateways
  • Global key conflict resolution (c→p, a→o/g/t, m→s)

Test Infrastructure

  • CloudFormation EKS test stack
  • Automated deploy/cleanup (task eks-test-up/down)

Bug Fixes

  • IsNotFound() lowercase matching
  • Resource unwrapping for DiffView/ActionMenu
  • Filter clear reload pattern
  • DiffView AI chat metadata preservation
  • Deprecated strings.Title fix

Stats

  • 169 total resources (69 services)
  • 47 files changed (+3254/-36)

Notes

Merge Strategy: MERGE COMMIT (required for develop↔main)

  • Do NOT squash (causes divergent history)

Related

* Add EKS support: 5 resources (clusters, node-groups, fargate-profiles, addons, access-entries)

- clusters: standalone, 11 detail sections
- node-groups: sub-resource, scaling/health info
- fargate-profiles: sub-resource, selectors/subnets
- addons: sub-resource, versions/config
- access-entries: sub-resource, IAM→K8s mapping
- registry: add EKS to Compute category
- SDK: aws-sdk-go-v2/service/eks v1.76.3

Total: 20 files, ~1807 lines

* Fix EKS code review issues

- node-groups: Return all instance types (not just first)
- registry: Add EKS default resource (clusters)

* Add EKS navigation + test fixtures + fix global key conflicts

- EKS: Full navigation for all 5 resources (clusters, node-groups, fargate-profiles, addons, access-entries)
  - Parent cluster (p), IAM roles (r), CloudWatch logs (l), VPC/SG (v/s), ASG/LaunchTemplate (g/t)
- Add EKS test fixtures: CloudFormation template + deploy/cleanup scripts for integration testing
- Add LocalStack tasks for EKS demo data
- Fix global key conflicts: c→p (Clear filter), a→o/g/t (Actions menu), m→s (Mark resource)
  - Affected: ECS, RDS, autoscaling, stepfunctions, transit-gateways

* Fix IAM role/user navigation filtering

Add RoleName/UserName filter support to enable navigation from other resources (EKS, EC2, Lambda, ECS, etc).

Changes:
- roles: Check RoleName filter in ListPage(), direct Get() lookup
- users: Check UserName filter in List(), direct Get() lookup
- Return empty list if not found (not error, for filter behavior)

Fixes: Navigation failure when pressing 'r' on EKS clusters/nodes/fargate/addons

* Improve EKS test stack cleanup automation

Enhance cleanup.sh reliability w/ auto-retry & auth fix:
- Auto-retry on DELETE_FAILED (max 2 attempts)
- Fix auth mode to API before deletion (resolves deletion blocks)
- CI_MODE env var for non-interactive cleanup
- Update README: document retry behavior, env vars (CI_MODE, MAX_RETRY)

Production-grade improvements for CI/CD integration.

* Fix navigation filters: EKS parent nav + filter clear reload

- EKS clusters: Add ClusterName filter for child->parent nav
- IAM roles: Move filter check List()->consistent w/ users/clusters
- Resource browser: Reload on 'c' (fix filtered DAO cache)

* Fix deprecated strings.Title in EKS access-entries

* Fix navigation: unwrap resource for type assertion

Navigation broken - Navigations() returned empty array due to failed type assertion.

Root cause: handleNavigation() used wrapped resource from contextForResource(),
but Navigations() methods expect unwrapped concrete types (e.g. *ClusterResource).

Fix: Use dao.UnwrapResource() like getNavigationShortcuts() does.

Test: All resource navigation keys (n/f/a/e/r/l/v/s/g/t/o/p) work.

* Add filter support for ASG/LaunchTemplate/KeyPair navigation

Enables filtered navigation from EKS node-groups. DAOs now check GetFilterFromContext for AutoScalingGroupName, LaunchTemplateId, KeyName filters, returning single resource instead of full list.

* Fix IsNotFound(): match lowercase 'not found' from DAO errors

79 DAOs use fmt.Errorf('resource not found: %s', id) (lowercase).
IsNotFound() only checked AWS SDK codes + 'NotFound' (capital N).
Filter navigation (ASG/EC2/IAM/EKS) relies on IsNotFound() -> failed on non-existent resources.

Add 'not found' to hasErrorCode() -> 1 line fix, no user-facing change.

* Fix ResourceBrowser: unwrap resources for ActionMenu/DiffView

* Update docs: reflect 169 resources (EKS support)

- Update README.md: 163→169 resources, add EKS
- Regenerate imports_custom.go via task gen-imports

* Update services.md: add EKS and ECS task-definitions

- Update resource count: 163→169
- Add EKS to Containers & ML section (5 resources)
- Add Task Definitions to ECS
- Add eks alias

* Fix DiffView AI chat: preserve region/profile metadata

Problem: commit 2780b20 broke AI chat in diff mode by unwrapping
resources before passing to DiffView, losing region/profile info.

Solution: DiffView now stores both wrapped (for metadata) and
unwrapped (for rendering) resources. buildAIContext() gets correct
region/profile from wrapped resources via buildResourceRef().

Files: internal/view/{diff_view,resource_browser_input}.go
@claude

This comment was marked as resolved.

@yimsk yimsk merged commit bc0b20e into main Jan 10, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant