Repository navigation
Luke 0.7.0
What's Changed
- docs(changelog): tighten the release notes to what a reader acts on by @charleslpan in #1493
- docs(privacy): PRIVACY.md discloses the child conversations Luke opens for himself by @dastratakos in #1496
- feat(web): the child-task and child-completion hosted turn kinds by @dastratakos in #1495
- feat(web): label and completion_delivered_at on conversations, and the children directory read by @dastratakos in #1498
- refactor(brain,runtime): prune the child vocabulary to what hosted fills by @dastratakos in #1497
- feat(web): the child opener by @dastratakos in #1499
- feat(hosted,web): the children list read and its head on the change signal by @dastratakos in #1500
- feat(desktop): mask session replay, then collapse the voice window onto the panel bundle by @charleslpan in #1494
- docs(style): write the code style down, with Redis as the model by @charleslpan in #1501
- fix(desktop): space paragraphs in thinking folds by @dastratakos in #1502
- chore(runtime): delete the unreferenced compaction policy by @charleslpan in #1503
- chore(scripts): delete dead branches and exports under scripts, design, and tools by @charleslpan in #1506
- chore(live): delete 28 dead exports from the Live vocabulary by @charleslpan in #1509
- chore(actions): delete the action vocabulary nothing outside the package names by @charleslpan in #1515
- chore(web): delete the dead exports under apps/web/server/hosted by @charleslpan in #1508
- chore(brain): delete unused exports, dead value-set members, and the code they reached by @charleslpan in #1516
- chore(web): delete six unused type exports and the unread --chart-2 token by @charleslpan in #1513
- chore(hosted): delete the unused wire exports and barrel rows by @charleslpan in #1514
- chore(desktop): delete the renderer's dead exports, branches, and rules by @charleslpan in #1518
- chore(host): delete dead exports, barrel rows, and unread composer fields by @charleslpan in #1517
- chore(voice): delete the dead voice exports by @charleslpan in #1521
- chore(gateway): delete the dead WebSocket transport by @charleslpan in #1519
- chore(providers): delete the options, kinds, and shapes nothing reaches by @charleslpan in #1522
- chore(wire): delete unused exports, dead barrel rows, and two unreachable check readers by @charleslpan in #1512
- chore(desktop): delete the summon act and four unread names by @charleslpan in #1525
- chore(panel-surface-feedback-calendar): delete nine unreferenced exports and the dead notice branch by @charleslpan in #1523
- chore(ios): delete dead reads fields, the transport seam, and the chip's marks by @charleslpan in #1528
- chore(credentials): delete the dead exports and the unused loopback-page subpath by @charleslpan in #1526
- chore(guide): delete the guide's unread guards and its context rendering by @charleslpan in #1533
- chore(live): delete the Live vocabulary's test-only exports by @charleslpan in #1538
- chore(desktop): delete unused exports and dead branches in the main process by @charleslpan in #1529
- chore(gateway): delete 33 dead exports, the node.unregister method, and two dead report fields by @charleslpan in #1532
- chore(docs): delete documentation that names parts the repository no longer has by @charleslpan in #1537
- chore(devtrace): delete the unread trace records and their barrel rows by @charleslpan in #1540
- chore(settings): delete the unreachable settings exports and the talk-key release logic by @charleslpan in #1530
- chore(web): delete the web server's unused exports and dead branches by @charleslpan in #1535
- chore(memory): delete the barrel rows and types nothing outside the package reads by @charleslpan in #1536
- chore(analytics): delete the ask:submit and session:diagnostic vocabulary by @charleslpan in #1539
- Keep the desktop Conversation tab pinned to the tail by @dastratakos in #1541
- feat(hosted,web): the child messages read over the turn projection by @dastratakos in #1504
- chore(runtime): delete unused exports, dead value-set members, and dead branches by @charleslpan in #1545
- chore(host): delete the test-only host layer alias and the retired-store export by @charleslpan in #1548
- chore(ios): delete eleven test-only members and the five cases that reached them by @charleslpan in #1549
- chore(guide): delete the guide's test-only list alias and barrel rows by @charleslpan in #1551
- chore(session): delete unused exports, value-set members, and barrel rows by @charleslpan in #1531
- chore(desktop): narrow or delete the main process's test-only exports by @charleslpan in #1543
- chore(wire): delete the schemas and annotation alias only tests reached by @charleslpan in #1552
- chore(desktop): delete the renderer's test-only exports and their tests by @charleslpan in #1547
- chore(brain): delete the dead Responses request and answer surface by @charleslpan in #1527
- chore(web): delete the dead test-only code under apps/web/server/hosted by @charleslpan in #1546
- chore(hosted): delete the test-only clients, readers, and mint answer by @charleslpan in #1553
- chore(voice): delete the dead sideband attach failure and the live session status by @charleslpan in #1554
- chore(memory): delete the seams barrel row and unexport the ranking internals by @charleslpan in #1556
- feat(web): the hosted BrainChildAccess, behind the still-denying policy by @dastratakos in #1507
- chore(session): delete dead roster refresh, compaction predicate, and test-only exports by @charleslpan in #1550
- chore(brain): delete the UIMessage context engine and the contract only it filled by @charleslpan in #1520
- chore(web): delete the web server's test-only admin refusal schemas, workspace delete, and functionPath by @charleslpan in #1557
- chore(wire): delete the two metadata type rows session no longer reads by @charleslpan in #1558
- refactor(web): the eve handover as a leaf the opener and a completion share by @dastratakos in #1560
- chore(gateway): delete six test-only symbols and four exports the WebSocket transport left behind by @charleslpan in #1559
- chore(brain): delete the test-only halves of the brain's requests, tools, and trace by @charleslpan in #1555
- feat(web): child completion delivery, mark then send, relayed and swept by @dastratakos in #1544
- chore(runtime): delete the runtime's test-only production code by @charleslpan in #1561
- feat(desktop): the main process reads children and a child's transcript by @dastratakos in #1562
- chore(web): delete the hosted_usage.voice_seconds writer by @charleslpan in #1563
- chore(web): delete the tool_sets writer and its test-only readers by @charleslpan in #1564
- chore(web): stop reading and writing the dead roster_diff table by @charleslpan in #1565
- feat(web): offer delegation to the hosted brain, capped one level deep by @dastratakos in #1568
- chore(repo): delete knip's stale and inert entry rows by @charleslpan in #1567
- chore(repo): delete the twenty-two disputed dead symbols that survived re-verification by @charleslpan in #1569
- feat(desktop): the Sub-agents button and list page on the Conversation tab by @dastratakos in #1570
- feat(desktop): the sub-agent transcript sub-page by @dastratakos in #1571
- feat(desktop): a completion line's chip opens the child's transcript by @dastratakos in #1572
- feat(live): UTTERANCE_GAP_MS to 4.0 s, one constant for both speakers by @dastratakos in #1573
- feat(web): messages.placed_at, the one ordering key for the Conversation by @dastratakos in #1574
- feat(live): the ledger mints each row's id, an opaque string minted once by @dastratakos in #1575
- feat(web): one row door on the hosted store, upserting a spoken row under the ledger's id by @dastratakos in #1576
- feat(voice): growing voice rows: the service writes each row behind its fragments, not at a settle by @dastratakos in #1577
- feat(web): attachSpokenAsk, the store door that gives a delegation the ledger's rows in place by @dastratakos in #1578
- feat(web): a delegation attaches the developer's row in place; recordSpokenAsk and the held delegation are deleted by @dastratakos in #1580
- feat(voice): a delegation attaches every developer row since the previous ask; the ask's rows keep growing by @dastratakos in #1582
- refactor(web): the store's spoken-line adoption and cut boundary are deleted by @dastratakos in #1583
- test(web): the segments-to-rows word invariant, held over the hosted store at two gaps by @dastratakos in #1584
- feat(voice): the session-created answer carries the store's voice session id to the device by @dastratakos in #1585
- fix(web): the tick dials eve on the production domain, not the protected deployment host by @dastratakos in #1586
- feat(desktop): the Conversation replaces a live caption by voice session, speaker, and span, and the hold clocks go by @dastratakos in #1579
- feat(hosted,web): the transcript read pages any owned non-main conversation by @dastratakos in #1594
- feat(hosted,web): the agents list read and its head on the change signal by @dastratakos in #1595
- feat(desktop): the Agents page lists per-workspace agents and sub-agents, opening one transcript page by @dastratakos in #1596
- feat(desktop), docs: the button reads "Agents", and PRIVACY.md names the agent pages by @dastratakos in #1597
- docs(web,privacy): the READMEs and PRIVACY.md describe what the delegation and Agents code now does by @dastratakos in #1599
- fix(web): children and agents store reads carry only what is read, refuse what cannot decode, and the fixture matches the service by @dastratakos in #1600
- feat(web): indexes for the latest-turn laterals and the completion sweep, and expects_completion NOT NULL by @dastratakos in #1602
- fix(hosted,web,desktop): an agent row's age and order agree, and children sort by the time they show by @dastratakos in #1603
- fix(desktop,host): an open transcript follows a running turn, and every page move closes through one door by @dastratakos in #1601
- Raise the desktop Conversation history retention bound by @dastratakos in #1605
- refactor(brain,runtime,web): one child status vocabulary, a record that carries what is read, children without the session tools by @dastratakos in #1604
- refactor(desktop,host): the Agents page module wears the Agents vocabulary, and the comments follow by @dastratakos in #1607
- fix(actions): a creation names a model only when the developer did, and a named model never swaps the agent by @dastratakos in #1606
- feat(web): the store records why eve failed a turn, and a turn abandoned for an hour is settled by @dastratakos in #1608
- fix(web): completion delivery holds no lock across eve, orders its locks as Clear does, and a turnless child can be ended by @dastratakos in #1609
- feat(hosted): a hold just mutes Luke; delete the save-and-release mechanism by @charleslpan in #1598
- feat(hosted): a turn that starts under a quiet instant is not offered announce by @charleslpan in #1611
- docs(agents): the scheduled-pass rule names the completion sweep beside the diff and the hold's release by @dastratakos in #1613
- chore(web): drop the dead tool_sets table by @charleslpan in #1510
- feat(skills): add /orchestrate, which rolls a plan out as PRs across Conductor workspaces by @charleslpan in #1612
- refactor(wire): rename turn origin roster_diff and source roster_look to transcript_change by @charleslpan in #1587
- feat(providers): transcriptChanges, the read that names which roster chats gained transcript since an instant by @charleslpan in #1588
- feat(brain): observedMessagesText, the observed-messages turn one chat's new lines open by @charleslpan in #1589
- feat(web): transcript_mark, the opener's per-account high-water mark over transcript changes by @charleslpan in #1590
- feat(web): the opener wakes observed conversations on transcript changes, not roster diffs by @charleslpan in #1591
- feat(desktop): a turn group from a per-workspace agent wears one provenance chip in the main thread by @dastratakos in #1615
- feat(desktop): the agent transcript page says it is loading and opens at its tail by @dastratakos in #1617
- docs: the scheduled pass wakes on transcript changes, disclosed in PRIVACY.md, AGENTS.md, and the server README by @charleslpan in #1619
- feat(web,hosted,desktop): the service keeps a per-workspace agent's session title by @dastratakos in #1614
- chore(web): delete the thread conversation kind by @charleslpan in #1616
- feat(web): turns.failure_detail carries eve's redacted failure message, so a MODEL_CALL_FAILED can be diagnosed by @dastratakos in #1621
- feat(desktop): an observed-messages row is drawn as a structured note with its lines behind a fold by @dastratakos in #1618
- chore(web): stop writing the dead asks.question column, and loosen its NOT NULL (PR A of 2) by @charleslpan in #1534
- feat(desktop): a per-workspace agent's title is a chip with the provider logo that opens the chat by @dastratakos in #1620
- feat(web): the nine Drizzle schema modules restored, reconciled against 0026-0042 by @charleslpan in #1622
- revert(desktop): the per-workspace agent's title is a plain title, not a chip (#1620) by @dastratakos in #1625
- test(web): the store-writer boundary reads a Drizzle statement again by @charleslpan in #1623
- test(web): the schema modules compared against information_schema both ways by @charleslpan in #1626
- chore(web): delete conversations.fork_of_seq by @charleslpan in #1511
- feat(web): the v4 Drizzle bridge, ported from @effect/sql-drizzle by @charleslpan in #1624
- chore(web): drop the dead hosted_usage.voice_seconds column by @charleslpan in #1524
- chore(web): drop the dead asks.question column (PR B of 2, migration + its Drizzle declaration) by @charleslpan in #1566
- feat(web): the workspace files onto the Drizzle query builder by @charleslpan in #1627
- feat(web): the admin, voice, and server-root queries onto the Drizzle builder by @charleslpan in #1628
- feat(web): the rest of hosted/store/ onto the Drizzle query builder by @charleslpan in #1630
- test(web): the store test helpers and the store suites onto the Drizzle builder by @charleslpan in #1631
- feat(web): the store writer, the message reads, and the children onto the Drizzle builder by @charleslpan in #1632
- test(web): the remaining web test suites onto the Drizzle builder by @charleslpan in #1633
- feat(web): hosted/ outside store/ and the brain host onto the Drizzle query builder by @charleslpan in #1629
- fix(providers): Conductor transcriptChanges answers from the pass's status updatedAt, not /v0/sql by @charleslpan in #1634
- docs(web): the data layer as it stands, and three stale README claims by @charleslpan in #1636
- feat(desktop): the source chip opens the agent in Luke under a robot mark by @dastratakos in #1637
- fix(voice): the launch greeting opens a session, never cuts off what it is already saying by @dastratakos in #1639
- fix(web): the Drizzle bridge keeps its caller's async context, and brain-host/conversation.ts onto the builder by @charleslpan in #1638
- fix(session,host,desktop): the Conversation is ordered by where each row is placed, not by turn group by @dastratakos in #1640
- feat(desktop): the transcript page's title is the session's chip that opens the chat by @dastratakos in #1641
- feat(desktop): drop the "Not spoken" mark from the Conversation's announcements by @dastratakos in #1642
- fix(desktop): the settings search stands above a nested page's head by @dastratakos in #1644
- feat: the Conversation pages older turns back from the tail as the reader scrolls to the top by @dastratakos in #1610
- fix(brain): an observation turn is not offered the message send by @dastratakos in #1646
- fix(actions,brain): a creation and a spawn declare no model, so the saved pairing is the one input by @dastratakos in #1647
- feat(conversation): fold observation announcements by @dastratakos in #1643
- fix(web): retire the conversation of an observed chat once the roster stops listing it by @charleslpan in #1649
- feat(conversation): the jump-to-bottom control scrolls the reader down smoothly by @dastratakos in #1650
- fix(desktop): a control row is worded by the roster's advertisement while its call is under way by @dastratakos in #1648
- style(desktop): the Agents pages stand on the settings and sessions tabs' terms by @dastratakos in #1651
- fix(conversation): an observation's briefing fold carries the message's stamp by @dastratakos in #1652
- feat(desktop): search the Conversation thread, land on a result, and mark its words by @dastratakos in #1635
- revert(voice): briefings appended back to back are said together again by @dastratakos in #1653
- feat(desktop): search an agent's transcript page, on the thread's own pieces by @dastratakos in #1656
- refactor(hosted): derive the wire types from their schemas by @charleslpan in #1654
- refactor(admin): the favorite write runs on a hook that coalesces presses and aborts with its screen by @charleslpan in #1657
- refactor: Predicate, Duration, and Option where hand-rolled shapes stood (LUKE-264, 11a) by @charleslpan in #1658
- fix(conversation): the loading notice leaves with the page and stands clear of the first date by @dastratakos in #1655
- fix(desktop): an observed-messages note opens on "New messages" with the chat's chip inside its fold by @dastratakos in #1659
- refactor(effect): promise doors over our own Effects become Effects by @charleslpan in #1661
- fix(brain-host): the relay's state is pinned to the hook's own session context by @dastratakos in #1662
- refactor(web,host): Schema at the store, admin, and file boundaries by @charleslpan in #1663
- fix(desktop): a search result is one row of words, never a message's rows joined into one bubble by @dastratakos in #1666
- refactor(host): the settings file's record is a Schema by @charleslpan in #1667
- refactor(runtime): shared Effect primitives in packages/runtime/src/effect by @charleslpan in #1664
- fix(providers): interrupts pass through tolerateItemFailure and the admin seams; the Conductor pass is bounded (LUKE-269) by @charleslpan in #1669
- refactor(effect): remaining hand-rolled primitives on Effect's own (LUKE-274) by @charleslpan in #1673
- refactor(hosted): the eve seam is an Effect client on HttpClient; the ask long poll is a Schedule by @charleslpan in #1682
- refactor(web): a JSON Logger on the web runtime, Effect.log in place of console, Cause.pretty in log lines (LUKE-278) by @charleslpan in #1674
- refactor(effect): typed error channels replace Error and unknown by @charleslpan in #1660
- refactor: Result where in-process { ok, refusal } unions stood (LUKE-264, 11b) by @charleslpan in #1672
- refactor(effect): package and desktop Effects read time from Clock by @charleslpan in #1668
- refactor(web): the store writer's results are Result where ok unions stood (LUKE-264, 11c) by @charleslpan in #1679
- fix(hosted): routes answer unavailable and tool seams fail typed where a store failure died (LUKE-270) by @charleslpan in #1681
- refactor(web): secrets travel as Redacted from Config to the header or cipher (LUKE-260) by @charleslpan in #1665
- refactor(web): hosted, admin, and store Effects read time from Clock by @charleslpan in #1677
- refactor(web,host): the observation tick runs accounts as a bounded sliding window by @charleslpan in #1683
- test(effect): suites run on it.effect and TestClock, not Effect.run* and real sleeps by @charleslpan in #1684
- refactor(effect): every Effect.fn span is named package/function; the migration lock and the Conductor reads are traced (LUKE-278) by @charleslpan in #1675
- fix(desktop): a transcript still loading holds the shape of a thread by @dastratakos in #1671
- fix(desktop): on an agent's transcript page the announce call is a tool call row and the brain's text is his bubble by @dastratakos in #1676
- docs(agents): write the testing policy into AGENTS.md (LUKE-306) by @charleslpan in #1685
- fix(brain): an observation turn writes what it saw to today's note by @charleslpan in #1697
- feat(brain): the seeded AGENTS.md tells Luke to write memory, and the activity-notices promise goes by @charleslpan in #1699
- feat(web): a fresh brain session is primed once with today's and yesterday's notes by @charleslpan in #1701
- docs: the Mac-gate ruling and the storage shape stand on their own, not on the storage-plan branch by @dastratakos in #1702
- feat(scripts):
run.sh --previewlaunches the Mac against the branch's Vercel Preview by @charleslpan in #1705 - docs(web): a Preview holds the provider client secrets, as Better Auth's oauth-proxy setup does by @charleslpan in #1708
- fix(scripts): the preview wait says what Vercel is doing while no record stands by @charleslpan in #1709
- feat(web): main's standing context recalls the briefings observed conversations gave by @dastratakos in #1703
- fix(ios,watch): Conversation on the Luke tab; the watch takes GPT Live's silence for no voice by @devin-ai-integration[bot] in #1704
- fix(ios,watch): the Luke screens drop their "Luke" title by @dastratakos in #1711
- feat(ios): one stack rooted on Luke; the voice lives under the account by @dastratakos in #1713
- feat(watch): the account top-left and the sessions list top-right, as the phone stands by @dastratakos in #1714
- fix(web): a Preview's sign-in returns to the desktop's authorize request, not to a 404 by @charleslpan in #1716
- fix(brain): a briefing names the work before the news, since it interrupts someone who forgot it by @charleslpan in #1706
- fix(web): a Preview's build drops the signing key it inherited from production, so its token exchange signs by @charleslpan in #1719
- Delete the on-disk hold for a signed-out run's product-event counts by @charleslpan in #1720
- refactor(web): delete the two legacy Realtime mint endpoints and the Realtime session document only they build by @charleslpan in #1722
- Delete the cloud pass's long-lived-plugin machinery: refresh debounce, pass supersession, credential epoch, forget hook by @charleslpan in #1723
- Delete the updater's "release still publishing" retry ladder and the PUBLISHING status by @charleslpan in #1721
- Collapse the Gateway from a wire protocol into a direct in-process dispatcher by @charleslpan in #1725
- refactor(voice): delete LiveSessionService's desktop-era paths the hosted exchange never reaches by @charleslpan in #1724
- Delete the five machine-reaching brain tools and the app-guide admission behind them by @charleslpan in #1726
- refactor(brain, live): the authored prompts are plain strings by @charleslpan in #1715
- feat(brain): the hosted brain runs on gpt-6-sol, with no model override or fallback by @charleslpan in #1727
- feat(brain): the hosted brain runs on gpt-6.1-sol by @charleslpan in #1772
- Feature planning MVP: plans, planning calls, and the notetaker by @charleslpan in #1755
- fix(planning): a field the notetaker sends null keeps what stood by @dastratakos in #1780
- Turn off onboarding and Luke's voice outside planning calls by @charleslpan in #1782
- chore(release): bump the workspace to 0.7.0 and write its changelog by @charleslpan in #1781
Full Changelog: v0.6.0...v0.7.0