You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Merge origin/master into feat/split-api-workspaces-25
Resolves the structural conflict in api/workspaces.py: PR #31's whole
point is splitting the 1400-line monolith into services (HEAD has the
thin route handlers that delegate to services.workspace_listing /
services.workspace_tabs / services.cli_tabs / services.workspace_resolver),
while master had #35's lint cleanup applied to the still-inline
monolith. Took HEAD's structure wholesale via `git checkout --ours` then
layered in master's print → _logger.exception pattern on the three thin
route-handler error catches (list_workspaces / get_workspace / tabs).
Plus two ruff E741 cleanups (1-char `l → ln` renames) in
services/cli_tabs.py:63 and services/workspace_tabs.py:348 — these
existed on PR #31's branch because the lint pass on master fixed the
same pattern in api/workspaces.py but PR #31 extracted to services
before that pass landed.
Verified locally:
- ruff check api/ utils/ scripts/export.py app.py services/
→ All checks passed
- unittest discover tests → 207 / 207 OK
Known follow-up (NOT in this commit): mypy gate (newly enforced by #35)
now flags 27 pre-existing errors in services/workspace_tabs.py (26)
and services/workspace_resolver.py (1) — all "object has no attribute X"
style, the upstream dict types are too loose. Out of scope for a merge
resolution; flagging to Brad for a separate tightening pass on the
services/ modules.
0 commit comments