Added

  • completionPct field (0-100) added to MCP list_milestones response, alongside new taskCount and doneCount fields.
  • completionPct field added to MCP get_milestone_summary and REST GET /milestones/{name}/summary responses.
  • Shared extractErrorMessage() utility for parsing Zod validation errors and API error responses into human-readable strings.
  • Required field markers (asterisk labels) on all sidenav forms with client-side validation before API submit.

Fixed

  • API layer (api.js): all data-fetching methods now validate response.ok before calling .json(). Previously, server errors (4xx/5xx) could cause silent failures or crash the JSON parser.
  • Batch update in list view: .json() was called before checking response.ok, which could crash on error responses.
  • Error handling across 27 sidenav modules: replaced generic “Error” and “Failed to save” toast messages with parsed error details from the server response (Zod field-level validation, HTTP status messages).