From 596bfb925e9496c3cb6ef48399e817658f70bb9e Mon Sep 17 00:00:00 2001 From: omartelo Date: Tue, 3 Nov 2026 21:32:37 -0300 Subject: [PATCH] chore: cut the 0.84.0 release notes --- CHANGELOG.md | 7 ++++--- changelog/es.md | 41 +++++++++++++++++++++++++++++++++++++++++ changelog/ja.md | 41 +++++++++++++++++++++++++++++++++++++++++ changelog/ko.md | 41 +++++++++++++++++++++++++++++++++++++++++ changelog/pt-BR.md | 41 +++++++++++++++++++++++++++++++++++++++++ changelog/ru.md | 41 +++++++++++++++++++++++++++++++++++++++++ changelog/zh-CN.md | 41 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 250 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f20dfae6e..ad34d3768 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.84.0] - 2026-11-03 + ### Added - The Conversation tab of a pull request on the Pulls screen shows each author's GitHub picture beside their reviews and comments, in a column down the left, the way GitHub does. Comments inside a review thread, on the Conversation tab and on the Files tab, are separated by a line. Until a picture loads, or for an account that has none, the author's initial stands in its place. @@ -15,7 +17,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - The lich plugin's theme skill, which writes, ports or fixes a lich color theme, now reaches opencode, oh-my-pi, Crush and Kiro CLI as `lich-theme`; it was only in Claude Code, Codex, Antigravity and Cursor CLI. In opencode it is the `/lich-theme` command. It arrives with the next install or update of the plugin from Settings › Providers. - opencode 2 runs in lich. lich tells it from opencode 1 by its version and opens it the way 2 expects: each session on a server of its own, so its profile, its model and lich's tools reach it, with forks, Unfold long pastes, profile logins and the OpenCode Go gauge working as they do on opencode 1. Conversations started in opencode 2, and opencode 1 ones it has continued, show their cost, closing words and search results again, and are listed in History. The card's spinner, ring, bell and title need the lich plugin's next release, installed from Settings › Providers, which now goes where opencode 2 reads plugins and takes the place of the copy an older lich installed. A session lich opens is not on opencode 2's shared background server, so `opencode pair` and the desktop app don't see it. - The Description heading on the Pulls screen's Overview has a ⋯ menu, as GitHub's comments do: Copy link copies the pull request's address, Copy Markdown its description as written, and Edit opens the description for editing, which the Edit button beside the heading did before. - - An agent can manage a project's services as the Services footer does: list, create, edit, delete, start, stop, force-stop and restart one, start or stop them all, and read what one has printed, running or stopped, with the `*_service` MCP tools or `lich service` from a terminal. A service is named by its name in the project, the agent's own unless it names another. ### Changed @@ -28,7 +29,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - On the Pulls screen, the button that sends a pull request's open review threads to its session sits in the header beside Open in Session, on every tab, at the size of the buttons around it. It was a small button at the top of the Conversation tab, out of sight once the conversation was scrolled. - The sidebar's resize strip sits on the sidebar's own right edge, as the Code and Review panel's does, instead of in the gap between the sidebar and the sessions. - The sidebar is a tree of sessions. A session is one line: its ring, its name, its pull request and changes, and a corner where a … under the pointer opens the session's menu, close included. What the card's other lines said moved to its tooltip: the tool the turn runs or what it waits on, for how long, the path and the model. Each checkout is a row of its own, with its branch, pull request and changes, and its sessions hang from it. A session another one opened (a fork, a session opened with `open_session` or `lich open`, a subagent card) hangs from the session that opened it, even when it runs in another worktree, and a mother folds her children away, keeping a count and the waiting or unread mark. Rows move by their line: as a mother opens, a session opens or a worktree or a folder appears, a row opens with its name already on it and the line runs down to it and draws its ring; folding or closing takes the name off, undraws the ring and runs the line back up, and a worktree's or a folder's last session leaving takes the worktree's row, or the folder, out after it. A folder sits on a tray, so where it ends shows. Pinning moved to the card's menu, which also copies the `lich reply` command of a request the session owes. A project with no worktree keeps a flat list. The collapsed sidebar shows the same tree in one column: each checkout's node, the line through its sessions, a child's smaller ring on its mother's line, and each folder on its tray, its rows coming and going by the same line. Dragging a session lets go of its line, shows a dashed slot where it will join the tree, and draws the line back to it once it lands; the folder or worktree it would be filed into lights up whole. A dragged mother takes her children with her, and a session only lands where the tree keeps it, never between a mother and her child. A session filed into a folder that wears a color takes that color, so the folder keeps it, whether you drag it there, pick the folder in its menu, or an agent files it with `file_session` or `lich file`; a session opened into a folder, a subagent's worker or the session that asked for it, wears it too. Dropping a session on a folder further down the sidebar files it again, where it went back to its place when a worktree above also took it. The collapsed sidebar drags sessions too, and its search button opens the same filter as the open sidebar, which keeps filtering the rail after its panel closes. - - On the Pulls screen's Overview, the Description heading and its ⋯ stay in place at the top of the column while the description scrolls under them, over a separator, and the ⋯ sits at the column's right edge. - The Pulls screen's loading placeholders match what loads in their place: the index shows rows the height of real ones with the checks column where it lands, filling the screen, and a pull request shows its title row with its buttons, the real tab strip, and the open tab's layout (the description beside its facts, commits, checks, the conversation's avatars and comments, or the files' toolbar, tree and cards) instead of a few generic bars. The conversation and the diff show the same placeholders while they load, in place of a line of text. @@ -6506,7 +6506,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 CPU, costing ~40ms per frame in a full-size window. Under Xwayland typing is stall-free at full frame rate. -[Unreleased]: https://github.com/lichdotdev/lich/compare/v0.83.0...HEAD +[Unreleased]: https://github.com/lichdotdev/lich/compare/v0.84.0...HEAD +[0.84.0]: https://github.com/lichdotdev/lich/compare/v0.83.0...v0.84.0 [0.83.0]: https://github.com/lichdotdev/lich/compare/v0.82.0...v0.83.0 [0.82.0]: https://github.com/lichdotdev/lich/compare/v0.81.0...v0.82.0 [0.81.0]: https://github.com/lichdotdev/lich/compare/v0.80.0...v0.81.0 diff --git a/changelog/es.md b/changelog/es.md index e835ba2ca..5f001d19a 100644 --- a/changelog/es.md +++ b/changelog/es.md @@ -1,3 +1,44 @@ +## [0.84.0] - 2026-11-03 + +### Added + +- La pestaña Conversación de un pull request en la pantalla Pull requests muestra la foto de GitHub de cada autor junto a sus revisiones y comentarios, en una columna a la izquierda, como hace GitHub. Los comentarios dentro de un hilo de revisión, en la pestaña Conversación y en la pestaña Archivos, se separan con una línea. Hasta que carga la foto, o si la cuenta no tiene ninguna, en su lugar aparece la inicial del autor. +- Las listas de tareas en las descripciones y los comentarios de pull requests muestran una casilla, marcada o no, en lugar de un `[x]` o un `[ ]` literal. +- Los encabezados de primer nivel en las descripciones y los comentarios de pull requests se subrayan a todo el ancho del texto, como en GitHub. +- La skill de temas del plugin de lich, que escribe, porta o corrige un tema de colores de lich, ahora llega a opencode, oh-my-pi, Crush y Kiro CLI como `lich-theme`; antes solo estaba en Claude Code, Codex, Antigravity y Cursor CLI. En opencode es el comando `/lich-theme`. Llega con la próxima instalación o actualización del plugin desde Ajustes › Proveedores. +- opencode 2 funciona en lich. lich lo distingue de opencode 1 por su versión y lo abre como 2 espera: cada sesión en un servidor propio, de modo que su perfil, su modelo y las herramientas de lich le llegan, con bifurcaciones, Desplegar pegados largos, inicios de sesión de perfil y el medidor de OpenCode Go funcionando igual que en opencode 1. Las conversaciones iniciadas en opencode 2, y las de opencode 1 que este ha continuado, vuelven a mostrar su coste, sus últimas palabras y sus resultados de búsqueda, y aparecen en Historial. El spinner, el anillo, la campana y el título de la tarjeta necesitan la próxima versión del plugin de lich, instalada desde Ajustes › Proveedores, que ahora va adonde opencode 2 lee los plugins y sustituye la copia que instaló un lich anterior. Una sesión que abre lich no está en el servidor compartido en segundo plano de opencode 2, así que `opencode pair` y la app de escritorio no la ven. +- El encabezado Descripción del Resumen de la pantalla Pull requests tiene un menú ⋯, como los comentarios de GitHub: Copiar enlace copia la dirección del pull request, Copiar Markdown su descripción tal como está escrita, y Editar abre la descripción para editarla, lo que antes hacía el botón Editar junto al encabezado. +- Un agente puede gestionar los servicios de un proyecto como lo hace el pie Servicios: listar, crear, editar, eliminar, iniciar, detener, forzar la detención y reiniciar uno, iniciarlos o detenerlos todos, y leer lo que uno ha impreso, en marcha o detenido, con las herramientas MCP `*_service` o `lich service` desde una terminal. Un servicio se nombra por su nombre en el proyecto, el del propio agente salvo que indique otro. + +### Changed + +- En tu propio pull request, la pantalla Pull requests ya no ofrece Aprobar ni Solicitar cambios, que GitHub rechaza al autor, y el menú del diff ya no ofrece un comentario sobre el pull request. El menú del diff también omite Comentar en el pull request cuando no hay líneas seleccionadas, donde antes lo mostraba desactivado. +- Las descripciones, los comentarios y las vistas previas de Markdown de los pull requests se leen mejor, con texto más brillante, encabezados y enlaces más claros, código en línea resaltado, más espacio entre líneas y bloques, y elementos de lista con salto de línea alineados con su texto. +- La pantalla Pull requests se abre en un índice de los pull requests del proyecto a todo el ancho de la pantalla, y un pull request se abre en su lugar en vez de junto a la lista. Un botón de volver sobre su título regresa al índice como lo dejaste; junto a él, el número abre un menú con los otros pull requests, y anterior y siguiente recorren el filtro del índice. En la pestaña Archivos solo el árbol de archivos queda junto al diff, que gana el ancho que ocupaba la lista. El Resumen pone la descripción junto a una columna con los revisores, las comprobaciones, la posibilidad de fusionar y el checkout donde está la rama; la barra de pestañas termina con el tamaño del pull request. Abrir en una sesión y Fusionar se quedan en el encabezado, con Resolver conflictos o Corregir errores de CI a su lado cuando el pull request lo necesita, y Aprobar, Actualizar y Abrir en GitHub pasan al menú ⋯. La pantalla se alinea con el espaciado de la barra lateral, sus botones tienen el tamaño de los del resto de la ventana, y el código sobre el que trata un hilo de revisión va en un bloque propio, aparte de los comentarios. En el índice, j y k o las flechas mueven, Enter abre y / va al filtro; en un pull request, Escape vuelve y Alt con una flecha pasa al anterior o al siguiente. +- El tema Dark incluido da a la interfaz y a la terminal el mismo fondo carbón neutro, eliminando el tono azul negruzco de la terminal, y usa una paleta de terminal y de sintaxis más brillante de verde, coral, ámbar, azul, violeta y cian. El tema Light usa versiones más oscuras de esos colores, ajustadas para dar contraste sobre su fondo de terminal claro. +- El navegador de una sesión ya no se cierra sin preguntar. Cuando ningún panel lo muestra y nadie lo ha usado en cinco minutos, un aviso pregunta si cerrarlo: Cerrar lo cierra, y Mantener abierto, o descartar el aviso deslizándolo, lo mantiene otros cinco minutos. Sin respuesta, el aviso sigue visible y el navegador abierto, así que una página dejada abierta durante el almuerzo sigue ahí cuando vuelves. Usar el navegador, o que lo use el agente, retira el aviso. Antes, el navegador se cerraba tras cinco minutos lejos de su sesión, y se perdían su página, sus pestañas y su inicio de sesión. +- En la pantalla Pull requests, el botón que envía los hilos de revisión abiertos de un pull request a su sesión está en el encabezado junto a Abrir en una sesión, en todas las pestañas, con el tamaño de los botones que lo rodean. Antes era un botón pequeño en la parte superior de la pestaña Conversación, fuera de vista en cuanto se desplazaba la conversación. +- La franja para redimensionar la barra lateral está en el borde derecho de la propia barra lateral, como la del panel Código y Revisión, en lugar de en el hueco entre la barra lateral y las sesiones. +- La barra lateral es un árbol de sesiones. Una sesión es una línea: su anillo, su nombre, su pull request y sus cambios, y una esquina donde un … bajo el puntero abre el menú de la sesión, con Cerrar incluido. Lo que decían las demás líneas de la tarjeta pasó a su tooltip: la herramienta que ejecuta el turno o lo que espera, durante cuánto tiempo, la ruta y el modelo. Cada checkout es una fila propia, con su rama, su pull request y sus cambios, y de ella cuelgan sus sesiones. Una sesión que abrió otra (una bifurcación, una sesión abierta con `open_session` o `lich open`, una tarjeta de subagente) cuelga de la sesión que la abrió, aunque se ejecute en otra worktree, y una sesión madre pliega a sus hijas, conservando un contador y la marca de espera o de sin leer. Las filas se mueven por su línea: al abrirse una madre, abrirse una sesión o aparecer una worktree o una carpeta, la fila se abre con su nombre ya puesto y la línea baja hasta ella y dibuja su anillo; al plegar o cerrar, se quita el nombre, se borra el anillo y la línea vuelve a subir, y cuando sale la última sesión de una worktree o de una carpeta, la fila de la worktree, o la carpeta, desaparece tras ella. Una carpeta se asienta sobre una bandeja, así que se ve dónde termina. Fijar pasó al menú de la tarjeta, que también copia el comando `lich reply` de una solicitud que la sesión debe responder. Un proyecto sin worktree mantiene una lista plana. La barra lateral contraída muestra el mismo árbol en una columna: el nodo de cada checkout, la línea que atraviesa sus sesiones, el anillo más pequeño de una hija sobre la línea de su madre, y cada carpeta sobre su bandeja, con sus filas yendo y viniendo por la misma línea. Arrastrar una sesión la suelta de su línea, muestra un hueco discontinuo donde se unirá al árbol, y vuelve a dibujar la línea hasta ella cuando cae; la carpeta o worktree en la que se archivaría se ilumina entera. Una madre arrastrada se lleva a sus hijas, y una sesión solo cae donde el árbol la admite, nunca entre una madre y su hija. Una sesión archivada en una carpeta que lleva color toma ese color, de modo que la carpeta lo conserva, ya sea que la arrastres allí, elijas la carpeta en su menú o un agente la archive con `file_session` o `lich file`; una sesión abierta en una carpeta, el trabajador de un subagente o la sesión que lo pidió, también lo lleva. Soltar una sesión sobre una carpeta más abajo en la barra lateral la archiva de nuevo, donde antes volvía a su sitio si una worktree situada encima también la recogía. La barra lateral contraída también arrastra sesiones, y su botón de búsqueda abre el mismo filtro que la barra abierta, que sigue filtrando la barra contraída después de cerrar su panel. +- En el Resumen de la pantalla Pull requests, el encabezado Descripción y su ⋯ se quedan fijos en la parte superior de la columna mientras la descripción se desplaza por debajo, sobre un separador, y el ⋯ queda en el borde derecho de la columna. +- Los marcadores de posición de carga de la pantalla Pull requests coinciden con lo que se carga en su lugar: el índice muestra filas de la altura de las reales con la columna de comprobaciones donde caerá, llenando la pantalla, y un pull request muestra su fila de título con sus botones, la barra de pestañas real y el diseño de la pestaña abierta (la descripción junto a sus datos, los commits, las comprobaciones, los avatares y comentarios de la conversación, o la barra de herramientas, el árbol y las tarjetas de los archivos) en vez de unas pocas barras genéricas. La conversación y el diff muestran los mismos marcadores mientras cargan, en lugar de una línea de texto. + +### Fixed + +- Una revisión, una respuesta u otra acción sobre un pull request que GitHub rechaza explica el motivo, como una revisión pendiente dejada abierta en github.com o un comentario en una línea fuera del diff. Antes, todo rechazo decía «gh could not complete the request», porque el motivo que enviaba GitHub se descartaba. +- Un comentario de revisión pendiente bajo su línea en la pestaña Archivos de la pantalla Pull requests tiene Editar y Descartar, como en la pestaña Conversación. Antes, solo se podía cambiar o descartar desde la pestaña Conversación. +- En la pestaña Archivos de la pantalla Pull requests, expandir las líneas ocultas entre cambios, previsualizar un archivo Markdown y mostrar una imagen funcionan en un pull request cuya rama no está en checkout en ningún sitio. Fallaban con «Couldn't read» el archivo, porque lich lo buscaba en una carpeta con el nombre de la dirección del pull request. +- La pestaña de un pull request en la pantalla Pull requests se abre en su parte superior. Antes, se abría donde estaba desplazada la pestaña o el pull request anterior, así que la pestaña Conversación podía abrirse al final. +- El código citado en un hilo de revisión de la pantalla Pull requests muestra su sangría en vez de un recuadro por cada tabulación. +- Un campo de archivo en el navegador de la sesión, como la subida de una foto de perfil, abre el selector de archivos del sistema al hacer clic, y admite varios archivos cuando el campo lo permite. Antes, el clic no hacía nada. +- Salir de una página del navegador de la sesión que pregunta antes de irte ya no recarga la página en una máquina ocupada; el navegador va adonde iba. +- Un agente que hace clic en un punto del navegador de la sesión ya no falla tras mover lich a otro monitor, redimensionar el panel del navegador o cambiar su zoom. Sus capturas están ahora en los mismos píxeles que sus clics, que un monitor HiDPI o un zoom de página había hecho hasta 1,5 veces mayores, y un clic en un punto leído de una captura tomada antes de que el panel cambiara de tamaño se rechaza, indicando al agente que tome una nueva. +- lich ya no mantiene ocupada la GPU mientras una sesión trabaja. El spinner de una pestaña de proyecto redibujaba toda la ventana a la frecuencia de refresco del monitor, y con sesiones ocupadas en más de un proyecto lich retenía más de la mitad de la GPU de un portátil, quitándosela a los juegos y a todo lo demás. Cada spinner, el anillo de ocupado de la barra lateral y el latido de un servicio en marcha se redibujan ahora como máximo 24 veces por segundo, y 8 veces por segundo mientras la ventana de lich no tiene el foco, de modo que el anillo de una sesión se sigue viendo girar desde otro monitor. El punto de un servicio en marcha late cada seis segundos en lugar de cada dos y medio: cada latido es una ráfaga de fotogramas, y el ritmo anterior eran ocho fotogramas por segundo todo el día para un punto. +- Mientras una sesión trabaja, la ventana dibuja 24 fotogramas por segundo, la frecuencia del cine, en lugar de 30, y la salida de la terminal de la sesión se dibuja en el siguiente fotograma del anillo de ocupado en vez de pedir fotogramas propios: un agente que emite y un anillo que gira cuestan una sola frecuencia de fotogramas, no la suma de las dos. Lo que escribes se sigue viendo en el momento en que la terminal lo repite. +- La terminal ya no redibuja la fila del cursor en cada fotograma mientras el cursor no se mueve; la fila se recompone cuando el cursor se mueve o cambia su texto. +- En Linux, la ventana dibuja solo lo que cambió desde el último fotograma y avisa de esa área al compositor, en lugar de repintarlo todo 24 veces por segundo mientras una sesión trabaja: un fotograma en el que solo giró el anillo de ocupado dibuja el anillo y la fila del cursor de la terminal, y el trabajo de la tarjeta gráfica en el renderizador de la ventana baja a una quinceava parte. Windows y macOS siguen dibujando fotogramas completos. `GIO_DAMAGE=off` en el entorno dibuja fotogramas completos también en Linux, para un controlador gráfico que informa mal de lo que contienen sus búferes. +- La ventana de lich usa la mitad del procesador que usaba mientras una sesión trabaja. Cada icono, anillo y arco en pantalla se reconstruía a partir de su contorno en cada fotograma; ahora cada uno se construye una vez y se conserva en la tarjeta gráfica. + ## [0.83.0] - 2026-10-29 ### Added diff --git a/changelog/ja.md b/changelog/ja.md index ded77a30b..558344cbf 100644 --- a/changelog/ja.md +++ b/changelog/ja.md @@ -1,3 +1,44 @@ +## [0.84.0] - 2026-11-03 + +### Added + +- プルリクエスト画面(Pulls)のプルリクエストの会話タブに、各投稿者の GitHub のアイコンがレビューやコメントの横に表示されます。GitHub と同じように、左側の列に縦に並びます。会話タブとファイルタブで、レビュースレッド内のコメントは線で区切られます。アイコンが読み込まれるまで、またはアイコンのないアカウントでは、投稿者のイニシャルが代わりに表示されます。 +- プルリクエストの説明とコメントのタスクリストが、文字どおりの `[x]` や `[ ]` の代わりに、チェック済みかどうかを示すチェックボックスで表示されます。 +- プルリクエストの説明とコメントの最上位の見出しに、GitHub と同じように、テキストの幅いっぱいの下線が付きます。 +- lich 配色テーマを作成・移植・修正する lich プラグインのテーマスキルが、opencode、oh-my-pi、Crush、Kiro CLI にも `lich-theme` として届くようになりました。これまでは Claude Code、Codex、Antigravity、Cursor CLI にしかありませんでした。opencode では `/lich-theme` コマンドになります。設定 › プロバイダーからプラグインを次にインストールまたはアップデートしたときに届きます。 +- opencode 2 が lich で動きます。lich はバージョンで opencode 1 と見分け、opencode 2 が求める方法で起動します。各セッションが専用のサーバーで動くため、プロファイル、モデル、lich のツールが届き、フォーク、長い貼り付けを展開、プロファイルのログイン、OpenCode Go のゲージも opencode 1 と同じように動作します。opencode 2 で始めた会話と、opencode 2 が続きを書いた opencode 1 の会話は、コスト、締めの言葉、検索結果が再び表示され、履歴に一覧されます。カードのスピナー、リング、ベル、タイトルには lich プラグインの次のリリースが必要で、設定 › プロバイダーからインストールします。このプラグインは opencode 2 がプラグインを読み込む場所に入り、古い lich がインストールしたコピーを置き換えます。lich が開いたセッションは opencode 2 の共有バックグラウンドサーバー上にないため、`opencode pair` とデスクトップアプリからは見えません。 +- プルリクエスト画面(Pulls)の概要にある説明の見出しに、GitHub のコメントと同じ ⋯ メニューが付きました。リンクをコピーはプルリクエストのアドレスを、Markdown をコピーは説明を書かれたままコピーし、編集は説明を編集用に開きます。これまでは見出しの横の編集ボタンがその役目でした。 +- エージェントが、フッターのサービスと同じように、プロジェクトのサービスを管理できます。サービスの一覧表示、作成、編集、削除、開始、停止、強制停止、再起動、すべての開始または停止、実行中でも停止中でも出力の読み取りが、`*_service` MCP ツール、またはターミナルからの `lich service` でできます。サービスはプロジェクト内の名前で指定し、別の名前を指定しない限りエージェント自身のものになります。 + +### Changed + +- 自分のプルリクエストでは、プルリクエスト画面(Pulls)に承認も変更をリクエストも表示されなくなりました。GitHub は作成者によるこれらを拒否します。また、差分のメニューにプルリクエストにコメントも表示されません。差分のメニューは、行が選択されていないときも、これまでのように無効な状態で表示するのではなく、プルリクエストにコメントを表示しません。 +- プルリクエストの説明、コメント、Markdown プレビューが読みやすくなりました。テキストが明るくなり、見出しとリンクがはっきりし、インラインコードがハイライトされ、行とブロックの間隔が広がり、折り返されたリスト項目がテキストに揃います。 +- プルリクエスト画面(Pulls)は、プロジェクトのプルリクエストの一覧を画面全体に表示して開き、プルリクエストは一覧の横ではなくその場所で開きます。タイトルの上の戻るボタンで、残したままの一覧に戻れます。その横の番号は他のプルリクエストのメニューを開き、前へ・次へは一覧のフィルターに沿って移動します。ファイルタブでは、差分の横にファイルツリーだけが並び、一覧が占めていた幅が差分に加わります。概要では、説明の横の列にレビュアー、チェック、マージ可能かどうか、ブランチのあるチェックアウトが並び、タブの右端にはプルリクエストの大きさが表示されます。セッションで開くとマージはヘッダーに残り、プルリクエストに必要なときはコンフリクトを解決または CI のエラーを修正がその横に並びます。承認、更新、GitHub で開くは ⋯ メニューに移りました。画面はサイドバーの余白に揃い、ボタンはウィンドウのほかの部分と同じ大きさになり、レビュースレッドが指すコードはコメントとは別の専用ブロックに表示されます。一覧では、j と k または矢印キーで移動、Enter で開く、/ でフィルターに移動します。プルリクエストでは、Esc で戻り、Alt と矢印キーで前後のプルリクエストに移動します。 +- 同梱のダークテーマは、インターフェースとターミナルに同じニュートラルなチャコールの背景を使い、ターミナルの青黒い色味をなくしました。ターミナルとシンタックスには、緑、コーラル、アンバー、青、紫、シアンの明るいパレットを使います。ライトテーマは、それらの色の暗い対応色を使い、明るいターミナル背景でのコントラストに合わせて調整されています。 +- セッションのブラウザが、確認なしに閉じられることはなくなりました。どのペインにも表示されず、5 分間誰も使っていないとき、トーストが閉じるかどうかを尋ねます。閉じるでブラウザを閉じ、開いたままにする、またはトーストをスワイプして消すと、さらに 5 分間そのままにします。応答がなければトーストは表示されたままブラウザも開いたままなので、昼食のあいだ開いたままにしたページは戻ったときもそこにあります。ブラウザを使う、またはエージェントが使うと、トーストは消えます。以前は、セッションから 5 分離れるとブラウザが閉じられ、ページ、タブ、ログインが失われていました。 +- プルリクエスト画面(Pulls)で、プルリクエストの未解決のレビュースレッドをセッションに送るボタンが、すべてのタブでヘッダーのセッションで開くの横に、周りのボタンと同じ大きさで表示されます。これまでは会話タブの上部にある小さなボタンで、会話をスクロールすると見えなくなりました。 +- サイドバーのサイズ変更用のストリップが、コードとレビューのパネルと同じように、サイドバー自身の右端にあります。これまではサイドバーとセッションの間のすき間にありました。 +- サイドバーがセッションのツリーになりました。セッションは 1 行で、リング、名前、プルリクエストと変更、そしてポインターを置くと … が現れてセッションのメニュー(閉じるを含む)を開く隅があります。カードのほかの行にあった内容はツールチップに移りました。ターンが実行しているツールまたは待っている内容、その時間、パス、モデルです。各チェックアウトは独立した行で、ブランチ、プルリクエスト、変更が表示され、そのセッションがぶら下がります。別のセッションが開いたセッション(フォーク、`open_session` や `lich open` で開いたセッション、サブエージェントのカード)は、別のワークツリーで動いていても、開いた元のセッションにぶら下がり、親は子を折りたたんで、件数と待機中または未読のマークを残します。行は線に沿って動きます。親が開く、セッションが開く、ワークツリーやフォルダーが現れるときは、行が名前を載せたまま開き、線がそこまで伸びてリングを描きます。折りたたむか閉じるときは、名前が消え、リングが消え、線が上へ戻ります。ワークツリーやフォルダーの最後のセッションがなくなると、そのワークツリーの行またはフォルダーも続いて消えます。フォルダーはトレイの上にあるため、どこで終わるかがわかります。ピン留めはカードのメニューに移り、そこではセッションが返答する義務のあるリクエストの `lich reply` コマンドもコピーできます。ワークツリーのないプロジェクトはフラットな一覧のままです。折りたたんだサイドバーも同じツリーを 1 列で表示します。各チェックアウトのノード、そのセッションを通る線、親の線上の子の小さなリング、トレイの上の各フォルダーが並び、行は同じ線で現れたり消えたりします。セッションをドラッグすると、そのセッションが線から離れ、ツリーに加わる位置に破線のスロットが表示され、ドロップすると線が再びそこまで引かれます。ファイリング先になるフォルダーやワークツリーは全体が光ります。ドラッグした親は子を連れて動き、セッションはツリーが受け入れる場所にしか置けず、親と子の間には入りません。色の付いたフォルダーにファイリングしたセッションはその色になり、ドラッグした場合も、フォルダーのメニューで選んだ場合も、エージェントが `file_session` や `lich file` でファイリングした場合も、フォルダーがその色を保ちます。フォルダーに開いたセッション、サブエージェントのワーカー、それを依頼したセッションも、その色になります。サイドバーのさらに下にあるフォルダーにセッションをドロップすると再びファイリングされ、上のワークツリーも受け入れる場合は元の位置に戻っていました。折りたたんだサイドバーでもセッションをドラッグでき、その検索ボタンは開いたサイドバーと同じフィルターを開き、パネルが閉じたあともレールを絞り込み続けます。 +- プルリクエスト画面(Pulls)の概要で、説明の見出しとその ⋯ は、説明がその下をスクロールしても列の上部に区切り線とともに留まり、⋯ は列の右端にあります。 +- プルリクエスト画面(Pulls)の読み込み中のプレースホルダーが、代わりに読み込まれるものに合わせた形になりました。一覧は実際の行と同じ高さで、チェックの列が実際の位置にあり、画面を埋めます。プルリクエストはボタン付きのタイトル行、実際のタブ、開いたタブのレイアウト(説明とその横の情報、コミット、チェック、会話のアイコンとコメント、またはファイルのツールバー、ツリー、カード)を表示し、汎用のバーをいくつか並べることはありません。会話と差分も、読み込み中は 1 行のテキストの代わりに同じプレースホルダーを表示します。 + +### Fixed + +- GitHub が拒否したレビュー、返信、その他のプルリクエスト操作について、github.com に保留中のレビューが残っている、差分の外の行へのコメント、といった理由が表示されます。以前は、GitHub が返した理由が捨てられていたため、拒否はすべて「gh could not complete the request」と表示されていました。 +- プルリクエスト画面(Pulls)のファイルタブで、行の下の保留中のレビューコメントに、会話タブと同じ編集と破棄が付きました。以前は、会話タブからしか変更も破棄もできませんでした。 +- プルリクエスト画面(Pulls)のファイルタブで、変更の間に隠れた行の展開、Markdown ファイルのプレビュー、画像の表示が、ブランチがどこにもチェックアウトされていないプルリクエストでも動きます。lich がプルリクエストのアドレスにちなんだ名前のフォルダーでファイルを探していたため、ファイルを読み取れませんでしたと表示されて失敗していました。 +- プルリクエスト画面(Pulls)のプルリクエストのタブが、先頭から開きます。以前は、前のタブやプルリクエストでスクロールしていた位置で開いたため、会話タブが末尾で開くことがありました。 +- プルリクエスト画面(Pulls)のレビュースレッドで引用されたコードが、タブごとに四角を表示せず、インデントを表示します。 +- セッションのブラウザのファイル入力(プロフィール画像のアップロードなど)が、クリックするとシステムのファイル選択ダイアログを開き、入力が許可していれば複数のファイルを受け付けます。以前は、クリックしても何も起こりませんでした。 +- セッションのブラウザで、離れる前に確認するページの離れるが、負荷の高いマシンでページを代わりに再読み込みすることがなくなりました。ブラウザは行こうとしていた場所に移動します。 +- エージェントがセッションのブラウザ上の点をクリックしても、lich を別のモニターに移す、ブラウザのペインをリサイズする、ズームを変更するといった操作のあとでずれなくなりました。スクリーンショットはクリックと同じピクセルになり、以前は HiDPI モニターやページのズームのために最大 1.5 倍大きくなっていました。ペインのサイズが変わる前に撮ったスクリーンショットから読み取った点へのクリックは拒否され、エージェントに新しく撮り直すよう伝えます。 +- セッションが動作しているあいだ、lich が GPU を占有し続けなくなりました。プロジェクトタブのスピナーがモニターのリフレッシュレートでウィンドウ全体を再描画しており、複数のプロジェクトでセッションが動作していると、lich はノート PC の GPU の半分以上を握り、ゲームなどほかのものから奪っていました。すべてのスピナー、サイドバーの実行中のリング、実行中サービスの拍動は、最大でも 1 秒に 24 回、lich のウィンドウにフォーカスがないときは 1 秒に 8 回までの再描画になったので、別のモニターからでもセッションのリングが回っているのが見えます。実行中サービスのドットの拍動は、2.5 秒ごとから 6 秒ごとになりました。拍動ごとにフレームがまとめて発生し、以前のペースではドット 1 つのために 1 日中 1 秒に 8 フレームを描いていました。 +- セッションが動作しているあいだ、ウィンドウは 30 ではなく映画のレートである 1 秒に 24 フレームを描画し、セッションのターミナルの出力は独自にフレームを要求せず、実行中のリングの次のフレームで描画されます。ストリーミングするエージェントと回転するリングのコストは、2 つの合計ではなく 1 つのフレームレート分になります。入力した文字は、ターミナルがエコーした瞬間に表示されます。 +- カーソルが動かないあいだ、ターミナルはフレームごとにカーソルの行を再描画しなくなりました。カーソルが動くか、テキストが変わったときに行が再構成されます。 +- Linux では、セッションが動作しているあいだ 1 秒に 24 回すべてを再描画する代わりに、ウィンドウは前のフレームから変わった部分だけを描画してコンポジターにその領域を伝えます。実行中のリングだけが回ったフレームは、リングとターミナルのカーソル行だけを描画し、ウィンドウのレンダラーでのグラフィックスカードの作業は 15 分の 1 に減ります。Windows と macOS は引き続きフレーム全体を描画します。環境に `GIO_DAMAGE=off` を設定すると、バッファの内容を誤って報告するグラフィックスドライバー向けに、Linux でもフレーム全体を描画します。 +- セッションが動作しているあいだ、lich のウィンドウが使うプロセッサが半分になりました。画面上のすべてのアイコン、リング、円弧が、フレームごとにアウトラインから作り直されていました。いまはそれぞれ 1 度だけ作られ、グラフィックスカード上に保持されます。 + ## [0.83.0] - 2026-10-29 ### Added diff --git a/changelog/ko.md b/changelog/ko.md index b52d0a4cb..45688d752 100644 --- a/changelog/ko.md +++ b/changelog/ko.md @@ -1,3 +1,44 @@ +## [0.84.0] - 2026-11-03 + +### Added + +- 풀 리퀘스트 화면에서 풀 리퀘스트의 대화 탭은 GitHub처럼 왼쪽 열에 각 작성자의 GitHub 프로필 사진을 리뷰와 코멘트 옆에 보여 줍니다. 대화 탭과 파일 탭에서 리뷰 스레드 안의 코멘트는 선으로 구분됩니다. 사진이 로드되기 전이나 사진이 없는 계정에는 작성자의 이니셜이 그 자리를 채웁니다. +- 풀 리퀘스트 설명과 코멘트의 작업 목록이 문자 그대로의 `[x]`나 `[ ]` 대신 체크 여부가 표시된 체크박스를 보여 줍니다. +- 풀 리퀘스트 설명과 코멘트의 최상위 제목은 GitHub처럼 텍스트 너비 전체에 밑줄이 그어집니다. +- lich 색상 테마를 작성, 포팅, 수정하는 lich 플러그인의 테마 스킬이 이제 opencode, oh-my-pi, Crush, Kiro CLI에도 `lich-theme`로 제공됩니다. 이전에는 Claude Code, Codex, Antigravity, Cursor CLI에만 있었습니다. opencode에서는 `/lich-theme` 명령입니다. 설정 › 프로바이더에서 플러그인을 다음에 설치하거나 업데이트할 때 적용됩니다. +- opencode 2가 lich에서 실행됩니다. lich는 버전으로 opencode 1과 구분하고 2가 기대하는 방식으로 엽니다. 세션마다 자체 서버를 두므로 프로필, 모델, lich의 도구가 전달되며, 포크, 긴 붙여넣기 펼치기, 프로필 로그인, OpenCode Go 게이지가 opencode 1에서와 같이 동작합니다. opencode 2에서 시작한 대화와 그것이 이어 간 opencode 1 대화는 다시 비용, 마무리 말, 검색 결과를 보여 주고 기록에 나열됩니다. 카드의 스피너, 링, 벨, 제목에는 설정 › 프로바이더에서 설치하는 lich 플러그인의 다음 릴리스가 필요하며, 이 릴리스는 이제 opencode 2가 플러그인을 읽는 위치에 설치되고 이전 lich가 설치한 사본을 대체합니다. lich가 연 세션은 opencode 2의 공유 백그라운드 서버에 없으므로 `opencode pair`와 데스크톱 앱에서는 보이지 않습니다. +- 풀 리퀘스트 화면 개요의 설명 제목에 GitHub의 코멘트처럼 ⋯ 메뉴가 있습니다. 링크 복사는 풀 리퀘스트의 주소를, Markdown 복사는 작성된 그대로의 설명을 복사하고, 편집은 설명을 편집하도록 엽니다. 이전에는 제목 옆의 편집 버튼이 그 역할을 했습니다. +- 에이전트가 서비스 푸터에서처럼 프로젝트의 서비스를 관리할 수 있습니다. 서비스를 나열, 생성, 편집, 삭제, 시작, 중지, 강제 중지, 재시작하고, 모든 서비스를 시작하거나 중지하며, 실행 중이든 중지되었든 서비스가 출력한 내용을 `*_service` MCP 도구나 터미널의 `lich service`로 읽을 수 있습니다. 서비스는 프로젝트 안의 이름으로 지정하며, 다른 이름을 지정하지 않으면 에이전트 자신의 서비스입니다. + +### Changed + +- 내 풀 리퀘스트에서는 풀 리퀘스트 화면이 더 이상 GitHub가 작성자에게 거부하는 승인이나 변경 요청을 제공하지 않으며, diff의 메뉴도 풀 리퀘스트에 코멘트를 제공하지 않습니다. 또한 선택한 줄이 없을 때 diff의 메뉴는 풀 리퀘스트에 코멘트를 비활성 상태로 보여 주던 것을 없앴습니다. +- 풀 리퀘스트 설명, 코멘트, Markdown 미리 보기가 더 읽기 쉬워졌습니다. 텍스트가 더 밝고, 제목과 링크가 더 뚜렷하며, 인라인 코드가 강조되고, 줄과 블록 사이 여백이 넓어졌으며, 줄바꿈된 목록 항목이 텍스트에 맞춰 정렬됩니다. +- 풀 리퀘스트 화면은 화면 전체에 프로젝트의 풀 리퀘스트 목록을 보여 주며 열리고, 풀 리퀘스트는 목록 옆이 아니라 그 자리에서 열립니다. 제목 위의 뒤로 가기 버튼은 떠날 때 그대로의 목록으로 돌아가고, 그 옆에서 번호를 누르면 다른 풀 리퀘스트의 메뉴가 열리며, 이전과 다음은 목록의 필터를 따라 이동합니다. 파일 탭에서는 파일 트리만 diff 옆에 있고, diff는 목록이 차지하던 너비를 얻습니다. 개요는 설명을 리뷰어, 체크, 병합 가능 여부, 브랜치가 있는 체크아웃이 담긴 열 옆에 놓으며, 탭 줄은 풀 리퀘스트의 크기로 끝납니다. 세션에서 열기와 병합은 헤더에 남고, 풀 리퀘스트에 필요하면 충돌 해결이나 CI 오류 고치기가 그 옆에 놓이며, 승인, 새로 고침, GitHub에서 열기는 ⋯ 메뉴로 옮겨 갑니다. 화면은 사이드바의 간격에 맞춰지고 버튼은 창의 나머지와 같은 크기이며, 리뷰 스레드가 다루는 코드는 코멘트와 떨어진 별도 블록에 놓입니다. 목록에서는 j와 k 또는 화살표로 이동하고, Enter로 열고, /로 필터로 이동합니다. 풀 리퀘스트에서는 Escape로 돌아가고, Alt와 화살표로 이전 또는 다음 풀 리퀘스트로 이동합니다. +- 기본 제공 다크 테마는 인터페이스와 터미널에 같은 중립 차콜 배경을 적용해 터미널의 푸른 기가 도는 검정을 없애고, 초록, 코랄, 호박색, 파랑, 보라, 청록의 더 밝은 터미널 및 구문 팔레트를 사용합니다. 라이트 테마는 이 색상들의 더 어두운 대응색을 사용하며, 밝은 터미널 배경에서의 대비에 맞춰 조정되었습니다. +- 세션의 브라우저가 더 이상 묻지 않고 닫히지 않습니다. 어떤 창에도 표시되지 않고 5분 동안 아무도 사용하지 않으면, 토스트가 브라우저를 닫을지 묻습니다. 닫기는 브라우저를 닫고, 열어 두기나 토스트를 밀어서 치우면 5분 더 유지합니다. 응답하지 않으면 토스트가 남고 브라우저도 열려 있으므로, 점심시간 동안 열어 둔 페이지가 돌아와도 그대로 있습니다. 브라우저를 쓰거나 에이전트가 쓰면 토스트가 사라집니다. 이전에는 세션에서 5분 떠나 있으면 브라우저가 닫혀 페이지, 탭, 로그인이 사라졌습니다. +- 풀 리퀘스트 화면에서 풀 리퀘스트의 열린 리뷰 스레드를 세션으로 보내는 버튼이 모든 탭의 헤더에서 세션에서 열기 옆에 주변 버튼과 같은 크기로 놓입니다. 이전에는 대화 탭 맨 위의 작은 버튼이어서 대화를 스크롤하면 보이지 않았습니다. +- 사이드바의 크기 조절 영역이 코드 및 리뷰 패널의 것처럼 사이드바와 세션 사이의 틈이 아니라 사이드바 자신의 오른쪽 가장자리에 있습니다. +- 사이드바는 세션의 트리입니다. 세션은 한 줄입니다. 링, 이름, 풀 리퀘스트와 변경 사항이 있고, 포인터를 올리면 나타나는 …이 닫기를 포함한 세션 메뉴를 여는 모서리가 있습니다. 카드의 다른 줄이 보여 주던 내용은 툴팁으로 옮겨 갔습니다. 턴이 실행하는 도구 또는 기다리는 대상, 경과 시간, 경로, 모델입니다. 각 체크아웃은 브랜치, 풀 리퀘스트, 변경 사항과 함께 독립된 행이며 그 세션들이 아래에 달립니다. 다른 세션이 연 세션(포크, `open_session`이나 `lich open`으로 연 세션, 서브에이전트 카드)은 다른 worktree에서 실행되더라도 그것을 연 세션 아래에 달리고, 부모 세션은 자식을 접을 수 있으며 개수와 대기 중 또는 읽지 않음 표시를 유지합니다. 행은 선을 따라 움직입니다. 부모가 펼쳐지거나, 세션이 열리거나, worktree나 폴더가 나타나면 행이 이름이 이미 적힌 채로 열리고 선이 그곳까지 내려가 링을 그립니다. 접거나 닫으면 이름이 사라지고 링이 지워지며 선이 위로 되돌아가고, worktree나 폴더의 마지막 세션이 떠나면 그 뒤를 이어 worktree의 행이나 폴더도 사라집니다. 폴더는 트레이 위에 놓이므로 끝나는 위치가 보입니다. 고정은 카드의 메뉴로 옮겨 갔고, 그 메뉴는 세션이 응답해야 하는 요청의 `lich reply` 명령도 복사합니다. worktree가 없는 프로젝트는 평평한 목록을 유지합니다. 접힌 사이드바는 같은 트리를 한 열로 보여 줍니다. 각 체크아웃의 노드, 세션을 지나는 선, 부모의 선에 놓인 자식의 더 작은 링, 트레이 위의 각 폴더이며, 그 행들이 같은 선을 따라 나타나고 사라집니다. 세션을 끌면 선에서 떨어지고, 트리에 합류할 위치에 점선 슬롯이 표시되며, 놓이면 선이 다시 그곳까지 그려집니다. 분류될 폴더나 worktree는 전체가 밝아집니다. 끌린 부모는 자식을 함께 데려가고, 세션은 트리가 유지하는 위치에만 놓이며 부모와 자식 사이에는 절대 놓이지 않습니다. 색상이 있는 폴더에 분류된 세션은 그 색상을 가져 폴더가 그것을 유지합니다. 끌어다 놓든, 메뉴에서 폴더를 고르든, 에이전트가 `file_session`이나 `lich file`로 분류하든 같고, 폴더에 열린 세션, 서브에이전트의 작업자, 그것을 요청한 세션도 그 색상을 가집니다. 사이드바 아래쪽의 폴더에 세션을 놓으면 다시 분류되며, 이전에는 위에 있는 worktree도 그것을 받으면 원래 자리로 돌아갔습니다. 접힌 사이드바에서도 세션을 끌 수 있고, 검색 버튼은 펼친 사이드바와 같은 필터를 열며 패널이 닫힌 뒤에도 레일을 계속 필터링합니다. +- 풀 리퀘스트 화면 개요에서 설명 제목과 그 ⋯은 설명이 그 아래로 스크롤되는 동안 구분선 위, 열의 맨 위에 고정되며, ⋯은 열의 오른쪽 가장자리에 있습니다. +- 풀 리퀘스트 화면의 로딩 플레이스홀더가 그 자리에 로드되는 내용과 일치합니다. 목록은 실제 행 높이의 행과 체크 열이 놓일 위치를 화면을 채워 보여 주고, 풀 리퀘스트는 버튼이 있는 제목 행, 실제 탭 줄, 열린 탭의 레이아웃(설명과 그 옆의 정보, 커밋, 체크, 대화의 아바타와 코멘트, 또는 파일의 도구 모음, 트리, 카드)을 몇 개의 일반 막대 대신 보여 줍니다. 대화와 diff도 로드되는 동안 한 줄의 텍스트 대신 같은 플레이스홀더를 보여 줍니다. + +### Fixed + +- GitHub가 거부한 리뷰, 답글 등의 풀 리퀘스트 작업이 이유를 알려 줍니다. 예를 들어 github.com에 열려 있는 보류 중인 리뷰나 diff 밖의 줄에 단 코멘트입니다. 이전에는 GitHub가 보낸 이유가 버려져서 모든 거부가 "gh could not complete the request"로 표시되었습니다. +- 풀 리퀘스트 화면 파일 탭의 줄 아래에 있는 보류 중인 리뷰 코멘트에 대화 탭에서처럼 편집과 버리기가 있습니다. 이전에는 대화 탭에서만 바꾸거나 버릴 수 있었습니다. +- 풀 리퀘스트 화면 파일 탭에서 변경 사이에 숨겨진 줄 펼치기, Markdown 파일 미리 보기, 이미지 표시가 브랜치가 어디에도 체크아웃되어 있지 않은 풀 리퀘스트에서 동작합니다. lich가 풀 리퀘스트 주소의 이름을 딴 폴더에서 파일을 찾는 바람에 파일을 "Couldn't read"라며 실패했습니다. +- 풀 리퀘스트 화면의 풀 리퀘스트 탭이 맨 위에서 열립니다. 이전에는 이전 탭이나 풀 리퀘스트가 스크롤되어 있던 위치에서 열려서 대화 탭이 끝에서 열릴 수 있었습니다. +- 풀 리퀘스트 화면의 리뷰 스레드에 인용된 코드가 탭마다 상자 대신 들여쓰기를 보여 줍니다. +- 프로필 사진 업로드 같은 세션 브라우저의 파일 입력을 클릭하면 시스템 파일 선택기가 열리고, 입력이 허용하면 여러 파일을 받습니다. 이전에는 클릭해도 아무 일도 일어나지 않았습니다. +- 세션 브라우저에서 나가기 전에 확인하는 페이지에서 떠나기를 누르면, 바쁜 컴퓨터에서 페이지가 다시 로드되는 대신 브라우저가 가려던 곳으로 갑니다. +- 에이전트가 세션 브라우저의 한 지점을 클릭할 때 lich를 다른 모니터로 옮기거나, 브라우저 창 크기를 바꾸거나, 확대/축소를 바꿔도 더 이상 빗나가지 않습니다. 스크린샷이 이제 클릭과 같은 픽셀 단위이며, HiDPI 모니터나 페이지 확대/축소 때문에 최대 1.5배 크게 나오던 문제가 해결되었고, 창 크기가 바뀌기 전에 찍은 스크린샷에서 읽은 지점에 대한 클릭은 거부되며 에이전트에게 새로 찍으라고 알려 줍니다. +- 세션이 작업하는 동안 lich가 더 이상 GPU를 붙잡고 있지 않습니다. 프로젝트 탭의 스피너가 모니터 주사율로 전체 창을 다시 그렸고, 둘 이상의 프로젝트에서 세션이 바쁠 때 lich가 노트북 GPU의 절반 이상을 차지해 게임과 다른 모든 것에서 빼앗고 있었습니다. 이제 모든 스피너, 사이드바의 바쁨 링, 실행 중인 서비스의 박동이 초당 최대 24번, lich 창에 포커스가 없을 때는 초당 8번만 다시 그려져, 다른 모니터에서도 세션의 링이 도는 것이 보입니다. 실행 중인 서비스의 점은 2.5초마다가 아니라 6초마다 박동합니다. 박동 한 번이 프레임의 연속이라 이전 속도는 점 하나 때문에 하루 종일 초당 8프레임이었습니다. +- 세션이 작업하는 동안 창이 30프레임이 아니라 영화의 속도인 초당 24프레임으로 그려지고, 세션 터미널의 출력은 자체 프레임을 요청하지 않고 바쁨 링의 다음 프레임에 그려집니다. 스트리밍하는 에이전트와 도는 링이 두 속도의 합이 아니라 하나의 프레임 속도만 소모합니다. 입력한 내용은 터미널이 에코하는 즉시 계속 표시됩니다. +- 커서가 가만히 있는 동안 터미널이 더 이상 매 프레임 커서 행을 다시 그리지 않으며, 행은 커서가 움직이거나 텍스트가 바뀔 때 다시 구성됩니다. +- Linux에서 창이 세션이 작업하는 동안 매초 24번 전체를 다시 칠하는 대신 지난 프레임 이후 바뀐 부분만 그리고 그 영역을 컴포지터에 알립니다. 바쁨 링만 돈 프레임은 링과 터미널의 커서 행만 그리며, 창 렌더러에서 그래픽 카드의 작업은 15분의 1로 줄어듭니다. Windows와 macOS는 계속 전체 프레임을 그립니다. 환경 변수의 `GIO_DAMAGE=off`는 버퍼 내용을 잘못 보고하는 그래픽 드라이버를 위해 Linux에서도 전체 프레임을 그립니다. +- 세션이 작업하는 동안 lich 창이 쓰는 프로세서가 절반으로 줄었습니다. 화면의 모든 아이콘, 링, 호가 매 프레임 윤곽선에서 다시 만들어졌는데, 이제 각각 한 번 만들어 그래픽 카드에 유지됩니다. + ## [0.83.0] - 2026-10-29 ### Added diff --git a/changelog/pt-BR.md b/changelog/pt-BR.md index 46172acb0..f27f36516 100644 --- a/changelog/pt-BR.md +++ b/changelog/pt-BR.md @@ -1,3 +1,44 @@ +## [0.84.0] - 2026-11-03 + +### Added + +- A aba Conversa de um pull request na tela de Pull requests mostra a foto do GitHub de cada autor ao lado das revisões e dos comentários, numa coluna à esquerda, como o GitHub faz. Os comentários dentro de uma thread de revisão, na aba Conversa e na aba Arquivos, são separados por uma linha. Até a foto carregar, ou para uma conta que não tem uma, a inicial do autor fica no lugar dela. +- As listas de tarefas nas descrições e nos comentários de pull request mostram uma caixa de seleção, marcada ou não, no lugar de um `[x]` ou `[ ]` literal. +- Os títulos de nível mais alto nas descrições e nos comentários de pull request são sublinhados por toda a largura do texto, como no GitHub. +- A skill de tema do plugin do lich, que escreve, porta ou corrige um tema de cores do lich, agora chega ao opencode, ao oh-my-pi, ao Crush e ao Kiro CLI como `lich-theme`; antes só estava no Claude Code, no Codex, no Antigravity e no Cursor CLI. No opencode ela é o comando `/lich-theme`. Chega na próxima instalação ou atualização do plugin em Configurações › Provedores. +- O opencode 2 roda no lich. O lich o distingue do opencode 1 pela versão e o abre do jeito que o 2 espera: cada sessão num servidor próprio, de modo que o perfil, o modelo e as ferramentas do lich chegam a ele, com forks, Expandir pastes longos, logins de perfil e o medidor do OpenCode Go funcionando como no opencode 1. As conversas iniciadas no opencode 2, e as do opencode 1 que ele continuou, voltam a mostrar custo, últimas palavras e resultados de busca, e aparecem no Histórico. O spinner, o anel, o sino e o título do card precisam da próxima versão do plugin do lich, instalada em Configurações › Provedores, que agora vai para onde o opencode 2 lê plugins e toma o lugar da cópia que um lich mais antigo instalou. Uma sessão aberta pelo lich não fica no servidor compartilhado em segundo plano do opencode 2, então `opencode pair` e o app desktop não a enxergam. +- O título Descrição da Visão geral na tela de Pull requests tem um menu ⋯, como os comentários do GitHub: Copiar link copia o endereço do pull request, Copiar Markdown copia a descrição como foi escrita, e Editar abre a descrição para edição, o que antes o botão Editar ao lado do título fazia. +- Um agente pode gerenciar os serviços de um projeto como o rodapé de Serviços faz: listar, criar, editar, excluir, iniciar, parar, forçar a parada e reiniciar um serviço, iniciar ou parar todos, e ler o que um serviço imprimiu, rodando ou parado, com as ferramentas MCP `*_service` ou com `lich service` num terminal. Um serviço é nomeado pelo nome dele no projeto, o do próprio agente, a menos que ele cite outro. + +### Changed + +- No seu próprio pull request, a tela de Pull requests não oferece mais Aprovar nem Pedir alterações, que o GitHub recusa ao autor, e o menu do diff não oferece mais um comentário no pull request. O menu do diff também deixa de fora Comentar no pull request quando nenhuma linha está selecionada, em vez de mostrá-lo desativado como antes. +- As descrições, os comentários e as prévias de Markdown de pull request ficaram mais fáceis de ler, com texto mais claro, títulos e links mais nítidos, código em linha destacado, mais espaço entre linhas e blocos, e itens de lista quebrados alinhados com o texto deles. +- A tela de Pull requests abre num índice dos pull requests do projeto ocupando a tela inteira, e um pull request abre no lugar dele em vez de ao lado da lista. Um botão de voltar sobre o título retorna ao índice como você o deixou; ao lado dele, o número abre um menu dos outros pull requests, e anterior e próximo percorrem o filtro do índice. Na aba Arquivos só a árvore de arquivos fica ao lado do diff, que ganha a largura que a lista ocupava. A Visão geral põe a descrição ao lado de uma coluna com os revisores, as verificações, a possibilidade de merge e o checkout em que a branch está; a faixa de abas termina com o tamanho do pull request. Abrir em sessão e Merge ficam no cabeçalho, com Resolver conflitos ou Corrigir erros de CI ao lado quando o pull request precisa de um, e Aprovar, Atualizar e Abrir no GitHub passam para o menu ⋯. A tela se alinha ao espaçamento da barra lateral, seus botões têm o tamanho dos do resto da janela, e o código de que uma thread de revisão trata fica num bloco próprio, separado dos comentários. No índice, j e k ou as setas movem, Enter abre e / vai para o filtro; num pull request, Esc volta e Alt com uma seta passa ao pull request anterior ou ao próximo. +- O tema Dark que acompanha o lich dá à interface e ao terminal o mesmo fundo carvão neutro, eliminando o tom azul-escuro do terminal, e usa uma paleta de terminal e de sintaxe mais viva, de verde, coral, âmbar, azul, violeta e ciano. O tema Light usa versões mais escuras dessas cores, ajustadas para o contraste no fundo claro do terminal. +- O navegador de uma sessão não é mais fechado sem perguntar. Quando nenhum painel o mostra e ninguém o usa há cinco minutos, um toast pergunta se deve fechá-lo: Fechar o fecha, e Manter aberto, ou dispensar o toast com um deslize, o mantém por mais cinco minutos. Sem resposta, o toast fica na tela e o navegador fica aberto, então uma página deixada aberta durante o almoço continua lá quando você volta. Usar o navegador, ou o agente usá-lo, tira o toast da tela. Antes, o navegador era fechado após cinco minutos longe da sessão dele, e a página, as abas e o login se perdiam. +- Na tela de Pull requests, o botão que envia as threads de revisão abertas de um pull request para a sessão dele fica no cabeçalho ao lado de Abrir em sessão, em todas as abas, do tamanho dos botões ao redor. Antes era um botão pequeno no topo da aba Conversa, fora de vista quando a conversa rolava. +- A faixa de redimensionamento da barra lateral fica na própria borda direita dela, como a do painel Código e Revisão, em vez de no vão entre a barra lateral e as sessões. +- A barra lateral é uma árvore de sessões. Uma sessão é uma linha: o anel dela, o nome, o pull request e as alterações, e um canto onde um … sob o ponteiro abre o menu da sessão, com fechar incluído. O que as outras linhas do card diziam foi para o tooltip dele: a ferramenta que o turno roda ou o que ele espera, há quanto tempo, o caminho e o modelo. Cada checkout é uma linha própria, com a branch, o pull request e as alterações, e as sessões dele pendem dela. Uma sessão aberta por outra (um fork, uma sessão aberta com `open_session` ou `lich open`, um card de subagente) pende da sessão que a abriu, mesmo rodando em outra worktree, e uma mãe recolhe os filhos, mantendo a contagem e a marca de aguardando ou não lida. As linhas se movem pela sua linha: quando uma mãe se abre, uma sessão abre ou uma worktree ou uma pasta aparece, uma linha se abre já com o nome nela e a linha desce até ela e desenha o anel; recolher ou fechar tira o nome, apaga o anel e sobe a linha de volta, e a saída da última sessão de uma worktree ou de uma pasta leva a linha da worktree, ou a pasta, embora depois dela. Uma pasta fica numa bandeja, então se vê onde ela termina. Fixar foi para o menu do card, que também copia o comando `lich reply` de um pedido que a sessão deve. Um projeto sem worktree mantém uma lista plana. A barra lateral recolhida mostra a mesma árvore numa coluna: o nó de cada checkout, a linha passando por suas sessões, o anel menor de um filho na linha da mãe, e cada pasta na sua bandeja, com as linhas entrando e saindo pela mesma linha. Arrastar uma sessão solta a linha dela, mostra um espaço tracejado onde ela vai se juntar à árvore e desenha a linha de volta até ela quando pousa; a pasta ou worktree em que ela seria arquivada acende inteira. Uma mãe arrastada leva os filhos com ela, e uma sessão só pousa onde a árvore a mantém, nunca entre uma mãe e seu filho. Uma sessão arquivada numa pasta que tem cor assume essa cor, então a pasta a mantém, seja arrastando a sessão para lá, escolhendo a pasta no menu dela, ou um agente arquivando com `file_session` ou `lich file`; uma sessão aberta numa pasta, o worker de um subagente ou a sessão que o pediu também a usa. Soltar uma sessão numa pasta mais abaixo na barra lateral a arquiva de novo, onde antes ela voltava ao seu lugar quando uma worktree acima também a recebia. A barra lateral recolhida também arrasta sessões, e o botão de busca dela abre o mesmo filtro da barra aberta, que continua filtrando o trilho depois que o painel fecha. +- Na Visão geral da tela de Pull requests, o título Descrição e o ⋯ dele ficam no lugar no topo da coluna enquanto a descrição rola por baixo, sobre um separador, e o ⋯ fica na borda direita da coluna. +- Os placeholders de carregamento da tela de Pull requests combinam com o que carrega no lugar deles: o índice mostra linhas da altura das reais, com a coluna de verificações onde ela cai, preenchendo a tela, e um pull request mostra a linha do título com seus botões, a faixa de abas real e o layout da aba aberta (a descrição ao lado dos fatos, os commits, as verificações, os avatares e comentários da conversa, ou a barra de ferramentas, a árvore e os cards dos arquivos), em vez de algumas barras genéricas. A conversa e o diff mostram os mesmos placeholders enquanto carregam, no lugar de uma linha de texto. + +### Fixed + +- Uma revisão, resposta ou outra ação de pull request que o GitHub recusa diz o motivo, como uma revisão pendente deixada aberta no github.com ou um comentário numa linha fora do diff. Antes, toda recusa dizia "gh could not complete the request", porque o motivo enviado pelo GitHub era descartado. +- Um comentário de revisão pendente sob a sua linha na aba Arquivos da tela de Pull requests tem Editar e Descartar, como na aba Conversa. Antes, só podia ser alterado ou descartado pela aba Conversa. +- Na aba Arquivos da tela de Pull requests, expandir as linhas escondidas entre as alterações, visualizar um arquivo Markdown e mostrar uma imagem funcionam num pull request cuja branch não está em checkout em lugar nenhum. Eles falhavam com "Couldn't read" o arquivo, porque o lich o procurava numa pasta com o nome do endereço do pull request. +- A aba de um pull request na tela de Pull requests abre no topo. Antes, abria onde a aba ou o pull request anterior tinha sido rolado, então a aba Conversa podia abrir no fim. +- O código citado numa thread de revisão na tela de Pull requests mostra a indentação em vez de uma caixa para cada tab. +- Um campo de arquivo no navegador da sessão, como o envio de uma foto de perfil, abre o seletor de arquivos do sistema ao clicar, e aceita vários arquivos quando o campo permite. Antes, o clique não fazia nada. +- Sair de uma página do navegador da sessão que pergunta antes de você ir não recarrega mais a página no lugar numa máquina ocupada; o navegador vai para onde estava indo. +- Um agente que clica num ponto do navegador da sessão não erra mais o ponto depois que você move o lich para outro monitor, redimensiona o painel do navegador ou muda o zoom dele. As capturas de tela dele agora estão nos mesmos pixels que os cliques, que um monitor HiDPI ou um zoom de página tinham deixado até 1,5 vez maiores, e um clique num ponto lido de uma captura tirada antes de o painel mudar de tamanho é recusado, dizendo ao agente para tirar uma nova. +- O lich não mantém mais a GPU ocupada enquanto uma sessão trabalha. O spinner de uma aba de projeto redesenhava a janela inteira na taxa de atualização do monitor, e com sessões ocupadas em mais de um projeto o lich segurava mais da metade da GPU de um notebook, tirando-a dos jogos e de tudo o mais. Todo spinner, o anel de ocupado da barra lateral e a pulsação de um serviço em execução agora redesenham no máximo 24 vezes por segundo, e 8 vezes por segundo enquanto a janela do lich não está em foco, então o anel de uma sessão ainda é visto girando de outro monitor. O ponto de um serviço em execução pulsa a cada seis segundos em vez de a cada dois e meio: cada pulso é uma rajada de quadros, e o ritmo antigo eram oito quadros por segundo o dia inteiro para um ponto. +- Enquanto uma sessão trabalha, a janela desenha 24 quadros por segundo, a taxa do cinema, em vez de 30, e a saída do terminal da sessão é desenhada no próximo quadro do anel de ocupado em vez de pedir quadros próprios: um agente transmitindo e um anel girando custam uma taxa de quadros, não a soma das duas. O que você digita continua aparecendo no instante em que o terminal ecoa. +- O terminal não redesenha mais a linha do cursor a cada quadro enquanto o cursor fica parado; a linha é recomposta quando o cursor se move ou o texto dela muda. +- No Linux, a janela desenha só o que mudou desde o último quadro e informa essa área ao compositor, em vez de repintar tudo 24 vezes por segundo enquanto uma sessão trabalha: um quadro em que só o anel de ocupado girou desenha o anel e a linha do cursor do terminal, e o trabalho da placa de vídeo no renderizador da janela cai para um quinze avos. O Windows e o macOS continuam desenhando quadros inteiros. `GIO_DAMAGE=off` no ambiente desenha quadros inteiros também no Linux, para um driver gráfico que informa errado o que seus buffers guardam. +- A janela do lich usa metade do processador que usava enquanto uma sessão trabalha. Todo ícone, anel e arco na tela era reconstruído a partir do contorno a cada quadro; agora cada um é construído uma vez e mantido na placa de vídeo. + ## [0.83.0] - 2026-10-29 ### Added diff --git a/changelog/ru.md b/changelog/ru.md index d62304c8a..ea2c2617e 100644 --- a/changelog/ru.md +++ b/changelog/ru.md @@ -1,3 +1,44 @@ +## [0.84.0] - 2026-11-03 + +### Added + +- Вкладка «Обсуждение» pull request на экране Pull requests показывает картинку GitHub каждого автора рядом с его ревью и комментариями, в колонке слева, как это делает GitHub. Комментарии внутри ветки ревью, на вкладках «Обсуждение» и «Файлы», разделены линией. Пока картинка не загрузилась, а также у аккаунта без неё, на её месте стоит инициал автора. +- Списки задач в описаниях и комментариях pull request показывают флажок, отмеченный или нет, вместо буквального `[x]` или `[ ]`. +- Заголовки верхнего уровня в описаниях и комментариях pull request подчёркнуты на всю ширину текста, как на GitHub. +- Навык тем плагина lich, который пишет, переносит или исправляет цветовую тему lich, теперь доступен в opencode, oh-my-pi, Crush и Kiro CLI как `lich-theme`; раньше он был только в Claude Code, Codex, Antigravity и Cursor CLI. В opencode это команда `/lich-theme`. Он появится при следующей установке или обновлении плагина в Настройки › Провайдеры. +- opencode 2 работает в lich. lich отличает его от opencode 1 по версии и запускает так, как ждёт версия 2: каждая сессия на собственном сервере, поэтому до неё доходят профиль, модель и инструменты lich, а форки, «Раскрывать длинные вставки», вход в профили и индикатор OpenCode Go работают так же, как в opencode 1. Беседы, начатые в opencode 2, и беседы opencode 1, которые он продолжил, снова показывают стоимость, заключительные слова и результаты поиска и перечислены в «Истории». Спиннер, кольцо, колокольчик и заголовок карточки требуют следующего релиза плагина lich, устанавливаемого в Настройки › Провайдеры; теперь он попадает туда, где opencode 2 читает плагины, и заменяет копию, которую ставил более старый lich. Сессия, которую открывает lich, не находится на общем фоновом сервере opencode 2, поэтому `opencode pair` и приложение для рабочего стола её не видят. +- У заголовка «Описание» на вкладке «Обзор» экрана Pull requests есть меню ⋯, как у комментариев GitHub: «Копировать ссылку» копирует адрес pull request, «Копировать Markdown» — его описание как написано, а «Изменить» открывает описание для правки, что раньше делала кнопка «Изменить» рядом с заголовком. +- Агент может управлять сервисами проекта так же, как нижняя панель «Сервисы»: показать список, создать, изменить, удалить, запустить, остановить, остановить принудительно и перезапустить один сервис, запустить или остановить все, а также прочитать, что сервис напечатал, пока работал или после остановки, с помощью инструментов MCP `*_service` или `lich service` из терминала. Сервис задаётся его именем в проекте, по умолчанию это сервис самого агента, если он не назвал другой. + +### Changed + +- В вашем собственном pull request экран Pull requests больше не предлагает «Одобрить» или «Запросить изменения», которые GitHub отклоняет от автора, а меню диффа больше не предлагает комментарий к pull request. Меню диффа также не показывает «Комментарий к pull request», когда строки не выделены, хотя раньше показывало его отключённым. +- Описания, комментарии и превью Markdown в pull request стали удобнее для чтения: более яркий текст, более чёткие заголовки и ссылки, подсвеченный встроенный код, больше места между строками и блоками, а перенесённые элементы списков выровнены по своему тексту. +- Экран Pull requests открывается на индексе pull request проекта на всю ширину экрана, а pull request открывается на его месте, а не рядом со списком. Кнопка «назад» над заголовком возвращает к индексу в том виде, в каком вы его оставили; рядом с ней номер открывает меню других pull request, а «предыдущий» и «следующий» проходят по фильтру индекса. На вкладке «Файлы» рядом с диффом остаётся только дерево файлов, и дифф получает ширину, которую занимал список. «Обзор» ставит описание рядом с колонкой с ревьюерами, проверками, возможностью слияния и рабочей копией, в которой находится ветка; строка вкладок заканчивается размером pull request. «Открыть в сессии» и «Слить» остаются в заголовке, рядом с ними «Разрешить конфликты» или «Исправить ошибки CI», когда они нужны pull request, а «Одобрить», «Обновить» и «Открыть на GitHub» переехали в меню ⋯. Экран выровнен по отступам боковой панели, его кнопки такого же размера, как в остальном окне, а код, о котором ветка ревью, находится в отдельном блоке, отдельно от комментариев. В индексе j и k или стрелки перемещают, Enter открывает, а / переходит к фильтру; в pull request Escape возвращает назад, а Alt со стрелкой переходит к предыдущему или следующему. +- Встроенная тема Dark даёт интерфейсу и терминалу один и тот же нейтральный угольный фон, убирая сине-чёрный оттенок терминала, и использует более яркую палитру терминала и синтаксиса: зелёный, коралловый, янтарный, синий, фиолетовый и голубой. Тема Light использует более тёмные аналоги этих цветов, подобранные по контрасту на её светлом фоне терминала. +- Браузер сессии больше не закрывается без вопроса. Когда ни одна панель его не показывает и пять минут им никто не пользовался, всплывающее уведомление спрашивает, закрыть ли его: «Закрыть» закрывает, а «Оставить открытым» или смахивание уведомления оставляет его ещё на пять минут. Без ответа уведомление остаётся, а браузер открытым, так что страница, оставленная на время обеда, будет на месте, когда вы вернётесь. Если пользоваться браузером или если им пользуется агент, уведомление пропадает. Раньше браузер закрывался через пять минут вдали от своей сессии, и страница, вкладки и вход терялись. +- На экране Pull requests кнопка, которая отправляет открытые ветки ревью pull request в его сессию, находится в заголовке рядом с «Открыть в сессии», на каждой вкладке, и такого же размера, как соседние кнопки. Раньше это была маленькая кнопка вверху вкладки «Обсуждение», которая скрывалась из виду, когда обсуждение прокручивали. +- Полоса изменения размера боковой панели находится на её собственном правом краю, как у панели Code и Review, а не в зазоре между боковой панелью и сессиями. +- Боковая панель — это дерево сессий. Сессия занимает одну строку: кольцо, имя, pull request и изменения, и уголок, где … под указателем открывает меню сессии, в том числе «Закрыть». То, что говорили остальные строки карточки, перенесено в её подсказку: инструмент, который выполняет ход, или то, чего он ждёт, как долго, путь и модель. Каждая рабочая копия — отдельная строка со своей веткой, pull request и изменениями, и её сессии свисают с неё. Сессия, которую открыла другая (форк, сессия, открытая через `open_session` или `lich open`, карточка субагента), висит на открывшей её сессии, даже если работает в другой worktree, а родительская сессия сворачивает своих потомков, сохраняя счётчик и отметку ожидания или непрочитанного. Строки движутся по своей линии: когда родитель раскрывается, открывается сессия или появляется worktree или папка, строка открывается уже с именем, линия спускается к ней и рисует её кольцо; при сворачивании или закрытии имя убирается, кольцо стирается, а линия возвращается вверх, и когда уходит последняя сессия worktree или папки, строка worktree или папка тоже исчезает следом. Папка лежит на подносе, поэтому видно, где она заканчивается. Закрепление перенесено в меню карточки, которое также копирует команду `lich reply` для запроса, который сессия должна. Проект без worktree сохраняет плоский список. Свёрнутая боковая панель показывает то же дерево в одну колонку: узел каждой рабочей копии, линию через её сессии, меньшее кольцо потомка на линии родителя и каждую папку на её подносе, а строки приходят и уходят по той же линии. Перетаскивание сессии отпускает её линию, показывает пунктирный слот, куда она присоединится к дереву, и возвращает линию к ней, когда она опустится; папка или worktree, в которые она будет помещена, подсвечиваются целиком. Перетаскиваемая родительская сессия берёт потомков с собой, а сессия опускается только туда, где дерево её удержит, и никогда между родителем и его потомком. Сессия, помещённая в папку с цветом, принимает этот цвет, и папка сохраняет его, будь то перетаскивание, выбор папки в меню сессии или помещение сессии агентом через `file_session` или `lich file`; сессия, открытая в папке, рабочая сессия субагента и сессия, которая её запросила, тоже носят его. Если сессию бросить на папку ниже по боковой панели, она снова помещается в неё, где она возвращалась на своё место, когда её забирал и worktree выше. Свёрнутая боковая панель тоже поддерживает перетаскивание сессий, а её кнопка поиска открывает тот же фильтр, что и развёрнутая боковая панель, и фильтр продолжает действовать на рейле после закрытия её панели. +- На вкладке «Обзор» экрана Pull requests заголовок «Описание» и его ⋯ остаются на месте вверху колонки, пока описание прокручивается под ними, над разделителем, а ⋯ стоит у правого края колонки. +- Заглушки загрузки на экране Pull requests соответствуют тому, что загружается на их месте: индекс показывает строки высотой с настоящие, с колонкой проверок там, где она окажется, на весь экран, а pull request показывает строку заголовка с кнопками, настоящую строку вкладок и макет открытой вкладки (описание рядом с фактами, коммиты, проверки, аватары и комментарии обсуждения или панель инструментов файлов, дерево и карточки) вместо нескольких общих полос. Обсуждение и дифф показывают те же заглушки, пока загружаются, вместо строки текста. + +### Fixed + +- Ревью, ответ или другое действие над pull request, которое GitHub отклоняет, говорит почему, например отложенное ревью, оставленное открытым на github.com, или комментарий к строке вне диффа. Раньше каждый отказ выглядел как «gh could not complete the request», потому что причина, присланная GitHub, отбрасывалась. +- У отложенного комментария ревью под его строкой на вкладке «Файлы» экрана Pull requests есть «Изменить» и «Отбросить», как на вкладке «Обсуждение». Раньше изменить или отбросить его можно было только с вкладки «Обсуждение». +- На вкладке «Файлы» экрана Pull requests раскрытие строк, скрытых между изменениями, превью файла Markdown и показ изображения работают в pull request, ветка которого нигде не извлечена. Они падали с «Couldn't read» файла, потому что lich искал его в папке, названной по адресу pull request. +- Вкладка pull request на экране Pull requests открывается с самого верха. Раньше она открывалась там, где была прокручена предыдущая вкладка или pull request, поэтому вкладка «Обсуждение» могла открыться в конце. +- Код, процитированный в ветке ревью на экране Pull requests, показывает отступы вместо рамки на каждую табуляцию. +- Поле выбора файла в браузере сессии, например загрузка картинки профиля, по щелчку открывает системный выбор файла и принимает несколько файлов, когда поле это допускает. Раньше щелчок ничего не делал. +- «Уйти» на странице в браузере сессии, которая спрашивает перед уходом, больше не перезагружает на нагруженной машине страницу вместо этого; браузер идёт туда, куда шёл. +- Щелчок агента по точке в браузере сессии больше не промахивается после того, как вы переносите lich на другой монитор, меняете размер панели браузера или её масштаб. Его снимки экрана теперь в тех же пикселях, что и щелчки, которые на мониторе HiDPI или при масштабе страницы были больше до 1,5 раза, а щелчок по точке, считанной со снимка, сделанного до изменения размера панели, отклоняется, и агенту сообщается, что нужно сделать новый. +- lich больше не держит GPU занятым, пока сессия работает. Спиннер вкладки проекта перерисовывал всё окно с частотой обновления монитора, и когда сессии были заняты более чем в одном проекте, lich занимал больше половины GPU ноутбука, отнимая его у игр и всего остального. Теперь каждый спиннер, занятое кольцо боковой панели и биение работающего сервиса перерисовываются не чаще 24 раз в секунду и 8 раз в секунду, пока окно lich не в фокусе, поэтому кольцо сессии по-прежнему видно вращающимся с другого монитора. Точка работающего сервиса бьётся раз в шесть секунд вместо двух с половиной: каждое биение — пачка кадров, а прежний темп — восемь кадров в секунду весь день ради точки. +- Пока сессия работает, окно рисует 24 кадра в секунду, частоту кино, вместо 30, а вывод терминала сессии рисуется на следующем кадре занятого кольца и не запрашивает собственных кадров: потоковый агент и вращающееся кольцо стоят одной частоты кадров, а не суммы двух. То, что вы вводите, по-прежнему видно в момент эха терминала. +- Терминал больше не перерисовывает строку курсора на каждом кадре, пока курсор стоит на месте; строка пересобирается, когда курсор двигается или меняется её текст. +- В Linux окно рисует только то, что изменилось с прошлого кадра, и сообщает композитору эту область, вместо перерисовки всего 24 раза в секунду, пока сессия работает: кадр, где повернулось только занятое кольцо, рисует кольцо и строку курсора терминала, а работа видеокарты в рендерере окна падает в пятнадцать раз. Windows и macOS по-прежнему рисуют кадры целиком. `GIO_DAMAGE=off` в окружении рисует кадры целиком и в Linux, для графического драйвера, который неверно сообщает, что хранят его буферы. +- Окно lich использует вдвое меньше процессора, пока сессия работает. Каждый значок, кольцо и дуга на экране собирались из контура на каждом кадре; теперь каждый собирается один раз и хранится на видеокарте. + ## [0.83.0] - 2026-10-29 ### Added diff --git a/changelog/zh-CN.md b/changelog/zh-CN.md index 5073d064c..58f64ab14 100644 --- a/changelog/zh-CN.md +++ b/changelog/zh-CN.md @@ -1,3 +1,44 @@ +## [0.84.0] - 2026-11-03 + +### Added + +- 拉取请求界面中,拉取请求的“对话”标签页会在每位作者的评审和评论旁显示其 GitHub 头像,排成左侧的一列,和 GitHub 一样。评审讨论串内的评论,无论在“对话”标签页还是“文件”标签页,之间都用一条线隔开。头像加载完成之前,或账号没有头像时,会显示作者的首字母。 +- 拉取请求描述和评论中的任务列表,会显示一个已勾选或未勾选的复选框,而不是字面上的 `[x]` 或 `[ ]`。 +- 拉取请求描述和评论中的一级标题,会像 GitHub 那样在文本的整个宽度上加下划线。 +- lich 插件的主题技能用于编写、移植或修复 lich 颜色主题,现在以 `lich-theme` 之名也送达 opencode、oh-my-pi、Crush 和 Kiro CLI;此前只有 Claude Code、Codex、Antigravity 和 Cursor CLI 有。在 opencode 中它是 `/lich-theme` 命令。在下次从设置 › 提供商安装或更新插件时生效。 +- lich 现在可以运行 opencode 2。lich 通过版本号区分它和 opencode 1,并按 2 期望的方式启动它:每个会话在各自的服务器上,因此它的配置档案、模型和 lich 的工具都能送达,分叉、展开长粘贴、配置档案登录和 OpenCode Go 仪表的表现都和 opencode 1 一样。在 opencode 2 中开始的对话,以及 opencode 1 的对话被它继续后,会重新显示成本、收尾内容和搜索结果,并列在历史中。卡片的旋转指示、圆环、提示铃和标题需要 lich 插件的下一个版本,从设置 › 提供商安装;它现在会安装到 opencode 2 读取插件的位置,并取代旧版 lich 安装的副本。lich 打开的会话不在 opencode 2 共享的后台服务器上,因此 `opencode pair` 和桌面应用看不到它。 +- 拉取请求界面“概览”中的“描述”标题有了 ⋯ 菜单,和 GitHub 的评论一样:“复制链接”复制拉取请求的地址,“复制 Markdown”复制描述的原文,“编辑”打开描述进行编辑,这原来由标题旁的“编辑”按钮完成。 +- 代理可以像“服务”页脚那样管理项目的服务:列出、创建、编辑、删除、启动、停止、强制停止和重启某个服务,一次启动或停止全部服务,并读取某个服务(运行中或已停止)输出的内容,方式是用 `*_service` MCP 工具,或在终端中使用 `lich service`。服务以它在项目中的名称指定,除非另行指定,否则是代理自己的项目。 + +### Changed + +- 在你自己的拉取请求上,拉取请求界面不再提供“批准”或“请求更改”,GitHub 不允许作者这样做;差异的菜单也不再提供对拉取请求的评论。未选中任何行时,差异的菜单也不再显示置灰的“对拉取请求的评论”,而是直接省略。 +- 拉取请求的描述、评论和 Markdown 预览更易阅读:文字更亮,标题和链接更清晰,行内代码高亮,行与块之间留有更多空间,折行的列表项与其文本对齐。 +- 拉取请求界面现在以横跨整个界面的项目拉取请求索引打开,拉取请求在原处打开,而不是在列表旁边。标题上方的返回按钮会回到你离开时的索引;旁边的编号会打开其他拉取请求的菜单,上一个和下一个则沿着索引的筛选依次浏览。在“文件”标签页中,差异旁边只有文件树,差异因此获得了列表原先占用的宽度。“概览”把描述放在一列旁边,这一列包含评审者、检查、可合并性以及分支所在的检出目录;标签栏末尾显示拉取请求的大小。“在会话中打开”和“合并”留在标题栏,拉取请求需要时,旁边还有“解决冲突”或“修复 CI 错误”,而“批准”、“刷新”和“在 GitHub 上打开”移到 ⋯ 菜单。该界面与侧边栏的间距对齐,按钮与窗口其余部分的大小一致,评审讨论串所指的代码放在单独的块中,与评论分开。在索引上,j 和 k 或方向键移动,Enter 打开,/ 转到筛选;在拉取请求上,Escape 返回,Alt 加方向键切换到上一个或下一个。 +- 内置的深色主题让界面和终端使用相同的中性炭灰背景,去掉了终端的蓝黑色调,并使用更明亮的终端和语法调色板,包括绿色、珊瑚红、琥珀色、蓝色、紫罗兰色和青色。浅色主题使用这些颜色更深的对应色,针对浅色终端背景的对比度做了调整。 +- 会话的浏览器不再不经询问就被关闭。当没有窗格显示它,并且五分钟内没人使用时,会弹出提示询问是否关闭:“关闭”会关闭它,“保持打开”或将提示滑走,则让它再保留五分钟。不回应时,提示会一直显示,浏览器也保持打开,因此午饭时留着的页面回来时仍在。使用浏览器,或代理使用它,会让提示消失。此前,离开会话五分钟后浏览器就会关闭,页面、标签页和登录状态都会丢失。 +- 在拉取请求界面,把拉取请求未解决的评审讨论串发送给其会话的按钮,现在位于标题栏“在会话中打开”旁边,在每个标签页上都有,大小与周围的按钮一致。此前它是“对话”标签页顶部的一个小按钮,对话滚动后就看不到了。 +- 侧边栏的调整大小条位于侧边栏自己的右边缘,和代码与评审面板的一样,而不是位于侧边栏与会话之间的空隙中。 +- 侧边栏现在是会话树。一个会话占一行:它的圆环、名称、拉取请求和更改,以及一个角落,指针下的 … 会打开会话的菜单,其中包括关闭。卡片其他行原来显示的内容移到了它的提示中:这一轮正在运行的工具或在等待的内容、已持续的时间、路径和模型。每个检出目录单独占一行,带有它的分支、拉取请求和更改,它的会话挂在其下。由另一个会话打开的会话(分叉、用 `open_session` 或 `lich open` 打开的会话、子代理卡片)挂在打开它的会话下,即使它运行在另一个 worktree 中;母会话可以把子会话折叠起来,保留数量以及等待或未读标记。各行沿着连线移动:母会话展开、会话打开,或 worktree 或文件夹出现时,一行带着名称展开,连线向下延伸到它并画出它的圆环;折叠或关闭时,名称消失、圆环擦除,连线向上收回,而一个 worktree 或文件夹的最后一个会话离开时,worktree 的行或文件夹也随之消失。文件夹位于托盘上,因此它在哪里结束一目了然。置顶移到了卡片的菜单中,菜单还能复制会话所欠请求的 `lich reply` 命令。没有 worktree 的项目保持扁平列表。折叠后的侧边栏用一列显示同一棵树:每个检出目录的节点、贯穿其会话的连线、母会话连线上子会话较小的圆环,以及托盘上的每个文件夹,其各行沿同一条连线进出。拖动会话时它会脱离自己的连线,显示一个虚线槽位,标出它将加入树的位置,落下后连线再画回它;它将被归入的文件夹或 worktree 会整体亮起。被拖动的母会话会带着它的子会话,会话只会落在树允许的位置,绝不会落在母会话和它的子会话之间。归入带颜色的文件夹的会话会采用该颜色,使文件夹保留它,无论你把它拖到那里、在其菜单中选择该文件夹,还是由代理用 `file_session` 或 `lich file` 归入;在文件夹中打开的会话、子代理的工作会话或请求它的会话也会带上该颜色。把会话拖到侧边栏更下方的文件夹上会再次归档它,此前当上方的 worktree 也接纳它时,它会回到原来的位置。折叠后的侧边栏也可以拖动会话,它的搜索按钮会打开与展开的侧边栏相同的筛选,面板关闭后筛选仍会继续作用于侧边栏的窄栏。 +- 在拉取请求界面的“概览”中,“描述”标题及其 ⋯ 在描述于其下滚动时,留在这一列的顶部,下方有一条分隔线,⋯ 位于这一列的右边缘。 +- 拉取请求界面的加载占位符与在它们位置加载出的内容一致:索引显示与真实行同高的行,检查列位于实际所在位置,并铺满整个界面;拉取请求显示带按钮的标题行、真实的标签栏,以及打开的标签页的布局(描述及其旁边的信息、提交、检查、对话的头像和评论,或文件的工具栏、树和卡片),而不是几条通用的条形。对话和差异在加载时显示同样的占位符,而不是一行文字。 + +### Fixed + +- GitHub 拒绝的评审、回复或其他拉取请求操作,现在会说明原因,例如 github.com 上遗留了未提交的待处理评审,或评论所在的行不在差异中。此前每次拒绝都显示“gh could not complete the request”,因为 GitHub 发送的原因被丢弃了。 +- 拉取请求界面“文件”标签页中,某行下方的待处理评审评论有了“编辑”和“丢弃”,和“对话”标签页一样。此前只能在“对话”标签页中修改或丢弃它。 +- 在拉取请求界面的“文件”标签页中,展开更改之间隐藏的行、预览 Markdown 文件和显示图像,现在对分支没有在任何地方检出的拉取请求也有效。此前它们会以“Couldn't read”该文件而失败,因为 lich 在一个以拉取请求地址命名的文件夹中查找它。 +- 拉取请求界面中,拉取请求的标签页现在从顶部打开。此前它会停在上一个标签页或拉取请求滚动到的位置,因此“对话”标签页可能在末尾打开。 +- 拉取请求界面评审讨论串中引用的代码,现在显示其缩进,而不是每个制表符显示成一个方框。 +- 会话浏览器中的文件输入(例如上传头像)在点击时会打开系统的文件选择器,输入允许时可选择多个文件。此前点击没有任何反应。 +- 在会话浏览器中,对一个离开前会询问的页面选择“离开”,在繁忙的机器上不再改为重新加载该页面;浏览器会前往原本要去的地方。 +- 把 lich 移到另一个显示器、调整浏览器窗格大小或更改其缩放之后,代理在会话浏览器中点击某个点不再偏离。它的截图现在与点击使用相同的像素,HiDPI 显示器或页面缩放此前使截图最多大了 1.5 倍;而按窗格改变大小之前截取的截图读取的点位进行点击,会被拒绝,并告诉代理重新截一张图。 +- 会话工作时,lich 不再让 GPU 保持忙碌。项目标签页的旋转指示以显示器的刷新率重绘整个窗口,当不止一个项目中的会话在忙时,lich 占用了笔记本一半以上的 GPU,使游戏和其他一切都得不到它。现在每个旋转指示、侧边栏的忙碌圆环和运行中服务的跳动,每秒最多重绘 24 次,在 lich 窗口没有焦点时每秒 8 次,因此在另一个显示器上仍能看到会话的圆环在转。运行中服务的圆点每六秒跳动一次,而不是每两秒半一次:每次跳动都是一阵帧,而旧的节奏意味着一个圆点全天每秒八帧。 +- 会话工作时,窗口每秒绘制 24 帧(电影的帧率),而不是 30 帧,并且会话终端的输出在忙碌圆环的下一帧绘制,而不是自己再请求帧:流式输出的代理和旋转的圆环只占一个帧率,而不是两者之和。你输入的内容仍会在终端回显的那一刻显示。 +- 光标停在原处时,终端不再在每一帧都重绘光标所在的行;只有光标移动或该行文本变化时才会重新合成该行。 +- 在 Linux 上,窗口只绘制自上一帧以来变化的部分,并告知合成器该区域,而不是在会话工作时每秒重绘全部内容 24 次:只有忙碌圆环转动的帧,只绘制圆环和终端的光标行,窗口渲染器中显卡的工作量降到十五分之一。Windows 和 macOS 仍绘制完整帧。在环境中设置 `GIO_DAMAGE=off`,在 Linux 上也会绘制完整帧,适用于误报其缓冲区内容的显卡驱动。 +- 会话工作时,lich 窗口使用的处理器减少了一半。屏幕上的每个图标、圆环和圆弧,此前每一帧都从轮廓重新构建;现在每个只构建一次,并保存在显卡上。 + ## [0.83.0] - 2026-10-29 ### Added