7046 Commits

Author SHA1 Message Date
737951548c case 4765 - changelog: release dates for 8.3.0 and 8.3.1; release procedure sets the date before the build
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8.3.1
2026-10-31 20:23:10 -07:00
1393907bc7 case 4759 - changelog: Linux upgrade script runtime check; 8.3.1 section final
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 18:56:31 -07:00
541d56fc05 case 4751 - manual: subscription service updates, notices, downtime and times
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 17:36:39 -07:00
7d440530b3 case 4762 - direct email to a user: messages say "User", not "Vendor"
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 17:32:20 -07:00
413af08918 case 4761 - emailed report PDFs have the content type application/pdf
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 17:32:19 -07:00
36fe2eaf53 case 4630 - release procedure: client copyright year is automatic
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 17:20:11 -07:00
3c3e431306 devdocs - Deferred: date picker Today/Now use the browser clock, not the time zone override (found in case 4683)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 17:06:46 -07:00
d4bec5b381 case 4739 - changelog; Deferred: fallback fixed, report default zone noted
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:58:28 -07:00
910e022016 devdocs - startsql.bat: PostgreSQL log to a fixed file
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:29:48 -07:00
393a60c57d case 4763 - backup sets to keep must be at least 1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:11:20 -07:00
c52273f284 case 4685 - backup schedule logged at Debug level when it changes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:01:07 -07:00
be500d2279 case 4684 - server log records the next automatic backup at startup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 16:01:06 -07:00
d34adeb321 case 4652 - changelog wording
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 14:57:51 -07:00
e8b3486a9e case 4653 - deleting a record still in use is refused with "in use by" instead of a server error
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 14:57:42 -07:00
6d3b169f23 case 4652 - a record that no longer exists gives "not found" instead of a server error; reports leave it out
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 14:40:01 -07:00
91e8f54074 case 4759 - upgrade from 8.2.4 or older: reminder of the 8.3.0 pre-upgrade step, Linux upgrade scripts check for the .NET 10 runtime
The upgrade overview page has a section for upgrades from 8.2.4 or older, and
the 8.3.1 changelog section opens with a line pointing to it (the "new version
available" notice links to the newest section); the release procedure's
version bump now carries that line into each new section. Both Linux upgrade
scripts first check for the .NET 10 ASP.NET Core runtime and stop with nothing
changed if it is missing (tested on devtest: present, dotnet not found, only
an older runtime). The desktop script's download now uses curl -f, as the
server's does since case 4727, so a failed download stops before files are
removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 09:38:48 -07:00
ea0a3615ee case 4755 - automatic backup no longer skips a day after a restart or a manual backup
SetNextBackup counted "tomorrow" from the day the server started, using the
newest backup file as the last backup, so a restart between midnight and the
backup time (every Thursday reboot), a manual backup, or a backup finishing
after midnight skipped a day. The next backup is now simply the next time the
backup time comes round on the server's clock. A time that happens twice when
the clocks go back runs at the first one only. Tested with a minute-by-minute
simulation over both daylight saving changes (one backup every day; the old
code skipped days) and on the local server. Changelog line; two Deferred
entries (dead inputs, safe headers missing on handler 500s).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 08:27:23 -07:00
3b80f019ad case 4757 - manual revision stamp and copyright year set automatically when the manuals are built
A MkDocs hook (docs/8.0/rev_date.py), used by both manuals, replaces REV-AUTO
and YEAR-AUTO in the copyright line with the date of the last commit that
changed that manual, or today if it has uncommitted changes or git is not
available. A missing placeholder fails the strict build. The customer manual's
stamp had not been updated since 2022. The home page sentence about the stamp
no longer reads like a placeholder. Release procedure step 2, the docs
Dockerfile usage lines and .gitignore (__pycache__) follow.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 07:58:07 -07:00
2968ae7dc7 version bump 8.3.1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 07:50:02 -07:00
bd8896fdb6 case 4754 - licence text: forum registration sentences removed
The AyaNova support forum is being retired, and public registration had been
closed for years. Removes "register on our AyaNova Support Forum" from the
"Data obtained" and "Use and Sharing of Data" sections and the forum data
deletion clause (iv); the purchase information clause becomes (iv).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-30 11:08:34 -07:00
ad5b797854 case 4690 - release procedure: publish order, check downloads before the droplet upgrades
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:25:51 -07:00
903f14ba1d devdocs - CLAUDE.md: check Sockeye for low-level server fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 10:37:33 -07:00
3968302f75 case 4690 - Deferred: browser without a time zone name falls back to New York
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 07:54:20 -07:00
557cca3472 case 4690 - record: final build, staging, devtest, tags
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 18:28:36 -07:00
05cf4df632 case 4690 - manual revision date 2026-10-26
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8.3.0
2026-10-26 17:46:24 -07:00
15094275af case 4690 - changelog for 8.3.0 finalised; two-factor wording on the password page
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 17:46:19 -07:00
d37688494a case 4690 - record: final gate, release candidate build, Cypress 27/27, performance figures
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 17:16:57 -07:00
c19a3b047f case 4690 - Deferred: shutdown ObjectDisposedException is pre-existing, cause and fix recorded
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:46:00 -07:00
1dd6783aff case 4690 - release procedure: release test droplets are temporary
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:42:33 -07:00
be29f49ec1 case 4690 - release procedure: one documented sequence from code-complete to announcement
devdocs/build/RELEASE-PROCEDURE.md replaces John's notes from several info
cases: release order with subscription droplets upgraded before the
announcement, git tagging, scp uploads, the download-back check, upgrade
commands with curl -f, the one-time 8.3.0 droplet steps (harden-830.sh), the
weekly OS update and the full version bump list. BUILD.md's partial version
table now points to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:27:48 -07:00
c6c9e6c5d3 case 4727 - docs: Linux server permissions, service security settings, 127.0.0.1 behind NGINX
Install: program files read only for the service account, config.json 640,
systemd security settings in the service file, and a final step binding
AyaNova to 127.0.0.1 once NGINX works. Upgrade: the pre-8.3.0 step sets the
same permissions instead of re-adding group write on the program folder,
offers the security settings as a drop-in, and the upgrade commands use
curl -fO so a failed download stops before the program files are deleted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:14:05 -07:00
ad5da2ffa5 case 4727 - record: F36 and F38 fixed for hosted, case done
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 14:00:02 -07:00
b9035b93b0 case 4727 - record: F10 moved to case 4736
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:43:35 -07:00
72a64159c4 case 4735 - record marked done
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:50 -07:00
bf1e447eee Docs cases 4699, 4700, 4633, 4661, 4636, 4634, 4623 - record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:31 -07:00
2bcd51c21d case 4636 - docs: v7 migration with two-factor authentication or a default SuperUser password
Turn two-factor authentication off on the AyaNova 8 SuperUser for the
migration (the V8 Migrate plugin can not log in with it). On a server with a
purchased license the SuperUser password must first be changed from the
default (case 4725).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:13 -07:00
4ca6c9b2e3 case 4623 - docs: what the v7 to v8 migration erases and keeps
The erased-database section said "all user entered data ... except"; it now
lists what is erased and what is kept, from the erase code (tax codes are
erased by the migration, AyaNova 7's replace them).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:13 -07:00
5afd804586 case 4634 - docs: checkbox custom fields on existing records
Records created before a True / False custom field was enabled have no value,
so data tables show nothing for them until it is set and saved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:02 -07:00
aca09a8c85 case 4661 - docs: password guidance
Removed the advice to use song lyrics, quotes or poem lines (guessing tools
try those and digit-for-letter swaps first). Now: no length or character
rules; use a password manager or six dice-chosen words from the EFF long
word list; two-factor authentication.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:02 -07:00
8a2b5d4829 case 4633 - docs: backup utility path may contain spaces
Confirmed fixed by the port (pg_dump run directly, no shell): a backup with
AYANOVA_BACKUP_PG_DUMP_PATH in a folder path with spaces works. No manual
workaround to remove; changelog line extended.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:02 -07:00
356c73d854 case 4700 - docs: restore when AyaNova connects with its own PostgreSQL user
pg_restore --no-owner --no-privileges --role=<user>, so the restored tables
belong to that user (otherwise the integrity check stops AyaNova).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:02 -07:00
176a90d3f3 case 4699 - docs: Linux desktop data folder
The manual had users create ~/.ayanova-data with sudo, but AyaNova runs with
sudo so ~ is root's home and that folder was never used. AyaNova creates the
data folder itself; the step now says where it is (/root/.ayanova-data) and
how to choose another location.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:33:02 -07:00
a715c3913c case 4602 - record
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 10:11:41 -07:00
a9be1ba9e7 case 4628 - deleting a work order made from a service request reopens the request
The request's link to the work order item blocked the delete with a database
error (500). Deleting the item now unlinks any request accepted into it and
sets it back to Open, in the same transaction, with a history entry and no
notification. Service request manual page and changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 09:52:34 -07:00
a9d5cab7e5 case 4682 - automatic backup runs at the chosen time on the server's clock all year
The backup time is stored as the UTC moment it meant on the day it was set
and was run at that UTC hour every day, so on servers with daylight saving it
ran an hour off the chosen time for part of the year. SetNextBackup now
recovers the clock time with the stored date's offset and runs it on the
server's local days. No migration. Backup manual page and changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 09:09:50 -07:00
e5b1f1dc14 case 4687 - closed without change, idle cost measured (record only)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 08:24:16 -07:00
c55b2fc723 case 4703 - report script console.error details in render errors
The page log showed console.error objects only as JSHandle@object and errors
without their stack. Each ERROR line is still logged at once; object and
Error arguments are then fetched from the page and added as detail lines
(object JSON, error stack without Puppeteer frames and with file names only).
A failing render waits up to 2 s for pending details. Page log appends are
locked. Report designer manual (Script errors) and changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 08:14:52 -07:00
64edeea874 case 4707 - record; release checklist: Cypress expected server version
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 08:04:48 -07:00
1c97678498 case 4706 - remove the unused RunProgram.Run and its shell helpers
Run, RunWindows (cmd.exe /C), RunLinuxShell (/bin/sh -c) and RunOSX have had
no callers since the backup moved to RunNoShell. Backup through the API and
the integration suite unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 08:02:40 -07:00
b3b7fa6a9d case 4705 - licence fetch and trial request fall back to every licence server
DoFetchAsync rethrew a connection error after the fourth server, so
sockeye.ayanova.com was never tried; it now rethrows after the last one. The
trial request (rvr) went to rockfish only and now uses the same fallback.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 07:43:54 -07:00