dsh-composer-plus 1.23.0 → 1.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,18 @@
1
1
  {
2
- "version": "1.23.0",
2
+ "version": "1.24.0",
3
3
  "notes": {
4
- "en": "## New\n\n- **Quote from file preview**: select lines of a file in the right sidebar and click **Quote**. The file path, the line numbers and the lines go into the composer.\n- **Report an issue**: in Settings → Composer Plus, click **Report an issue…** (or pick **Report a Composer Plus issue…** in the menu of a chat). Describe the problem in your language and click **Write draft**. dsh's default model writes an English issue. Edit it, then click **Open issue**: your GitHub CLI (`gh`) opens it.\n- **Untangle codebase**: type `/untangle-codebase` in a chat. The agent finds copies, needless links, dead code and special cases, fixes them as a goal and checks again with subagents. Only you can start it.\n- **Turkish skill pack** (on by default): while **Application language** is Türkçe, Composer Plus downloads turkish-anti-ai-skill from GitHub and adds it to dsh's skills. It helps the agent write natural Turkish. Once a day, it checks for a newer version.\n- **On/off filter**: next to **Search features** in Settings → Composer Plus, **All**, **On** and **Off** show all features, only the features that are on, or only the features that are off.\n- **Remember window size**: the desktop app opens with the size and place of its last window, not at 1280 × 820.\n\n## Changes\n\n- **Remote computers**: the computer picker is now in the left sidebar, above **New session**. The dsh of the other Mac fills this window, and this Mac keeps running behind it. To come back, pick **This Mac** in the same picker. When you add a computer, you give it a **Name**.\n- **Next waiting chat**: a click on the button also finds the chat in the sidebar. A collapsed project opens, and the chat blinks for 5 seconds.\n- In the What’s new window, one line below the notes asks for a GitHub star, at most once in 30 days. After **Star on GitHub** or **Do not ask again**, it does not show again.\n- Each copy asks GitHub only one time for the small `installed.txt` file of its release, so the owner can count the copies. The request has no id, cookie or data about you.\n- Tether (a new build, iOS 18 or later): the Sessions list scrolls smoothly, a chat stays at the last message until you scroll up, and the header of an open step group stays at the top.\n\n## Fixes\n\n- **Branch per chat** on dsh 0.2.2: the message that you send no longer stays in the New chat draft, and the file attachment of the first message goes into the new chat.\n- While the **Next waiting chat** button shows, the search icon of the sidebar is no longer cut.",
5
- "zh": "## 新功能\n\n- **从文件预览中引用**:在右侧边栏中选中一个文件的若干行,点击 **引用**。文件路径、行号和这些行会进入输入框。\n- **报告问题**:在设置 → Composer Plus 中点击 **报告问题…**(或在对话菜单中选择 **报告 Composer Plus 问题…**)。用你的语言描述问题,然后点击 **写草稿**。dsh 的默认模型会写出一个英文 issue。编辑后点击 **创建 issue**:由你的 GitHub CLI(`gh`)创建它。\n- **理清代码库**:在对话中输入 `/untangle-codebase`。代理会找出重复代码、多余的依赖、死代码和特殊情况,把修复作为一个目标完成,并用子代理再次检查。只有你可以启动它。\n- **土耳其语技能包**(默认开启):当 **应用语言** 为 Türkçe 时,Composer Plus 从 GitHub 下载 turkish-anti-ai-skill 并将其加入 dsh 的技能。它帮助代理写出自然的土耳其语。它每天检查一次是否有新版本。\n- **开/关筛选**:在设置 → Composer Plus 中,**搜索功能** 旁边的 **全部**、**已开启** 和 **已关闭** 分别显示所有功能、仅已开启的功能或仅已关闭的功能。\n- **记住窗口大小**:桌面应用以上次窗口的大小和位置打开,而不是 1280 × 820。\n\n## 变更\n\n- **远程电脑**:电脑选择器现在位于左侧边栏,在 **新建会话** 上方。另一台 Mac 的 dsh 会占满此窗口,本机在后台继续运行。要返回,请在同一个选择器中选择 **本机**。添加电脑时需要为它输入 **名称**。\n- **下一个等待中的对话**:点击该按钮还会在侧边栏中找到该对话。折叠的项目会展开,对话会闪烁 5 秒。\n- 在新功能窗口中,说明下方的一行文字最多每 30 天请求一次 GitHub 星标。点击 **在 GitHub 上加星标** 或 **不再询问** 后,它不再显示。\n- 每份副本只向 GitHub 请求一次其版本的小文件 `installed.txt`,这样作者就能统计副本数量。该请求不含 ID、Cookie 或任何关于你的数据。\n- Tether(新构建,iOS 18 或更高版本):Sessions 列表滚动流畅;在你向上滚动之前,对话停留在最后一条消息;展开的步骤组的标题保持在顶部。\n\n## 修复\n\n- dsh 0.2.2 上的 **每个对话一个分支**:你发送的消息不再留在 New chat 草稿中,第一条消息的文件附件会进入新对话。\n- 显示 **下一个等待中的对话** 按钮时,侧边栏的搜索图标不再被截断。",
6
- "tr": "## Yeni\n\n- **Dosya önizlemesinden alıntıla**: sağ kenar çubuğunda bir dosyanın satırlarını seçin ve **Alıntıla** düğmesine tıklayın. Dosya yolu, satır numaraları ve satırlar mesaj alanına girer.\n- **Issue bildir**: Ayarlar → Composer Plus içinde **Issue bildir…** düğmesine tıklayın (ya da bir sohbetin menüsünde **Composer Plus için issue bildir…** seçeneğini seçin). Sorunu kendi dilinizde yazın ve **Taslak yaz** düğmesine tıklayın. dsh’nin varsayılan modeli İngilizce bir issue yazar. Taslağı düzenleyin, sonra **Issue aç** düğmesine tıklayın: issue’yu GitHub CLI’niz (`gh`) açar.\n- **Kod tabanını toparla**: bir sohbette `/untangle-codebase` yazın. Ajan kopyaları, gereksiz bağları, ölü kodu ve özel durumları bulur, bunları bir hedef olarak düzeltir ve alt ajanlarla yeniden kontrol eder. Bunu yalnız siz başlatabilirsiniz.\n- **Türkçe skill paketi** (varsayılan olarak açık): **Uygulama dili** Türkçe iken Composer Plus, turkish-anti-ai-skill paketini GitHub’dan indirir ve dsh’nin skill’lerine ekler. Paket, ajanın doğal bir Türkçe yazmasına yardım eder. Günde bir kez yeni sürüm olup olmadığını kontrol eder.\n- **Açık/kapalı filtresi**: Ayarlar → Composer Plus içinde **Özellik ara** kutusunun yanındaki **Tümü**, **Açık** ve **Kapalı** düğmeleri tüm özellikleri, yalnız açık olanları ya da yalnız kapalı olanları gösterir.\n- **Pencere boyutunu hatırla**: masaüstü uygulaması 1280 × 820 boyutunda değil, son penceresinin boyutu ve yeriyle açılır.\n\n## Değişiklikler\n\n- **Uzak bilgisayarlar**: bilgisayar seçici artık sol kenar çubuğunda, **Yeni oturum** düğmesinin üstünde. Diğer Mac’in dsh’si bu pencerenin tamamını kaplar; bu Mac arkada çalışmaya devam eder. Geri dönmek için aynı seçicide **Bu Mac** seçeneğini seçin. Bir bilgisayar eklerken ona bir **Ad** verirsiniz.\n- **Sıradaki bekleyen sohbet**: düğmeye tıklamak sohbeti kenar çubuğunda da bulur. Kapalı proje açılır ve sohbet 5 saniye yanıp söner.\n- Yenilikler penceresinde, notların altındaki bir satır en çok 30 günde bir GitHub yıldızı ister. **GitHub’da yıldız ver** ya da **Bir daha sorma** seçildikten sonra bu satır bir daha görünmez.\n- Her kopya, kendi sürümünün küçük `installed.txt` dosyasını GitHub’dan yalnız bir kez ister. Böylece proje sahibi kopyaları sayabilir. İstekte kimlik, çerez ya da sizinle ilgili bir veri yoktur.\n- Tether (yeni derleme, iOS 18 ya da üstü): Sessions listesi akıcı kayar, sohbet siz yukarı kaydırana kadar son mesajda kalır ve açık bir adım grubunun başlığı üstte kalır.\n\n## Düzeltmeler\n\n- dsh 0.2.2’de **Sohbet başına dal**: gönderdiğiniz mesaj artık New chat taslağında kalmaz ve ilk mesajın dosya eki yeni sohbete geçer.\n- **Sıradaki bekleyen sohbet** düğmesi görünürken kenar çubuğunun arama simgesi artık kesilmez.",
7
- "es": "## Novedades\n\n- **Citar desde la vista previa del archivo**: selecciona líneas de un archivo en la barra lateral derecha y haz clic en **Citar**. La ruta del archivo, los números de línea y las líneas van al editor.\n- **Informar de un problema**: en Configuración → Composer Plus, haz clic en **Informar de un problema…** (o elige **Informar de un problema de Composer Plus…** en el menú de un chat). Describe el problema en tu idioma y haz clic en **Escribir borrador**. El modelo predeterminado de dsh escribe una issue en inglés. Edítala y haz clic en **Abrir issue**: tu GitHub CLI (`gh`) la abre.\n- **Desenredar el código**: escribe `/untangle-codebase` en un chat. El agente encuentra copias, enlaces innecesarios, código muerto y casos especiales, los corrige como un objetivo y vuelve a comprobar con subagentes. Solo tú puedes iniciarlo.\n- **Paquete de skill en turco** (activado de forma predeterminada): mientras el **Idioma de la aplicación** es Türkçe, Composer Plus descarga turkish-anti-ai-skill de GitHub y lo añade a las skills de dsh. Ayuda al agente a escribir un turco natural. Una vez al día comprueba si hay una versión más nueva.\n- **Filtro activadas/desactivadas**: junto a **Buscar funciones** en Configuración → Composer Plus, **Todas**, **Activadas** y **Desactivadas** muestran todas las funciones, solo las activadas o solo las desactivadas.\n- **Recordar el tamaño de la ventana**: la app de escritorio se abre con el tamaño y la posición de su última ventana, no a 1280 × 820.\n\n## Cambios\n\n- **Equipos remotos**: el selector de equipos está ahora en la barra lateral izquierda, encima de **Nueva sesión**. El dsh del otro Mac ocupa esta ventana, y este Mac sigue funcionando detrás. Para volver, elige **Este Mac** en el mismo selector. Al añadir un equipo, escribes su **Nombre**.\n- **Siguiente chat en espera**: un clic en el botón también encuentra el chat en la barra lateral. Un proyecto contraído se abre y el chat parpadea durante 5 segundos.\n- En la ventana de novedades, una línea debajo de las notas pide una estrella en GitHub, como máximo una vez cada 30 días. Después de **Dar una estrella en GitHub** o **No volver a preguntar**, no vuelve a aparecer.\n- Cada copia pide a GitHub una sola vez el pequeño archivo `installed.txt` de su versión, para que el autor pueda contar las copias. La solicitud no lleva ningún id, cookie ni dato sobre ti.\n- Tether (una compilación nueva, iOS 18 o posterior): la lista Sessions se desplaza con fluidez, un chat se queda en el último mensaje hasta que desplazas hacia arriba y el encabezado de un grupo de pasos abierto se queda arriba.\n\n## Correcciones\n\n- **Una rama por chat** en dsh 0.2.2: el mensaje que envías ya no se queda en el borrador de New chat, y el archivo adjunto del primer mensaje pasa al nuevo chat.\n- Mientras se ve el botón **Siguiente chat en espera**, el icono de búsqueda de la barra lateral ya no se corta.",
8
- "pt-BR": "## Novidades\n\n- **Citar da prévia do arquivo**: selecione linhas de um arquivo na barra lateral direita e clique em **Citar**. O caminho do arquivo, os números das linhas e as linhas vão para o editor de mensagens.\n- **Relatar uma issue**: em Configurações → Composer Plus, clique em **Relatar uma issue…** (ou escolha **Relatar uma issue do Composer Plus…** no menu de um chat). Descreva o problema no seu idioma e clique em **Escrever rascunho**. O modelo padrão do dsh escreve uma issue em inglês. Edite-a e clique em **Abrir issue**: o seu GitHub CLI (`gh`) a abre.\n- **Desembaraçar o código**: digite `/untangle-codebase` em um chat. O agente encontra cópias, ligações desnecessárias, código morto e casos especiais, corrige tudo como uma meta e verifica de novo com subagentes. Só você pode iniciá-lo.\n- **Pacote de skill em turco** (ativado por padrão): enquanto o **Idioma do aplicativo** é Türkçe, o Composer Plus baixa o turkish-anti-ai-skill do GitHub e o adiciona às skills do dsh. Ele ajuda o agente a escrever um turco natural. Uma vez por dia, verifica se há uma versão mais nova.\n- **Filtro ativados/desativados**: ao lado de **Pesquisar recursos** em Configurações → Composer Plus, **Todos**, **Ativados** e **Desativados** mostram todos os recursos, só os ativados ou só os desativados.\n- **Lembrar o tamanho da janela**: o app de desktop abre com o tamanho e a posição da última janela, não em 1280 × 820.\n\n## Alterações\n\n- **Computadores remotos**: o seletor de computadores agora fica na barra lateral esquerda, acima de **Nova sessão**. O dsh do outro Mac ocupa esta janela, e este Mac continua funcionando por trás. Para voltar, escolha **Este Mac** no mesmo seletor. Ao adicionar um computador, você digita o **Nome** dele.\n- **Próximo chat em espera**: um clique no botão também encontra o chat na barra lateral. Um projeto recolhido se abre e o chat pisca por 5 segundos.\n- Na janela de novidades, uma linha abaixo das notas pede uma estrela no GitHub, no máximo uma vez a cada 30 dias. Depois de **Dar uma estrela no GitHub** ou **Não perguntar de novo**, ela não aparece mais.\n- Cada cópia pede ao GitHub só uma vez o pequeno arquivo `installed.txt` da sua versão, para que o autor possa contar as cópias. A solicitação não tem id, cookie nem dados sobre você.\n- Tether (uma build nova, iOS 18 ou posterior): a lista Sessions rola sem travar, um chat fica na última mensagem até você rolar para cima e o cabeçalho de um grupo de etapas aberto fica no topo.\n\n## Correções\n\n- **Um branch por chat** no dsh 0.2.2: a mensagem que você envia não fica mais no rascunho de New chat, e o anexo da primeira mensagem vai para o novo chat.\n- Enquanto o botão **Próximo chat em espera** aparece, o ícone de pesquisa da barra lateral não é mais cortado.",
9
- "fr": "## Nouveautés\n\n- **Citer depuis l’aperçu du fichier** : sélectionnez des lignes d’un fichier dans la barre latérale droite et cliquez sur **Citer**. Le chemin du fichier, les numéros de ligne et les lignes vont dans la zone de saisie.\n- **Signaler une issue** : dans Réglages → Composer Plus, cliquez sur **Signaler une issue…** (ou choisissez **Signaler une issue Composer Plus…** dans le menu d’une discussion). Décrivez le problème dans votre langue et cliquez sur **Rédiger le brouillon**. Le modèle par défaut de dsh rédige une issue en anglais. Modifiez-la, puis cliquez sur **Ouvrir l’issue** : votre GitHub CLI (`gh`) l’ouvre.\n- **Démêler le code** : tapez `/untangle-codebase` dans une discussion. L’agent trouve les copies, les liens inutiles, le code mort et les cas particuliers, les corrige comme un objectif et vérifie de nouveau avec des sous-agents. Vous seul pouvez le lancer.\n- **Pack de skill turc** (activé par défaut) : tant que la **Langue de l’application** est Türkçe, Composer Plus télécharge turkish-anti-ai-skill depuis GitHub et l’ajoute aux skills de dsh. Il aide l’agent à écrire un turc naturel. Une fois par jour, il vérifie s’il existe une version plus récente.\n- **Filtre activées/désactivées** : à côté de **Rechercher des fonctionnalités** dans Réglages → Composer Plus, **Toutes**, **Activées** et **Désactivées** affichent toutes les fonctionnalités, seulement celles qui sont activées ou seulement celles qui sont désactivées.\n- **Mémoriser la taille de la fenêtre** : l’app de bureau s’ouvre avec la taille et la position de sa dernière fenêtre, et non en 1280 × 820.\n\n## Modifications\n\n- **Ordinateurs distants** : le sélecteur d’ordinateurs est maintenant dans la barre latérale gauche, au-dessus de **Nouvelle session**. Le dsh de l’autre Mac remplit cette fenêtre, et ce Mac continue de fonctionner derrière. Pour revenir, choisissez **Ce Mac** dans le même sélecteur. Quand vous ajoutez un ordinateur, vous saisissez son **Nom**.\n- **Discussion en attente suivante** : un clic sur le bouton trouve aussi la discussion dans la barre latérale. Un projet replié s’ouvre et la discussion clignote pendant 5 secondes.\n- Dans la fenêtre des nouveautés, une ligne sous les notes demande une étoile sur GitHub, au plus une fois tous les 30 jours. Après **Mettre une étoile sur GitHub** ou **Ne plus demander**, elle ne s’affiche plus.\n- Chaque copie demande une seule fois à GitHub le petit fichier `installed.txt` de sa version, afin que l’auteur puisse compter les copies. La requête ne contient ni identifiant, ni cookie, ni donnée sur vous.\n- Tether (une nouvelle build, iOS 18 ou ultérieur) : la liste Sessions défile de manière fluide, une discussion reste sur le dernier message jusqu’à ce que vous fassiez défiler vers le haut, et l’en-tête d’un groupe d’étapes ouvert reste en haut.\n\n## Corrections\n\n- **Une branche par discussion** sur dsh 0.2.2 : le message que vous envoyez ne reste plus dans le brouillon New chat, et la pièce jointe du premier message passe dans la nouvelle discussion.\n- Quand le bouton **Discussion en attente suivante** est affiché, l’icône de recherche de la barre latérale n’est plus coupée.",
10
- "de": "## Neu\n\n- **Aus Dateivorschau zitieren**: Markiere Zeilen einer Datei in der rechten Seitenleiste und klicke auf **Zitieren**. Der Dateipfad, die Zeilennummern und die Zeilen kommen ins Eingabefeld.\n- **Issue melden**: Klicke in Einstellungen → Composer Plus auf **Issue melden…** (oder wähle **Issue zu Composer Plus melden…** im Menü eines Chats). Beschreibe das Problem in deiner Sprache und klicke auf **Entwurf schreiben**. Das Standardmodell von dsh schreibt ein Issue auf Englisch. Bearbeite es und klicke dann auf **Issue öffnen**: Deine GitHub CLI (`gh`) öffnet es.\n- **Codebasis entwirren**: Gib `/untangle-codebase` in einem Chat ein. Der Agent findet Kopien, unnötige Verbindungen, toten Code und Sonderfälle, behebt sie als Ziel und prüft mit Subagenten erneut. Nur du kannst ihn starten.\n- **Türkisches Skill-Paket** (standardmäßig an): Solange die **App-Sprache** Türkçe ist, lädt Composer Plus turkish-anti-ai-skill von GitHub herunter und fügt es zu den Skills von dsh hinzu. Es hilft dem Agenten, natürliches Türkisch zu schreiben. Einmal am Tag prüft es, ob es eine neuere Version gibt.\n- **An/Aus-Filter**: Neben **Funktionen suchen** in Einstellungen → Composer Plus zeigen **Alle**, **An** und **Aus** alle Funktionen, nur die eingeschalteten oder nur die ausgeschalteten.\n- **Fenstergröße merken**: Die Desktop-App öffnet sich mit der Größe und Position ihres letzten Fensters, nicht mit 1280 × 820.\n\n## Änderungen\n\n- **Remote-Computer**: Die Computerauswahl ist jetzt in der linken Seitenleiste, über **Neue Sitzung**. dsh auf dem anderen Mac füllt dieses Fenster, und dieser Mac läuft dahinter weiter. Um zurückzukehren, wähle **Dieser Mac** in derselben Auswahl. Wenn du einen Computer hinzufügst, gibst du seinen **Name** ein.\n- **Nächster wartender Chat**: Ein Klick auf die Schaltfläche findet den Chat auch in der Seitenleiste. Ein eingeklapptes Projekt öffnet sich, und der Chat blinkt 5 Sekunden lang.\n- Im Fenster mit den Neuerungen bittet eine Zeile unter den Notizen um einen GitHub-Stern, höchstens einmal in 30 Tagen. Nach **Auf GitHub einen Stern geben** oder **Nicht mehr fragen** erscheint sie nicht mehr.\n- Jede Kopie fragt bei GitHub nur einmal die kleine Datei `installed.txt` ihres Releases ab, damit der Autor die Kopien zählen kann. Die Anfrage enthält keine ID, kein Cookie und keine Daten über dich.\n- Tether (ein neuer Build, iOS 18 oder neuer): Die Sessions-Liste scrollt flüssig, ein Chat bleibt bei der letzten Nachricht, bis du nach oben scrollst, und die Kopfzeile einer offenen Schrittgruppe bleibt oben.\n\n## Korrekturen\n\n- **Ein Branch pro Chat** unter dsh 0.2.2: Die gesendete Nachricht bleibt nicht mehr im Entwurf von New chat, und der Dateianhang der ersten Nachricht kommt in den neuen Chat.\n- Solange die Schaltfläche **Nächster wartender Chat** sichtbar ist, wird das Suchsymbol der Seitenleiste nicht mehr abgeschnitten.",
11
- "ru": "## Новое\n\n- **Цитата из предпросмотра файла**: выделите строки файла в правой боковой панели и нажмите **Цитировать**. Путь к файлу, номера строк и сами строки попадут в поле ввода.\n- **Сообщить о проблеме**: в Настройки → Composer Plus нажмите **Сообщить о проблеме…** (или выберите **Сообщить о проблеме с Composer Plus…** в меню чата). Опишите проблему на своём языке и нажмите **Написать черновик**. Модель dsh по умолчанию пишет issue на английском. Отредактируйте его и нажмите **Открыть issue**: его откроет ваш GitHub CLI (`gh`).\n- **Распутать кодовую базу**: введите `/untangle-codebase` в чате. Агент находит копии, лишние связи, мёртвый код и особые случаи, исправляет их как цель и проверяет снова с помощью субагентов. Запустить его можете только вы.\n- **Пакет навыка для турецкого** (включён по умолчанию): пока **Язык приложения** — Türkçe, Composer Plus скачивает turkish-anti-ai-skill с GitHub и добавляет его в навыки dsh. Он помогает агенту писать на естественном турецком. Раз в день он проверяет, есть ли новая версия.\n- **Фильтр «вкл./выкл.»**: рядом с **Поиск функций** в Настройки → Composer Plus кнопки **Все**, **Включённые** и **Выключенные** показывают все функции, только включённые или только выключенные.\n- **Запоминать размер окна**: настольное приложение открывается с размером и положением последнего окна, а не 1280 × 820.\n\n## Изменения\n\n- **Удалённые компьютеры**: выбор компьютера теперь в левой боковой панели, над **Новый сеанс**. dsh другого Mac заполняет это окно, а этот Mac продолжает работать за ним. Чтобы вернуться, выберите **Этот Mac** в том же списке. При добавлении компьютера вы вводите его **Имя**.\n- **Следующий ожидающий чат**: нажатие на кнопку также находит чат в боковой панели. Свёрнутый проект раскрывается, и чат мигает 5 секунд.\n- В окне новинок строка под заметками просит поставить звезду на GitHub, не чаще одного раза в 30 дней. После **Поставить звезду на GitHub** или **Больше не спрашивать** она больше не появляется.\n- Каждая копия только один раз запрашивает у GitHub маленький файл `installed.txt` своего выпуска, чтобы автор мог посчитать копии. Запрос не содержит ни идентификатора, ни cookie, ни данных о вас.\n- Tether (новая сборка, iOS 18 или новее): список Sessions прокручивается плавно, чат остаётся на последнем сообщении, пока вы не прокрутите вверх, а заголовок открытой группы шагов остаётся вверху.\n\n## Исправления\n\n- **Ветка для каждого чата** в dsh 0.2.2: отправленное сообщение больше не остаётся в черновике New chat, а вложенный файл первого сообщения переходит в новый чат.\n- Пока видна кнопка **Следующий ожидающий чат**, значок поиска боковой панели больше не обрезается.",
12
- "ja": "## 新機能\n\n- **ファイルプレビューから引用**:右サイドバーでファイルの行を選択し、**引用** をクリックします。ファイルのパス、行番号、その行が入力欄に入ります。\n- **issue を報告**:設定 → Composer Plus で **issue を報告…** をクリックします(またはチャットのメニューで **Composer Plus の issue を報告…** を選びます)。問題を自分の言語で書き、**下書きを書く** をクリックします。dsh の既定のモデルが英語の issue を書きます。編集してから **issue を作成** をクリックすると、あなたの GitHub CLI(`gh`)が issue を作成します。\n- **コードベースを整理**:チャットで `/untangle-codebase` と入力します。エージェントが重複、不要なつながり、使われていないコード、特殊ケースを見つけ、ゴールとして修正し、サブエージェントで再確認します。開始できるのはあなただけです。\n- **トルコ語スキルパック**(既定でオン):**アプリケーションの言語** が Türkçe の間、Composer Plus は GitHub から turkish-anti-ai-skill をダウンロードし、dsh のスキルに追加します。エージェントが自然なトルコ語を書く助けになります。1 日に 1 回、新しいバージョンがあるか確認します。\n- **オン/オフ フィルター**:設定 → Composer Plus の **機能を検索** の横にある **すべて**、**オン**、**オフ** で、すべての機能、オンの機能だけ、またはオフの機能だけを表示します。\n- **ウィンドウのサイズを記憶する**:デスクトップアプリは 1280 × 820 ではなく、前回のウィンドウのサイズと位置で開きます。\n\n## 変更点\n\n- **リモートコンピュータ**:コンピュータの選択メニューは左サイドバーの **新しいセッション** の上に移りました。ほかの Mac の dsh がこのウィンドウ全体に表示され、この Mac は裏で動き続けます。戻るには、同じメニューで **この Mac** を選びます。コンピュータを追加するときは **名前** を入力します。\n- **次の待機中のチャット**:ボタンをクリックすると、サイドバーでもそのチャットを見つけます。折りたたまれたプロジェクトが開き、チャットが 5 秒間点滅します。\n- 新機能のウィンドウでは、ノートの下の 1 行が GitHub のスターを求めます(最大で 30 日に 1 回)。**GitHub でスターを付ける** または **今後は表示しない** を選ぶと、二度と表示されません。\n- 各コピーは、自分のリリースの小さなファイル `installed.txt` を GitHub に 1 回だけ要求します。これにより、作者はコピーの数を数えられます。このリクエストには、ID、Cookie、あなたに関するデータは含まれません。\n- Tether(新しいビルド、iOS 18 以降):Sessions の一覧がなめらかにスクロールし、上にスクロールするまでチャットは最後のメッセージに留まり、開いたステップグループの見出しは上部に留まります。\n\n## 修正\n\n- dsh 0.2.2 での **チャットごとのブランチ**:送信したメッセージが New chat の下書きに残らなくなり、最初のメッセージの添付ファイルが新しいチャットに入るようになりました。\n- **次の待機中のチャット** ボタンが表示されている間も、サイドバーの検索アイコンが切れなくなりました。",
13
- "ko": "## 새 기능\n\n- **파일 미리 보기에서 인용**: 오른쪽 사이드바에서 파일의 줄을 선택하고 **인용**을 클릭합니다. 파일 경로, 줄 번호, 선택한 줄이 입력란에 들어갑니다.\n- **이슈 보고**: 설정 → Composer Plus에서 **이슈 보고…**를 클릭합니다(또는 채팅 메뉴에서 **Composer Plus 이슈 보고…**를 선택합니다). 문제를 자신의 언어로 쓰고 **초안 쓰기**를 클릭합니다. dsh의 기본 모델이 영어 이슈를 씁니다. 수정한 뒤 **이슈 열기**를 클릭하면 GitHub CLI(`gh`)가 이슈를 엽니다.\n- **코드베이스 정리**: 채팅에 `/untangle-codebase`를 입력합니다. 에이전트가 중복, 불필요한 연결, 죽은 코드, 특수한 경우를 찾아 목표로 수정하고, 서브에이전트로 다시 확인합니다. 직접 시작할 때만 실행됩니다.\n- **터키어 스킬 팩**(기본으로 켜짐): **애플리케이션 언어**가 Türkçe인 동안 Composer Plus가 GitHub에서 turkish-anti-ai-skill을 내려받아 dsh의 스킬에 추가합니다. 에이전트가 자연스러운 터키어를 쓰도록 돕습니다. 하루에 한 번 새 버전이 있는지 확인합니다.\n- **켬/끔 필터**: 설정 → Composer Plus의 **기능 검색** 옆에 있는 **전체**, **켬**, **끔**이 모든 기능, 켜진 기능만, 꺼진 기능만 보여 줍니다.\n- **창 크기 기억하기**: 데스크톱 앱이 1280 × 820이 아니라 마지막 창의 크기와 위치로 열립니다.\n\n## 변경 사항\n\n- **원격 컴퓨터**: 컴퓨터 선택기가 이제 왼쪽 사이드바의 **새 세션** 위에 있습니다. 다른 Mac의 dsh가 이 창을 채우고, 이 Mac은 뒤에서 계속 실행됩니다. 돌아오려면 같은 선택기에서 **이 Mac**을 선택합니다. 컴퓨터를 추가할 때 **이름**을 입력합니다.\n- **다음 대기 중인 채팅**: 버튼을 클릭하면 사이드바에서도 그 채팅을 찾습니다. 접힌 프로젝트가 열리고 채팅이 5초 동안 깜박입니다.\n- 새 기능 창에서 노트 아래의 한 줄이 최대 30일에 한 번 GitHub 별표를 요청합니다. **GitHub에서 별표 주기** 또는 **다시 묻지 않기**를 누르면 다시 나타나지 않습니다.\n- 각 사본은 GitHub에 자기 릴리스의 작은 `installed.txt` 파일을 한 번만 요청합니다. 그래서 제작자가 사본 수를 셀 수 있습니다. 이 요청에는 ID, 쿠키, 사용자에 관한 데이터가 없습니다.\n- Tether(새 빌드, iOS 18 이상): Sessions 목록이 부드럽게 스크롤되고, 위로 스크롤하기 전까지 채팅이 마지막 메시지에 머물며, 열린 단계 그룹의 제목이 위쪽에 고정됩니다.\n\n## 수정 사항\n\n- dsh 0.2.2의 **채팅별 브랜치**: 보낸 메시지가 더 이상 New chat 초안에 남지 않고, 첫 메시지의 첨부 파일이 새 채팅으로 넘어갑니다.\n- **다음 대기 중인 채팅** 버튼이 보이는 동안 사이드바의 검색 아이콘이 더 이상 잘리지 않습니다.",
14
- "id": "## Baru\n\n- **Kutip dari pratinjau file**: pilih baris-baris sebuah file di bilah samping kanan dan klik **Kutip**. Jalur file, nomor baris, dan baris-baris itu masuk ke kotak pesan.\n- **Laporkan isu**: di Pengaturan → Composer Plus, klik **Laporkan isu…** (atau pilih **Laporkan isu Composer Plus…** di menu sebuah obrolan). Jelaskan masalahnya dalam bahasa Anda dan klik **Tulis draf**. Model default dsh menulis isu dalam bahasa Inggris. Edit isu itu, lalu klik **Buka isu**: GitHub CLI (`gh`) Anda membukanya.\n- **Rapikan basis kode**: ketik `/untangle-codebase` di sebuah obrolan. Agen menemukan salinan, keterkaitan yang tidak perlu, kode mati, dan kasus khusus, memperbaikinya sebagai sebuah tujuan, lalu memeriksa lagi dengan subagen. Hanya Anda yang dapat memulainya.\n- **Paket skill bahasa Turki** (aktif secara default): selama **Bahasa aplikasi** adalah Türkçe, Composer Plus mengunduh turkish-anti-ai-skill dari GitHub dan menambahkannya ke skill dsh. Paket ini membantu agen menulis bahasa Turki yang alami. Sekali sehari, paket ini memeriksa apakah ada versi yang lebih baru.\n- **Filter aktif/nonaktif**: di samping **Cari fitur** di Pengaturan → Composer Plus, **Semua**, **Aktif**, dan **Nonaktif** menampilkan semua fitur, hanya fitur yang aktif, atau hanya fitur yang nonaktif.\n- **Ingat ukuran jendela**: aplikasi desktop terbuka dengan ukuran dan posisi jendela terakhirnya, bukan 1280 × 820.\n\n## Perubahan\n\n- **Komputer jarak jauh**: pemilih komputer sekarang ada di bilah samping kiri, di atas **Sesi Baru**. dsh dari Mac lain memenuhi jendela ini, dan Mac ini tetap berjalan di belakangnya. Untuk kembali, pilih **Mac ini** di pemilih yang sama. Saat menambahkan komputer, Anda mengetik **Nama**-nya.\n- **Obrolan menunggu berikutnya**: klik pada tombol juga menemukan obrolan itu di bilah samping. Proyek yang diciutkan terbuka dan obrolan berkedip selama 5 detik.\n- Di jendela yang baru, satu baris di bawah catatan meminta bintang GitHub, paling sering sekali dalam 30 hari. Setelah **Beri bintang di GitHub** atau **Jangan tanya lagi**, baris itu tidak muncul lagi.\n- Setiap salinan meminta file kecil `installed.txt` dari rilisnya ke GitHub hanya satu kali, agar pembuatnya dapat menghitung salinan. Permintaan ini tidak berisi id, cookie, atau data tentang Anda.\n- Tether (build baru, iOS 18 atau lebih baru): daftar Sessions bergulir dengan lancar, obrolan tetap di pesan terakhir sampai Anda menggulir ke atas, dan judul grup langkah yang terbuka tetap di atas.\n\n## Perbaikan\n\n- **Branch per obrolan** di dsh 0.2.2: pesan yang Anda kirim tidak lagi tertinggal di draf New chat, dan lampiran file pesan pertama masuk ke obrolan baru.\n- Selama tombol **Obrolan menunggu berikutnya** terlihat, ikon pencarian bilah samping tidak lagi terpotong.",
15
- "vi": "## Mới\n\n- **Trích dẫn từ bản xem trước tệp**: chọn các dòng của một tệp ở thanh bên phải rồi nhấp **Trích dẫn**. Đường dẫn tệp, số dòng và các dòng đó được đưa vào khung soạn thảo.\n- **Báo cáo issue**: trong Cài đặt → Composer Plus, nhấp **Báo cáo issue…** (hoặc chọn **Báo cáo issue về Composer Plus…** trong menu của một cuộc trò chuyện). Mô tả vấn đề bằng ngôn ngữ của bạn rồi nhấp **Viết bản nháp**. Mô hình mặc định của dsh viết một issue bằng tiếng Anh. Sửa issue, rồi nhấp **Mở issue**: GitHub CLI (`gh`) của bạn sẽ mở nó.\n- **Gỡ rối codebase**: gõ `/untangle-codebase` trong một cuộc trò chuyện. Agent tìm các bản sao, liên kết không cần thiết, mã chết và trường hợp đặc biệt, sửa chúng như một mục tiêu và kiểm tra lại bằng các agent phụ. Chỉ bạn mới có thể bắt đầu nó.\n- **Gói skill tiếng Thổ Nhĩ Kỳ** (mặc định bật): khi **Ngôn ngữ ứng dụng** là Türkçe, Composer Plus tải turkish-anti-ai-skill từ GitHub và thêm vào các skill của dsh. Gói này giúp agent viết tiếng Thổ Nhĩ Kỳ tự nhiên. Mỗi ngày một lần, nó kiểm tra xem có phiên bản mới hơn không.\n- **Bộ lọc bật/tắt**: bên cạnh **Tìm tính năng** trong Cài đặt → Composer Plus, **Tất cả**, **Bật** và **Tắt** hiển thị mọi tính năng, chỉ các tính năng đang bật hoặc chỉ các tính năng đang tắt.\n- **Ghi nhớ kích thước cửa sổ**: ứng dụng máy tính mở với kích thước và vị trí của cửa sổ lần trước, không phải 1280 × 820.\n\n## Thay đổi\n\n- **Máy tính từ xa**: bộ chọn máy tính giờ nằm ở thanh bên trái, phía trên **Phiên mới**. dsh của máy Mac kia lấp đầy cửa sổ này, và máy Mac này vẫn chạy phía sau. Để quay lại, chọn **Máy Mac này** trong cùng bộ chọn. Khi thêm một máy tính, bạn nhập **Tên** cho nó.\n- **Cuộc trò chuyện đang chờ tiếp theo**: một cú nhấp vào nút cũng tìm cuộc trò chuyện đó trong thanh bên. Dự án đang thu gọn sẽ mở ra và cuộc trò chuyện nhấp nháy trong 5 giây.\n- Trong cửa sổ có gì mới, một dòng bên dưới ghi chú xin một sao GitHub, nhiều nhất một lần trong 30 ngày. Sau khi chọn **Gắn sao trên GitHub** hoặc **Không hỏi lại**, dòng này không hiện nữa.\n- Mỗi bản sao chỉ hỏi GitHub một lần tệp nhỏ `installed.txt` của bản phát hành của nó, để chủ dự án có thể đếm số bản sao. Yêu cầu này không có id, cookie hay dữ liệu nào về bạn.\n- Tether (bản build mới, iOS 18 trở lên): danh sách Sessions cuộn mượt, cuộc trò chuyện ở lại tin nhắn cuối cho đến khi bạn cuộn lên, và tiêu đề của một nhóm bước đang mở ở lại phía trên.\n\n## Sửa lỗi\n\n- **Branch riêng cho từng cuộc trò chuyện** trên dsh 0.2.2: tin nhắn bạn gửi không còn ở lại trong bản nháp New chat, và tệp đính kèm của tin nhắn đầu tiên được chuyển sang cuộc trò chuyện mới.\n- Khi nút **Cuộc trò chuyện đang chờ tiếp theo** hiển thị, biểu tượng tìm kiếm của thanh bên không còn bị cắt.",
16
- "hi": "## नया\n\n- **फ़ाइल प्रीव्यू से उद्धरण**: दाएं साइडबार में किसी फ़ाइल की लाइनें चुनें और **उद्धरण दें** पर क्लिक करें। फ़ाइल का पाथ, लाइन नंबर और वे लाइनें कंपोज़र में आ जाती हैं।\n- **इश्यू रिपोर्ट करें**: सेटिंग → Composer Plus में **इश्यू रिपोर्ट करें…** पर क्लिक करें (या किसी चैट के मेनू में **Composer Plus इश्यू रिपोर्ट करें…** चुनें)। समस्या अपनी भाषा में लिखें और **ड्राफ़्ट लिखें** पर क्लिक करें। dsh का डिफ़ॉल्ट मॉडल अंग्रेज़ी में एक इश्यू लिखता है। उसे बदलें, फिर **इश्यू खोलें** पर क्लिक करें: आपका GitHub CLI (`gh`) उसे खोलता है।\n- **कोडबेस सुलझाएं**: किसी चैट में `/untangle-codebase` लिखें। एजेंट कॉपी, बेकार जुड़ाव, डेड कोड और खास मामलों को ढूंढता है, उन्हें एक लक्ष्य के रूप में ठीक करता है और सबएजेंट से फिर जांचता है। इसे सिर्फ़ आप शुरू कर सकते हैं।\n- **तुर्की स्किल पैक** (डिफ़ॉल्ट रूप से चालू): जब तक **ऐप्लिकेशन की भाषा** Türkçe है, Composer Plus GitHub से turkish-anti-ai-skill डाउनलोड करता है और उसे dsh की स्किल में जोड़ता है। यह एजेंट को स्वाभाविक तुर्की लिखने में मदद करता है। दिन में एक बार यह नए वर्शन की जांच करता है।\n- **चालू/बंद फ़िल्टर**: सेटिंग → Composer Plus में **सुविधाएं खोजें** के पास **सभी**, **चालू** और **बंद** सभी सुविधाएं, सिर्फ़ चालू सुविधाएं या सिर्फ़ बंद सुविधाएं दिखाते हैं।\n- **विंडो का आकार याद रखें**: डेस्कटॉप ऐप 1280 × 820 पर नहीं, बल्कि पिछली विंडो के आकार और जगह पर खुलता है।\n\n## बदलाव\n\n- **रिमोट कंप्यूटर**: कंप्यूटर चुनने का मेनू अब बाएं साइडबार में **नया सेशन** के ऊपर है। दूसरे Mac का dsh इस पूरी विंडो में खुलता है, और यह Mac पीछे चलता रहता है। वापस आने के लिए उसी मेनू में **यह Mac** चुनें। कंप्यूटर जोड़ते समय आप उसका **नाम** लिखते हैं।\n- **अगली इंतज़ार कर रही चैट**: बटन पर क्लिक करने से वह चैट साइडबार में भी मिल जाती है। बंद प्रोजेक्ट खुल जाता है और चैट 5 सेकंड तक चमकती है।\n- नया क्या है वाली विंडो में नोट्स के नीचे एक लाइन GitHub स्टार मांगती है, 30 दिन में ज़्यादा से ज़्यादा एक बार। **GitHub पर स्टार दें** या **फिर से न पूछें** के बाद यह फिर नहीं दिखती।\n- हर कॉपी GitHub से अपनी रिलीज़ की छोटी `installed.txt` फ़ाइल सिर्फ़ एक बार मांगती है, ताकि मालिक कॉपी गिन सके। इस अनुरोध में कोई id, कुकी या आपके बारे में कोई डेटा नहीं होता।\n- Tether (नया बिल्ड, iOS 18 या नया): Sessions सूची आसानी से स्क्रॉल होती है, ऊपर स्क्रॉल करने तक चैट आखिरी मैसेज पर रहती है, और खुले स्टेप ग्रुप का हेडर ऊपर रहता है।\n\n## सुधार\n\n- dsh 0.2.2 पर **हर चैट की अपनी ब्रांच**: भेजा गया मैसेज अब New chat ड्राफ़्ट में नहीं रहता, और पहले मैसेज की फ़ाइल अटैचमेंट नई चैट में जाती है।\n- जब **अगली इंतज़ार कर रही चैट** बटन दिखता है, तब साइडबार का खोज आइकन अब कटता नहीं है।"
4
+ "en": "## New\n\n- **Assistant** (off by default): switch it on in Settings → Composer Plus, then click **Assistant** in the left sidebar, right under **Task board**. It opens one lasting chat in `~/Assistant` that you use as your personal assistant. It sets reminders and automations with dsh's scheduled tasks, searches the web, and lists and reads your other chats. It sends a message to a chat, or starts, stops or archives a chat, only after you click **Allow once**. It cannot delete a chat. Keep your profile in this project's memory, topic `profil`. In Tether, the \"Assistant\" button in the Sessions toolbar opens the same chat.\n\n## Changes\n\n- **Remote computers**: the bar at the top of the window is gone. While the dsh of another Mac fills the window, the computer picker in the left sidebar says **Back to this Mac**. With one other computer, a click comes back at once. With more, the click opens the menu.\n- Tether (a new build): a question that dsh asks while Tether is closed now waits for your phone, and you can answer it when you open Tether. The Mac shows it too. \"New branch\" in the `+` menu of the message field shows in every chat. When the Mac cannot make a branch, it is off and shows the reason.\n\n## Fixes\n\n- Tether: the text that you send while a turn runs no longer stays in the message field.",
5
+ "zh": "## 新功能\n\n- **助理**(默认关闭):在 设置 → Composer Plus 中打开,然后点击左侧边栏中 **任务看板** 正下方的 **助理**。它会在 `~/Assistant` 中打开一个长期保留的对话,你可以把它当作个人助理。它用 dsh 的定时任务设置提醒和自动化,搜索网页,并列出和阅读你的其他对话。只有在你点击 **允许一次** 之后,它才会向某个对话发送消息,或新建、停止、归档对话。它不能删除对话。请把你的个人资料保存在该项目的记忆中,主题为 `profil`。在 Tether 中,Sessions 工具栏里的“Assistant”按钮会打开同一个对话。\n\n## 变更\n\n- **远程电脑**:窗口顶部的横条已移除。当另一台 Mac 的 dsh 占满窗口时,左侧边栏中的电脑选择器显示 **返回本机**。只有一台其他电脑时,点击一次即可立即返回。有多台时,点击会打开菜单。\n- Tether(新版本):Tether 关闭时 dsh 提出的问题现在会等待你的手机,你打开 Tether 后即可回答。Mac 上也会显示这个问题。消息框 `+` 菜单中的“New branch”现在会在每个对话中显示。Mac 无法创建分支时,它会被停用并显示原因。\n\n## 修复\n\n- Tether:轮次运行时发送的文本不再留在消息框中。",
6
+ "tr": "## Yeni\n\n- **Asistan** (varsayılan olarak kapalı): Ayarlar → Composer Plus içinden açın, sonra sol kenar çubuğunda **Görev panosu**'nun hemen altındaki **Asistan**'a tıklayın. `~/Assistant` klasöründe, kişisel asistanınız olarak kullandığınız tek ve kalıcı bir sohbet açılır. dsh'nin zamanlanmış görevleriyle hatırlatma ve otomasyon kurar, web'de arar, öteki sohbetlerinizi listeler ve okur. Bir sohbete mesaj göndermeden, sohbet açmadan, durdurmadan ya da arşivlemeden önce sizin **Bir kez izin ver**'e tıklamanızı bekler. Sohbet silemez. Profilinizi bu projenin hafızasında, `profil` konusunda tutun. Tether'da Sessions araç çubuğundaki \"Assistant\" düğmesi aynı sohbeti açar.\n\n## Değişiklikler\n\n- **Uzak bilgisayarlar**: pencerenin üstündeki şerit kaldırıldı. Başka bir Mac'in dsh'si pencereyi kaplarken sol kenar çubuğundaki bilgisayar seçici **Bu Mac’e dön** der. Tek bir başka bilgisayar varsa bir tıklama hemen geri döner. Daha fazlası varsa tıklama menüyü açar.\n- Tether (yeni derleme): Tether kapalıyken dsh'nin sorduğu soru artık telefonunuzu bekler ve Tether'ı açınca yanıtlayabilirsiniz. Soru Mac'te de görünür. Mesaj alanının `+` menüsündeki \"New branch\" her sohbette görünür. Mac dal oluşturamıyorsa seçenek kapalıdır ve nedenini gösterir.\n\n## Düzeltmeler\n\n- Tether: bir tur çalışırken gönderdiğiniz metin artık mesaj alanında kalmaz.",
7
+ "es": "## Novedades\n\n- **Asistente** (desactivado de forma predeterminada): actívalo en Configuración → Composer Plus y haz clic en **Asistente** en la barra lateral izquierda, justo debajo de **Tablero de tareas**. Abre un chat permanente en `~/Assistant` que usas como tu asistente personal. Crea recordatorios y automatizaciones con las tareas programadas de dsh, busca en la web y lista y lee tus otros chats. Solo envía un mensaje a un chat, o inicia, detiene o archiva un chat, después de que hagas clic en **Permitir una vez**. No puede eliminar chats. Guarda tu perfil en la memoria de este proyecto, tema `profil`. En Tether, el botón \"Assistant\" de la barra de herramientas de Sessions abre el mismo chat.\n\n## Cambios\n\n- **Equipos remotos**: la barra de la parte superior de la ventana ya no está. Mientras el dsh de otro Mac ocupa la ventana, el selector de equipos de la barra lateral izquierda dice **Volver a este Mac**. Con un solo equipo más, un clic vuelve al instante. Con más, el clic abre el menú.\n- Tether (nueva compilación): una pregunta que dsh hace mientras Tether está cerrado ahora espera a tu teléfono, y puedes responderla al abrir Tether. El Mac también la muestra. \"New branch\" en el menú `+` del campo de mensaje aparece en todos los chats. Cuando el Mac no puede crear una rama, está desactivado y muestra el motivo.\n\n## Correcciones\n\n- Tether: el texto que envías mientras se ejecuta un turno ya no se queda en el campo de mensaje.",
8
+ "pt-BR": "## Novidades\n\n- **Assistente** (desativado por padrão): ative em Configurações → Composer Plus e clique em **Assistente** na barra lateral esquerda, logo abaixo de **Quadro de tarefas**. Ele abre um chat permanente em `~/Assistant` que você usa como seu assistente pessoal. Ele cria lembretes e automações com as tarefas agendadas do dsh, pesquisa na web e lista e lê seus outros chats. Ele só envia uma mensagem a um chat, ou inicia, para ou arquiva um chat, depois que você clica em **Permitir uma vez**. Ele não pode excluir chats. Guarde seu perfil na memória deste projeto, tema `profil`. No Tether, o botão \"Assistant\" da barra de ferramentas de Sessions abre o mesmo chat.\n\n## Alterações\n\n- **Computadores remotos**: a barra no topo da janela foi removida. Enquanto o dsh de outro Mac ocupa a janela, o seletor de computadores na barra lateral esquerda mostra **Voltar para este Mac**. Com só mais um computador, um clique volta na hora. Com mais, o clique abre o menu.\n- Tether (nova versão): uma pergunta que o dsh faz enquanto o Tether está fechado agora espera pelo seu celular, e você pode respondê-la ao abrir o Tether. O Mac também a mostra. \"New branch\" no menu `+` do campo de mensagem aparece em todos os chats. Quando o Mac não pode criar um branch, a opção fica desativada e mostra o motivo.\n\n## Correções\n\n- Tether: o texto que você envia enquanto um turno está em execução não fica mais no campo de mensagem.",
9
+ "fr": "## Nouveautés\n\n- **Assistant** (désactivé par défaut) : activez-le dans Réglages → Composer Plus, puis cliquez sur **Assistant** dans la barre latérale gauche, juste sous **Tableau des tâches**. Il ouvre une discussion durable dans `~/Assistant` que vous utilisez comme assistant personnel. Il crée des rappels et des automatisations avec les tâches planifiées de dsh, cherche sur le web, et liste et lit vos autres discussions. Il n’envoie un message à une discussion, ou ne lance, n’arrête ou n’archive une discussion, qu’après un clic sur **Autoriser une fois**. Il ne peut pas supprimer de discussion. Gardez votre profil dans la mémoire de ce projet, sujet `profil`. Dans Tether, le bouton « Assistant » de la barre d’outils de Sessions ouvre la même discussion.\n\n## Modifications\n\n- **Ordinateurs distants** : la barre en haut de la fenêtre a disparu. Pendant que le dsh d’un autre Mac remplit la fenêtre, le sélecteur d’ordinateurs de la barre latérale gauche affiche **Revenir à ce Mac**. Avec un seul autre ordinateur, un clic revient tout de suite. Avec plusieurs, le clic ouvre le menu.\n- Tether (nouvelle version) : une question que dsh pose pendant que Tether est fermé attend maintenant votre téléphone, et vous pouvez y répondre quand vous ouvrez Tether. Le Mac l’affiche aussi. « New branch » dans le menu `+` du champ de message apparaît dans chaque discussion. Quand le Mac ne peut pas créer de branche, l’option est désactivée et indique la raison.\n\n## Corrections\n\n- Tether : le texte que vous envoyez pendant qu’un tour s’exécute ne reste plus dans le champ de message.",
10
+ "de": "## Neu\n\n- **Assistent** (standardmäßig aus): Schalte ihn unter Einstellungen → Composer Plus ein und klicke dann in der linken Seitenleiste direkt unter **Aufgabentafel** auf **Assistent**. Er öffnet einen dauerhaften Chat in `~/Assistant`, den du als persönlichen Assistenten nutzt. Er legt mit den geplanten Aufgaben von dsh Erinnerungen und Automatisierungen an, sucht im Web und listet und liest deine anderen Chats. Er sendet eine Nachricht an einen Chat oder startet, stoppt oder archiviert einen Chat erst, nachdem du auf **Einmal zulassen** geklickt hast. Er kann keinen Chat löschen. Speichere dein Profil im Gedächtnis dieses Projekts, Thema `profil`. In Tether öffnet die Schaltfläche „Assistant“ in der Symbolleiste von Sessions denselben Chat.\n\n## Änderungen\n\n- **Remote-Computer**: Die Leiste oben im Fenster ist weg. Während das dsh eines anderen Mac das Fenster füllt, zeigt die Computerauswahl in der linken Seitenleiste **Zurück zu diesem Mac**. Bei nur einem anderen Computer führt ein Klick sofort zurück. Bei mehreren öffnet der Klick das Menü.\n- Tether (neuer Build): Eine Frage, die dsh stellt, während Tether geschlossen ist, wartet jetzt auf dein iPhone, und du kannst sie beantworten, wenn du Tether öffnest. Der Mac zeigt sie ebenfalls. „New branch“ im Menü `+` des Nachrichtenfelds erscheint in jedem Chat. Wenn der Mac keinen Branch anlegen kann, ist die Option aus und nennt den Grund.\n\n## Korrekturen\n\n- Tether: Text, den du sendest, während ein Durchlauf läuft, bleibt nicht mehr im Nachrichtenfeld.",
11
+ "ru": "## Новое\n\n- **Ассистент** (по умолчанию выключено): включите его в Настройки → Composer Plus, затем нажмите **Ассистент** на левой боковой панели, сразу под **Доска задач**. Откроется один постоянный чат в `~/Assistant`, которым вы пользуетесь как личным ассистентом. Он создаёт напоминания и автоматизации с помощью запланированных задач dsh, ищет в интернете, показывает список ваших других чатов и читает их. Отправить сообщение в чат, начать, остановить или архивировать чат он может только после того, как вы нажмёте **Разрешить один раз**. Удалять чаты он не может. Храните свой профиль в памяти этого проекта, тема `profil`. В Tether кнопка «Assistant» на панели инструментов Sessions открывает тот же чат.\n\n## Изменения\n\n- **Удалённые компьютеры**: полоса вверху окна убрана. Пока dsh другого Mac занимает окно, переключатель компьютеров на левой боковой панели показывает **Вернуться к этому Mac**. Если другой компьютер один, нажатие сразу возвращает назад. Если их больше, нажатие открывает меню.\n- Tether (новая сборка): вопрос, который dsh задаёт, пока Tether закрыт, теперь ждёт ваш телефон, и вы можете ответить на него, когда откроете Tether. Mac тоже показывает его. «New branch» в меню `+` поля сообщения есть в каждом чате. Если Mac не может создать ветку, пункт выключен и показывает причину.\n\n## Исправления\n\n- Tether: текст, который вы отправляете во время выполнения хода, больше не остаётся в поле сообщения.",
12
+ "ja": "## 新機能\n\n- **アシスタント**(既定ではオフ):設定 → Composer Plus でオンにして、左サイドバーの **タスクボード** のすぐ下にある **アシスタント** をクリックします。`~/Assistant` に、パーソナルアシスタントとして使う長く続く 1 つのチャットが開きます。dsh のスケジュールされたタスクでリマインダーと自動化を設定し、Web を検索し、ほかのチャットを一覧表示して読みます。チャットへのメッセージ送信と、チャットの開始、停止、アーカイブは、あなたが **1回だけ許可** をクリックした後にだけ行います。チャットは削除できません。プロフィールは、このプロジェクトのメモリーのトピック `profil` に保存してください。Tether では、Sessions のツールバーにある「Assistant」ボタンが同じチャットを開きます。\n\n## 変更点\n\n- **リモートコンピュータ**:ウィンドウ上部のバーはなくなりました。別の Mac の dsh がウィンドウ全体に表示されている間、左サイドバーのコンピュータ選択は **この Mac に戻る** と表示します。ほかのコンピュータが 1 台だけなら、1 回のクリックですぐに戻ります。複数あるときは、クリックでメニューが開きます。\n- Tether(新しいビルド):Tether が閉じている間に dsh が出した質問は、iPhone を待つようになりました。Tether を開いたときに回答できます。Mac にも表示されます。メッセージ欄の `+` メニューにある「New branch」は、すべてのチャットに表示されます。Mac がブランチを作れないときはオフになり、理由を表示します。\n\n## 修正\n\n- Tether:ターンの実行中に送信したテキストが、メッセージ欄に残らなくなりました。",
13
+ "ko": "## 새 기능\n\n- **어시스턴트**(기본적으로 꺼짐): 설정 → Composer Plus에서 켠 다음, 왼쪽 사이드바에서 **작업 보드** 바로 아래의 **어시스턴트**를 클릭하세요. `~/Assistant`에 개인 어시스턴트로 쓰는, 오래 유지되는 채팅 하나가 열립니다. dsh의 예약 작업으로 미리 알림과 자동화를 설정하고, 웹을 검색하고, 다른 채팅을 나열하고 읽습니다. 채팅에 메시지를 보내거나 채팅을 시작, 중지, 보관하는 일은 **한 번 허용**을 클릭한 뒤에만 합니다. 채팅을 삭제할 수는 없습니다. 프로필은 이 프로젝트의 메모리에 `profil` 주제로 저장해 두세요. Tether에서는 Sessions 도구 막대의 \"Assistant\" 버튼이 같은 채팅을 엽니다.\n\n## 변경 사항\n\n- **원격 컴퓨터**: 창 위쪽의 막대가 없어졌습니다. 다른 Mac의 dsh가 창을 채우는 동안, 왼쪽 사이드바의 컴퓨터 선택기에 **이 Mac으로 돌아가기**가 표시됩니다. 다른 컴퓨터가 하나뿐이면 한 번의 클릭으로 바로 돌아옵니다. 더 많으면 클릭할 때 메뉴가 열립니다.\n- Tether(새 빌드): Tether가 닫혀 있는 동안 dsh가 묻는 질문은 이제 휴대폰을 기다리며, Tether를 열 때 답할 수 있습니다. Mac에도 표시됩니다. 메시지 입력란의 `+` 메뉴에 있는 \"New branch\"가 모든 채팅에 표시됩니다. Mac이 브랜치를 만들 수 없으면 꺼지고 이유를 보여 줍니다.\n\n## 수정 사항\n\n- Tether: 턴이 실행되는 동안 보낸 텍스트가 더 이상 메시지 입력란에 남지 않습니다.",
14
+ "id": "## Baru\n\n- **Asisten** (nonaktif secara default): aktifkan di Pengaturan → Composer Plus, lalu klik **Asisten** di bilah samping kiri, tepat di bawah **Papan tugas**. Fitur ini membuka satu obrolan tetap di `~/Assistant` yang Anda pakai sebagai asisten pribadi. Asisten membuat pengingat dan otomatisasi dengan tugas terjadwal dsh, mencari di web, serta menampilkan dan membaca obrolan Anda yang lain. Asisten hanya mengirim pesan ke obrolan, atau memulai, menghentikan, atau mengarsipkan obrolan, setelah Anda mengklik **Izinkan sekali**. Asisten tidak dapat menghapus obrolan. Simpan profil Anda di memori proyek ini, topik `profil`. Di Tether, tombol \"Assistant\" di bilah alat Sessions membuka obrolan yang sama.\n\n## Perubahan\n\n- **Komputer jarak jauh**: bilah di bagian atas jendela sudah dihapus. Saat dsh dari Mac lain memenuhi jendela, pemilih komputer di bilah samping kiri menampilkan **Kembali ke Mac ini**. Jika hanya ada satu komputer lain, satu klik langsung kembali. Jika lebih, klik membuka menu.\n- Tether (build baru): pertanyaan yang diajukan dsh saat Tether tertutup kini menunggu ponsel Anda, dan Anda dapat menjawabnya saat membuka Tether. Mac juga menampilkannya. \"New branch\" di menu `+` kolom pesan muncul di setiap obrolan. Jika Mac tidak dapat membuat branch, opsi ini nonaktif dan menampilkan alasannya.\n\n## Perbaikan\n\n- Tether: teks yang Anda kirim saat giliran berjalan tidak lagi tertinggal di kolom pesan.",
15
+ "vi": "## Mới\n\n- **Trợ lý** (mặc định tắt): bật trong Cài đặt → Composer Plus, rồi nhấp **Trợ lý** ở thanh bên trái, ngay bên dưới **Bảng tác vụ**. Tính năng này mở một cuộc trò chuyện lâu dài trong `~/Assistant` mà bạn dùng làm trợ lý cá nhân. Trợ lý đặt lời nhắc và tự động hóa bằng các tác vụ theo lịch của dsh, tìm kiếm trên web, liệt kê và đọc các cuộc trò chuyện khác của bạn. Trợ lý chỉ gửi tin nhắn đến một cuộc trò chuyện, hoặc bắt đầu, dừng hay lưu trữ một cuộc trò chuyện, sau khi bạn nhấp **Cho phép một lần**. Trợ lý không thể xóa cuộc trò chuyện. Hãy lưu hồ sơ của bạn trong bộ nhớ của dự án này, chủ đề `profil`. Trong Tether, nút \"Assistant\" trên thanh công cụ Sessions mở cùng cuộc trò chuyện đó.\n\n## Thay đổi\n\n- **Máy tính từ xa**: thanh ở đầu cửa sổ đã được bỏ. Khi dsh của một máy Mac khác chiếm toàn bộ cửa sổ, bộ chọn máy tính ở thanh bên trái hiện **Quay lại máy Mac này**. Nếu chỉ có một máy tính khác, một lần nhấp sẽ quay lại ngay. Nếu có nhiều hơn, lần nhấp sẽ mở menu.\n- Tether (bản dựng mới): câu hỏi mà dsh đặt ra khi Tether đang đóng giờ sẽ chờ điện thoại của bạn, và bạn có thể trả lời khi mở Tether. Mac cũng hiện câu hỏi đó. \"New branch\" trong menu `+` của ô tin nhắn hiện ở mọi cuộc trò chuyện. Khi Mac không thể tạo branch, tùy chọn này bị tắt và cho biết lý do.\n\n## Sửa lỗi\n\n- Tether: văn bản bạn gửi trong khi một lượt đang chạy không còn nằm lại trong ô tin nhắn.",
16
+ "hi": "## नया\n\n- **असिस्टेंट** (डिफ़ॉल्ट रूप से बंद): इसे सेटिंग → Composer Plus में चालू करें, फिर बाएं साइडबार में **टास्क बोर्ड** के ठीक नीचे **असिस्टेंट** पर क्लिक करें। यह `~/Assistant` में एक स्थायी चैट खोलता है, जिसे आप अपने निजी असिस्टेंट की तरह इस्तेमाल करते हैं। यह dsh के शेड्यूल किए गए टास्क से रिमाइंडर और ऑटोमेशन बनाता है, वेब पर खोजता है, और आपकी दूसरी चैट की सूची दिखाता और उन्हें पढ़ता है। यह किसी चैट को संदेश भेजने, या चैट शुरू करने, रोकने या आर्काइव करने का काम तभी करता है जब आप **एक बार अनुमति दें** पर क्लिक करते हैं। यह चैट डिलीट नहीं कर सकता। अपनी प्रोफ़ाइल इस प्रोजेक्ट की मेमोरी में, विषय `profil` में रखें। Tether में, Sessions टूलबार का \"Assistant\" बटन वही चैट खोलता है।\n\n## बदलाव\n\n- **रिमोट कंप्यूटर**: विंडो के ऊपर वाली पट्टी हटा दी गई है। जब किसी दूसरे Mac का dsh विंडो भरता है, तब बाएं साइडबार का कंप्यूटर पिकर **इस Mac पर वापस जाएं** दिखाता है। सिर्फ़ एक दूसरा कंप्यूटर होने पर एक क्लिक तुरंत वापस ले आता है। ज़्यादा होने पर क्लिक मेन्यू खोलता है।\n- Tether (नया बिल्ड): Tether बंद होने पर dsh जो सवाल पूछता है, वह अब आपके फ़ोन का इंतज़ार करता है, और Tether खोलने पर आप उसका जवाब दे सकते हैं। Mac भी उसे दिखाता है। मैसेज फ़ील्ड के `+` मेन्यू में \"New branch\" हर चैट में दिखता है। जब Mac ब्रांच नहीं बना सकता, तब यह बंद रहता है और कारण बताता है।\n\n## सुधार\n\n- Tether: टर्न चलते समय भेजा गया टेक्स्ट अब मैसेज फ़ील्ड में नहीं रहता।"
17
17
  }
18
18
  }
