fix(F.16): update visibility tests — gitea is now public
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
90
docs/prompts/F16-gitea-public-release.md
Normal file
90
docs/prompts/F16-gitea-public-release.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# F.16 — Gitea Plugin Review, Test & Public Release
|
||||
|
||||
> Session prompt. Copy and paste into a new Claude Code conversation.
|
||||
|
||||
---
|
||||
|
||||
## Prompt:
|
||||
|
||||
```
|
||||
از مهارت project-ops برای آشنایی با محیط استفاده کن. پروژه mcphub-internal روی branch Phase-1 است.
|
||||
فایلهای مرجع:
|
||||
- docs/plans/2026-03-25-v4-development-cycle.md
|
||||
- CLAUDE.md
|
||||
- CHANGELOG.md
|
||||
|
||||
## وضعیت فعلی
|
||||
- نسخه: v3.5.0
|
||||
- 565 ابزار در 9 پلاگین (4 پلاگین عمومی: WordPress, WooCommerce, Supabase, OpenPanel)
|
||||
- FastMCP: `>=3.0.0,<4.0.0`
|
||||
- CI سبز
|
||||
- F.15 تکمیل شده — FastMCP 3.x upgrade + legacy cleanup
|
||||
|
||||
## هدف: فاز F.16 — Gitea Plugin Review, Test & Public Enablement
|
||||
|
||||
مشابه F.10 (OpenPanel) — بررسی، تست و فعالسازی عمومی پلاگین Gitea.
|
||||
|
||||
### بخش 1: بررسی و تحلیل
|
||||
1. **ساختار پلاگین**: `plugins/gitea/` شامل 56 ابزار در 5 هندلر:
|
||||
- `handlers/repositories.py` — 16 tools (CRUD repos, branches, tags, files)
|
||||
- `handlers/issues.py` — 12 tools (issues, comments, labels, milestones)
|
||||
- `handlers/pull_requests.py` — 15 tools (PRs, reviews, merge, diff)
|
||||
- `handlers/users.py` — 8 tools (users, orgs, teams)
|
||||
- `handlers/webhooks.py` — 5 tools (CRUD webhooks, test)
|
||||
2. **مشکلات شناساییشده**:
|
||||
- `update_webhook` در client.py هست ولی به عنوان tool expose نشده
|
||||
- هیچ تست اختصاصیای ندارد (0 تست!)
|
||||
- فعلاً admin-only هست (نه در ENABLED_PLUGINS)
|
||||
3. **تست واقعی**: سایت Gitea از MCPHub MCP endpoint:
|
||||
- از ابزارهای Supabase MCP (`mcp.example.com`) استفاده کنید تا سایت Gitea موجود را پیدا کنید
|
||||
- یا یک Gitea instance جدید از طریق داشبورد اضافه کنید
|
||||
- هر دسته tool را با API واقعی تست کنید
|
||||
|
||||
### بخش 2: تست نوشتن
|
||||
مشابه `tests/test_openpanel_plugin.py` (الگو — 767 خط, 62 تست):
|
||||
1. `tests/test_gitea_plugin.py` بنویسید:
|
||||
- Client initialization + health check
|
||||
- Tool spec validation (نامها، پارامترها، type ها)
|
||||
- Handler delegation (mock client)
|
||||
- Error handling
|
||||
- Pagination
|
||||
2. هدف: حداقل 80 تست (56 tool + edge cases)
|
||||
|
||||
### بخش 3: رفع مشکلات
|
||||
1. `update_webhook` را به عنوان tool expose کنید
|
||||
2. هر tool که در تست واقعی مشکل دارد را fix کنید
|
||||
3. توضیحات service page برای Gitea بنویسید
|
||||
4. health check endpoint را بررسی کنید
|
||||
|
||||
### بخش 4: فعالسازی عمومی
|
||||
1. `core/plugin_visibility.py`: اضافه کردن `gitea` به `DEFAULT_PUBLIC_PLUGINS`
|
||||
2. `env.example`: آپدیت ENABLED_PLUGINS default
|
||||
3. `glama.json`: آپدیت description اگر لازمه
|
||||
|
||||
### بخش 5: Release
|
||||
1. Version bump: `3.5.0` → `3.6.0`
|
||||
2. CHANGELOG update
|
||||
3. Lint: `uvx --python 3.12 black .` && `uvx ruff check --fix .`
|
||||
4. Commit + push Phase-1
|
||||
5. Sync: `python3.11 scripts/community-build/sync.py --output ../mcphub/`
|
||||
6. بعد از sync حتماً `uvx --python 3.12 black .` در public repo هم بزنید!
|
||||
7. Commit + push public repo
|
||||
|
||||
### مراحل پیشنهادی
|
||||
1. **تحلیل**: خواندن کامل هر handler + client + schemas
|
||||
2. **تست واقعی**: اتصال به Gitea instance و تست ابزارها
|
||||
3. **پلن اجرایی**: ارائه پلن و تایید قبل از شروع
|
||||
4. **تست نوشتن**: test_gitea_plugin.py
|
||||
5. **رفع مشکلات**: fix هر tool مشکلدار
|
||||
6. **فعالسازی**: ENABLED_PLUGINS update
|
||||
7. **Release**: v3.6.0
|
||||
|
||||
### نکات فنی
|
||||
- Private repo: /config/workspace/mcphub-internal (branch Phase-1)
|
||||
- Public repo: /config/workspace/mcphub (branch main)
|
||||
- Lint: `uvx --python 3.12 black .` && `uvx ruff check --fix .`
|
||||
- Sync: `python3.11 scripts/community-build/sync.py --output ../mcphub/`
|
||||
- ایمیل git عمومی: hi.airano@gmail.com
|
||||
- **مهم**: اول پلن بده، بدون تایید شروع نکن
|
||||
- **الگوی مرجع**: F.10 (OpenPanel) — بخش "Phase F.10" در plan و `tests/test_openpanel_plugin.py`
|
||||
```
|
||||
@@ -78,11 +78,11 @@ class TestIsPluginPublic:
|
||||
os.environ.pop("ENABLED_PLUGINS", None)
|
||||
assert is_plugin_public("supabase") is True
|
||||
|
||||
def test_default_gitea_not_public(self):
|
||||
"""Gitea is not public by default."""
|
||||
def test_default_gitea_public(self):
|
||||
"""Gitea is public by default (since F.16)."""
|
||||
with patch.dict(os.environ, {}, clear=False):
|
||||
os.environ.pop("ENABLED_PLUGINS", None)
|
||||
assert is_plugin_public("gitea") is False
|
||||
assert is_plugin_public("gitea") is True
|
||||
|
||||
def test_default_wordpress_advanced_not_public(self):
|
||||
"""WordPress Advanced is not public by default."""
|
||||
@@ -118,8 +118,9 @@ class TestSiteApiIntegration:
|
||||
assert "wordpress" in fields
|
||||
assert "woocommerce" in fields
|
||||
assert "supabase" in fields
|
||||
assert "gitea" in fields
|
||||
assert "openpanel" in fields
|
||||
assert "wordpress_advanced" not in fields
|
||||
assert "gitea" not in fields
|
||||
assert "n8n" not in fields
|
||||
|
||||
def test_get_user_plugin_names_filtered(self):
|
||||
@@ -133,8 +134,9 @@ class TestSiteApiIntegration:
|
||||
assert "wordpress" in names
|
||||
assert "woocommerce" in names
|
||||
assert "supabase" in names
|
||||
assert "gitea" in names
|
||||
assert "openpanel" in names
|
||||
assert "wordpress_advanced" not in names
|
||||
assert "gitea" not in names
|
||||
|
||||
def test_custom_env_changes_fields(self):
|
||||
"""Custom ENABLED_PLUGINS changes which credential fields are returned."""
|
||||
|
||||
Reference in New Issue
Block a user