Tags give the ability to mark specific points in history as being important
  • release-be1.1.29-fe1.1.71-r2   QA re-release: backend 1.1.29, frontend 1.1.71 (rebuilt) Same version numbers, different frontend bits — the tag was re-pushed on the user's explicit instruction rather than bumped. conference-frontend:1.1.71 sha256:50b3cc8f5f00... (was sha256:8f95089f2474...) Adds only: /download is now a static page instead of a Flutter route (main repo 85a58ea7). Measured 4.9 MB / ~7 s -> 5 KB / ~0.3 s. Backend 1.1.29 is unchanged from -r1.
  • release-be1.1.29-fe1.1.71   QA release: backend 1.1.29, frontend 1.1.71
  • release-be1.1.27-fe1.1.70-r4   QA release: backend 1.1.27, frontend 1.1.70 (r4) Frontend image re-pushed at the SAME locked version 1.1.70 (standing instruction: the frontend version does not move until told). Distinguish releases by DIGEST, not by tag: r1 sha256:5b90e224... initial r2 sha256:595d6257... mic/camera menu height r3 sha256:3bbbc302... clickable links in chat bubbles r4 sha256:487f9976... THIS ONE What r4 adds over r3: - Invite-link landing page (app vs browser chooser + installers from /api/public/config), built to Figma 2288:16906. - An ENDED meeting is reported to a joiner as "hasn't started yet" — every room is restartable, and the public pre-join payload never carried the fields the old reusable/terminal split relied on. - iOS Safari background effects: correct orientation in all four device orientations, and switching effects OFF hands the raw camera back instead of republishing a canvas capture. - The false "Your browser paused the meeting audio" banner is gone. - Token-refresh requests have timeouts; a hung backend no longer leaves the app on a spinner forever. - Leaving a meeting no longer bounces through the join page into the device-check screen. Bundle content is unchanged from r1-r3 (same image tags), so this tag marks the image, not a compose change.
  • release-be1.1.27-fe1.1.70-r3   QA re-release: backend 1.1.27, frontend 1.1.70 (chat links) Same version numbers, third set of frontend bits. Adds clickable links in chat message bubbles — a URL rendered as plain text before, reachable only through the preview card and only for the first link in a message. r1 sha256:5b90e224... r2 sha256:595d6257... chevron menu height r3 sha256:3bbbc302... chat links <- deploy this one The bundle is unchanged — same commit, same image tags — so this tag exists only to keep the sets of bits distinguishable, per the re-release rule. A target already reading 1.1.70 must 'docker compose pull frontend'; 'up -d' alone will not fetch it. Verify by digest, not by tag.
  • release-be1.1.27-fe1.1.70-r2   QA re-release: backend 1.1.27, frontend 1.1.70 (new frontend bits) Same version numbers, NEW frontend image. release-be1.1.27-fe1.1.70 pointed at digest sha256:5b90e224...; the 1.1.70 tag has since been re-pushed with the mic/camera chevron menu fix (they reserved a row-count estimate instead of their real height and opened ~200px above the control bar). Frontend digest is now sha256:595d62573c49e8db2dbd3410fb960f7397e2525eb49382c61b18d82115edb94f The bundle itself is unchanged — same commit, same image tags — so this tag exists only to keep the two sets of bits distinguishable, per the re-release rule. A target already reading 1.1.70 must 'docker compose pull frontend'; 'up -d' alone will not fetch it.
  • release-be1.1.27-fe1.1.70   QA release: backend 1.1.27, frontend 1.1.70
  • release-be1.1.24-fe1.1.69-r4   QA release: backend 1.1.24, frontend 1.1.69 (frontend re-cut, 4th) BACKEND UNCHANGED. Fourth set of bits under the frontend 1.1.69 tag: r1 sha256:0663eb0d1fb8506b02842d08610bdcfa404756651260c20b03cf61c1534d26a3 r2 sha256:db98bc5371faa77e28563a65741f958ee2e5a722a2d2b1e28ac73786dcdcf9e0 r3 sha256:62fdd046bd7c2f140ad77b6343f97642ada70e478157ce6ae14bdf991e5c1184 r4 sha256:384c2f148699b1fc1163825a41e5c555ca20d193ea38902df26f0f7ac3468d49 <-- this backend sha256:548ef5e8d3c5a1bcc57a557b79fcde5ca8338868f0a89b44e2291938c17d624c Built from e5276b94. Over r3, the single-tab behaviour changed materially: * NEWEST TAB WINS. Opening the app supersedes the older tab instead of turning the new one away. The old tab reloads (not just an overlay) so its engine and any live capture stop. * A tab IN A MEETING refuses to be superseded — #/room/:id keeps the lock and the claimer is told "Meeting in Progress". Without this, opening the app anywhere would have dropped a live call. * /download never blocks: it is a link people paste, and the one-tab rule has no session there to protect. * The "Close This Tab" button is gone. window.close() is refused for a tab the script did not open, so it had always been inert. * A holder on an older build that cannot hear the claim still degrades to the previous "Already Open" screen after 3s. Also: /download works as a plain path, Crashlytics with native crash reporting, and build number 29. Bundle hash v=0811f7dde5c2, checked against r3's v=0d21d5692e06 before pushing so a cache hit could not republish the old bundle under the same tag. TAG REUSED — `docker compose up -d` will NOT fetch this on a host already running an earlier 1.1.69. Force the pull: cd /usr/local/conferencing sudo bash setup.sh --upgrade --backend-tag 1.1.24 --frontend-tag 1.1.69 docker inspect --format '{{.Image}}' conferencing_frontend expect sha256:384c2f148699...
  • release-be1.1.24-fe1.1.69-r3   QA release: backend 1.1.24, frontend 1.1.69 (frontend re-cut, 3rd) BACKEND UNCHANGED. Only the frontend was rebuilt, so the 1.1.69 tag now resolves to its third set of bits: frontend r1 sha256:0663eb0d1fb8506b02842d08610bdcfa404756651260c20b03cf61c1534d26a3 r2 sha256:db98bc5371faa77e28563a65741f958ee2e5a722a2d2b1e28ac73786dcdcf9e0 r3 sha256:62fdd046bd7c2f140ad77b6343f97642ada70e478157ce6ae14bdf991e5c1184 <-- this one backend sha256:548ef5e8d3c5a1bcc57a557b79fcde5ca8338868f0a89b44e2291938c17d624c Built from 63402afa. Over r2 it adds: * /downloads redirected to /downloads/ * the admin rail entry back, for SUPER_ADMIN only (r2 hid it from everyone) Bundle hash v=0d21d5692e06, checked against r2's v=730b816a1164 before pushing so a cache hit could not republish the old bundle under the same tag. THE TAG WAS REUSED, so `docker compose up -d` will NOT pick this up on a host already running an earlier 1.1.69 — the tag resolves locally and nothing is fetched. Force the pull: cd /usr/local/conferencing sudo bash setup.sh --upgrade --backend-tag 1.1.24 --frontend-tag 1.1.69 Confirm afterwards: docker inspect --format '{{.Image}}' conferencing_frontend expect sha256:62fdd046bd7c... Backend needs no action: V1.10.9 already ran on this host and is idempotent.
  • release-be1.1.24-fe1.1.69-r2   QA release: backend 1.1.24, frontend 1.1.69 (frontend re-cut) Same version numbers as release-be1.1.24-fe1.1.69. The BACKEND image is unchanged; only the frontend was rebuilt, so the 1.1.69 tag now resolves to different bits: frontend old sha256:0663eb0d1fb8506b02842d08610bdcfa404756651260c20b03cf61c1534d26a3 new sha256:db98bc5371faa77e28563a65741f958ee2e5a722a2d2b1e28ac73786dcdcf9e0 backend sha256:548ef5e8d3c5a1bcc57a557b79fcde5ca8338868f0a89b44e2291938c17d624c (unchanged) Adds the public /download page: the page itself, its five platform marks (android, ios, linux, mac, windows), the route, and strings across all seven shipped locales. BECAUSE THE TAG WAS REUSED, `docker compose up -d` alone will NOT pick this up on a host already running the earlier 1.1.69 — the tag resolves locally and no pull happens. Force it: cd /usr/local/conferencing sudo bash setup.sh --upgrade --backend-tag 1.1.24 --frontend-tag 1.1.69 setup.sh --upgrade always runs `docker compose pull backend frontend`, so it fetches the new digest even though the tag is unchanged. Verify afterwards with `docker inspect --format '{{.Image}}' conferencing_frontend`. The backend needs no action: V1.10.9 already ran on this host and is idempotent.
  • release-be1.1.24-fe1.1.69   QA release: backend 1.1.24, frontend 1.1.69 Images: revesoft/conference-backend:1.1.24 sha256:548ef5e8d3c5a1bcc57a557b79fcde5ca8338868f0a89b44e2291938c17d624c revesoft/conference-frontend:1.1.69 sha256:0663eb0d1fb8506b02842d08610bdcfa404756651260c20b03cf61c1534d26a3 Backend 1.1.23 was SKIPPED, not re-pushed: it is published but predates the grandfathered-plans work, so overwriting it would have changed what that tag means for anyone who already pulled it. >>> THIS BACKEND RUNS A DATA MIGRATION ON STARTUP (V1.10.9) <<< * every ACTIVE subscription -> package 'grandfathered' (unlimited), open-ended, limits_snapshot cleared * meetings.max_participants raised to 1000 wherever it is lower Untouched: cancelled/suspended subscriptions, tenants with no subscription row, and subscription_overrides. Idempotent, exercised against MySQL 8.4 - but rolling the image back does NOT undo it. Back the database up first. Also in the backend: companion sessions behind conferencing.companion-session.enabled (default FALSE - leave it off until the client side lands), REM-SW-52 chat restriction reaching the server, and the participant cap raised (per-meeting default 1000, validation ceiling 5000). Frontend 1.1.69: REM-SW-51 (no "ask to start" when the meeting forbids that source), REM-SW-58 (phone video letterboxed instead of zoomed), one overflow menu per Previous row, More-menu icon sizing, red muted-mic mark, admin rail entry hidden, PMI on/off alignment, meeting-row avatar sizing, horizontal dots in the participants panel header, non-host join button sized to match the host's, and the legal pages naming REVE Meeting with support@revesoft.com. Deploy: cd /usr/local/conferencing sudo bash setup.sh --upgrade --backend-tag 1.1.24 --frontend-tag 1.1.69 No .env, compose or host-nginx changes needed beyond the tags.
  • release-be1.1.22-fe1.1.68   QA release: backend 1.1.22, frontend 1.1.68 Images: revesoft/conference-backend:1.1.22 sha256:c056b7a726332a9f3dd... revesoft/conference-frontend:1.1.68 sha256:4c182e14cc0e201582c07767a1840297e00fd043f6a78acaa1fa3ff97e2ad57a NOTE: the frontend 1.1.68 tag was RE-PUSHED on 2026-08-31 and now resolves to a different digest than the earlier 1.1.68 (was sha256:5881f495b872dd7...). Pull by tag to get the new bits. Backend 1.1.22 - meeting-warning fixes. Frontend 1.1.68 - web loading time: - main.dart.js / flutter_bootstrap.js stamped with ?v=<build hash> and served immutable for 30 days. They were previously sent no-cache, no-store, so the ~2.6 MB gzipped bundle was re-downloaded on every single page view (~7 s on the prod link). Nothing masked it: Flutter's service worker is now a tombstone that unregisters itself. - Shell, service workers, yt_player.html and asset manifests revalidate (no-cache), so a repeat load is a 304 and a new release still lands immediately. - Removed a render-blocking <script> pulling livekit-client from unpkg; unpinned, returning 404, and the global is referenced nowhere. - nginx gzip_comp_level 6 (was the default 1): 2,648,518 -> 2,168,809 bytes on the wire. Deploy: no .env, compose or host-nginx changes needed. Usual docker compose pull && docker compose up -d
  • release-be1.1.21-fe1.1.68-r2   QA release: backend 1.1.21, frontend 1.1.68 (re-cut) Same version numbers as release-be1.1.21-fe1.1.68; the frontend image was rebuilt, so the 1.1.68 tag now resolves to a different digest: old sha256:5881f495b872dd7... new sha256:4c182e14cc0e201582c07767a1840297e00fd043f6a78acaa1fa3ff97e2ad57a What changed in the image (web loading time): - main.dart.js and flutter_bootstrap.js are stamped with ?v=<build hash> and served immutable for 30 days. They were previously sent no-cache, no-store, so a ~2.6 MB gzipped bundle was re-downloaded on every page view - about 7 s on the prod link. - The app shell, service workers, yt_player.html and the asset manifests revalidate (no-cache), so a repeat load is a 304 rather than a full download, and a new release is still picked up immediately. - Removed a render-blocking <script> that pulled livekit-client from unpkg on every cold load; it was unpinned and had begun returning 404, and the global it defined is referenced nowhere. - nginx gzip_comp_level 6 (was nginx's default of 1): the bundle drops from 2,648,518 to 2,168,809 bytes on the wire. No .env, compose or host-nginx changes are needed - everything is inside the frontend image. Deploy is the usual pull + up -d for frontend.
  • release-be1.1.21-fe1.1.68   QA release: backend 1.1.21, frontend 1.1.68
  • release-be1.1.21-fe1.1.67-r2   QA re-release: backend 1.1.21, frontend 1.1.67 (image repushed: leave-popover anchor, chat chip badge/cap, TOKEN_UNUSABLE client half, PiP sizing)
  • release-be1.1.21-fe1.1.67   QA release: backend 1.1.21, frontend 1.1.67
  • release-be1.1.10-fe1.1.66-r2   QA release: backend 1.1.10, frontend 1.1.66 (r2) Same images as -r1; re-tagged because setup.sh --upgrade now carries the new signup / Google keys into an existing .env instead of leaving them to invisible compose defaults. Deploy from THIS tag.
  • release-be1.1.10-fe1.1.66   QA release: backend 1.1.10, frontend 1.1.66 Frontend 1.1.66 (verified on Docker Hub, digest sha256:100168bc…): mobile Meetings redesign with the Immediate Next hero, Home listing the next five meetings rather than today's only, throttled background re-sync on page entry and app resume, and the list-ordering fixes. Backend 1.1.10 corrects a bundle that had drifted two releases behind the running server — it carries the Google sign-in endpoints the compose keys in this bundle switch on.
  • release-be1.1.5-fe1.1.64   QA release: backend 1.1.5, frontend 1.1.64
  • release-be1.0.83-fe1.1.59   QA release: backend 1.0.83, frontend 1.1.59
  • release-be1.0.82-fe1.1.58   QA release: backend 1.0.82, frontend 1.1.58