Skip to content

Releases: matttsys/RayZen-Pilot

RayZen Pilot 5.0.0-alpha.2 Omni

Pre-release

Choose a tag to compare

@matttsys matttsys released this 19 Oct 20:21

RayZen Pilot 5.0.0-alpha.2 "Omni" (pre-release)

نسخهٔ پیش‌انتشار. همهٔ آزمون‌های خودکار روی شبیه‌ساز آفلاین تلگرام اجرا شده‌اند؛ آزمون زنده در گروه واقعی هنوز انجام نشده است.
Pre-release. Every automated suite ran against the offline Telegram simulator; live acceptance in real groups has not been run yet.

Downloads

File What it is
rayzen-pilot-v5.0.0-alpha.2-omni-selfhost.zip Public self-hosted edition (host panel, VPS, Docker). No channel requirement, no telemetry.
rayzen-pilot-v5.0.0-alpha.2-omni-owner-hosted.zip Owner-hosted edition for the project's own bot: adds the @RzRoot request on private /start (pilot/gate.py, see OWNER-HOSTED.md).
rayzen-pilot-v5.0.0-alpha.2-omni-manifest.json + .sig Ed25519-signed manifest used by /update (public key in SECURITY.md and pinned in pilot/updater.py).
rayzen-pilot-v5.0.0-alpha.2-omni-SHA256SUMS.txt SHA-256 of every file above (integrity only; authenticity comes from the signed manifest).

What's new in this build

Hotfix for the signed updater, and a new README.

  • Fixed: /update failed with "download failed or incomplete" (9617/2270 bytes). GitHub's API sends JSON gzip-compressed. aiohttp decompresses the body, but Content-Length still counts the compressed bytes, so the exact-length check rejected every API response. The updater now asks for uncompressed bytes (Accept-Encoding: identity) and applies the exact-length check only to uncompressed responses. The size caps still apply to the decompressed bytes, which also stops a compression bomb. Nothing else about verification changed: the Ed25519 signature, pinned key, manifest size, SHA-256, edition, version and archive checks are the same.
  • Tested against the live v5.0.0-alpha.1 release on GitHub: the updater downloaded it, verified the signature and hash, and staged it. Five new acceptance checks cover gzip responses, the identity request header, the compression-bomb cap and the Content-Length cap.
  • Fixed: a false "release is not signed" on /update. The latest stable release on GitHub is still 4.1.0, which predates signed releases, so every check on v5 reported it as unsigned (and auto-update would have warned the owner daily). An unsigned release that is not newer than the running version now reads as "nothing newer"; an unsigned release that claims to be newer is still refused. Two new acceptance checks, and a live check against GitHub.
  • Fixed: link names swallowed by a duration. /newlink autumn 7d and «لینک جدید پاییز ۷ روز» now keep the name and the 7-day expiry. A two-word duration («۲ ساعت», «دو ساعت») must start with a number or a number word.
  • Fixed: Persian comma in English replies. Lists in stats, welcomes, lock status, block lists, admin rights and the group dashboard use , in English and ، in Persian.
  • README (English and Persian) rewritten in the 4.x layout, updated for v5, with new graphics: banner, counts, features, real bot replies, install options, signed-update steps and architecture. Download links and file names in the docs now always match the release.
  • /update still installs stable releases only. Install pre-releases from files: send the zip, manifest and .sig to the bot in private chat, then run /update inbox. On alpha.1, whose /update has the bug above, install this release that way or with the zip.
  • Database unchanged (schema v3). No new settings.

Build identity

  • Version 5.0.0-alpha.2, build 5.0.0-alpha.2+2d685cacf841
  • Source commit 1f3cba9720662e800501c3e1a38bd218bd9e77c9 (github.com/matttsys/RayZen-Pilot, tag v5.0.0-alpha.2)
  • Source tree SHA-256 2d685cacf841c4d71b7e0c253cb217f79430fb56003c510f0e78f4ea276e1b4b (runtime files, excluding the build stamp)
  • Built 2026-10-19T20:18:38Z; signing key V5rxvn78gNnqWjT4JJ0VjuxPKS81y2lY/frxZK0AuRk=
