* Scripts: close every msg_info block with msg_ok
Past-tense msg_info calls that should have been msg_ok, notices that opened a block before a prompt, and blocks without a closing msg_ok. These already left a stale spinner; with core's block stack they would resume it after every later msg_ok.
* Generate passwords with random_password
openssl rand -base64 | tr -dc | head -c returned fewer characters than asked for, and the unfiltered | cut variants put / and + into passwords that end up in DSNs and sed expressions. Secrets an app decodes as base64 are unchanged. Requires community-scripts/core#61.
* Keep data directories through CLEAN_INSTALL instead of copying them
create_backup copied uploads, storage and similar directories twice per update and needed their size again in free space. CLEAN_INSTALL_KEEP moves them aside instead. Only directories the upstream release does not ship, in scripts that restored right after the fetch. Requires community-scripts/core#61.
* Drop the 300s uv timeout overrides
setup_uv exports UV_HTTP_TIMEOUT=600 now; the scripts' 300 only lowered it. Requires community-scripts/core#61.
Replaces the misc/build.func bootstrap with the two-root core loader.
No other change: the engine contract (var_*, update_script, start,
build_container, description) is identical on both engines.
* fix: copy previous user files from /opt/grist_bak
related to issue #2421
* chore: add more logging when running update scripts
they can take a long time, and a user may think its stuck
* feat: create grist helper scripts, and json
create new scripts for https://github.com/gristlabs/grist-core
based on homarr scripts
* fix: move rm of zip into "clean up"
* fix: remove second source
* fix: include 'v' in release messages
* fix: use full path to remove release zip
* fix: update copyright
* fix: combine nodejs installers into one section
* fix: comment spacing
* fix: copy .env file from existing grist_bak dir
* fix: ensure "install:python" is run to install python deps