Skip to content

Releases

Mila v1.7.1

Choose a tag to compare

@shakhruz shakhruz released this 01 Nov 10:21

CHANGELOG.md — v1.7.1

Mila v1.7.0

Choose a tag to compare

@shakhruz shakhruz released this 01 Nov 06:51

CHANGELOG.md — v1.7.0

v1.6.6 — Mila Agent: README, install for a stranger, own pages on screen

Choose a tag to compare

@shakhruz shakhruz released this 30 Oct 09:03

v1.6.6 · 30.10 — your own pages on the screen, help with your personal Telegram, small updates by yourself

Для хозяина

  • Мила показывает на вашем экране свои страницы — игру, слайды, квиз, — без помощи администратора.
  • Новая сила «Личка хозяина»: Мила разбирает ваш личный Telegram, кладёт черновики вашим голосом и ставит лайк на «спасибо» — только по вашему слову; отправляете всегда вы.
  • Скажете «мелкие обновления ставь сама» — Мила будет ставить исправления ночью сама; новые версии и правку конституции — только по вашей кнопке. Карточка обновления одна: новая заменяет прошлую.

For Milas

  • screen page put/show/list/rm — own HTML page on own screen; the hub serves pages from a separate host under a CSP sandbox.
  • mila-update: a new offer says it replaces the previous one; apply refuses a tag older than offered (--force-stale by hand); plan --offer for manual cards; auto=patch — same x.y, risk ≤ medium, no constitution/canon change.
  • owner-telegram (new): the owner's personal Telegram — read, draft in his voice, reaction by his word (emoji whitelist, private allowed chats; the word is his real fresh message to Mila's bot, single use); draft-clear erases only Mila's own draft, his only by a reply to her proposal. own-inbox (new): Mila's own account, answers as herself. owner-dm links to owner-telegram. Tests run without the core clone.
  • bot-send: broadcast buttons the service would drop silently (not https, choice, row > 3, rows > 6, label > 40) are refused before the request, with reasons.
  • milagpt-chat: the reply tool's button format {label, choice|url, style} (Bot API {text, callback_data} does not work); tg.py escapes «\» for MarkdownV2 and drops \x00 from input.
  • pult-dnya: one button per «waiting for you» item; a changed set of waiting items means a new pinned board (edit_message keeps the old buttons).
  • jev skill: Jev picks from the whole catalog; «no skill needed» counted separately; rules_sure marks weak rule advice.
  • CI installs telethon; tests/run_ci_local.sh uses exactly the workflow's Python packages. mila-export test: fake secret literals glued at run time.

Mila v1.5.3 · 25.10

Choose a tag to compare

@shakhruz shakhruz released this 25 Oct 14:56
  • skills/pult-dnya (new): the day board — one pinned message for the owner (in progress / queue / waiting / done, each with a number, who, why, evidence, conclusion). A new task gets a «#N queued, after #X, because…» line at once; «waiting for you» exists only as a question with buttons asked that minute (wait refuses without --asked); at most two in progress, 🔴 always gets in; morning plan with a 3–5 task auto-pool, the board is edited during the day, evening results; closing needs evidence. day_board.py (cards, phones and e-mails masked; a wait over an hour turns 🔴), test_pult.py 22/22. Pinned board on demand: render returns «empty» and «waiting» for the plugin's /status with «#N — answer» buttons and never changes the day file; numbers that are not phones (request №, chat id, person id) stay. test_pult.py 26/26.
  • skills/plan-fakt (new): Friday plan-vs-fact as one slideshow post — collect.py drafts the week from WEEK.md, day boards and MONEY.md (only if kept), personal data masked, an empty week says «нет данных»; make_slides.py 1080×1080 with any Chromium; send_slideshow.py one post. Test 17/17.
  • Marketing set, first three skills: ab-test, kreativ-proverka, metki-atribuciya — rules only from primary sources with links (Meta A/B best practices, Telegram Ads guidelines, Hopkins). Superlatives without a number or source nearby — block, with one — warning; caps: one word — warning, two or more — block. test_check_ad 19/19.
  • bot-send: the ✅ on the card covers the whole text in «…», the service compares by equality (a cut of an approved text no longer passes); broadcasts only when the fleet admin turns them on, a daily ceiling for one-to-one sends. 30/30.
  • Send guard with onFailure: block: written by install.sh (new and existing entries) and added in place by mila update to installed send-guard hooks (backup, migrate journal, symlinks untouched) — only on Claude Code ≥ 2.1.295, older or unknown — skipped with a journal line. test_install_hooks 12/12.
  • jev --text - reads the text from stdin, so group text is not in argv where ps shows it.
  • Secrets: our own scanner (mila_export scan) runs over every tracked file in CI (tests/test_secret_scan.py, with planted fakes that must be caught); fake keys in tests and key/password patterns in code are built by splicing, so fleet snapshot scanners don't trip on the core; a password assignment is caught from 8 characters. test_export 40/40, test_secret_scan 10/10.

