Compare commits

...

3 Commits

Author SHA1 Message Date
droideparanoico 25dc5fc856 Excluded gitea workflow
Build & Deploy / build-and-deploy (push) Successful in 11s
2026-06-14 13:20:57 +02:00
droideparanoico 4a58e7c44b Only show Upload button on library view
Build & Deploy / build-and-deploy (push) Successful in 10s
2026-06-14 13:16:56 +02:00
droideparanoico 2f6d4eca5e Add Gitea Build & Deploy workflow
Build & Deploy / build-and-deploy (push) Successful in 14s
2026-06-11 17:39:08 +02:00
6 changed files with 84 additions and 20 deletions
+62
View File
@@ -0,0 +1,62 @@
# This workflow builds and deploys DOStalgia whenever code is pushed to main.
# The runner has Docker socket access so it can manage containers on the host.
# Parameters match the docker-compose at:
# /appdata/dockhand/stacks/unraid/dostalgia/compose.yaml
# See: https://docs.gitea.com/usage/actions
name: Build & Deploy
run-name: Build ${{ gitea.sha.substring(0, 7) }}
on:
push:
branches: [ main ]
env:
IMAGE_NAME: dostalgia
CONTAINER_NAME: dostalgia
DATA_VOLUME: /mnt/cache/appdata/dostalgia
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Build Docker image
run: |
docker build -t ${{ env.IMAGE_NAME }}:${{ gitea.sha }} .
docker tag ${{ env.IMAGE_NAME }}:${{ gitea.sha }} ${{ env.IMAGE_NAME }}:latest
- name: Deploy container
run: |
docker stop ${{ env.CONTAINER_NAME }} 2>/dev/null || true
docker rm ${{ env.CONTAINER_NAME }} 2>/dev/null || true
docker run -d \
--name ${{ env.CONTAINER_NAME }} \
--restart unless-stopped \
--network dockernet \
-p 8765:8765/tcp \
-v ${{ env.DATA_VOLUME }}:/data \
-e TWITCH_CLIENT_ID='${{ secrets.TWITCH_CLIENT_ID }}' \
-e TWITCH_CLIENT_SECRET='${{ secrets.TWITCH_CLIENT_SECRET }}' \
${{ env.IMAGE_NAME }}:latest
- name: Verify container is running
run: |
sleep 5
STATUS=$(docker inspect -f '{{.State.Status}}' ${{ env.CONTAINER_NAME }})
if [ "$STATUS" = "running" ]; then
echo "✅ DOStalgia container is running"
echo "--- last logs ---"
docker logs ${{ env.CONTAINER_NAME }} --tail 5
echo "✅ DOStalgia deployed!"
else
echo "❌ Container status: $STATUS"
docker logs ${{ env.CONTAINER_NAME }} --tail 30
exit 1
fi
- name: Clean up old images
run: docker image prune -f --filter "until=24h"
+3
View File
@@ -40,3 +40,6 @@ data/saves/*
# OS
.DS_Store
Thumbs.db
# Gitea
.gitea/
+1 -1
View File
@@ -43,7 +43,7 @@
});
</script>
<Header onUploadClick={() => uploadTriggered++} />
<Header onUploadClick={() => uploadTriggered++} hideUpload={route !== "/"} />
<main class="container">
{#if route === "/"}
+13 -8
View File
@@ -98,7 +98,8 @@ h3 { font-size: 1.2rem; }
/* ═══════════════════════════════════════════════════════════════
BUTTONS
═══════════════════════════════════════════════════════════════ */
.btn {
/* Only targets DOStalgia buttons, not js-dos emulator buttons inside .dos-container */
.btn.btn:not(.dos-container .btn) {
display: inline-flex;
align-items: center;
gap: 8px;
@@ -111,32 +112,36 @@ h3 { font-size: 1.2rem; }
font-size: 0.9rem;
font-weight: 600;
cursor: pointer;
text-transform: none;
height: auto;
min-height: 0;
line-height: normal;
transition: all 0.15s ease;
}
.btn:hover {
.btn.btn:not(.dos-container .btn):hover {
background: var(--phosphor-burn);
border-color: var(--phosphor);
box-shadow: 0 0 12px var(--phosphor-dark);
}
.btn:active {
.btn.btn:not(.dos-container .btn):active {
transform: scale(0.97);
}
.btn-primary {
.btn-primary.btn-primary:not(.dos-container .btn) {
background: var(--phosphor-dark);
border-color: var(--phosphor);
color: var(--phosphor-glow);
}
.btn-primary:hover {
.btn-primary.btn-primary:not(.dos-container .btn):hover {
background: var(--phosphor-dim);
color: var(--bg);
}
.btn-danger {
.btn-danger.btn-danger:not(.dos-container .btn) {
border-color: #cc3333;
color: #cc3333;
}
.btn-danger:hover {
.btn-danger.btn-danger:not(.dos-container .btn):hover {
background: #331111;
border-color: #ff4444;
color: #ff4444;
@@ -187,7 +192,7 @@ input::placeholder {
@media (max-width: 640px) {
h1 { font-size: 1.5rem; }
h2 { font-size: 1.25rem; }
.btn { padding: 8px 14px; font-size: 0.85rem; min-height: 40px; }
.btn.btn:not(.dos-container .btn) { padding: 8px 14px; font-size: 0.85rem; min-height: 40px; }
input, textarea, select { font-size: 16px; } /* prevents iOS zoom */
}
+4 -2
View File
@@ -1,5 +1,5 @@
<script>
let { onUploadClick = () => {} } = $props();
let { onUploadClick = () => {}, hideUpload = false } = $props();
</script>
<header class="header">
@@ -17,7 +17,9 @@
<span class="logo-text">DOSTALGIA</span>
</a>
<nav>
<button class="btn" onclick={onUploadClick}>+ Upload</button>
{#if !hideUpload}
<button class="btn" onclick={onUploadClick}>+ Upload</button>
{/if}
</nav>
</div>
</header>
+1 -9
View File
@@ -134,7 +134,7 @@
{isSetup ? "Back" : game.title}
</button>
{#if running}
<button class="btn stop-btn" onclick={stopEmulator}> Stop</button>
<button class="btn btn-danger" onclick={stopEmulator}> Stop</button>
{/if}
{/if}
</div>
@@ -211,14 +211,6 @@
font-family: var(--font-sans);
}
.link-button:hover { color: var(--phosphor); }
.stop-btn {
border-color: #cc3333;
color: #ff4444;
}
.stop-btn:hover {
background: #331111;
box-shadow: 0 0 12px #331111;
}
/* Emulator canvas — always mounted */
.dos-container {