Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
b43143e
ci: rerun deploy after workflow fix
Iautner Sep 19, 2025
936880f
ci: rerun deploy after workflow fix
Iautner Sep 19, 2025
2507e93
ci: keep updated deploy workflow
Iautner Sep 19, 2025
b79a9da
fix(ci): use Jekyll relative_url for assets, manifest, and service-wo…
Iautner Sep 19, 2025
ca0d279
fix(ci): use relative (no-leading-slash) asset paths so beta copies w…
Iautner Sep 19, 2025
c46cf13
ci: trigger deploy (ensure latest templates used)
Iautner Sep 19, 2025
9471630
fix(ci): use relative path for bootstrap-icons.svg in links include
Iautner Sep 19, 2025
a25f34b
fix(ci): make bootstrap-icons.svg href relative (no-leading-slash)
Iautner Sep 19, 2025
623ec07
added .history and /node_modules to .gitignore
Iautner Sep 30, 2025
0be189b
Modernize PWA with enhanced UI, manifest, and service worker
Iautner Sep 30, 2025
ad59552
Refactor UI for cleaner design and improved accessibility
Iautner Sep 30, 2025
8b9340a
Refactor layout and CSS for simplified structure
Iautner Sep 30, 2025
9fd5012
Redesign link cards and update glass background styles
Iautner Sep 30, 2025
e972195
Update custom.css
Iautner Sep 30, 2025
8a6d200
Refactor link card styles and simplify links markup
Iautner Sep 30, 2025
8673a7a
Update custom.css
Iautner Sep 30, 2025
ae4dabd
Refine layout and card styles for improved responsiveness
Iautner Sep 30, 2025
ced48be
Aggressive CSS fixes for mobile layout and button centering with stro…
Iautner Sep 30, 2025
edf810e
Improve button sizing and logo/text layout for better mobile UX
Iautner Sep 30, 2025
f6e8800
Fix button content centering - center logo and text within buttons
Iautner Sep 30, 2025
ccc4b15
Add perfect text alignment and brand-specific logo colors
Iautner Sep 30, 2025
8e76df7
Fix hover effects to preserve brand colors and restore proper text ce…
Iautner Sep 30, 2025
b82c93c
Center logo and text as a grouped unit with proper spacing
Iautner Sep 30, 2025
b13cb7c
Fix light mode support with proper CSS cascade and theme selectors
Iautner Sep 30, 2025
b2b3efe
Implement Apple-style semantic color system for better light/dark mod…
Iautner Sep 30, 2025
7d2ac7b
Fix auto mode dark theme detection with proper CSS selectors
Iautner Sep 30, 2025
5aac82b
Use stronger CSS selectors and important declarations to force theme …
Iautner Sep 30, 2025
643d9f8
Comprehensive cleanup and optimization: streamlined CSS, optimized JS…
Iautner Sep 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions .github/workflows/deploy-dev-to-beta.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: Deploy dev -> main:/beta

on:
push:
branches: [ dev ]
workflow_dispatch: {}

jobs:
build-and-publish:
runs-on: ubuntu-latest
permissions:
contents: write

steps:
- name: Checkout dev
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1'

- name: Install bundler & dependencies
run: |
gem install bundler
bundle config set --local deployment 'true'
bundle install --jobs 4 --retry 3

- name: Build site (Jekyll)
run: bundle exec jekyll build --destination _site

- name: Remove CNAME from build (prevent overriding custom domain)
run: rm -f _site/CNAME || true

- name: Checkout main into separate folder
uses: actions/checkout@v4
with:
repository: ${{ github.repository }}
ref: main
token: ${{ secrets.GITHUB_TOKEN }}
path: main-worktree

- name: Copy built site into main-worktree/beta
run: |
rm -rf main-worktree/beta || true
mkdir -p main-worktree/beta
cp -a _site/. main-worktree/beta/

