fizzy-cli 0.8.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.golangci.yml +56 -0
- package/IMPLEMENTATION_PLAN.md +58 -0
- package/docs/API.md +89 -0
- package/package.json +2 -1
- package/.env +0 -1
- package/.github/workflows/release.yml +0 -29
- package/.github/workflows/tests.yml +0 -24
- package/AGENTS.md +0 -33
- package/CHANGELOG.md +0 -194
- package/Makefile +0 -43
- package/bin/fizzy +0 -0
- package/cmd/account.go +0 -14
- package/cmd/account_list.go +0 -44
- package/cmd/account_list_test.go +0 -118
- package/cmd/board.go +0 -49
- package/cmd/board_create.go +0 -59
- package/cmd/board_create_test.go +0 -141
- package/cmd/board_delete.go +0 -40
- package/cmd/board_delete_test.go +0 -121
- package/cmd/board_list.go +0 -44
- package/cmd/board_list_test.go +0 -115
- package/cmd/board_show.go +0 -40
- package/cmd/board_show_test.go +0 -113
- package/cmd/board_test.go +0 -92
- package/cmd/board_update.go +0 -72
- package/cmd/board_update_test.go +0 -233
- package/cmd/card.go +0 -24
- package/cmd/card_assign.go +0 -55
- package/cmd/card_assign_test.go +0 -130
- package/cmd/card_close.go +0 -46
- package/cmd/card_close_test.go +0 -92
- package/cmd/card_create.go +0 -72
- package/cmd/card_create_test.go +0 -186
- package/cmd/card_delete.go +0 -46
- package/cmd/card_delete_test.go +0 -92
- package/cmd/card_golden.go +0 -46
- package/cmd/card_golden_test.go +0 -92
- package/cmd/card_list.go +0 -114
- package/cmd/card_list_test.go +0 -373
- package/cmd/card_not_now.go +0 -46
- package/cmd/card_not_now_test.go +0 -92
- package/cmd/card_reaction.go +0 -13
- package/cmd/card_reaction_create.go +0 -46
- package/cmd/card_reaction_create_test.go +0 -148
- package/cmd/card_reaction_delete.go +0 -46
- package/cmd/card_reaction_delete_test.go +0 -112
- package/cmd/card_reaction_list.go +0 -51
- package/cmd/card_reaction_list_test.go +0 -127
- package/cmd/card_reopen.go +0 -46
- package/cmd/card_reopen_test.go +0 -92
- package/cmd/card_show.go +0 -46
- package/cmd/card_show_test.go +0 -92
- package/cmd/card_tag.go +0 -51
- package/cmd/card_tag_test.go +0 -112
- package/cmd/card_triage.go +0 -46
- package/cmd/card_ungolden.go +0 -46
- package/cmd/card_ungolden_test.go +0 -92
- package/cmd/card_untriage.go +0 -46
- package/cmd/card_untriage_test.go +0 -92
- package/cmd/card_unwatch.go +0 -46
- package/cmd/card_unwatch_test.go +0 -92
- package/cmd/card_update.go +0 -82
- package/cmd/card_update_test.go +0 -149
- package/cmd/card_watch.go +0 -46
- package/cmd/card_watch_test.go +0 -92
- package/cmd/column.go +0 -14
- package/cmd/column_create.go +0 -79
- package/cmd/column_create_test.go +0 -178
- package/cmd/column_delete.go +0 -40
- package/cmd/column_delete_test.go +0 -121
- package/cmd/column_list.go +0 -44
- package/cmd/column_list_test.go +0 -138
- package/cmd/column_show.go +0 -40
- package/cmd/column_show_test.go +0 -111
- package/cmd/column_update.go +0 -67
- package/cmd/column_update_test.go +0 -198
- package/cmd/comment.go +0 -14
- package/cmd/comment_create.go +0 -51
- package/cmd/comment_create_test.go +0 -129
- package/cmd/comment_delete.go +0 -46
- package/cmd/comment_delete_test.go +0 -92
- package/cmd/comment_list.go +0 -51
- package/cmd/comment_list_test.go +0 -132
- package/cmd/comment_show.go +0 -46
- package/cmd/comment_show_test.go +0 -104
- package/cmd/comment_update.go +0 -51
- package/cmd/comment_update_test.go +0 -130
- package/cmd/login.go +0 -81
- package/cmd/login_test.go +0 -98
- package/cmd/notification.go +0 -14
- package/cmd/notification_list.go +0 -69
- package/cmd/notification_list_test.go +0 -288
- package/cmd/notification_read.go +0 -51
- package/cmd/notification_read_all.go +0 -38
- package/cmd/notification_read_all_test.go +0 -75
- package/cmd/notification_read_test.go +0 -138
- package/cmd/notification_unread.go +0 -44
- package/cmd/notification_unread_test.go +0 -99
- package/cmd/reaction.go +0 -13
- package/cmd/reaction_create.go +0 -46
- package/cmd/reaction_create_test.go +0 -113
- package/cmd/reaction_delete.go +0 -46
- package/cmd/reaction_delete_test.go +0 -92
- package/cmd/reaction_list.go +0 -51
- package/cmd/reaction_list_test.go +0 -125
- package/cmd/root.go +0 -38
- package/cmd/step.go +0 -14
- package/cmd/step_create.go +0 -53
- package/cmd/step_create_test.go +0 -171
- package/cmd/step_delete.go +0 -46
- package/cmd/step_delete_test.go +0 -92
- package/cmd/step_update.go +0 -66
- package/cmd/step_update_test.go +0 -190
- package/cmd/tag.go +0 -15
- package/cmd/tag_list.go +0 -47
- package/cmd/tag_list_test.go +0 -109
- package/cmd/use.go +0 -85
- package/cmd/use_test.go +0 -186
- package/cmd/user.go +0 -22
- package/cmd/user_deactivate.go +0 -40
- package/cmd/user_deactivate_test.go +0 -121
- package/cmd/user_list.go +0 -44
- package/cmd/user_list_test.go +0 -126
- package/cmd/user_show.go +0 -40
- package/cmd/user_show_test.go +0 -110
- package/cmd/user_update.go +0 -71
- package/cmd/user_update_test.go +0 -177
- package/go.mod +0 -31
- package/go.sum +0 -53
- package/internal/api/boards.go +0 -93
- package/internal/api/cards.go +0 -322
- package/internal/api/client.go +0 -99
- package/internal/api/columns.go +0 -113
- package/internal/api/comments.go +0 -108
- package/internal/api/identity.go +0 -24
- package/internal/api/notifications.go +0 -89
- package/internal/api/reactions.go +0 -130
- package/internal/api/steps.go +0 -101
- package/internal/api/tags.go +0 -24
- package/internal/api/types.go +0 -195
- package/internal/api/users.go +0 -75
- package/internal/app/app.go +0 -49
- package/internal/colors/colors.go +0 -32
- package/internal/config/config.go +0 -70
- package/internal/testutil/client.go +0 -26
- package/internal/ui/account_list.go +0 -14
- package/internal/ui/account_selector.go +0 -63
- package/internal/ui/board_list.go +0 -14
- package/internal/ui/board_show.go +0 -17
- package/internal/ui/card_list.go +0 -14
- package/internal/ui/card_show.go +0 -23
- package/internal/ui/column_list.go +0 -28
- package/internal/ui/column_show.go +0 -16
- package/internal/ui/comment_list.go +0 -25
- package/internal/ui/format.go +0 -27
- package/internal/ui/notification_list.go +0 -27
- package/internal/ui/reaction_list.go +0 -14
- package/internal/ui/user_list.go +0 -19
- package/internal/ui/user_show.go +0 -23
package/.golangci.yml
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
version: "2"
|
|
2
|
+
linters:
|
|
3
|
+
enable:
|
|
4
|
+
- errorlint
|
|
5
|
+
- gocritic
|
|
6
|
+
- gosec
|
|
7
|
+
- misspell
|
|
8
|
+
- nilerr
|
|
9
|
+
settings:
|
|
10
|
+
errcheck:
|
|
11
|
+
check-type-assertions: false
|
|
12
|
+
exclude-functions:
|
|
13
|
+
- fmt.Fprintf
|
|
14
|
+
- fmt.Printf
|
|
15
|
+
- fmt.Print
|
|
16
|
+
- fmt.Fprintln
|
|
17
|
+
- fmt.Println
|
|
18
|
+
- (io.Writer).Write
|
|
19
|
+
- (*github.com/spf13/cobra.Command).MarkFlagRequired
|
|
20
|
+
- (*github.com/spf13/cobra.Command).ParseFlags
|
|
21
|
+
- (*encoding/json.Encoder).Encode
|
|
22
|
+
- encoding/json.Unmarshal
|
|
23
|
+
gocritic:
|
|
24
|
+
disabled-checks:
|
|
25
|
+
- singleCaseSwitch
|
|
26
|
+
- rangeValCopy
|
|
27
|
+
- commentedOutCode
|
|
28
|
+
enabled-tags:
|
|
29
|
+
- diagnostic
|
|
30
|
+
- performance
|
|
31
|
+
gosec:
|
|
32
|
+
excludes:
|
|
33
|
+
- G104
|
|
34
|
+
- G301
|
|
35
|
+
- G304
|
|
36
|
+
exclusions:
|
|
37
|
+
generated: lax
|
|
38
|
+
rules:
|
|
39
|
+
- linters:
|
|
40
|
+
- errcheck
|
|
41
|
+
source: defer.*Close\(\)
|
|
42
|
+
paths:
|
|
43
|
+
- .*_test\.go$
|
|
44
|
+
- third_party$
|
|
45
|
+
- builtin$
|
|
46
|
+
- examples$
|
|
47
|
+
issues:
|
|
48
|
+
max-issues-per-linter: 0
|
|
49
|
+
max-same-issues: 0
|
|
50
|
+
formatters:
|
|
51
|
+
exclusions:
|
|
52
|
+
generated: lax
|
|
53
|
+
paths:
|
|
54
|
+
- third_party$
|
|
55
|
+
- builtin$
|
|
56
|
+
- examples$
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Fizzy CLI - Remaining Implementation Plan
|
|
2
|
+
|
|
3
|
+
This document tracks features that are **not yet implemented**.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 📋 Missing Features
|
|
8
|
+
|
|
9
|
+
### Pins Management
|
|
10
|
+
|
|
11
|
+
Card pinning for quick access:
|
|
12
|
+
|
|
13
|
+
- [ ] `fizzy card pin <number>` - `POST /cards/:number/pin`
|
|
14
|
+
- [ ] `fizzy card unpin <number>` - `DELETE /cards/:number/pin`
|
|
15
|
+
- [ ] `fizzy pin list` - `GET /my/pins` - List all pinned cards
|
|
16
|
+
|
|
17
|
+
### Advanced Features
|
|
18
|
+
|
|
19
|
+
- [ ] **File uploads** - Support for card image uploads
|
|
20
|
+
- [ ] **Rich text support** - HTML validation for description fields
|
|
21
|
+
- [ ] **ETag caching** - `ETag`/`Cache-Control` header support for bandwidth optimization
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 📝 API Client Work Required
|
|
26
|
+
|
|
27
|
+
### Pin Operations
|
|
28
|
+
|
|
29
|
+
```go
|
|
30
|
+
func (c *Client) PostCardPin(ctx context.Context, cardNumber int) (bool, error)
|
|
31
|
+
func (c *Client) DeleteCardPin(ctx context.Context, cardNumber int) (bool, error)
|
|
32
|
+
func (c *Client) GetMyPins(ctx context.Context) ([]Card, error)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 📊 Completion Status
|
|
38
|
+
|
|
39
|
+
| Feature | Status |
|
|
40
|
+
|---------|--------|
|
|
41
|
+
| Authentication & Setup | ✅ Complete |
|
|
42
|
+
| Accounts | ✅ Complete |
|
|
43
|
+
| Boards (CRUD) | ✅ Complete |
|
|
44
|
+
| Cards (CRUD + operations) | ✅ Complete |
|
|
45
|
+
| Columns (CRUD) | ✅ Complete |
|
|
46
|
+
| Tags | ✅ Complete |
|
|
47
|
+
| Notifications | ✅ Complete |
|
|
48
|
+
| Steps | ✅ Complete |
|
|
49
|
+
| Comments | ✅ Complete |
|
|
50
|
+
| Reactions (Comment & Card) | ✅ Complete |
|
|
51
|
+
| Users | ✅ Complete |
|
|
52
|
+
| Identity (whoami) | ✅ Complete |
|
|
53
|
+
| Card Filtering & Search | ✅ Complete |
|
|
54
|
+
| Pagination | ✅ Complete |
|
|
55
|
+
| **Pins** | ⏳ Pending |
|
|
56
|
+
| **File Uploads** | ⏳ Pending |
|
|
57
|
+
| **Rich Text** | ⏳ Pending |
|
|
58
|
+
| **ETag Caching** | ⏳ Pending |
|
package/docs/API.md
CHANGED
|
@@ -118,6 +118,22 @@ __Error responses:__
|
|
|
118
118
|
| `401 Unauthorized` | Invalid `pending_authentication_token` or `code` |
|
|
119
119
|
| `429 Too Many Requests` | Rate limit exceeded |
|
|
120
120
|
|
|
121
|
+
|
|
122
|
+
#### Delete server-side session (_log out_)
|
|
123
|
+
|
|
124
|
+
To log out and destroy the server-side session:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
curl -X DELETE \
|
|
128
|
+
-H "Accept: application/json" \
|
|
129
|
+
-H "Cookie: session_token=eyJfcmFpbHMi..." \
|
|
130
|
+
https://app.fizzy.do/session
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
__Response:__
|
|
134
|
+
|
|
135
|
+
Returns `204 No Content` on success.
|
|
136
|
+
|
|
121
137
|
## Caching
|
|
122
138
|
|
|
123
139
|
Most endpoints return [ETag](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/ETag) and [Cache-Control](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Cache-Control) headers. You can use these to avoid re-downloading unchanged data.
|
|
@@ -805,6 +821,79 @@ __Response:__
|
|
|
805
821
|
|
|
806
822
|
Returns `204 No Content` on success.
|
|
807
823
|
|
|
824
|
+
## Pins
|
|
825
|
+
|
|
826
|
+
Pins let users keep quick access to important cards.
|
|
827
|
+
|
|
828
|
+
### `POST /:account_slug/cards/:card_number/pin`
|
|
829
|
+
|
|
830
|
+
Pins a card for the current user.
|
|
831
|
+
|
|
832
|
+
__Response:__
|
|
833
|
+
|
|
834
|
+
Returns `204 No Content` on success.
|
|
835
|
+
|
|
836
|
+
### `DELETE /:account_slug/cards/:card_number/pin`
|
|
837
|
+
|
|
838
|
+
Unpins a card for the current user.
|
|
839
|
+
|
|
840
|
+
__Response:__
|
|
841
|
+
|
|
842
|
+
Returns `204 No Content` on success.
|
|
843
|
+
|
|
844
|
+
### `GET /my/pins`
|
|
845
|
+
|
|
846
|
+
Returns the current user's pinned cards. This endpoint is not paginated and returns up to 100 cards.
|
|
847
|
+
|
|
848
|
+
__Response:__
|
|
849
|
+
|
|
850
|
+
```json
|
|
851
|
+
[
|
|
852
|
+
{
|
|
853
|
+
"id": "03f5vaeq985jlvwv3arl4srq2",
|
|
854
|
+
"number": 1,
|
|
855
|
+
"title": "First!",
|
|
856
|
+
"status": "published",
|
|
857
|
+
"description": "Hello, World!",
|
|
858
|
+
"description_html": "<div class=\"action-text-content\"><p>Hello, World!</p></div>",
|
|
859
|
+
"image_url": null,
|
|
860
|
+
"tags": ["programming"],
|
|
861
|
+
"golden": false,
|
|
862
|
+
"last_active_at": "2025-12-05T19:38:48.553Z",
|
|
863
|
+
"created_at": "2025-12-05T19:38:48.540Z",
|
|
864
|
+
"url": "http://fizzy.localhost:3006/897362094/cards/4",
|
|
865
|
+
"board": {
|
|
866
|
+
"id": "03f5v9zkft4hj9qq0lsn9ohcm",
|
|
867
|
+
"name": "Fizzy",
|
|
868
|
+
"all_access": true,
|
|
869
|
+
"created_at": "2025-12-05T19:36:35.534Z",
|
|
870
|
+
"url": "http://fizzy.localhost:3006/897362094/boards/03f5v9zkft4hj9qq0lsn9ohcm",
|
|
871
|
+
"creator": {
|
|
872
|
+
"id": "03f5v9zjw7pz8717a4no1h8a7",
|
|
873
|
+
"name": "David Heinemeier Hansson",
|
|
874
|
+
"role": "owner",
|
|
875
|
+
"active": true,
|
|
876
|
+
"email_address": "david@example.com",
|
|
877
|
+
"created_at": "2025-12-05T19:36:35.401Z",
|
|
878
|
+
"url": "http://fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7",
|
|
879
|
+
"avatar_url": "http://fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7/avatar"
|
|
880
|
+
}
|
|
881
|
+
},
|
|
882
|
+
"creator": {
|
|
883
|
+
"id": "03f5v9zjw7pz8717a4no1h8a7",
|
|
884
|
+
"name": "David Heinemeier Hansson",
|
|
885
|
+
"role": "owner",
|
|
886
|
+
"active": true,
|
|
887
|
+
"email_address": "david@example.com",
|
|
888
|
+
"created_at": "2025-12-05T19:36:35.401Z",
|
|
889
|
+
"url": "http://fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7",
|
|
890
|
+
"avatar_url": "http://fizzy.localhost:3006/897362094/users/03f5v9zjw7pz8717a4no1h8a7/avatar"
|
|
891
|
+
},
|
|
892
|
+
"comments_url": "http://fizzy.localhost:3006/897362094/cards/4/comments"
|
|
893
|
+
}
|
|
894
|
+
]
|
|
895
|
+
```
|
|
896
|
+
|
|
808
897
|
## Comments
|
|
809
898
|
|
|
810
899
|
Comments are attached to cards and support rich text.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fizzy-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "CLI for https://fizzy.do",
|
|
5
5
|
"main": "bin/fizzy",
|
|
6
6
|
"type": "module",
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"scripts": {
|
|
11
11
|
"postinstall": "node scripts/postinstall.js",
|
|
12
|
+
"prepack": "rm -f bin/fizzy bin/fizzy.exe",
|
|
12
13
|
"build": "make build-all"
|
|
13
14
|
},
|
|
14
15
|
"repository": {
|
package/.env
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
FIZZY_ACCESS_TOKEN=S7FiVcT1K3WgwXc7uzBdQRim
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
name: Release
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [created]
|
|
6
|
-
|
|
7
|
-
permissions:
|
|
8
|
-
contents: write
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
build:
|
|
12
|
-
runs-on: ubuntu-latest
|
|
13
|
-
|
|
14
|
-
steps:
|
|
15
|
-
- uses: actions/checkout@v4
|
|
16
|
-
|
|
17
|
-
- name: Set up Go
|
|
18
|
-
uses: actions/setup-go@v4
|
|
19
|
-
with:
|
|
20
|
-
go-version: "1.25"
|
|
21
|
-
|
|
22
|
-
- name: Build binaries
|
|
23
|
-
run: make build-all
|
|
24
|
-
|
|
25
|
-
- name: Upload Release Assets
|
|
26
|
-
env:
|
|
27
|
-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
28
|
-
run: |
|
|
29
|
-
gh release upload ${{ github.event.release.tag_name }} bin/fizzy-* --clobber
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
name: Tests
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches: [main]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [main]
|
|
8
|
-
|
|
9
|
-
jobs:
|
|
10
|
-
test:
|
|
11
|
-
runs-on: ubuntu-latest
|
|
12
|
-
|
|
13
|
-
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
15
|
-
|
|
16
|
-
- uses: actions/setup-go@v4
|
|
17
|
-
with:
|
|
18
|
-
go-version: "1.25"
|
|
19
|
-
|
|
20
|
-
- name: Install gotestsum
|
|
21
|
-
run: go install gotest.tools/gotestsum@latest
|
|
22
|
-
|
|
23
|
-
- name: Run tests
|
|
24
|
-
run: make test
|
package/AGENTS.md
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# AGENTS.md
|
|
2
|
-
|
|
3
|
-
## About
|
|
4
|
-
|
|
5
|
-
fizzy-cli is a CLI application built in Go that provides an interface to the
|
|
6
|
-
[Fizzy](https://fizzy.do) API. Fizzy is a kanban-style project management SaaS.
|
|
7
|
-
|
|
8
|
-
## Dev instructions
|
|
9
|
-
|
|
10
|
-
All the commands for development are available through Makefile, just read that
|
|
11
|
-
file whenever you need to run something because chances are that you will find
|
|
12
|
-
you answer there.
|
|
13
|
-
|
|
14
|
-
You can find the Fizzy API specification at @docs/API.md
|
|
15
|
-
|
|
16
|
-
## Testing
|
|
17
|
-
|
|
18
|
-
Automated testing is done via `make test`.
|
|
19
|
-
|
|
20
|
-
For manual testing/debugging, you should run `make install` first to install the
|
|
21
|
-
binary and then run the `fizzy` command normally.
|
|
22
|
-
|
|
23
|
-
## Code quality, standards and style
|
|
24
|
-
|
|
25
|
-
This project is being built in Go because it's supposed to have a strong focus
|
|
26
|
-
on performance. Always prefer performant code and solutions and low memory
|
|
27
|
-
footprint.
|
|
28
|
-
|
|
29
|
-
Don't write obvious code comments. Only use code comments when the code itself
|
|
30
|
-
requires some clarification to be understood.
|
|
31
|
-
|
|
32
|
-
When in doubt, always check similar files or features and reuse the patterns and
|
|
33
|
-
style applied.
|
package/CHANGELOG.md
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
## 0.8.0 - 2026-02-11
|
|
4
|
-
|
|
5
|
-
### Features
|
|
6
|
-
|
|
7
|
-
#### Card Management
|
|
8
|
-
|
|
9
|
-
- `fizzy card list` now supports filtering by board, tags, assignees, creators, and closure status
|
|
10
|
-
- Enhanced card listing with additional query parameters for better filtering capabilities
|
|
11
|
-
|
|
12
|
-
#### Reaction Management
|
|
13
|
-
|
|
14
|
-
- `fizzy reaction list <card_number>` - List all reactions on a card
|
|
15
|
-
- `fizzy reaction create <card_number> <emoji>` - Add a reaction to a card
|
|
16
|
-
- `fizzy reaction delete <card_number> <reaction_id>` - Remove a reaction from a card
|
|
17
|
-
|
|
18
|
-
#### User Management
|
|
19
|
-
|
|
20
|
-
- `fizzy user list` - List all users in the account
|
|
21
|
-
- `fizzy user show <user_id>` - Display details for a specific user
|
|
22
|
-
- `fizzy user update <user_id>` - Update user properties (name, avatar)
|
|
23
|
-
- `fizzy user deactivate <user_id>` - Deactivate a user account
|
|
24
|
-
|
|
25
|
-
### Improvements
|
|
26
|
-
|
|
27
|
-
- Updated API specification to latest version
|
|
28
|
-
|
|
29
|
-
## 0.7.0 - 2026-01-26
|
|
30
|
-
|
|
31
|
-
### Features
|
|
32
|
-
|
|
33
|
-
#### Board Management
|
|
34
|
-
|
|
35
|
-
- `fizzy board show <board_id>` - Display details for a specific board
|
|
36
|
-
- `fizzy board update <board_id>` - Update board properties (name, access, auto-postpone period)
|
|
37
|
-
- `fizzy board delete <board_id>` - Delete a board
|
|
38
|
-
|
|
39
|
-
#### Column Management
|
|
40
|
-
|
|
41
|
-
- `fizzy column show <column_id>` - Display details for a specific column
|
|
42
|
-
- `fizzy column update <column_id>` - Update column properties (name, color)
|
|
43
|
-
- `fizzy column delete <column_id>` - Delete a column
|
|
44
|
-
|
|
45
|
-
### Improvements
|
|
46
|
-
|
|
47
|
-
- Improved command output testability by using consistent output writers
|
|
48
|
-
|
|
49
|
-
## 0.6.1 - 2026-01-26
|
|
50
|
-
|
|
51
|
-
### Fixes
|
|
52
|
-
|
|
53
|
-
- Fixed API client to not parse empty responses from POST endpoints, this was
|
|
54
|
-
causing the create sub-command of comment, reaction and step to show an error
|
|
55
|
-
message, even though the resource was actually created on the API.
|
|
56
|
-
|
|
57
|
-
## 0.6.0 - 2026-01-25
|
|
58
|
-
|
|
59
|
-
### Features
|
|
60
|
-
|
|
61
|
-
#### Reaction Management
|
|
62
|
-
|
|
63
|
-
- `fizzy reaction list <card_number> <comment_id>` - List all reactions on a comment
|
|
64
|
-
- `fizzy reaction add <card_number> <comment_id> <emoji>` - Add a reaction to a comment
|
|
65
|
-
- `fizzy reaction remove <card_number> <comment_id> <reaction_id>` - Remove a reaction from a comment
|
|
66
|
-
|
|
67
|
-
#### Step Management
|
|
68
|
-
|
|
69
|
-
- `fizzy step create <card_number> --content <text> [--completed]` - Create a new step on a card
|
|
70
|
-
- `fizzy step update <card_number> <step_id> [--content <text>] [--completed]` - Update a step
|
|
71
|
-
- `fizzy step delete <card_number> <step_id>` - Delete a step from a card
|
|
72
|
-
|
|
73
|
-
#### Comment Management
|
|
74
|
-
|
|
75
|
-
- `fizzy comment delete <card_number> <comment_id>` - Delete a comment from a card
|
|
76
|
-
- `fizzy comment update <card_number> <comment_id> --body <text>` - Update a comment on a card
|
|
77
|
-
|
|
78
|
-
### Improvements
|
|
79
|
-
|
|
80
|
-
- Refactored API client logic into separate files for better organization
|
|
81
|
-
- Enhanced card update command to use `Flags().Changed()` for better flag handling
|
|
82
|
-
- Comprehensive test coverage for all new commands (168 tests total)
|
|
83
|
-
|
|
84
|
-
## 0.5.0 - 2026-01-25
|
|
85
|
-
|
|
86
|
-
### Features
|
|
87
|
-
|
|
88
|
-
#### Comment Management
|
|
89
|
-
|
|
90
|
-
- `fizzy comment list <card_number>` - List all comments on a card
|
|
91
|
-
- `fizzy comment show <card_number> <comment_id>` - Display a specific comment
|
|
92
|
-
- `fizzy comment add <card_number> <body>` - Create a new comment on a card
|
|
93
|
-
|
|
94
|
-
### Fixes
|
|
95
|
-
|
|
96
|
-
- Fixed error handling in notification read-all command
|
|
97
|
-
- Removed global flag usage in some commands
|
|
98
|
-
|
|
99
|
-
## 0.4.0 - 2026-01-19
|
|
100
|
-
|
|
101
|
-
### Features
|
|
102
|
-
|
|
103
|
-
#### Card Management
|
|
104
|
-
|
|
105
|
-
- `fizzy card not-now <card_number>` - Move a card to "Not Now" status
|
|
106
|
-
- `fizzy card untriage <card_number>` - Send a card back to triage
|
|
107
|
-
- `fizzy card watch <card_number>` - Subscribe to card notifications
|
|
108
|
-
- `fizzy card unwatch <card_number>` - Unsubscribe from card notifications
|
|
109
|
-
- `fizzy card golden <card_number>` - Mark a card as golden
|
|
110
|
-
- `fizzy card ungolden <card_number>` - Remove golden status from a card
|
|
111
|
-
|
|
112
|
-
## 0.3.0 - 2026-01-11
|
|
113
|
-
|
|
114
|
-
### Features
|
|
115
|
-
|
|
116
|
-
#### Notification Management
|
|
117
|
-
|
|
118
|
-
- `fizzy notification list` - List all notifications with optional filtering
|
|
119
|
-
- `fizzy notification read <notification_id>` - Mark a notification as read and display it
|
|
120
|
-
- `fizzy notification unread <notification_id>` - Mark a notification as unread
|
|
121
|
-
- `fizzy notification read-all` - Mark all unread notifications as read
|
|
122
|
-
|
|
123
|
-
#### Card Management
|
|
124
|
-
|
|
125
|
-
- `fizzy card assign <card_number> <user_id>` - Assign or unassign a user to/from a card
|
|
126
|
-
- `fizzy card triage <card_number> <column_id>` - Move a card from triage into a column
|
|
127
|
-
|
|
128
|
-
## [0.2.1] - 2025-12-20
|
|
129
|
-
|
|
130
|
-
### Fixes
|
|
131
|
-
|
|
132
|
-
- NPM package publishing script
|
|
133
|
-
|
|
134
|
-
## [0.2.0] - 2025-12-20
|
|
135
|
-
|
|
136
|
-
### Features
|
|
137
|
-
|
|
138
|
-
#### Card Management
|
|
139
|
-
|
|
140
|
-
- `fizzy card update <card_number>` - Update card properties (title, description, status, tags)
|
|
141
|
-
- `fizzy card delete <card_number>` - Delete a card permanently
|
|
142
|
-
- `fizzy card close <card_number>` - Close an existing card (already existed, now documented)
|
|
143
|
-
- `fizzy card reopen <card_number>` - Reopen a closed card (already existed, now documented)
|
|
144
|
-
|
|
145
|
-
#### Account Management
|
|
146
|
-
|
|
147
|
-
- `fizzy account list` - List all accounts you have access to
|
|
148
|
-
|
|
149
|
-
#### Improvements
|
|
150
|
-
|
|
151
|
-
- `fizzy board` without arguments now displays the currently selected board
|
|
152
|
-
- Added `--version` flag to display CLI version
|
|
153
|
-
- Fixed HTTP client leak in API requests
|
|
154
|
-
- Updated API specification to latest version
|
|
155
|
-
|
|
156
|
-
## [0.1.0] - 2025-12-16
|
|
157
|
-
|
|
158
|
-
### Initial Release
|
|
159
|
-
|
|
160
|
-
The first stable release of Fizzy CLI with core functionality for managing
|
|
161
|
-
boards, cards, and columns.
|
|
162
|
-
|
|
163
|
-
### Features
|
|
164
|
-
|
|
165
|
-
#### Authentication
|
|
166
|
-
|
|
167
|
-
- `fizzy login` - Authenticate with Fizzy API using access tokens
|
|
168
|
-
|
|
169
|
-
#### Board Management
|
|
170
|
-
|
|
171
|
-
- `fizzy board list` - List all boards
|
|
172
|
-
- `fizzy board create` - Create a new board
|
|
173
|
-
|
|
174
|
-
#### Card Management
|
|
175
|
-
|
|
176
|
-
- `fizzy card list` - List all cards in the selected board
|
|
177
|
-
- `fizzy card create` - Create a new card
|
|
178
|
-
- `fizzy card show <card_id>` - Display details for a specific card
|
|
179
|
-
|
|
180
|
-
#### Column Management
|
|
181
|
-
|
|
182
|
-
- `fizzy column list` - List all columns in the selected board
|
|
183
|
-
- `fizzy column create` - Create a new column
|
|
184
|
-
|
|
185
|
-
#### Configuration
|
|
186
|
-
|
|
187
|
-
- `fizzy use --board <name>` - Set the active board for subsequent commands
|
|
188
|
-
- `fizzy use --account <slug>` - Set the active account for subsequent commands
|
|
189
|
-
|
|
190
|
-
### Distribution
|
|
191
|
-
|
|
192
|
-
- Multi-platform support (macOS, Linux, Windows)
|
|
193
|
-
- Multi-architecture binaries (x64, arm64)
|
|
194
|
-
- Distributed via NPM with automatic binary download on install
|
package/Makefile
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
.PHONY: help dev-tools run build build-all clean test install sync-api-spec
|
|
2
|
-
|
|
3
|
-
VERSION := $(shell grep '"version"' package.json | sed 's/.*"version": "\([^"]*\)".*/\1/')
|
|
4
|
-
LDFLAGS := -ldflags="-X 'github.com/rogeriopvl/fizzy/cmd.Version=$(VERSION)'"
|
|
5
|
-
|
|
6
|
-
help:
|
|
7
|
-
@echo 'Usage: make [target]'
|
|
8
|
-
@echo ''
|
|
9
|
-
@echo 'Available targets:'
|
|
10
|
-
@grep -E '^[a-zA-Z_-]+:' Makefile | sed 's/:.*//g' | sed 's/^/ /'
|
|
11
|
-
|
|
12
|
-
dev-tools:
|
|
13
|
-
@echo "Installing development tools..."
|
|
14
|
-
go install gotest.tools/gotestsum@latest
|
|
15
|
-
|
|
16
|
-
run:
|
|
17
|
-
go run .
|
|
18
|
-
|
|
19
|
-
install:
|
|
20
|
-
go install $(LDFLAGS) .
|
|
21
|
-
|
|
22
|
-
build:
|
|
23
|
-
go build $(LDFLAGS) -o bin/fizzy .
|
|
24
|
-
|
|
25
|
-
build-all: clean
|
|
26
|
-
mkdir -p bin
|
|
27
|
-
GOOS=darwin GOARCH=amd64 go build $(LDFLAGS) -o bin/fizzy-darwin-amd64 .
|
|
28
|
-
GOOS=darwin GOARCH=arm64 go build $(LDFLAGS) -o bin/fizzy-darwin-arm64 .
|
|
29
|
-
GOOS=linux GOARCH=amd64 go build $(LDFLAGS) -o bin/fizzy-linux-amd64 .
|
|
30
|
-
GOOS=linux GOARCH=arm64 go build $(LDFLAGS) -o bin/fizzy-linux-arm64 .
|
|
31
|
-
GOOS=windows GOARCH=amd64 go build $(LDFLAGS) -o bin/fizzy-windows-amd64.exe .
|
|
32
|
-
@echo "Binaries built successfully in bin/"
|
|
33
|
-
|
|
34
|
-
clean:
|
|
35
|
-
rm -rf bin/
|
|
36
|
-
|
|
37
|
-
test:
|
|
38
|
-
gotestsum -- -v ./...
|
|
39
|
-
|
|
40
|
-
sync-api-spec:
|
|
41
|
-
@mkdir -p docs
|
|
42
|
-
@curl -s https://raw.githubusercontent.com/basecamp/fizzy/main/docs/API.md -o docs/API.md
|
|
43
|
-
@echo "API spec synced to docs/API.md"
|
package/bin/fizzy
DELETED
|
Binary file
|
package/cmd/account.go
DELETED
package/cmd/account_list.go
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
package cmd
|
|
2
|
-
|
|
3
|
-
import (
|
|
4
|
-
"context"
|
|
5
|
-
"fmt"
|
|
6
|
-
|
|
7
|
-
"github.com/rogeriopvl/fizzy/internal/app"
|
|
8
|
-
"github.com/rogeriopvl/fizzy/internal/ui"
|
|
9
|
-
"github.com/spf13/cobra"
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
var accountListCmd = &cobra.Command{
|
|
13
|
-
Use: "list",
|
|
14
|
-
Short: "List all accounts",
|
|
15
|
-
Long: `Retrieve and display all accounts from Fizzy`,
|
|
16
|
-
Run: func(cmd *cobra.Command, args []string) {
|
|
17
|
-
if err := handleListAccounts(cmd); err != nil {
|
|
18
|
-
fmt.Fprintf(cmd.OutOrStderr(), "Error: %v\n", err)
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
func handleListAccounts(cmd *cobra.Command) error {
|
|
24
|
-
a := app.FromContext(cmd.Context())
|
|
25
|
-
if a == nil || a.Client == nil {
|
|
26
|
-
return fmt.Errorf("API client not available")
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
identity, err := a.Client.GetMyIdentity(context.Background())
|
|
30
|
-
if err != nil {
|
|
31
|
-
return fmt.Errorf("fetching accounts: %w", err)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if len(identity.Accounts) == 0 {
|
|
35
|
-
fmt.Println("No accounts found")
|
|
36
|
-
return nil
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return ui.DisplayAccounts(identity.Accounts)
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
func init() {
|
|
43
|
-
accountCmd.AddCommand(accountListCmd)
|
|
44
|
-
}
|