Mila v1.5.2

Choose a tag to compare

@shakhruz shakhruz released this 22 Oct 03:23

Mila v1.5.2 — easier first run, clear rules for Claude, safer updates.

Start in minutes

  • One-command install now includes the Telegram plugin (get.sh), and the NEXT block shows the exact commands from the README.
  • mila onboard — three checked steps: bot token (hidden, verified with getMe), sign-in, first message.
  • README «You need»: macOS / Linux (Windows via WSL), Claude Code (tested on 2.1.305) with your own Claude account or API key, Bun.

Claude — by Anthropic's rules

  • First-screen section: Mila runs the unmodified Claude Code; you sign in yourself, only on Anthropic's page; Mila never copies or stores your sign-in. Your subscription is for your own use; guests go through an API key.
  • Disclaimer in README, NOTICE and TRADEMARKS: Claude and Claude Code are trademarks of Anthropic, PBC; Mila is an independent open-source project, not affiliated with or endorsed by Anthropic.

Safer updates (mila-update)

  • Team Milas skip the newborn gate ("internal": true), every skip is journaled.
  • Fleet mode from the host (MILA_HOME, MILA_CHOWN): only what the run wrote goes back to the owner.
  • Rollback hardened: unpacks inside the home only, filter="data", no links outside; works on macOS system Python 3.9.
  • What apply writes stays readable for backups.

Housekeeping

  • Skill descriptions ≤250 characters; old alias folders moved to legacy/.
  • Real gitleaks workflow in CI; fixed links and plugin command names; honest minuses in the compare table; Community section.

Full list: CHANGELOG.md.

v1.5.1 · 21.10 — safe, model choice, live frames, one-command install

Choose a tag to compare

