v0.41.0
Added
- A plugin command sets its own exit code. The CLI exits with the integer from 0 to 255 that
the result puts in itsexit-codefield, so a pipeline can tell "differences found" from "a
step failed" by the code alone. Without the field,"ok": falsestill means 1.
(#31) - The documentation guard catches a sentence that explains a change by naming who asked for
it. The repository has one author, so such a sentence tells the reader nothing about the
change. The guard reads both editions of the documents and the comments and docstrings of
src,scripts,testsandtools. (#30) - The conventions guard requires a process started from
srcto name its stdin. The check
reads the shipped package alone. A script, a tool and a test run from a console, and a console
stdin is safe to hand on. (#29) tests/test_conventions.pycatches a test shadowed by a namesake. Python keeps the last of
two definitions with one name, so the older test stops running while the count still grows. The
check names the line of the newcomer to rename. (#28)
Fixed
- A child process no longer inherits the stdin of the MCP server. On Windows a child holding
the client's pipe never exits:git status --porcelainsat out its whole fifteen-second timeout,
and the build called git unavailable. Process starts insrcnow passstdin=subprocess.DEVNULL,
and the same tool call went from 47 seconds to 0.8. (#29) .gitattributesholds the line ending for the whole repository. The line
* text=auto eol=lfkeeps text files in line feeds on any machine. The READMEs that
scripts/sync-docs.mjsassembles used to come out with mixed line endings.
(#28)
Documentation
- The shared guard is pinned to
docsguard@v0.7.1. That release adds a dictionary of the
borrowed words the Russian edition keeps drifting into:пин,прогон,билд,дефолтand
eleven more. The pin went up on its own, ahead of anything that uses it.
(#26) - The documentation guard reads the Russian texts against that dictionary. It finds
docs/*.ru.mdby itself, and the root documents are named inscripts/check_docs.py:
README.ru.md,CHANGELOG.ru.mdandCLAUDE.md. A word in backticks or inside a fenced
block is not a finding. (#26) - The words the changelog names are in backticks now. The entry of 12 September lists the
words that left the text, and the guard read them as jargon. The Russian page writes the XBSL
button caption the same way, as the name of a command.
(#26) - The shared guard is pinned to
docsguard@v0.8.0. The dictionary of borrowed words grew
by six:дашборд,бэкенд,лаунчер,мейнтейнер,топ-объект,легаси.
(#27) - The guard reads the Russian strings of the sources against that dictionary too. The help
of a command and the text of an error reach a reader the way a page reaches the site: they
land in a terminal the moment somebody runs the tool. Two files are named, the message catalog
src/elemctl/i18n.pyandsrc/elemctl/mcp_server.py, whose tool docstrings an MCP client
shows as the description of each tool. (#27) - The word
лаунчерleft the entry aboutself-update --stop-holders. It is about the
program that starts the command, and the command runs as its child. The same word is corrected
intests/test_selfupdate.py. (#27) - The shared guard is pinned to
docsguard@v0.9.0. In that release the source checks
stopped falling over on a file that begins with a byte-order mark. Editors on Windows write
the mark without being asked,astanswered it with aSyntaxError, and the findings from
every other file went down with it. The shadowed-test guard comes from the same release.
(#28)
What's Changed
- Журнал: разделы 0.39.0-0.40.1 переписаны для чтения by @keyfire in #23
- Документация переписана живым языком by @keyfire in #24
- Строки помощи: без капса и чужих слов by @keyfire in #25
- Сторож документации смотрит русские тексты на слова из словаря by @keyfire in #26
- Сторож документации читает русские строки исходников by @keyfire in #27
- Общий сторож 0.9.0 и перевод строки в .gitattributes by @keyfire in #28
- Дочерний процесс не наследует stdin сервера MCP by @keyfire in #29
- Сторож ловит фразу, объясняющую правку ссылкой на человека by @keyfire in #30
- Команда плагина задаёт код возврата полем exit-code by @keyfire in #31
Full Changelog: v0.40.1...v0.41.0