Commit Graph
22 Commits
Author SHA1 Message Date
jcoffey-dev 9247752435 Merge branch 'ci/image-version' into 'main'
Build published images with the version they report

See merge request coffey-labs/ihasvpn!2
2026-09-20 22:25:00 -07:00
jcoffey-dev ee7f3a82d7 Build published images with the version they report
publish.yml passed the computed version into the image build, and the
first port of it to GitLab CI did not. A tag pushed with that port would
have shipped an image reporting itself unversioned (or, for ihasvpn, with a
stray leading "v" no earlier build had), and tagged it with the git tag
rather than the version string.

The version is now computed the way publish.yml computed it and passed as
the build arg, and the image is tagged with it, '+' turned into '-' where a
Docker tag needs that.
2026-09-20 22:19:46 -07:00
jcoffey-dev afc17a5305 Merge branch 'ci/gitlab-pipeline' into 'main'
Run CI on the self-hosted GitLab

See merge request coffey-labs/ihasvpn!1
2026-09-20 20:35:50 -07:00
jcoffey-dev 14f81a3489 Run CI and image publishing on the self-hosted GitLab
Ports ci.yml and publish.yml after the GitHub account was suspended and
ghcr.io/coffey-labs/ihasvpn went dark with it. The deployment on Web_Host
was still pulling that tag, and the only surviving copy was the image
already on the host -- amd64 only. This rebuilds the multi-arch tag.

The workflow built each platform on a native runner; there is one amd64
runner here, so arm64 goes through QEMU. Slower, and tag-driven for that
reason, but shipping amd64 only is exactly what the suspension already cost
us once.

The Actions workflows stay in the tree as the reference.
2026-09-20 20:14:55 -07:00
jcoffey 5989a53b9b Update GitHub Sponsors username in FUNDING.yml 2026-09-13 14:09:28 -07:00
jcoffey 2c19cdcdd3 Delete .github/FUNDING.yml 2026-09-13 14:09:10 -07:00
jcoffey 8d6182f0d1 Merge pull request #7 from Coffey-Labs/sponsor-button
Add the Sponsor button
2026-09-13 02:10:27 -07:00
jcoffey-dev 4415bdf0ec Add the Sponsor button
The same FUNDING.yml as ihasmail and Cairn OBS, pointing at the
jcoffey-dev GitHub Sponsors profile.
2026-09-13 01:52:09 -07:00
jcoffey f759a38fdb Merge pull request #6 from Coffey-Labs/docs/site-link
Link ihasvpn.org from the README
2026-09-13 00:41:55 -07:00
jcoffey-dev c803bb103d Link the project site from the README 2026-09-13 00:40:22 -07:00
jcoffey 96d2c41757 Merge pull request #5 from Coffey-Labs/rename/ihasvpn
Rename the project to ihasvpn
2026-09-12 23:54:22 -07:00
jcoffey-dev 02e7993c87 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.
2026-09-12 23:48:36 -07:00
jcoffey e807896806 Merge pull request #4 from Coffey-Labs/ui/shell-refresh
Refresh the console shell for desktop and phones
2026-09-12 23:13:00 -07:00
jcoffey-dev bcb9ac2e74 Add the CoffeyLabs.org copyright beside the licence link
A Legal component renders "© <year> CoffeyLabs.org · AGPL-3.0 source" with
both linked. It replaces the bare licence link in the sidebar footer and on
the login and setup pages, and sits at the foot of the user menu on phones,
where the sidebar is hidden. The sidebar and menu stack the two halves;
the auth pages keep one centred line. Screenshots retaken.
2026-09-12 23:08:49 -07:00
jcoffey-dev 17a62fdc59 Refresh the console shell for desktop and phones
The sidebar keeps the navigation on wide screens, now in two groups with a
clearer active state, and its footer holds the live indicator, a one-tap
theme toggle and a user menu with the account page, the full theme switch
and sign out. Below 900px the shell becomes a top bar (brand, live, theme,
user menu) and a bottom tab bar, so the primary pages are within thumb
reach and nothing stacks above the content.

Phones also get: no sideways scroll (the dashboard's fixed 2fr/1fr grid
collapses), stat cards two-up, low-value table columns hidden, modals as
bottom sheets, bigger touch targets, 16px inputs so iOS does not zoom, and
toasts that clear the tab bar. The meta theme-color follows the theme.

The mark's SVG gradients now take per-instance ids. With two copies on the
page the shared id resolved to the hidden top-bar copy and painted nothing,
which is why the logo looked washed out in light mode.

The tagline reads "WireGuard eXtended", which is where the name comes from.
README screenshots retaken.
2026-09-12 23:01:05 -07:00
jcoffey 5996488953 Merge pull request #3 from Coffey-Labs/docs/screenshots-refresh
Refresh the README screenshots
2026-09-12 20:57:59 -07:00
jcoffey 99f60a56b7 Refresh the README screenshots
Recaptured after the new mark and the theme switch landed, in the default
dark theme, against the mock data plane.
2026-09-12 20:56:23 -07:00
jcoffey 45120ac063 Merge pull request #2 from Coffey-Labs/brand-and-theme
Padlock-on-a-shield mark, dark and light themes, history note
2026-09-12 20:50:30 -07:00
jcoffey 6c1a13d1fc Padlock-on-a-shield mark, dark and light themes, history note
A new mark: a padlock on a shield with the W as its keyhole, in the
console's teal on a dark shield. It replaces the placeholder W tile in the
sidebar, on the sign-in and setup pages, and as the favicon, with app icons
and a web manifest. The SVG sources, a single-colour variant, a wordmark
and a social preview image live in docs/brand.

The console now has a theme choice: dark by default, light, or follow the
system, switched from the sidebar or the Account page and remembered per
browser. The light palette is a first-class theme rather than a media
query, so both are laid out the same way.

The README opens with the mark and gains a History section about the 2025
WGX installer this replaces.
2026-09-12 20:48:53 -07:00
jcoffey 6385a2a466 Merge pull request #1 from Coffey-Labs/docs/readme-screenshots
Add console screenshots to the README
2026-09-12 20:16:23 -07:00
jcoffey 71b855db28 Add console screenshots to the README
Dashboard, peer list, a peer's overview and its configuration with the QR
code, and the settings page, captured against the mock data plane.
2026-09-12 20:14:28 -07:00
jcoffey 6c006e1d4d WireGuard server with an embedded admin console
Go backend that drives kernel WireGuard over netlink (wireguard-go as the
fallback), nftables NAT with MSS clamping, forwarding and buffer sysctls,
SQLite for peers, users, sessions, traffic history and the audit log.

React console: dashboard with live rates and usage history, peer management
with QR codes and .conf downloads, disconnect, session reset, key rotation,
expiry, client-supplied keys, settings, users with admin and viewer roles,
two-factor authentication with recovery codes, audit log.

Docker image on Alpine with compose files for bridged and host networking,
CI and GHCR publish workflows, performance notes.
2026-09-12 19:56:08 -07:00