Commit Graph

213 Commits

Author SHA1 Message Date
f881e03055 refactor: implement better transitions, better component layout organization, fixup prerender CSR asset ability
- Replace simple fade with shared-axis slide transitions (exit left,
enter right)
- Persist background/theme toggle across navigations using
view-transition-name
- Skip transitions for admin routes (separate layout system)
- Extend prerendered asset serving to support __data.json files with
MIME detection
- Extract TagChip component from ProjectCard for reusability
- Remove AppWrapper component in favor of direct page-main class usage
- Disable removeOptionalTags in HTML minifier to prevent invalid markup
2026-01-13 18:52:20 -06:00
a849f91264 fix: suppress progress updates when not in TTY
Prevents escape codes from polluting CI/non-interactive logs
2026-01-13 16:45:20 -06:00
a6cc0b8e66 feat: add request ID propagation from Rust to Bun with structured logging
- Forward x-request-id header through proxy and API calls
- Store RequestId in request extensions for downstream access
- Add AsyncLocalStorage context to correlate logs across async boundaries
- Improve migration logging to show pending changes before applying
- Reduce noise in logs (common OG images, health checks)
2026-01-13 16:42:14 -06:00
6d8766d3a6 refactor: standardize structured logging across Rust and TypeScript
Convert string interpolation to structured fields in tracing/LogTape calls. Add target prefixes (rust::, bun:) to differentiate processes in combined logs.
2026-01-13 15:33:08 -06:00
fe23967c5e feat: redirect .html extensions to clean URLs 2026-01-13 15:19:52 -06:00
ec6bb4ebfb refactor: replace shell entrypoint with TypeScript, add DB retry logic
- Migrate Docker entrypoint from inline shell script to TypeScript for better maintainability
- Add exponential backoff DB connection retry (prod only, dev fails fast)
- Increase healthcheck start-period to account for DB warmup
2026-01-13 15:08:38 -06:00
eabe866d31 feat: enforce canonical URLs by redirecting trailing slashes 2026-01-13 14:17:42 -06:00
99f9b5e303 feat: add View Transitions API with persistent backgrounds
- Add fade in/out page transitions using View Transitions API
- Move background/dots to root layout for persistence across routes
- Hide native scrollbar immediately to prevent FOUC
- Set body background in theme script to prevent flash
- Increase inline style threshold for better initial render
2026-01-12 13:27:14 -06:00
97bef535a3 feat: replace PGP modal with Discord profile modal
- Remove PGP key modal component in favor of dedicated /pgp page
- Add Discord profile modal with avatar, banner, and copy username
- Convert PGP key link to navigate to dedicated page instead of modal
- Add focus-visible styles for keyboard navigation accessibility
2026-01-12 04:10:45 -06:00
6f538b599f feat: add production API commands for login and authenticated requests 2026-01-12 03:52:19 -06:00
9d231e6fdc feat: add ISR cache with stale-while-revalidate pattern
Implements in-memory caching for SSR pages using moka with:
- Configurable fresh/stale TTLs (60s/300s defaults)
- Background refresh for stale entries
- Cache invalidation on project/tag mutations
- Pre-cached icon collections on startup
- Skips cache for authenticated requests
2026-01-12 03:41:06 -06:00
462b510e14 feat: add icon picker for tags with Iconify integration
- Add icon field to tag creation/update API and handlers
- Install @iconify packages (json, types, utils) as production deps
- Build IconPicker component for tag admin UI
- Fix apiFetch lazy initialization for build-time safety
- Update Docker to install production dependencies for SSR runtime
2026-01-07 20:57:12 -06:00
dd1ce186d2 refactor: consolidate HTTP client for TCP/Unix socket handling
Extract reqwest client creation into dedicated HttpClient abstraction that handles both TCP and Unix socket connections transparently. Simplifies proxy logic by removing duplicate URL construction and client selection throughout the codebase.
2026-01-07 14:34:32 -06:00
dcc496c979 chore: resolve eslint/svelte-check lints/warnings 2026-01-07 14:00:41 -06:00
cf599d09d6 refactor: reorganize Rust codebase into modular handlers and database layers
- Split monolithic src/db.rs (1122 lines) into domain modules: projects, tags, settings
- Extract API handlers from main.rs into separate handler modules by domain
- Add proxy module for ISR/SSR coordination with Bun process
- Introduce AppState for shared application context
- Add utility functions for asset serving and request classification
- Remove obsolete middleware/auth.rs in favor of session checks in handlers
2026-01-07 13:55:23 -06:00
4663b00942 feat: add site settings management with identity and social links
- Add site_identity and social_links database tables
- Implement GET/PUT /api/settings endpoints (GET public, PUT authenticated)
- Replace hardcoded homepage content with database-driven settings
- Add admin settings UI with identity and social links editing
2026-01-06 22:48:10 -06:00
9ab22ea234 feat: add prerendered page serving from embedded build artifacts
Adds support for serving SvelteKit prerendered pages (e.g., /pgp, /about) directly from embedded build artifacts in Rust, bypassing Bun proxy. Handles multiple path patterns (direct HTML, index.html, root).
2026-01-06 22:01:33 -06:00
80061aad7a feat: add PGP public key page with multiple access endpoints
- Add dedicated /pgp page with key viewer and download options
- Support CLI-friendly endpoints (/publickey.asc, /pgp.asc, /.well-known/pgpkey.asc)
- Detect user-agent to serve raw key to curl/wget or HTML to browsers
- Add modal component for quick key access from homepage
- Embed static key file in Rust assets for efficient serving
2026-01-06 21:35:41 -06:00
5c4d3b6efa feat: add light/dark theme toggle with system preference detection
- Implement theme store with localStorage persistence
- Add ThemeToggle component with animated icon transitions
- Update color system with semantic tokens for light/dark modes
- Add blocking script in app.html to prevent FOUC
- Apply theme-aware styling across all public and admin pages
2026-01-06 20:31:24 -06:00
0149dc1df9 refactor: remove unused public projects page 2026-01-06 20:31:11 -06:00
2251bd276c refactor: implement full projects CRUD, move icons onto tag schema
- Remove priority field and sorting, switch to updated_at DESC
- Add icon field to tags table
- Split project description into name and short_description
- Implement full CRUD for projects (create, update, delete)
- Add admin stats endpoint (project counts by status)
2026-01-06 19:40:09 -06:00
cacee9ba14 feat: add tag color customization with hex picker
- Add nullable color column to tags table with hex validation
- Build ColorPicker component with preset palette and custom hex input
- Apply tag colors to project cards via border styling
- Update all tag API endpoints to handle color field
2026-01-06 18:17:28 -06:00
e32c776b6d feat: add homepage projects showcase with mock data
- Add ProjectCard component with tag icons and relative timestamps
- Create mock projects data with server-side icon rendering
- Fix IconPicker reactivity using SvelteMap
- Add ESLint suppressions for @html tags
2026-01-06 17:59:08 -06:00
eca50ef319 feat: add Iconify-based icon system with search and picker UI
- Replace Font Awesome with Iconify (@iconify/json collections)
- Add IconPicker component with search, collection filtering, lazy loading
- Create authenticated icon API endpoints (search, collections, individual icons)
- Update projects page to render icons via Icon.svelte component
- Pre-cache common icon collections (Lucide, Simple Icons, etc.) on startup
2026-01-06 16:01:09 -06:00
6657d00c4e fix: avoid using bloated SVG/apple-touch-icon SVGs 2026-01-06 14:56:56 -06:00
b3dd1954d3 refactor: formatting and accessibility improvements across admin components
- Enforce consistent code formatting via ESLint rules
- Add accessibility enhancements (input IDs, labels, ARIA attributes)
- Replace Svelte store initialization patterns with reactive $effect
- Use $derived for reactive computed values
- Update error-codes and og-types indentation to spaces
- Add TypeScript definitions for html-minifier-terser
- Use resolve() for internal links in error and login pages
2026-01-06 14:39:21 -06:00
ae83569fd7 feat: add URL-based tab navigation for admin settings 2026-01-06 13:36:35 -06:00
8dcb42184a fix: use Vite-imported fonts for OG image generation instead of node_modules fs reads
Fixes OG image generation in production Docker deployments
by using SvelteKit's read() with Vite-imported font URLs instead of
runtime fs reads
from node_modules. Also copies client assets to Docker image for
availability.
2026-01-06 13:29:33 -06:00
4667799457 feat: add HTML minification for production builds 2026-01-06 13:26:39 -06:00
be718976d6 feat: add favicons, support embedded assets properly
- Refactor asset serving to check embedded assets before proxying
2026-01-06 12:26:51 -06:00
c6dd1dffb0 feat: add cookie-based session authentication system
- Add admin user management with Argon2 password hashing
- Implement session management with ULID-based tokens and 7-day expiry
- Add authentication middleware for protected routes and API endpoints
- Forward validated session to SvelteKit via trusted X-Session-User header
- Refactor admin panel to use server-side authentication checks
2026-01-06 11:33:38 -06:00
16bf2b76f3 feat: add admin panel with project and tag management
- Full CRUD interface for projects with GitHub integration and tagging
- Real-time event log with expandable metadata viewer
- Reusable component library (Badge, Button, Input, Modal, Table,
TagPicker)
- Server-side API client with Unix socket and HTTP support
- JWT-based authentication with Svelte 5 reactive stores
- Settings management for social links and site identity
- Remove /admin path from tarpit to allow legitimate access
2026-01-06 10:07:59 -06:00
045781f7a5 feat: add comprehensive tagging system with cooccurrence tracking
- Add tags, project_tags, and tag_cooccurrence tables with proper indexes
- Implement full CRUD API endpoints for tag management
- Add tag association endpoints for projects with automatic cooccurrence updates
- Include related tags and project filtering by tag functionality
2026-01-06 03:18:23 -06:00
b4c708335b feat: add PostgreSQL database integration for projects
- Add SQLx with Postgres support and migration system
- Create projects table with status enum and auto-updated timestamps
- Implement database queries and API response conversion layer
- Add Justfile commands for database management and seeding
- Integrate health checks for both Bun and database connectivity
2026-01-06 02:07:42 -06:00
5fc7277cd7 feat: add fade-in transition for dots canvas background 2026-01-06 01:13:30 -06:00
3c6f61c4e4 feat: add prerendered error pages with Rust integration
- Prerender 20+ HTTP error codes (4xx/5xx) at build time
- Embed error pages in binary and serve via Axum
- Intercept error responses for HTML requests
- Add transient flag for retry-worthy errors (502/503/504)
2026-01-06 00:43:00 -06:00
48ac803bc3 feat: parallelize check tasks with real-time progress output 2026-01-05 19:34:02 -06:00
2a710d584e feat: add connection tarpit for malicious bot traffic
Implements slow-drip response handler for known bot paths (wp-admin, phpmyadmin, etc.) to waste attacker resources. Includes per-IP and global connection limits, configurable delays, and random chunking. Also applies clippy lint fixes across codebase.
2026-01-05 18:19:09 -06:00
553bae5a7f fix: properly handle binary proxied responses, enforce bun usage, proper mobile-friendly frontend 2026-01-05 15:15:08 -06:00
96595b073d refactor: replace sveltekit-og with native Satori implementation
- Remove @ethercorps/sveltekit-og and bits-ui dependencies
- Implement direct Satori + Resvg rendering pipeline
- Add OgImage.svelte component for template generation
- Create /internal/ogp preview page for development
- Load fonts from node_modules via fs for production compatibility
- Add 2s startup delay before OG image regeneration
2026-01-05 15:15:08 -06:00
81d9541b44 feat: add health checks, OG image generation, and R2 integration
- Implement health check system with caching and singleflight pattern
- Add OG image generation via Satori with R2 storage backend
- Configure Railway deployment with health check endpoint
- Add connection pooling and Unix socket support for Bun SSR
- Block external access to internal routes (/internal/*)
2026-01-05 03:16:55 -06:00
9de3c84f00 feat: add Docker containerization with multi-stage build
Includes .dockerignore, Dockerfile with cargo-chef caching, and Justfile commands for building/running containerized app. Updates console-logger to support both JSON and pretty-printed logs based on LOG_JSON env var.
2026-01-04 20:23:11 -06:00
edf271bcc6 feat: add request validation and HEAD method support
- Validate Content-Type for API requests (application/json only)
- Add HEAD method handlers for all routes
- Add 1MB request body limit
- Improve method not allowed responses with Allow header
2026-01-04 19:21:53 -06:00
32f1f88a90 feat: embed SvelteKit client assets in Rust binary
- Add include_dir for serving /_app static bundles from binary
- Add console-logger.js for structured JSON logs from Bun
- Fix API routing edge cases and add method restrictions
2026-01-04 19:16:08 -06:00
d86027d27a feat: add Rust reverse proxy with JSON logging
- Axum-based API server with Unix socket and TCP support
- Custom tracing formatters for Railway-compatible JSON logs
- SvelteKit hooks and Vite plugin for unified logging
- Justfile updated for concurrent dev workflow with hl log viewer
2026-01-04 18:21:00 -06:00
07ea1c093e refactor: massively simplify to svelte with web/ directory, prepare for backend 2026-01-04 15:15:25 -06:00
af81d8e048 refactor: large refactor around monorepo
Just a commit point while I'm testing stuff. Already decided at this
point to simplify and revert away from PayloadCMS.
2026-01-04 13:18:34 -06:00
31b1804fc9 refactor: redesign homepage navigation and social links
- Move navigation to top-right header
- Replace simple underline links with styled card-based social links
- Add RSS and GitHub icons to header
- Remove About section from top nav
2026-01-03 13:45:38 -06:00
ac7618f2fd feat: redesign homepage with Radix UI and add dev environment defaults
- Replace title/tagline homepage with social profile design
- Add Radix UI Themes + icon libraries for modern UI components
- Provide sensible dev defaults for DB/secrets (no .env required)
- Add production safety checks for critical env vars
- Make optional features (cron, healthcheck) gracefully skip when unconfigured
2026-01-01 23:41:35 -06:00
da366b9538 chore: migrate from Tailwind v3 to v4 and upgrade dependencies
Major changes:
- Upgrade Tailwind CSS from v3 to v4 with @tailwindcss/postcss
- Remove deprecated Tailwind v3 configuration and PostCSS plugins
- Upgrade Zod from v3 to v4
- Update React Markdown and other dependencies to latest versions
- Remove @plaiceholder, @headlessui, and other unused dependencies
- Replace SCSS with standard CSS globals
- Add font packages (@fontsource-variable) for better typography
- Consolidate Prettier configuration to .prettierrc
- Remove legacy contact page and custom Payload SCSS
- Add Mantine hooks and Lucide React for improved UI components
2025-10-26 01:38:22 -05:00