24 Commits

Author SHA1 Message Date
bc0282b5f8 Merge pull request 'Merge development into main (v4.1.0 release)' (#169) from development into main 2026-01-26 15:57:59 +00:00
4c262a7227 Merge pull request 'fix(gitea-mcp): URL-encode wiki page names and include title in updates' (#168) from fix/160-wiki-page-unnamed-bug into development 2026-01-26 15:55:16 +00:00
530c5f4aa0 fix(gitea-mcp): URL-encode wiki page names and include title in updates
Fixes #160: update_wiki_page was renaming pages to "unnamed"

Root causes:
1. page_name wasn't URL-encoded, breaking pages with special chars like ':'
2. PATCH request was missing 'title' field, causing Gitea to use default name

Changes:
- Add URL encoding (urllib.parse.quote) to get_wiki_page, update_wiki_page, delete_wiki_page
- Add 'title': page_name to update_wiki_page payload to preserve page name

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:54:33 -05:00
61a3b4611f Merge pull request 'chore: release v4.1.0 with versioning workflow fix' (#167) from release/v4.1.0 into development 2026-01-26 15:41:35 +00:00
834cf3ac56 chore: release v4.1.0 2026-01-26 10:38:19 -05:00
28c9552d1d fix(projman): add mandatory CHANGELOG and versioning to sprint-close workflow
Problem: Version workflow was documented but not enforced in sprint-close.
After completing sprints, CHANGELOG wasn't updated and releases weren't created.

Solution:
- Add "Update CHANGELOG" as mandatory step 7 in sprint-close
- Add "Version Check" as step 8 with /suggest-version and release.sh
- Update orchestrator agent with CHANGELOG and version reminders
- Add V04.1.0 wiki workflow changes to CHANGELOG [Unreleased]
- Document MCP bug #160 in Known Issues

This ensures versioning workflow is part of the sprint close process,
not just documented in CLAUDE.md.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 10:38:19 -05:00
db67d3cc76 Merge pull request 'development' (#166) from development into main
Reviewed-on: #166
2026-01-26 15:29:35 +00:00
896cdcfa0f Merge pull request '[V04.1.0] feat: Wiki-Based Planning Workflow Enhancement' (#165) from feat/v04.1.0-wiki-planning-workflow into development
Reviewed-on: #165
2026-01-26 15:28:00 +00:00
a933edeef1 Merge pull request 'development' (#159) from development into main
Reviewed-on: #159
2026-01-25 23:46:30 +00:00
1df9573f7a Merge pull request 'hotfix(data-platform): use separate hooks.json file' (#157) from hotfix/data-platform-hooks into main
Reviewed-on: #157
2026-01-25 20:46:14 +00:00
35d5f14003 docs: correct plugin.json hooks format rules
Hooks should be in separate hooks/hooks.json file (auto-discovered),
NOT inline in plugin.json. Previous documentation was wrong.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 15:42:13 -05:00
5321b2929e fix(data-platform): use separate hooks.json file (not inline)
Previous fix was wrong. Hooks should be in separate hooks/hooks.json
file (auto-discovered), NOT inline in plugin.json.

Pattern matches working plugins: projman, pr-review, claude-config-maintainer

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 15:41:46 -05:00
05aa50d409 Merge pull request 'development' (#156) from development into main
Reviewed-on: #156
2026-01-25 20:37:15 +00:00
54e8e694b1 Merge pull request 'development' (#154) from development into main
Reviewed-on: #154
2026-01-25 20:24:29 +00:00
8ec7cbb1e9 Merge pull request 'development' (#152) from development into main
Reviewed-on: #152
2026-01-25 19:37:53 +00:00
3519a96d06 Merge pull request 'development' (#150) from development into main
Reviewed-on: #150
2026-01-25 19:28:43 +00:00
f809c672b5 Merge pull request 'development' (#148) from development into main
Reviewed-on: #148
2026-01-24 18:16:29 +00:00
5d205c9c13 Merge pull request 'development' (#142) from development into main
Reviewed-on: #142
2026-01-24 17:36:43 +00:00
efb83e0f28 Merge pull request 'development' (#135) from development into main
Reviewed-on: #135
2026-01-24 16:48:40 +00:00
7bedfa2c65 Merge pull request 'development' (#133) from development into main
Reviewed-on: #133
2026-01-23 22:54:42 +00:00
42ab4f13cf Merge pull request 'development' (#125) from development into main
Reviewed-on: #125
2026-01-23 21:48:13 +00:00
77dc122079 Merge pull request 'development' (#122) from development into main
Reviewed-on: #122
2026-01-23 21:08:10 +00:00
ce774bcc6f Merge pull request 'development' (#119) from development into main
Reviewed-on: #119
2026-01-23 19:47:39 +00:00
b3abe863af Merge pull request 'development' (#117) from development into main
Reviewed-on: #117
2026-01-23 17:50:25 +00:00

View File

@@ -239,8 +239,11 @@ class GiteaClient:
repo: Optional[str] = None
) -> Dict:
"""Get a specific wiki page by name."""
from urllib.parse import quote
owner, target_repo = self._parse_repo(repo)
url = f"{self.base_url}/repos/{owner}/{target_repo}/wiki/page/{page_name}"
# URL-encode the page_name to handle special characters like ':'
encoded_page_name = quote(page_name, safe='')
url = f"{self.base_url}/repos/{owner}/{target_repo}/wiki/page/{encoded_page_name}"
logger.info(f"Getting wiki page '{page_name}' from {owner}/{target_repo}")
response = self.session.get(url)
response.raise_for_status()
@@ -271,9 +274,13 @@ class GiteaClient:
repo: Optional[str] = None
) -> Dict:
"""Update an existing wiki page."""
from urllib.parse import quote
owner, target_repo = self._parse_repo(repo)
url = f"{self.base_url}/repos/{owner}/{target_repo}/wiki/page/{page_name}"
# URL-encode the page_name to handle special characters like ':'
encoded_page_name = quote(page_name, safe='')
url = f"{self.base_url}/repos/{owner}/{target_repo}/wiki/page/{encoded_page_name}"
data = {
'title': page_name, # CRITICAL: include title to preserve page name
'content_base64': self._encode_base64(content)
}
logger.info(f"Updating wiki page '{page_name}' in {owner}/{target_repo}")
@@ -287,8 +294,11 @@ class GiteaClient:
repo: Optional[str] = None
) -> bool:
"""Delete a wiki page."""
from urllib.parse import quote
owner, target_repo = self._parse_repo(repo)
url = f"{self.base_url}/repos/{owner}/{target_repo}/wiki/page/{page_name}"
# URL-encode the page_name to handle special characters like ':'
encoded_page_name = quote(page_name, safe='')
url = f"{self.base_url}/repos/{owner}/{target_repo}/wiki/page/{encoded_page_name}"
logger.info(f"Deleting wiki page '{page_name}' from {owner}/{target_repo}")
response = self.session.delete(url)
response.raise_for_status()