This repository uses shadowtree
Anchors before broad repo search:
- Route lifecycle/finalization:
internal/route/route.go - Reverse proxy route construction/start:
internal/route/reverse_proxy.go - Entrypoint route resolution/context:
internal/entrypoint/http_server.go,internal/route/routes/context.go - Rule commands/matchers:
internal/route/rules/do.go,internal/route/rules/on.go,internal/route/rules/validate.go - Docker labels -> routes:
internal/docker/label.go,internal/docker/container.go,internal/route/provider/docker.go - Shared reverse proxy implementation:
goutils/http/reverseproxy/reverse_proxy.go - Response buffering/trailers used by rules:
goutils/http/response_modifier.go - Agent proxy headers/handler:
agent/pkg/agentproxy/config.go,agent/pkg/handler/proxy_http.go - Generated Swagger:
internal/api/v1/docs/swagger.{json,yaml}, ignore - Implementation docs: package level
**/README.md- NOT USER-FACING
Root, agent/, goutils/ = separate Go modules; run scoped tests from owning module dir.
- MDX:
- godoxy/ user/guide:
webui/wiki/content/docs/ - impl/ package readme (mirrors package
README.md, synced withshadowtree update-wiki).
- godoxy/ user/guide:
- Fumadocs
defineDocs+ collections:webui/source.config.ts; main Vite app content path. - In-app docs:
/docs;webui/src/lib/wiki/,webui/src/components/wiki/. - Standalone wiki:
webui/wiki/— docs-only layout, OG/search.
- Bun, Vite, TanStack Router/Start —
webui/src/router.tsx,webui/src/routes/, generatedrouteTree.gen.ts. - API: generated
webui/src/lib/api.ts; CSRF/session inwebui/src/lib/. webui/src/types/godoxy/mirrors backend config/providers — bump on RPC/schema change.*/schema.jsongenerated, no edit.- Config editor:
webui/src/components/config_editor/,sections.ts; CodeMirror/yaml/ruleswebui/src/lib/codemirror/.
Significant change → refresh package README.md, wiki, webui types. Skip for ephemeral tasks (debug, repro).
internal/task/task.golifetime:task.RootTask()background opsparent.Subtask()nestingOnFinished(),OnCancel()cleanup
gperr "goutils/errs"nested errors:gperr.Multiline()multi attemptsgperr.NewBuilder()collectgperr.NewGroup() + group.Go()concurrent collectgperr.PrependSubject()prepend subject (object name, id, etc.; not error title)
github.com/puzpuzpuz/xsync/v4lock-free concurrent mapsgoutils/synkbyte buffer get/put
