Skip to content

v0.1.0

Choose a tag to compare

@charleslpan charleslpan released this 17 Aug 06:44
· 1407 commits to main since this release
7313d27

What's Changed

  • chore(LUKE-53): bootstrap the Electron desktop app and development harness by @dastratakos in #1
  • feat: add React landing page by @dastratakos in #2
  • feat(LUKE-45): add shared session core by @dastratakos in #3
  • chore: migrate workspace from npm to pnpm by @dastratakos in #4
  • feat(LUKE-46): integrate existing Claude Code sessions by @dastratakos in #5
  • docs: add git workflow guidance by @dastratakos in #7
  • feat(LUKE-47): integrate existing Codex sessions by @dastratakos in #6
  • docs: keep PR descriptions current when pushing follow-up commits by @dastratakos in #9
  • fix: keep the notch capsule inside the compact window by @dastratakos in #10
  • fix: re-assert the panel instead of expanding on relaunch by @dastratakos in #11
  • feat(LUKE-48): build Luke's attention intelligence by @dastratakos in #8
  • fix: let the session list scroll instead of cutting off the footer by @dastratakos in #13
  • fix(run): replace the running instance instead of refreshing it by @dastratakos in #14
  • feat(LUKE-55): observe Conductor cloud sessions via a settings-managed API key by @dastratakos in #15
  • feat(LUKE-57): store API keys for multiple cloud providers by @dastratakos in #16
  • feat: show Conductor's brand mark on Conductor sessions by @dastratakos in #17
  • feat(evidence): compare visual evidence against main and gate on it by @dastratakos in #20
  • revert: back out the visual evidence gate (#20) by @dastratakos in #22
  • feat(LUKE-56): revamp the notch panel into a capsule, a peek, and a panel by @dastratakos in #18
  • feat(brand): graduate the L-face identity out of the logo lab by @dastratakos in #24
  • feat(LUKE-58): observe Cursor cloud agent sessions by @dastratakos in #19
  • fix(notch): flare the shape into the top edge the way the housing does by @dastratakos in #26
  • fix(settings): drop the "Not connected" label the Connect button already gives by @dastratakos in #28
  • fix(settings): offer the editor, not Connect, for a key from the environment by @dastratakos in #36
  • docs: add CLAUDE.md symlink to AGENTS.md by @dastratakos in #38
  • feat(brand): give Luke a face in the menu bar and the notch by @dastratakos in #35
  • feat(providers): surface what each agent session is actually doing by @dastratakos in #27
  • docs: prepare Luke's open-source MVP documentation by @charleslpan in #32
  • feat(sessions): badge a session's mark when its work runs in the cloud by @dastratakos in #34
  • chore(desktop): prepare v0.1.0 macOS packaging by @charleslpan in #30
  • chore(release): add signed macOS release pipeline by @charleslpan in #40
  • feat(LUKE-59): observe Devin cloud sessions by @dastratakos in #25
  • feat(sessions): filter and sort the panel list from an options button by @dastratakos in #37
  • feat(settings): stand the panel down to a key slot while a key is entered by @dastratakos in #41
  • feat(LUKE-65): observe Cursor sessions running on this machine by @dastratakos in #33
  • feat(LUKE-62): observe Google Jules sessions by @devin-ai-integration[bot] in #39
  • fix(sessions): stop the options sheet hiding the list it narrows by @dastratakos in #43
  • feat(web): add Luke landing page by @charleslpan in #31
  • feat(sessions): open a session where its provider keeps it by @dastratakos in #45
  • feat(settings): ask before deleting a stored API key by @dastratakos in #47
  • feat(face): bounce when a session starts asking rather than while it waits by @dastratakos in #46
  • fix(LUKE-64): ask the Keychain only for a key the user has by @dastratakos in #49
  • chore(desktop): answer to Luke in the Keychain and in Application Support by @dastratakos in #50
  • feat(release): add local macOS DMG pipeline by @charleslpan in #48
  • fix(panel): draw the hand over the peek and collapse from the whole strip by @dastratakos in #52
  • feat(desktop): package the Luke brand icon into the macOS app by @charleslpan in #54
  • fix(panel): unfold as many provider marks as the panel's wing holds by @dastratakos in #55
  • fix(web): clean up the landing page by @charleslpan in #53
  • feat(LUKE-61): integrate GitHub Copilot coding agent tasks by @dastratakos in #57
  • feat(face): let Luke be still, and spend his moments one at a time by @dastratakos in #51
  • feat(release): add branded DMG installer layout by @charleslpan in #58
  • feat(sessions): carry state in the row's words rather than a chip by @dastratakos in #56
  • feat(LUKE-60): integrate local OpenCode sessions by @dastratakos in #60
  • ci: report required checks on merge groups by @charleslpan in #61
  • feat(LUKE-49): add Realtime voice conversation by @dastratakos in #12
  • feat(voice): tighten Luke's spoken instructions toward brevity by @dastratakos in #63
  • feat(panel): let session rows glide to their new order by @dastratakos in #62
  • feat(settings): add a menu bar visibility setting by @dastratakos in #64
  • feat(settings): let the spoken voice be chosen in Preferences by @dastratakos in #66
  • feat(web): rebuild the landing hero on the product's current UI by @dastratakos in #65
  • feat(sessions): send messages and run advertised controls on cloud sessions by @dastratakos in #59
  • feat(voice): open sessions from a spoken ask by @dastratakos in #67
  • feat(panel): glide the provider marks to their new order by @dastratakos in #69
  • feat(voice): caption Luke's speech on screen as it streams by @dastratakos in #68
  • fix(sessions): date Claude Code sessions by their own records, not mtime by @dastratakos in #71
  • fix(panel): read the wing's marks in the sort the list is in by @dastratakos in #72
  • feat(settings): add a switch to show Luke in the Dock by @dastratakos in #73
  • feat(voice): let the user choose how fast Luke talks by @dastratakos in #75
  • feat(voice): teach Luke his own guide and take spoken settings asks by @dastratakos in #74
  • fix(voice): answer the talk key on the press, not the handshake by @dastratakos in #77
  • feat(voice): let the talk shortcut be changed, with reset to default by @dastratakos in #76
  • feat(ask): type to Luke, from the panel and from any app by @dastratakos in #78
  • feat(voice): read and act on Linear issues in the spoken conversation by @dastratakos in #70
  • feat(face): reward a hover on Luke with a one-shot trick by @dastratakos in #81
  • feat(voice): quiet Music and Spotify while talking by @dastratakos in #79
  • feat(brand): give the Dock Luke's own icon in light and dark by @dastratakos in #82
  • feat(panel): left-align the provider marks in the peek and the panel by @dastratakos in #84
  • fix(brand): put Luke's face back on the Dock tile after every show by @dastratakos in #88
  • feat(settings): make the ask key an editable shortcut by @dastratakos in #86
  • feat(settings): stand Luke on every display and let the bubble be chosen by @dastratakos in #83
  • feat(panel): hold the panel still while Show Desktop sweeps windows aside by @dastratakos in #85
  • feat(settings): draw Linear apart in an Integrations section by @dastratakos in #90
  • feat(feedback): send feedback or a prompt to the founders from the panel by @dastratakos in #87
  • feat(voice): add a spoken tool to create a new workspace by @dastratakos in #80
  • feat(voice): spawn agents by voice — new workspaces with tasks, and agents in existing workspaces by @dastratakos in #89
  • feat(shortcuts): draw a chord as the separate keys it is by @dastratakos in #92
  • fix(motion): answer the motion audit against DESIGN.md by @dastratakos in #95
  • feat(voice): caption Luke and ask for volume while the Mac is muted by @dastratakos in #94
  • feat(feedback): offer a refused spoken ask to the founders as a prompt by @dastratakos in #93
  • feat(voice): switch the panel between its tabs on an ask by @dastratakos in #99
  • feat(voice): stop a reply on demand with an editable global stop key by @dastratakos in #101
  • feat(voice): announce sessions in Luke's own voice, no conversation needed by @dastratakos in #97
  • feat(voice): make a changed voice or pace heard on the live call by @dastratakos in #103
  • feat(voice): teach the guide every setting's default so a spoken ask can restore it by @dastratakos in #107
  • feat(conductor): read the transcripts view for recaps and agent kinds by @dastratakos in #102
  • feat(voice): default provider and model choices for conversational workspace creation by @dastratakos in #104
  • docs(git): prefer rebase onto main over merge commits by @dastratakos in #108
  • feat(settings): open the tab into pages, and even out its rows by @dastratakos in #105
  • feat(panel): send Luke to the control he was asked to change by @dastratakos in #106
  • refactor(settings): apply every row's store reply through one helper by @charleslpan in #110
  • refactor(desktop): collapse preload's IPC echo into two helpers by @charleslpan in #111
  • feat(sessions): show each Conductor chat as its own row, grouped by workspace by @dastratakos in #100
  • refactor(settings): collapse cloned preference setters onto #setField by @charleslpan in #112
  • refactor(settings): give each switch and select its own write and refusal by @charleslpan in #115
  • fix(sessions): notice when a session's spawnable agents change by @charleslpan in #113
  • refactor(adapters): share JSON readers, status decay, and observation bounds by @charleslpan in #117
  • refactor(desktop): collapse cloned settings IPC handlers onto one write path by @charleslpan in #114
  • refactor: generate shared motion, marks, and labels for web and desktop by @charleslpan in #118
  • refactor(desktop): extract App state clusters into hooks by @charleslpan in #120
  • feat(voice): connect an OpenAI key in Settings by @charleslpan in #91
  • refactor(adapters): unify act-result status and restore honest capability probes by @charleslpan in #124
  • refactor: keep mirrored constants in sync by construction by @charleslpan in #122
  • refactor(desktop): share HTTP test fakes across adapter tests by @charleslpan in #127
  • docs(desktop): put drifted comments back on the code they describe by @charleslpan in #123
  • refactor(desktop): group settings props into control objects by @charleslpan in #125
  • fix: stop swallowing programming errors as network faults by @charleslpan in #126
  • refactor(sessions): split display urgency from status and name recaps by @charleslpan in #128
  • refactor(desktop): extract the four main-process seams that own real state by @charleslpan in #130
  • refactor(voice): split realtime.ts and own the inbound wire by @charleslpan in #121
  • refactor(voice): derive tool families, count, and dispatch from one table by @charleslpan in #129
  • fix(panel): use painted menu bar depth by @charleslpan in #132
  • refactor: small independent cleanups by @charleslpan in #131
  • fix(panel): keep Luke above the captions a muted Mac draws by @dastratakos in #116
  • fix(sessions): never hide a conversation for being old by @dastratakos in #137
  • fix(voice): let a paired model-and-effort ask land both halves by @dastratakos in #136
  • fix(voice): let a spoken pace ask use the multiple its row shows by @dastratakos in #139
  • fix(panel): sign two settings changed at once one at a time by @dastratakos in #135
  • feat(providers): archive a workspace where its provider documents it by @dastratakos in #140
  • feat(settings): move the OpenAI key onto the Voice page it turns on by @dastratakos in #141
  • fix(panel): draw the provider rule under Conductor's model and effort rows by @dastratakos in #143
  • fix(guide): put drifted facts back on the app they describe by @dastratakos in #145
  • feat: remember a default workspace project per provider by @dastratakos in #142
  • chore: stop logging hotkey and media-duck status to the console by @dastratakos in #150
  • feat(sessions): observe every conversation, show the ones that still matter by @dastratakos in #144
  • feat(voice): keep Luke quiet when a tool call succeeds by @dastratakos in #148
  • fix(voice): hold one context item per kind and retire idle calls by @dastratakos in #146
  • fix(motion): mount Luke's meter behind the capsule's growing edge by @dastratakos in #151
  • feat(voice): keep spoken references free of hashes and machine ids by @dastratakos in #155
  • fix(voice): announce only status edges whose events are fresh by @dastratakos in #156
  • feat(settings): simplify the Voice page and retire the announce switch by @dastratakos in #157
  • fix(settings): simplify the OpenAI key subtext by @dastratakos in #158
  • chore(voice): log only the model id when voice is enabled by @dastratakos in #159
  • fix(settings): move cloud-agent key trust note under the header by @dastratakos in #160
  • feat(voice): let a standing ask decide when a session speaks by @dastratakos in #149
  • feat(conductor): report workspace lifecycle status on session rows by @dastratakos in #154
  • docs: correct capability and privacy claims to match trust constraints by @charleslpan in #147
  • fix(web): replace the placeholder favicon with the Luke app icon by @dastratakos in #163
  • feat(web): add a hosted privacy policy page by @charleslpan in #162
  • fix(conductor): drop archived workspaces from the session roster by @dastratakos in #164
  • feat(voice): report call failures on the caption strip instead of Settings by @dastratakos in #165
  • feat(notices): say what a waiting session needs, not only that it waits by @dastratakos in #153
  • feat(claude-code): observe local sessions through hooks and read their transcripts on ask by @dastratakos in #119
  • feat(sessions): shorten the archive control label to "Archive" by @dastratakos in #168
  • feat(sessions): search the list by what its rows say by @dastratakos in #166
  • chore(web): add Drizzle database foundation by @charleslpan in #167
  • docs: streamline README for open source launch by @charleslpan in #171
  • feat(providers): widen hook observation to Codex and on-ask transcript reads to every local provider by @dastratakos in #169
  • fix(sessions): scale the count badge down before it crosses the shape's edge by @dastratakos in #172
  • fix(voice): let announcements through — retry refused calls, stop the evaluator's 429 storm by @dastratakos in #170
  • feat(desktop): announce session news as a pressable notice popup by @dastratakos in #173
  • fix(attention): consume stale developments silently instead of reviewing history as news by @dastratakos in #174
  • feat: require Google or GitHub sign-in by @charleslpan in #161
  • fix(voice): anchor a bare "that chat" to the session under discussion by @dastratakos in #175
  • fix(desktop): keep the caption clear of settings pages by @dastratakos in #177
  • fix(web): restore production sign-in routing by @charleslpan in #179
  • feat(workspaces): open a created workspace on screen once observed by @dastratakos in #176
  • fix(conductor): drop archived chats from the session roster by @dastratakos in #178

New Contributors

Full Changelog: https://github.com/ReviewStage/luke/commits/v0.1.0