- name: Commit & push beta content to main
run: |
cd main-worktree
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A beta
git commit -m "Deploy dev -> beta: $GITHUB_SHA" || echo "No changes to commit"
# ensure push uses token auth (works around some permission/remote issues)
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git
git push origin main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@ _site/
.DS_Store
Dockerfile
/.vscode
/.history
/node_modules
2 changes: 1 addition & 1 deletion _includes/footer.html
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
<footer class="text-center my-6">
<p class="f4-mktg color-fg-muted"> <a href="https://github.com/Iautner/Iautner.github.io" class="">View on Github</a></p>
<p class="f4-mktg color-fg-muted">© 2025 Lautner</p>
</footer>
14 changes: 7 additions & 7 deletions _includes/links.html
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<ul class="list-style-none f3 container-sm">
<ul class="list-style-none container-sm">
{% for item in site.data.links %}
<li class="mb-3 text-center text-semibold">
<a href="{{ item.url }}" class="Link--primary d-block p-3 border rounded-3 color-shadow-small color-bg-subtle">
<svg class="bi mr-1" width="16" height="16" fill="currentColor">
<use xlink:href="{{ site.baseurl }}/assets/img/bootstrap-icons.svg#{{ item.icon | default: 'globe2' }}"/>
</svg><br>
{{ item.text }}
<li>
<a href="{{ item.url }}" target="_blank" rel="noopener noreferrer" class="link-card" aria-label="Open {{ item.text }} in new tab">
<svg class="bi" width="16" height="16" fill="currentColor">
<use xlink:href="assets/img/bootstrap-icons.svg#{{ item.icon | default: 'globe2' }}"/>
</svg>
<span class="link-text">{{ item.text }}</span>
</a>
</li>
{% endfor %}
Expand Down
84 changes: 75 additions & 9 deletions _layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,74 @@
<meta charset="utf-8">
<title>{{ site.data.metadata.title }}</title>
<meta name="description" content="{{ site.data.metadata.description }}">
<meta name="viewport" content="width=device-width, initial-scale=1">


<!-- Enhanced viewport for modern devices -->
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">

<!-- PWA and mobile optimizations -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="apple-mobile-web-app-title" content="Lautner">
<meta name="application-name" content="Lautner">
<meta name="msapplication-TileColor" content="#000000">
<meta name="theme-color" content="#000000" media="(prefers-color-scheme: dark)">
<meta name="theme-color" content="#ffffff" media="(prefers-color-scheme: light)">

<!-- Performance and SEO -->
<meta name="robots" content="index, follow">
<meta name="googlebot" content="index, follow">
<link rel="canonical" href="{{ site.url }}{{ page.url }}">

<!-- Icons and manifest -->
<link rel="icon" href="favicon.ico" type="image/x-icon">

<link rel="apple-touch-icon" sizes="192x192" href="/manifest-icon-192.maskable.png">
<link rel="manifest" href="manifest.json">

<!-- Preload critical resources -->
<link rel="preload" href="assets/css/primer.css" as="style">
<link rel="preload" href="assets/css/custom.css" as="style">

<link rel="preload" href="assets/js/lazy-load.js" as="script">

<!-- CSS with enhanced loading -->
<link rel="stylesheet" href="assets/css/primer.css" media="print" onload="this.media='all'">
<link rel="stylesheet" href="assets/css/custom.css" media="print" onload="this.media='all'">
<link rel="stylesheet" href="assets/css/bootstrap-icons.css" media="print" onload="this.media='all'">

<noscript>
<link rel="stylesheet" href="assets/css/primer.css">
<link rel="stylesheet" href="assets/css/custom.css">
<link rel="stylesheet" href="assets/css/bootstrap-icons.css">
</noscript>
<meta property="og:image" content="https://lautner.co/assets/img/thumbnail-og.png">

<!-- Enhanced Open Graph -->
<meta property="og:type" content="website">
<meta property="og:url" content="{{ site.url }}{{ page.url }}">
<meta property="og:title" content="Lautner's Links">
<script>navigator.serviceWorker.register("service-worker.js")</script>
<link rel="manifest" href="/manifest.json" /> <meta property="og:description" content="Fun Minecraft content, modded Minecraft, let's play, and challenge videos!">
<meta property="og:description" content="Fun Minecraft content, modded Minecraft, let's play, and challenge videos!">
<meta property="og:image" content="{{ '/assets/img/thumbnail-og.png' | absolute_url }}">
<meta property="og:site_name" content="Lautner">

<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Lautner's Links">
<meta name="twitter:description" content="Fun Minecraft content, modded Minecraft, let's play, and challenge videos!">
<meta name="twitter:image" content="{{ '/assets/img/thumbnail-og.png' | absolute_url }}">

<!-- Enhanced Service Worker Registration -->
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('service-worker.js')
.then(registration => {
console.log('SW registered: ', registration);
})
.catch(registrationError => {
console.log('SW registration failed: ', registrationError);
});
});
}
</script>
</head>

<body class="p-3">
Expand All @@ -34,7 +82,25 @@
{% include links.html %}
{% include footer.html %}
</main>
<script src="assets/js/lazy-load.js" defer></script>

<!-- Enhanced scripts -->
<script src="assets/js/lazy-load.js"></script>

<!-- Minimal initialization -->
<script>
// Prevent zoom on double tap (iOS Safari) but allow scrolling
let lastTouchEnd = 0;
document.addEventListener('touchend', event => {
const now = (new Date()).getTime();
if (now - lastTouchEnd <= 300) {
// Only prevent default for non-scrollable elements
if (!event.target.closest('.scrollable, main, body')) {
event.preventDefault();
}
}
lastTouchEnd = now;
}, false);
</script>
</body>

</html>
Loading