Releases: somework/dsx
Releases · somework/dsx
Release list
v0.1.2
Changelog
- c60fb0e docs(changelog): 0.1.2 — 403 без гранта это auth; санитайз тела сервера
- f6c6215 docs(readme): полная форма тапа обязательна — Homebrew 6 требует доверия
- fd0f413 feat(auth,docs): 403 без гранта — это auth и называет /design consent
- 6890a57 fix(mcp): санитайзить тело сервера в ошибках — инвариант 7, все четыре ветки
Curated, caller-facing notes: CHANGELOG.md.
The list above is the raw commit history.
v0.1.1
Changelog
- 538188b docs(changelog): 0.1.1 — Homebrew tap и установка архива без ручной версии
- e6e1508 feat(release): Homebrew tap для macOS; архив больше не требует вписывать версию
- 97a3949 fix(release): каск-PR проверяется после релиза; govulncheck на теге; caveats
- e03b307 fix(release): отказ по токену tap приходит раньше сборки; ветка PR названа явно
Curated, caller-facing notes: CHANGELOG.md.
The list above is the raw commit history.
v0.1.0
Changelog
- c45aca5 Preparation
- b9dac50 chore(github): публикация оформлена — шаблоны, dependabot, релиз по тегу
- 4aa5486 chore(live): id проектов переезжают в некоммитящийся .env
- 88ae353 chore(live): у живого сьюта больше нет проекта по умолчанию
- 824ea0f chore(reference): удалён второй источник правды, форма первого закреплена
- cc6ad88 ci: actions закреплены на SHA, релизы получают provenance
- 2be657c ci: govulncheck добавлен, staticcheck закреплён — пины противоположны намеренно
- 9fc539e docs!: доки исполнены после миграции; три утверждения были ложью и до неё
- f93bc97 docs(CLAUDE): два новых инварианта и то, чем они куплены
- 3896f34 docs(CLAUDE): инвариант 15 — атомарная запись, и чем куплена каждая деталь
- 95ad719 docs(claude): инвариант 22 фиксирует подсказку и её охрану
- 775a70e docs(cmd): выправить doc-комментарии, отставшие от разъезда пакетов
- 84994cc docs(contributing): main защищён — правила merge названы, а не подразумеваются
- 7606e19 docs(files): у cp появилось описание; README перечисляет реальные ключи
- bc78a4a docs(protocol): длинная строка нечитаема одним лейном и читаема другим — измерено
- 5efebc7 docs(protocol): отсутствие окна у get_conversation доказано контролем, а не совпадением хэша
- 4686911 docs(protocol): у get_conversation окна нет — 29 полей проверены, все игнорируются
- 16f0f6b docs(readme): снято ещё одно ложное утверждение о том, что делает только fetch
- a7cc292 docs(sync): dsx pin, README и CLAUDE.md — леджер под .dsx/, инвариант 17
- 0dc263a docs(syncer): комментарий цитировал строку, которую сам же и переписал
- 5724606 docs(syncer): ответы на два замечания ревью, одно из них на ложной посылке
- ad2ade7 docs(syncer): снята переоценка в комментарии — глотание ошибки не единственное
- fdb9cc0 docs(syncer): убрано ложное утверждение про diff в комментарии и CLAUDE.md
- dc1ee97 feat(binary): открыт server→disk для файлов, которые read_file не отдаёт
- 9316447 feat(ci,docs): поставляемые бинари запускаются перед выкладкой; установка без Go
- 205c70b feat(cli)!: help --json отдаёт реестр вместо человеческой прозы
- 80ae20d feat(cli)!: project, ds и plan становятся существительными; support-js уезжает к проекту
- 0d76581 feat(cli)!: двухтокенная адресация noun+verb; conv переведён первым
- 1350330 feat(cli): dsx -C — глобальный, до глагола, как у git
- 072858c feat(cli): dsx projects печатает колонки id/name
- bd02fa6 feat(cli): put предупреждает о леджере рядом
- b1e42b3 feat(cli): tree и cat читают привязку каталога
- eca408a feat(cli): мёртвая плоская форма называет замену, а не только
dsx help - a354cf2 feat(cli): показать флаги команды по -h и перестать врать в usageFooter
- 64fa6ad feat(cmd): ответ инструмента проходит через одно место и по умолчанию читаем
- 8079bb4 feat(cmd): три необёрнутых инструмента, и починен справочник, из-за которого их не замечали
- 0839a96 feat(conv): --json отдаёт разбираемый документ вместо строки в {"text":…}
- 178d08d feat(conv): обрезанное тело спасается до целых элементов, а не до всего, что распарсилось
- 711471d feat(conv): обрезанный транскрипт отвечает строкой, а не четвертью мегабайта
- 02e27de feat(files)!: files становится существительным; preview переезжает под него
- f2691de feat(mcp): уведомление о повторе на stderr
- c348146 feat(members)!: member становится существительным; sharing уезжает к проекту
- 0b2539e feat(reply): измеренные ответы инструментов рисуются для человека
- 2fb83ad feat(sync)!: pull -n и push -n возвращают 3 при конфликтах — как настоящий запуск
- a5551a9 feat(sync)!: status отвечает с диска, без единого запроса к серверу
- a3d0672 feat(sync)!: sync-глаголы не берут аргументов вовсе
- eaf0b9d feat(sync)!: только clone и pin называют проект; остальные читают его из леджера
- 38739df feat(sync): clone — первый pull, названный своим именем
- 6b1aa94 feat(sync): dsx diff — same/local-only/remote-only/differs, без хексов в контексте
- d7af87b feat(sync): dsx fetch — узнать серверные байты, не трогая дерево
- b55703e feat(sync): dsx push --force-with-lease; cmdSync разделён на cmdPull и cmdPush
- edb36d3 feat(sync): dsx unpin — выход из привязки, которая ещё ничего не синкала
- cd1bf33 feat(sync): fetch записывает весь листинг сервера, не только доказанное
- 87ace80 feat(sync): глаголы находят корень снизу —
dsx pullработает из подкаталога - 142b976 feat(sync): движок --force-with-lease — перезапись только того, что не двигалось
- 5548ee4 feat(syncer): FindRoot — поиск леджера вверх по дереву, как git ищет .git
- c6eb5aa feat(syncer): pull записывает снимок листинга, который и так держал в руках
- 510ebc3 feat(syncer): stale proof — доказательство устарело, а не "не проверяли"
- dc93939 feat(syncer): доказанное совпадение байт — Verified, не Conflicts
- fe1c718 feat(syncer): конфликт называет способ посмотреть
- c0442ad feat(syncer): счётчик передачи на stderr
- 84327ef feat(syncer): фундамент бейзлайна fetch — отдельный файл, отдельный тип
- 37ccdbd feat: cross-platform auth, exit codes, .dsxignore, doctor
- 34dbc1a feat: dsx — прямой клиент Claude Design MCP
- 04f2fde fix(cli)!: флаг перед глаголом больше не глотает команду с exit 0
- dbca5a9 fix(cli): completion раздаёт флаги по команде, а не один список всем
- 90aba7f fix(cli): «UUID вместо каталога» перестаёт советовать вред
- 7839ff3 fix(cli): отчёт на пути ошибки перестаёт выглядеть успехом
- 06c127f fix(cli): сухой прогон больше не создаёт каталог
- 4418d80 fix(cli): убрать мёртвый код, разблокировать staticcheck
- ec01dfe fix(cmd): хвостовой лишний аргумент — usage-ошибка, не тихий exit 0
- 9de1308 fix(completion): fish проверяет позицию, а не вхождение слова
- 49f3fa0 fix(completion): глагол без аргументов не предлагает файлы
- 564e68e fix(dsxerr): назвать отказы файловой системы и протокола своими именами
- 04d8cfb fix(files)!: снят мёртвый --render, и закрыта причина, по которой он таким стал
- cd7d663 fix(files): tree и cat находят ledger, поднимаясь вверх, как sync-глаголы
- 2339478 fix(live): судья fetch отстал от preview-лейна и падал раньше, чем судил
- eabbd30 fix(mcp): ужесточить сборку оконного read_file
- 4b4446d fix(members): add называет ту ошибку, которую нашёл, а не соседнюю
- 5dcf9f9 fix(push): status после push кричал «server moved ahead» на то, что push и записал
- 0cc7f20 fix(reply): состязательный разбор — 15 находок, каждая с мутацией
- e1c36df fix(sync): clone отказывает каталогу с чужим .dsx
- 3233aab fix(sync): отказ без леджера больше не обещает память, которой нет
- 0cc4b58 fix(syncer)!: LoadState отказывается от повреждённого леджера
- 565c0fa fix(syncer)!: endpoint в леджере — охранник, а не мёртвое поле
- df3e1fd fix(syncer)!: push перестал воскрешать удалённое и конфликтовать вечно
- 739bd9a fix(syncer)!: леджер переезжает в .dsx/state.json, без миграции
- 3ccf599 fix(syncer)!: отчёт — запись прогона, а не снимок плана
- 54840cf fix(syncer): .dsx — builtin-игнор ещё до переезда леджера
- 4854416 fix(syncer): аренда покрывает и удаление — --force-with-lease --prune больше не стирает...