all releases all gems

Changelog

See what's new for your app. Features, improvements, and fixes across Avo and its gems, newest first.

Avo 4.4.4

Release notes

For more information and the release video check out the full release page

  • fix: unknown association in a resource URL answers 404 instead of 500 @adrianthedev (#5015)

๐ŸŽธ Features

๐Ÿ› Bug Fixes

  • fix: group labels in the multiple select filter are bold again @Paul-Bob (#5014)
  • fix: quieter group labels in the multiple select filter @Paul-Bob (#5013)
  • fix: lists paginate in Romanian and Norwegian Nynorsk again @Paul-Bob (#5007)
  • fix(ci): pin avo 4.4.3 in the appraisal lockfiles the bump missed @Paul-Bob (#5010)

๐Ÿค– Maintenance

avo-licensing 4.4.1

๐ŸŽธ Features

  • feat(avo-licensing): the status page uses Avo's layout, with the license card filled in @adrianthedev (#516)

๐Ÿ› Bug Fixes

  • test(avo-licensing): read the status from the profile menu's badge @adrianthedev (#513)

Dependency changes

- avo (>= 4.4.0)
+ avo (>= 4.4.3)

avo-mcp_server 4.4.0

๐ŸŽธ Features

  • Configure dynamic filters, audit logging, notifications and meta inside Avo.configure @adrianthedev (#504) (also in avo-ai, avo-api, avo-audit_logging, avo-dynamic_filters, avo-meta, avo-notifications)
  • feat(avo-licensing): the licensing lab @Paul-Bob (#498) (also in avo-api, avo-authorization, avo-dashboards, avo-licensing, avo-record_reordering, avo-scopes)
  • Audit logging: log every change to a model, even outside Avo @Paul-Bob (#419) (also in avo-ai, avo-audit_logging)
  • Add content slots to Calendar and Notifications indexes @adrianthedev (#415) (also in avo-calendar_view, avo-notifications)

๐Ÿ› Bug Fixes

  • fix(avo-mcp_server): a client can't reach the server's bookkeeping by naming it @Paul-Bob (#502)
  • feat(avo-ai, avo-mcp_server): turn chat and MCP on or off per user; custom MCP tools declare their resources @Paul-Bob (#494) (also in avo-ai, avo-menu)
  • Audit logging: passwords and other filtered values no longer reach the activity payload @Paul-Bob (#495) (also in avo-audit_logging)
  • Audit logging: outside_avo logs changes made outside Avo from their PaperTrail version @Paul-Bob (#491) (also in avo-ai, avo-audit_logging)
  • fix(avo-authorization): with a client set, a lapsed license refuses every resource instead of turning policies off @Paul-Bob (#444) (also in avo-api, avo-authorization, avo-kanban)
  • fix(avo-mcp_server): MCP tools leave out associations the policy refuses and read a has_one through its policy scope @Paul-Bob (#436)
  • fix(avo-ai, avo-mcp_server): a new polymorphic type sent without its id is refused, naming the id @Paul-Bob (#393) (also in avo-ai)
  • fix(avo-mcp_server): the connections panel names an owner by to_param, not its primary key @Paul-Bob (#391)
  • fix(avo-mcp_server): MCP tools name and find records by to_param, so apps that hide their primary keys keep them hidden @Paul-Bob (#388)
  • fix(avo-ai, avo-mcp_server): AI and MCP writes go through your resource's fields @Paul-Bob (#385) (also in avo-ai, avo-api)

๐Ÿ’ก Refactor

  • refactor(avo-ai, avo-mcp_server): find records by param through core's find_records @Paul-Bob (#394) (also in avo-ai)
  • refactor(avo-ai, avo-mcp_server): authorize writes against the field that saves them @Paul-Bob (#390) (also in avo-ai, avo-authorization)

๐Ÿค– Maintenance

  • chore(avo-ai, avo-mcp_server, avo-cli): ship 4.4.0 as stable @Paul-Bob (#509) (also in avo-ai, avo-cli, avo-licensing)
  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (#410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (#406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-authorization (>= 4.3.0)
+ avo-authorization (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-ai 4.4.0

๐ŸŽธ Features

  • Configure dynamic filters, audit logging, notifications and meta inside Avo.configure @adrianthedev (#504) (also in avo-api, avo-audit_logging, avo-dynamic_filters, avo-mcp_server, avo-meta, avo-notifications)
  • Audit logging: log every change to a model, even outside Avo @Paul-Bob (#419) (also in avo-audit_logging, avo-mcp_server)
  • Create reusable skills from AI chat @adrianthedev (#402)
  • feat(avo-ai): actions can close the chat window they were run from (AVO-1647) @adrianthedev (#481)
  • feat(avo-ai): pit-core avocado on the Agent button and new-chat page @adrianthedev (#416)
  • feat: plugin keyboard shortcuts can be rebound from config.hotkeys @adrianthedev (#404) (also in avo-advanced_search, avo-custom_controls, avo-kanban)
  • feat(avo-ai): use full-page chat without the floating bar @adrianthedev (#407)
  • feat(avo-ai): search remote MCP tools instead of loading every one @Paul-Bob (#372)
  • feat(avo-ai): pit-core avocado on the retracted chat button @adrianthedev (#377)
  • Add dynamic fields to record chips @adrianthedev (#361)

๐Ÿ› Bug Fixes

  • fix: gem tooltips follow core's text-unless-safe rule @Paul-Bob (#500) (also in avo-audit_logging, avo-dashboards, avo-dynamic_filters)
  • feat(avo-ai, avo-mcp_server): turn chat and MCP on or off per user; custom MCP tools declare their resources @Paul-Bob (#494) (also in avo-mcp_server, avo-menu)
  • Audit logging: outside_avo logs changes made outside Avo from their PaperTrail version @Paul-Bob (#491) (also in avo-audit_logging, avo-mcp_server)
  • Close the remaining write gaps around chat skills @adrianthedev (#486)
  • fix(avo-ai): a query on a column the Index hides matches only rows the user may open @Paul-Bob (#455)
  • test: follow core's 403 refusal and act_on? on runs @Paul-Bob (#447) (also in avo-authorization, avo-forms, avo-nested)
  • fix(avo-ai): the chat reads a record's fields and files only when show? allows it @Paul-Bob (#442)
  • fix(avo-ai): record a typed confirmation, and say the write is running @adrianthedev (#245)
  • fix(avo-ai): development reloads no longer stack copies of the messages helper @Paul-Bob (#397)
  • fix(avo-ai, avo-mcp_server): a new polymorphic type sent without its id is refused, naming the id @Paul-Bob (#393) (also in avo-mcp_server)
  • fix(avo-ai, avo-mcp_server): AI and MCP writes go through your resource's fields @Paul-Bob (#385) (also in avo-api, avo-mcp_server)
  • fix(avo-ai): chat-loader no longer fails to connect on every Avo page @Paul-Bob (#373)
  • Keep field autofocus out of AI chat cards and nested and reactive forms @Paul-Bob (#355) (also in avo-nested, avo-reactive_fields)
  • fix(avo-ai): boot on released ruby_llm when the mcp gem is bundled @Paul-Bob (#371)

๐Ÿ’ก Refactor

  • refactor(avo-ai, avo-mcp_server): find records by param through core's find_records @Paul-Bob (#394) (also in avo-mcp_server)
  • refactor(avo-ai, avo-mcp_server): authorize writes against the field that saves them @Paul-Bob (#390) (also in avo-authorization, avo-mcp_server)

๐Ÿค– Maintenance

  • chore(avo-ai, avo-mcp_server, avo-cli): ship 4.4.0 as stable @Paul-Bob (#509) (also in avo-cli, avo-licensing, avo-mcp_server)
  • Default the avo-ai dummy app to gpt-6-luna @adrianthedev (#487)
  • Move Avo core and website clones to the workspace root @adrianthedev (#413) (also in avo-advanced_search, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-cli, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms)
  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (#410) (also in avo-advanced_search, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (#406) (also in avo-advanced_search, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • avo-ai: require released ruby_llm 2.1, defer the rename tool @adrianthedev (#384)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-authorization (>= 4.3.0)
+ avo-authorization (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)
- ruby_llm (>= 2.0.0.rc4, < 2.1)
+ ruby_llm (~> 2.1)

avo-record_reordering 4.4.0

๐ŸŽธ Features

  • feat(avo-licensing): the licensing lab @Paul-Bob (#498) (also in avo-api, avo-authorization, avo-dashboards, avo-licensing, avo-mcp_server, avo-scopes)

๐Ÿ› Bug Fixes

  • fix(avo-record_reordering): the reorder endpoint refuses a move when the license lacks record reordering @Paul-Bob (v.4.3.2 #449)
  • fix(avo-record_reordering): moving a record needs reorder? on its policy and redirects back only within the app @Paul-Bob (v.4.3.1 #434)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-scopes 4.4.0

๐ŸŽธ Features

  • feat(avo-licensing): the licensing lab @Paul-Bob (#498) (also in avo-api, avo-authorization, avo-dashboards, avo-licensing, avo-mcp_server, avo-record_reordering)
  • feat(avo-scopes): the resource knows which scope its index shows @Paul-Bob (v.4.3.2 #488)

๐Ÿ› Bug Fixes

  • fix(avo-scopes): a scope count asks the same policy as the index it counts @Paul-Bob (v.4.3.1 #432)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-reactive_fields 4.4.0

๐Ÿ› Bug Fixes

  • fix(avo-reactive_fields): stop the missing template format warning on boot @adrianthedev (v.4.3.2 #383)
  • Reactive fields post only when a watched field changes, keep focus where you moved it, and render answers in order @Paul-Bob (v.4.3.1 #379)
  • Keep field autofocus out of AI chat cards and nested and reactive forms @Paul-Bob (v.4.3.1 #355) (also in avo-ai, avo-nested)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.2 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.2 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-notifications 4.4.0

๐ŸŽธ Features

  • Configure dynamic filters, audit logging, notifications and meta inside Avo.configure @adrianthedev (#504) (also in avo-ai, avo-api, avo-audit_logging, avo-dynamic_filters, avo-mcp_server, avo-meta)
  • Add content slots to Calendar and Notifications indexes @adrianthedev (#415) (also in avo-calendar_view, avo-mcp_server)

๐Ÿ› Bug Fixes

  • fix(avo-notifications): a user can only open, delete or act on their own notifications @Paul-Bob (v.4.3.1 #427)
  • fix(avo-notifications, avo-calendar_view): bulk actions and calendar navigation stay in their own has_many panel @Paul-Bob (v.4.3.1 #386) (also in avo-calendar_view)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-forms 4.4.0

๐Ÿ› Bug Fixes

  • test: follow core's 403 refusal and act_on? on runs @Paul-Bob (v.4.3.1 #447) (also in avo-ai, avo-authorization, avo-nested)
  • fix(avo-forms): a form can set self.authorize to refuse opening, submitting and listing it @Paul-Bob (v.4.3.1 #439)

๐Ÿค– Maintenance

  • Move Avo core and website clones to the workspace root @adrianthedev (v.4.3.1 #413) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-cli, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters)
  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-http_resource 4.4.0

๐Ÿ› Bug Fixes

  • fix(avo-http_resource): stop re-loading its lib files at boot @Paul-Bob (#473)
  • fix(avo-http_resource): the debug console runs a probe only when the policy allows that action @Paul-Bob (v.4.3.1 #435)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-menu 4.4.0

๐Ÿ› Bug Fixes

  • feat(avo-ai, avo-mcp_server): turn chat and MCP on or off per user; custom MCP tools declare their resources @Paul-Bob (#494) (also in avo-ai, avo-mcp_server)
  • fix(avo-menu): a sidebar action shows only when the resource's policy allows act_on? @Paul-Bob (v.4.3.1 #445)
  • fix(avo-kanban): kanban routes and all_boards follow the board policy, and cards their record's policy @Paul-Bob (v.4.3.1 #438) (also in avo-kanban)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-nested 4.4.0

๐ŸŽธ Features

  • Delete existing nested records from the parent form @Paul-Bob (#475)

๐Ÿ› Bug Fixes

  • test: follow core's 403 refusal and act_on? on runs @Paul-Bob (v.4.3.2 #447) (also in avo-ai, avo-authorization, avo-forms)
  • fix(avo-nested): a nested form writes only the children the user may update or create @Paul-Bob (v.4.3.2 #430) (also in avo-authorization)
  • Keep field autofocus out of AI chat cards and nested and reactive forms @Paul-Bob (v.4.3.1 #355) (also in avo-ai, avo-reactive_fields)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.2 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.2 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-audit_logging 4.4.0

๐ŸŽธ Features

  • Configure dynamic filters, audit logging, notifications and meta inside Avo.configure @adrianthedev (#504) (also in avo-ai, avo-api, avo-dynamic_filters, avo-mcp_server, avo-meta, avo-notifications)
  • Audit logging: change what an entry stores with a payload proc @Paul-Bob (v.4.3.2 #501)
  • Audit logging: the History card and filter options follow the host's activity policy @Paul-Bob (v.4.3.2 #425)
  • Audit logging: read an activity's record, resource, model and policy in code @Paul-Bob (v.4.3.2 #424)
  • Audit logging: pause logging for a block of code @Paul-Bob (v.4.3.2 #423)
  • Audit logging: log every change to a model, even outside Avo @Paul-Bob (v.4.3.2 #419) (also in avo-ai, avo-mcp_server)
  • Audit logging: record activity from your own code, with or without a user @Paul-Bob (v.4.3.1 #414)

๐Ÿ› Bug Fixes

  • fix: gem tooltips follow core's text-unless-safe rule @Paul-Bob (v.4.3.2 #500) (also in avo-ai, avo-dashboards, avo-dynamic_filters)
  • Audit logging: passwords and other filtered values no longer reach the activity payload @Paul-Bob (v.4.3.2 #495) (also in avo-mcp_server)
  • Audit logging: outside_avo logs changes made outside Avo from their PaperTrail version @Paul-Bob (v.4.3.2 #491) (also in avo-ai, avo-mcp_server)
  • Audit logging: the record opt-in judges the author it records @Paul-Bob (v.4.3.2 #482)
  • fix(avo-audit_logging): Undo needs a user allowed to update the record, and the activity payload hides fields they may not see @Paul-Bob (v.4.3.1 #440)

๐Ÿค– Maintenance

  • avo-audit_logging: dummy sign-in forms come filled in with the seeded admin @Paul-Bob (v.4.3.2 #489)
  • chore: refresh workspace lockfiles @app/avo-buddy (v.4.3.2 #463) (also in avo-collaboration, avo-dashboards, avo-dynamic_filters, avo-licensing, avo-meta)
  • Move Avo core and website clones to the workspace root @adrianthedev (v.4.3.1 #413) (also in avo-advanced_search, avo-ai, avo-api, avo-authorization, avo-calendar_view, avo-cli, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms)
  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

avo-calendar_view 4.4.0

๐ŸŽธ Features

  • Add content slots to Calendar and Notifications indexes @adrianthedev (#415) (also in avo-mcp_server, avo-notifications)

๐Ÿ› Bug Fixes

  • fix(avo-notifications, avo-calendar_view): bulk actions and calendar navigation stay in their own has_many panel @Paul-Bob (v.4.3.1 #386) (also in avo-notifications)

๐Ÿค– Maintenance

  • Move Avo core and website clones to the workspace root @adrianthedev (v.4.3.1 #413) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-cli, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms)
  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-custom_controls 4.4.0

๐ŸŽธ Features

  • Add custom controls to dashboard headers @adrianthedev (#484) (also in avo-dashboards)
  • feat: plugin keyboard shortcuts can be rebound from config.hotkeys @adrianthedev (v.4.3.1 #404) (also in avo-advanced_search, avo-ai, avo-kanban)

๐Ÿค– Maintenance

  • chore(avo-custom_controls): action link specs match the action, not the whole URL @Paul-Bob (v.4.3.2 #457)
  • Move Avo core and website clones to the workspace root @adrianthedev (v.4.3.1 #413) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-cli, avo-collaboration, avo-dashboards, avo-dynamic_filters, avo-forms)
  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-kanban, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)

avo-kanban 4.4.0

๐ŸŽธ Features

  • feat: plugin keyboard shortcuts can be rebound from config.hotkeys @adrianthedev (v.4.3.1 #404) (also in avo-advanced_search, avo-ai, avo-custom_controls)

๐Ÿ› Bug Fixes

  • fix(avo-kanban): a card's # tag shows the record's to_param, not its primary key @Paul-Bob (v.4.3.4 #456)
  • fix(avo-kanban): a card hides Remove and dragging when the policy refuses them, and a column counts only the cards the user sees @Paul-Bob (v.4.3.3 #452)
  • fix(avo-authorization): with a client set, a lapsed license refuses every resource instead of turning policies off @Paul-Bob (v.4.3.2 #444) (also in avo-api, avo-authorization, avo-mcp_server)
  • fix(avo-kanban): kanban routes and all_boards follow the board policy, and cards their record's policy @Paul-Bob (v.4.3.2 #438) (also in avo-menu)

๐Ÿค– Maintenance

  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (v.4.3.1 #410) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-query, avo-reactive_fields, avo-record_reordering, avo-scopes)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (v.4.3.1 #406) (also in avo-advanced_search, avo-ai, avo-api, avo-audit_logging, avo-authorization, avo-calendar_view, avo-collaboration, avo-custom_controls, avo-dashboards, avo-dynamic_filters, avo-forms, avo-http_resource, avo-licensing, avo-mcp_server, avo-menu, avo-meta, avo-nested, avo-notifications, avo-permissions, avo-reactive_fields, avo-record_reordering, avo-scopes)

Dependency changes

- avo (>= 4.3.0)
+ avo (>= 4.4.0)
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)