@shakhruz shakhruz released this 21 Oct 04:52
  • One-command install: curl -fsSL …/install/get.sh | bash (checks Claude Code, Bun, git); CI runs tests/run_all.sh on every push; issue/PR templates, Code of Conduct.
  • skills/model-choice (a partner's idea, 20.10): before any paid task (images, video, voice, transcription, translation, document analysis) Mila shows two options — budget / best quality: model, what you get, price for this job — with a recommendation, owner picks by button; pick.py + dated catalog.json (OpenRouter live, fal.ai, ElevenLabs). Test 6/6.
  • Mila Safe (owner 20.10, «Да, делаем сейф»): tools/seif — one-time link (30 min, single use, GET does not burn it) where the business owner types passwords, keys and cards; values go straight to work/secrets/<name>.env (600) of the Mila's home, journal without values, note to the companion; skills/safe-link — never ask secrets in chat, request a safe link, read with safe_read.py (mask only). Tests 12/12, 6/6.
  • skills/live-frames (new, from Mila Video, owner 20.10 «намного лучше»): explainer video from a voice track — moving background, Twemoji icons, counters, bars, arrows and pills appear on the spoken word, whoosh/pop/ticks and a ducked music bed, −14 LUFS; Pillow + numpy + ffmpeg, no paid graphics. Local word timing check (faster-whisper). Twemoji CC-BY 4.0, PT Sans OFL. Test: 3-second render with sound.
  • tools/hooks_sync.py + template settings: mila-tasks hooks (PostToolUse reply → task-sent, SessionStart → task-open) for Milas deployed from the image (HOOKS-SYNC-1020).

Full changelog: CHANGELOG.md

v1.5.0

Choose a tag to compare

@shakhruz shakhruz released this 19 Oct 16:21

v1.5.0

Privacy and safety

  • pd-vault (layer 2a): Mila stores labels instead of personal data; AES-256 + HMAC via openssl. The pd-mask PostToolUse hook is registered by install.sh, which also creates the key by default.
  • Card filter: a card number (13–19 digits, Luhn check) is blocked in groups and masked as ****1234 in direct messages. Your own payment details can be allowed with cardAllow in access.json or CARD_ALLOW.
  • install.sh installs and registers the send-guard hook (reply/edit) and the mila-tasks hooks. OWNER_ID is taken from MILA_OWNER_ID. Every hook the installer registers is now copied.

Skills and packs

  • skills/jev: fast decider for reply, who answers and buttons. Modes: off, shadow, main. On a 1.2 s timeout it falls back to rules.
  • packs/clinic v0.1: booking and prices for clinics, with an exam (patient scenarios: move, cancel, injections, not in price, bargaining). Mila never names a probable condition.
  • mila-update: install-skill refuses an incomplete skill. New remove-skill command: makes a backup and protects core skills.

Docs

  • README: release badge and «which version to take» (stable: Releases vX.Y.Z; canary: main), in ru/en.

v1.4.0 · international names

Choose a tag to compare

@shakhruz shakhruz released this 18 Oct 16:17

International names: skills now have English names (old names stay as aliases until v1.6.0), bilingual EN+RU descriptions, one-command tests, Linux support.

v1.4.0-rc4 · fix (candidate)

  • 🔴 install.sh (since rc3) registered reply-required.py as a Stop hook but did not copy the file: on a fresh install every stop failed with exit code 2, which means «don't stop» — the session would loop. Now every hook the installer registers is copied; install/test_install_hooks.sh checks that each hook in settings.json exists as a file. Updates via mila-update were not affected (install/*.py are copied by the release zones; settings.json is not touched).

v1.4.0-rc3 · code improvements (candidate)

  • tests/run_all.sh: every test in the repo + frontmatter in one command (11, ~9 s), exit code 1 on any failure; in release.sh and CONTRIBUTING.
  • install.sh registers reply-required.py as a Stop hook (promised by README/REFERENCE, was manual); --dry-run lists every hook; owner's own hooks and settings kept, backup made, re-run does not duplicate.
  • mila on Linux: daemons via systemctl --user (units from deploy/bootstrap.sh), macOS keeps launchctl; per-OS hints.
  • docs/exam-example/: example guest prompt + exam yaml + README for tools/express_exam.mjs; fix: planted failures with ids like s01 were not matched.

v1.4.0-rc2 · bilingual skill descriptions (candidate)

  • 46 skills: description = English first (what + when + English triggers), then RU: with the original Russian — English-speaking owners' models find the skills, Russian triggers keep working. mila-session was already English.

v1.4.0-rc1 · international names (candidate)

Skills get English names; old names keep working until v1.6.0. Owner 17.10 (33645).

For the owner

  • Skills now have international names (cards, plain-words, onboarding…) — your Mila finds and updates them the same way.
  • Nothing you changed is lost: if you edited a renamed skill, your version is kept next to the new one.
  • Old commands and paths keep working for two more versions.

For Milas

  • Renamed: ekzamen→exam · kartochki→cards · lichka-hozyaina→owner-dm · mila-v-chate→mila-in-chat · naglyadno→visual · proverka→verify · put-gostya→guest-path · rashod→spend · topiki→topics · vhodyashchie→inbox · vkusy→tastes · voprosy→questions · yasno→plain-words · zadachi→tasks · znakomstvo→onboarding; canon/OBDUMYVANIE→THINKING-BUDGET; docs/uchet→docs/accounting. Scripts: cards.py, plain_words_check.py, spend.py.
  • Old names are aliases: MOVED.md + script wrappers (old paths exec the new scripts), no SKILL.md — not loaded as skills, no duplicates.
  • mila-update: renamed in release.json — the old folder becomes the alias even if the owner edited it; the edit is saved to mila-update/new/<tag>/было-<old> and reported (pereimenovano, pravka_starogo_imeni). Test test_renamed.sh 10/10, in release.sh.
  • Data paths are not renamed (~/work/rashod, .kartochki-shown.json, memory/vkusy.md, work/topiki/) — owners keep their history.

Full changelog: CHANGELOG.md

v1.3.0 · lessons of Mila Tashkent

Choose a tag to compare

@shakhruz shakhruz released this 17 Oct 09:27

What a working sales Mila learned in one day (exam "Guest path" 15/15), now in the core for every Mila.

For the owner

  • Your Mila answers guests in their language and offers a trial no later than her third answer.
  • In your private chat: your question first, attachments opened, one summary instead of three, no technical noise.
  • Exams in minutes: after every change your Mila's sales script is checked in under a minute, the live check runs at night.

For Milas

  • put-gostya (new): the guest path — guest's language (ru/uz/en, no forced translation), benefit + trial offer by the 3rd answer, invoice as a card ("choose a way on the card; transfer — screenshot here"; Stars/USDT for foreigners), soft no + legal path for illegal requests, "what to send" — one-line example, follow the link label's path.
  • lichka-hozyaina (new): seven rules for the owner's DM — owner's question before the feed, open attachments, no "Send?" without a draft, don't relay reactions, no file paths or internals, 2–3 buttons, one summary.
  • ekzamen (new) + tools/express_exam.mjs: one yaml for the express run (subscription, minutes, --repeat, planted failures, prompt sha) and the nightly live run; full guest reset before each scenario.
  • canon/OBDUMYVANIE.md: reasoning models need max_tokens headroom (empty answers at 220 tokens).
  • vkusy (new, since v1.2.0 on main): the owner's tastes — remember, ask once, three picks with "why you"; a voice speaker of a connected owner hands requests to his Mila.
  • README.ru: same positioning as the English README.
  • Links: client-chat and lead-qualify → put-gostya; communication → lichka-hozyaina.

v1.2.0 · Mila Companion 1.0 — first public release

Choose a tag to compare

@shakhruz shakhruz released this 17 Oct 08:30

An open-source digital employee for your business, living in Telegram. The README now says what Mila is and how she compares with universal agents.

For the owner

  • Before saying "done", your Mila checks the result against its "done if" and shows the proof.
  • A newborn Mila starts from what you already told at the consultation, not from a questionnaire.
  • The same remark three times becomes a rule — she asks you before writing it down.

For Milas

  • proverka (new): check a result against its "done if" — YES / NO / CAN'T CHECK with a verbatim quote, last line DONE / HOLD; action items need evidence from a tool output.
  • crm-dialogs: what I know about a person carries a source label (said himself / my conclusion / not said); labels live only in cards and notes, never in text to a person.
  • self-check: owner's remarks go to memory/zamechaniya.md; the third identical remark → an exact line for SKILL.md and "Add it?".
  • znakomstvo: step 0a — the first message comes from the guest card; "which task first" — 2–3 options and three questions about the past (how often, minutes, sign of "done").
  • README: positioning (digital employee, Telegram-native), comparison with OpenClaw / NanoClaw / Hermes Agent with sources, who builds Mila, invitation to developers.

Full changelog: CHANGELOG.md