Releases: eularixs/archview
v0.6.0
gorilla/mux and WebSocket.
- gorilla/mux:
r.HandleFunc("/path", h).Methods("GET")is detected, with the method from the chained.Methods(...)(ANY otherwise) — gorilla doesn't use ther.GET(...)shape the generic router extractor covers. - WebSocket: a route handler that performs a WebSocket upgrade (gorilla/websocket
Upgrade, coder/nhooyrAccept) is labeled WS instead of GET. Per-message routing after the upgrade is dynamic and stays out of scope. - New
examples/gorilla-ws(real gorilla/mux + gorilla/websocket).
go get github.com/eularixs/archview@v0.6.0v0.5.0
Architecture linting.
Options.LintLayers flags arch smells on call edges:
- reverse dependency — a call backward toward the entry (e.g.
repository -> service), - skip-layer — a controller reaching a repository directly, bypassing the service,
- cross-module — a call into another module's internals.
Flagged edges render red with a ⚠ N issues count in the header. Off by default.
archview.New(archview.Options{ Root: ".", LintLayers: true })go get github.com/eularixs/archview@v0.5.0
v0.4.1
Generated source is now skipped. Functions in files marked // Code generated ... DO NOT EDIT. (protoc .pb.go, sqlc, mockgen, ent, …) are excluded, so generated boilerplate — proto getters, Unimplemented* stubs, Register*Server, _*_Handler wrappers — no longer clutters the graph. Route extraction is unaffected. go get github.com/eularixs/archview@v0.4.1
v0.4.0
Works with (almost) any Go web framework.
The per-framework gin and echo extractors are replaced by one generic router extractor that matches the shape nearly every Go router shares — router.GET/Get/POST/...("/path", handler) — by the verb name, a string path, and a function-typed handler, not by the router's concrete type. So gin, echo, fiber, chi, httprouter and most others work out of the box, with Group("/api") prefixes joined.
Combined with chain-based auto-layer (flow is read regardless of naming) and the gRPC / GraphQL / ConnectRPC extractors, archview now reads most Go API backends with no configuration.
- New: framework-agnostic router extractor (+
examples/fiber). - Verified: gin, echo, fiber all detect routes with their group prefixes.
go get github.com/eularixs/archview@v0.4.0v0.3.5
Lane boxes now wrap only the columns a module actually uses (both left and right), so modules that live in the right-hand columns — like an adapter with only repository nodes — get a compact box at their content instead of a full-width empty band. go get github.com/eularixs/archview@v0.3.5
v0.3.4
v0.3.3
Fixes from a real echo + ConnectRPC + hexagonal project.
- ConnectRPC support: detects
New<Svc>Handler(impl)(connectrpc.com/connect) — each RPC method becomes an endpoint, alongside the existing gRPC and GraphQL extractors. - Self-route skipped: archview no longer shows its own
/graphmount as an endpoint. - Adapter grouping: an adapter-only layout (
adapter/postgresql) now groups under its container lane (adapter) instead of collapsing into root.
go get github.com/eularixs/archview@v0.3.3v0.3.2
Layer-first layouts now group by feature.
A layout like core/<feature>, handlers/<feature>, repositories/<feature> (layer dir first, feature inside) now derives the module from the segment after the layer keyword, so each feature gets its own swimlane instead of collapsing into one. Feature-first layouts (user/service) are unchanged.
go get github.com/eularixs/archview@v0.3.2v0.3.1
Auto-layer is now on by default.
archview reads the call chain to place each function in a layer, regardless of package naming — a service shows up because something flows through it, not because a folder is named service. This works across any layout, including microservices that each name things differently, with no keyword config.
- Default behavior: chain-based layer inference is on.
- Keyword classification still takes precedence where it applies, so well-named projects are unchanged.
- Set
DisableAutoLayer: truefor the curated keyword-only view. - Bus detection runs first and auto-layer respects the bus barrier, so
DetectBusesgraphs are unaffected.
go get github.com/eularixs/archview@v0.3.1v0.3.0
Works on any layout — no keyword config required.
New
- Chain-based auto-layer (
Options.AutoLayer, default off): archview walks the call graph from your endpoints, includes the functions actually reached, and infers each one's layer from its role in the chain — entry = controller, calls-onward = service, sink = repository. Naming-agnostic, so hexagonal/clean-arch layouts work without per-project keyword config. Keyword classification still wins where it applies. - Wider classification defaults: controller now matches
interface/interfaces; service matchescore; repository matchespostgresql,supabase. Common hexagonal/clean-arch package names are recognized out of the box.
Why
A real echo + hexagonal project (core/, adapter/postgresql, interface/) showed only handlers — its service and repository packages didn't match the keyword set, so they were filtered out. The project was fine; archview was too rigid. This release fixes that.
Install
go get github.com/eularixs/archview@v0.3.0archview.New(archview.Options{ Root: ".", ShowPorts: true, AutoLayer: true })Known limitations
- Layer-first layouts (
core/<feature>) classify correctly but group into one lane; per-feature module grouping is on the roadmap. - AutoLayer is more inclusive (shows reachable functions); keep it off for the curated keyword-only view.