Skip to content

Flytower 1.4.2

Choose a tag to compare

@github-actions github-actions released this 12 Nov 13:29
f956a11

Flytower 1.4.2 is a bug-fix and speed update from the same code review as 1.4.1. Scheduled restarts no longer block a backup due during their countdown: the backup runs and the restart waits for it. Stopping the server or changing the task mid-countdown calls the restart off. Live updates no longer arrive twice after the panel reconnects. A stray error can no longer bring the panel down, and the live console follows the log through file events instead of checking it twice a second. The Rust system helper no longer cuts off slow downloads after two minutes.

The Files tab respects view-only access, keeps uploads and edits in the folder they started in, and asks before you leave unsaved changes. Pages that fail to load say so, with Try again, instead of looking empty. Signing in takes you back to the page you wanted. Big imports and logs are capped while they unpack, import links can't be redirected to this machine or its network, and off-site backups tidy up after deleted targets and backups. The public map and Discord /stats show only the players and figures your status page shows, and one huge map no longer holds up every other one. Activity and job history now trim themselves, and database updates are safe for future table changes.

Help is more helpful too. On the website, the docs pages show labelled screenshots of the panel. Inside the panel, Show me goes to the button or setting a help page talks about and lights it up, Do it presses a few safe ones for you (Back up now, Start, Restart, Stop, Copy address) through their usual confirm, and help shows your own details, such as the address players join with.

Re-running the installer now keeps the version you have instead of moving you to the newest stable (add --version latest to move on), copies the database before any downgrade, and the firewall keeps SSH open on whatever port it really uses. Releases now wait for the install and upgrade tests to pass. Testing notes are in each pull request of the 1.4.2 milestone and in #271, #272 and #273.

Features

  • docs: live values in help, like your server's address (4eac656) · #270
  • docs: Do it in help presses safe controls for you, through their own confirm (0bd8be2) · #270
  • docs: screenshot cards on their own, a demo domain, a channel and a public page (ca5fb77) · #270
  • docs: anchors for account, content, map, public page, Discord, notifications, branding and disk (4a99625) · #270
  • docs: labelled screenshots with numbered pins on the website, Show me in the panel (f53f49f) · #270
  • docs: bun run docs:screens takes the labelled screenshots from a demo panel (aaa968a) · #270
  • docs: screenshot blocks in the docs, and checks that each one has been taken (c731869) · #270
  • panel: Show me follows the page as it loads, and says when a control only shows sometimes (e9ad82e) · #270
  • panel: Show me in Help lights up the control a doc names (d6ee3ba) · #270
  • docs: :ui chips for panel controls and :shortcut key caps (82057cb) · #270
  • panel: mark the controls the docs point at (6978144) · #270
  • docs: list the panel controls the docs can point at (5d3d99b) · #270
  • site: serve the Worker on flytower.dev (519195a)
  • site: use the registered flytower.dev domain (2a4d5ee)
  • site: use the shared docs layer for the collection, links and sidebar sections (5e78be2)
  • site: list the new Crashes page in the docs sidebar (8c7231c)
  • site: legal page route and an analytics opt-out that honours Global Privacy Control (b2614ce)
  • site: sponsor and advertise pages, with one-off donations (ff0899f)
  • site: changelog from GitHub releases, built at deploy time (3037afa)
  • site: first draft of "Why Flytower?" (05ce3e9)
  • site: docs from the repo's docs/ folder, with search, contents and an ad slot placeholder (37b29e9)
  • site: landing page with the install command and features (ac180b5)
  • site: website app on Cloudflare Workers, prerendered, with header, footer and 404 (555ea3f)

