|
31 | 31 | {"id":"mcs-26","title":"Refactor CLI tests to use table-driven pattern","description":"Tests for status subcommands (battery, fuel, location, tires, doors) repeat same pattern:\n cmd := NewStatusCmd()\n for _, subCmd := range cmd.Commands() {\n if subCmd.Use == \"battery\" { ... }\n }\n\nConvert to table-driven test:\n subcommands := []string{\"battery\", \"fuel\", \"location\", \"tires\", \"doors\"}\n for _, name := range subcommands {\n t.Run(name, func(t *testing.T) { ... })\n }\n\nAlso deduplicate test client setup using shared fixtures.\n\nFiles: internal/cli/status_test.go, internal/api/vehicle_test.go","acceptance_criteria":"- [ ] Subcommand tests use table-driven pattern\n- [ ] Test client setup uses shared helper\n- [ ] Tests clearly document expected behavior\n- [ ] No duplicate test setup code\n- [ ] All tests pass","status":"closed","priority":1,"issue_type":"chore","created_at":"2025-12-18T03:19:24.991759-08:00","updated_at":"2025-12-18T22:36:26.035364-08:00","closed_at":"2025-12-18T11:19:43.041731-08:00","dependencies":[{"issue_id":"mcs-26","depends_on_id":"mcs-25","type":"related","created_at":"2025-12-18T03:20:22.636349-08:00","created_by":"carlosvillela","metadata":"{}"}]} |
32 | 32 | {"id":"mcs-2683","title":"Improve confirmation polling: 20s HVAC delay, 5s poll interval, in-place progress","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-21T03:21:15.478627-08:00","updated_at":"2025-12-21T03:21:22.183812-08:00","closed_at":"2025-12-21T03:21:22.183812-08:00","close_reason":"Implemented: 20s initial delay for HVAC commands, 5s poll interval, in-place progress updates with carriage return"} |
33 | 33 | {"id":"mcs-27","title":"Add context.Context support to API client","description":"The API client doesn't support Go's context.Context for cancellation and timeouts. This is important for CLI applications where users might want to cancel long-running operations.\n\nAdd context parameter to API methods:\n func (c *Client) APIRequest(ctx context.Context, method, uri string, ...) error\n func (c *Client) DoorLock(ctx context.Context, internalVIN string) error\n\nFiles: internal/api/client.go, control.go, vehicle.go","design":"## Migration:\n1. Add ctx param to APIRequest, use http.NewRequestWithContext\n2. Update control.go and vehicle.go functions\n3. CLI: use cmd.Context() from cobra or context.WithTimeout\n\nStart with context.TODO() during migration, replace incrementally","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-18T03:19:25.041813-08:00","updated_at":"2025-12-18T22:36:26.035167-08:00","closed_at":"2025-12-18T11:34:23.679134-08:00"} |
34 | | -{"id":"mcs-278q","title":"Remove redundant mcs status subcommands","description":"The `mcs status` command has subcommands (battery, fuel, location, tires, doors) that are redundant with the main status output.\n\n## Current state\n- `mcs status` shows all info: battery, fuel, HVAC, doors, windows, hazards, tires, location, odometer\n- Subcommands show individual sections: battery, fuel, location, tires, doors\n- Inconsistent: some sections have subcommands, some don't (windows, hvac, odometer)\n\n## Proposal\nRemove all subcommands. The main `mcs status` command provides all the info, and `mcs status --json` can be used for scripting.\n\n## Subcommands to remove\n- `mcs status battery`\n- `mcs status fuel`\n- `mcs status location`\n- `mcs status tires`\n- `mcs status doors`","status":"in_progress","priority":2,"issue_type":"task","created_at":"2025-12-29T10:12:51.254642-08:00","updated_at":"2025-12-29T10:13:02.980464-08:00"} |
| 34 | +{"id":"mcs-278q","title":"Remove redundant mcs status subcommands","description":"The `mcs status` command has subcommands (battery, fuel, location, tires, doors) that are redundant with the main status output.\n\n## Current state\n- `mcs status` shows all info: battery, fuel, HVAC, doors, windows, hazards, tires, location, odometer\n- Subcommands show individual sections: battery, fuel, location, tires, doors\n- Inconsistent: some sections have subcommands, some don't (windows, hvac, odometer)\n\n## Proposal\nRemove all subcommands. The main `mcs status` command provides all the info, and `mcs status --json` can be used for scripting.\n\n## Subcommands to remove\n- `mcs status battery`\n- `mcs status fuel`\n- `mcs status location`\n- `mcs status tires`\n- `mcs status doors`","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-29T10:12:51.254642-08:00","updated_at":"2025-12-29T10:16:24.463278-08:00","closed_at":"2025-12-29T10:16:24.463278-08:00","close_reason":"Closed"} |
35 | 35 | {"id":"mcs-28","title":"Replace custom base64Encode with stdlib","description":"A custom base64 encoding function (30 lines) is implemented when Go's standard library provides this.\n\nLocation: internal/api/auth.go:379-410\n\nReplace with:\n encoding/base64.StdEncoding.EncodeToString(data)\n\nwhich is already used elsewhere in the codebase (crypto.go:32).","status":"closed","priority":1,"issue_type":"chore","created_at":"2025-12-18T03:19:47.250193-08:00","updated_at":"2025-12-18T22:36:26.034948-08:00","closed_at":"2025-12-18T11:09:39.669959-08:00"} |
36 | 36 | {"id":"mcs-29","title":"Remove hardcoded vehicle model from status output","description":"The vehicle model is hardcoded in status.go:223:\n output := \"\\nCX-90 GT PHEV (2025)\\n\"\n\nThis should be extracted from vecBaseInfos or made configurable to support other vehicle models.\n\nFiles: internal/cli/status.go","design":"## Options:\n1. Extract from vecBaseInfos response (preferred) - look for CarName/ModelName/ModelYear fields\n2. Add to config.toml as fallback\n\nRun `mcs raw status` to see actual JSON structure for field names","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-18T03:19:47.315867-08:00","updated_at":"2025-12-18T22:36:26.034754-08:00","closed_at":"2025-12-18T11:08:33.964914-08:00"} |
37 | 37 | {"id":"mcs-29on","title":"Nil pointer dereference when TokenCache.Load returns nil","description":"TokenCache.Load returns nil when the cache file does not exist, but callers may not check for nil before dereferencing, risking runtime panics","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T23:14:33.414852-08:00","updated_at":"2025-12-20T16:20:04.064735-08:00","closed_at":"2025-12-20T16:20:04.064735-08:00","close_reason":"Not a bug. Load() returning nil is documented behavior. TestLoad_NoCache verifies this. Callers are expected to check for nil."} |
|
0 commit comments