refactor(service-config): URL consolidation series — PRs A + B + queued cleanup #827
No reviewers
Labels
No labels
area:agents
area:dashboard
area:database
area:design
area:design-review
area:flows
area:infra
area:meta
area:security
area:sessions
area:webhook
area:workdir
security
type:bug
type:chore
type:meta
type:user-story
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
charles/claude-hooks!827
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "refactor/service-config-consolidation"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Picks up
specs/service-config-url-consolidation.md. Branch carries 7 commits — 5 backlog cleanups already accumulated locally + PR A (rip 5 dead tabs) + PR B (rename Penpot tab → Design, co-present URL/secret).PR C (relocate
forgejo_urlintooperator_oauth_tokens.base_url) is not in this branch — it ships separately once this lands.Commits (oldest → newest)
50a57a8packages/forge-mcp/85e19b5openapi.yml+agents.json.pre-f1.bak, vendor penpot-mcp-server7cef3cdd4d82b5/home/charlesin clone-templatetoken_filefallback32652e9/config/agents— wire SPA editor to DB-backed sub-resources42d677dservice_configcolumns64f12b0PR A recap (
42d677d)5 dead tabs ripped: Auth, UI, MCP, Routing, Node flows. Migration
015-drop-service-config-dead-cols.tsdropsui_version,forge_mcp_command,node_flows_json,default_reviewer_type. WebhookConfig + ServiceConfigSettingsRow + handler types trim. Tab bar drops to Forge · Container · Watchdogs · Penpot. Net: −1250 LOC.PR B recap (
64f12b0)Penpot tab → Design tab. New
DesignSection:base_url+default_team_id+ aPENPOT_TOKENeditor in one card. Save merges the URL/team_id back intopenpot_jsonand POST/PUTs the secret through existing SC-6 routes.team_by_repoJsonField separately (per-repo routing, distinct concern).Design call (option (b) in the spec): no
external_connectiontable — secret table isname → ciphertextby design (#823) and reference-by-name is the established contract. Building a one-row metadata table for Penpot would be premature abstraction. PR C will reuse the existingoperator_oauth_tokens.base_urlfor the forge URL, so neither PR needs a new schema home.Test plan
just qa— 3135/3135 server tests + web typecheck greenjust restart— service running on the new SPA bundle/app/settings/service, verify Design tab renders Penpot connection card + per-repo mapping cardFollow-up (not in this PR)
PR C — drop
service_config.forgejo_url, route every reader throughoperator_oauth_tokens.base_url(forge_type='forgejo'row already carries it). Service config tab bar collapses to Container · Watchdogs · Design; Forge URL surface moves tosettings.repos.tsx/ a Connections panel.🤖 Generated with Claude Code
Migration 015 idempotent and correct; dead-code removal thorough across all 5 tabs, DB columns, schema types, and tests. Design section structured UI + inline PENPOT_TOKEN editor wired correctly to SC-6 secrets API.
handleRootunconditional 302 andputAgentConfigsplit-write refactor both clean.Nit (non-blocking):
WatchdogsSectionandDesignSectionconnection card pass nodisabled={!dirty}toToolbar— Save appears clickable when nothing has changed; clicking is silently a no-op. Worth a follow-up.