Workspace polish: milestone selector, streaming fix, push fix, log quieting
- WorkspaceTaskPanel: add milestone <select> in task detail (PATCH /api/notes/:id), replace delete ✕ with trash can SVG icon - WorkspaceView: scroll to bottom when streaming ends so final message is visible without a page refresh - ToolCallCard: fix search_notes result count (was reading data.total; tool returns data.count), so results no longer show "0 found" - push.py: switch from deprecated WebPusher().send(vapid_private_key=...) to webpush() function (pywebpush 2.x API compatibility) - app.py: downgrade /api/health, /api/chat/status, and static asset requests from INFO to DEBUG in after_request logger to reduce log noise at default log level Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -74,7 +74,13 @@ def create_app() -> Quart:
|
||||
async def after_request(response):
|
||||
duration = time.monotonic() - getattr(g, "request_start", time.monotonic())
|
||||
duration_ms = round(duration * 1000, 1)
|
||||
logger.info(
|
||||
# Downgrade noisy high-frequency / static paths to DEBUG
|
||||
_quiet = (
|
||||
request.path in {"/api/health", "/api/chat/status"}
|
||||
or request.path.startswith(("/static/", "/assets/", "/sw.js", "/manifest.json"))
|
||||
)
|
||||
log_fn = logger.debug if _quiet else logger.info
|
||||
log_fn(
|
||||
"%s %s %s %.1fms",
|
||||
request.method,
|
||||
request.path,
|
||||
|
||||
@@ -23,8 +23,8 @@ _VAPID_KEYS_FILE = Path(Config.IMAGE_CACHE_DIR).parent / "vapid_keys.json"
|
||||
def _get_webpush():
|
||||
"""Lazy import to avoid startup errors if pywebpush is not installed."""
|
||||
try:
|
||||
from pywebpush import WebPusher
|
||||
return WebPusher
|
||||
from pywebpush import webpush
|
||||
return webpush
|
||||
except ImportError:
|
||||
return None
|
||||
|
||||
@@ -156,8 +156,8 @@ async def send_push_notification(
|
||||
logger.debug("VAPID not configured, skipping push notification")
|
||||
return
|
||||
|
||||
WebPusher = _get_webpush()
|
||||
if WebPusher is None:
|
||||
webpush = _get_webpush()
|
||||
if webpush is None:
|
||||
logger.warning("pywebpush not installed, cannot send push notifications")
|
||||
return
|
||||
|
||||
@@ -182,7 +182,8 @@ async def send_push_notification(
|
||||
"endpoint": sub.endpoint,
|
||||
"keys": {"p256dh": sub.p256dh, "auth": sub.auth},
|
||||
}
|
||||
response = WebPusher(subscription_info).send(
|
||||
response = webpush(
|
||||
subscription_info=subscription_info,
|
||||
data=payload,
|
||||
vapid_private_key=Config.VAPID_PRIVATE_KEY,
|
||||
vapid_claims=vapid_claims,
|
||||
|
||||
Reference in New Issue
Block a user