Commit graph

19 commits

Author SHA1 Message Date
3b64839cbd
Add crossorigin to font preloads and add inline emoji favicon
All checks were successful
Build And Deploy / build-and-deploy (push) Successful in 41s
2026-02-04 16:12:53 -08:00
1714225d00
Add CI/CD build and deploy scripts, along with docker-compose, HAProxy config, and a certbot
Some checks failed
Build And Deploy / build-and-deploy (push) Has been cancelled
merge hook. Set up env.example generation. Add doiuse dev dependency.
2026-02-04 16:11:51 -08:00
0350a4b8e3
Modularize CSS; add reset, theme and fonts
Introduce reset.css and theme.css and refactor style.css
to import them via layers; add Unscii font files and preload links.
Add RSS XSL/CSS and a css-test page; remove legacy snes.min.css.
Tweak BaseLayout and contact layout (preloads, grid gaps). Rename index.astro to parallax.astro and
created new basic index page. Improve input styles and contact form placeholders
2026-02-01 10:08:58 -08:00
7dd61775b3
Switch to local Unscii font and begin work on new stylesheet
Remove Google Fonts and the old external stylesheet link. Add (inline for now)
@font-face rules for unscii fonts and new link/p/ul styles, and set the
root font to unscii16. Minor UI tweaks: style the skip link background,
remove the "Tools" nav item for now, fix the contact page title and link
markup, and replace the homepage copy with an "Under Construction"
message.
2026-01-27 15:18:10 -08:00
e67e72ea66
Handle reset and OTP errors in contact form
Add a "reset" action to the form and clear session data when invoked.
Return a structured OTP error (nextAction: send_msg, field: otp, error: ...)
instead
of throwing so the UI can stay on the verification step. Remove noisy
console logs and include SMS provider message in service errors. Update
contact.astro to surface field-level errors, split the form into
fieldsets, add a "Go Back" reset button, and make small UI/layout tweaks.
2026-01-27 10:47:04 -08:00
8e35387841
Switch to Cap invisible widget, add form drafts to middleware, and improve OTP
validation

Use the Cap client widget in the contact UI with status icons and auto-solve,
replacing the capwidget element. Normalize and tighten phone validation by
splitting
normalizePhone and isValidPhone in the Otp lib and use it in contact action
validation. Replace loose text validation with a character-stripper helper.
Also bump several dependencies and adjust middleware to save and restore form
data for
form actions.
2026-01-27 09:49:06 -08:00
f7bdfd3cb8
Add middleware to persist form actions in session and follow POST-REDIRECT-GET
form submission pattern
2026-01-22 14:05:29 -08:00
f2f42a84b5
Add contact actions and migrate contact form to Astro actions
Implement send_otp and send_msg handlers with server-side validation,
captcha verification, OTP generation/verification, rate limiting,
session-backed multi-step flow, and SMS gateway integration.

Replace broken contact endpoint and types with Astro server actions;
delete endpoints/contact.ts, types/ContactForm.ts and
src/components/ContactForm.astro. Update pages/contact.astro to use
astro:actions and improve captcha handling (listen for solve and set
hidden input). Adjust OTP timing (step 60s → 300s, VALID_PAST_OTP_STEPS
5 → 1). Add validator, @types/validator, Prettier and
prettier-plugin-astro; include .prettierrc.mjs in tsconfig include.

Add Prettier config for Astro
2026-01-22 14:04:27 -08:00
608348a5a5
More progress but need to fully refactor into Astro action and take advantage of
all the boilerplate
2026-01-19 18:10:33 -08:00
f5eac7145c
Progress on contact form refactor from JS into Typescript 2026-01-13 22:24:46 -08:00
72e57fb7ff
Break out contact form into separate component and implement OTP and rate
limiting, add iconify-icon dependency

Add src/components/ContactForm.astro implementing OTP verify/send flows and
server-side validation Add src/lib/Otp.ts (otplib-backed) with per-hour OTP and
per-week message rate limits and helper functions Expose OTP_SUPER_SECRET_SALT
in astro.config and add otplib Rename src/lib/cap.ts to src/lib/CapAdapter.ts
and update imports Replace inline contact page logic with ContactForm and adjust
SMS client Add iconify-icon dependency
2026-01-09 10:25:15 -08:00
d5a7887ad2
Add health check API route
Expose GET /health that returns JSON {status, timestamp}. Returns 200 on success
and 500 on error. Disable prerender for the endpoint.
2026-01-09 10:21:28 -08:00
bdf4f9a051
Add support for cap, a pow captcha, and implement on contact form 2026-01-06 20:50:30 -08:00
22c2bc1492
docker image building and docker compose support 2026-01-06 08:08:12 -08:00
f641dac69b
work on porting over contact form from old site, also added initial db support
to use later
2026-01-06 08:07:19 -08:00
8d989ef36f
new minimal retro theme, progress on parallax hero, refactor into semantic html,
add htmx and alpine, etc
2026-01-04 21:36:24 -08:00
43e8dcff5e
feat: add parallax infinite scroll hero for index 2026-01-02 22:18:54 -08:00
e9a666621f
Basic scaffolding of new personal site 2026-01-01 21:11:18 -08:00
houston[bot]
0e01ed5493
Initial commit from Astro 2025-12-19 14:06:51 -08:00