Skip to content

Luke 0.18.0

Latest

Choose a tag to compare

@github-actions github-actions released this 19 Oct 06:41
· 904 commits to main since this release
ea04463

What's Changed

  • refactor(ui): extract EmptyState by @charleslpan in #3227
  • feat(desktop): an Inbox item reads as a comment thread under its title by @dastratakos in #3230
  • fix(desktop): every tab's own bar under a tab strip stands one height by @dastratakos in #3320
  • refactor(web): migrate invitation acceptance onto AuthPage by @charleslpan in #3319
  • feat(ui): add FormSection by @charleslpan in #3218
  • feat(ui): add CollectionPage by @charleslpan in #3225
  • feat(service): hand coding agents the Linear issue their plan started from by @dastratakos in #3283
  • feat(desktop): personal sidebar sections that tasks are dragged into by @dastratakos in #3251
  • refactor(web): migrate the desktop-session page onto AuthPage by @charleslpan in #3321
  • docs(changelog): add what landed before the v0.17.0 tag moved by @charleslpan in #3326
  • feat(desktop): answer an Inbox item in the agent composer's box by @dastratakos in #3279
  • fix(desktop): an agent's live to-do list in the transcript runs its working mark by @dastratakos in #3329
  • fix(desktop,ui,brand): the window keeps the rules DESIGN.md states by @dastratakos in #3323
  • refactor(web): migrate the GitHub connection page onto AuthPage by @charleslpan in #3322
  • feat(hosted,web): a coding agent asks in chat by @charleslpan in #2630
  • feat(ui): add DetailPage by @charleslpan in #3243
  • refactor(web): migrate the GitHub installation result page onto AuthPage by @charleslpan in #3324
  • feat(ui): add PublicPage by @charleslpan in #3246
  • feat(web): the coding agent is told about chat by @charleslpan in #2662
  • feat(service): start a coding agent from another with a transcript replay by @dastratakos in #3312
  • refactor(web): migrate the integration connection result page onto AuthPage by @charleslpan in #3325
  • feat(desktop,host,features,gateway,ui): open an Inbox item's files, pages, and pull requests in the side panel beside it by @dastratakos in #3331
  • refactor(ui): extract Menu by @charleslpan in #3219
  • fix(database): settle the calls an interrupted step abandoned when eve runs it again by @dastratakos in #3327
  • feat(web): Luke posts, reads, and asks in the plan's chat by @charleslpan in #2647
  • feat(desktop): draw the Continued from / Forked from card in a new agent's transcript by @dastratakos in #3333
  • feat(ui): add Select using the shared menu behavior by @charleslpan in #3226
  • refactor(ui): extract ErrorState by @charleslpan in #3242
  • feat(service): copy the source agent's work to a branch for a continued or forked agent by @dastratakos in #3332
  • feat(service): let an Inbox answer carry files by @dastratakos in #3337
  • feat(desktop): let a custom sidebar section wear no icon by @dastratakos in #3344
  • feat(desktop): fork a coding agent at one of its messages into a new agent by @dastratakos in #3330
  • fix(desktop): lay a task item's checkbox beside its words in the plan editor by @dastratakos in #3350
  • refactor(ui): extract HoverCard by @charleslpan in #3214
  • fix(desktop): name pull request tabs by their number and title by @dastratakos in #3334
  • refactor(ui): migrate FoldingButton onto shared controls by @charleslpan in #3222
  • refactor(desktop): draw the replay card's steps with the transcript's own rows by @dastratakos in #3352
  • fix(service): replay the newest rows of a long transcript, not its oldest by @dastratakos in #3341
  • fix(desktop,ui): a failed read reads as a quiet line or an empty place's state, not a red sentence by @dastratakos in #3345
  • feat(desktop): continue a failed or ended coding agent in a new agent by @dastratakos in #3328
  • feat(desktop): attach files to an Inbox answer, and show the files an answer carried by @dastratakos in #3340
  • refactor(desktop): migrate window chrome onto the design system by @charleslpan in #3360
  • refactor(desktop): adopt shared schema-driven settings rows and sections by @charleslpan in #3357
  • refactor(host): drop direct Node imports from the composition path by @dastratakos in #3362
  • refactor(desktop): migrate tab strip onto the design system by @charleslpan in #3363
  • fix(service): mark a first message's note and count its files by @dastratakos in #3359
  • refactor(desktop): migrate side panel onto the design system by @charleslpan in #3364
  • feat(desktop): drag tasks between Pinned, Tasks, and sections by @dastratakos in #3347
  • feat(desktop,ui): open a pull request's chip in its agent's Pull request tab by @dastratakos in #3348
  • feat(web): a coding agent's turn opens with the chat it has not read by @charleslpan in #2673
  • fix(web): keep a joined invitation from reading as spent by @charleslpan in #3335
  • Share the agent-page response policy from a package by @dastratakos in #3356
  • feat(web,hosted): the window reads a workspace's chat by @charleslpan in #2617
  • refactor(desktop): migrate sidebar navigation onto the design system by @charleslpan in #3366
  • fix(desktop): keep the new-workspace dialog open after a refused name by @charleslpan in #3374
  • refactor(host): move Node-only modules behind @luke/host/node by @dastratakos in #3368
  • refactor(desktop): migrate workspace switcher onto the design system by @charleslpan in #3367
  • feat(service): replay another agent whole within the new agent's window, summarizing what does not fit by @dastratakos in #3370
  • fix(desktop): keep a section dialog open after a refused name by @charleslpan in #3377
  • feat(web,hosted): the window posts, answers, and resolves in chat by @charleslpan in #2626
  • refactor(desktop): one injectable bridge instead of window.luke by @dastratakos in #3354
  • refactor(desktop): migrate create-workspace dialog onto the design system by @charleslpan in #3369
  • feat(desktop): chat reaches the window through the Gateway by @charleslpan in #2632
  • refactor(host): put sign-in behind a seam by @dastratakos in #3384
  • refactor(desktop): migrate command palette onto the design system by @charleslpan in #3371
  • feat(desktop): draw Luke's summary of earlier steps on the replay card, and read each step from its marker by @dastratakos in #3385
  • refactor(host): require HttpClient in the composers by @dastratakos in #3361
  • refactor(desktop): migrate find-in-tab onto the design system by @charleslpan in #3373
  • refactor(renderer): one entry per window role by @dastratakos in #3353
  • refactor(desktop): migrate sign-in gate onto the design system by @charleslpan in #3375
  • test(web): run accept-invitation on the test's own clock by @dastratakos in #3388
  • refactor(desktop): migrate feedback dialog onto the design system by @charleslpan in #3378
  • feat(desktop,features,ui): pick a sidebar section's icon from every Lucide glyph and emoji, in a color by @dastratakos in #3372
  • refactor(host): make platform concerns optional in the assembly by @dastratakos in #3383
  • refactor(desktop): put renderer platform capabilities behind a seam by @dastratakos in #3396
  • refactor(desktop): migrate inline notices onto the design system by @charleslpan in #3379
  • refactor(desktop): migrate toast presentation onto the design system by @charleslpan in #3380
  • refactor(desktop): put navigation history behind an adapter by @dastratakos in #3395
  • refactor(desktop): migrate settings navigation and page frame onto the design system by @charleslpan in #3382
  • refactor(desktop): migrate bespoke settings-row adapters onto the design system by @charleslpan in #3386
  • fix(service): count only the steps a replay summary read by @dastratakos in #3397
  • refactor(desktop): migrate account settings onto the design system by @charleslpan in #3387
  • refactor(web): migrate the public site chrome onto the design system by @charleslpan in #3336
  • refactor(desktop): load the renderer's side bundles without fixed relative filenames by @dastratakos in #3376
  • refactor(desktop): migrate api-key settings onto the design system by @charleslpan in #3392
  • refactor(web): migrate the landing page onto PublicPage by @charleslpan in #3338
  • refactor(desktop): migrate workspace identity form onto the design system by @charleslpan in #3393
  • refactor(web): migrate the demo-video frame onto the design system by @charleslpan in #3339
  • refactor(desktop): migrate workspace member list onto the design system by @charleslpan in #3394
  • refactor: move the bridge contract and shortcuts into a package by @dastratakos in #3358
  • refactor(web): migrate the Open in Luke page onto the design system by @charleslpan in #3343
  • refactor(desktop): migrate workspace invitations onto the design system by @charleslpan in #3398
  • feat(ui): add a toolbar-framed variant to CollectionPage and DetailPage by @charleslpan in #3415
  • refactor(web): migrate the About page onto PublicPage by @charleslpan in #3346
  • refactor(desktop): migrate workspace github connections onto the design system by @charleslpan in #3399
  • feat(ui): let keyboard-driven lists drive ListRow by @charleslpan in #3417
  • refactor(web): migrate the Privacy page onto PublicPage by @charleslpan in #3349
  • refactor(desktop): migrate workspace linear connections onto the design system by @charleslpan in #3400
  • fix(ui): give a folding button its hint on the button itself by @charleslpan in #3424
  • refactor(desktop): migrate workspace leave and ownership transfer onto the design system by @charleslpan in #3401
  • refactor(host): move the act router and its platform-free rows into the host package by @dastratakos in #3421
  • refactor(web): migrate the changelog pages onto PublicPage by @charleslpan in #3351
  • refactor(desktop): migrate coding-agent defaults onto the design system by @charleslpan in #3402
  • feat(desktop,service): Chat reads and posts through the service, each channel on its own cursor by @charleslpan in #3389
  • refactor(desktop): migrate integration directory onto the design system by @charleslpan in #3403
  • feat(desktop): the task column's Chat tab, and chat rows open it by @charleslpan in #3390
  • refactor(desktop): migrate integration tool details onto the design system by @charleslpan in #3404
  • refactor(desktop): migrate integration connection controls onto the design system by @charleslpan in #3405
  • refactor(desktop): migrate voice settings onto the design system by @charleslpan in #3406
  • refactor(desktop): migrate voice key-binding editor onto the design system by @charleslpan in #3407
  • feat(web,desktop): a DM, a mention, or an ask for you is announced by @charleslpan in #3391
  • refactor(desktop): migrate notification settings onto the design system by @charleslpan in #3408
  • refactor(desktop): migrate plan-template editor onto the design system by @charleslpan in #3409
  • refactor(desktop): migrate experimental settings onto the design system by @charleslpan in #3410
  • refactor(desktop): migrate about/update page onto the design system by @charleslpan in #3411
  • refactor(desktop): migrate keyboard-shortcut reference onto the design system by @charleslpan in #3412
  • refactor(desktop): migrate settings reset flow onto the design system by @charleslpan in #3413
  • refactor(desktop): migrate home onto the design system by @charleslpan in #3414
  • refactor(desktop): migrate plans collection onto the design system by @charleslpan in #3416
  • refactor(desktop): migrate plan action menu and inline rename onto the design system by @charleslpan in #3418
  • refactor(desktop): migrate move-plan dialog onto the design system by @charleslpan in #3419
  • refactor(desktop): migrate plan board onto the design system by @charleslpan in #3420
  • fix(desktop): draw the space a chosen mention is followed by in the message box by @dastratakos in #3448
  • refactor(desktop): migrate inbox onto the design system by @charleslpan in #3422
  • Plan checkboxes in the app's blue, with no sideways shift between reading and editing by @dastratakos in #3450
  • fix(ui,desktop): a failure among rows stands as a row, Retry at its end by @dastratakos in #3451
  • feat(host): tell the renderer which platform capabilities it has by @dastratakos in #3430
  • feat(desktop): the window's words are selectable, its controls' are not by @dastratakos in #3455
  • refactor(desktop): migrate factory onto the design system by @charleslpan in #3423
  • fix(desktop): keep an empty task item a checkbox when a plan is edited by @dastratakos in #3452
  • start_agent takes an optional title by @dastratakos in #3299
  • refactor(desktop): migrate actor references onto the design system by @charleslpan in #3425
  • Let open_pull_request take a base branch by @dastratakos in #3301
  • refactor(desktop): migrate person page onto the design system by @charleslpan in #3426
  • feat(desktop): tick a plan's checkbox without opening the editor by @dastratakos in #3453
  • refactor(desktop): migrate agent profile onto the design system by @charleslpan in #3427
  • feat(desktop): drag an Issues card onto another column to move its status by @dastratakos in #3462
  • refactor(desktop): migrate automations collection onto the design system by @charleslpan in #3428
  • refactor(desktop): migrate automation editor frame onto the design system by @charleslpan in #3429
  • feat(service): start_agent can start an agent on a branch by @dastratakos in #3307
  • refactor(host): move the app-state store and its subscriptions into the host package by @dastratakos in #3464
  • refactor(desktop): migrate automation prompt field onto the design system by @charleslpan in #3431
  • feat(desktop): replay card shows when it was sent, and pages its steps newest first by @dastratakos in #3472
  • fix(host): send an inbox answer's files to the service by @dastratakos in #3475
  • fix(service,database): a line no turn takes reads its agent failed past its grace by @dastratakos in #3470
  • refactor(desktop): migrate schedule-trigger form onto the design system by @charleslpan in #3432
  • fix(service): an inbox post with a picture marks the sandbox opened by @dastratakos in #3484
  • fix(service): stop a Continue's woken sandbox in the background, sent as JSON by @dastratakos in #3478
  • feat(desktop): Continue opens a draft, keeps the refused line, and shows a loading state by @dastratakos in #3481
  • refactor(desktop): migrate code-review options onto the design system by @charleslpan in #3433
  • fix(desktop,service,database): an agent's mention, its card, and its message to another wear its harness's mark by @dastratakos in #3125
  • feat(database,features,service): an Inbox item holds a thread of messages by @dastratakos in #3469
  • refactor(desktop): migrate webhook-trigger form onto the design system by @charleslpan in #3434
  • feat(agents): list_models lists the models and efforts an agent may be started on by @dastratakos in #3310
  • refactor(host): declare the app-state snapshot as a Schema and drop the window's role by @dastratakos in #3488
  • feat(desktop,host,features): an Inbox thread draws its messages, and every item keeps its box by @dastratakos in #3486
  • feat(service): stop a continued agent, name its continue, and report continuations by @dastratakos in #3490
  • refactor(desktop): draw the automation editor's groups as shared settings sections by @charleslpan in #3435
  • fix(service): fit a continued agent's replay to its window by @dastratakos in #3476
  • feat(features,service,dev): the agent reads and replies on its Inbox threads by @dastratakos in #3482
  • refactor(desktop): migrate automation server-selection form onto the design system by @charleslpan in #3436
  • feat(service,desktop): start_agent can start an agent on a new task by @dastratakos in #3458
  • feat(desktop): polish the failed and continued end states, and name continuations once by @dastratakos in #3477
  • refactor(desktop): migrate automation run-destination form onto the design system by @charleslpan in #3437
  • refactor(desktop): migrate automation run history onto the design system by @charleslpan in #3438
  • feat(service,desktop): continue and fork include partial work up to the exact point by @dastratakos in #3495
  • fix(ui): let a settings-row text field report itself invalid by @charleslpan in #3505
  • refactor(desktop): migrate plan header onto the design system by @charleslpan in #3439
  • refactor(desktop): migrate document-editor frame onto the design system by @charleslpan in #3440
  • feat(service): agents can stop an agent with stop_agent by @dastratakos in #3460
  • refactor(desktop): migrate new-plan dialog onto the design system by @charleslpan in #3441
  • docs(skills): orchestrate on Luke's new agent tools by @dastratakos in #3511
  • refactor(desktop): migrate shared composer field onto the design system by @charleslpan in #3442
  • refactor(desktop): migrate agent composer onto the design system by @charleslpan in #3443
  • feat(service): let start_agent continue or fork another agent by @dastratakos in #3501
  • feat(ui): add a compact density for the web profile by @charleslpan in #3503
  • docs(skills): orchestrate restacks from main and hands a continued worker its PR by @dastratakos in #3513
  • refactor(desktop): migrate model picker onto the design system by @charleslpan in #3444
  • refactor(web): migrate the admin shell onto the design system by @charleslpan in #3504
  • refactor(desktop): migrate repository picker onto the design system by @charleslpan in #3445
  • refactor(desktop): migrate skill picker onto the design system by @charleslpan in #3446
  • refactor(web): migrate the admin chart frame onto the design system by @charleslpan in #3506
  • refactor(desktop): migrate mention picker onto the design system by @charleslpan in #3447
  • refactor(web): migrate the usage chart onto the design system by @charleslpan in #3507
  • refactor(desktop): migrate issue picker onto the design system by @charleslpan in #3449
  • refactor(web): migrate the signups chart onto the design system by @charleslpan in #3508
  • fix(service): an agent whose session ended for good reads as failed by @dastratakos in #3520
  • refactor(web): migrate the retention grid onto the design system by @charleslpan in #3509
  • refactor(desktop): migrate attachment chips onto the design system by @charleslpan in #3454
  • fix(service): a continue keeps its source's start branch and pull request by @dastratakos in #3519
  • fix(service): settle unconfirmed stops and stop stranding sandbox leases by @dastratakos in #3521
  • refactor(web): migrate the activity calendar onto the design system by @charleslpan in #3510
  • refactor(desktop): migrate transcript frame onto the design system by @charleslpan in #3456
  • refactor(desktop): migrate rendered markdown and code-block presentation onto the design system by @charleslpan in #3457
  • refactor(web): migrate the admin dashboard onto the design system by @charleslpan in #3512
  • refactor(desktop): migrate reasoning blocks onto the design system by @charleslpan in #3459
  • refactor(web): migrate the admin day screen onto the design system by @charleslpan in #3514
  • docs(skills): the orchestrate skill continues a dead worker itself by @dastratakos in #3522
  • refactor(desktop): migrate tool-result blocks onto the design system by @charleslpan in #3463
  • refactor(web): migrate the admin accounts table onto the design system by @charleslpan in #3515
  • refactor(desktop): migrate checkpoint blocks onto the design system by @charleslpan in #3465
  • refactor(web): migrate the admin users screen onto the design system by @charleslpan in #3516
  • refactor(desktop): migrate agent work frame onto the design system by @charleslpan in #3467
  • refactor(desktop): migrate agent delegation rows onto the design system by @charleslpan in #3468
  • refactor(web): migrate the admin account screen onto the design system by @charleslpan in #3517
  • refactor(desktop): migrate agent todo dock onto the design system by @charleslpan in #3471
  • refactor(desktop): migrate agent origin references onto the design system by @charleslpan in #3473
  • refactor(web): migrate the admin animations screen onto the design system by @charleslpan in #3518
  • refactor(desktop): migrate agent changes view onto the design system by @charleslpan in #3474
  • refactor(desktop): migrate agent server picker onto the design system by @charleslpan in #3480
  • refactor(desktop): migrate published-agent references onto the design system by @charleslpan in #3483
  • refactor(desktop): migrate draft-agent view onto the design system by @charleslpan in #3485
  • refactor(desktop): migrate version history onto the design system by @charleslpan in #3487
  • refactor(desktop): migrate file tree onto the design system by @charleslpan in #3489
  • refactor(desktop): migrate file-view chrome onto the design system by @charleslpan in #3491
  • refactor(desktop): migrate code/diff theme adapter onto the design system by @charleslpan in #3492
  • refactor(desktop): migrate terminal chrome onto the design system by @charleslpan in #3493
  • refactor(desktop): migrate whiteboard theme adapter onto the design system by @charleslpan in #3494
  • refactor(desktop): migrate media viewer onto the design system by @charleslpan in #3496
  • refactor(desktop): migrate call controls onto the design system by @charleslpan in #3497
  • refactor(desktop): migrate video tiles onto the design system by @charleslpan in #3498
  • refactor(desktop): migrate avatar frame onto the design system by @charleslpan in #3499
  • refactor(desktop): migrate captions onto the design system by @charleslpan in #3500
  • refactor(desktop): migrate dictation strip onto the design system by @charleslpan in #3502
  • refactor(desktop): remove the desktop's compatibility token aliases by @charleslpan in #3524
  • refactor(web): remove the web's compatibility token aliases by @charleslpan in #3525
  • refactor(ui): remove the remaining shared compatibility exports by @charleslpan in #3526
  • docs(ui): write the @luke/ui README by @charleslpan in #3527
  • feat(features): add the Factory world snapshot contract by @dastratakos in #3528
  • feat(ui): add the Factory world view model by @dastratakos in #3529
  • feat(database,service): keep a pull request's merge instant and per-directory line counts by @dastratakos in #3530
  • feat(service,web,host): read a workspace's Factory world by @dastratakos in #3531
  • feat(desktop): add the Factory world picker and scene host by @dastratakos in #3532
  • feat(desktop): add the Orbital Station Factory world by @dastratakos in #3533
  • fix(desktop): keep the Orbital Station in step with its state by @dastratakos in #3536
  • fix(ui): spread the Factory world layout across the whole ring by @dastratakos in #3535
  • feat(desktop): the Citadel Factory world by @dastratakos in #3538
  • feat(desktop): the Model Railway Factory world by @dastratakos in #3541
  • feat(desktop): add the Sky Archipelago Factory world by @dastratakos in #3537
  • feat(desktop): add the Neon Megacity Factory world by @dastratakos in #3534
  • feat(desktop): add the Factory world by @dastratakos in #3545
  • fix(desktop): keep the Citadel's blast roads, heart, and rings true across rebuilds by @dastratakos in #3542
  • feat(desktop): add the Ant Colony Factory world by @dastratakos in #3540
  • feat(desktop): the Atlantis Factory world by @dastratakos in #3544
  • test(desktop): hold the selected agent's sonar apart from Atlantis's landings by @dastratakos in #3546
  • feat(desktop): add the World Tree Factory world by @dastratakos in #3543
  • fix(desktop): make the Ant Colony world's layer-switch test fast enough to stay stable by @dastratakos in #3547
  • feat(desktop): add the Planet Factory world by @dastratakos in #3539
  • perf(desktop): paint the Ant Colony's soil once per process and cut its holes only when the burrows change by @dastratakos in #3548
  • refactor(desktop): draw the find-in-tab and Settings searches with the shared SearchField by @charleslpan in #3549
  • docs(agents): require the shared design system for UI by @charleslpan in #3551
  • feat(ui): add a retry row label and use it where a list foot can fail by @charleslpan in #3552
  • ci: warm the pnpm store cache on main and drop the per-commit turbo cache by @charleslpan in #3563
  • feat(ui): add InlineEdit and use it for task rename by @charleslpan in #3557
  • refactor(desktop): frame Issues, the issue board and Factory with the toolbar page frame by @charleslpan in #3559
  • refactor(desktop): read the shared tokens in tasks.css by @charleslpan in #3561
  • build(luke,dev): typecheck on TypeScript 7 by @charleslpan in #3564
  • refactor(desktop): draw the Issues list and Home rows with the shared ListRow by @charleslpan in #3556
  • refactor(desktop): read the shared tokens in the remaining desktop stylesheets by @charleslpan in #3560
  • ci(web): deploy no GitHub merge-queue branch to Vercel by @charleslpan in #3565
  • refactor(desktop): draw the automations list and run history rows with the shared ListRow by @charleslpan in #3555
  • feat(ui): give Text a mono face and truncation by @charleslpan in #3567
  • feat(ui): add SplitButton and use it for the Start agent button by @charleslpan in #3554
  • refactor(desktop,ui): build the searchable pickers on the shared Combobox by @charleslpan in #3558
  • feat(ui): add Card and frame the admin surfaces with it by @charleslpan in #3572
  • fix(copy): say task for the unit of work in prompts, refusals, and the chat's empty state by @charleslpan in #3577
  • refactor(desktop): read the shared tokens in desktop.css by @charleslpan in #3581
  • refactor(desktop): move the transcript Tailwind onto shared pieces and classes by @charleslpan in #3591
  • build(web): scope CHANGELOG.md and PRIVACY.md to web's tasks by @charleslpan in #3590
  • fix(service): end a coding sandbox's session after three hours by @charleslpan in #3597
  • feat(ui): add PopoverPanel by @charleslpan in #3573
  • refactor(desktop): rename workspaces, integration accounts and shells with InlineEdit by @charleslpan in #3596
  • refactor(desktop): put the window shell controls on the shared components by @charleslpan in #3574
  • refactor(desktop,ui): draw Inbox rows with the shared ListRow by @charleslpan in #3571
  • build: tag turbo's cache key with the platform by @charleslpan in #3600
  • build(database): refuse an in-place table or column rename in a new migration by @charleslpan in #3593
  • feat(ui): add DataTable and Pagination by @charleslpan in #3566
  • refactor(desktop): put the task column controls on the shared components by @charleslpan in #3582
  • refactor(packages): name the unit of work a task in the identifiers added since the rename by @charleslpan in #3603
  • feat(ui): lift the window-level roles into the shared tokens by @charleslpan in #3569
  • feat(ui): give Dialog title and actions slots by @charleslpan in #3599
  • feat(ui): add Disclosure by @charleslpan in #3578
  • refactor(desktop): build the mention picker on the shared Combobox by @charleslpan in #3553
  • feat(ui): add Breadcrumbs and use it in the file view and issue detail by @charleslpan in #3562
  • feat(ui): add Tabs by @charleslpan in #3570
  • perf(database): open each migrated test PGlite from a dump of the first by @charleslpan in #3588
  • Choose the video avatar from large faces rather than a pop-up by @dastratakos in #3257
  • feat(ui): give Chip tones, an icon-only form, widths and a removable form by @charleslpan in #3604
  • feat(ui): add TextLink and use it for the web quiet links by @charleslpan in #3602
  • feat(desktop): say when the Mac is offline by @dastratakos in #3523
  • refactor(apps): name the unit of work a task in the apps' identifiers, files, and classes by @charleslpan in #3605
  • fix(desktop): show placeholder rows while the Inbox is first read by @dastratakos in #3608
  • feat(ui): add a compact row-mark IconButton and a submit state by @charleslpan in #3598
  • feat(ui): add InlineRef by @charleslpan in #3586
  • feat(ui): give the settings patterns the slots the window reaches into by @charleslpan in #3594
  • Remove the Changes chip from an agent's composer by @dastratakos in #3607
  • refactor(web): put the admin screens on the shared components by @charleslpan in #3592
  • refactor(packages): name task-holding locals and params task, taskId, and tasks by @charleslpan in #3609
  • fix(desktop): open a list mixing bullets and task items editable in the plan editor by @dastratakos in #3610
  • fix(desktop): keep a dragged sidebar row under the pointer outside its list by @dastratakos in #3611
  • feat(desktop,service,features): labels, compact reviewers, and stack navigation in the Pull request tab's header by @dastratakos in #3268
  • test(web): unmount the admin shell's root so nothing runs after teardown by @charleslpan in #3614
  • feat(ui,desktop): an Inbox row reads as two lines, the last word in its thread under its title by @dastratakos in #3612
  • feat(ui): add NavItem and draw the sidebars with it by @charleslpan in #3579
  • refactor(apps): name task-holding locals and params task, taskId, and tasks by @charleslpan in #3613
  • feat(desktop): scroll the sidebar while a row is dragged at its edge by @dastratakos in #3616
  • feat(desktop): edit an issue's description in the plan's own editor by @dastratakos in #3615
  • fix(coder): keep a finished coding agent run under Vercel's retention by @dastratakos in #3617
  • feat(service,features,database): keep each member's read state on Inbox items by @dastratakos in #3618
  • feat(desktop): draw review threads on their lines in Files changed by @dastratakos in #3245
  • feat(ui): share one ProviderButton between web sign-in and the desktop sign-in gate by @charleslpan in #3580
  • feat(ui): give Avatar a square app shape, a glyph face and larger sizes by @charleslpan in #3585
  • feat(ui): add ChoiceList by @charleslpan in #3575
  • feat(desktop): pin an agent's pull request row over its composer by @dastratakos in #3624
  • fix(desktop): stand Factory's line in placeholder blocks while tasks are read by @dastratakos in #3628
  • fix(service): settle a coding agent's turn the moment eve says its session ended by @dastratakos in #3620
  • fix(desktop): centre the full-page spinners by @dastratakos in #3629
  • fix(service): draw a bot co-author by its App's logo by @dastratakos in #3623
  • fix(desktop): show the Inbox's skeleton while it first loads by @dastratakos in #3627
  • fix(desktop): draw the Issues board and an issue's page in blocks while they read by @dastratakos in #3632
  • feat(ui): give the public pages their missing slots by @charleslpan in #3584
  • fix(desktop): draw the person page's waits as skeletons, never a false Someone or empty line by @dastratakos in #3626
  • feat(desktop): say who created a task and who last edited it under the plan's title by @dastratakos in #3622
  • feat(service,features,desktop): a merge box on the Pull request tab, merging as the member who presses by @dastratakos in #3294
  • Service: default private, no-store on hosted JSON answers by @dastratakos in #3355
  • feat(service): origin guard for cookie-authenticated requests by @dastratakos in #3365
  • feat(ui): give TextField and TextArea the options callers lack by @charleslpan in #3587
  • fix(desktop): read the --luke-* roles where CSS still named retired tokens by @dastratakos in #3631
  • fix(desktop): draw Home in its own shape while the task list loads by @dastratakos in #3634
  • feat(desktop): list every file in Files changed, with a filter, collapse all, and stage-cli's keys by @dastratakos in #3304
  • refactor(packages,apps): name the in-process task properties taskId, task, and tasks by @charleslpan in #3621
  • fix(desktop): draw the Automations pages as skeletons while they read by @dastratakos in #3636
  • fix(desktop,host): say small panels are reading, or refused, rather than empty by @dastratakos in #3640
  • feat(desktop,service,features): show reactions in the Pull request tab's Conversation by @dastratakos in #3286
  • feat(ui): add a link-look button for inline text actions by @charleslpan in #3583
  • fix(desktop): show settings pages' skeletons while they read by @dastratakos in #3639
  • feat(ui): add the small shared bits callers hand-roll by @charleslpan in #3589
  • feat(ui,host,desktop): mark Inbox items read and unread by @dastratakos in #3633
  • feat(desktop,service,features): draw changed images before and after in Files changed by @dastratakos in #3638
  • chore(lint): refuse names that call the unit of work a plan by @charleslpan in #3630
  • fix(desktop): say a refused members read on the Person page, with Retry by @dastratakos in #3644
  • feat(service): accept the cookie session on hosted routes by @dastratakos in #3479
  • feat(service,features,desktop): close, reopen, and retitle an agent's pull request as the member who presses by @dastratakos in #3305
  • feat(service): keep one snapshot per agent sandbox by @charleslpan in #3595
  • feat(ui,desktop): swipe an Inbox row right to mark it read or unread by @dastratakos in #3641
  • feat(desktop,service,features): reviewer and label pickers in the Pull request tab's header by @dastratakos in #3309
  • fix(tasks): say when the workspaces or a task's work could not be read by @dastratakos in #3647
  • refactor(desktop): draw the issue page on @luke/ui's DetailPage by @dastratakos in #3642
  • style(ui): drop the focus ring from text fields by @charleslpan in #3606
  • feat(ui): let ListRow carry hints, a dense density and keep-focus presses by @charleslpan in #3576
  • fix(desktop): draw the folded title bar's offline mark as its buttons draw their glyphs by @dastratakos in #3650
  • revert(service): a coding sandbox's session lives the platform's 24 hours again by @charleslpan in #3651
  • feat(ui): give ErrorState actions beside Retry by @charleslpan in #3568
  • fix(desktop): keep a row carried out of its list within the sidebar by @dastratakos in #3649
  • docs: rewrite the README for Luke as it ships in 0.17 by @charleslpan in #3550
  • feat(ui): tune a row's swipe: a trackpad scroll never swipes, lifted fingers let go at once, a flick carries, and the row follows with no render by @dastratakos in #3653
  • perf(service): the sandbox image keeps Chromium's headless shell alone by @charleslpan in #3601
  • fix(desktop): archived agents' chips and Inbox rows wear their harness's mark by @dastratakos in #3637
  • docs(changelog): add screenshots to 0.15.0, 0.16.0, and 0.17.0 by @dastratakos in #3466
  • docs(skills): changelog screenshots never picture an experimental feature by @dastratakos in #3625
  • feat(desktop): open the plan's and an issue's text from a press on their empty room by @dastratakos in #3658
  • feat(desktop): show the empty state on an empty workspace's Issues board by @dastratakos in #3659
  • feat(desktop): show a toast's dismiss as a corner badge by @dastratakos in #3652
  • fix(desktop): drop the per-turn price from a failed or stopped agent's end line by @dastratakos in #3654
  • feat(desktop): answer an Inbox choice from a radio or checkbox list, with one rule for Enter by @dastratakos in #3662
  • build(database): refuse a new migration that renames or drops what old code reads by @dastratakos in #3663
  • feat(desktop,service,features): add and remove a reaction in the Pull request tab's Conversation by @dastratakos in #3619
  • feat(desktop): mark an Inbox row whose box holds a draft with the Draft pencil by @dastratakos in #3661
  • feat(desktop,service,features): open pull requests in their agent's Pull request tab across the window by @dastratakos in #3643
  • refactor(desktop): put the last small hand-made controls on the shared components by @charleslpan in #3669
  • style(desktop): snap the last literal sizes and colours to the shared tokens by @charleslpan in #3671
  • feat(desktop): answer an Inbox approval, to-do, and note in the message by @dastratakos in #3665
  • feat(desktop): reply to an Inbox thread by quoting the agent's words by @dastratakos in #3657
  • fix(desktop): list a teammate's items of agents with no task in the window's Inbox by @dastratakos in #3668
  • fix(desktop): draw the window in sRGB so an empty, loading column has no box by @dastratakos in #3461
  • feat(desktop,service,database): start a task from an issue and list it on the issue's page by @dastratakos in #3648
  • refactor(web): draw the admin sidebar with NavItem and size ProviderMark by option by @charleslpan in #3670
  • fix(ui): own the motion tokens the components read by @charleslpan in #3673
  • feat(desktop): stack an Inbox form's fields, its text fields composer fields by @dastratakos in #3672
  • feat(desktop): continue on the failed line's row, and continue an agent more than once by @dastratakos in #3635
  • feat(service,features,desktop): comment on an agent's pull request from the foot of its Conversation by @dastratakos in #3313
  • fix(desktop,ui): stop vertical scrollers from scrolling sideways by @dastratakos in #3677
  • refactor(panel): add @luke/panel with the bridge and platform doors by @dastratakos in #3655
  • feat(service): agents keep the developer's sidebar sections with create_section, delete_section, and move_task by @dastratakos in #3680
  • refactor(desktop): draw the searchable menus with the shared Menu and Combobox by @charleslpan in #3679
  • test(ui): drive the list row swipe tests on fake time by @charleslpan in #3683
  • feat(desktop): filter the Issues page by priority and creator, and hide settled issues gone quiet by @dastratakos in #3667
  • docs(changelog): leave experimental features out of the changelog by @dastratakos in #3685
  • refactor(desktop): put the remaining raw buttons on the shared buttons by @charleslpan in #3678
  • feat(service,features,desktop): comment on lines in Files changed, and count and discard the pending review by @dastratakos in #3646
  • feat(desktop): the Factory's pipeline bar picks out one layer: a rest previews it, a press keeps it by @dastratakos in #3675
  • fix(desktop): draw an issue in the plan's own document column by @dastratakos in #3691
  • refactor(desktop): stop app CSS restyling the shared components' insides by @charleslpan in #3674
  • refactor(panel): move the renderer runtime and app state into @luke/panel by @dastratakos in #3694
  • feat(desktop,service,features,host): sync Files changed's Viewed boxes with GitHub as the member by @dastratakos in #3645
  • feat(desktop): group the Issues List by status or by priority by @dastratakos in #3696
  • refactor(desktop): draw the last hand-made rows, folds and crumbs with the shared components by @charleslpan in #3676
  • feat(desktop): carry a dragged row as a floating copy, the sidebar and the board alike by @dastratakos in #3688
  • feat(desktop): filter the Inbox by tabs, group by None, and name a row's task in a chip by @dastratakos in #3682
  • feat(service,host,features): start a task and its first coding agent in one request by @dastratakos in #3698
  • fix(desktop): answer an Inbox item optimistically, and let no stale read bring it back by @dastratakos in #3681
  • feat(desktop): draw the Factory as a campus of task buildings in SVG by @dastratakos in #3687
  • feat(desktop): peek an issue beside the Issues board instead of leaving it by @dastratakos in #3664
  • refactor(desktop): draw the palette, terminal picker, and MCP popover rows with the shared components by @charleslpan in #3695
  • chore(release): bump the workspace to 0.18.0 and write its changelog by @charleslpan in #3703
  • refactor(panel): move the panel's leaf modules into @luke/panel by @dastratakos in #3700
  • feat(desktop,service,database): start an agent from an issue, and move its issue into progress as it starts by @dastratakos in #3693
  • refactor(web): put the last type and size literals on the shared tokens by @charleslpan in #3711
  • fix(ui): hover acts take their own room in a list row, and its title fades where they begin by @dastratakos in #3701
  • refactor(ui): ship WingFace's own styles and motion by @charleslpan in #3710
  • feat(desktop): choose whose Inbox items to list, group them by status, and sort by waiting longest by @dastratakos in #3692
  • feat(agents): add update_task to rename, pin, archive, and unarchive a task by @dastratakos in #3686
  • refactor: drop the people row from Files changed by @dastratakos in #3712
  • feat(desktop): choose a New task's Linear issue from its own chip, not the name field by @dastratakos in #3697
  • fix(host): Open on this Mac checks out a force-pushed branch instead of fast-forwarding by @charleslpan in #3278
  • fix(desktop): keep an Inbox read mark over every read until one holds the item changed since by @dastratakos in #3684
  • feat(desktop,ui): draw the sidebar Inbox count in the accent blue by @dastratakos in #3690
  • refactor(ui): size each shared component's glyphs itself by @charleslpan in #3720
  • refactor(desktop): finish the last hand-made controls and literals by @charleslpan in #3715
  • feat(desktop): draw the pull requests of an issue's tasks on its page and its card by @dastratakos in #3727
  • refactor(panel): ask the platform to apply session replay by @dastratakos in #3731
  • feat(service): name an untitled task after its first agent's title by @dastratakos in #3689
  • fix(service,desktop): only Settings changes the coding agents' default model by @charleslpan in #3718
  • refactor(ui,desktop): draw the palette's and terminal picker's list box with the shared ComboboxListBox by @dastratakos in #3736
  • refactor(desktop): move Home, a person's page, Automations, and the PR tab onto the page patterns by @dastratakos in #3732
  • fix(ui): draw the chart with the shared tokens, not the app's theme by @charleslpan in #3713
  • chore(desktop): take the time scrubber out of Factory by @dastratakos in #3735
  • feat(service): take a brief on tasks.start and hand it to Luke by @dastratakos in #3699
  • feat(ui,desktop): show an Inbox item's pictures and pages in its row by @dastratakos in #3660
  • feat(service): count the core loop server-side in PostHog by @charleslpan in #3708
  • refactor(desktop): draw the issue peek in the window's own side panel by @dastratakos in #3728
  • fix(ui): measure a clipped line again when its words change by @dastratakos in #3719
  • perf(desktop): draw only what changed in Files changed on a key or a scroll by @dastratakos in #3733
  • fix(service): report uncaught errors from web functions to Sentry and flush per request by @dastratakos in #3744
  • fix(coder): spare the agent's apply_patch and grep needless refusals by @charleslpan in #3706
  • fix(service): say a command's outcome was lost, not that the sandbox is gone, when Vercel's API drops it by @charleslpan in #3714
  • build(eve): upload the eve roots' source maps to Sentry by @dastratakos in #3742
  • fix(desktop): identify session replay on a mid-run sign-in and resume it after a deletion by @dastratakos in #3747
  • Fix the N+1 reads in the eve store hooks and the GitHub webhook by @charleslpan in #3704
  • feat(ui): add ScrollArea and move the simple pane bodies onto it by @dastratakos in #3741
  • fix(desktop): sample Sentry traces, pin the release, and fail a refused map upload by @dastratakos in #3734
  • feat(service,host): name an untitled task from its first turns with Luke by @charleslpan in #3738
  • Prefer starting helper agents on the agent's own task by @charleslpan in #3722
  • fix(service): erase PostHog recordings and events on account deletion by @dastratakos in #3737
  • Cut a Preview's database down to the team on its first build by @charleslpan in #3666
  • fix(desktop): line up the Automations list's owner and next-run columns by @dastratakos in #3750
  • fix(voice): hanging up keeps Luke working, and a call back rejoins his work by @charleslpan in #3196
  • refactor(panel): move the panel's second band into @luke/panel by @dastratakos in #3725
  • fix(web): strip auth params from every analytics address and pin off unasked capture by @dastratakos in #3746
  • feat(desktop): call every pull request and GitHub issue chip by its number by @dastratakos in #3716
  • perf(desktop): highlight Files changed off the main thread by @dastratakos in #3752
  • fix(desktop): send launch failures and Effect defects to Sentry by @dastratakos in #3755
  • fix(service): report swallowed startup failures and detached fibers to Sentry by @dastratakos in #3740
  • feat(tasks): archiving a task stops and archives its agents by @charleslpan in #3270
  • Keep agent tool errors answered to the model out of Sentry issues by @charleslpan in #3705
  • feat(desktop): start a coding agent from New task's prompt-first composer, with Plan mode for a call with Luke by @dastratakos in #3717
  • Revert "Cut a Preview's database down to the team on its first build" (#3666) by @charleslpan in #3765
  • fix(desktop): line up every tab's bar with the side panel's top row by @dastratakos in #3764
  • feat(luke): Luke writes the plan himself, in the background, and the notetaker is gone by @charleslpan in #3224
  • fix(analytics): count app:day_active once per account per UTC day across launches by @dastratakos in #3748
  • feat(inbox): put an archived task's items away in an Archived tab by @charleslpan in #3724
  • refactor(desktop): draw the Chat page with the shared components by @dastratakos in #3753
  • fix(desktop): hang a sidebar row's card beside the row, not its press by @dastratakos in #3760
  • fix(service): scrub credentials from the URLs Sentry receives by @dastratakos in #3756
  • feat(desktop): a Browser tab in the side panel, behind Settings › Experimental by @dastratakos in #3215
  • fix(desktop): drop removed Inbox items' media from memory by @dastratakos in #3761
  • fix(service): type server event categories by their wire vocabularies by @dastratakos in #3759
  • feat(web): identify website visitors where sign-in completes by @dastratakos in #3763
  • refactor(panel): hand the shell's bundles in, and move the side-bundle loader into @luke/panel by @dastratakos in #3768
  • refactor(features): retire dead product events and cover /api/events by @dastratakos in #3743
  • feat(voice): one stop for Luke, the stop key and the Call tab's Stop, call or no call by @charleslpan in #3656
  • refactor(ui,desktop): move the coupled desktop scrollers onto ScrollArea by @dastratakos in #3751
  • feat(desktop): start New task's agent in the task's own start by @dastratakos in #3771
  • refactor(panel): move the panel's fifth band into @luke/panel by @dastratakos in #3773
  • feat(analytics): stamp environment, packaged, and app_version on every event by @dastratakos in #3745
  • feat(desktop): hand Plan mode's words to Luke as the task's brief by @dastratakos in #3772
  • refactor(panel): move the panel's sixth band into @luke/panel by @dastratakos in #3774
  • feat(service,desktop): Send to a comment thread to Luke or a coding agent, and comment tools for both by @dastratakos in #3048
  • feat(desktop): open Home on New task's composer by @dastratakos in #3729
  • feat(desktop): comments answer the caret and the pointer, and read the same while editing by @dastratakos in #3197
  • feat(desktop): the Comments tab's view menu, scrolling, and lighter rows by @dastratakos in #3199
  • feat(desktop): @-mentions and Markdown in comments by @dastratakos in #3210
  • feat(desktop): comments without rails, a single-layer composer with dictation, and steadier rows by @dastratakos in #3259
  • feat(desktop): the Comments tab shows whole threads, with a quieter head and a Resolved toggle by @dastratakos in #3263
  • feat(service,desktop): @-mention Luke or an agent in a comment to send them the thread by @dastratakos in #3280
  • feat(desktop): comment gutter, borders, quote placement, event lines, empty states, and composer-style replies by @dastratakos in #3317
  • refactor(panel,desktop): draw numbered code lines with one view that scrolls through ScrollArea by @dastratakos in #3767
  • refactor(panel): move the panel's seventh band into @luke/panel by @dastratakos in #3775
  • refactor(panel): move the panel's root into @luke/panel by @dastratakos in #3777
  • feat(desktop): read what a start or a message sent another agent, whole, under its row by @dastratakos in #3730
  • fix(ui): widen the composer dialog to 720px so New task's foot stands on one row by @dastratakos in #3779
  • refactor(desktop,web,catalog): scroll only through @luke/ui, retire .scroll-fade, and allow scrolling CSS only in packages/ui by @dastratakos in #3778
  • fix(service): keep only a tool's refusal out of Sentry issues, and report what fails beneath a tool by @dastratakos in #3781
  • feat(service): agents change a coding agent with update_agent by @dastratakos in #3721
  • refactor(panel): move the panel's stylesheets into @luke/panel by @dastratakos in #3780
  • fix(host): show plan saves that land after the turn ends by @dastratakos in #3783
  • fix(panel): close the caret's comment thread when focus leaves the editor by @dastratakos in #3784
  • fix(voice): hand the brain a correction that joins an utterance already asked by @dastratakos in #3785
  • refactor(panel): move the last desktop-bound test helpers into @luke/panel by @dastratakos in #3787
  • fix(service,coder): cut the coding agent's eve build memory under Vercel's 8 GB machine by @dastratakos in https://github.com/ReviewStage/luke/pull/3786
  • fix(desktop): offer no box in a direct message between two others by @dastratakos in https://github.com/ReviewStage/luke/pull/3782
  • feat(desktop): name an agent's chat notice by its chip, and keep agent-only lines of notices and inbox lines off the screen by @dastratakos in https://github.com/ReviewStage/luke/pull/3749
  • feat(service): agents read a task of their workspace with read_task by @dastratakos in https://github.com/ReviewStage/luke/pull/3702
  • docs(panel): move the panel's half of the renderer's AGENTS.md into @luke/panel by @dastratakos in https://github.com/ReviewStage/luke/pull/3790
  • feat(desktop): expand context lines in Files changed by @dastratakos in https://github.com/ReviewStage/luke/pull/3762
  • fix(panel): keep the active comment thread highlighted where threads overlap by @dastratakos in https://github.com/ReviewStage/luke/pull/3791
  • feat(desktop): write chat on the agent box's editor, with dictation and the # list by @dastratakos in https://github.com/ReviewStage/luke/pull/3788
  • feat(panel): add a Markdown toolbar and suggestions to the comment field by @dastratakos in https://github.com/ReviewStage/luke/pull/3792
  • feat(service,desktop): mention people and agents in chat as chips, as every box does by @dastratakos in https://github.com/ReviewStage/luke/pull/3793
  • fix(release): pass the macOS release run's checks and build by @charleslpan in https://github.com/ReviewStage/luke/pull/3723
  • feat(desktop): list Files changed's keys in a ? sheet and on the Keyboard shortcuts page by @dastratakos in https://github.com/ReviewStage/luke/pull/3795
  • fix(desktop): minimize inline comments to one chip per line, as stage-cli does by @dastratakos in https://github.com/ReviewStage/luke/pull/3789
  • fix(release): staple again on a wait when Apple's ticket lookup drops by @charleslpan in https://github.com/ReviewStage/luke/pull/3800

Full Changelog: v0.17.0...v0.18.0