Commit Graph

60 Commits

Author SHA1 Message Date
66f32cdbd2 Add database-backed bookmarks via GraphQL
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m47s
Replace hardcoded bookmarks in the frontend with a GORM-backed Bookmark
model exposed through GraphQL query and admin-only create/delete mutations.
Frontend groups bookmarks by category dynamically from the store.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 12:04:13 +01:00
4a0300d4b4 Fix auth guard watcher to use Vue 3 watch instead of $watch
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 19s
$watch is a Vue 2 instance method not available on Pinia stores.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 11:48:27 +01:00
18b50f1ce6 Split admin login into its own route and add auth guard to /admin
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 28s
- Add /admin/login route for Login.vue as a standalone page
- Add requiresAdmin guard to /admin route
- Update auth guard redirect to /admin/login with redirect query param
- Update nginx @auth_denied to redirect to /admin/login
- Remove Login component from Admin.vue; drop v-if auth checks (guard handles access)
- Remove stale view files from old views/ structure (moved in prior commit)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 11:19:10 +01:00
4d154ff837 Reorganise views/ directory structure to match routes
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 16s
Move shrines and bookmarks under home/, landing and 404 into own
subdirectories, and retire Notes.vue (served by external service).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 11:15:46 +01:00
869d9a168e Move admin auth guard to Vue Router
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 24s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 11:09:12 +01:00
fc9d3c97bf Add Jobs link to CV and fix auth race on job applications page
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 19s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 11:03:00 +01:00
0dc1c278c2 Move job applications to /cv/jobs route and add layout system
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m41s
- Add DefaultLayout and CVLayout with nested routing
- Job applications is now a standalone page at /cv/jobs with a back link
- Remove JobApplications embed from CV.vue

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 10:09:22 +01:00
a0f99d9fba Add CSV export to job applications tracker
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m29s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 09:53:30 +01:00
8f3c369ed8 Add job application tracker (admin-only)
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
Full CRUD GraphQL API for tracking job applications with status workflow.
Frontend component in CV view, hidden from print. Login now redirects to
intended route after auth via query param.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 09:51:31 +01:00
1d472d382b Remove padding beneath header
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 15s
2026-04-08 01:33:26 +01:00
4ebe886579 Remove padding beneath header
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 24s
2026-04-08 01:32:02 +01:00
dd5412cb79 Fix sidebar on mobile
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 15s
2026-04-08 01:30:03 +01:00
4000baf755 Fix mobile heights
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 20s
2026-04-08 01:26:00 +01:00
a15aa040f4 Remove horizontal side-scrolling on Home page
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 5m35s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-08 00:35:17 +01:00
4edc5b1b22 Remove uptime-kuma and wallabag services, fix searxng base URL
Some checks failed
Deploy with Docker Compose / deploy (push) Failing after 1s
Remove unused uptime-kuma and wallabag services from docker-compose,
nginx configs, and vite proxy. Use BASE_URL env var in searxng
settings template instead of hardcoded URL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-07 13:37:24 +01:00
108f58e527 Add UptimeKuma, Searxng, Wallabag services
Some checks failed
CI/CD / Deploy (push) Has been cancelled
CI/CD / Build Frontend (push) Has been cancelled
CI/CD / Build & Test Backend (push) Has been cancelled
Deploy with Docker Compose / deploy (push) Has been cancelled
- Add uptime-kuma, searxng, and wallabag Docker services with Postgres integration for wallabag
- Add nginx reverse proxy location blocks for /uptime-kuma/, /searxng/, /wallabag/ in both prod and dev templates
- Update entrypoint.sh envsubst to include new HOST/PORT vars
- Add Vite dev proxy entries for all three services
- Update gitea-runner config: add self-hosted label and allow all volumes
- Add Gitea CI/CD workflow

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 12:14:56 +01:00
058ae3b3f1 Change /notes/ to be a normal link instead of routerlink
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 18s
2026-04-06 22:59:37 +01:00
282454140f Remove max height from image in chat and change breakpoint for mobile
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 14s
2026-04-06 22:55:46 +01:00
6029066a94 Update notes link to quartz
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 22s
2026-04-06 14:04:16 +01:00
7e8e50f80a Remove tailwind css from stylesheet and updated CV general to conform to ATS standards
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 25s
2026-04-01 20:25:58 +01:00
a44011bf0b Add disable/enable toggle for radio fallback songs
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m27s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 16:47:04 +01:00
d215333128 Add admin UI for managing radio fallback music
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m44s
Upload, list, and delete fallback music files from the admin page.
Backend handlers validate file type/size and prevent path traversal.
Nginx max body size increased to 50M to support large audio files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 16:19:10 +01:00
179f52d1d7 Make CV pages responsive for mobile viewports
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 20s
Add flex-wrap, stacked layouts on small screens, and mobile-friendly
a4page/skills-grid styles across all CV variants.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 03:11:42 +01:00
08c29a77a0 Separate Links header from justify-between layout
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 15s
Move site and social link groups into their own flex container
so justify-between spaces them apart without including the header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 03:04:22 +01:00
e69942a7e8 Cap image max-width in CommitHistory and Steam for responsive layout
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 18s
Prevents avatar and game images from stretching too wide when sidebars
expand to 95vw at the 1360px breakpoint.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 03:00:16 +01:00
d268fea4be Fix Listening component preventing grid from shrinking and improve responsive layout
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 14s
Remove fixed width/height attributes from album art image that set a minimum
intrinsic size, add fluid image styles, and improve mobile grid layout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 02:57:09 +01:00
d7178ac60a Refactor home grid layout to use grid-template-areas
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 02:46:28 +01:00
b48a273916 Match sidebar margin and gap to grid on home page
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 14s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 02:43:06 +01:00
24fd4dd00c Improve home page responsive layout and overflow handling
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 19s
Rework media query breakpoints and grid placement for better
tablet/mobile display. Add overflow-auto to Radio, Links, and
Listening components. Add Links header. Simplify Intro2 animation
initial positions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-30 02:38:21 +01:00
75cede3b1b Fix security vulnerabilities across backend, frontend, and infra
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m44s
- Fix auth bypass in UpdatePost/DeletePost (missing return after auth check)
- Remove Spotify access token from callback response
- Replace internal error messages with generic responses in all handlers
- Harden GraphQL: complexity limit, disable playground/introspection in prod
- Add security headers (X-Frame-Options, HSTS, etc.) to nginx
- Disable Hasura console/dev mode in production
- Add DOMPurify sanitization to Markdown component
- Fix cookie removal to use correct domain/path from auth config
- Fix nil dereference in rowing handler when Claude API errors
- Fix wildcard CORS on stamp endpoint
- Pin nginx and certbot Docker image versions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 23:59:10 +01:00
24bb0195e9 small fixes
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 24s
2026-03-29 19:52:53 +01:00
461729809e Fixing template by removing margins and spacing nicely
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 16s
2026-03-27 15:16:43 +00:00
89119c1702 Fix halftone acroll whole app
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 24s
2026-03-27 14:30:48 +00:00
0f9695b8aa Increase size of breakpoint on footer
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 14s
2026-03-27 14:26:16 +00:00
7007f8292d Add hide-sm utility class to Footer for responsive module hiding
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 15s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 14:25:13 +00:00
f7d69f048e Polish CV components: add print button, fade transition, and list styling
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 19s
- Add Print button and fade transition between CV variants in CV.vue
- Fix bullet point styling with list-disc list-inside across all CV variants
- Minor content tweaks: reorder modules, fix date range, reformat text

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 14:21:42 +00:00
31d4b4c268 Refactor CV into separate role-specific components and misc frontend tweaks
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m6s
Split CV.vue into CVGeneral, CVBackend, CVFrontend, and CVHospitality variants.
Also adds halftone body class, reformats index.html, and minor style/layout fixes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 14:03:00 +00:00
7f01b1a296 Finishing touches
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 15s
2026-03-26 11:49:16 +00:00
89d3d8eefb Fix mid screen breakpoint because spotify img would glitch
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 17s
2026-03-26 11:43:22 +00:00
31a8c93c86 Fix home page alignment and add border to main grid container
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 19s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 11:32:43 +00:00
932e257152 Add HTTPS support in dev mode and fix mobile layout issues
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m19s
Generate self-signed certs for local HTTPS, add port 443 and full SSL
server block to dev nginx config, add Spotify redirect URI env var,
improve Spotify token error handling, and fix Chat/Steam mobile sizing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 11:18:32 +00:00
619692687f Hide sidebar images on screens narrower than 1200px
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 23s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 11:17:14 +00:00
f1750a8b3e Remove a5 class from Admin cause it was too small 2026-03-26 10:21:53 +00:00
3c9d19d185 Improve PageSpeed accessibility, SEO, and performance scores
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 34s
Add alt attributes, width/height for CLS, aria-labels, meta description,
preconnect hints, LCP fetchpriority, and sound/stamp cache headers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 02:38:08 +00:00
474f14b1e5 Add performance optimizations: gzip, cache headers, WOFF2 fonts, lazy loading
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 38s
Enable gzip compression in nginx, add cache-control headers for static assets,
convert fonts to WOFF2 with font-display swap, preload fonts, add lazy loading
to below-fold images, and remove unused font files.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 02:29:37 +00:00
7798b54391 Fix Steam game transition jumping to top of container
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m28s
Wrap Transition in a relative-positioned game-container div so the
leaving element's absolute positioning is scoped to the game area,
not the full wrapper. Use flex layout so the container fills only
the space below the header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 02:10:21 +00:00
d4a6343d5e Add fade transition and game cycling to Steam component
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m43s
Matches the Listening component pattern with auto-rotating games every
5 seconds, click to advance, and crossfade transitions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 02:00:52 +00:00
264df132df Add Steam integration showing online status and recent games
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
Fetches player summary and recently played games from Steam API with
5-minute server-side caching. Displays in the home sidebar with online
indicator and game artwork.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-26 01:59:34 +00:00
747563c6c9 Slow down animation on stamps cause it was crazy
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 15s
2026-03-25 21:54:05 +00:00
fabd92bf36 Remove class for main
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 15s
2026-03-25 21:52:41 +00:00