@@ -51,7 +51,7 @@ export const PLUS = new Map([
51
51
  ['queue-move', ['POST']], ['queue-edit', ['POST']], ['branches', ['GET']], ['predict', ['POST']], ['complete', ['POST']], ['improve', ['POST']], ['unread', ['GET', 'POST']],
52
52
  ['worktrees', ['GET', 'POST']], ['new-session-workspace', ['POST']], ['memory-edit', ['GET', 'POST']], ['memory-history', ['GET', 'POST']], ['memory-export', ['POST']], ['memory-copy', ['GET', 'POST']], ['memory-stale', ['GET']], ['memory-chat', ['GET', 'POST']], ['memory-suggest', ['POST']], ['handoff', ['POST']], ['context', ['GET']],
53
53
  ['board-chats', ['GET', 'POST']], ['board-progress', ['GET']], ['secret-answer', ['GET', 'POST']], ['side-chat', ['GET', 'POST']],
54
- ['issue-report', ['POST']],
54
+ ['issue-report', ['POST']], ['assistant', ['GET']],
55
55
  ])
56
56
  /** Allow for this chat: an Auto Review ask (`approval/request` with this reason) for a tool that the chat granted. */
57
57
  export const AUTO_REVIEW_ASK = 'Auto review denied tool '
@@ -668,6 +668,8 @@ export function createGateway(opts = {}) {
668
668
  if (devices.length !== before) saveDevices()
669
669
  for (const s of devSockets.get(id) ?? []) s.destroy()
670
670
  devSockets.delete(id)
671
+ // No paired phone is left to answer the questions that wait for one: they go back to dsh's desktop.
672
+ if (devices.length === 0) for (const e of [...pendingEv.keys()]) dropPending(e, { kind: 'next' })
671
673
  return devices.length !== before
672
674
  }
