Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<p align="center">
<img src="plugins/botnest/assets/logo.png" width="128" height="128" alt="botnest logo">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="plugins/botnest/assets/logo-dark.png">
<img src="plugins/botnest/assets/logo.png" width="128" height="128" alt="botnest logo">
</picture>
</p>

<h1 align="center">botnest for ChatGPT and Codex</h1>
Expand Down Expand Up @@ -75,5 +78,5 @@ supported images in Codex-generated image directories.

- Privacy: <https://botnest.app/legal/privacy/>
- Terms: <https://botnest.app/legal/offer/>
- Support: <https://botnest.app/legal/details/>
- Support: <https://github.com/botnest-app/botnest-plugin/issues>
- Vulnerability reporting: [SECURITY.md](SECURITY.md)
18 changes: 10 additions & 8 deletions SUBMISSION.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,13 @@ server and an uploaded skill.
| Category | Productivity |
| Short description | Создавайте, настраивайте и оформляйте Telegram-ботов |
| Website | https://botnest.app/ |
| Support | https://botnest.app/legal/details/ |
| Support | https://github.com/botnest-app/botnest-plugin/issues |
| Privacy policy | https://botnest.app/legal/privacy/ |
| Terms of service | https://botnest.app/legal/offer/ |
| Logo | `plugins/botnest/assets/logo.png` |
| Directory icon · light | `plugins/botnest/assets/logo.png` |
| Directory icon · dark | `plugins/botnest/assets/logo-dark.png` |
| Composer icon · light | `plugins/botnest/assets/icon.png` |
| Composer icon · dark | `plugins/botnest/assets/icon-dark.png` |

Long description:

Expand Down Expand Up @@ -118,12 +121,11 @@ this repository.

## Release notes

botnest 1.0.1 aligns every production MCP tool annotation with its actual
side effects and external interactions. The plugin creates, updates,
diagnoses, brands, and explicitly publishes Telegram bots through the
production botnest MCP server. It includes provider-aware LLM preflight,
guided Telegram/OpenRouter authorization, semantic composite-flow guidance,
and secure avatar hand-off.
botnest 1.0.2 adds theme-aware directory and composer artwork while preserving
the exact botnest mark. It also aligns every production MCP tool annotation
with its actual side effects and external interactions. The plugin creates,
updates, diagnoses, brands, and explicitly publishes Telegram bots through the
production botnest MCP server.

## Final portal checklist

Expand Down
2 changes: 1 addition & 1 deletion plugins/botnest/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "botnest",
"version": "1.0.1",
"version": "1.0.2",
"description": "Create, improve, diagnose, brand, and publish production-ready Telegram bots with botnest.",
"author": {
"name": "botnest",
Expand Down
Binary file added plugins/botnest/assets/icon-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified plugins/botnest/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added plugins/botnest/assets/logo-dark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 9 additions & 4 deletions tests/test_plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,12 +71,17 @@ def test_marketplace_is_standalone(self):
self.assertEqual(entry["policy"]["authentication"], "ON_INSTALL")

def test_brand_assets_are_valid_square_pngs(self):
manifest = load_json(PLUGIN / ".codex-plugin" / "plugin.json")
for field in ("composerIcon", "logo"):
path = PLUGIN / manifest["interface"][field]
assets = {
"assets/logo.png": 256,
"assets/logo-dark.png": 256,
"assets/icon.png": 48,
"assets/icon-dark.png": 48,
}
for relative_path, minimum_size in assets.items():
path = PLUGIN / relative_path
width, height = png_size(path)
self.assertEqual(width, height)
self.assertGreaterEqual(width, 48)
self.assertGreaterEqual(width, minimum_size)
self.assertLessEqual(width, 4096)
self.assertLessEqual(path.stat().st_size, 5 * 1024 * 1024)

Expand Down