Add /-/debug hub page with debug_menu() plugin hook

Replace the scattered debug tool links in the app menu with a single
"Debug" link to a new /-/debug page. This page aggregates all debug
tools using a new debug_menu() plugin hook, which plugins can implement
to contribute DebugItem(title, description, path) entries.

Hook implementations are responsible for their own permission checks,
so the page only shows items the current actor can access. Core debug
items (databases, plugins, versions, settings, permissions, etc.) are
registered via default_debug_menu.py.

https://claude.ai/code/session_01QE3BkTNRLvLEpLXy7ZDCeU
This commit is contained in:
Claude 2026-02-16 16:25:09 +00:00
commit 4c635a1d99
No known key found for this signature in database
15 changed files with 238 additions and 32 deletions

View file

@ -2,7 +2,7 @@ import asyncio
from datasette import hookimpl
from datasette.facets import Facet
from datasette import tracer
from datasette.permissions import Action
from datasette.permissions import Action, DebugItem
from datasette.resources import DatabaseResource
from datasette.utils import path_with_added_args
from datasette.utils.asgi import asgi_send_json, Response
@ -354,6 +354,18 @@ def forbidden(datasette, request, message):
return Response.redirect("/login?message=" + message)
@hookimpl
def debug_menu(datasette, actor, request):
if actor:
return [
DebugItem(
title="Test debug item",
description="From test plugin",
path="/-/plugins",
)
]
@hookimpl
def menu_links(datasette, actor, request):
if actor: