@shardflux/menubar-darwin 0.2.0 → 0.3.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/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0
4
+
5
+ - “Try it once” reaches its result and Continue when a Codex Cloud conversation finishes its turn; Claude keeps its existing finish detection too.
6
+
7
+ - First run: a Codex Connect whose enable fails shows the error and Retry instead of a spinner that never ends, and a browser tab that is still "Untitled" is not counted as a screen the agent tested.
8
+
9
+ - Sign-in shows "By continuing, you agree to our Terms of Service and acknowledge our Privacy Policy" under its two buttons, with both links; either button is the agreement (the app passes `--accept-terms`). Continue in browser names this Mac on the sign-in page ("Shardflux for Mac on <computer>").
10
+
11
+ - Move the launcher by dragging its background or edges, like Spotlight. It reopens where you left it on each display and always stays fully on screen, including after a display change. Settings → Launcher → **Reset launcher position** returns it to the default; double-clicking the background resets the current display.
12
+ - Capture part of the screen from the launcher: the camera button or **⇧⌘S** hides the bar and dims every display; drag across a region to attach it at native resolution. **Esc** cancels the capture and returns to the bar with your text and attachments; a second **Esc** closes the bar. Up to five captures appear as thumbnail chips with × to remove and a preview on hover or click. The first capture asks macOS for Screen Recording; without it, the launcher shows one line with **Open System Settings**.
13
+ - Captures stay in memory: ScreenCaptureKit returns the image, the PNG goes to `shard agents new --image -` on standard input and from there into the conversation VM. No file, temporary file or clipboard is used on the Mac. Requires CLI 0.15.0.
14
+
15
+ - First run: sign in to Shardflux from the window (Continue in browser, which confirms a code in the browser, or Continue with ChatGPT), connect Claude and/or Codex on cards checked live (Codex counts as connected with its remote device; a failed or stuck one offers Retry, which restarts it once), then try it once hands-on: copy the task, open the launcher, paste it, pick Daylight (sample) and watch the agent's own computer test it, then your own project. Settings → Agents uses the same cards, with T3 Code shown when it is installed. Completing each step answers with a short spring and a light trackpad tick (checks that draw on, keys that go down, a connected glow that blooms); with Reduce Motion every transition is a cross-fade. Resume any time from Settings → Show onboarding.
16
+
17
+ - Settings links use the standard square-and-arrow external-link symbol.
18
+
19
+ - Open update checks and recovery in Settings → Updates. Use purpose-specific project and file pickers that start in the current project. Keep launcher projects injectable for the shared catalog.
20
+
21
+ - Use concise, grouped native notifications with Open conversation, Sign in, or Review/Deny actions. Approval notices open the same scoped panels; conversation notices use the CLI open target.
22
+
23
+ - Replace credential NSAlert with a scoped native approval panel. Keep future auto-approval and saved sign-in consent separate; report a failed remembered-login save after successful fulfillment without retrying the approval.
24
+
25
+ - Move preferences into a standard macOS Settings window (Cmd-Comma): Account, General, Agents, Launcher, Notifications, Updates and About. Keep only Settings, Check for updates and Quit in the overflow, and move the one-time shortcut hint out of the launcher. Read account, plan, usage and spend metadata; show installed CLI/menu/SDK versions and preserve shortcut/profile/notification preferences. Keep missing agent connection metadata explicit. Add native template/app icon families and a quieter two-row launcher.
26
+
27
+ - Simplify the menu to one-line live conversations, collapsed done sessions, conditional approval cards and one overflow menu.
28
+ - Open the same floating launcher from New conversation (⌘N) or a configurable global Option-Shift-Space shortcut, with conflict checks.
29
+ - Require a task and project; remember the app and project, detect readable frontmost project context, fuzzy-search projects/live conversations, and add text-file, branch or clipboard-link context. Cmd-Enter starts and Esc closes.
30
+ - Open conversations through the CLI-selected app without a terminal. A failed open can be retried without starting another conversation.
31
+
3
32
  ## 0.2.0
4
33
 
5
34
  - Own the conversation device worker and show Allow once, Always for this project and Deny notification actions. Outside-worktree access asks separately.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Shardflux menu bar for macOS
2
2
 
