Rename the project to ihasvpn

WGX shares its name with several other WireGuard tools, so the project
becomes ihasvpn, alongside ihasmail.

- Module github.com/Coffey-Labs/ihasvpn, command cmd/ihasvpn, image
  ghcr.io/coffey-labs/ihasvpn.
- Environment variables move from WGX_* to IHASVPN_*. The default database
  is ihasvpn.db, the nftables table is `ihasvpn`, metrics are ihasvpn_*, and
  the session cookie and theme key are renamed, so existing sessions end.
- The mark is the ihasmail cat peeking over the edge of a shield, drawn as
  a vector. docs/brand/generate.py builds the mark, mono mark, wordmarks,
  social card, favicons and app icons from that one drawing.
- The console takes ihasmail's palette: the ihasmail.org teal-navy for dark,
  its contrast-checked light tiers with the site's light accent, received
  traffic in the cat's orange and sent in teal. The wordmark weight and
  font stack follow ihasmail.org.
- Detail values wrap at spaces before breaking inside an address, so an
  IPv6 tunnel address no longer splits mid-number.
- The README history note about the earlier WGX installer is gone with the
  name it explained. Screenshots retaken.
This commit is contained in:
2026-09-12 23:48:36 -07:00
parent e807896806
commit 02e7993c87
74 changed files with 529 additions and 369 deletions
+6 -6
View File
@@ -1,11 +1,11 @@
# Contributing to WGX
# Contributing to ihasvpn
Thanks for your interest. Bug reports, feature requests, code and
documentation are all welcome.
## Before you start
- WGX is one container: the WireGuard server and the UI that manages it.
- ihasvpn is one container: the WireGuard server and the UI that manages it.
Contributions that need a second service (a database, a message queue, a
separate frontend host) are out of scope.
- The kernel data plane is the point. Anything on the packet path has to
@@ -22,7 +22,7 @@ You need Go (see `go.mod` for the version), Node 26 and Docker.
cd web && npm ci && npm run dev
# Backend against the in-memory mock data plane -- no privileges needed
WGX_BACKEND=mock WGX_DATA_DIR=/tmp/wgx WGX_HTTP_LISTEN=127.0.0.1:51821 go run ./cmd/wgx
IHASVPN_BACKEND=mock IHASVPN_DATA_DIR=/tmp/ihasvpn IHASVPN_HTTP_LISTEN=127.0.0.1:51821 go run ./cmd/ihasvpn
```
The mock simulates peers handshaking and moving traffic so the dashboard has
@@ -30,9 +30,9 @@ something to show. For the real thing:
```sh
cd web && npm run build && cd ..
docker build -t wgx:dev .
docker build -t ihasvpn:dev .
docker run --rm --cap-add NET_ADMIN --sysctl net.ipv4.ip_forward=1 \
-p 51820:51820/udp -p 127.0.0.1:51821:51821 -v wgx-dev:/data wgx:dev
-p 51820:51820/udp -p 127.0.0.1:51821:51821 -v ihasvpn-dev:/data ihasvpn:dev
```
## Before you commit
@@ -42,7 +42,7 @@ CI checks are not a substitute for building locally. Run, in this order:
```sh
cd web && npm run build && cd .. # type-checks and builds the UI
go vet ./... && go test -count=1 ./...
docker build -t wgx:dev . # when the change reaches the image
docker build -t ihasvpn:dev . # when the change reaches the image
```
`go test` covers the engine against the mock data plane and the whole HTTP