Changelog
All changes and updates to this site.
Light mode code blocks and site improvements
- Code blocks now use a light theme (github-light) in light mode, dark theme (github-dark) in dark mode
- Replaced runtime highlight.js with Shiki build-time syntax highlighting for faster page loads
- Copy button on code blocks adapts styling for light and dark modes
- Added missing excerpt to queue safety article for the articles listing page
- Added comprehensive Playwright test suite (76 tests across 8 files)
Site improvements: fonts, favicon, SEO, and more
- Updated typeface to Inter (body) and system-ui (headings)
- Added JS favicon and default OG image for social sharing
- Added robots.txt and llms.txt for search engine and AI crawler discoverability
- Added OG meta tags on all article pages
- Fixed redirect chains (302 to 301, trailing slashes)
- Added changelog page
- Improved RSS feed with full article content
- Auto-calculated reading time on article cards
- Added recent article suggestions to 404 page
- Added redirect for truncated Twitter URL
- Excluded future-dated articles from builds
Published: Improving Queue Safety in Laravel
- Published queue safety audit with 14 findings and 9 community-reported issues
- All verified against Laravel Framework v13.4.0 with links to real GitHub issues spanning 2015 to 2026
- Includes SafeJob base class, AI audit prompt, and actionable safeguards
- Documents root cause of two Vapor billing incidents ($140 in 2019, $218.90 in 2023)
Updated developer bio
Removed "full-stack" from developer bio on index and about pages.
Published: Why Your Laravel Jobs Might Retry Forever After an OOM
Published a fact-checked blog post documenting Laravel Issue #58207 with end-to-end proof on Laravel 13.4.0. Includes before/after test results, source code verification, and links to the public reproduction repo.
Share button on articles
Added a copy-to-clipboard button next to article titles. Copies the short link URL with a toast notification.
Dynamic short link redirects
Short links are now generated at build time from article frontmatter instead of being hardcoded in netlify.toml. Adding `shortLink: "/my-link"` to any article automatically creates the redirect.
Site polish and mobile fixes
- Animated JS logo with hover typing effect
- Clickable topic tags
- Tag filter bar on articles page
- Tech filter on projects page
- Collapsible table of contents
- TLDR summaries
- Service worker for offline support
- Lazy-loaded syntax highlighting
- Fixed touch targets for mobile accessibility
- Fixed dark mode flash on navigation
Site rebuilt from Statamic to Astro
- Complete rebuild using Astro 6 with React islands
- Migrated 14 articles from Statamic SSG
- WebGL hero canvas
- Spotify-inspired dark theme with 8 colour themes
- Ctrl+K search with Fuse.js
- Reading progress bar
- Table of contents
- Copy-to-clipboard code blocks
- RSS feed and sitemap
- Konami code easter egg
- 301 redirects for all old URLs
Final articles on Statamic
- "Windows vs Mac for Claude Code: The Benchmark That Changed How I Work"
- "14 More PRs Merged Into Laravel"
- "Laravel PR #59323 Post-Mortem"
Published Laravel contribution articles
- "FragHub.gg" project showcase
- "25 Laravel Bug Fixes, Tested, Verified, Ready to Merge"
- "Update: Unblocked, 25 Laravel Fixes and What's Next"
- "20 PRs Merged Into Laravel in 12 Days"
Published project showcases
- "I Built a Free Poker Timer App"
- "Barcoder: A Free Barcode Scanner and Creator"
Published two career articles
- "Why KPIs Work Best When People and Customers Come First"
- "Why I Chose to Build My Own Apps Instead of Taking a Traditional Job for Now"
Published: Dark mode selector with Alpine.js and Tailwind
Tutorial on adding a dark mode selector to Alpine.js and Tailwind CSS apps.
Site launched on Statamic
- Launched joshsalway.com using Statamic SSG on Netlify
- Published first two articles: "Using Laravel Constants in React with Inertia.js" and "Using Laravel Enums in React with Inertia.js"