devdaily-ai 0.3.0 → 0.5.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/README.md +631 -414
- package/dist/index.js +8034 -2663
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,659 +4,876 @@
|
|
|
4
4
|
|
|
5
5
|
**Your AI-powered developer memory**
|
|
6
6
|
|
|
7
|
-
Auto-generate standup notes, PR descriptions,
|
|
7
|
+
Auto-generate standup notes, PR descriptions, weekly summaries — and never lose context when switching tasks.
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/devdaily-ai)
|
|
10
10
|
[](https://nodejs.org)
|
|
11
|
+
[](#testing)
|
|
11
12
|
[](LICENSE)
|
|
12
13
|
[](https://github.com/hempun10/devdaily)
|
|
13
14
|
|
|
14
|
-
[Installation](#installation)
|
|
15
|
+
[Installation](#installation) · [Quick Start](#quick-start) · [Commands](#commands) · [Configuration](#configuration) · [Contributing](docs/CONTRIBUTING.md)
|
|
15
16
|
|
|
16
17
|
</div>
|
|
17
18
|
|
|
18
19
|
---
|
|
19
20
|
|
|
20
|
-
## Why DevDaily
|
|
21
|
+
## Why DevDaily?
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
Developers lose hours every week to low-value repetitive work:
|
|
23
24
|
|
|
24
25
|
- ⏱️ Writing standup notes every morning
|
|
25
26
|
- 📝 Crafting PR descriptions from scratch
|
|
26
|
-
- 📊
|
|
27
|
-
-
|
|
27
|
+
- 📊 Compiling weekly accomplishments for managers
|
|
28
|
+
- 🧠 Trying to remember what you were doing before a context switch
|
|
28
29
|
|
|
29
|
-
**DevDaily
|
|
30
|
+
**DevDaily fixes all of this.** It analyzes your git history, tracks your work automatically, and uses GitHub Copilot CLI to generate professional summaries — in seconds.
|
|
31
|
+
|
|
32
|
+
### What makes it different
|
|
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
|
|
37
|
+
- `devdaily recall auth` finds every time you touched authentication code
|
|
38
|
+
- `devdaily week` produces accurate summaries even if you forgot to commit on some days
|
|
39
|
+
- Cross-project summaries work across all your repositories
|
|
40
|
+
|
|
41
|
+
No cloud. No telemetry. Everything stays in `~/.config/devdaily/journal/`.
|
|
42
|
+
|
|
43
|
+
---
|
|
30
44
|
|
|
31
45
|
## Features
|
|
32
46
|
|
|
33
|
-
| Feature
|
|
34
|
-
|
|
|
35
|
-
| **🚀 Standup Generator**
|
|
36
|
-
| **📄 Smart PR Descriptions**
|
|
37
|
-
| **📅 Weekly Summaries**
|
|
38
|
-
|
|
|
39
|
-
|
|
|
40
|
-
|
|
|
41
|
-
|
|
|
42
|
-
|
|
|
43
|
-
|
|
|
44
|
-
|
|
|
45
|
-
|
|
|
46
|
-
|
|
|
47
|
+
| Feature | Description |
|
|
48
|
+
| ------------------------------ | ------------------------------------------------------------------------------------ |
|
|
49
|
+
| **🚀 Standup Generator** | Generate daily standup notes from commits, PRs, and tickets in 30 seconds |
|
|
50
|
+
| **📄 Smart PR Descriptions** | Auto-generate titles and descriptions with template support and commitlint |
|
|
51
|
+
| **📅 Weekly Summaries** | Cross-project weekly summaries with date ranges, journal enrichment, and JSON export |
|
|
52
|
+
| **📸 Work Snapshots** | Capture rich snapshots of your repo state — branches, commits, PRs, tickets, diffs |
|
|
53
|
+
| **🧠 Persistent Memory** | Local work journal that remembers everything across sessions and days |
|
|
54
|
+
| **🔄 Context Recovery** | `devdaily context` — fight context-switching amnesia, resume where you left off |
|
|
55
|
+
| **🔍 Work Search** | `devdaily recall` — search your history by keyword, file, tag, or date range |
|
|
56
|
+
| **⚡ Auto-Snapshots** | Snapshots happen invisibly when you run commands or commit code — zero friction |
|
|
57
|
+
| **🪝 Git Hooks** | Opt-in `post-commit` and `post-checkout` hooks for automatic capture |
|
|
58
|
+
| **🎫 PM Integration** | GitHub Issues, Jira, Linear, and Notion support for ticket context |
|
|
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 |
|
|
65
|
+
|
|
66
|
+
---
|
|
47
67
|
|
|
48
68
|
## Installation
|
|
49
69
|
|
|
50
|
-
|
|
70
|
+
### Prerequisites
|
|
51
71
|
|
|
52
|
-
- Node.js >= 18.0.0
|
|
53
|
-
- Git
|
|
54
|
-
- GitHub CLI with Copilot extension
|
|
72
|
+
- **Node.js** >= 18.0.0
|
|
73
|
+
- **Git** (any recent version)
|
|
74
|
+
- **GitHub CLI** with Copilot extension (for AI features)
|
|
55
75
|
|
|
56
|
-
### Quick Install
|
|
76
|
+
### Quick Install
|
|
57
77
|
|
|
58
78
|
```bash
|
|
59
79
|
# Install DevDaily
|
|
60
80
|
npm install -g devdaily-ai
|
|
61
81
|
|
|
62
|
-
#
|
|
82
|
+
# Check prerequisites and auto-fix issues
|
|
63
83
|
devdaily doctor --fix
|
|
64
84
|
|
|
65
|
-
#
|
|
85
|
+
# Interactive setup — aliases, completions, PM integration, git hooks
|
|
66
86
|
devdaily init
|
|
67
87
|
```
|
|
68
88
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
### Manual Setup
|
|
72
|
-
|
|
73
|
-
If you prefer to set up manually:
|
|
74
|
-
|
|
75
|
-
#### 1. Install GitHub CLI (if not already installed)
|
|
89
|
+
After setup, use `dd` as a shortcut anywhere:
|
|
76
90
|
|
|
77
91
|
```bash
|
|
78
|
-
#
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
#
|
|
82
|
-
winget install --id GitHub.cli
|
|
83
|
-
|
|
84
|
-
# Linux
|
|
85
|
-
sudo apt install gh # Debian/Ubuntu
|
|
86
|
-
sudo dnf install gh # Fedora/RHEL
|
|
92
|
+
dd standup # Generate standup
|
|
93
|
+
dd pr # Generate PR description
|
|
94
|
+
dd week # Weekly summary
|
|
95
|
+
dd context # Resume where you left off
|
|
87
96
|
```
|
|
88
97
|
|
|
89
|
-
|
|
98
|
+
### GitHub Copilot CLI Setup
|
|
90
99
|
|
|
91
|
-
|
|
100
|
+
DevDaily uses GitHub Copilot CLI for AI-powered text generation. If you don't have it:
|
|
92
101
|
|
|
93
102
|
```bash
|
|
94
|
-
|
|
95
|
-
gh
|
|
96
|
-
|
|
103
|
+
# Install GitHub CLI
|
|
104
|
+
brew install gh # macOS
|
|
105
|
+
# winget install GitHub.cli # Windows
|
|
106
|
+
# sudo apt install gh # Debian/Ubuntu
|
|
97
107
|
|
|
98
|
-
|
|
108
|
+
# Authenticate
|
|
109
|
+
gh auth login
|
|
99
110
|
|
|
100
|
-
|
|
101
|
-
|
|
111
|
+
# Install Copilot extension
|
|
112
|
+
gh extension install github/gh-copilot
|
|
102
113
|
```
|
|
103
114
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
```bash
|
|
107
|
-
# Check everything is set up correctly
|
|
108
|
-
devdaily doctor
|
|
115
|
+
Run `devdaily doctor` at any time to verify your setup.
|
|
109
116
|
|
|
110
|
-
|
|
111
|
-
devdaily --version
|
|
112
|
-
devdaily --help
|
|
113
|
-
```
|
|
117
|
+
---
|
|
114
118
|
|
|
115
119
|
## Quick Start
|
|
116
120
|
|
|
117
|
-
Navigate to any git repository and run:
|
|
118
|
-
|
|
119
121
|
```bash
|
|
120
|
-
#
|
|
121
|
-
|
|
122
|
+
# Navigate to any git repository
|
|
123
|
+
cd your-project
|
|
122
124
|
|
|
123
|
-
# Generate standup
|
|
124
|
-
devdaily standup
|
|
125
|
+
# Generate today's standup
|
|
126
|
+
devdaily standup
|
|
125
127
|
|
|
126
|
-
# Generate PR description
|
|
127
|
-
devdaily pr
|
|
128
|
+
# Generate a PR description for your current branch
|
|
129
|
+
devdaily pr
|
|
128
130
|
|
|
129
|
-
# Get
|
|
130
|
-
devdaily week
|
|
131
|
+
# Get this week's summary
|
|
132
|
+
devdaily week
|
|
133
|
+
|
|
134
|
+
# Recover context after a break
|
|
135
|
+
devdaily context
|
|
136
|
+
|
|
137
|
+
# Search your work history
|
|
138
|
+
devdaily recall "authentication"
|
|
131
139
|
|
|
132
|
-
#
|
|
133
|
-
devdaily
|
|
140
|
+
# Take a manual snapshot with a note
|
|
141
|
+
devdaily snapshot --note "Finished auth refactor"
|
|
134
142
|
```
|
|
135
143
|
|
|
136
|
-
|
|
144
|
+
---
|
|
137
145
|
|
|
138
146
|
## Commands
|
|
139
147
|
|
|
140
|
-
###
|
|
148
|
+
### Core Commands
|
|
141
149
|
|
|
142
|
-
|
|
150
|
+
| Command | Aliases | Description |
|
|
151
|
+
| ------------------- | ------------------ | ------------------------------------------------------------ |
|
|
152
|
+
| `devdaily standup` | `s`, `su`, `daily` | Generate standup notes from recent commits, PRs, and tickets |
|
|
153
|
+
| `devdaily pr` | `p`, `pull` | Generate PR description from current branch |
|
|
154
|
+
| `devdaily week` | `w`, `weekly` | Generate weekly work summary |
|
|
155
|
+
| `devdaily context` | `ctx`, `resume` | Recover what you were working on |
|
|
156
|
+
| `devdaily recall` | `search`, `find` | Search your work history |
|
|
157
|
+
| `devdaily snapshot` | `snap`, `save` | Manually capture a work snapshot |
|
|
143
158
|
|
|
144
|
-
|
|
145
|
-
# Yesterday's work (default)
|
|
146
|
-
devdaily standup
|
|
159
|
+
### Setup & Utility
|
|
147
160
|
|
|
148
|
-
|
|
149
|
-
|
|
161
|
+
| Command | Aliases | Description |
|
|
162
|
+
| ------------------ | ---------------- | ----------------------------------- |
|
|
163
|
+
| `devdaily init` | — | Interactive setup wizard |
|
|
164
|
+
| `devdaily config` | `cfg` | Manage configuration |
|
|
165
|
+
| `devdaily doctor` | `check`, `setup` | Diagnose and fix prerequisites |
|
|
166
|
+
| `devdaily connect` | `pm`, `link` | Test project management connections |
|
|
167
|
+
| `devdaily dash` | `d`, `dashboard` | Interactive TUI dashboard |
|
|
150
168
|
|
|
151
|
-
|
|
152
|
-
devdaily standup --days=7
|
|
169
|
+
---
|
|
153
170
|
|
|
154
|
-
|
|
155
|
-
devdaily standup --format=slack
|
|
171
|
+
### `devdaily standup`
|
|
156
172
|
|
|
157
|
-
|
|
158
|
-
devdaily standup --format=plain
|
|
173
|
+
Generate daily standup notes from your recent commits, PRs, and tickets.
|
|
159
174
|
|
|
160
|
-
|
|
161
|
-
devdaily standup
|
|
175
|
+
```bash
|
|
176
|
+
devdaily standup # Yesterday's work (default)
|
|
177
|
+
devdaily standup --days=3 # Last 3 days
|
|
178
|
+
devdaily standup --format=slack # Slack-formatted output
|
|
179
|
+
devdaily standup --context # Show detailed work analysis
|
|
180
|
+
devdaily standup --raw-context # Output raw context (no AI)
|
|
181
|
+
devdaily standup --send # Send to Slack/Discord
|
|
182
|
+
devdaily standup --no-journal # Skip auto-snapshot side-effect
|
|
162
183
|
```
|
|
163
184
|
|
|
164
|
-
|
|
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 |
|
|
165
203
|
|
|
166
|
-
|
|
167
|
-
- `--format, -f <format>` - Output format: markdown, slack, plain (default: markdown)
|
|
168
|
-
- `--no-copy` - Don't copy to clipboard
|
|
204
|
+
---
|
|
169
205
|
|
|
170
206
|
### `devdaily pr`
|
|
171
207
|
|
|
172
|
-
Generate comprehensive PR descriptions with smart title generation.
|
|
208
|
+
Generate comprehensive PR descriptions with smart title generation, template support, and interactive workflows.
|
|
173
209
|
|
|
174
210
|
```bash
|
|
175
|
-
# Generate
|
|
176
|
-
devdaily pr
|
|
177
|
-
|
|
178
|
-
#
|
|
179
|
-
devdaily pr --
|
|
180
|
-
|
|
181
|
-
#
|
|
182
|
-
devdaily pr --draft
|
|
183
|
-
|
|
184
|
-
# Compare to develop branch
|
|
185
|
-
devdaily pr --base=develop
|
|
186
|
-
|
|
187
|
-
# Don't copy to clipboard
|
|
188
|
-
devdaily pr --no-copy
|
|
211
|
+
devdaily pr # Generate and preview
|
|
212
|
+
devdaily pr --create # Create PR on GitHub immediately
|
|
213
|
+
devdaily pr --draft # Create as draft PR
|
|
214
|
+
devdaily pr --base=develop # Compare against develop branch
|
|
215
|
+
devdaily pr --interactive # Select labels, reviewers, assignees
|
|
216
|
+
devdaily pr --ticket PROJ-123 # Include specific ticket context
|
|
217
|
+
devdaily pr --no-journal # Skip auto-snapshot
|
|
189
218
|
```
|
|
190
219
|
|
|
191
|
-
|
|
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
|
|
192
242
|
|
|
193
|
-
|
|
194
|
-
- `--create, -c` - Create PR on GitHub immediately
|
|
195
|
-
- `--draft, -d` - Create PR as draft
|
|
196
|
-
- `--no-copy` - Don't copy to clipboard
|
|
197
|
-
|
|
198
|
-
**Interactive Menu:**
|
|
199
|
-
When you run `devdaily pr` without flags, you get an interactive menu:
|
|
200
|
-
|
|
201
|
-
- 👁️ Preview in terminal
|
|
202
|
-
- 📋 Copy to clipboard
|
|
203
|
-
- 🚀 Create PR on GitHub
|
|
204
|
-
- 📝 Create draft PR
|
|
205
|
-
- ❌ Cancel
|
|
206
|
-
|
|
207
|
-
**Smart Features:**
|
|
208
|
-
|
|
209
|
-
- Automatically generates PR title from conventional commits
|
|
210
|
-
- Extracts issue numbers (e.g., "Closes #123")
|
|
211
|
-
- Categorizes PR type (feature, bugfix, breaking change)
|
|
212
|
-
- Parses commitlint messages for better titles
|
|
243
|
+
---
|
|
213
244
|
|
|
214
245
|
### `devdaily week`
|
|
215
246
|
|
|
216
|
-
Generate weekly
|
|
247
|
+
Generate weekly summaries with cross-project support and journal enrichment.
|
|
217
248
|
|
|
218
249
|
```bash
|
|
219
|
-
# Current week
|
|
220
|
-
devdaily week
|
|
221
|
-
|
|
222
|
-
#
|
|
223
|
-
devdaily week --
|
|
224
|
-
|
|
225
|
-
#
|
|
226
|
-
devdaily week --start="2026-02-01"
|
|
227
|
-
|
|
228
|
-
# Don't copy to clipboard
|
|
229
|
-
devdaily week --no-copy
|
|
250
|
+
devdaily week # Current week
|
|
251
|
+
devdaily week --last # Last week
|
|
252
|
+
devdaily week --from 2025-01-06 --to 2025-01-10 # Custom range
|
|
253
|
+
devdaily week --weeks-ago 2 # Two weeks ago
|
|
254
|
+
devdaily week --all-projects # Cross-project summary from journal
|
|
255
|
+
devdaily week --json # Output stats as JSON
|
|
256
|
+
devdaily week --save # Save summary to journal
|
|
230
257
|
```
|
|
231
258
|
|
|
232
|
-
|
|
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 |
|
|
233
277
|
|
|
234
|
-
|
|
235
|
-
- `--start, -s <date>` - Custom start date (YYYY-MM-DD)
|
|
236
|
-
- `--no-copy` - Don't copy to clipboard
|
|
278
|
+
---
|
|
237
279
|
|
|
238
280
|
### `devdaily context`
|
|
239
281
|
|
|
240
|
-
Recover
|
|
282
|
+
Recover what you were working on — fight context-switching amnesia.
|
|
241
283
|
|
|
242
284
|
```bash
|
|
243
|
-
devdaily context
|
|
285
|
+
devdaily context # Last 7 days of context
|
|
286
|
+
devdaily context --days=14 # Last 14 days
|
|
287
|
+
devdaily context --date 2025-01-10 # Specific date
|
|
288
|
+
devdaily context --ai # AI-powered "where did I leave off?" summary
|
|
289
|
+
devdaily context --all-projects # Context across all tracked projects
|
|
290
|
+
devdaily context --branches # Detailed active branch status
|
|
244
291
|
```
|
|
245
292
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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 |
|
|
249
306
|
|
|
250
|
-
|
|
251
|
-
# Open dashboard
|
|
252
|
-
devdaily dash
|
|
307
|
+
---
|
|
253
308
|
|
|
254
|
-
|
|
255
|
-
dd d
|
|
256
|
-
```
|
|
309
|
+
### `devdaily recall`
|
|
257
310
|
|
|
258
|
-
|
|
311
|
+
Search your work history — "when did I last work on X?"
|
|
259
312
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
-
|
|
313
|
+
```bash
|
|
314
|
+
devdaily recall "authentication" # Search by keyword
|
|
315
|
+
devdaily recall --file src/auth.ts # Find when a file was changed
|
|
316
|
+
devdaily recall --tag feature # Filter by tag
|
|
317
|
+
devdaily recall "login" --ai # AI summary of search results
|
|
318
|
+
devdaily recall --from 2025-01-01 --to 2025-01-31 # Date range
|
|
319
|
+
devdaily recall "PROJ-123" # Search by ticket ID
|
|
320
|
+
```
|
|
266
321
|
|
|
267
|
-
|
|
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 |
|
|
268
335
|
|
|
269
|
-
|
|
336
|
+
---
|
|
270
337
|
|
|
271
|
-
|
|
272
|
-
# Interactive setup
|
|
273
|
-
devdaily init
|
|
338
|
+
### `devdaily snapshot`
|
|
274
339
|
|
|
275
|
-
|
|
276
|
-
devdaily init --global
|
|
340
|
+
Manually capture a snapshot of your current work state.
|
|
277
341
|
|
|
278
|
-
|
|
279
|
-
devdaily init --alias
|
|
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.
|
|
280
343
|
|
|
281
|
-
|
|
282
|
-
devdaily
|
|
344
|
+
```bash
|
|
345
|
+
devdaily snapshot # Take a full snapshot
|
|
346
|
+
devdaily snapshot --light # Quick snapshot (no PRs/tickets)
|
|
347
|
+
devdaily snapshot --note "Finished auth refactor"
|
|
348
|
+
devdaily snapshot --tag milestone release
|
|
349
|
+
devdaily snapshot --list # List recent snapshots (7 days)
|
|
350
|
+
devdaily snapshot --list 30 # List last 30 days
|
|
351
|
+
devdaily snapshot --stats # Show journal storage stats
|
|
352
|
+
devdaily snapshot --prune 90 # Remove entries older than 90 days
|
|
283
353
|
```
|
|
284
354
|
|
|
285
|
-
|
|
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 |
|
|
286
369
|
|
|
287
|
-
|
|
288
|
-
- Tab completions for bash/zsh/fish
|
|
289
|
-
- Configuration file
|
|
370
|
+
---
|
|
290
371
|
|
|
291
|
-
### `devdaily
|
|
372
|
+
### `devdaily init`
|
|
292
373
|
|
|
293
|
-
|
|
374
|
+
Interactive setup wizard for aliases, completions, config, PM integration, and git hooks.
|
|
294
375
|
|
|
295
376
|
```bash
|
|
296
|
-
# Interactive
|
|
297
|
-
devdaily
|
|
298
|
-
|
|
299
|
-
#
|
|
300
|
-
devdaily
|
|
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
|
+
```
|
|
301
386
|
|
|
302
|
-
|
|
303
|
-
devdaily config --show
|
|
387
|
+
**Git hooks** (opt-in):
|
|
304
388
|
|
|
305
|
-
|
|
306
|
-
|
|
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`
|
|
307
394
|
|
|
308
|
-
|
|
309
|
-
devdaily config --reset
|
|
310
|
-
```
|
|
395
|
+
---
|
|
311
396
|
|
|
312
397
|
### `devdaily doctor`
|
|
313
398
|
|
|
314
399
|
Check system requirements and diagnose issues.
|
|
315
400
|
|
|
316
401
|
```bash
|
|
317
|
-
# Check all prerequisites
|
|
318
|
-
devdaily doctor
|
|
402
|
+
devdaily doctor # Check all prerequisites
|
|
403
|
+
devdaily doctor --fix # Attempt automatic fixes
|
|
404
|
+
```
|
|
319
405
|
|
|
320
|
-
|
|
321
|
-
|
|
406
|
+
**Checks:** Node.js version, Git, GitHub CLI, authentication, Copilot extension.
|
|
407
|
+
|
|
408
|
+
---
|
|
409
|
+
|
|
410
|
+
### `devdaily config`
|
|
411
|
+
|
|
412
|
+
Manage configuration.
|
|
322
413
|
|
|
323
|
-
|
|
324
|
-
devdaily
|
|
414
|
+
```bash
|
|
415
|
+
devdaily config # Interactive editor
|
|
416
|
+
devdaily config --show # Show current config
|
|
417
|
+
devdaily config --edit # Open in $EDITOR
|
|
418
|
+
devdaily config --path # Show config file path
|
|
419
|
+
devdaily config --reset # Reset to defaults
|
|
325
420
|
```
|
|
326
421
|
|
|
327
|
-
|
|
422
|
+
---
|
|
328
423
|
|
|
329
|
-
|
|
330
|
-
- ✅ Git installed
|
|
331
|
-
- ✅ GitHub CLI installed
|
|
332
|
-
- ✅ GitHub authentication
|
|
333
|
-
- ✅ Copilot extension installed
|
|
424
|
+
### `devdaily connect`
|
|
334
425
|
|
|
335
|
-
|
|
426
|
+
Test project management connections.
|
|
336
427
|
|
|
337
|
-
|
|
338
|
-
|
|
428
|
+
```bash
|
|
429
|
+
devdaily connect # Test current PM integration
|
|
430
|
+
devdaily connect --test # Run connection test
|
|
431
|
+
```
|
|
339
432
|
|
|
340
|
-
|
|
433
|
+
---
|
|
341
434
|
|
|
342
|
-
|
|
435
|
+
## How Auto-Snapshots Work
|
|
343
436
|
|
|
344
|
-
|
|
345
|
-
2. Categorizes it (bug, feature, docs, etc.)
|
|
346
|
-
3. Includes the context in AI prompts for better summaries
|
|
437
|
+
DevDaily captures your work state **automatically** at natural moments — you never have to think about it.
|
|
347
438
|
|
|
348
|
-
|
|
439
|
+
### When snapshots happen
|
|
349
440
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
441
|
+
| Trigger | How | What's captured |
|
|
442
|
+
| ------------------- | ----------------- | --------------------------------------------- |
|
|
443
|
+
| `devdaily standup` | Side-effect | Light snapshot (commits, branch) |
|
|
444
|
+
| `devdaily pr` | Side-effect | Light snapshot + PR context |
|
|
445
|
+
| `devdaily week` | Side-effect | Light snapshot |
|
|
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) |
|
|
353
449
|
|
|
354
|
-
|
|
450
|
+
### Disabling auto-snapshots
|
|
355
451
|
|
|
356
452
|
```bash
|
|
357
|
-
#
|
|
358
|
-
devdaily standup
|
|
453
|
+
# Per-command: skip with a flag
|
|
454
|
+
devdaily standup --no-journal
|
|
455
|
+
devdaily pr --no-journal
|
|
359
456
|
|
|
360
|
-
#
|
|
361
|
-
devdaily
|
|
362
|
-
|
|
363
|
-
|
|
457
|
+
# Globally: disable in config
|
|
458
|
+
# .devdaily.json
|
|
459
|
+
{
|
|
460
|
+
"journal": {
|
|
461
|
+
"autoSnapshot": false
|
|
462
|
+
}
|
|
463
|
+
}
|
|
364
464
|
```
|
|
365
465
|
|
|
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
|
+
---
|
|
482
|
+
|
|
366
483
|
## Configuration
|
|
367
484
|
|
|
368
|
-
DevDaily supports
|
|
485
|
+
DevDaily supports global and per-project configuration.
|
|
369
486
|
|
|
370
|
-
### Config
|
|
487
|
+
### Config file locations
|
|
371
488
|
|
|
372
|
-
|
|
373
|
-
|
|
489
|
+
| Scope | Path |
|
|
490
|
+
| ----------- | ----------------------------------------------------- |
|
|
491
|
+
| **Global** | `~/.config/devdaily/config.json` |
|
|
492
|
+
| **Local** | `.devdaily.json` in project root |
|
|
493
|
+
| **Secrets** | `.devdaily.secrets.json` (auto-added to `.gitignore`) |
|
|
374
494
|
|
|
375
|
-
|
|
495
|
+
Local config overrides global config.
|
|
496
|
+
|
|
497
|
+
### Example configuration
|
|
376
498
|
|
|
377
499
|
```json
|
|
378
500
|
{
|
|
501
|
+
"$schema": "https://raw.githubusercontent.com/hempun10/devdaily/main/schemas/devdaily.schema.json",
|
|
379
502
|
"version": 1,
|
|
503
|
+
|
|
380
504
|
"theme": {
|
|
381
505
|
"primary": "cyan",
|
|
382
506
|
"accent": "magenta"
|
|
383
507
|
},
|
|
384
|
-
|
|
385
|
-
"compactMode": false,
|
|
508
|
+
|
|
386
509
|
"output": {
|
|
387
510
|
"format": "markdown",
|
|
388
511
|
"copyToClipboard": true,
|
|
389
512
|
"showStats": true
|
|
390
513
|
},
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
"
|
|
514
|
+
|
|
515
|
+
"git": {
|
|
516
|
+
"defaultBranch": "main",
|
|
517
|
+
"excludePatterns": ["merge commit", "Merge branch"]
|
|
394
518
|
},
|
|
519
|
+
|
|
395
520
|
"standup": {
|
|
396
|
-
"defaultDays": 1
|
|
521
|
+
"defaultDays": 1,
|
|
522
|
+
"groupBy": "ticket",
|
|
523
|
+
"includeTicketLinks": true,
|
|
524
|
+
"sections": ["completed", "in-progress", "blockers"]
|
|
397
525
|
},
|
|
526
|
+
|
|
398
527
|
"pr": {
|
|
399
|
-
"defaultBase": "main"
|
|
528
|
+
"defaultBase": "main",
|
|
529
|
+
"includeDiff": true,
|
|
530
|
+
"maxDiffLines": 200,
|
|
531
|
+
"titleFormat": "conventional",
|
|
532
|
+
"includeTicketInTitle": true,
|
|
533
|
+
"autoLabels": true
|
|
400
534
|
},
|
|
401
|
-
"week": {
|
|
402
|
-
"startDay": "monday"
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
```
|
|
406
535
|
|
|
407
|
-
|
|
536
|
+
"week": {
|
|
537
|
+
"startDay": "monday",
|
|
538
|
+
"includeWeekends": false
|
|
539
|
+
},
|
|
408
540
|
|
|
409
|
-
|
|
541
|
+
"journal": {
|
|
542
|
+
"autoSnapshot": true,
|
|
543
|
+
"gitHooks": false,
|
|
544
|
+
"hooks": {
|
|
545
|
+
"postCommit": true,
|
|
546
|
+
"postCheckout": true
|
|
547
|
+
},
|
|
548
|
+
"quiet": true
|
|
549
|
+
},
|
|
410
550
|
|
|
411
|
-
```json
|
|
412
|
-
{
|
|
413
551
|
"projectManagement": {
|
|
414
|
-
|
|
415
|
-
"
|
|
416
|
-
|
|
417
|
-
// Ticket prefix for extraction from branches/commits
|
|
418
|
-
"ticketPrefix": "PROJ",
|
|
419
|
-
|
|
420
|
-
// Jira settings
|
|
421
|
-
"jira": {
|
|
422
|
-
"baseUrl": "https://yourcompany.atlassian.net",
|
|
423
|
-
"projectKey": "PROJ"
|
|
424
|
-
},
|
|
552
|
+
"tool": "github",
|
|
553
|
+
"ticketPrefix": "PROJ"
|
|
554
|
+
},
|
|
425
555
|
|
|
426
|
-
|
|
427
|
-
"
|
|
428
|
-
"
|
|
556
|
+
"notifications": {
|
|
557
|
+
"slack": {
|
|
558
|
+
"enabled": false
|
|
429
559
|
},
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
"notion": {
|
|
433
|
-
"databaseId": "your-database-id"
|
|
560
|
+
"discord": {
|
|
561
|
+
"enabled": false
|
|
434
562
|
}
|
|
435
563
|
}
|
|
436
564
|
}
|
|
437
565
|
```
|
|
438
566
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
```bash
|
|
442
|
-
# Jira
|
|
443
|
-
export JIRA_BASE_URL="https://yourcompany.atlassian.net"
|
|
444
|
-
export JIRA_EMAIL="you@company.com"
|
|
445
|
-
export JIRA_API_TOKEN="your-api-token"
|
|
446
|
-
|
|
447
|
-
# Linear
|
|
448
|
-
export LINEAR_API_KEY="lin_api_xxx"
|
|
449
|
-
|
|
450
|
-
# Notion
|
|
451
|
-
export NOTION_API_KEY="secret_xxx"
|
|
452
|
-
export NOTION_DATABASE_ID="xxx"
|
|
453
|
-
```
|
|
567
|
+
### Project management integration
|
|
454
568
|
|
|
455
|
-
|
|
569
|
+
DevDaily supports multiple PM tools for richer context in AI summaries:
|
|
456
570
|
|
|
457
|
-
|
|
571
|
+
| Tool | Config | Auth |
|
|
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` |
|
|
458
577
|
|
|
459
|
-
|
|
460
|
-
2. **Commit messages**: `fix: resolve issue PROJ-123`
|
|
461
|
-
3. **Manual input**: `devdaily pr --ticket PROJ-123`
|
|
578
|
+
Set up interactively with `devdaily init --pm` or `devdaily connect`.
|
|
462
579
|
|
|
463
|
-
|
|
580
|
+
**Ticket extraction** — DevDaily automatically finds ticket IDs from:
|
|
464
581
|
|
|
465
|
-
|
|
582
|
+
1. Branch names: `feature/PROJ-123-description`
|
|
583
|
+
2. Commit messages: `fix: resolve issue PROJ-123`
|
|
584
|
+
3. PR titles and bodies
|
|
585
|
+
4. Manual input: `--ticket PROJ-123`
|
|
466
586
|
|
|
467
|
-
|
|
468
|
-
- [PR Description Output](examples/pr-output.md)
|
|
469
|
-
- [Weekly Summary Output](examples/week-output.md)
|
|
587
|
+
### Custom PR prompt file
|
|
470
588
|
|
|
471
|
-
|
|
589
|
+
Create `.devdaily-pr-prompt.md` in your repo root to customize how AI generates PR descriptions (like `CLAUDE.md` but for PRs). DevDaily searches for this file automatically. Generate a starter with `devdaily init`.
|
|
472
590
|
|
|
473
|
-
|
|
474
|
-
2. **Extracts Context** - Parses conventional commits, issue numbers, and PR types
|
|
475
|
-
3. **AI Summarization** - Leverages GitHub Copilot CLI to generate human-readable summaries
|
|
476
|
-
4. **Professional Output** - Formats with clean terminal UI (chalk, boxen, ora)
|
|
477
|
-
5. **Auto-Copy** - Copies results to clipboard for immediate use
|
|
591
|
+
---
|
|
478
592
|
|
|
479
|
-
##
|
|
593
|
+
## Privacy & Security
|
|
480
594
|
|
|
481
|
-
|
|
595
|
+
- **All data stays local.** The work journal is stored in `~/.config/devdaily/journal/` on your machine.
|
|
596
|
+
- **No telemetry.** DevDaily does not phone home.
|
|
597
|
+
- **AI context is minimal.** Only commit messages, branch names, and diff summaries are sent to GitHub Copilot CLI. Full file contents are never shared.
|
|
598
|
+
- **Secrets are separate.** API tokens are stored in `.devdaily.secrets.json`, which is auto-added to `.gitignore`.
|
|
599
|
+
- **Opt-in features.** Git hooks, notifications, and PM integrations are all opt-in.
|
|
482
600
|
|
|
483
|
-
|
|
601
|
+
---
|
|
484
602
|
|
|
485
603
|
## Development
|
|
486
604
|
|
|
487
|
-
|
|
605
|
+
### Prerequisites
|
|
488
606
|
|
|
489
607
|
```bash
|
|
490
|
-
# Clone the repository
|
|
491
608
|
git clone https://github.com/hempun10/devdaily.git
|
|
492
609
|
cd devdaily
|
|
493
|
-
|
|
494
|
-
# Install dependencies
|
|
495
610
|
npm install
|
|
611
|
+
```
|
|
496
612
|
|
|
497
|
-
|
|
498
|
-
npm run dev
|
|
499
|
-
|
|
500
|
-
# Run tests
|
|
501
|
-
npm test
|
|
502
|
-
|
|
503
|
-
# Run tests in watch mode
|
|
504
|
-
npm test -- --watch
|
|
505
|
-
|
|
506
|
-
# Type checking
|
|
507
|
-
npm run typecheck
|
|
508
|
-
|
|
509
|
-
# Lint code
|
|
510
|
-
npm run lint
|
|
511
|
-
npm run lint:fix
|
|
512
|
-
|
|
513
|
-
# Format code
|
|
514
|
-
npm run format
|
|
613
|
+
### Common tasks
|
|
515
614
|
|
|
516
|
-
|
|
517
|
-
npm run
|
|
615
|
+
```bash
|
|
616
|
+
npm run dev # Run in development mode (tsx watch)
|
|
617
|
+
npm run build # Production build (tsup)
|
|
618
|
+
npm test # Run all tests (vitest)
|
|
619
|
+
npm run test:watch # Tests in watch mode
|
|
620
|
+
npm run test:coverage # Tests with coverage
|
|
621
|
+
npm run typecheck # TypeScript type checking
|
|
622
|
+
npm run lint # ESLint
|
|
623
|
+
npm run lint:fix # ESLint with auto-fix
|
|
624
|
+
npm run format # Prettier formatting
|
|
625
|
+
npm run format:check # Check formatting
|
|
518
626
|
```
|
|
519
627
|
|
|
520
|
-
### Project
|
|
628
|
+
### Project structure
|
|
521
629
|
|
|
522
630
|
```
|
|
523
|
-
devdaily
|
|
631
|
+
devdaily/
|
|
524
632
|
├── src/
|
|
525
|
-
│ ├──
|
|
526
|
-
│
|
|
527
|
-
│ │ ├──
|
|
528
|
-
│ │ ├──
|
|
529
|
-
│ │ ├──
|
|
530
|
-
│ │ ├──
|
|
531
|
-
│ │ ├──
|
|
532
|
-
│ │
|
|
533
|
-
│ ├──
|
|
534
|
-
│ │ ├──
|
|
535
|
-
│ │
|
|
536
|
-
│ ├──
|
|
537
|
-
│ │
|
|
538
|
-
│
|
|
539
|
-
│ │ ├──
|
|
540
|
-
│ │ ├──
|
|
541
|
-
│ │ ├──
|
|
542
|
-
│ │
|
|
543
|
-
│ ├──
|
|
544
|
-
│ │ ├──
|
|
545
|
-
│ │
|
|
546
|
-
│ ├──
|
|
547
|
-
│ │ ├──
|
|
548
|
-
│ │
|
|
549
|
-
│ ├──
|
|
550
|
-
│
|
|
551
|
-
├──
|
|
552
|
-
|
|
553
|
-
├──
|
|
554
|
-
|
|
633
|
+
│ ├── index.ts # CLI entry point
|
|
634
|
+
│ ├── commands/ # CLI command implementations
|
|
635
|
+
│ │ ├── standup.ts # Standup generator
|
|
636
|
+
│ │ ├── pr.ts # PR description generator
|
|
637
|
+
│ │ ├── week.ts # Weekly summary
|
|
638
|
+
│ │ ├── context.ts # Context recovery ("where did I leave off?")
|
|
639
|
+
│ │ ├── recall.ts # Work history search
|
|
640
|
+
│ │ ├── snapshot.ts # Manual snapshot capture
|
|
641
|
+
│ │ ├── dash.ts # Interactive TUI dashboard
|
|
642
|
+
│ │ ├── init.ts # Setup wizard
|
|
643
|
+
│ │ ├── config.ts # Configuration management
|
|
644
|
+
│ │ ├── doctor.ts # Prerequisite checker
|
|
645
|
+
│ │ └── connect.ts # PM connection tester
|
|
646
|
+
│ ├── core/ # Core business logic
|
|
647
|
+
│ │ ├── git-analyzer.ts # Git operations (commits, branches, diffs)
|
|
648
|
+
│ │ ├── copilot.ts # GitHub Copilot CLI integration
|
|
649
|
+
│ │ ├── context-analyzer.ts # Work context extraction & categorization
|
|
650
|
+
│ │ ├── standup-context.ts # Rich standup context builder
|
|
651
|
+
│ │ ├── snapshot-builder.ts # Repo state capture → WorkSnapshot
|
|
652
|
+
│ │ ├── work-journal.ts # Persistent local storage layer
|
|
653
|
+
│ │ ├── auto-snapshot.ts # Side-effect snapshots & git hook utilities
|
|
654
|
+
│ │ ├── project-management.ts # PM tool abstraction (Jira, Linear, Notion, GitHub)
|
|
655
|
+
│ │ ├── pm-errors.ts # PM error handling & diagnostics
|
|
656
|
+
│ │ ├── github.ts # GitHub API client
|
|
657
|
+
│ │ ├── github-repo.ts # GitHub repo metadata & PR creation
|
|
658
|
+
│ │ ├── pr-template.ts # PR template detection & parsing
|
|
659
|
+
│ │ ├── pr-prompt.ts # Custom PR prompt file support
|
|
660
|
+
│ │ └── notifications.ts # Slack/Discord webhook integration
|
|
661
|
+
│ ├── config/ # Configuration system
|
|
662
|
+
│ │ ├── schema.ts # Zod schema (type-safe config)
|
|
663
|
+
│ │ └── index.ts # Config manager (global + local + secrets)
|
|
664
|
+
│ ├── ui/ # Terminal UI system
|
|
665
|
+
│ │ ├── renderer.ts # Main UI rendering (boxes, sections, stats)
|
|
666
|
+
│ │ ├── colors.ts # Theme-aware color system
|
|
667
|
+
│ │ ├── ascii.ts # ASCII art and symbols
|
|
668
|
+
│ │ ├── help.ts # Help screen rendering
|
|
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
|
|
555
722
|
```
|
|
556
723
|
|
|
557
|
-
|
|
724
|
+
### Tech stack
|
|
725
|
+
|
|
726
|
+
| Layer | Technology |
|
|
727
|
+
| ----------------------- | ----------------------------- |
|
|
728
|
+
| **Language** | TypeScript (strict mode) |
|
|
729
|
+
| **CLI framework** | Commander.js |
|
|
730
|
+
| **Git operations** | simple-git |
|
|
731
|
+
| **AI integration** | GitHub Copilot CLI via execa |
|
|
732
|
+
| **Interactive prompts** | Inquirer.js |
|
|
733
|
+
| **Terminal UI** | chalk, picocolors, boxen, ora |
|
|
734
|
+
| **Clipboard** | clipboardy |
|
|
735
|
+
| **Config validation** | Zod |
|
|
736
|
+
| **Testing** | Vitest |
|
|
737
|
+
| **Build** | tsup (ESM output) |
|
|
738
|
+
| **Linting** | ESLint + Prettier |
|
|
739
|
+
| **Commit linting** | commitlint + Husky |
|
|
558
740
|
|
|
559
|
-
|
|
560
|
-
- **Commander.js** - CLI framework
|
|
561
|
-
- **simple-git** - Git operations
|
|
562
|
-
- **execa** - Subprocess execution for Copilot CLI
|
|
563
|
-
- **inquirer** - Interactive prompts
|
|
564
|
-
- **chalk** - Terminal styling
|
|
565
|
-
- **boxen** - Terminal boxes
|
|
566
|
-
- **ora** - Loading spinners
|
|
567
|
-
- **clipboardy** - Clipboard operations
|
|
741
|
+
---
|
|
568
742
|
|
|
569
|
-
##
|
|
743
|
+
## Testing
|
|
570
744
|
|
|
571
|
-
**
|
|
572
|
-
A: No, DevDaily AI requires GitHub Copilot CLI which needs an internet connection for AI summaries.
|
|
745
|
+
DevDaily has a comprehensive test suite with **654 tests across 12 test files**.
|
|
573
746
|
|
|
574
|
-
|
|
575
|
-
|
|
747
|
+
```bash
|
|
748
|
+
# Run all tests
|
|
749
|
+
npm test
|
|
576
750
|
|
|
577
|
-
|
|
578
|
-
|
|
751
|
+
# Run specific test file
|
|
752
|
+
npx vitest run tests/auto-snapshot.test.ts
|
|
579
753
|
|
|
580
|
-
|
|
581
|
-
|
|
754
|
+
# Watch mode
|
|
755
|
+
npm run test:watch
|
|
582
756
|
|
|
583
|
-
|
|
584
|
-
|
|
757
|
+
# With coverage
|
|
758
|
+
npm run test:coverage
|
|
759
|
+
```
|
|
585
760
|
|
|
586
|
-
|
|
587
|
-
|
|
761
|
+
### Test coverage by module
|
|
762
|
+
|
|
763
|
+
| Module | Tests | Coverage Area |
|
|
764
|
+
| -------------------- | ----- | ------------------------------------------------------ |
|
|
765
|
+
| `project-management` | 130 | Jira, Linear, Notion, GitHub Issues integration |
|
|
766
|
+
| `pr-creation` | 123 | PR generation, templates, interactive workflows |
|
|
767
|
+
| `work-journal` | 123 | Persistent storage, search, cross-project, merge logic |
|
|
768
|
+
| `auto-snapshot` | 74 | Side-effect snapshots, git hooks, install/remove |
|
|
769
|
+
| `standup-context` | 70 | Context building, formatting, enrichment |
|
|
770
|
+
| `copilot` | 38 | Copilot CLI integration, retries, error handling |
|
|
771
|
+
| `pr-prompt` | 26 | Custom prompt file loading and merging |
|
|
772
|
+
| `pr-template` | 25 | Template detection and section parsing |
|
|
773
|
+
| `context-analyzer` | 22 | Ticket extraction, work categorization |
|
|
774
|
+
| `git-analyzer` | 15 | Git operations, branch detection |
|
|
775
|
+
| `commitlint` | 6 | Conventional commit parsing |
|
|
776
|
+
| `ui` | 2 | UI rendering |
|
|
588
777
|
|
|
589
|
-
|
|
778
|
+
---
|
|
590
779
|
|
|
591
|
-
|
|
780
|
+
## FAQ
|
|
592
781
|
|
|
593
|
-
|
|
782
|
+
**Q: Does this work offline?**
|
|
783
|
+
A: Git analysis, snapshots, journal, and context recovery work offline. AI text generation requires GitHub Copilot CLI (internet connection). Use `--raw-context` to get structured data without AI.
|
|
594
784
|
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
```
|
|
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.
|
|
598
787
|
|
|
599
|
-
|
|
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.
|
|
600
790
|
|
|
601
|
-
|
|
791
|
+
**Q: Can I use this with monorepos?**
|
|
792
|
+
A: Yes. DevDaily analyzes the git history of your current directory. Use `--project` to track multiple sub-projects, and `--all-projects` for cross-project summaries.
|
|
602
793
|
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
```
|
|
794
|
+
**Q: What about conventional commits?**
|
|
795
|
+
A: DevDaily parses conventional commits automatically. PR titles are generated with proper `feat:`, `fix:`, `chore:` prefixes. Work is categorized by type.
|
|
606
796
|
|
|
607
|
-
|
|
797
|
+
**Q: How do I clean up old journal data?**
|
|
798
|
+
A: Run `devdaily snapshot --prune 90` to remove entries older than 90 days. Use `devdaily snapshot --stats` to see storage usage.
|
|
608
799
|
|
|
609
|
-
|
|
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.
|
|
610
802
|
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
cd /path/to/your/git/repo
|
|
615
|
-
```
|
|
803
|
+
---
|
|
804
|
+
|
|
805
|
+
## Troubleshooting
|
|
616
806
|
|
|
617
|
-
###
|
|
807
|
+
### Common issues
|
|
618
808
|
|
|
619
|
-
|
|
809
|
+
| Problem | Solution |
|
|
810
|
+
| ------------------------------ | ------------------------------------------------------------------------ |
|
|
811
|
+
| `command not found: devdaily` | `npm install -g devdaily-ai` |
|
|
812
|
+
| `GitHub Copilot CLI not found` | `gh extension install github/gh-copilot` |
|
|
813
|
+
| `Not a git repository` | Run inside a git repo, or use `--all-projects` for journal-only commands |
|
|
814
|
+
| `No commits found` | Make sure you have commits: `git log --oneline` |
|
|
815
|
+
| PM tickets not appearing | Run `devdaily connect --test` to diagnose |
|
|
816
|
+
|
|
817
|
+
### Diagnostics
|
|
620
818
|
|
|
621
819
|
```bash
|
|
622
|
-
|
|
820
|
+
# Full system check
|
|
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
|
|
623
829
|
```
|
|
624
830
|
|
|
625
|
-
|
|
831
|
+
---
|
|
626
832
|
|
|
627
833
|
## Roadmap
|
|
628
834
|
|
|
629
|
-
- [
|
|
630
|
-
- [
|
|
631
|
-
- [
|
|
632
|
-
- [
|
|
633
|
-
- [
|
|
634
|
-
- [
|
|
835
|
+
- [x] Standup, PR, and weekly summary generation
|
|
836
|
+
- [x] GitHub Issues, Jira, Linear, Notion integration
|
|
837
|
+
- [x] PR template detection and auto-fill
|
|
838
|
+
- [x] Interactive PR workflow (labels, reviewers, assignees)
|
|
839
|
+
- [x] Persistent work journal and snapshots
|
|
840
|
+
- [x] Context recovery (`devdaily context`)
|
|
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
|
|
635
847
|
- [ ] VS Code extension
|
|
848
|
+
- [ ] Team collaboration features
|
|
849
|
+
- [ ] Analytics and impact tracking dashboard
|
|
850
|
+
- [ ] Scheduled auto-standup (cron / launchd)
|
|
851
|
+
|
|
852
|
+
---
|
|
636
853
|
|
|
637
854
|
## Contributing
|
|
638
855
|
|
|
639
856
|
We welcome contributions! See [CONTRIBUTING.md](docs/CONTRIBUTING.md) for guidelines.
|
|
640
857
|
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
858
|
+
```bash
|
|
859
|
+
git clone https://github.com/hempun10/devdaily.git
|
|
860
|
+
cd devdaily
|
|
861
|
+
npm install
|
|
862
|
+
npm test # Make sure everything passes
|
|
863
|
+
npm run dev # Start developing
|
|
864
|
+
```
|
|
646
865
|
|
|
647
|
-
|
|
866
|
+
---
|
|
648
867
|
|
|
649
|
-
|
|
868
|
+
## License
|
|
650
869
|
|
|
651
|
-
|
|
652
|
-
- terminal.shop for UI inspiration
|
|
653
|
-
- The awesome TypeScript community
|
|
870
|
+
MIT © [Hem Pun](https://github.com/hempun10)
|
|
654
871
|
|
|
655
872
|
---
|
|
656
873
|
|
|
657
874
|
<div align="center">
|
|
658
875
|
|
|
659
|
-
**[⬆
|
|
876
|
+
**[⬆ Back to top](#devdaily-ai)**
|
|
660
877
|
|
|
661
878
|
Made with ❤️ by developers, for developers
|
|
662
879
|
|