Skip to content

Version 5.0 - #156

Merged
akbertram merged 10 commits into
masterfrom
version-5.0
Sep 26, 2026
Merged

akbertram merged 10 commits into
masterfrom
version-5.0

Conversation

@akbertram

Copy link
Copy Markdown
Member

Support for the user management changes on the server, new form field types and properties, and test fixes. See NEWS.md for the full release notes.

Potential breaking changes:

  • hideFromEntry now hides a field from data entry (previously it hid the field from the table), hideInTable now hides a field from the table (previously ignored), and reviewerOnly now restricts a field to reviewers (previously ignored)
  • Databases are no longer required to have an individual owner. getDatabases() and getBillingAccountDatabases() return NA for the owner columns rather than failing
  • User fields are now identified correctly, so getRecords() includes them as columns with minimalColumnStyle()

New features:

  • noteFieldSchema() for note fields, which are not included as columns in getRecords()
  • multipleReferenceFieldSchema() for multiple reference fields, with support in importRecords()
  • requiredRule and validationMessage arguments for form field schemas, and the corresponding columns in as.data.frame() of a form schema

Testing:

  • Tests updated for testthat 3.3, for newer servers, and to not depend on the pandoc and rmarkdown versions
  • The TEST_URL secret now points at https://pr-1986.activityinfo-testing.org, which runs the feature-user-management branch of the server. It will need to be updated when that environment is removed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp

akbertram and others added 10 commits September 25, 2026 21:42
Databases are no longer required to have an owner, so the server may
return a null ownerId/owner/ownerRef. getDatabases() and
getBillingAccountDatabases() now return NA for missing owner fields
rather than failing to build the data frame.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
… messages

- Add noteFieldSchema() and multipleReferenceFieldSchema(), with
  schema classes for both types when reading form schemas
- Add requiredRule and validationMessage arguments to field schemas
  and columns to as.data.frame() of form schemas
- Exclude notes from getRecords() columns
- Support multiple reference fields in importRecords()
- Fix hideFromEntry, hideInTable and reviewerOnly, which were not
  applied correctly to the field schema
- Fix user fields being classed as reference fields

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
- compare_recursively() reports a missing field as a single failure,
  as expect_failure() now requires exactly one failure
- Selecting after a filter no longer fails on the server, so check the
  filtered result instead of expecting an error
- Ignore the database tree version in the snapshot comparison, as its
  value and format depend on the server
- Snapshot only the text of the rendered Rmd body, as the rest of the
  html depends on the pandoc and rmarkdown versions

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
The test servers only return databases with or without an owner
depending on their version, so use fixed responses to always test both.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
…udit fields

- getDatabases() and getBillingAccountDatabases() failed when the server
  returned a null description, as the self-managed server does
- The lastRecordUpdate column of getBillingAccountDatabases() became
  logical when no database had records
- queryAuditLog() failed on events with none or several resourceTypes;
  these are now combined into a single comma-separated value

Also test these cases with fixed server responses.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
- Limit test ids to 21 characters, the maximum that the self-managed
  server accepts
- Treat null and empty strings as equal in snapshot comparisons, as the
  self-managed server returns null for empty strings

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MfjP16HSkanSsjZFVy8qPp
@akbertram
akbertram merged commit 0cd5b3e into master Sep 26, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant