This devlog covers eleven releases of my myOS Portfolio Platform, v2.41 to v2.51, all on 11 November. I moved shared infrastructure into GA Kit in three steps (visitor-IP detection under one rule and proxy setting, admin helpers with a mail switch and AI cost meter, and a single home for secrets at rest), fixed a security issue so only the last X-Forwarded-For hop is trusted, and added a PHPUnit and node:test suite as a CI job that surfaced four bugs immediately. I also removed dead code and old v1 migrations, improved front-end performance, and reworked the phone layout with a scrolling tab bar and several mobile fixes.
The largest part of this stretch is GA Kit, which I built in three steps. GA Kit Net brings visitor-IP detection under one rule and one proxy setting. Step 2 adds admin helpers, a mail switch and an AI cost meter. Step 3 gives secrets at rest a single home. Along the way I fixed a security issue: only the last X-Forwarded-For hop is now trusted.
In v2.47.0 I added a unit test suite with PHPUnit and node:test and made it a CI job. The tests found four bugs right away. I also removed dead PHP code, leftovers from manual networking and old v1 migrations, and cleaned up JS and CSS. The hero scrub now reads the layout only after a scroll, and the ASCII effect runs on sprites.
On the phone, the tab bar now holds every entry in one row that scrolls sideways. The header and menu have new motion, and the menu runs edge to edge. I also fixed chat with the keyboard open, the CV form, a doubled menu and the references. The chat assistant is now called J.A.R.V.I.S.
GA Kit: one visitor-IP rule, one proxy setting and one place for secrets at rest
Admin helpers, a mail switch and an AI cost meter
Security fix: only the last X-Forwarded-For hop is trusted
Unit tests with PHPUnit and node:test in CI, plus four bug fixes they surfaced
Dead code and old v1 migrations removed; front-end performance improved
Phone tab bar in one scrolling row, new header and menu motion, several mobile fixes
Application form saves links without https again; the chosen rejection reason is kept
Dashboard lists with filter chips and one tab style; new cockpit status symbol as a rack unit with three LEDs
First published on giannialagna.me
