@@ -4,83 +4,42 @@ All notable changes to this project will be documented in this file.
44
55## [ Unreleased]
66
7+ ## [ 0.2.0] - 2026-02-18
8+
79### Added
810
911- AWS elevation support (` --provider aws ` )
1012- ` grant env ` command for AWS credential export: ` eval $(grant env --provider aws) `
11- - Multi-CSP: omitting ` --provider ` fetches eligibility from all providers and shows combined results
13+ - Multi-CSP support : omitting ` --provider ` fetches eligibility from all providers and shows combined results
1214- Provider label ` (azure) ` / ` (aws) ` in interactive selector when showing all providers
13- - ` WorkspaceTypeAccount ` workspace type for AWS accounts
14- - ` AWSCredentials ` model for parsing ` accessCredentials ` response
15-
16- ### Fixed
17-
18- - Validate AWS credential fields are non-empty in ` ParseAWSCredentials() ` — prevents silent empty exports
19- - Provider validation in ` fetchEligibility() ` now uses ` supportedCSPs ` instead of hardcoded switch
20- - Log per-CSP eligibility errors in verbose mode when ` --provider ` is omitted
21-
22- ### Removed
23-
24- - Unused ` CSPGCP ` constant (re-add when GCP is implemented)
25- - GCP references from ` grant status ` provider flag help and ` parseProvider() `
26-
27- ### Performance
28-
29- - Parallelize multi-CSP eligibility queries — all providers fetched concurrently when ` --provider ` is omitted
30-
31- ### Documentation
32-
33- - Condense README: remove duplicate Quick Start and How It Works sections, slim command docs, trim obvious troubleshooting entries (~ 40% reduction)
15+ - Non-interactive ` favorites add ` with ` --target ` and ` --role ` flags for scripting
16+ - Optional name argument for ` favorites add ` — name can be prompted after interactive target selection
17+ - 30-second API request timeouts on all SCA API calls
18+ - Workspace name resolution in ` grant status ` via eligibility API cross-reference
19+ - Simplified bug report issue template
3420
3521### Changed
3622
37- - Renamed ` AzureEligibleTarget ` to ` EligibleTarget ` (CSP-agnostic)
38- - Provider validation accepts ` azure ` and ` aws ` (was azure-only)
39- - Elevation output shows AWS export statements when credentials are present
40- - UI selector normalizes workspace type display (case-insensitive)
4123- ` --provider ` flag no longer defaults to Azure; omit to see all providers
42- - Make Identity URL optional in ` grant configure ` — the SDK auto-discovers it from the username
43-
44- ### Refactored
45-
46- - Accept ` *IdsecProfile ` directly in ` NewRootCommandWithDeps ` to eliminate filesystem access during tests
47- - Wrap original error in authentication check (` runElevateWithDeps ` ) instead of discarding it
48- - Extract ` checkResponse ` helper in SCA service to deduplicate HTTP error handling across 3 endpoints
49- - Add safety comments about package-level state and ` t.Parallel() ` restriction in ` cmd/ ` tests
24+ - Identity URL is now optional in ` grant configure ` — the SDK auto-discovers it from the username
25+ - ` favorites remove ` with no arguments now shows a helpful error with usage hint
26+ - Verbose hint suppressed for argument validation errors where it adds no value
27+ - Improved help text with examples and cross-references for all favorites subcommands
5028
5129### Fixed
5230
53- - CLAUDE.md documenting Go 1.24+ when ` go.mod ` requires Go 1.25+
54- - ` favorites add ` with partial flags (` --target ` without ` --role ` ) hitting auth before flag validation in CI
31+ - ` config.Load() ` now propagates non-ErrNotExist errors (e.g., permission denied) instead of silently returning defaults
32+ - ` favorites add ` with partial flags (` --target ` without ` --role ` ) no longer requires authentication before reporting the validation error
33+ - Case-insensitive target matching for ` --target ` and ` --role ` flags
34+ - Double error output from Cobra eliminated (` SilenceErrors ` , ` SilenceUsage ` )
35+ - ` io.ReadAll ` errors in SCA service error-response paths now produce fallback messages instead of empty strings
36+ - Error messages lowercased per Go conventions
5537
56- ### Previously Refactored
57-
58- - Remove dead ` mfaMethod ` parameter from configure command signatures
59- - Remove inconsistent nil check for ` eligibilityLister ` in root command
60- - Rename snake_case import aliases to Go-idiomatic single-word style (` sdkconfig ` , ` sdkmodels ` , ` authmodels ` , ` scamodels ` , ` commonmodels ` )
61- - Add ` io.LimitReader ` (4 KB cap) to error response body reads in SCA service
62- - Pass ` io.Writer ` to ` buildWorkspaceNameMap ` for testable verbose warnings (replaces ` os.Stderr ` )
63- - Add context cancellation check in ` buildWorkspaceNameMap ` CSP loop
64- - Remove duplicate ` (c *Config) GetFavorite() ` method; use ` config.GetFavorite(cfg, ...) ` consistently
65- - Add defer cleanup for ` passedArgValidation ` global state in root tests
66- - Add ` t.Parallel() ` to pure tests in eligibility, session, selector, and favorites packages
67- - Consolidate ` authenticator ` and ` profileSaver ` interfaces into ` cmd/interfaces.go `
68- - Add ` config.LoadDefaultWithPath() ` helper to reduce boilerplate config loading
69- - Extract ` parseElevateFlags() ` helper to eliminate duplicate flag reading in root command
70- - Remove duplicate ` --target ` /` --role ` validation in favorites add (handled by ` runFavoritesAddWithDeps ` )
71- - Pass pre-loaded config into ` runFavoritesAddWithDeps ` to avoid double config load
72- - Move ` executeWithHint ` test helper from ` root.go ` to ` test_helpers.go `
73- - Consolidate scattered ` init() ` functions into single ` cmd/commands.go `
74- - Use ` MarkFlagsMutuallyExclusive ` for ` --favorite ` vs ` --target ` /` --role ` flags
75- - Use ` rootCmd.ErrOrStderr() ` instead of ` os.Stderr ` in ` Execute() ` for testability
76- - Change ` version ` command from ` Run ` to ` RunE ` for consistency
77-
78- ### Added
38+ ### Performance
7939
80- - 30-second API request timeouts via ` context.WithTimeout ` on all SCA API calls
81- - Verbose warning when workspace name lookup fails in ` grant status `
82- - Documentation comments for package-level state variables
40+ - Multi-CSP eligibility queries run concurrently when ` --provider ` is omitted
8341
8442### Removed
8543
86- - ` poc/ ` directory from version control (added to ` .gitignore ` )
44+ - Unused ` --duration ` flag (was parsed but never sent to API)
45+ - ` CSPGCP ` constant (re-add when GCP is implemented)
0 commit comments