@ondrej-svec/hog 1.1.1
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/LICENSE +21 -0
- package/README.md +191 -0
- package/dist/cli.js +4988 -0
- package/dist/cli.js.map +1 -0
- package/dist/fetch-worker.js +469 -0
- package/dist/fetch-worker.js.map +1 -0
- package/package.json +69 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ondrej Svec
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# hog
|
|
2
|
+
|
|
3
|
+
Your personal command deck — a unified task dashboard for GitHub Projects and TickTick, right in your terminal.
|
|
4
|
+
|
|
5
|
+
<!-- TODO: Add terminal recording -->
|
|
6
|
+
<!--  -->
|
|
7
|
+
|
|
8
|
+
## Quick Start
|
|
9
|
+
|
|
10
|
+
```sh
|
|
11
|
+
npm install -g @ondrej-svec/hog
|
|
12
|
+
hog init # interactive setup wizard
|
|
13
|
+
hog board --live
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Requires **Node.js 22+** and the [GitHub CLI](https://cli.github.com/) (`gh auth login`).
|
|
17
|
+
|
|
18
|
+
## Features
|
|
19
|
+
|
|
20
|
+
**Unified Dashboard** — See GitHub issues from multiple repos and TickTick tasks in one view. Filter by repo, assignee, or backlog status.
|
|
21
|
+
|
|
22
|
+
**Interactive TUI** — Vim-style navigation (`j`/`k`), section collapsing, search (`/`), multi-select with bulk actions, and a detail panel on wide terminals.
|
|
23
|
+
|
|
24
|
+
**Issue Actions** — Pick up issues (`p`), assign/unassign (`a`/`u`), change status (`m`), comment (`c`), create issues (`n`) — all without leaving the terminal.
|
|
25
|
+
|
|
26
|
+
**Focus Mode** — Built-in Pomodoro timer (`f`). Lock onto an issue and focus for 25 minutes (configurable).
|
|
27
|
+
|
|
28
|
+
**Auto-Refresh** — Background refresh with age indicators (green/yellow/red) and failure tracking. Manual refresh with `r`.
|
|
29
|
+
|
|
30
|
+
**Toast Notifications** — Every async operation shows clear feedback. Errors persist with retry hints.
|
|
31
|
+
|
|
32
|
+
**Board Profiles** — Multiple board configurations for different contexts (work, personal, etc.).
|
|
33
|
+
|
|
34
|
+
**TickTick Optional** — Works with just GitHub. Enable TickTick integration when you want it.
|
|
35
|
+
|
|
36
|
+
**Agent-Friendly** — Every command supports `--json` for structured output, making hog scriptable and LLM-friendly.
|
|
37
|
+
|
|
38
|
+
## Keyboard Shortcuts
|
|
39
|
+
|
|
40
|
+
| Key | Action |
|
|
41
|
+
|-----|--------|
|
|
42
|
+
| `j` / `k` | Navigate down / up |
|
|
43
|
+
| `Tab` / `Shift+Tab` | Next / previous section |
|
|
44
|
+
| `Enter` | Open in browser (item) or toggle (section) |
|
|
45
|
+
| `Space` | Toggle section or multi-select |
|
|
46
|
+
| `/` | Search |
|
|
47
|
+
| `p` | Pick issue (assign + sync to TickTick) |
|
|
48
|
+
| `a` / `u` | Assign / unassign |
|
|
49
|
+
| `m` | Change status |
|
|
50
|
+
| `c` | Comment |
|
|
51
|
+
| `n` | Create issue |
|
|
52
|
+
| `f` | Focus mode (Pomodoro) |
|
|
53
|
+
| `r` | Refresh |
|
|
54
|
+
| `?` | Help |
|
|
55
|
+
| `q` | Quit |
|
|
56
|
+
|
|
57
|
+
## Commands
|
|
58
|
+
|
|
59
|
+
### `hog board`
|
|
60
|
+
|
|
61
|
+
Open the unified task dashboard.
|
|
62
|
+
|
|
63
|
+
```sh
|
|
64
|
+
hog board --live # interactive TUI with auto-refresh
|
|
65
|
+
hog board --json # full board data as JSON
|
|
66
|
+
hog board --mine --json # only my assigned issues + tasks
|
|
67
|
+
hog board --backlog --json # only unassigned issues
|
|
68
|
+
hog board --repo myrepo --json # filter by repo
|
|
69
|
+
hog board --profile work --live # use a named profile
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `hog pick`
|
|
73
|
+
|
|
74
|
+
Assign a GitHub issue to yourself and create a linked TickTick task.
|
|
75
|
+
|
|
76
|
+
```sh
|
|
77
|
+
hog pick myrepo/145
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### `hog task`
|
|
81
|
+
|
|
82
|
+
Manage TickTick tasks directly.
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
hog task list # list tasks
|
|
86
|
+
hog task add "Ship the feature" # create task
|
|
87
|
+
hog task add "Bug fix" -p high -t "urgent"
|
|
88
|
+
hog task complete <taskId>
|
|
89
|
+
hog task update <taskId> --title "New title" -p medium
|
|
90
|
+
hog task delete <taskId>
|
|
91
|
+
hog task projects # list TickTick projects
|
|
92
|
+
hog task use-project <projectId> # set default project
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `hog config`
|
|
96
|
+
|
|
97
|
+
View and manage configuration.
|
|
98
|
+
|
|
99
|
+
```sh
|
|
100
|
+
hog config show # show full config
|
|
101
|
+
hog config repos # list tracked repos
|
|
102
|
+
hog config repos:add owner/repo --project-number 1 --status-field-id PVTSSF_xxx --completion-type closeIssue
|
|
103
|
+
hog config repos:rm reponame
|
|
104
|
+
|
|
105
|
+
hog config ticktick:enable # enable TickTick integration
|
|
106
|
+
hog config ticktick:disable # disable TickTick integration
|
|
107
|
+
|
|
108
|
+
hog config profile:create work # create profile from current config
|
|
109
|
+
hog config profile:delete work
|
|
110
|
+
hog config profile:default work # set default profile
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### `hog init`
|
|
114
|
+
|
|
115
|
+
Interactive setup wizard. Detects your GitHub user, lets you pick repos, and configures everything.
|
|
116
|
+
|
|
117
|
+
```sh
|
|
118
|
+
hog init # interactive setup
|
|
119
|
+
hog init --force # overwrite existing config
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### `hog sync`
|
|
123
|
+
|
|
124
|
+
Sync GitHub issues with TickTick tasks.
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
hog sync run # run sync
|
|
128
|
+
hog sync run --dry-run # preview changes
|
|
129
|
+
hog sync status # show sync mappings
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Configuration
|
|
133
|
+
|
|
134
|
+
Config lives at `~/.config/hog/config.json`. Created by `hog init` or manually.
|
|
135
|
+
|
|
136
|
+
```jsonc
|
|
137
|
+
{
|
|
138
|
+
"version": 3,
|
|
139
|
+
"repos": [
|
|
140
|
+
{
|
|
141
|
+
"name": "owner/repo",
|
|
142
|
+
"shortName": "repo",
|
|
143
|
+
"projectNumber": 1,
|
|
144
|
+
"statusFieldId": "PVTSSF_xxx",
|
|
145
|
+
"completionAction": { "type": "closeIssue" },
|
|
146
|
+
"statusGroups": ["In Progress", "Todo,Backlog"] // optional
|
|
147
|
+
}
|
|
148
|
+
],
|
|
149
|
+
"board": {
|
|
150
|
+
"refreshInterval": 60, // seconds (min: 10)
|
|
151
|
+
"backlogLimit": 20,
|
|
152
|
+
"assignee": "your-github-username",
|
|
153
|
+
"focusDuration": 1500 // seconds (25 min)
|
|
154
|
+
},
|
|
155
|
+
"ticktick": {
|
|
156
|
+
"enabled": true // set false to use without TickTick
|
|
157
|
+
},
|
|
158
|
+
"profiles": {}, // named board profiles
|
|
159
|
+
"defaultProfile": "" // profile to use by default
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
### Status Groups
|
|
164
|
+
|
|
165
|
+
By default, hog auto-detects status columns from your GitHub Project. Override per-repo with `statusGroups`:
|
|
166
|
+
|
|
167
|
+
```json
|
|
168
|
+
"statusGroups": ["In Progress", "In Review", "Todo,Backlog"]
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Each entry is a section. Comma-separated values merge into one section (header = first value). Terminal statuses (Done, Shipped, Closed, etc.) are always hidden.
|
|
172
|
+
|
|
173
|
+
### Profiles
|
|
174
|
+
|
|
175
|
+
Create different board configs for different contexts:
|
|
176
|
+
|
|
177
|
+
```sh
|
|
178
|
+
hog config profile:create work
|
|
179
|
+
hog config profile:default work
|
|
180
|
+
hog board --profile personal --live
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Requirements
|
|
184
|
+
|
|
185
|
+
- **Node.js 22+**
|
|
186
|
+
- **GitHub CLI** (`gh`) — authenticated via `gh auth login`
|
|
187
|
+
- **TickTick account** — optional, for task sync
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT
|