Fixes

  • docs: bundle the icons the :ui chips show (b8ecd59) · #270
  • clear systemd's start count so quick installer re-runs don't trip it (c08a6a5)
  • count cleared rows in a way the types allow (8960889)
  • tidy off-site copies after target removal, deletes during upload and listings mid-backup (cb75ca1)
  • make edits to server.properties and player lists wait their turn (5502d59)
  • cap unpacked size of tar imports and check every redirect of an import link (68f6548)
  • read tar and cp error output while they run (a4e749c)
  • stop unpacking gzipped logs and level.dat files at their size cap (b009bd4)
  • quote the architecture when trimming the release file name (3fb0b21)
  • keep every Conventional Commit type in the release notes (8664dfd) · #245
  • let view-only people open folders and download files (48479de)
  • let --version latest move an installed box to the newest stable release (80c3f06)
  • keep the installed version on installer re-runs, keep SSH open on its real port, and run nothing from a cut-off download (a272e74)
  • clear old activity entries and finished jobs (e0fb27b)
  • run migrations with foreign keys off and check references before commit (656f039)
  • run map passes per server, a couple at once, and stop a stuck renderer (004f668) · #247
  • open only one live-updates socket after the connection drops (a9e837c) · #237
  • return to the page you wanted after signing in (ef833ce)
  • forget logins that never joined (10a5a75)
  • start a new run after a crash systemd recovered between checks (fbbec16)
  • follow the live console through inotify and share one RCON connection (fc4c7be)
  • log stray rejections instead of letting them end the panel (2b053b4)
  • keep the log tailer running when a read fails (1e9ada1)
  • send the rest of an RCON packet when the socket drains (537bd28)
  • clear the Rust start marker only after the start-up steps, and document it (8fa3d75)
  • treat an empty JAVA_HOME as missing in the Rust agent, like Bun (99a0766)
  • cap the Rust agent's open connections and never abort when a thread can't start (e04d240)
  • give each Java install its own staging folder and let installs of one version take turns (bdc2258)
  • let Rust agent downloads run past two minutes while they make progress (ad11243)
  • only show a tick when copying worked (2f4d581)
  • show an error with a retry when servers fail to load (6496ffd)
  • share one player sweep for the map while RCON is slow (2e500a6) · #247
  • Discord /stats shows the public only what the public leaderboards show (2d748eb) · #247
  • say when a content change fails and ignore stale search results (af75eae)
  • count a scheduled restart down without holding the server's lock (7543f60) · #236
  • let a scheduled backup wait for a busy server, and say when it can't (e8ca52f)
  • show the plan for the latest change only (95ccc26)
  • stop checking pregeneration once you leave the World tab (47c865d)
  • stop an import upload when you leave the page (a2f8079)
  • keep a server's public leaderboards for a few minutes instead of redoing them for every head (062fcfd) · #247
  • public map shows players only when the public page shows names (cd7e8b0) · #247
  • ask before leaving the file editor with unsaved changes (7f4d743)
  • keep file actions in the folder they started in (adafc10)
  • hide file changes from people who can only read files (3b9e4cf)
  • say when the Files tab is view only (abc387b)
  • pin every workflow action by commit (faa15e7)
  • take write access away from the Assistant workflow (cf5eaf4)
  • sign releases in a protected environment (44e4370)
  • sign pull request builds with the test-build key (b022865)
  • give pull request test builds their own signing key (c304af1)

Docs

  • Do it and live values on first server and backups, and how to write them (4ccc30e) · #270
  • labelled screenshots on eight more pages (062c512) · #270
  • labelled screenshots for backups, schedules, people and a new server (b85332b) · #270
  • point backups, schedules, people and first server at the panel (0408e7c) · #270
  • mention --version latest in the 1.4.2 summary (d1e1019)
  • release summaries for 1.4.2 and 1.4.2-native.1 (bdbb755)
  • explain that re-running the installer keeps the installed version (a4f52d8)
  • list --beta and --native, and say what an installer re-run keeps (cfa95a6)
  • make the README feature list version-free and point at the release notes (8b01c7b)
  • map passes run per server and a stuck pass is stopped (ec21e4f)

Other

  • Docs screenshots workflow retakes the pictures and opens a pull request (2f3c34c) · #270
  • e2e: Show me in Help lights up Back up now (5e6388a) · #270
  • site: deploy main straight to flytower.dev, without a separate switch (a50c1c8)
  • site: going live needs the SITE_DEPLOY variable, so merging never deploys by surprise (17c8b5f)
  • finish command-tree builds before their test cleans up (5ddf814) · #248
  • wait for status changes instead of fixed sleeps in tests (e205fee) · #248
  • type-check the panel tests, scripts and E2E tests (07826d6) · #248
  • cover import and log size caps, link checks, stderr and file edits (e4f73a0)
  • skip test builds for docs-only pull requests (cc6af23) · #245
  • build E2E once and share it with the upgrade jobs (cb9b601) · #245
  • only release commits the E2E and upgrade tests passed on (26018a0) · #245
  • check a plain installer re-run keeps the installed version (a948b24)
  • format the public leaderboards cache (5f5019c)
  • drop the unused rightClickEnabled helper (e3e87bd)
  • site: build every change; preview and deploy once Cloudflare secrets exist (69f22fa)

Full diff: v1.4.1...v1.4.2