feat: OAuth user fixes + dashboard UI improvements (v3.2.0)

- Bug A: Fix OAuth consent redirect loop (return_url path-relative)
- Bug B: Accept OAuth JWT tokens on /u/{user_id}/{alias}/mcp
- Bug C: Add user OAuth client CRUD (list/create/delete) + new page
- D-1: Sidebar border via Tailwind class, version footer in sidebar
- D-2: Remove broken setInterval targeting #stats-container
- D-3: 404.html purple primary colors + system dark mode support
- D-4: Fix invisible buttons (bg-gray-200 + text-white in light mode)
- D-5: Pin Alpine.js to 3.14.8, remove duplicate CSRF meta tag
- D-6: Fix invisible lang toggle button in settings (dark mode)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
airano
2026-02-25 23:27:59 +03:30
parent ea51c10e03
commit fdb050454e
17 changed files with 538 additions and 102 deletions

View File

@@ -126,7 +126,7 @@ logging.basicConfig(
logger = logging.getLogger(__name__)
# Server version — read from pyproject.toml, fallback to importlib.metadata
SERVER_VERSION = "3.2.0"
SERVER_VERSION = "3.1.0"
try:
_pyproject = os.path.join(os.path.dirname(__file__), "pyproject.toml")
with open(_pyproject) as _f:
@@ -2464,7 +2464,8 @@ async def oauth_authorize(request: Request):
"lang": lang, # Language code (en/fa)
"t": translations, # All translations for this language
"session_user": session_user,
"return_url": str(request.url),
"return_url": str(request.url.path)
+ (("?" + str(request.url.query)) if request.url.query else ""),
},
)