3
- The native app payload for `shard menubar` (CLI 0.14.0+), version **0.2.0**. macOS 14+, Apple Silicon and Intel.
3
+ The native app payload for `shard menubar` (CLI 0.15.0+), version **0.3.0**. macOS 14+, Apple Silicon and Intel.
4
4
  Install once with `npm i -g shardflux`, then run `shard` or `shard ./` on a project. The CLI installs the app in
5
5
  `~/Applications/Shardflux.app` and starts it automatically on macOS the first time `shard` runs, with launch at login enabled.
6
6
 
@@ -9,8 +9,8 @@ shard menubar status --json
9
9
  shard menubar stop
10
10
  ```
11
11
 
12
- The menu shows project sessions, opens them in your remembered app and notifies when an agent needs you.
13
- It reads the CLI's saved profile and project key; enable notifications in the menu. `shard menubar stop` turns
12
+ The menu shows live conversations in one-line rows. Click a row to open it; hover or right-click to archive it. Finished conversations collapse under **N done**. The **⋯** menu contains **Settings…**, **Check for updates** and **Quit**. A dot marks an available update.
13
+ It reads the CLI's saved profile and project key; enable notifications in Settings. `shard menubar stop` turns
14
14
  it off, including launch at login.
15
15
  The npm package is a universal ad-hoc signed app.
16
16
  Read [Cloud agents](https://docs.shardflux.dev/guides/cloud-agents#keep-agents-in-the-menu-bar).
@@ -18,16 +18,37 @@ Read [Cloud agents](https://docs.shardflux.dev/guides/cloud-agents#keep-agents-i
18
18
 
19
19
  ## Credential approvals (0.1.0+)
20
20
 
21
- The menu bar app shows pending browser login requests. Choose Allow once, Always for this project or Deny,
22
- and select a vault item. Remember for unattended use stores the selected login for fills while your laptop is away;
23
- the workspace relay renews automatically while its issuing principal stays authorized.
21
+ The menu bar app shows pending browser login requests. In 0.3.0, choose Review to select your vault and login item, then Allow login or Deny. Choose **Ask every time**, **Allow for this project**, or **Allow on my machine (all projects)**. Machine permission applies to this account and profile; a saved project choice takes precedence.
22
+ **Remember for unattended sign-in** is off by default. It saves only the requested fields, encrypted, for the current conversation, project template or machine template according to the selected scope. The scoped API must be available for conversation and machine storage. The workspace relay renews automatically while its issuing principal stays authorized.
24
23
 
25
24
  Vault fills: sent end to end from your vault to the workspace; Shardflux only relays encrypted bytes.
26
25
  Remembered credentials: stored encrypted with AWS KMS and filled straight into the page; agents never see it, and every use is logged.
27
26
 
28
27
  ## Conversation device tools (0.2.0+)
29
28
 
29
+ In 0.3.0, Review opens a native approval panel with the exact command, file paths or port mapping. Outside-conversation access only offers Allow once. Notifications open the same panel; they do not bypass review.
30
+
30
31
  The background helper runs approved device commands, transfers files, opens localhost ports and mirrors your cloud
31
- conversation transcripts. Choose **Allow once**, **Always for this project** or **Deny** in the notification.
32
+ conversation transcripts. Open **Review** from the notification, then choose **Allow once**, **Always for this project** or **Deny** in the panel.
32
33
  Paths outside a conversation’s local worktree ask separately. When an ACP application is connected, its own
33
34
  permission prompt handles the request. Project grants live in `~/.config/shardflux/device-grants.json`.
35
+
36
+ ## New conversation (0.3.0+, CLI 0.15.0+)
37
+
38
+ Press **Option-Shift-Space** from any app, or choose **New conversation** in the menu (⌘N). In the floating launcher, describe what the agent should do, choose a project and Claude or Codex, then press **⌘Enter**. Both the task and project are required. Your task becomes the conversation's first user-authored message.
39
+
40
+ The launcher remembers the agent and last project. It uses the frontmost app's working folder when macOS exposes an unambiguous folder without extra permission. Otherwise it keeps the last project. **Tab** searches recent local projects or opens **Choose folder…**. Typing also searches live conversations; use the arrow keys and Enter to open a match. Add up to five small text files, branch context or a clipboard link through **+**, or drop text files into the panel. These become text context in the first message. **Esc** closes the panel and returns focus.
41
+
42
+ Show the agent what you see: click the camera button or press **⇧⌘S**, then drag across any part of any display. The capture is attached at native resolution as a thumbnail chip; hover or click it to preview, × removes it, and up to five fit. **Esc** during a capture returns to the launcher with your text and attachments; a second **Esc** closes it. The first capture asks macOS for Screen Recording; if it is off, the launcher shows **Open System Settings**. Captures stay in memory on your Mac and go straight into the conversation's VM, where Claude and Codex open them.
43
+
44
+ Drag the launcher by its background to put it anywhere. It reopens there on each display and always stays fully on screen. **Settings → Launcher → Reset launcher position**, or a double-click on its background, brings it back to the default spot.
45
+
46
+ Open the standard macOS **Settings** window from **⋯ → Settings…** or **⌘,**. **Account** shows your account, plan and current-period usage. **General** contains the profile, launch at login, command center and archive recovery. **Agents** shows available sign-in and connection metadata. **Launcher** contains the shortcut recorder, conflict notice, project-detection preference and **Reset launcher position**. **Notifications** controls waiting and approval alerts with the macOS permission state. **Updates** shows installed versions and one update action; **About** has documentation and support links. Missing server metadata is shown as unavailable, never inferred from saved credentials.
47
+
48
+ The app checks readable shortcut preferences and uses macOS hotkey registration, without Accessibility permission. It avoids the standard Spotlight, input-source, desktop assistant and 1Password combinations; if Option-Shift-Space is taken, it tries Control-Shift-Space, then Control-Option-Shift-Space.
49
+
50
+ Settings uses the Shardflux mark beside your account. Claude and Codex icons come from the installed apps through macOS, matching your Dock. If no app is installed, the app uses an unmodified official publisher mark. The same icons appear in conversation rows, the launcher and conversation notification attachments.
51
+
52
+ This uses `shard agents new --app claude|codex --path <folder> --prompt-file <file> [--image -] --json` (captures as PNG on standard input, CLI 0.15.0+), then the same `shard agents open <workspace> --in auto --json` path as session rows. The CLI chooses the destination. Progress and errors stay in the launcher; **Open created conversation** retries an existing creation. The menu is optional: both CLI commands work independently.
53
+
54
+ On macOS 26, the menu, launcher and approval panels use native Liquid Glass; Settings uses native translucent materials and unified toolbar chrome. macOS 14/15 keeps live frosted materials. Reduce Transparency and Increase Contrast select solid backgrounds. See the repository’s `apps/menubar/GLASS.md` for the shared onboarding integration API and build requirements.
@@ -6,9 +6,9 @@
6
6
  <key>CFBundleDisplayName</key><string>Shardflux</string>
7
7
  <key>CFBundleExecutable</key><string>ShardfluxMenuBar</string>
8
8
  <key>CFBundlePackageType</key><string>APPL</string>
9
- <key>CFBundleShortVersionString</key><string>0.2.0</string>
10
- <key>CFBundleVersion</key><string>0.2.0</string>
11
- <key>CFBundleIconFile</key><string>AppIcon.png</string>
9
+ <key>CFBundleShortVersionString</key><string>0.3.0</string>
10
+ <key>CFBundleVersion</key><string>0.3.0</string>
11
+ <key>CFBundleIconFile</key><string>AppIcon.icns</string>
12
12
  <key>LSMinimumSystemVersion</key><string>14.0</string>
13
13
  <key>LSUIElement</key><true/>
14
14
  <key>NSHighResolutionCapable</key><true/>
@@ -0,0 +1,93 @@
1
+ Copyright 2023 The Funnel Project Authors (https://github.com/Dicotype/Funnel)
2
+
3
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
4
+ This license is copied below, and is also available with a FAQ at:
5
+ http://scripts.sil.org/OFL
6
+
7
+
8
+ -----------------------------------------------------------
9
+ SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
10
+ -----------------------------------------------------------
11
+
12
+ PREAMBLE
13
+ The goals of the Open Font License (OFL) are to stimulate worldwide
14
+ development of collaborative font projects, to support the font creation
15
+ efforts of academic and linguistic communities, and to provide a free and
16
+ open framework in which fonts may be shared and improved in partnership
17
+ with others.
18
+
19
+ The OFL allows the licensed fonts to be used, studied, modified and
20
+ redistributed freely as long as they are not sold by themselves. The
21
+ fonts, including any derivative works, can be bundled, embedded,
22
+ redistributed and/or sold with any software provided that any reserved
23
+ names are not used by derivative works. The fonts and derivatives,
24
+ however, cannot be released under any other type of license. The
25
+ requirement for fonts to remain under this license does not apply
26
+ to any document created using the fonts or their derivatives.
27
+
28
+ DEFINITIONS
29
+ "Font Software" refers to the set of files released by the Copyright
30
+ Holder(s) under this license and clearly marked as such. This may
31
+ include source files, build scripts and documentation.
32
+
33
+ "Reserved Font Name" refers to any names specified as such after the
34
+ copyright statement(s).
35
+
36
+ "Original Version" refers to the collection of Font Software components as
37
+ distributed by the Copyright Holder(s).
38
+
39
+ "Modified Version" refers to any derivative made by adding to, deleting,
40
+ or substituting -- in part or in whole -- any of the components of the
41
+ Original Version, by changing formats or by porting the Font Software to a
42
+ new environment.
43
+
44
+ "Author" refers to any designer, engineer, programmer, technical
45
+ writer or other person who contributed to the Font Software.
46
+
47
+ PERMISSION & CONDITIONS
48
+ Permission is hereby granted, free of charge, to any person obtaining
49
+ a copy of the Font Software, to use, study, copy, merge, embed, modify,
50
+ redistribute, and sell modified and unmodified copies of the Font
51
+ Software, subject to the following conditions:
52
+
53
+ 1) Neither the Font Software nor any of its individual components,
54
+ in Original or Modified Versions, may be sold by itself.
55
+
56
+ 2) Original or Modified Versions of the Font Software may be bundled,
57
+ redistributed and/or sold with any software, provided that each copy
58
+ contains the above copyright notice and this license. These can be
59
+ included either as stand-alone text files, human-readable headers or
60
+ in the appropriate machine-readable metadata fields within text or
61
+ binary files as long as those fields can be easily viewed by the user.
62
+
63
+ 3) No Modified Version of the Font Software may use the Reserved Font
64
+ Name(s) unless explicit written permission is granted by the corresponding
65
+ Copyright Holder. This restriction only applies to the primary font name as
66
+ presented to the users.
67
+
68
+ 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
69
+ Software shall not be used to promote, endorse or advertise any
70
+ Modified Version, except to acknowledge the contribution(s) of the
71
+ Copyright Holder(s) and the Author(s) or with their explicit written
72
+ permission.
73
+
74
+ 5) The Font Software, modified or unmodified, in part or in whole,
75
+ must be distributed entirely under this license, and must not be
76
+ distributed under any other license. The requirement for fonts to
77
+ remain under this license does not apply to any document created
78
+ using the Font Software.
79
+
80
+ TERMINATION
81
+ This license becomes null and void if any of the above conditions are
82
+ not met.
83
+
84
+ DISCLAIMER
85
+ THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
86
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
87
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
88
+ OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
89
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
90
+ INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
91
+ DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
92
+ FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
93
+ OTHER DEALINGS IN THE FONT SOFTWARE.
@@ -4,9 +4,9 @@
4
4
  <dict>
5
5
  <key>files</key>
6
6
  <dict>
7
- <key>Resources/AppIcon.png</key>
7
+ <key>Resources/AppIcon.icns</key>
8
8
  <data>
9
- bwEoFxbActJSRxfsqPzF6Il7w8s=
9
+ 0t6cc8O2ixscotnJcHyFzEMWbIY=
10
10
  </data>
11
11
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FragmentMono-OFL.txt</key>
12
12
  <data>
@@ -16,6 +16,14 @@
16
16
  <data>
17
17
  Z1aQOuwnCBNExluOAU7PV+hjI2w=
18
18
  </data>
19
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FunnelDisplay-OFL.txt</key>
20
+ <data>
21
+ 6o/yGJb4VcpycfnHO4/kwLZA9zI=
22
+ </data>
23
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FunnelDisplay.woff2</key>
24
+ <data>
25
+ KkHGPqZvV4wjoZfHAWQehb60INY=
26
+ </data>
19
27
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FunnelSans-OFL.txt</key>
20
28
  <data>
21
29
  39ByxeaPqYemGOb34Ry4SSHxD3Q=
@@ -24,10 +32,26 @@
24
32
  <data>
25
33
  +kG1vG/EssTUM+JBXpJz7M2kfM4=
26
34
  </data>
35
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/claude-mark.png</key>
36
+ <data>
37
+ NpsU6ArGQ8wJ3M1YHMuR+CtVkZA=
38
+ </data>
27
39
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/mark.json</key>
28
40
  <data>
29
41
  tbPtIGfglDVd7/EDqk9qTwKjy4M=
30
42
  </data>
43
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/onboarding-silk.jpg</key>
44
+ <data>
45
+ LxaY9uDWywzO6Q1B+PsD9cLNlvg=
46
+ </data>
47
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/onboarding-wash-warm.webp</key>
48
+ <data>
49
+ dTLuGoywG/uYW0Nli1YdXcBhH4k=
50
+ </data>
51
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/openai-mark.png</key>
52
+ <data>
53
+ uvNLv+0ivlI3IwmzlX5bwJ4QAEU=
54
+ </data>
31
55
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/shardflux-mark.svg</key>
32
56
  <data>
33
57
  tdnXwAq5B9gcfRKUVg/IWnFdL/w=
@@ -39,11 +63,11 @@
39
63
  </dict>
40
64
  <key>files2</key>
41
65
  <dict>
42
- <key>Resources/AppIcon.png</key>
66
+ <key>Resources/AppIcon.icns</key>
43
67
  <dict>
44
68
  <key>hash2</key>
45
69
  <data>
46
- aYEpoqQgxqyVXL4CS51DxJAVjDbh1/jL7h7ZuljFwnE=
70
+ 7TnSjrqMargsym/NPKErg6bOwELJ7qBDadASbkFTMVQ=
47
71
  </data>
48
72
  </dict>
49
73
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FragmentMono-OFL.txt</key>
@@ -60,6 +84,20 @@
60
84
  D+AR9CWHPC4PxzoYnjlONArUjSuamaV2ve7HXO4ABGA=
61
85
  </data>
62
86
  </dict>
87
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FunnelDisplay-OFL.txt</key>
88
+ <dict>
89
+ <key>hash2</key>
90
+ <data>
91
+ ClZXYCg0ADo8TkHN8jwoYqs0PPAFxjNTgadThSkODB4=
92
+ </data>
93
+ </dict>
94
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FunnelDisplay.woff2</key>
95
+ <dict>
96
+ <key>hash2</key>
97
+ <data>
98
+ x9bBQ477aBJp5pT+CK2Ev395preTnUlVRiF/zvE0aAI=
99
+ </data>
100
+ </dict>
63
101
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/FunnelSans-OFL.txt</key>
64
102
  <dict>
65
103
  <key>hash2</key>
@@ -74,6 +112,13 @@
74
112
  ZSyYNENLwBg1xOdac9PH5C/y5L6yYcyFHLkR6Imvanc=
75
113
  </data>
76
114
  </dict>
115
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/claude-mark.png</key>
116
+ <dict>
117
+ <key>hash2</key>
118
+ <data>
119
+ zn6Mr+J2xNaCA4dlLXdDd3L7Lvp1Eb/5Kk52ZM0r7lE=
120
+ </data>
121
+ </dict>
77
122
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/mark.json</key>
78
123
  <dict>
79
124
  <key>hash2</key>
@@ -81,6 +126,27 @@
81
126
  2nrbIjNftzBqYmVZxxekdkxMM5X0lh5MiRmWD8JdZDI=
82
127
  </data>
83
128
  </dict>
129
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/onboarding-silk.jpg</key>
130
+ <dict>
131
+ <key>hash2</key>
132
+ <data>
133
+ 9t4r+cTLunpE/wRikwB7/l+WZz9SfD4lhtIUWi5afKU=
134
+ </data>
135
+ </dict>
136
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/onboarding-wash-warm.webp</key>
137
+ <dict>
138
+ <key>hash2</key>
139
+ <data>
140
+ 8P3vxbd7O/9b+r111vNUyvVx7DwGuce8G0E7eGXvv0w=
141
+ </data>
142
+ </dict>
143
+ <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/openai-mark.png</key>
144
+ <dict>
145
+ <key>hash2</key>
146
+ <data>
147
+ 55ni+g1BSaLsKPxZXIv7SZC8u0eGSXkbQqz/fN5ugF4=
148
+ </data>
149
+ </dict>
84
150
  <key>Resources/ShardfluxMenuBar_ShardfluxMenuBar.bundle/Resources/shardflux-mark.svg</key>
85
151
  <dict>
86
152
  <key>hash2</key>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shardflux/menubar-darwin",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shardflux macOS menu bar app",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",