Skip to content

Luke 0.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 17:03
· 76 commits to main since this release
27df7f4

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 --preview launches 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