Commit Graph

7039 Commits

Author SHA1 Message Date
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
4aa9ee54e6 case 4697 - relative date filters use the user's time zone
Token date ranges (*today*, *lastmonth* ...) are built from the user's local
time in clientTimeStamp but were converted to UTC with ToUniversalTime(), the
server's time zone. They are now converted with clientTimeStamp.Offset. Lists
and dashboard widgets share this builder. Deferred: daylight saving edge and
dashboard grouping by UTC day (both need the client's time zone name).
Changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 07:26:55 -07:00
8f7396a021 case 4696 - confirmed resolved by 4711 on a standalone install (record only)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 21:46:20 -07:00
ba84ebf7c9 case 4695 - Visual C++ runtime DLLs shipped with the embedded PostgreSQL
msvcp140.dll, vcruntime140.dll and vcruntime140_1.dll (14.44.35211.0,
Microsoft-signed) in postgres-standalone\bin, app-local, so the embedded
PostgreSQL starts on Windows without the Visual C++ runtime. Changelog;
BUILD.md notes they are replaced by hand.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 21:45:39 -07:00
450acc5ef7 case 4694 - standalone setup stops a running embedded PostgreSQL first
The 8.2.4 and older launchers left PostgreSQL running after the in-app
shutdown, so every standalone upgrade stopped at "files in use" and could not
close it. PrepareToInstall and uninstall now run the installed pg_ctl stop.
Changelog; BUILD.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 21:45:39 -07:00
7959ad9cec case 4735 - manual: travel rate roles, customer service requests by customer contacts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 20:58:27 -07:00
27b56db6b0 case 4735 - role rights match the documentation
Audit of every documented role right against BizRoles, decided with John:
Tech restricted reads tax codes, projects, unit models and meter readings;
Business administration reads server metrics; Accounting no longer enters
meter readings (both meter reading routes checked Unit rights, now meter
reading rights); no Subcontractor roles on memos; integrations: data
operations open to all full staff roles, switching Active and deleting are
Business administration only. Integrated applications page and changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 20:58:27 -07:00
ed641c4985 case 4654 - every direct notification message to a user is delivered
Direct messages are general notifications with no object, so the 12-hour
repeat check in CoreJobNotify (case 3917, keyed on subscription and object)
dropped every message to a user after the first. For general notifications
the check now applies only to the job's own delivery error messages
(DELIVERY_ERROR_NAME). Changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 20:27:34 -07:00