Commit Graph

  • 863a1d549d Deploy main 5e572ce to prod (#198) prod clawbot 2026-10-26 13:10:55 +01:00
  • 5e572ce7f8 next → main: data directory safe as root, version from git, 80% target timeout, report retention (#85) main sneak 2026-10-26 13:10:15 +01:00
  • 437e0ea80c Merge branch 'main' into next next sneak 2026-10-26 13:09:53 +01:00
  • 0d08a75793 README.md rewritten sentence by sentence (closes #189) clawbot 2026-10-26 08:12:59 +01:00
  • 8ce69b7b40 test/viewport/README.md rewritten sentence by sentence clawbot 2026-10-26 06:40:20 +01:00
  • 83a095b572 TODO.md rewritten sentence by sentence clawbot 2026-10-26 04:59:21 +01:00
  • 8a62f12802 Targets whose home page redirects are checked at /robots.txt (closes #194) clawbot 2026-10-26 04:11:48 +01:00
  • a72797a403 Checks send no Referer header, so Hetzner answers (closes #191) clawbot 2026-10-26 02:10:43 +01:00
  • 0c36d79131 main into prod: netwatch as one container, ready for upaas (#74) sneak 2026-10-25 02:39:56 +01:00
  • db5eb507c1 server.go starts listenAndServe in an anonymous function (closes #162) v1.0.0-rc2 clawbot 2026-10-19 08:24:49 +02:00
  • 6e4c44b3d6 Match .gitignore, .editorconfig and .golangci.yml to sneak/prompts (closes #174) clawbot 2026-10-19 08:22:05 +02:00
  • 91eb3d6771 package.json drops its version field and is private (closes #158) clawbot 2026-10-19 08:16:29 +02:00
  • edcf7f8c3c TODO.md Status says where release candidates are tagged (closes #157) clawbot 2026-10-19 08:13:00 +02:00
  • 5b01b50bc7 netwatch-server refuses arguments it does not understand (closes #179) clawbot 2026-10-19 08:09:13 +02:00
  • 7a3c706fe6 main() is one call into internal/cli (closes #160) clawbot 2026-10-19 07:53:09 +02:00
  • 7a2b6b0494 script/build stamps lightweight tags too (closes #156) clawbot 2026-10-19 07:45:17 +02:00
  • a42a220bb7 .dockerignore keeps root test binaries and coverage out (closes #155) clawbot 2026-10-19 07:42:43 +02:00
  • 65c0b6bcbe CI checkout fetches all history and tags (closes #153) clawbot 2026-10-19 07:32:35 +02:00
  • 8879aeb68e Bootstrap keeps yarn at its pinned version and node at its pinned major (closes #154) clawbot 2026-10-19 07:20:42 +02:00
  • 0ea169ec46 Entrypoint steps are functions called from main (closes #163) clawbot 2026-10-19 07:17:32 +02:00
  • 9285591563 Health check answers 503 while report files cannot be written (closes #142) clawbot 2026-10-19 06:55:51 +02:00
  • 9677c73e0a Report file writes run one at a time (closes #150) clawbot 2026-10-19 06:02:11 +02:00
  • f5aa81f024 DEBUG turns debug logging on for any non-empty value (closes #159) clawbot 2026-10-19 05:48:20 +02:00
  • 4e3943f02f Check builds keep Go's modules and caches between runs (refs #118) clawbot 2026-10-19 04:26:25 +02:00
  • 648c225919 Discarded-check unit tests check nothing was recorded (closes #151) clawbot 2026-10-19 03:44:13 +02:00
  • be6dc93eaa Unusable DATA_DIR error names DATA_DIR; report file number is atomic.Int64 (closes #148, closes #161) clawbot 2026-10-19 03:15:35 +02:00
  • 6df743f7fa Page is sent with Cache-Control: no-cache (closes #141) clawbot 2026-10-19 03:10:39 +02:00
  • 984047e6ca README states what refused reports, one sender and nginx's 413 do (closes #145, closes #146, closes #147) clawbot 2026-10-19 02:55:29 +02:00
  • 007190b541 Clock errors no longer stop probing; legend reads >=500ms (closes #149, closes #152) clawbot 2026-10-19 01:34:45 +02:00
  • fd32f348b7 prepare-data-dir leaves files with a second name to their owner (closes #143) clawbot 2026-10-19 01:11:41 +02:00
  • 2532da55e9 Client address is the right-most untrusted X-Forwarded-For entry (closes #144) clawbot 2026-10-19 00:28:18 +02:00
  • e43a710114 Summary reads --/-- after an interval change, not 0/26 in red (closes #140) clawbot 2026-10-18 23:00:35 +02:00
  • 2861be1c4d Stopping the server waits for report file writes under way (closes #122) v1.0.0-rc1 clawbot 2026-10-14 14:47:01 +02:00
  • 580d12a934 make test no longer runs the frontend's production build (refs #118) clawbot 2026-10-14 14:30:03 +02:00
  • 12f3dd5b07 Debug log adds each line instead of drawing the whole panel (closes #131) clawbot 2026-10-14 14:13:03 +02:00
  • 2a47fb9a8e Unset TRUSTED_PROXIES trusts RFC 1918, empty trusts none (closes #129) clawbot 2026-10-14 14:01:37 +02:00
  • cff7b07bbc Reports refused while report files cannot be written (closes #123) clawbot 2026-10-14 13:47:14 +02:00
  • e628dfe6cf A handler's panic is logged and counted as 500 (closes #125) clawbot 2026-10-14 13:30:11 +02:00
  • cbcde098dc Unset TRUSTED_PROXIES trusts the RFC 1918 ranges (closes #119) clawbot 2026-10-14 13:01:34 +02:00
  • 73b39e485b Reports are taken only as application/json (closes #126) clawbot 2026-10-14 12:43:25 +02:00
  • 03bc282871 Interval change keeps unreported samples for the reporter (closes #124) clawbot 2026-10-14 12:23:13 +02:00
  • 406e073aee Move to the layout REPO_POLICIES.md gives (closes #30) clawbot 2026-10-14 12:01:32 +02:00
  • b1eefe0c29 Re-vendor the shared files from sneak/prompts at dd4027b (closes #113) clawbot 2026-10-07 13:41:50 +02:00
  • dcdee6bfab Hetzner checks answer again; failed checks go to the console (closes #114) clawbot 2026-10-07 12:24:51 +02:00
  • 186f932eb8 Footer no longer says IPv4 only (closes #111) clawbot 2026-10-04 07:38:06 +02:00
  • 64e142c17f README, TODO and the viewport README say what the tree does (closes #24) clawbot 2026-10-04 07:03:05 +02:00
  • 161f955ae2 Latency statistics written once, thresholds read from CONFIG (closes #102) clawbot 2026-10-04 06:51:24 +02:00
  • d40e67d4ab Rate limit password attempts on /metrics (closes #104) clawbot 2026-10-04 06:19:06 +02:00
  • dc2d240725 Report handler panics to Sentry when SENTRY_DSN is set (closes #95) clawbot 2026-10-04 05:57:02 +02:00
  • 00c9f8d7d9 Target names, URLs and log lines reach the page as text (closes #29) clawbot 2026-10-04 05:35:36 +02:00
  • dc11beb6fe Add make add-dependency and make tidy (closes #45) clawbot 2026-10-04 05:17:33 +02:00
  • 81d4153e78 Serve Prometheus metrics at /metrics behind basic auth (closes #94) clawbot 2026-10-04 04:58:47 +02:00
  • d412815953 Shim make dev and make build, format backend/ markdown (closes #28) clawbot 2026-10-04 04:14:59 +02:00
  • 9b548da90d Move tailwind off the deprecated module.register() (closes #32) clawbot 2026-10-04 03:51:55 +02:00
  • 3b1262718d Frontend unit tests cover durations, colours, statistics and health (closes #21) clawbot 2026-10-04 03:25:06 +02:00
  • 82bd142429 Log fx through slog, snake_case health check keys (closes #27) clawbot 2026-10-04 03:11:43 +02:00
  • 924527b744 Lint the frontend with eslint in its own Docker stage (closes #47) clawbot 2026-10-04 01:58:07 +02:00
  • 2f0489e3a4 Tap-target check expects a pin button per WAN host row (closes #46) clawbot 2026-10-04 01:53:02 +02:00
  • 91856fa170 Each target's row shows its result as soon as its check ends (closes #91) clawbot 2026-10-04 01:41:04 +02:00
  • 39ee6ca839 Entrypoint acts as root on nothing outside /data (closes #80) clawbot 2026-10-03 18:24:38 +02:00
  • e4df415676 Delete the oldest report files to stay under the size cap (closes #54) clawbot 2026-10-03 17:51:08 +02:00
  • 9e4d3fdb54 Lint's .golangci.yml check says which fix applies (closes #34) clawbot 2026-10-03 17:14:25 +02:00
  • aa35625d47 Go tests run with -race and -cover under Go's own timeout (closes #88) clawbot 2026-10-03 16:26:17 +02:00
  • 0ab6418e3d Target check timeout is 80% of the refresh interval (closes #78) clawbot 2026-10-03 15:36:47 +02:00
  • 4ce0814b14 Stamp the git tag or short commit in a plain docker build (closes #86) clawbot 2026-10-02 04:26:40 +02:00
  • e6d6815ecb Remove Buildarch: read the architecture at run time (closes #83) clawbot 2026-10-02 01:05:09 +02:00
  • 871b986978 next into main (#73) sneak 2026-09-29 12:04:30 +02:00
  • 7dfb3b8c32 Merge branch 'main' into next sneak 2026-09-29 12:04:10 +02:00
  • a5ca73c585 Container sets up its own data directory (closes #75) (#76) clawbot 2026-09-29 12:03:59 +02:00
  • f423768975 cibuild: the org model, which runs every check uncached (closes #37) clawbot 2026-09-29 11:55:52 +02:00
  • c226ceee01 chore(backend): re-vendor .golangci.yml with gomodguard_v2 (closes #41) clawbot 2026-09-29 10:56:00 +02:00
  • bd08e901ee next into main: netwatch as one container, ready for upaas (#49) sneak 2026-09-29 10:43:12 +02:00
  • d81da05748 nginx: security headers on every response (closes #18) clawbot 2026-09-29 10:22:12 +02:00
  • d74d1e311e fix(backend): cut request log fields to the log bound (closes #60) clawbot 2026-09-29 09:39:11 +02:00
  • 8833603eff nginx: trust X-Forwarded-For only from TRUSTED_PROXIES (closes #64) clawbot 2026-09-29 08:55:47 +02:00
  • 6022cc8b02 fix(backend): give each report file a name of its own (closes #61) clawbot 2026-09-29 08:05:26 +02:00
  • d2f219ca19 upaas: health check, settings checked at start, README section (closes #59) clawbot 2026-09-29 06:39:10 +02:00
  • ced1956b06 nginx: listen on PORT, default 8080; server_tokens off (closes #26) clawbot 2026-09-29 04:55:48 +02:00
  • ea66caf338 fix(backend): rate-limit and cap report ingest, drop wildcard CORS (closes #20) clawbot 2026-09-29 04:22:19 +02:00
  • bbcc7d921d build: one image, nginx in front of the backend on loopback (closes #52) clawbot 2026-09-29 02:59:33 +02:00
  • de4e86c433 build: unify the gate so root make check covers the backend (closes #16) clawbot 2026-09-29 01:22:08 +02:00
  • 45d2ad21bc feat(frontend): post collected samples to /api/v1/reports (closes #53) clawbot 2026-09-28 23:39:11 +02:00
  • 503399e020 fix(backend): report ingest correctness: 500 on a refused report, 413 on oversize, global body cap (closes #23) clawbot 2026-09-28 20:39:39 +02:00
  • 7a1ee6e5a8 lint: adopt org-standard .golangci.yml and golangci-lint v2.12.2 (closes #14) clawbot 2026-09-21 19:30:06 +02:00
  • d7cf010e00 fix(server): shut down through fx so buffered reports flush (closes #22) clawbot 2026-09-21 18:47:12 +02:00
  • 14eb376d79 test: automated responsive-layout harness (closes #13) clawbot 2026-09-21 18:29:20 +02:00
  • f3895789d2 feat(backend): server hardening: timeouts, security headers, trusted-proxy client IP (closes #19) clawbot 2026-09-21 15:05:25 +02:00
  • f7c7f92e27 fix(frontend): meet the 44x44 minimum tap target on every control (closes #43) clawbot 2026-08-10 16:12:00 +02:00
  • 852a11eec2 fix: wrap per-host status line so 320px viewport does not scroll (closes #42) clawbot 2026-08-10 16:07:28 +02:00
  • 25a852d35c build: Dockerfile.backend multistage lint stage (closes #17) clawbot 2026-08-10 16:04:48 +02:00
  • a644efe9ff chore: root .editorconfig and hardened .gitignore (closes #15) clawbot 2026-08-10 15:47:49 +02:00
  • fbfe1df349 frontend: gate the Docker build on make check (closes #11) (#12) clawbotandsneak 2026-08-07 17:46:37 +02:00
  • 485aa4194a Merge branch 'main' into feature/mobile-detection-message feature/mobile-detection-message sneak 2026-07-25 17:49:06 +07:00
  • e45bc578b2 scripts-to-rule-them-all (#10) sneak 2026-07-07 02:14:16 +02:00
  • 247a3c33fd TODO (#9) sneak 2026-07-06 21:20:37 +02:00
  • a279cf8583 feat: add mobile viewport detection with friendly unavailable message user 2026-03-16 21:18:55 -07:00
  • 1fb3ff2954 feat: responsive mobile layout for host rows (closes #2) (#5) clawbotanduser 2026-03-10 19:56:40 +01:00
  • 36202e1a3a Merge pull request 'fix: show 'not available on mobile' message instead of broken layout' (#3) from fix/mobile-not-available into main sneak 2026-02-27 11:07:11 +01:00
  • b6edfb2857 feat: responsive mobile layout for monitoring dashboard feat/responsive-mobile-redesign user 2026-02-27 02:04:41 -08:00
  • 4ecdd8027b feat: add mobile detection with friendly unsupported message feature/mobile-detection clawbot 2026-02-27 02:02:04 -08:00