673
675
  function notify(msg) {
@@ -755,11 +757,13 @@ export function createGateway(opts = {}) {
755
757
  if (v.type === 'cancel' && dropPending(v.eventId)) return toPhones({ type: 'cancel', eventId: v.eventId })
756
758
  if (v.type !== 'waterfall') return
757
759
  if (v.event === 'approval/request') return grantedOrAsk(v)
758
- if (!EVENTS.has(v.event) || !holds()) return answer(v.eventId, { kind: 'next' }).catch(() => {})
760
+ if (!EVENTS.has(v.event) || devices.length === 0) return answer(v.eventId, { kind: 'next' }).catch(() => {})
759
761
  askPhones(v)
760
762
  }
761
- /** The gateway keeps an ask for the phones while one is connected, or while a phone gets pushes: the push opens Tether,
762
- * and Tether gets the ask when it connects. dsh's desktop can answer it at the same time. */
763
+ /** The gateway keeps an approval for the phones while one is connected, or while a phone gets pushes: the push opens
764
+ * Tether, and Tether gets the ask when it connects. dsh's desktop can answer it at the same time. A question
765
+ * (`ask_user_question`) waits for a paired phone also while Tether is closed: dsh's "next" would leave it on the desktop
766
+ * only, and the phone that opens later could not answer it. The question still shows on the desktop meanwhile. */
763
767
  const holds = () => evSubs.size > 0 || pushTo().length > 0
764
768
  /** Allow for this chat, also with no dsh window open: the gateway allows a granted tool itself (the grants that the
765
769
  * desktop and the phone save in dsh-composer-plus). Any other approval goes to the phones. */
@@ -776,8 +780,10 @@ export function createGateway(opts = {}) {
776
780
  const frame = { type: 'waterfall', event: v.event, eventId: v.eventId, agentId: v.agentId, request: v.request }
777
781
  if (v.event === 'approval/request') pushAll('Approval needed', v.request?.toolName, v.agentId)
778
782
  else pushAll('DSH has a question', v.request?.questions?.[0]?.question, v.agentId)
779
- // shortcut: unanswered phone prompts fall back to 'next' (DSH desktop still decides) after a fixed timeout; make it configurable per event if users want longer.
780
- const timer = setTimeout(() => { if (dropPending(v.eventId, { kind: 'next' })) toPhones({ type: 'cancel', eventId: v.eventId }) }, waterfallTtl)
783
+ // shortcut: an unanswered approval falls back to 'next' (DSH desktop still decides) after a fixed timeout; make it configurable if users want longer.
784
+ // A question has no timeout: dsh waits for its answer, and the phone that opens hours later must still get it.
785
+ const timer = v.event === 'approval/request'
786
+ ? setTimeout(() => { if (dropPending(v.eventId, { kind: 'next' })) toPhones({ type: 'cancel', eventId: v.eventId }) }, waterfallTtl) : undefined
781
787
  pendingEv.set(v.eventId, { frame, timer })
782
788
  toPhones(frame)
783
789
  }
@@ -911,7 +917,11 @@ export function createGateway(opts = {}) {
911
917
  // A failed connect (DSH restarting) is forgotten so the next stream open retries instead of failing forever.
912
918
  const getUp = () => upP ??= upstream.mux().then(u => { up = u; u.onText = t => ws.send(t); u.onClose = () => ws.close(1011); return u }, e => { upP = null; throw e })
913
919
  const err = (streamId, message) => ws.send(JSON.stringify({ type: 'error', streamId, error: { code: 'mobile/forbidden', message } }))
914
- const unsub = id => { const s = subs.get(id); if (!s) return; subs.delete(id); evSubs.delete(s); if (!holds()) for (const e of [...pendingEv.keys()]) dropPending(e, { kind: 'next' }) }
920
+ // The last phone left: its approvals go back to dsh's desktop; its questions keep waiting for the phone (askPhones).
921
+ const unsub = id => {
922
+ const s = subs.get(id); if (!s) return; subs.delete(id); evSubs.delete(s)
923
+ if (!holds()) for (const [e, p] of [...pendingEv]) if (p.frame.event === 'approval/request') dropPending(e, { kind: 'next' })
924
+ }
915
925
  ws.onText = async text => {
916
926
  let f
917
927
  try { f = JSON.parse(text) } catch { return ws.close(1007) }