Asset SHA-256 Size
rayzen-pilot-v5.0.0-alpha.2-omni-selfhost.zip 70915575a229b1fdb2cfe381d9aa4cb532e4f1ea25357723e67668e7a07958e3 419,118 bytes
rayzen-pilot-v5.0.0-alpha.2-omni-owner-hosted.zip 3d3987ba47982a819bf60c5f0407c8cb9915f7e978a51e1c7fa901adda61d230 424,253 bytes

Test summary (this exact build)

Run 2026-10-19T20:18:39Z → 2026-10-19T20:21:14Z on Python 3.11.17 (Linux 6.12.105+ aarch64), against the two archives above after extraction. Simulator = FakeTelegram, an in-process Bot API model; it is not real Telegram.

Suite rayzen-pilot-v5.0.0-alpha.2-omni-selfhost rayzen-pilot-v5.0.0-alpha.2-omni-owner-hosted
units PASS (7/7) PASS (7/7)
scenarios PASS (13/13) PASS (13/13)
purgeword PASS (9/9) PASS (9/9)
sweep PASS (0 failures, 12796 simulated API calls) PASS (0 failures, 12813 simulated API calls)
html_render PASS (no failures) PASS (no failures)
migration PASS (no failures) PASS (no failures)
v5 acceptance PASS (123/123) PASS (123/123)
edition + gate PASS (10/10) PASS (42/42)
smoke explore PASS (no errors) PASS (no errors)

Counted checks in the suites that report counts: 356. Overall: all PASS.

