From ef22671d18609bec87ccdc79110046f9e19ada39 Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Sat, 2 May 2026 13:13:35 +1000 Subject: [PATCH 1/2] chore: disable package building --- .github/workflows/ci.yml | 48 ++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da0caeb..ee0a59d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -46,27 +46,27 @@ jobs: echo VITE_APP_GITREV=\"${{ github.sha }}\" >> .env npm run build - - name: Archive raw artifacts - uses: actions/upload-artifact@v4 - with: - name: snapweb_raw_${{env.SHA_SHORT}} - path: dist - compression-level: 9 - - - name: Create changelog - run: | - $GITHUB_WORKSPACE/debian/changelog_md2deb.py $GITHUB_WORKSPACE/changelog.md > $GITHUB_WORKSPACE/debian/changelog - cat $GITHUB_WORKSPACE/debian/changelog - - - name: Create deb package - env: - GENERATE_SOURCEMAP: "false" - run: | - fakeroot make -f debian/rules clean - fakeroot make -f debian/rules binary - - - name: Archive deb artifacts - uses: actions/upload-artifact@v4 - with: - name: snapweb_debian_package_${{env.SHA_SHORT}} - path: ${{env.PARENT_DIR}}/snapweb_*.deb + # - name: Archive raw artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: snapweb_raw_${{env.SHA_SHORT}} + # path: dist + # compression-level: 9 + + # - name: Create changelog + # run: | + # $GITHUB_WORKSPACE/debian/changelog_md2deb.py $GITHUB_WORKSPACE/changelog.md > $GITHUB_WORKSPACE/debian/changelog + # cat $GITHUB_WORKSPACE/debian/changelog + + # - name: Create deb package + # env: + # GENERATE_SOURCEMAP: "false" + # run: | + # fakeroot make -f debian/rules clean + # fakeroot make -f debian/rules binary + + # - name: Archive deb artifacts + # uses: actions/upload-artifact@v4 + # with: + # name: snapweb_debian_package_${{env.SHA_SHORT}} + # path: ${{env.PARENT_DIR}}/snapweb_*.deb From 61e691646af7323837e402a651dea93a4882a2ee Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Sat, 2 May 2026 14:02:46 +1000 Subject: [PATCH 2/2] feat: add a latency helper dialog that adds/subtracts preset amounts to help synchronise speakers while playing --- src/components/Client.tsx | 74 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/components/Client.tsx b/src/components/Client.tsx index b23dd76..ff16756 100644 --- a/src/components/Client.tsx +++ b/src/components/Client.tsx @@ -19,6 +19,7 @@ export default function Client(props: ClientProps) { const [anchorEl, setAnchorEl] = useState(null); const [open, setOpen] = useState(false); const [detailsOpen, setDetailsOpen] = useState(false); + const [latencyHelperOpen, setLatencyHelperOpen] = useState(false); const [name, setName] = useState(props.client.config.name); const [tmpLatency, setTmpLatency] = useState(props.client.config.latency); const [latency, setLatency] = useState(props.client.config.latency); @@ -79,14 +80,33 @@ export default function Client(props: ClientProps) { props.snapcontrol.setClientLatency(props.client.id, latency); } + function adjustLatency(delta: number) { + const newLatency = Math.max(0, tmpLatency + delta); + setTmpLatency(newLatency); + setLatency(newLatency); + props.snapcontrol.setClientLatency(props.client.id, newLatency); + } + function handleMuteClicked() { console.debug("handleMuteClicked"); props.snapcontrol.setVolume(props.client.id, props.client.config.volume.percent, !props.client.config.volume.muted); setUpdate(update + 1); } + function handleLatencyHelperClicked() { + console.debug("handleLatencyHelperClicked"); + setAnchorEl(null); + setOpen(false); + setLatencyHelperOpen(true) + } + + function handleLatencyHelperClose() { + setLatencyHelperOpen(false) + } + const menuitems = []; menuitems.push( { handleDetailsClicked() }}>Details); + menuitems.push( { handleLatencyHelperClicked() }}>Latency helper); if (!props.client.connected) menuitems.push( { props.onDelete(); setAnchorEl(null); setOpen(false); }}>Delete); @@ -207,6 +227,60 @@ export default function Client(props: ClientProps) { + { handleLatencyHelperClose() }}> + Latency helper for {props.client.config.name === "" ? props.client.host.name : props.client.config.name} + + ) => { setTmpLatency(Number(event.target.value) || 0) }} + onBlur={(event: React.FocusEvent) => { handleLatencyChange(Number(event.target.value) || 0) }} + variant="standard" + slotProps={{ + input: { + endAdornment: ms, + } + }} + /> + + + {[ + [100, -100], + [50, -50], + [10, -10], + [5, -5], + [1, -1], + ].map(([pos, neg]) => ( + + + + + ))} + + + + + + ); }