daily-focus 0.1.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/LICENSE +21 -0
- package/README.md +170 -0
- package/SETUP.md +501 -0
- package/dist/audit-4AUZVELT.js +215 -0
- package/dist/chunk-2PLWVW5T.js +987 -0
- package/dist/chunk-6VWWJZKJ.js +27 -0
- package/dist/chunk-EXGTFXNV.js +77 -0
- package/dist/chunk-G4K24I4M.js +425 -0
- package/dist/chunk-NDWZUZJE.js +179 -0
- package/dist/chunk-QKT2FAB5.js +132 -0
- package/dist/chunk-V2UN3JYL.js +140 -0
- package/dist/cli.js +203 -0
- package/dist/init-ZJCI2723.js +122 -0
- package/dist/sample-M7WNKQOV.js +7 -0
- package/dist/seed-7DIDKXT7.js +50 -0
- package/dist/server-B4FWZHS2.js +4814 -0
- package/dist/service-ILBMIZB7.js +240 -0
- package/package.json +66 -0
- package/prompts/README.md +122 -0
- package/prompts/assistant.md +62 -0
- package/prompts/morning-brief-personal.md +442 -0
- package/prompts/morning-brief-work.md +630 -0
- package/public/app.js +5058 -0
- package/public/index.html +36 -0
- package/public/style.css +2515 -0
- package/schema/items.schema.json +99 -0
- package/tools/dfcal/Info.plist +16 -0
- package/tools/dfcal/build.sh +52 -0
- package/tools/dfcal/main.swift +133 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Thomas Watson
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Daily Focus
|
|
2
|
+
|
|
3
|
+
A personal dashboard for deciding what to work on today. Keep it in a pinned tab
|
|
4
|
+
for your priorities, meetings, open pull requests, and Jira tickets.
|
|
5
|
+
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
*The Today tab with fictional sample data.*
|
|
9
|
+
|
|
10
|
+
A morning agent gathers updates from your connected tools and writes a short brief.
|
|
11
|
+
You set the objective; the agent helps you choose work that moves it forward.
|
|
12
|
+
Mark an item done, snooze it, or leave a note, and the next brief takes that into
|
|
13
|
+
account. GitHub and Jira boards refresh throughout the day.
|
|
14
|
+
|
|
15
|
+
## Try it
|
|
16
|
+
|
|
17
|
+
You'll need Node.js 22.18 or newer. Node 24 is recommended.
|
|
18
|
+
|
|
19
|
+
```sh
|
|
20
|
+
npx daily-focus --demo
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
That opens the dashboard on sample data in a throwaway store, so you can explore
|
|
24
|
+
without connecting anything. Stop it with Ctrl+C, and the store goes with it.
|
|
25
|
+
|
|
26
|
+
To use your own data:
|
|
27
|
+
|
|
28
|
+
```sh
|
|
29
|
+
npx daily-focus
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Until the first brief exists, the Today tab walks you through the rest: what it
|
|
33
|
+
briefs, your objective, which coding-agent CLI writes the brief (Claude Code or
|
|
34
|
+
Codex), and where it should look. Everything stays on the settings page afterwards.
|
|
35
|
+
To keep it running in the background on macOS, install it and run it as a service:
|
|
36
|
+
|
|
37
|
+
```sh
|
|
38
|
+
npm install -g daily-focus
|
|
39
|
+
daily-focus service
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Or, on a Mac, let the menu bar app keep it running: it starts the dashboard at login,
|
|
43
|
+
shows the brief's age at a glance, and tells you when a new brief arrives. It carries
|
|
44
|
+
everything it needs, Node.js included. See
|
|
45
|
+
[SETUP.md](SETUP.md#keep-the-dashboard-running).
|
|
46
|
+
|
|
47
|
+
[SETUP.md](SETUP.md) covers each step, the integrations and every setting. The
|
|
48
|
+
dashboard runs locally; nothing about your day leaves your machine except through
|
|
49
|
+
the CLI you choose.
|
|
50
|
+
|
|
51
|
+
## Your day at a glance
|
|
52
|
+
|
|
53
|
+
The **Today** tab puts your objective and top priorities beside your agenda.
|
|
54
|
+
It shows meeting conflicts, free time for focused work, and how long it has been
|
|
55
|
+
since you completed something that advanced your objective.
|
|
56
|
+
|
|
57
|
+
- Mark tasks **Done** when you've handled them.
|
|
58
|
+
- **Snooze** an item until a date, or **Dismiss** it if it doesn't need attention.
|
|
59
|
+
- Leave a **Note** for the next brief, such as "already replied on Slack".
|
|
60
|
+
- Press **f** for focus mode, which shows your top item and agenda.
|
|
61
|
+
- Press **p** on an item to start a focus timer. Its countdown appears in the tab
|
|
62
|
+
title, and the session becomes part of the next brief's context.
|
|
63
|
+
|
|
64
|
+
The timer keeps counting after its target time. On macOS, it ends a session when
|
|
65
|
+
you've been away from the machine, excluding the time you were away. On systems
|
|
66
|
+
without idle detection, a two-hour limit caps the recorded session.
|
|
67
|
+
|
|
68
|
+
You can undo item actions except notes. The page updates as new data arrives, and
|
|
69
|
+
the theme button switches between system, light, and dark mode.
|
|
70
|
+
|
|
71
|
+
## The pull request board
|
|
72
|
+
|
|
73
|
+
The second tab shows your open pull requests in seven buckets:
|
|
74
|
+
|
|
75
|
+
| Bucket | What it means |
|
|
76
|
+
|---|---|
|
|
77
|
+
| Waiting on you | A failure, conflict, requested change, outdated branch, or new activity needs your attention. |
|
|
78
|
+
| Ready to merge | Required reviews and checks are satisfied, and GitHub allows the merge. |
|
|
79
|
+
| Waiting on reviewers | A review is still needed. The board flags when it may be time to ask. |
|
|
80
|
+
| Waiting on merge gate | A check you've configured as a merge gate is pending. |
|
|
81
|
+
| Merge blocked by GitHub | GitHub reports a policy block without an unfinished check to explain it. |
|
|
82
|
+
| Waiting on checks | Checks are running, or GitHub reports an unstable merge. |
|
|
83
|
+
| Drafts | Pull requests you haven't marked ready for review. |
|
|
84
|
+
|
|
85
|
+
Park a pull request until a date, leave a note, or click **Nudged** after asking
|
|
86
|
+
for a review. Nudged records a note; it doesn't send a message. Completing a task
|
|
87
|
+
about a pull request in the brief doesn't remove that pull request from the board.
|
|
88
|
+
|
|
89
|
+
Cancelled checks appear as "cancelled, no verdict" rather than failures.
|
|
90
|
+
When a check is rerun, the board uses its newest workflow run or attempt.
|
|
91
|
+
|
|
92
|
+
## The Jira ticket board
|
|
93
|
+
|
|
94
|
+
The third tab helps you spot statuses that may need updating. Its **Out of sync**
|
|
95
|
+
view has three buckets:
|
|
96
|
+
|
|
97
|
+
| Bucket | What it means |
|
|
98
|
+
|---|---|
|
|
99
|
+
| No open pull requests left | Linked pull requests are closed, but the ticket isn't done. Check whether any work remains. |
|
|
100
|
+
| Work has started, the ticket has not | A pull request is open while the ticket still has a not-started status. |
|
|
101
|
+
| In flight with nothing linked | The ticket is in progress with no linked pull request. This can be fine for work that isn't code. |
|
|
102
|
+
|
|
103
|
+
Draft pull requests count as open. Closed pull requests don't prove that a ticket
|
|
104
|
+
is finished, so the board leaves that decision to you. Park a reminder or leave a
|
|
105
|
+
note when there's more work planned.
|
|
106
|
+
|
|
107
|
+
Switch to **Working on** to see your in-progress tickets grouped by status,
|
|
108
|
+
including ones that also need a status check. You can narrow this view in
|
|
109
|
+
[SETUP.md](SETUP.md#jira).
|
|
110
|
+
|
|
111
|
+
**Clicking a ticket's status changes it in Jira.** The menu lists statuses seen in
|
|
112
|
+
your projects; Jira may refuse a move that your workflow doesn't allow. Make
|
|
113
|
+
transitions that need extra fields in Jira itself. Undo requests a transition back,
|
|
114
|
+
so both moves remain in Jira's history.
|
|
115
|
+
|
|
116
|
+
## Ask the assistant
|
|
117
|
+
|
|
118
|
+
Some items are a question away from being handled: is this review comment right,
|
|
119
|
+
why is CI red, what does this thread actually want from me. With
|
|
120
|
+
`DAILY_FOCUS_ASSISTANT` set to `claude` or `codex`, every item's panel gets an
|
|
121
|
+
assistant that runs that CLI headless against the item, with quick actions for the
|
|
122
|
+
common asks and a field for anything else. Click a card to open its panel, where its
|
|
123
|
+
notes live too; the reply streams in there, and you can follow up in the same
|
|
124
|
+
conversation. The panel stays on the item it was opened for while you move through
|
|
125
|
+
the list.
|
|
126
|
+
|
|
127
|
+
It reads and drafts, and that is all. An email reply is created as a Gmail draft on
|
|
128
|
+
the thread, so it is waiting there when you open the mail; a reply to a reviewer is
|
|
129
|
+
handed back as text for you to post. It never sends, posts, or edits a file, and it
|
|
130
|
+
has no checkout: fixing conflicts or a build is work for a real coding session, and
|
|
131
|
+
this is for the questions you would otherwise answer by opening six tabs.
|
|
132
|
+
|
|
133
|
+
## The morning agent
|
|
134
|
+
|
|
135
|
+
With `DAILY_FOCUS_AGENT` set to `codex` or `claude`, the dashboard runs the morning
|
|
136
|
+
agent itself through that CLI: at 07:00 each scheduled morning, or the time you set
|
|
137
|
+
in `DAILY_FOCUS_AGENT_AT`, and from the refresh icon beside the brief's age when the
|
|
138
|
+
morning's brief is out of date by lunch. Each run keeps what you have marked done,
|
|
139
|
+
snoozed or noted.
|
|
140
|
+
|
|
141
|
+
Every run is recorded. Click "updated … ago" to open the latest: its report says what
|
|
142
|
+
it wrote and what it could not reach, its working commentary is folded away beneath,
|
|
143
|
+
and you can ask it why it did what it did, or to look again, in the same session. Earlier runs are folded away below. See
|
|
144
|
+
[SETUP.md](SETUP.md#connect-your-morning-agent).
|
|
145
|
+
|
|
146
|
+
## Keyboard shortcuts
|
|
147
|
+
|
|
148
|
+
Press **?** in the dashboard to see the shortcuts.
|
|
149
|
+
|
|
150
|
+
| Key | Action |
|
|
151
|
+
|---|---|
|
|
152
|
+
| `1` / `2` / `3` | Today / pull requests / Jira tickets |
|
|
153
|
+
| `j` / `k` | Next / previous item |
|
|
154
|
+
| `e` | Mark done |
|
|
155
|
+
| `s` | Snooze until tomorrow |
|
|
156
|
+
| `x` | Dismiss |
|
|
157
|
+
| `n` | Open the panel, ready for a note |
|
|
158
|
+
| `a` | Open the panel, ready to ask the assistant |
|
|
159
|
+
| `o` | Open the source link |
|
|
160
|
+
| `u` | Undo the last action |
|
|
161
|
+
| `f` | Toggle focus mode |
|
|
162
|
+
| `p` | Start / stop a focus session |
|
|
163
|
+
| `r` | Refresh the current board |
|
|
164
|
+
| `w` | Switch Jira views |
|
|
165
|
+
| `,` | Settings |
|
|
166
|
+
|
|
167
|
+
## Where to go next
|
|
168
|
+
|
|
169
|
+
- [Set up your dashboard](SETUP.md), including accounts, calendar, and the morning agent.
|
|
170
|
+
- [Contribute](CONTRIBUTING.md), with development commands, a code map, and API reference.
|