Environment Result
Automated + simulator (both editions) PASS
Clean virtualenv install from requirements.txt, first start, suites with that venv PASS
Real AI provider (OpenAI-compatible endpoint, operator key) PASS (10/10 checks, 76s)
Real Telegram groups NOT RUN (needs the operator's test groups; checklist in the private QA archive)
Docker image build, systemd install on a VPS, Pterodactyl panel NOT RUN in this workspace

Counts (registered in the code)

canonical_commands   v4.1.0= 114  v5= 173  +60 -1
command_names        v4.1.0= 147  v5= 245  +98 -0
fa_text_commands     v4.1.0=  27  v5= 163  +136 -0
ai_tools             v4.1.0=  28  v5=  28  +0 -0
settings             v4.1.0=  53  v5=  68  +15 -0
sections: {'ai': 7, 'answers': 10, 'desk': 10, 'filters': 21, 'general': 5, 'history': 1, 'invites': 8, 'locks': 7, 'logs': 5, 'members': 10, 'mod': 26, 'owner': 2, 'privacy': 6, 'schedule': 10, 'stats': 13, 'tools': 15, 'utils': 10, 'welcome': 7}
callback prefixes: ['op']
catalog problems: none

The 301+ new-capability target of the v5 plan is not met by this pre-release; see CHANGELOG.md for what is actually new.

Upgrade

  • From 4.1.0: back up data/pilot.db and .env, put the new files over the old ones, start. Schema 2 → 3 runs automatically with a backup first.
  • /update fetches only stable releases from GitHub. For this pre-release: send the selfhost (or owner-hosted) zip, the manifest and the .sig to the bot in private, then /update inbox.

License

AGPL-3.0 from 5.0.0 on, with NOTICE (attribution) and TRADEMARKS.md (name/logo policy). 4.0.0 and 4.1.0 stay MIT. Not legal advice.

RayZen Pilot 5.0.0-alpha.1 Omni

Pre-release

Choose a tag to compare

@matttsys matttsys released this 19 Oct 19:35

RayZen Pilot 5.0.0-alpha.1 "Omni" (pre-release)

نسخهٔ پیش‌انتشار. همهٔ آزمون‌های خودکار روی شبیه‌ساز آفلاین تلگرام اجرا شده‌اند؛ آزمون زنده در گروه واقعی هنوز انجام نشده است.
Pre-release. Every automated suite ran against the offline Telegram simulator; live acceptance in real groups has not been run yet.

Downloads

File What it is
rayzen-pilot-v5.0.0-alpha.1-omni-selfhost.zip Public self-hosted edition (host panel, VPS, Docker). No channel requirement, no telemetry.
rayzen-pilot-v5.0.0-alpha.1-omni-owner-hosted.zip Owner-hosted edition for the project's own bot: adds the @RzRoot request on private /start (pilot/gate.py, see OWNER-HOSTED.md).
rayzen-pilot-v5.0.0-alpha.1-omni-manifest.json + .sig Ed25519-signed manifest used by /update (public key in SECURITY.md and pinned in pilot/updater.py).
rayzen-pilot-v5.0.0-alpha.1-omni-SHA256SUMS.txt SHA-256 of every file above (integrity only; authenticity comes from the signed manifest).

Build identity

  • Version 5.0.0-alpha.1, build 5.0.0-alpha.1+db3af191704d
  • Source commit 476b3b02415a24e6b62c3f63e6df493a6fb68ffc (github.com/matttsys/RayZen-Pilot, tag v5.0.0-alpha.1)
  • Source tree SHA-256 db3af191704d0fa8aa3f50f7672a689ed64a2b4d4644a2b705ff9ce4674b6955 (runtime files, excluding the build stamp)
  • Built 2026-10-19T19:09:19Z; signing key V5rxvn78gNnqWjT4JJ0VjuxPKS81y2lY/frxZK0AuRk=
Asset SHA-256 Size
rayzen-pilot-v5.0.0-alpha.1-omni-selfhost.zip a1121270bf6824151ded64e0acc6d72583e083f99b00cdcf5a974c18ef2ed5c3 401,685 bytes
rayzen-pilot-v5.0.0-alpha.1-omni-owner-hosted.zip 65dccf8fc806f091bb5c68c830ce431028d06f7f658e44c20657b97eaaa17169 406,808 bytes

Test summary (this exact build)

Run 2026-10-19T19:26:27Z → 2026-10-19T19:29:01Z on Python 3.11.17 (Linux 6.12.105+ aarch64), against the two archives above after extraction. Simulator = FakeTelegram, an in-process Bot API model; it is not real Telegram.

Suite rayzen-pilot-v5.0.0-alpha.1-omni-selfhost rayzen-pilot-v5.0.0-alpha.1-omni-owner-hosted
units PASS (7/7) PASS (7/7)
scenarios PASS (13/13) PASS (13/13)
purgeword PASS (9/9) PASS (9/9)
sweep PASS (0 failures, 12796 simulated API calls) PASS (0 failures, 12813 simulated API calls)
html_render PASS (no failures) PASS (no failures)
migration PASS (no failures) PASS (no failures)
v5 acceptance PASS (112/112) PASS (112/112)
edition + gate PASS (10/10) PASS (42/42)
smoke explore PASS (no errors) PASS (no errors)

Counted checks in the suites that report counts: 334. Overall: all PASS.

Environment Result
Automated + simulator (both editions) PASS
Clean virtualenv install from requirements.txt, first start, suites with that venv PASS
Real AI provider (OpenAI-compatible endpoint, operator key) PASS (10/10 checks, 74s)
Real Telegram groups NOT RUN (needs the operator's test groups; checklist in the private QA archive)
Docker image build, systemd install on a VPS, Pterodactyl panel NOT RUN in this workspace

Counts (registered in the code)

canonical_commands   v4.1.0= 114  v5= 173  +60 -1
command_names        v4.1.0= 147  v5= 245  +98 -0
fa_text_commands     v4.1.0=  27  v5= 163  +136 -0
ai_tools             v4.1.0=  28  v5=  28  +0 -0
settings             v4.1.0=  53  v5=  68  +15 -0
sections: {'ai': 7, 'answers': 10, 'desk': 10, 'filters': 21, 'general': 5, 'history': 1, 'invites': 8, 'locks': 7, 'logs': 5, 'members': 10, 'mod': 26, 'owner': 2, 'privacy': 6, 'schedule': 10, 'stats': 13, 'tools': 15, 'utils': 10, 'welcome': 7}
callback prefixes: ['op']
catalog problems: none

The 301+ new-capability target of the v5 plan is not met by this alpha; see CHANGELOG.md for what is actually new.

Upgrade

  • From 4.1.0: back up data/pilot.db and .env, put the new files over the old ones, start. Schema 2 → 3 runs automatically with a backup first.
  • /update fetches only stable releases from GitHub. For this pre-release: send the selfhost (or owner-hosted) zip, the manifest and the .sig to the bot in private, then /update inbox.

License

AGPL-3.0 from 5.0.0 on, with NOTICE (attribution) and TRADEMARKS.md (name/logo policy). 4.0.0 and 4.1.0 stay MIT. Not legal advice.

RayZen Pilot 4.1.0

Choose a tag to compare

@matttsys matttsys released this 18 Oct 17:50

RayZen Pilot 4.1.0

New: /purgeword

Deletes every message from the last 48 hours that contains a word.

  • /purgeword متین also matches attached forms: متینو, متینه, متین‌جان, متینجان. It ignores ي/ی, ك/ک, diacritics and half-spaces. ثمتین doesn't match.
  • Several spellings in one run, comma-separated: /purgeword متین، matin.
  • It always asks first: "N messages with «متین» from K people in the last 48h. Delete them?" with Yes / Cancel. Only the admin who asked can confirm.
  • Needs the Delete messages right, and the bot needs it too. It deletes everyone's matching messages, admins included.
  • Persian text command: «حذف کلمه متین». The AI assistant can do it too, and always shows the count first.
  • /purgeword on|off turns the index on or off for a group. off also clears it.

Privacy change

Bots can't search a Telegram chat, so the bot now keeps a 48-hour word index for /purgeword: normalized words plus chat, message id, sender id and time. It doesn't keep the message text. Rows older than 48 hours are deleted automatically. Commands and messages to the bot aren't indexed. /forgetme, /resetdata and /purgeword off remove the index.

Upgrading

The database moves to schema v2 on first start, and a backup is written to data/backups/ first.

  • VPS (git): cd RayZen-Pilot && git pull && sudo rayzen update vps
  • VPS (zip): sudo rayzen update rayzen-pilot-vps.zip
  • Panel: upload the new rayzen-pilot-host.zip over the old files. .env and data/ stay as they are.

Files

File For
rayzen-pilot-host.zip Bot host panels (Pterodactyl Python egg)
rayzen-pilot-vps.zip Linux servers with systemd, and Docker
rayzen-pilot-dev.zip Source + offline test suite (no secrets)
SHA256SUMS.txt Checksums

Full notes: CHANGELOG.md

RayZen Pilot 4.0.0

Choose a tag to compare

@matttsys matttsys released this 18 Oct 17:08

RayZen Pilot 4.0.0. A Persian-first Telegram group manager that starts with every filter off.

Downloads

File For
rayzen-pilot-host.zip Bot host panels (Pterodactyl Python egg). Unarchive, fill in .env, press Start.
rayzen-pilot-vps.zip Linux servers with systemd (sudo bash install.sh) and Docker.
rayzen-pilot-dev.zip Source with the offline test suite.
SHA256SUMS.txt Checksums for the files above.

No zip contains a token or API key. Put yours in .env.

What's in 4.0.0

  • One router and one service layer for commands, Persian text commands, buttons and AI plans.
  • Safe by default: nothing is deleted and no permissions change until an admin turns something on.
  • Locks restore the previous permissions when lifted. Night lock, reminders and announcements survive restarts.
  • Verified log routes with retries, /why for deletions, /pause to stop all filters at once.
  • /ai turns a plain request into allowlisted actions and waits for Yes before anything high-impact runs. The model name is never shown.
  • Older RayZen databases are imported on first start (backed up first). Old filter switches stay off.
  • VPS installer with a rayzen command for status, logs, backup and update.

Quick start

git clone https://github.com/matttsys/RayZen-Pilot.git
cd RayZen-Pilot/vps
sudo bash install.sh

Full guide: English · فارسی