@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 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
+ <!-- ![hog board demo](./docs/demo.gif) -->
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