Ultrawide tweaks

This commit is contained in:
2026-05-03 15:56:04 +12:00
parent 6cd50965e5
commit d1dd103a6e
5 changed files with 165 additions and 72 deletions
+7
View File
@@ -32,6 +32,9 @@ containers untouched.
- [deploy.ps1](deploy.ps1)
- Windows entrypoint for packaging the repo, uploading it, and running the
remote deployment helper over SSH.
- [scripts/deploy.ps1](scripts/deploy.ps1)
- Deprecated compatibility wrapper that forwards to the repo-root
`deploy.ps1`. Keep using the root script directly.
- [scripts/deploy-remote.sh](scripts/deploy-remote.sh)
- Server-side helper that updates only the `goodwalk-svelte` compose project.
- [docker-compose.prod.yml](docker-compose.prod.yml)
@@ -109,6 +112,10 @@ From Windows PowerShell in the repo root:
powershell -ExecutionPolicy Bypass -File .\deploy.ps1
```
This is the single supported deployment entrypoint. If you see
`scripts/deploy.ps1`, that file now just forwards to the root script so the
deployment logic only lives in one place.
Or skip the confirmation prompt:
```powershell
+12 -66
View File
@@ -1,76 +1,22 @@
[CmdletBinding()]
param(
[string]$ComposeFile = 'docker-compose.yml',
[string]$ProjectName = 'goodwalk',
[switch]$RunMigration,
[string]$LegacyComposeFile,
[string]$LegacyProjectName = 'legacy-goodwalk',
[string]$LegacyWordPressContainer,
[string]$LegacyDatabaseContainer,
[string]$LegacyUploadsPath = '/var/www/html/wp-content/uploads',
[string]$MySqlDatabase,
[string]$MySqlUser,
[string]$MySqlPassword,
[switch]$SkipLegacyShutdown,
[switch]$SkipBuild,
[int]$HealthTimeoutSeconds = 120,
[string]$HealthUrl = 'http://localhost/api/health'
[switch]$Force,
[switch]$SkipSiteCheck,
[string]$Service
)
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
. (Join-Path $scriptDir 'common.ps1')
$repoRoot = Split-Path -Parent $scriptDir
$composeFilePath = Resolve-AbsolutePath -BasePath $repoRoot -Path $ComposeFile
$rootDeployScript = Join-Path $repoRoot 'deploy.ps1'
Write-Step 'Validating deployment prerequisites'
Assert-Command docker
Invoke-DockerCompose -ComposeFile $composeFilePath -ProjectName $ProjectName -WorkingDirectory $repoRoot -Arguments @('config')
if ($RunMigration) {
Write-Step 'Running the WordPress migration step'
$migrationScript = Join-Path $scriptDir 'migrate-wordpress.ps1'
$migrationArgs = @(
'-LegacyWordPressContainer', $LegacyWordPressContainer,
'-LegacyUploadsPath', $LegacyUploadsPath
)
if ($LegacyDatabaseContainer) {
$migrationArgs += @('-LegacyDatabaseContainer', $LegacyDatabaseContainer)
} else {
$migrationArgs += '-SkipDatabaseDump'
}
if ($MySqlDatabase) { $migrationArgs += @('-MySqlDatabase', $MySqlDatabase) }
if ($MySqlUser) { $migrationArgs += @('-MySqlUser', $MySqlUser) }
if ($MySqlPassword) { $migrationArgs += @('-MySqlPassword', $MySqlPassword) }
& $migrationScript @migrationArgs
if ($LASTEXITCODE -ne 0) {
throw 'The WordPress migration step failed.'
}
if (-not (Test-Path -LiteralPath $rootDeployScript)) {
throw "Root deploy script not found: $rootDeployScript"
}
if ($LegacyComposeFile -and -not $SkipLegacyShutdown) {
$legacyComposeFilePath = Resolve-AbsolutePath -BasePath $repoRoot -Path $LegacyComposeFile
Write-Step 'Stopping the legacy WordPress stack'
Invoke-DockerCompose -ComposeFile $legacyComposeFilePath -ProjectName $LegacyProjectName -WorkingDirectory $repoRoot -Arguments @('down')
Write-Warning 'scripts/deploy.ps1 is deprecated. Use .\deploy.ps1 from the repo root instead.'
& $rootDeployScript @PSBoundParameters
if ($LASTEXITCODE -ne 0) {
exit $LASTEXITCODE
}
Write-Step 'Building and starting the new stack'
$upArgs = @('up', '-d', '--remove-orphans')
if (-not $SkipBuild) {
$upArgs += '--build'
}
Invoke-DockerCompose -ComposeFile $composeFilePath -ProjectName $ProjectName -WorkingDirectory $repoRoot -Arguments $upArgs
Write-Step 'Waiting for the new site to become healthy'
Wait-ForHttpOk -Url $HealthUrl -TimeoutSeconds $HealthTimeoutSeconds
Write-Step 'Current container status'
Invoke-DockerCompose -ComposeFile $composeFilePath -ProjectName $ProjectName -WorkingDirectory $repoRoot -Arguments @('ps')
Write-Step 'Deployment completed'
Write-Host "Health check passed at $HealthUrl"
+140 -6
View File
@@ -3,13 +3,147 @@
import type { HomePageContent } from '$lib/types';
export let instagram: HomePageContent['instagram'];
const dogCutoutSrc = '/images/smiling-dog-cutout.webp';
</script>
<section id="instagram">
<h2>{instagram.title}</h2>
<p class="instagram-blurb">See our dogs in action — walks, play, and happy pups</p>
<a href={instagram.href} target="_blank" rel="noopener" class="btn btn-green">
<Icon name="fab fa-instagram" />
{instagram.label}
</a>
<div class="instagram-stage">
<div class="instagram-panel">
<div class="instagram-copy">
<span class="instagram-kicker">Daily walks, happy dogs</span>
<h2>{instagram.title}</h2>
<p class="instagram-blurb">See our dogs in action — walks, play, and happy pups</p>
<a href={instagram.href} target="_blank" rel="noopener" class="btn btn-green instagram-button">
<Icon name="fab fa-instagram" />
{instagram.label}
</a>
</div>
</div>
<div class="instagram-dog-wrap" aria-hidden="true">
<img class="instagram-dog" src={dogCutoutSrc} alt="" loading="lazy" decoding="async" />
</div>
</div>
</section>
<style>
#instagram {
overflow: visible;
padding-bottom: 102px;
}
.instagram-stage {
position: relative;
max-width: 1040px;
margin: 0 auto;
}
.instagram-panel {
padding: 34px 360px 44px 44px;
border-radius: 32px;
background:
radial-gradient(circle at top left, rgba(255, 255, 255, 0.52), transparent 42%),
linear-gradient(135deg, rgba(255, 250, 236, 0.96), rgba(255, 240, 188, 0.94));
box-shadow:
inset 0 0 0 1px rgba(17, 20, 24, 0.06),
0 26px 50px rgba(106, 80, 16, 0.14);
overflow: visible;
}
.instagram-copy {
padding-top: 10px;
text-align: left;
}
.instagram-kicker {
display: inline-flex;
margin-bottom: 16px;
padding: 8px 14px;
border-radius: 999px;
background: rgba(33, 48, 33, 0.08);
color: var(--green);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.instagram-copy :global(h2) {
max-width: 11ch;
}
.instagram-blurb {
max-width: 420px;
margin-bottom: 0;
}
.instagram-button {
margin-top: 28px;
}
.instagram-dog-wrap {
position: absolute;
right: 24px;
bottom: -12px;
display: flex;
align-items: flex-end;
justify-content: center;
width: clamp(240px, 30vw, 360px);
pointer-events: none;
}
.instagram-dog {
display: block;
width: 100%;
height: auto;
filter: drop-shadow(0 20px 28px rgba(33, 48, 33, 0.16));
}
@media (min-width: 1800px) {
.instagram-stage {
max-width: 1144px;
}
}
@media (max-width: 768px) {
#instagram {
padding-bottom: 76px;
}
.instagram-panel {
padding: 30px 24px 120px;
border-radius: 28px;
}
.instagram-copy {
text-align: center;
}
.instagram-copy :global(h2) {
max-width: none;
}
.instagram-blurb {
max-width: none;
margin-left: auto;
margin-right: auto;
}
.instagram-button {
margin-top: 24px;
}
.instagram-dog-wrap {
left: 50%;
right: auto;
bottom: -10px;
width: min(260px, calc(100% - 40px));
transform: translateX(-50%);
}
.instagram-dog {
width: 100%;
}
}
</style>
+6
View File
@@ -12,3 +12,9 @@
/* Legacy "navy" tokens now intentionally render as Goodwalk green. */
--navy: var(--green);
}
@media (min-width: 1800px) {
:root {
--max-w: 1408px;
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB