devdaily-ai 0.5.0 → 0.6.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/CHANGELOG.md +203 -0
- package/CONTRIBUTING.md +264 -0
- package/LICENSE +1 -1
- package/README.md +279 -608
- package/dist/index.js +143 -142
- package/dist/index.js.map +1 -1
- package/package.json +10 -5
- package/README.md.bak +0 -595
package/README.md
CHANGED
|
@@ -2,17 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
# DevDaily AI
|
|
4
4
|
|
|
5
|
-
**Your AI-powered developer memory
|
|
5
|
+
**Your AI-powered developer memory.**
|
|
6
6
|
|
|
7
|
-
Auto-generate standup notes, PR descriptions, weekly summaries
|
|
7
|
+
Auto-generate standup notes, PR descriptions, and weekly summaries from your git history.
|
|
8
8
|
|
|
9
|
-
[](https://www.npmjs.com/package/devdaily-ai)
|
|
10
|
+
[](https://github.com/hempun10/devdaily/actions/workflows/ci.yml)
|
|
10
11
|
[](https://nodejs.org)
|
|
11
|
-
[](LICENSE)
|
|
13
|
-
[](https://github.com/hempun10/devdaily)
|
|
12
|
+
[](LICENSE)
|
|
14
13
|
|
|
15
|
-
[Installation](#installation) · [Quick Start](#quick-start) · [Commands](#commands) · [Configuration](#configuration) · [Contributing](
|
|
14
|
+
[Installation](#installation) · [Quick Start](#quick-start) · [Commands](#commands) · [Configuration](#configuration) · [Contributing](CONTRIBUTING.md)
|
|
16
15
|
|
|
17
16
|
</div>
|
|
18
17
|
|
|
@@ -20,22 +19,15 @@ Auto-generate standup notes, PR descriptions, weekly summaries — and never los
|
|
|
20
19
|
|
|
21
20
|
## Why DevDaily?
|
|
22
21
|
|
|
23
|
-
Developers lose hours every week to
|
|
22
|
+
Developers lose hours every week writing standup notes, crafting PR descriptions, compiling weekly reports, and trying to remember what they were doing before a context switch.
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
- 📝 Crafting PR descriptions from scratch
|
|
27
|
-
- 📊 Compiling weekly accomplishments for managers
|
|
28
|
-
- 🧠 Trying to remember what you were doing before a context switch
|
|
24
|
+
DevDaily analyzes your git history, tracks your work automatically, and uses GitHub Copilot CLI to generate professional summaries — in seconds.
|
|
29
25
|
|
|
30
|
-
**DevDaily
|
|
26
|
+
**Key differentiator:** DevDaily builds a **persistent local memory** of your work. Every standup you run, every PR you generate, every branch you switch — DevDaily silently records a snapshot. That means:
|
|
31
27
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
Most dev tools generate text from commits. DevDaily goes further: it builds a **persistent local memory** of your work. Every standup you run, every PR you generate, every branch you switch — DevDaily silently records a snapshot. That means:
|
|
35
|
-
|
|
36
|
-
- `devdaily context` can tell you exactly where you left off, even days later
|
|
28
|
+
- `devdaily context` tells you exactly where you left off, even days later
|
|
37
29
|
- `devdaily recall auth` finds every time you touched authentication code
|
|
38
|
-
- `devdaily week` produces accurate summaries
|
|
30
|
+
- `devdaily week` produces accurate summaries from your local journal
|
|
39
31
|
- Cross-project summaries work across all your repositories
|
|
40
32
|
|
|
41
33
|
No cloud. No telemetry. Everything stays in `~/.config/devdaily/journal/`.
|
|
@@ -44,24 +36,18 @@ No cloud. No telemetry. Everything stays in `~/.config/devdaily/journal/`.
|
|
|
44
36
|
|
|
45
37
|
## Features
|
|
46
38
|
|
|
47
|
-
| Feature
|
|
48
|
-
|
|
|
49
|
-
|
|
|
50
|
-
|
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
| **🖥️ Interactive Dashboard** | Beautiful TUI with keyboard navigation and real-time stats |
|
|
60
|
-
| **🩺 Doctor Command** | Diagnose and auto-fix setup issues |
|
|
61
|
-
| **🔔 Notifications** | Send standups to Slack or Discord via webhooks |
|
|
62
|
-
| **🔀 Interactive PR Workflow** | Preview, edit, select labels/reviewers/assignees, then create PRs |
|
|
63
|
-
| **📋 Auto-Copy** | All outputs copied to clipboard automatically |
|
|
64
|
-
| **🎨 Professional Output** | Clean terminal UI with theming, ASCII art, and multi-format export |
|
|
39
|
+
| Feature | Description |
|
|
40
|
+
| --------------------- | ------------------------------------------------------------------ |
|
|
41
|
+
| **Standup Generator** | Generate daily standup notes from commits, PRs, and tickets |
|
|
42
|
+
| **PR Descriptions** | Auto-generate titles and bodies with template + commitlint support |
|
|
43
|
+
| **Weekly Summaries** | Compile weekly accomplishments with stats and AI analysis |
|
|
44
|
+
| **Context Recovery** | Recover where you left off after a context switch |
|
|
45
|
+
| **Work Search** | Search your work history by keyword, file, tag, or date |
|
|
46
|
+
| **Auto-Snapshots** | Silent work tracking as a side-effect of commands you already run |
|
|
47
|
+
| **Git Hooks** | Opt-in `post-commit` and `post-checkout` hooks for extra coverage |
|
|
48
|
+
| **PM Integration** | GitHub Issues, Jira, and Linear ticket linking |
|
|
49
|
+
| **Notifications** | Send standups to Slack or Discord via webhooks |
|
|
50
|
+
| **Output Formats** | Markdown, Slack, plain text, and JSON output |
|
|
65
51
|
|
|
66
52
|
---
|
|
67
53
|
|
|
@@ -69,442 +55,231 @@ No cloud. No telemetry. Everything stays in `~/.config/devdaily/journal/`.
|
|
|
69
55
|
|
|
70
56
|
### Prerequisites
|
|
71
57
|
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
58
|
+
- [Node.js](https://nodejs.org) >= 18.0.0
|
|
59
|
+
- [Git](https://git-scm.com)
|
|
60
|
+
- [GitHub CLI](https://cli.github.com) (`gh`)
|
|
61
|
+
- [GitHub Copilot CLI extension](https://github.com/github/gh-copilot) (`gh extension install github/gh-copilot`)
|
|
75
62
|
|
|
76
|
-
###
|
|
63
|
+
### Install
|
|
77
64
|
|
|
78
65
|
```bash
|
|
79
|
-
# Install DevDaily
|
|
80
66
|
npm install -g devdaily-ai
|
|
81
|
-
|
|
82
|
-
# Check prerequisites and auto-fix issues
|
|
83
|
-
devdaily doctor --fix
|
|
84
|
-
|
|
85
|
-
# Interactive setup — aliases, completions, PM integration, git hooks
|
|
86
|
-
devdaily init
|
|
87
67
|
```
|
|
88
68
|
|
|
89
|
-
|
|
69
|
+
### Verify
|
|
90
70
|
|
|
91
71
|
```bash
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
dd week # Weekly summary
|
|
95
|
-
dd context # Resume where you left off
|
|
72
|
+
devdaily --version
|
|
73
|
+
devdaily doctor # Check all prerequisites
|
|
96
74
|
```
|
|
97
75
|
|
|
98
76
|
### GitHub Copilot CLI Setup
|
|
99
77
|
|
|
100
|
-
DevDaily uses GitHub Copilot CLI for AI-powered text generation.
|
|
78
|
+
DevDaily uses GitHub Copilot CLI for AI-powered text generation. Set it up once:
|
|
101
79
|
|
|
102
80
|
```bash
|
|
103
|
-
# Install GitHub CLI
|
|
104
|
-
brew install gh # macOS
|
|
105
|
-
# winget install GitHub.cli # Windows
|
|
106
|
-
# sudo apt install gh # Debian/Ubuntu
|
|
107
|
-
|
|
108
|
-
# Authenticate
|
|
109
81
|
gh auth login
|
|
110
|
-
|
|
111
|
-
# Install Copilot extension
|
|
112
82
|
gh extension install github/gh-copilot
|
|
83
|
+
gh copilot --version # Verify it works
|
|
113
84
|
```
|
|
114
85
|
|
|
115
|
-
Run `devdaily doctor` at any time to verify your setup.
|
|
116
|
-
|
|
117
86
|
---
|
|
118
87
|
|
|
119
88
|
## Quick Start
|
|
120
89
|
|
|
121
90
|
```bash
|
|
122
|
-
#
|
|
123
|
-
|
|
91
|
+
# Set up aliases and shell completions
|
|
92
|
+
devdaily init
|
|
124
93
|
|
|
125
94
|
# Generate today's standup
|
|
126
95
|
devdaily standup
|
|
127
96
|
|
|
128
|
-
# Generate a PR description
|
|
97
|
+
# Generate a PR description
|
|
129
98
|
devdaily pr
|
|
130
99
|
|
|
131
|
-
#
|
|
100
|
+
# See your weekly summary
|
|
132
101
|
devdaily week
|
|
133
102
|
|
|
134
103
|
# Recover context after a break
|
|
135
104
|
devdaily context
|
|
136
105
|
|
|
137
106
|
# Search your work history
|
|
138
|
-
devdaily recall "
|
|
107
|
+
devdaily recall "auth refactor"
|
|
108
|
+
```
|
|
139
109
|
|
|
140
|
-
|
|
141
|
-
|
|
110
|
+
With the `dd` alias (installed via `devdaily init`):
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
dd s # standup
|
|
114
|
+
dd pr # PR description
|
|
115
|
+
dd w # weekly summary
|
|
116
|
+
dd ctx # context recovery
|
|
142
117
|
```
|
|
143
118
|
|
|
144
119
|
---
|
|
145
120
|
|
|
146
121
|
## Commands
|
|
147
122
|
|
|
148
|
-
### Core
|
|
123
|
+
### Core
|
|
149
124
|
|
|
150
|
-
| Command
|
|
151
|
-
|
|
|
152
|
-
| `
|
|
153
|
-
| `
|
|
154
|
-
| `
|
|
155
|
-
| `
|
|
156
|
-
| `
|
|
157
|
-
| `
|
|
125
|
+
| Command | Aliases | Description |
|
|
126
|
+
| ---------- | ------------------ | ------------------------------------------- |
|
|
127
|
+
| `standup` | `s`, `su`, `daily` | Generate standup notes from recent commits |
|
|
128
|
+
| `pr` | `p`, `pull` | Generate PR description from current branch |
|
|
129
|
+
| `week` | `w`, `weekly` | Generate weekly work summary |
|
|
130
|
+
| `context` | `ctx`, `resume` | Recover what you were working on |
|
|
131
|
+
| `recall` | `search`, `find` | Search your work history |
|
|
132
|
+
| `snapshot` | `snap`, `save` | Manually capture a work snapshot |
|
|
158
133
|
|
|
159
134
|
### Setup & Utility
|
|
160
135
|
|
|
161
|
-
| Command
|
|
162
|
-
|
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
168
|
-
|
|
169
|
-
---
|
|
136
|
+
| Command | Aliases | Description |
|
|
137
|
+
| --------- | ---------------- | ------------------------------------------------- |
|
|
138
|
+
| `init` | — | Set up aliases, completions, hooks, notifications |
|
|
139
|
+
| `config` | `cfg` | View and edit configuration |
|
|
140
|
+
| `doctor` | `check`, `setup` | Check system requirements |
|
|
141
|
+
| `connect` | `pm`, `link` | Configure project management integration |
|
|
142
|
+
| `dash` | `d`, `dashboard` | Open interactive dashboard |
|
|
170
143
|
|
|
171
144
|
### `devdaily standup`
|
|
172
145
|
|
|
173
|
-
Generate daily standup notes from your recent commits, PRs, and tickets.
|
|
174
|
-
|
|
175
146
|
```bash
|
|
176
|
-
devdaily standup
|
|
177
|
-
devdaily standup --days
|
|
178
|
-
devdaily standup --format
|
|
179
|
-
devdaily standup --
|
|
180
|
-
devdaily standup --
|
|
181
|
-
devdaily standup --
|
|
182
|
-
devdaily standup --
|
|
147
|
+
devdaily standup # Yesterday's work
|
|
148
|
+
devdaily standup --days 3 # Last 3 days
|
|
149
|
+
devdaily standup --format plain # Plain text (no markdown)
|
|
150
|
+
devdaily standup --format slack # Slack-ready format
|
|
151
|
+
devdaily standup --format json # Structured JSON
|
|
152
|
+
devdaily standup --ticket PROJ-123 # Include specific ticket context
|
|
153
|
+
devdaily standup --tone business # Business-friendly tone
|
|
154
|
+
devdaily standup --send # Send to Slack + Discord
|
|
155
|
+
devdaily standup --slack # Send to Slack only
|
|
156
|
+
devdaily standup --test-webhook # Test webhook configuration
|
|
157
|
+
devdaily standup --context # Show detailed work analysis
|
|
158
|
+
devdaily standup --raw-context # Output raw context (no AI)
|
|
159
|
+
devdaily standup --no-copy # Don't copy to clipboard
|
|
160
|
+
devdaily standup --debug # Show full prompt and response
|
|
183
161
|
```
|
|
184
162
|
|
|
185
|
-
| Option | Description |
|
|
186
|
-
| ---------------------- | --------------------------------------------------- |
|
|
187
|
-
| `-d, --days <n>` | Number of days to look back (default: 1) |
|
|
188
|
-
| `-f, --format <type>` | Output format: `markdown`, `slack`, `plain`, `json` |
|
|
189
|
-
| `-a, --author <email>` | Filter by author email |
|
|
190
|
-
| `-t, --ticket <id...>` | Include specific ticket IDs for context |
|
|
191
|
-
| `--tone <type>` | Output tone: `engineering`, `mixed`, `business` |
|
|
192
|
-
| `--context` | Show detailed work context analysis |
|
|
193
|
-
| `--raw-context` | Output raw context block (no AI generation) |
|
|
194
|
-
| `--preview` | Show context and confirm before generating |
|
|
195
|
-
| `--send` | Send to all configured notification channels |
|
|
196
|
-
| `--slack` | Send to Slack |
|
|
197
|
-
| `--discord` | Send to Discord |
|
|
198
|
-
| `--no-tickets` | Skip fetching ticket context |
|
|
199
|
-
| `--no-prs` | Skip fetching PR context |
|
|
200
|
-
| `--no-copy` | Don't copy to clipboard |
|
|
201
|
-
| `--no-journal` | Skip auto-saving a snapshot |
|
|
202
|
-
| `--debug` | Show full prompt and context |
|
|
203
|
-
|
|
204
|
-
---
|
|
205
|
-
|
|
206
163
|
### `devdaily pr`
|
|
207
164
|
|
|
208
|
-
Generate comprehensive PR descriptions with smart title generation, template support, and interactive workflows.
|
|
209
|
-
|
|
210
165
|
```bash
|
|
211
|
-
devdaily pr
|
|
212
|
-
devdaily pr --create
|
|
213
|
-
devdaily pr --draft
|
|
214
|
-
devdaily pr --base
|
|
215
|
-
devdaily pr --
|
|
216
|
-
devdaily pr --
|
|
217
|
-
devdaily pr --
|
|
166
|
+
devdaily pr # Generate + interactive menu
|
|
167
|
+
devdaily pr --create # Create PR on GitHub
|
|
168
|
+
devdaily pr --draft # Create as draft PR
|
|
169
|
+
devdaily pr --base develop # Compare against develop
|
|
170
|
+
devdaily pr --ticket PROJ-456 # Include ticket context
|
|
171
|
+
devdaily pr --interactive # Select labels, reviewers, assignees
|
|
172
|
+
devdaily pr --debug # Show AI prompt
|
|
218
173
|
```
|
|
219
174
|
|
|
220
|
-
| Option | Description |
|
|
221
|
-
| --------------------- | ------------------------------------------------- |
|
|
222
|
-
| `-b, --base <branch>` | Base branch to compare against |
|
|
223
|
-
| `-c, --create` | Create PR on GitHub |
|
|
224
|
-
| `-d, --draft` | Create as draft PR |
|
|
225
|
-
| `-t, --ticket <id>` | Include specific ticket/issue for context |
|
|
226
|
-
| `-i, --interactive` | Interactive mode for labels, reviewers, assignees |
|
|
227
|
-
| `-p, --preview` | Show preview before creating |
|
|
228
|
-
| `--no-tickets` | Skip fetching ticket context |
|
|
229
|
-
| `--no-template` | Ignore PR template |
|
|
230
|
-
| `--no-diff` | Skip diff context in AI prompt |
|
|
231
|
-
| `--no-prompt-file` | Ignore `.devdaily-pr-prompt.md` |
|
|
232
|
-
| `--no-copy` | Don't copy to clipboard |
|
|
233
|
-
| `--no-journal` | Skip auto-saving a snapshot |
|
|
234
|
-
| `--debug` | Show prompts and raw AI input |
|
|
235
|
-
|
|
236
|
-
**Smart features:**
|
|
237
|
-
|
|
238
|
-
- Auto-detects `.github/PULL_REQUEST_TEMPLATE.md` and fills sections
|
|
239
|
-
- Generates conventional commit titles (`feat:`, `fix:`, etc.)
|
|
240
|
-
- Extracts ticket/issue numbers from branch names and commits
|
|
241
|
-
- Supports custom prompt files (`.devdaily-pr-prompt.md`) for team conventions
|
|
242
|
-
|
|
243
|
-
---
|
|
244
|
-
|
|
245
175
|
### `devdaily week`
|
|
246
176
|
|
|
247
|
-
Generate weekly summaries with cross-project support and journal enrichment.
|
|
248
|
-
|
|
249
177
|
```bash
|
|
250
|
-
devdaily week
|
|
251
|
-
devdaily week --last
|
|
252
|
-
devdaily week --
|
|
253
|
-
devdaily week --
|
|
254
|
-
devdaily week --all-projects
|
|
255
|
-
devdaily week --
|
|
256
|
-
devdaily week --
|
|
178
|
+
devdaily week # Current week
|
|
179
|
+
devdaily week --last # Last week
|
|
180
|
+
devdaily week --weeks-ago 2 # Two weeks ago
|
|
181
|
+
devdaily week --from 2025-01-01 --to 2025-01-07
|
|
182
|
+
devdaily week --all-projects # Cross-project summary
|
|
183
|
+
devdaily week --save # Save summary to journal
|
|
184
|
+
devdaily week --json # Machine-readable stats
|
|
257
185
|
```
|
|
258
186
|
|
|
259
|
-
| Option | Description |
|
|
260
|
-
| --------------------- | --------------------------------------- |
|
|
261
|
-
| `-l, --last` | Show last week |
|
|
262
|
-
| `-s, --start <date>` | Custom start date (YYYY-MM-DD) |
|
|
263
|
-
| `--from <date>` | Start date for custom range |
|
|
264
|
-
| `--to <date>` | End date for custom range |
|
|
265
|
-
| `-w, --weeks-ago <n>` | Number of weeks back |
|
|
266
|
-
| `--all-projects` | Cross-project summary from journal data |
|
|
267
|
-
| `-p, --project <id>` | Filter by project identifier |
|
|
268
|
-
| `--save` | Save generated summary to journal |
|
|
269
|
-
| `--json` | Output stats as JSON (no AI) |
|
|
270
|
-
| `--raw-context` | Output raw context (no AI) |
|
|
271
|
-
| `--no-tickets` | Skip ticket fetching |
|
|
272
|
-
| `--no-prs` | Skip PR fetching |
|
|
273
|
-
| `--no-journal` | Skip journal data enrichment |
|
|
274
|
-
| `--no-auto-snapshot` | Skip auto-saving a snapshot |
|
|
275
|
-
| `--no-copy` | Don't copy to clipboard |
|
|
276
|
-
| `--debug` | Show full prompt |
|
|
277
|
-
|
|
278
|
-
---
|
|
279
|
-
|
|
280
187
|
### `devdaily context`
|
|
281
188
|
|
|
282
|
-
Recover what you were working on — fight context-switching amnesia.
|
|
283
|
-
|
|
284
189
|
```bash
|
|
285
|
-
devdaily context
|
|
286
|
-
devdaily context --
|
|
287
|
-
devdaily context --
|
|
288
|
-
devdaily context --
|
|
289
|
-
devdaily context --
|
|
290
|
-
devdaily context --branches # Detailed active branch status
|
|
190
|
+
devdaily context # Where did I leave off?
|
|
191
|
+
devdaily context --ai # AI-powered summary
|
|
192
|
+
devdaily context --days 14 # Look back further
|
|
193
|
+
devdaily context --all-projects # All projects
|
|
194
|
+
devdaily context --branches # Show active branch details
|
|
291
195
|
```
|
|
292
196
|
|
|
293
|
-
| Option | Description |
|
|
294
|
-
| -------------------- | ---------------------------------------- |
|
|
295
|
-
| `-d, --days <n>` | Number of days to look back (default: 7) |
|
|
296
|
-
| `-p, --project <id>` | Filter by project |
|
|
297
|
-
| `--all-projects` | Show context across all tracked projects |
|
|
298
|
-
| `--date <date>` | Show context for a specific date |
|
|
299
|
-
| `--from <date>` | Start date for range |
|
|
300
|
-
| `--to <date>` | End date for range |
|
|
301
|
-
| `--ai` | Generate an AI-powered summary |
|
|
302
|
-
| `--branches` | Show detailed active branch status |
|
|
303
|
-
| `--raw` | Output raw context data |
|
|
304
|
-
| `--no-copy` | Don't copy to clipboard |
|
|
305
|
-
| `--debug` | Show debug output |
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
197
|
### `devdaily recall`
|
|
310
198
|
|
|
311
|
-
Search your work history — "when did I last work on X?"
|
|
312
|
-
|
|
313
199
|
```bash
|
|
314
|
-
devdaily recall "
|
|
315
|
-
devdaily recall --file src/auth.ts
|
|
316
|
-
devdaily recall --tag feature
|
|
317
|
-
devdaily recall
|
|
318
|
-
devdaily recall --
|
|
319
|
-
devdaily recall "PROJ-123" # Search by ticket ID
|
|
200
|
+
devdaily recall "auth" # Search for "auth" in history
|
|
201
|
+
devdaily recall --file src/auth.ts # When was this file changed?
|
|
202
|
+
devdaily recall --tag feature # Find snapshots tagged "feature"
|
|
203
|
+
devdaily recall --from 2025-01-01 # Search within date range
|
|
204
|
+
devdaily recall --ai # AI summary of results
|
|
320
205
|
```
|
|
321
206
|
|
|
322
|
-
| Option | Description |
|
|
323
|
-
| --------------------- | -------------------------------- |
|
|
324
|
-
| `-p, --project <id>` | Filter by project |
|
|
325
|
-
| `--from <date>` | Start date (YYYY-MM-DD) |
|
|
326
|
-
| `--to <date>` | End date (YYYY-MM-DD) |
|
|
327
|
-
| `-d, --days <n>` | Search last N days (default: 90) |
|
|
328
|
-
| `-t, --tag <tags...>` | Filter by tags |
|
|
329
|
-
| `-f, --file <path>` | Search for a specific file path |
|
|
330
|
-
| `-l, --limit <n>` | Max results (default: 10) |
|
|
331
|
-
| `--ai` | AI-powered summary of results |
|
|
332
|
-
| `--json` | Output as JSON |
|
|
333
|
-
| `--no-copy` | Don't copy to clipboard |
|
|
334
|
-
| `--debug` | Show debug output |
|
|
335
|
-
|
|
336
|
-
---
|
|
337
|
-
|
|
338
207
|
### `devdaily snapshot`
|
|
339
208
|
|
|
340
|
-
Manually capture a snapshot of your current work state.
|
|
341
|
-
|
|
342
|
-
> **Note:** You rarely need to run this manually. Snapshots are taken automatically when you run `standup`, `pr`, or `week`, and optionally on every commit/checkout via git hooks. Use this command when you want to attach a note, tag, or force a snapshot at a specific moment.
|
|
343
|
-
|
|
344
209
|
```bash
|
|
345
|
-
devdaily snapshot
|
|
346
|
-
devdaily snapshot --light
|
|
347
|
-
devdaily snapshot --note "
|
|
348
|
-
devdaily snapshot --tag
|
|
349
|
-
devdaily snapshot --list
|
|
350
|
-
devdaily snapshot --
|
|
351
|
-
devdaily snapshot --
|
|
352
|
-
devdaily snapshot --prune 90 # Remove entries older than 90 days
|
|
210
|
+
devdaily snapshot # Capture a full snapshot
|
|
211
|
+
devdaily snapshot --light # Quick capture (no PR/ticket fetch)
|
|
212
|
+
devdaily snapshot --note "before refactor"
|
|
213
|
+
devdaily snapshot --tag release # Tag the snapshot
|
|
214
|
+
devdaily snapshot --list # Browse recent snapshots
|
|
215
|
+
devdaily snapshot --stats # Journal storage stats
|
|
216
|
+
devdaily snapshot --prune 90 # Remove entries older than 90 days
|
|
353
217
|
```
|
|
354
218
|
|
|
355
|
-
| Option | Description |
|
|
356
|
-
| --------------------- | ----------------------------------------- |
|
|
357
|
-
| `-d, --date <date>` | Snapshot date (YYYY-MM-DD) |
|
|
358
|
-
| `-p, --project <id>` | Override project identifier |
|
|
359
|
-
| `-n, --note <text>` | Attach a note |
|
|
360
|
-
| `-t, --tag <tags...>` | Add custom tags |
|
|
361
|
-
| `--light` | Quick mode — commits and branch info only |
|
|
362
|
-
| `--list [days]` | List recent snapshots |
|
|
363
|
-
| `--stats` | Show journal storage stats |
|
|
364
|
-
| `--prune <days>` | Remove entries older than N days |
|
|
365
|
-
| `--no-prs` | Skip PR data |
|
|
366
|
-
| `--no-tickets` | Skip ticket data |
|
|
367
|
-
| `--no-branches` | Skip branch listing |
|
|
368
|
-
| `--debug` | Show debug output |
|
|
369
|
-
|
|
370
|
-
---
|
|
371
|
-
|
|
372
219
|
### `devdaily init`
|
|
373
220
|
|
|
374
|
-
Interactive setup wizard for aliases, completions, config, PM integration, and git hooks.
|
|
375
|
-
|
|
376
|
-
```bash
|
|
377
|
-
devdaily init # Interactive setup
|
|
378
|
-
devdaily init --global # Global setup
|
|
379
|
-
devdaily init --git-hooks # Install auto-snapshot git hooks
|
|
380
|
-
devdaily init --remove-hooks # Remove devdaily git hooks
|
|
381
|
-
devdaily init --alias # Only set up shell alias
|
|
382
|
-
devdaily init --completions # Only set up tab completions
|
|
383
|
-
devdaily init --pm # Only set up PM integration
|
|
384
|
-
devdaily init --notifications # Only set up Slack/Discord
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
**Git hooks** (opt-in):
|
|
388
|
-
|
|
389
|
-
- `post-commit` — Automatically snapshots after each commit
|
|
390
|
-
- `post-checkout` — Automatically snapshots when switching branches
|
|
391
|
-
- Runs in background, never slows down git
|
|
392
|
-
- POSIX-compatible, safe with existing hooks (appends, doesn't overwrite)
|
|
393
|
-
- Remove cleanly with `devdaily init --remove-hooks`
|
|
394
|
-
|
|
395
|
-
---
|
|
396
|
-
|
|
397
|
-
### `devdaily doctor`
|
|
398
|
-
|
|
399
|
-
Check system requirements and diagnose issues.
|
|
400
|
-
|
|
401
|
-
```bash
|
|
402
|
-
devdaily doctor # Check all prerequisites
|
|
403
|
-
devdaily doctor --fix # Attempt automatic fixes
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
**Checks:** Node.js version, Git, GitHub CLI, authentication, Copilot extension.
|
|
407
|
-
|
|
408
|
-
---
|
|
409
|
-
|
|
410
|
-
### `devdaily config`
|
|
411
|
-
|
|
412
|
-
Manage configuration.
|
|
413
|
-
|
|
414
221
|
```bash
|
|
415
|
-
devdaily
|
|
416
|
-
devdaily
|
|
417
|
-
devdaily
|
|
418
|
-
devdaily
|
|
419
|
-
devdaily
|
|
222
|
+
devdaily init # Interactive setup wizard
|
|
223
|
+
devdaily init --global # Global setup
|
|
224
|
+
devdaily init --alias # Set up dd alias only
|
|
225
|
+
devdaily init --completions # Shell completions only
|
|
226
|
+
devdaily init --notifications # Slack/Discord webhook setup
|
|
227
|
+
devdaily init --git-hooks # Install auto-snapshot hooks
|
|
228
|
+
devdaily init --remove-hooks # Remove auto-snapshot hooks
|
|
420
229
|
```
|
|
421
230
|
|
|
422
231
|
---
|
|
423
232
|
|
|
424
|
-
|
|
233
|
+
## Auto-Snapshots
|
|
425
234
|
|
|
426
|
-
|
|
235
|
+
DevDaily captures lightweight work snapshots automatically so you never lose context:
|
|
427
236
|
|
|
428
|
-
|
|
429
|
-
devdaily connect # Test current PM integration
|
|
430
|
-
devdaily connect --test # Run connection test
|
|
431
|
-
```
|
|
237
|
+
**When snapshots happen:**
|
|
432
238
|
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
DevDaily captures your work state **automatically** at natural moments — you never have to think about it.
|
|
239
|
+
- After running `devdaily standup`, `pr`, or `week` (side-effect)
|
|
240
|
+
- On `git commit` and `git checkout` (opt-in via `devdaily init --git-hooks`)
|
|
241
|
+
- Manually via `devdaily snapshot`
|
|
438
242
|
|
|
439
|
-
|
|
243
|
+
**What's stored:**
|
|
440
244
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
| `git commit` | Git hook (opt-in) | Light snapshot |
|
|
447
|
-
| `git checkout` | Git hook (opt-in) | Light snapshot + branch note |
|
|
448
|
-
| `devdaily snapshot` | Manual | Full snapshot (PRs, tickets, branches, diffs) |
|
|
245
|
+
- Current branch and active branches
|
|
246
|
+
- Today's commits (messages, files changed)
|
|
247
|
+
- Diff stats (insertions, deletions, files)
|
|
248
|
+
- Work categories (frontend, backend, infra, etc.)
|
|
249
|
+
- Optional notes and tags
|
|
449
250
|
|
|
450
|
-
|
|
251
|
+
**Disabling:**
|
|
451
252
|
|
|
452
253
|
```bash
|
|
453
|
-
# Per-command
|
|
254
|
+
# Per-command
|
|
454
255
|
devdaily standup --no-journal
|
|
455
|
-
devdaily
|
|
256
|
+
devdaily week --no-auto-snapshot
|
|
456
257
|
|
|
457
|
-
# Globally
|
|
458
|
-
# .devdaily.json
|
|
459
|
-
{
|
|
460
|
-
"journal": {
|
|
461
|
-
"autoSnapshot": false
|
|
462
|
-
}
|
|
463
|
-
}
|
|
258
|
+
# Globally
|
|
259
|
+
# Set journal.autoSnapshot to false in .devdaily.json
|
|
464
260
|
```
|
|
465
261
|
|
|
466
|
-
### What's stored
|
|
467
|
-
|
|
468
|
-
Snapshots are saved locally to `~/.config/devdaily/journal/` as JSON files organized by date. Each snapshot records:
|
|
469
|
-
|
|
470
|
-
- Current branch and active local branches
|
|
471
|
-
- Today's commits with files changed
|
|
472
|
-
- Recent commits for context
|
|
473
|
-
- Open and recently merged PRs
|
|
474
|
-
- Extracted ticket/issue references
|
|
475
|
-
- Work category breakdown (frontend, backend, infra, etc.)
|
|
476
|
-
- Diff stats and top changed files
|
|
477
|
-
- Optional notes and tags
|
|
478
|
-
|
|
479
|
-
No data is uploaded anywhere. The journal is yours.
|
|
480
|
-
|
|
481
262
|
---
|
|
482
263
|
|
|
483
264
|
## Configuration
|
|
484
265
|
|
|
485
|
-
DevDaily
|
|
266
|
+
DevDaily uses a JSON config file with optional JSON Schema support for IDE autocomplete.
|
|
486
267
|
|
|
487
268
|
### Config file locations
|
|
488
269
|
|
|
489
|
-
| Scope
|
|
490
|
-
|
|
|
491
|
-
|
|
|
492
|
-
|
|
|
493
|
-
|
|
|
270
|
+
| Scope | Path |
|
|
271
|
+
| ------------------- | ------------------------------------------------------------- |
|
|
272
|
+
| Local (per-project) | `.devdaily.json` |
|
|
273
|
+
| Global | `~/.config/devdaily/config.json` |
|
|
274
|
+
| Secrets | `~/.config/devdaily/secrets.json` or `.devdaily.secrets.json` |
|
|
494
275
|
|
|
495
|
-
Local config overrides global config.
|
|
276
|
+
Local config overrides global config. Secrets are stored separately and should never be committed.
|
|
496
277
|
|
|
497
|
-
### Example
|
|
278
|
+
### Example
|
|
498
279
|
|
|
499
280
|
```json
|
|
500
281
|
{
|
|
501
282
|
"$schema": "https://raw.githubusercontent.com/hempun10/devdaily/main/schemas/devdaily.schema.json",
|
|
502
|
-
"version": 1,
|
|
503
|
-
|
|
504
|
-
"theme": {
|
|
505
|
-
"primary": "cyan",
|
|
506
|
-
"accent": "magenta"
|
|
507
|
-
},
|
|
508
283
|
|
|
509
284
|
"output": {
|
|
510
285
|
"format": "markdown",
|
|
@@ -519,9 +294,8 @@ Local config overrides global config.
|
|
|
519
294
|
|
|
520
295
|
"standup": {
|
|
521
296
|
"defaultDays": 1,
|
|
522
|
-
"
|
|
523
|
-
"includeTicketLinks": true
|
|
524
|
-
"sections": ["completed", "in-progress", "blockers"]
|
|
297
|
+
"sections": ["completed", "in-progress", "blockers"],
|
|
298
|
+
"includeTicketLinks": true
|
|
525
299
|
},
|
|
526
300
|
|
|
527
301
|
"pr": {
|
|
@@ -529,22 +303,12 @@ Local config overrides global config.
|
|
|
529
303
|
"includeDiff": true,
|
|
530
304
|
"maxDiffLines": 200,
|
|
531
305
|
"titleFormat": "conventional",
|
|
532
|
-
"includeTicketInTitle": true,
|
|
533
306
|
"autoLabels": true
|
|
534
307
|
},
|
|
535
308
|
|
|
536
|
-
"week": {
|
|
537
|
-
"startDay": "monday",
|
|
538
|
-
"includeWeekends": false
|
|
539
|
-
},
|
|
540
|
-
|
|
541
309
|
"journal": {
|
|
542
310
|
"autoSnapshot": true,
|
|
543
311
|
"gitHooks": false,
|
|
544
|
-
"hooks": {
|
|
545
|
-
"postCommit": true,
|
|
546
|
-
"postCheckout": true
|
|
547
|
-
},
|
|
548
312
|
"quiet": true
|
|
549
313
|
},
|
|
550
314
|
|
|
@@ -554,49 +318,47 @@ Local config overrides global config.
|
|
|
554
318
|
},
|
|
555
319
|
|
|
556
320
|
"notifications": {
|
|
557
|
-
"slack": {
|
|
558
|
-
|
|
559
|
-
},
|
|
560
|
-
"discord": {
|
|
561
|
-
"enabled": false
|
|
562
|
-
}
|
|
321
|
+
"slack": { "enabled": false },
|
|
322
|
+
"discord": { "enabled": false }
|
|
563
323
|
}
|
|
564
324
|
}
|
|
565
325
|
```
|
|
566
326
|
|
|
567
327
|
### Project management integration
|
|
568
328
|
|
|
569
|
-
DevDaily
|
|
329
|
+
DevDaily extracts ticket IDs from branch names and commit messages, then fetches metadata from your PM tool:
|
|
330
|
+
|
|
331
|
+
```bash
|
|
332
|
+
devdaily connect # Interactive setup
|
|
333
|
+
devdaily connect --tool jira # Configure Jira
|
|
334
|
+
devdaily connect --tool linear # Configure Linear
|
|
335
|
+
```
|
|
570
336
|
|
|
571
|
-
|
|
572
|
-
| ----------------- | ------------------ | ----------------------------------------------- |
|
|
573
|
-
| **GitHub Issues** | `"tool": "github"` | GitHub CLI (`gh auth login`) |
|
|
574
|
-
| **Jira** | `"tool": "jira"` | `JIRA_API_TOKEN`, `JIRA_EMAIL`, `JIRA_BASE_URL` |
|
|
575
|
-
| **Linear** | `"tool": "linear"` | `LINEAR_API_KEY` |
|
|
576
|
-
| **Notion** | `"tool": "notion"` | `NOTION_API_KEY`, `NOTION_DATABASE_ID` |
|
|
337
|
+
Supported tools: **GitHub Issues** (default, uses `gh` CLI), **Jira** (REST API v3), **Linear** (GraphQL API).
|
|
577
338
|
|
|
578
|
-
|
|
339
|
+
### Custom PR prompt file
|
|
579
340
|
|
|
580
|
-
|
|
341
|
+
Create a `.devdaily-pr-prompt.md` file in your repo to customize how PR descriptions are generated:
|
|
581
342
|
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
3. PR titles and bodies
|
|
585
|
-
4. Manual input: `--ticket PROJ-123`
|
|
343
|
+
```markdown
|
|
344
|
+
## PR Description Guidelines
|
|
586
345
|
|
|
587
|
-
|
|
346
|
+
- Use present tense ("Add feature" not "Added feature")
|
|
347
|
+
- Reference ticket numbers
|
|
348
|
+
- Include a testing section
|
|
349
|
+
- Keep descriptions concise
|
|
350
|
+
```
|
|
588
351
|
|
|
589
|
-
|
|
352
|
+
Search order: `.devdaily-pr-prompt.md` → `.github/devdaily-pr-prompt.md` → `docs/devdaily-pr-prompt.md`
|
|
590
353
|
|
|
591
354
|
---
|
|
592
355
|
|
|
593
356
|
## Privacy & Security
|
|
594
357
|
|
|
595
|
-
- **All data stays local.**
|
|
596
|
-
- **
|
|
597
|
-
- **
|
|
598
|
-
- **
|
|
599
|
-
- **Opt-in features.** Git hooks, notifications, and PM integrations are all opt-in.
|
|
358
|
+
- **All data stays local.** Journal entries are stored in `~/.config/devdaily/journal/` — nothing is sent to any server.
|
|
359
|
+
- **Secrets are stored separately** in `.devdaily.secrets.json` (auto-added to `.gitignore`) or `~/.config/devdaily/secrets.json`.
|
|
360
|
+
- **Git hooks are opt-in** and POSIX-compatible. They append to existing hooks instead of overwriting.
|
|
361
|
+
- **AI generation** uses GitHub Copilot CLI, which processes your prompts through GitHub's infrastructure under your existing Copilot agreement.
|
|
600
362
|
|
|
601
363
|
---
|
|
602
364
|
|
|
@@ -604,6 +366,12 @@ Create `.devdaily-pr-prompt.md` in your repo root to customize how AI generates
|
|
|
604
366
|
|
|
605
367
|
### Prerequisites
|
|
606
368
|
|
|
369
|
+
- Node.js >= 18
|
|
370
|
+
- npm >= 9
|
|
371
|
+
- Git
|
|
372
|
+
|
|
373
|
+
### Setup
|
|
374
|
+
|
|
607
375
|
```bash
|
|
608
376
|
git clone https://github.com/hempun10/devdaily.git
|
|
609
377
|
cd devdaily
|
|
@@ -613,16 +381,16 @@ npm install
|
|
|
613
381
|
### Common tasks
|
|
614
382
|
|
|
615
383
|
```bash
|
|
616
|
-
npm run dev
|
|
617
|
-
npm run build
|
|
618
|
-
npm
|
|
619
|
-
npm run
|
|
620
|
-
npm run
|
|
621
|
-
npm run
|
|
622
|
-
npm run
|
|
623
|
-
npm
|
|
624
|
-
npm run
|
|
625
|
-
npm run
|
|
384
|
+
npm run dev # Watch mode (auto-rebuild)
|
|
385
|
+
npm run build # Production build (tsup)
|
|
386
|
+
npm run typecheck # TypeScript type checking
|
|
387
|
+
npm run lint # ESLint
|
|
388
|
+
npm run lint:fix # ESLint with auto-fix
|
|
389
|
+
npm run format # Prettier format
|
|
390
|
+
npm run format:check # Prettier check
|
|
391
|
+
npm test # Run all tests (vitest)
|
|
392
|
+
npm run test:watch # Tests in watch mode
|
|
393
|
+
npm run test:coverage # Tests with coverage report
|
|
626
394
|
```
|
|
627
395
|
|
|
628
396
|
### Project structure
|
|
@@ -630,175 +398,103 @@ npm run format:check # Check formatting
|
|
|
630
398
|
```
|
|
631
399
|
devdaily/
|
|
632
400
|
├── src/
|
|
633
|
-
│ ├──
|
|
634
|
-
│ ├──
|
|
635
|
-
│ │ ├──
|
|
636
|
-
│ │ ├──
|
|
637
|
-
│ │ ├──
|
|
638
|
-
│ │ ├──
|
|
639
|
-
│ │ ├──
|
|
640
|
-
│ │ ├──
|
|
641
|
-
│ │ ├──
|
|
642
|
-
│ │ ├──
|
|
643
|
-
│ │ ├──
|
|
644
|
-
│ │
|
|
645
|
-
│
|
|
646
|
-
│ ├──
|
|
647
|
-
│ │ ├──
|
|
648
|
-
│ │ ├──
|
|
649
|
-
│ │ ├── context-analyzer.ts
|
|
650
|
-
│ │ ├──
|
|
651
|
-
│ │ ├──
|
|
652
|
-
│ │ ├──
|
|
653
|
-
│ │ ├──
|
|
654
|
-
│ │ ├── project-management.ts #
|
|
655
|
-
│ │ ├──
|
|
656
|
-
│ │ ├──
|
|
657
|
-
│ │ ├── github
|
|
658
|
-
│ │
|
|
659
|
-
│
|
|
660
|
-
│
|
|
661
|
-
│ ├──
|
|
662
|
-
│
|
|
663
|
-
│
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
│ │ ├── dashboard.ts # Interactive TUI dashboard
|
|
670
|
-
│ │ ├── keyboard.ts # Keyboard input handling
|
|
671
|
-
│ │ └── index.ts # UI re-exports
|
|
672
|
-
│ ├── utils/ # Shared utilities
|
|
673
|
-
│ │ ├── helpers.ts # Date, clipboard, formatting helpers
|
|
674
|
-
│ │ ├── commitlint.ts # Conventional commit parsing
|
|
675
|
-
│ │ └── ui.ts # UI utility helpers
|
|
676
|
-
│ └── types/ # TypeScript type definitions
|
|
677
|
-
│ └── index.ts
|
|
678
|
-
├── tests/ # Test suite (654 tests)
|
|
679
|
-
│ ├── auto-snapshot.test.ts # Auto-snapshot, hooks, side-effects (74 tests)
|
|
680
|
-
│ ├── work-journal.test.ts # Work journal & snapshot builder (123 tests)
|
|
681
|
-
│ ├── project-management.test.ts # PM integrations (130 tests)
|
|
682
|
-
│ ├── pr-creation.test.ts # PR creation & workflows (123 tests)
|
|
683
|
-
│ ├── standup-context.test.ts # Standup context building (70 tests)
|
|
684
|
-
│ ├── copilot.test.ts # Copilot CLI integration (38 tests)
|
|
685
|
-
│ ├── pr-prompt.test.ts # PR prompt file handling (26 tests)
|
|
686
|
-
│ ├── pr-template.test.ts # PR template parsing (25 tests)
|
|
687
|
-
│ ├── context-analyzer.test.ts # Context analysis (22 tests)
|
|
688
|
-
│ ├── git-analyzer.test.ts # Git operations (15 tests)
|
|
689
|
-
│ ├── commitlint.test.ts # Commit parsing (6 tests)
|
|
690
|
-
│ └── ui.test.ts # UI rendering (2 tests)
|
|
691
|
-
├── docs/ # Documentation
|
|
692
|
-
│ ├── CONTRIBUTING.md
|
|
693
|
-
│ ├── TESTING.md
|
|
694
|
-
│ ├── PUBLISHING.md
|
|
695
|
-
│ ├── PROJECT_SETUP.md
|
|
696
|
-
│ ├── DEV_TOOLING_SETUP.md
|
|
697
|
-
│ ├── QUICK_REFERENCE.md
|
|
698
|
-
│ └── reports/
|
|
699
|
-
├── schemas/ # JSON schemas
|
|
700
|
-
│ └── devdaily.schema.json # Config schema for IDE autocomplete
|
|
701
|
-
├── examples/ # Example outputs
|
|
702
|
-
│ ├── standup-output.md
|
|
703
|
-
│ ├── pr-output.md
|
|
704
|
-
│ └── week-output.md
|
|
705
|
-
├── scripts/ # Dev/test scripts
|
|
706
|
-
│ ├── setup-test-repo.sh
|
|
707
|
-
│ ├── setup-test-commits.sh
|
|
708
|
-
│ └── create-linear-issues.py
|
|
709
|
-
├── .github/
|
|
710
|
-
│ ├── workflows/
|
|
711
|
-
│ │ ├── ci.yml # CI — lint, typecheck, test (Node 18/20/22)
|
|
712
|
-
│ │ └── publish.yml # NPM publish on GitHub release
|
|
713
|
-
│ └── PULL_REQUEST_TEMPLATE.md
|
|
714
|
-
├── package.json
|
|
715
|
-
├── tsconfig.json
|
|
716
|
-
├── tsup.config.ts # Build config
|
|
717
|
-
├── vitest.config.ts # Test config
|
|
718
|
-
├── eslint.config.js # Lint config
|
|
719
|
-
├── commitlint.config.cjs # Commit message linting
|
|
720
|
-
├── CHANGELOG.md
|
|
721
|
-
└── LICENSE
|
|
401
|
+
│ ├── commands/ # CLI command handlers
|
|
402
|
+
│ │ ├── standup.ts # Standup generation
|
|
403
|
+
│ │ ├── pr.ts # PR description generation
|
|
404
|
+
│ │ ├── week.ts # Weekly summary
|
|
405
|
+
│ │ ├── context.ts # Context recovery
|
|
406
|
+
│ │ ├── recall.ts # Work history search
|
|
407
|
+
│ │ ├── snapshot.ts # Manual snapshot capture
|
|
408
|
+
│ │ ├── init.ts # Setup wizard
|
|
409
|
+
│ │ ├── config.ts # Configuration management
|
|
410
|
+
│ │ ├── doctor.ts # System diagnostics
|
|
411
|
+
│ │ ├── connect.ts # PM tool connection
|
|
412
|
+
│ │ └── dash.ts # Interactive dashboard
|
|
413
|
+
│ ├── core/ # Business logic
|
|
414
|
+
│ │ ├── git-analyzer.ts # Git operations (simple-git)
|
|
415
|
+
│ │ ├── copilot.ts # GitHub Copilot CLI integration
|
|
416
|
+
│ │ ├── standup-context.ts # Rich context builder for standups
|
|
417
|
+
│ │ ├── context-analyzer.ts # Work pattern analysis
|
|
418
|
+
│ │ ├── snapshot-builder.ts # Snapshot creation
|
|
419
|
+
│ │ ├── work-journal.ts # Persistent local storage
|
|
420
|
+
│ │ ├── auto-snapshot.ts # Side-effect & hook snapshots
|
|
421
|
+
│ │ ├── notifications.ts # Slack/Discord webhooks
|
|
422
|
+
│ │ ├── project-management.ts # Jira/Linear/GitHub Issues
|
|
423
|
+
│ │ ├── pr-template.ts # PR template detection
|
|
424
|
+
│ │ ├── pr-prompt.ts # Custom prompt file loader
|
|
425
|
+
│ │ ├── github.ts # GitHub API helpers
|
|
426
|
+
│ │ └── github-repo.ts # Repo metadata
|
|
427
|
+
│ ├── config/ # Configuration loading & schema
|
|
428
|
+
│ ├── ui/ # Terminal UI (colors, ASCII, help)
|
|
429
|
+
│ ├── utils/ # Helpers (clipboard, formatting, commitlint)
|
|
430
|
+
│ ├── types/ # TypeScript type definitions
|
|
431
|
+
│ └── index.ts # CLI entry point
|
|
432
|
+
├── tests/ # Vitest test suites
|
|
433
|
+
├── schemas/ # JSON Schema for config validation
|
|
434
|
+
├── examples/ # Example command outputs
|
|
435
|
+
├── docs/ # Additional documentation
|
|
436
|
+
└── .github/ # CI workflows and templates
|
|
722
437
|
```
|
|
723
438
|
|
|
724
439
|
### Tech stack
|
|
725
440
|
|
|
726
|
-
|
|
|
727
|
-
|
|
|
728
|
-
|
|
|
729
|
-
|
|
|
730
|
-
|
|
|
731
|
-
|
|
|
732
|
-
|
|
|
733
|
-
|
|
|
734
|
-
|
|
|
735
|
-
|
|
|
736
|
-
|
|
|
737
|
-
|
|
|
738
|
-
| **Linting** | ESLint + Prettier |
|
|
739
|
-
| **Commit linting** | commitlint + Husky |
|
|
441
|
+
| Category | Technology |
|
|
442
|
+
| ------------------ | ---------------------------- |
|
|
443
|
+
| Language | TypeScript 5.7 (strict mode) |
|
|
444
|
+
| Runtime | Node.js 18+ (ESM) |
|
|
445
|
+
| CLI framework | Commander.js 12 |
|
|
446
|
+
| Git operations | simple-git |
|
|
447
|
+
| AI generation | GitHub Copilot CLI |
|
|
448
|
+
| Terminal UI | chalk, boxen, ora, inquirer |
|
|
449
|
+
| Build | tsup |
|
|
450
|
+
| Testing | Vitest |
|
|
451
|
+
| Linting | ESLint + Prettier |
|
|
452
|
+
| Commit conventions | commitlint + Husky |
|
|
740
453
|
|
|
741
454
|
---
|
|
742
455
|
|
|
743
456
|
## Testing
|
|
744
457
|
|
|
745
|
-
DevDaily has a comprehensive test suite with **654 tests across 12 test files**.
|
|
746
|
-
|
|
747
458
|
```bash
|
|
748
|
-
# Run all tests
|
|
749
|
-
npm test
|
|
750
|
-
|
|
751
|
-
# Run specific test file
|
|
752
|
-
npx vitest run tests/auto-snapshot.test.ts
|
|
753
|
-
|
|
754
|
-
# Watch mode
|
|
755
|
-
npm run test:watch
|
|
756
|
-
|
|
757
|
-
# With coverage
|
|
758
|
-
npm run test:coverage
|
|
459
|
+
npm test # Run all tests
|
|
460
|
+
npm run test:watch # Watch mode
|
|
461
|
+
npm run test:coverage # With coverage report
|
|
759
462
|
```
|
|
760
463
|
|
|
761
|
-
### Test coverage
|
|
762
|
-
|
|
763
|
-
| Module | Tests
|
|
764
|
-
| -------------------- |
|
|
765
|
-
| `
|
|
766
|
-
| `
|
|
767
|
-
| `
|
|
768
|
-
| `
|
|
769
|
-
| `
|
|
770
|
-
| `
|
|
771
|
-
| `
|
|
772
|
-
| `pr-
|
|
773
|
-
| `
|
|
774
|
-
| `
|
|
775
|
-
| `
|
|
776
|
-
| `
|
|
464
|
+
### Test coverage
|
|
465
|
+
|
|
466
|
+
| Module | Tests | Description |
|
|
467
|
+
| -------------------- | ------- | ---------------------------------------- |
|
|
468
|
+
| `auto-snapshot` | 74 | Side-effect snapshots, hooks, config |
|
|
469
|
+
| `work-journal` | 123 | Persistent storage, search, aggregation |
|
|
470
|
+
| `project-management` | 130 | Jira, Linear, GitHub Issues integration |
|
|
471
|
+
| `standup-context` | 70 | Context building, formatting |
|
|
472
|
+
| `notifications` | 70 | Slack/Discord webhooks, output formatter |
|
|
473
|
+
| `pr-creation` | 123 | PR generation pipeline |
|
|
474
|
+
| `copilot` | 38 | AI prompt building |
|
|
475
|
+
| `pr-prompt` | 26 | Custom prompt file loading |
|
|
476
|
+
| `pr-template` | 25 | Template detection and parsing |
|
|
477
|
+
| `context-analyzer` | 22 | Work pattern analysis |
|
|
478
|
+
| `git-analyzer` | 15 | Git operations |
|
|
479
|
+
| `commitlint` | 6 | Conventional commit parsing |
|
|
480
|
+
| `ui` | 2 | UI rendering |
|
|
481
|
+
| **Total** | **724** | |
|
|
777
482
|
|
|
778
483
|
---
|
|
779
484
|
|
|
780
485
|
## FAQ
|
|
781
486
|
|
|
782
|
-
**Q: Does
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
**Q: What git hosting providers are supported?**
|
|
786
|
-
A: DevDaily works with any git repository. PR creation requires GitHub CLI. Ticket integration supports GitHub, Jira, Linear, and Notion.
|
|
787
|
-
|
|
788
|
-
**Q: Is my code sent to external services?**
|
|
789
|
-
A: Only commit messages and diff summaries are sent to GitHub Copilot CLI. Full file contents are never shared. The work journal stays entirely local.
|
|
487
|
+
**Q: Does DevDaily send my code anywhere?**
|
|
488
|
+
No. DevDaily reads your local git history and sends a text prompt to GitHub Copilot CLI. Your source code is not uploaded. Journal data stays on your machine.
|
|
790
489
|
|
|
791
|
-
**Q: Can I use
|
|
792
|
-
|
|
490
|
+
**Q: Can I use DevDaily without GitHub Copilot?**
|
|
491
|
+
Currently, GitHub Copilot CLI is required for AI-powered generation. You can use `--raw-context` to get the structured context block without AI processing, and pipe it to any LLM of your choice.
|
|
793
492
|
|
|
794
|
-
**Q:
|
|
795
|
-
|
|
493
|
+
**Q: Does it work with monorepos?**
|
|
494
|
+
Yes. DevDaily analyzes the git history of whatever repository you're currently in. Multi-project support via the journal lets you aggregate across repos.
|
|
796
495
|
|
|
797
|
-
**Q: How do I
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
**Q: Can I disable the auto-snapshot behavior?**
|
|
801
|
-
A: Yes. Set `"journal": { "autoSnapshot": false }` in your config, or pass `--no-journal` to individual commands.
|
|
496
|
+
**Q: How do I uninstall the git hooks?**
|
|
497
|
+
Run `devdaily init --remove-hooks`. This cleanly removes only the DevDaily lines from your hook files.
|
|
802
498
|
|
|
803
499
|
---
|
|
804
500
|
|
|
@@ -806,75 +502,50 @@ A: Yes. Set `"journal": { "autoSnapshot": false }` in your config, or pass `--no
|
|
|
806
502
|
|
|
807
503
|
### Common issues
|
|
808
504
|
|
|
809
|
-
| Problem | Solution
|
|
810
|
-
| ------------------------------ |
|
|
811
|
-
| `
|
|
812
|
-
| `
|
|
813
|
-
| `
|
|
814
|
-
|
|
|
815
|
-
|
|
|
505
|
+
| Problem | Solution |
|
|
506
|
+
| ------------------------------ | ---------------------------------------------------- |
|
|
507
|
+
| `GitHub Copilot CLI not found` | Run `gh extension install github/gh-copilot` |
|
|
508
|
+
| `Not a git repository` | Navigate to a git repo before running commands |
|
|
509
|
+
| `No commits found` | Try increasing `--days` or check `--author` filter |
|
|
510
|
+
| Clipboard not working | Install `xclip` (Linux) or check permissions (macOS) |
|
|
511
|
+
| Webhook test fails | Run `devdaily init --notifications` to reconfigure |
|
|
816
512
|
|
|
817
513
|
### Diagnostics
|
|
818
514
|
|
|
819
515
|
```bash
|
|
820
|
-
#
|
|
821
|
-
devdaily doctor
|
|
822
|
-
|
|
823
|
-
# Auto-fix what's possible
|
|
824
|
-
devdaily doctor --fix
|
|
825
|
-
|
|
826
|
-
# Debug any command
|
|
827
|
-
devdaily standup --debug
|
|
828
|
-
devdaily pr --debug
|
|
516
|
+
devdaily doctor # Check all prerequisites
|
|
517
|
+
devdaily doctor --fix # Attempt automatic fixes
|
|
518
|
+
devdaily config --path # Show config file location
|
|
829
519
|
```
|
|
830
520
|
|
|
831
521
|
---
|
|
832
522
|
|
|
833
523
|
## Roadmap
|
|
834
524
|
|
|
835
|
-
- [
|
|
836
|
-
- [
|
|
837
|
-
- [
|
|
838
|
-
- [
|
|
839
|
-
- [
|
|
840
|
-
- [
|
|
841
|
-
- [x] Work history search (`devdaily recall`)
|
|
842
|
-
- [x] Automatic side-effect snapshots
|
|
843
|
-
- [x] Git hooks for post-commit and post-checkout
|
|
844
|
-
- [x] Cross-project weekly summaries
|
|
845
|
-
- [x] Custom PR prompt files (`.devdaily-pr-prompt.md`)
|
|
846
|
-
- [ ] Support for Ollama / local AI models
|
|
847
|
-
- [ ] VS Code extension
|
|
848
|
-
- [ ] Team collaboration features
|
|
849
|
-
- [ ] Analytics and impact tracking dashboard
|
|
850
|
-
- [ ] Scheduled auto-standup (cron / launchd)
|
|
525
|
+
- [ ] Plugin system for custom output formats and integrations
|
|
526
|
+
- [ ] Background agent for periodic auto-snapshots
|
|
527
|
+
- [ ] Dashboard visualization of work patterns
|
|
528
|
+
- [ ] Notion integration for ticket tracking
|
|
529
|
+
- [ ] Team-level aggregated summaries
|
|
530
|
+
- [ ] Ollama/local LLM support as Copilot alternative
|
|
851
531
|
|
|
852
532
|
---
|
|
853
533
|
|
|
854
534
|
## Contributing
|
|
855
535
|
|
|
856
|
-
|
|
536
|
+
Contributions are welcome! Please read the [Contributing Guide](CONTRIBUTING.md) before submitting a pull request.
|
|
857
537
|
|
|
858
538
|
```bash
|
|
859
539
|
git clone https://github.com/hempun10/devdaily.git
|
|
860
540
|
cd devdaily
|
|
861
541
|
npm install
|
|
862
|
-
npm test
|
|
863
|
-
npm run dev # Start developing
|
|
542
|
+
npm test
|
|
864
543
|
```
|
|
865
544
|
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
## License
|
|
869
|
-
|
|
870
|
-
MIT © [Hem Pun](https://github.com/hempun10)
|
|
545
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the full development workflow, coding standards, and pull request process.
|
|
871
546
|
|
|
872
547
|
---
|
|
873
548
|
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
**[⬆ Back to top](#devdaily-ai)**
|
|
877
|
-
|
|
878
|
-
Made with ❤️ by developers, for developers
|
|
549
|
+
## License
|
|
879
550
|
|
|
880
|
-
|
|
551
|
+
[MIT](LICENSE) © [Hem Pun](https://github.com/hempun10)
|