all releases all gems

minor release

4.4.0

avo gem · info and install
avo

4.4.0 at a glance

🎸 Features 🐛 Fixes 🧰 Other changes 🔀 Total contributions 📦 Packages 🙌 Contributors
55 97 55 207 23 9

Now stable: avo-ai, avo-mcp_server and avo-cli leave beta with 4.4.0.

🎸 Features

  • feat: a flat button style @adrianthedev (avo v.4.4.0 #4996)
  • feat: a plugin reports its own settings to telemetry @adrianthedev (avo v.4.4.0 #4993)
  • Setting an add-on's options without its gem names the gem to install @adrianthedev (avo v.4.4.0 #4994)
  • feat: a plugin's row on the status page can carry a marker from its gem @Paul-Bob (avo v.4.4.0 #4991)
  • feat: setting to keep the admin running without a valid license @Paul-Bob (avo v.4.3.13 #4980)
  • Add resource view slots and lazy default replacements @adrianthedev (avo v.4.3.11 #4944)
  • Share native control rendering with dashboard headers @adrianthedev (avo v.4.3.11 #4971)
  • Status page at /status with update badges, Update all and release notes @adrianthedev (avo v.4.3.11 #4963)
  • Add before/after attach and detach hooks to association fields @Paul-Bob (avo v.4.3.11 #4969)
  • Persist sorting, selection and index pagination, with a toggle per kind of state @Paul-Bob (avo v.4.3.11 #4959)
  • Add opt-in commit and push to avo:update @adrianthedev (avo v.4.3.10 #4956)
  • feat: delete confirmation names the records the destroy cascades to @Paul-Bob (avo v.4.3.8 #4948)
  • Add refresh_on_destroy option to has_many fields @Paul-Bob (avo v.4.3.8 #4947)
  • feat: static telemetry counts scopes @adrianthedev (avo v.4.3.6 #4945)
  • feat: static telemetry collector without identifying data @adrianthedev (avo v.4.3.6 #4940)
  • feat: developers can rebind or disable any keyboard shortcut @adrianthedev (avo v.4.3.6 #4934)
  • feat: array resources can paginate at the source with page and per_page @Paul-Bob (avo v.4.3.6 #4928)
  • Show date picker month and weekday names in the app locale @Shub3am (avo v.4.3.2 #4873)
  • Use the model's attribute translations for field labels @Shub3am (avo v.4.3.2 #4869)
  • Let actions hide the confirm and cancel buttons @Shub3am (avo v.4.3.2 #4868)
  • Support link_to_record on number and date fields @Shub3am (avo v.4.3.2 #4871)
  • feat(key_value): suggest keys and values while editing @nnegi88 (avo v.4.3.1 #4866)
  • Add autofocus field option @Shub3am (avo v.4.3.1 #4853)
  • feat: plugin keyboard shortcuts can be rebound from config.hotkeys @adrianthedev (avo-advanced_search v.4.3.2, avo-ai v.4.4.0, avo-custom_controls v.4.3.1, avo-kanban v.4.3.1 #404)
  • Configure dynamic filters, audit logging, notifications and meta inside Avo.configure @adrianthedev (avo-ai v.4.4.0, avo-api v.4.4.0, avo-audit_logging v.4.4.0, avo-dynamic_filters v.4.4.0, avo-mcp_server v.4.4.0, avo-notifications v.4.4.0 #504)
  • Audit logging: log every change to a model, even outside Avo @Paul-Bob (avo-ai v.4.4.0, avo-audit_logging v.4.3.2, avo-mcp_server v.4.4.0 #419)
  • Create reusable skills from AI chat @adrianthedev (avo-ai v.4.4.0 #402)
  • feat(avo-ai): actions can close the chat window they were run from (AVO-1647) @adrianthedev (avo-ai v.4.4.0 #481)
  • feat(avo-ai): pit-core avocado on the Agent button and new-chat page @adrianthedev (avo-ai v.4.4.0 #416)
  • feat(avo-ai): use full-page chat without the floating bar @adrianthedev (avo-ai v.4.4.0 #407)
  • feat(avo-ai): search remote MCP tools instead of loading every one @Paul-Bob (avo-ai v.4.4.0 #372)
  • feat(avo-ai): pit-core avocado on the retracted chat button @adrianthedev (avo-ai v.4.4.0 #377)
  • Add dynamic fields to record chips @adrianthedev (avo-ai v.4.4.0 #361)
  • feat(avo-licensing): the licensing lab @Paul-Bob (avo-api v.4.4.0, avo-authorization v.4.4.0, avo-dashboards v.4.4.0, avo-licensing v.4.4.0, avo-mcp_server v.4.4.0, avo-record_reordering v.4.4.0, avo-scopes v.4.4.0 #498)
  • Audit logging: change what an entry stores with a payload proc @Paul-Bob (avo-audit_logging v.4.3.2 #501)
  • Audit logging: the History card and filter options follow the host's activity policy @Paul-Bob (avo-audit_logging v.4.3.2 #425)
  • Audit logging: read an activity's record, resource, model and policy in code @Paul-Bob (avo-audit_logging v.4.3.2 #424)
  • Audit logging: pause logging for a block of code @Paul-Bob (avo-audit_logging v.4.3.2 #423)
  • Audit logging: record activity from your own code, with or without a user @Paul-Bob (avo-audit_logging v.4.3.1 #414)
  • feat(avo-licensing): the admin blocks on a license it cannot confirm @Paul-Bob (avo-authorization v.4.4.0, avo-licensing v.4.4.0 #499)
  • Add content slots to Calendar and Notifications indexes @adrianthedev (avo-calendar_view v.4.4.0, avo-mcp_server v.4.4.0, avo-notifications v.4.4.0 #415)
  • feat(avo-collaboration): watchers take an author proc and can hide values @adrianthedev (avo-collaboration v.4.3.1 #395)
  • Add custom controls to dashboard headers @adrianthedev (avo-custom_controls v.4.4.0, avo-dashboards v.4.3.4 #484)
  • Load dashboard cards on scroll, and on click for manual cards @Paul-Bob (avo-dashboards v.4.4.0 #483)
  • feat(avo-dynamic_filters): pinned and inline filters, and a new filter dropdown @adrianthedev (avo-dynamic_filters v.4.4.0 #405)
  • Dynamic filters stay applied across visits when session persistence is on @Paul-Bob (avo-dynamic_filters v.4.3.2 #469)
  • feat(avo-licensing): the status page marks add-ons the license doesn't include as off @Paul-Bob (avo-licensing v.4.4.0 #503)
  • feat(avo-licensing): the trial notice asks an Avo 4 trial beside Avo 3 to migrate on Avo HQ @Paul-Bob (avo-licensing v.4.3.4 #458)
  • feat(avo-licensing): build the HQ payload from core's static telemetry @adrianthedev (avo-licensing v.4.3.1 #412)
  • Delete existing nested records from the parent form @Paul-Bob (avo-nested v.4.4.0 #475)
  • feat(avo-scopes): the resource knows which scope its index shows @Paul-Bob (avo-scopes v.4.3.2 #488)

✨ Enhancements

  • enhancement: select all on the grid view @Paul-Bob (avo v.4.3.10 #4955)
  • enhancement: index_query in action fields, messages, and the grid view @Paul-Bob (avo v.4.3.10 #4949)
  • enhancement: dropdown rows share one hover fill and drop the focus ring @adrianthedev (avo v.4.3.6 #4935)
  • Badge field: select on forms with show_on: :forms @Shub3am (avo v.4.3.1 #4858)

🐛 Bug Fixes

  • fix: ignore encoded_filters values that don't decode to filters @officialasishkumar (avo v.4.4.0 #4989)
  • fix: deleting a Media Library file removes it from its records, and the confirm says so @Paul-Bob (avo v.4.4.0 #4998)
  • fix: distribution chart adds up the counts of values sharing a label @officialasishkumar (avo v.4.4.0 #4988)
  • fix: Media Library delete removes the file and refuses attached blobs @officialasishkumar (avo v.4.4.0 #4987)
  • fix: a refused page keeps the panel's JavaScript, and a refused DELETE can't replay @Paul-Bob (avo v.4.4.0 #4983)
  • Status and updates pages compile through Herb, and CI checks it @adrianthedev (avo v.4.3.12 #4981)
  • Keep a lazy index's header description in step with its frame @Paul-Bob (avo v.4.3.11 #4973)
  • Show the dedicated search results shortcut badge @adrianthedev (avo v.4.3.11 #4968)
  • Run the host Avo initializer once at boot, and take prop_initializer 0.5.0 @Paul-Bob (avo v.4.3.11 #4966)
  • fix: stop grid view cache logging missing templates and refresh cached cards after upgrades @Paul-Bob (avo v.4.3.11 #4965)
  • belongs_to select keeps its value past the lookup limit and says when it's capped @adrianthedev (avo v.4.3.11 #4962)
  • fix: remove unused resource_table and resource_grid helpers @Paul-Bob (avo v.4.3.11 #4960)
  • fix: run actions only on records the policy allows, and answer a refusal with nowhere to go back to with a 403 @Paul-Bob (avo v.4.3.9 #4951)
  • test: scope the HABTM detach spec to the users panel @Paul-Bob (avo v.4.3.8 #4950)
  • fix: the index header no longer leaves a gap for an empty toolbar row @adrianthedev (avo v.4.3.6 #4933)
  • fix: the tags field loading spinner is vertically centered on the text @Paul-Bob (avo v.4.3.6 #4932)
  • fix: Backspace after pasting into a selected tag deletes one character, not the whole paste @Paul-Bob (avo v.4.3.6 #4931)
  • fix: escape query values appended by URIService @RaphaelFakhri (avo v.4.3.6 #4926)
  • fix: pasting into a tags field in select mode no longer drops the text @Paul-Bob (avo v.4.3.6 #4922)
  • fix: development reloads no longer stack copies of Avo's turbo stream actions @Paul-Bob (avo v.4.3.6 #4929)
  • fix: a polymorphic belongs_to sent only a new type no longer links a record by the old id @Paul-Bob (avo v.4.3.5 #4917)
  • A belongs_to among attach_fields now saves onto the join record @Paul-Bob (avo v.4.3.5 #4919)
  • A form with a belongs_to that matches no record keeps the user's other edits @Paul-Bob (avo v.4.3.5 #4915)
  • Attaching a has_many, has_one or HABTM record saves only what its attach_scope offers @Paul-Bob (avo v.4.3.5 #4916)
  • A belongs_to value that matches no record is a form error, not a 404 @Paul-Bob (avo v.4.3.5 #4911)
  • Key association listings by field id @joeljunstrom (avo v.4.3.4 #4902)
  • fix: let fill_field take typed JSON values, not only form strings @Paul-Bob (avo v.4.3.4 #4910)
  • fix: enforce key_value field disable_* options when saving @Paul-Bob (avo v.4.3.4 #4909)
  • fix: disable non-standalone actions on has_many panels until a record is selected @Paul-Bob (avo v.4.3.3 #4904)
  • Allowlist dummy associations for Ransack 6 combinator searches @nnegi88 (avo v.4.3.3 #4901)
  • Fetch tag suggestions again after a value is selected in select mode @Shub3am (avo v.4.3.2 #4872)
  • fix: boolean group field stops writing an option's key twice, so json 3 can encode it @Paul-Bob (avo v.4.3.2 #4895)
  • fix(i18n): store set_locale only after authentication (GHSA-h7x6-9mqf-vgmx) @Paul-Bob (avo v.4.3.1 #4893)
  • fix(i18n): ignore unknown locales in set_locale and force_locale, deprecate set_locale @bruno-costanzo (avo v.4.3.1 #4886)
  • fix: stop mapping budget and money columns to the removed currency field @afurm (avo v.4.3.1 #4890)
  • Reactive fields post only when a watched input changes @Paul-Bob (avo v.4.3.1 #4887)
  • Fix country field default storing the country name instead of the code @Paul-Bob (avo v.4.3.1 #4885)
  • Fix accessibility gaps: name the modal dialog, give tabs unique ids, point belongs_to labels at the select, name icon-only actions @Paul-Bob (avo v.4.3.1 #4880)
  • fix(index): keep selected rows and scroll position when going back from a record @nnegi88 (avo v.4.3.1 #4867)
  • Make page-only global search highlight the Enter destination @adrianthedev (avo-advanced_search v.4.4.0 #477)
  • Searchable belongs_to: only the visible search input carries the field id @Paul-Bob (avo-advanced_search v.4.3.1 #374)
  • fix: gem tooltips follow core's text-unless-safe rule @Paul-Bob (avo-ai v.4.4.0, avo-audit_logging v.4.3.2, avo-dashboards v.4.3.4, avo-dynamic_filters v.4.3.2 #500)
  • feat(avo-ai, avo-mcp_server): turn chat and MCP on or off per user; custom MCP tools declare their resources @Paul-Bob (avo-ai v.4.4.0, avo-mcp_server v.4.4.0, avo-menu v.4.4.0 #494)
  • Audit logging: outside_avo logs changes made outside Avo from their PaperTrail version @Paul-Bob (avo-ai v.4.4.0, avo-audit_logging v.4.3.2, avo-mcp_server v.4.4.0 #491)
  • Close the remaining write gaps around chat skills @adrianthedev (avo-ai v.4.4.0 #486)
  • fix(avo-ai): a query on a column the Index hides matches only rows the user may open @Paul-Bob (avo-ai v.4.4.0 #455)
  • test: follow core's 403 refusal and act_on? on runs @Paul-Bob (avo-ai v.4.4.0, avo-authorization v.4.3.3, avo-forms v.4.3.1, avo-nested v.4.3.2 #447)
  • fix(avo-ai): the chat reads a record's fields and files only when show? allows it @Paul-Bob (avo-ai v.4.4.0 #442)
  • fix(avo-ai): record a typed confirmation, and say the write is running @adrianthedev (avo-ai v.4.4.0 #245)
  • fix(avo-ai): development reloads no longer stack copies of the messages helper @Paul-Bob (avo-ai v.4.4.0 #397)
  • fix(avo-ai, avo-mcp_server): a new polymorphic type sent without its id is refused, naming the id @Paul-Bob (avo-ai v.4.4.0, avo-mcp_server v.4.4.0 #393)
  • fix(avo-ai, avo-mcp_server): AI and MCP writes go through your resource's fields @Paul-Bob (avo-ai v.4.4.0, avo-api v.4.3.1, avo-mcp_server v.4.4.0 #385)
  • fix(avo-ai): chat-loader no longer fails to connect on every Avo page @Paul-Bob (avo-ai v.4.4.0 #373)
  • Keep field autofocus out of AI chat cards and nested and reactive forms @Paul-Bob (avo-ai v.4.4.0, avo-nested v.4.3.1, avo-reactive_fields v.4.3.1 #355)
  • fix(avo-ai): boot on released ruby_llm when the mcp gem is bundled @Paul-Bob (avo-ai v.4.4.0 #371)
  • fix(avo-api): belongs_to and has_one ids read as the related record's to_param, a string @Paul-Bob (avo-api v.4.4.0 #454)
  • fix(avo-api): the gem no longer sets root_path, license_key or current_user_method in your app @Paul-Bob (avo-api v.4.4.0 #453)
  • fix(avo-authorization): with a client set, a lapsed license refuses every resource instead of turning policies off @Paul-Bob (avo-api v.4.3.1, avo-authorization v.4.3.3, avo-kanban v.4.3.2, avo-mcp_server v.4.4.0 #444)
  • fix(avo-api): the shipped initializer no longer sets the authorization client @Paul-Bob (avo-api v.4.3.1 #446)
  • fix(avo-api): association fields follow view_? and the related policy scope @Paul-Bob (avo-api v.4.3.1 #431)
  • fix(avo-api): a belongs_to id that matches no record answers 422 naming the field @Paul-Bob (avo-api v.4.3.1 #389)
  • Audit logging: passwords and other filtered values no longer reach the activity payload @Paul-Bob (avo-audit_logging v.4.3.2, avo-mcp_server v.4.4.0 #495)
  • Audit logging: the record opt-in judges the author it records @Paul-Bob (avo-audit_logging 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 (avo-audit_logging v.4.3.1 #440)
  • fix(avo-licensing): keep the status page reachable at /status @adrianthedev (avo-authorization v.4.4.0, avo-licensing v.4.4.0 #470)
  • fix(avo-nested): a nested form writes only the children the user may update or create @Paul-Bob (avo-authorization v.4.3.3, avo-nested v.4.3.2 #430)
  • fix(avo-authorization): repeated Avo boots no longer stack copies of the items extension @Paul-Bob (avo-authorization v.4.3.2 #396)
  • fix(avo-authorization): agent skill tells Action Policy clients to pass the rule as a Symbol @Paul-Bob (avo-authorization v.4.3.1 #382)
  • fix(avo-notifications, avo-calendar_view): bulk actions and calendar navigation stay in their own has_many panel @Paul-Bob (avo-calendar_view v.4.3.1, avo-notifications v.4.3.1 #386)
  • fix(avo-collaboration): a reaction can only be added with an emoji the resource offers @Paul-Bob (avo-collaboration v.4.3.3 #450)
  • fix(avo-collaboration): timeline requests need access to the record and its timeline @Paul-Bob (avo-collaboration v.4.3.2 #433)
  • Fix clipped text descenders in dashboard list cards @adrianthedev (avo-dashboards v.4.3.3 #461)
  • fix(avo-dashboards): a card's URL asks what the page that renders it asks @Paul-Bob (avo-dashboards v.4.3.2 #437)
  • fix(avo-dashboards): a card keeps to the ranges it lists @adrianthedev (avo-dashboards v.4.3.2 #422)
  • test(avo-dashboards): cover resource cards on the page behind an action modal @Paul-Bob (avo-dashboards v.4.3.1 #376)
  • Dynamic filters specs wait for the filter to apply before asserting @Paul-Bob (avo-dynamic_filters v.4.3.2 #480)
  • Dynamic filters ignore Enter pressed to confirm an IME conversion @Paul-Bob (avo-dynamic_filters v.4.3.2 #474)
  • fix(avo-dynamic_filters): a filter applies only the conditions it offers @Paul-Bob (avo-dynamic_filters v.4.3.1 #429)
  • fix(avo-forms): a form can set self.authorize to refuse opening, submitting and listing it @Paul-Bob (avo-forms v.4.3.1 #439)
  • fix(avo-http_resource): stop re-loading its lib files at boot @Paul-Bob (avo-http_resource v.4.4.0 #473)
  • fix(avo-http_resource): the debug console runs a probe only when the policy allows that action @Paul-Bob (avo-http_resource v.4.3.1 #435)
  • fix(avo-kanban): a card's # tag shows the record's to_param, not its primary key @Paul-Bob (avo-kanban 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 (avo-kanban v.4.3.3 #452)
  • fix(avo-kanban): kanban routes and all_boards follow the board policy, and cards their record's policy @Paul-Bob (avo-kanban v.4.3.2, avo-menu v.4.3.1 #438)
  • Stop logging a missing valid_indicator template at boot on view_component 4.20 @Paul-Bob (avo-licensing v.4.4.0 #471)
  • fix(avo-licensing): an anonymous visitor can no longer get the license blocked with a forged Host header @Paul-Bob (avo-licensing v.4.3.3 #441)
  • fix(avo-mcp_server): a client can't reach the server's bookkeeping by naming it @Paul-Bob (avo-mcp_server v.4.4.0 #502)
  • fix(avo-mcp_server): MCP tools leave out associations the policy refuses and read a has_one through its policy scope @Paul-Bob (avo-mcp_server v.4.4.0 #436)
  • fix(avo-mcp_server): the connections panel names an owner by to_param, not its primary key @Paul-Bob (avo-mcp_server v.4.4.0 #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 (avo-mcp_server v.4.4.0 #388)
  • fix(avo-menu): a sidebar action shows only when the resource's policy allows act_on? @Paul-Bob (avo-menu v.4.3.1 #445)
  • fix(avo-notifications): a user can only open, delete or act on their own notifications @Paul-Bob (avo-notifications v.4.3.1 #427)
  • fix(avo-reactive_fields): stop the missing template format warning on boot @adrianthedev (avo-reactive_fields 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 (avo-reactive_fields v.4.3.1 #379)
  • fix(avo-record_reordering): the reorder endpoint refuses a move when the license lacks record reordering @Paul-Bob (avo-record_reordering 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 (avo-record_reordering v.4.3.1 #434)
  • fix(avo-scopes): a scope count asks the same policy as the index it counts @Paul-Bob (avo-scopes v.4.3.1 #432)

🧪 Test

  • Test that a belongs_to target outside the user's policy scope is refused like a missing one @Paul-Bob (avo v.4.3.5 #4912)

✏️ Docs

  • agents.md explains why license_123 only works for avo core @Paul-Bob (avo v.4.3.11 #4964)
  • docs(skills): an Avo 4 trial beside Avo 3 is a third amber trial state @Paul-Bob (avo v.4.3.10 #4952)
  • Add a spec that has_many panels apply the listed resource's policy scope @Paul-Bob (avo v.4.3.5 #4914)
  • Mark set_locale deprecated in the i18n skill @Paul-Bob (avo v.4.3.1 #4892)
  • Stop the admin-config skill tying config.currency to removed currency fields @Paul-Bob (avo v.4.3.1 #4891)
  • docs(avo-authorization): the agent skill says a policy scope filters has_many panels @Paul-Bob (avo-authorization v.4.3.2 #392)

💡 Refactor

  • Resources get find_records, and bulk actions find the selected records with it @Paul-Bob (avo v.4.3.5 #4918)
  • Save a form through the field declaration the form shows @Paul-Bob (avo v.4.3.5 #4913)
  • refactor(avo-ai, avo-mcp_server): find records by param through core's find_records @Paul-Bob (avo-ai v.4.4.0, avo-mcp_server v.4.4.0 #394)
  • refactor(avo-ai, avo-mcp_server): authorize writes against the field that saves them @Paul-Bob (avo-ai v.4.4.0, avo-authorization v.4.3.2, avo-mcp_server v.4.4.0 #390)

🤖 Maintenance

  • [ruby] Update all Bundler dependencies (2026-10-29) @app/depfu (avo v.4.4.0 #4954)
  • [js] Update all Yarn dependencies (2026-11-05) @app/depfu (avo v.4.4.0 #4979)
  • [ruby] Update all of rails 8.1.4 → 8.1.4.1 (minor) @app/depfu (avo v.4.4.0 #4982)
  • docs(skills): the paused admin retries the license every minute @Paul-Bob (avo v.4.4.0 #4997)
  • chore: the licensing skills say access is paused, never blocked or locked @Paul-Bob (avo v.4.4.0 #4995)
  • chore: PR descriptions show avo.gemspec dependency changes @Paul-Bob (avo v.4.3.12 #4978)
  • Release notes file Dependabot PRs under Maintenance @Paul-Bob (avo v.4.3.12 #4976)
  • chore(deps): bump minimatch from 3.1.2 to 3.1.5 in the npm_and_yarn group across 1 directory @app/dependabot (avo v.4.3.11 #4923)
  • Sync shipped skills with docs through c5b0263 (2026-11-03) @adrianthedev (avo v.4.3.11 #4972)
  • Sync shipped skills with docs through 151d7b0 (2026-11-02) @adrianthedev (avo v.4.3.11 #4900)
  • Describe Avo as an admin panel framework in the gemspec @adrianthedev (avo v.4.3.11 #4967)
  • [js] Update all Yarn dependencies (2026-10-29) @app/depfu (avo v.4.3.10 #4953)
  • Share the status page plugin list with avo-licensing @adrianthedev (avo v.4.3.7 #4946)
  • fix: make row clicks reliable and support middle-click @adrianthedev (avo v.4.3.6 #4939)
  • fix(dummy): ArrayValues controller and Playground array field records @adrianthedev (avo v.4.3.6 #4938)
  • chore: prepare repository for Amp orbs @adrianthedev (avo v.4.3.6 #4937)
  • The RubyGems homepage link now opens avohq.io/gems/avo @adrianthedev (avo v.4.3.6 #4936)
  • Link plugins on the status page to their avohq.io gem pages @adrianthedev (avo v.4.3.5 #4924)
  • chore(deps): bump markdown-it from 14.3.2 to 14.3.3 in the npm_and_yarn group across 1 directory @app/dependabot (avo v.4.3.5 #4907)
  • Label docs-sync PRs as Chore @Paul-Bob (avo v.4.3.4 #4908)
  • [ruby] Update all Bundler dependencies (2026-10-22) @app/depfu (avo v.4.3.4 #4906)
  • [js] Update all Yarn dependencies (2026-10-22) @app/depfu (avo v.4.3.4 #4905)
  • [js] Update all Yarn dependencies (2026-10-15) @app/depfu (avo v.4.3.3 #4897)
  • [ruby] Update all Bundler dependencies (2026-10-15) @app/depfu (avo v.4.3.3 #4898)
  • Sync shipped skills with docs through f6cae23 (2026-10-14) @adrianthedev (avo v.4.3.3 #4896)
  • [ruby] Update all Bundler dependencies (2026-10-08) @app/depfu (avo v.4.3.2 #4876)
  • Sync shipped skills with docs through 372e001 (2026-10-14) @adrianthedev (avo v.4.3.1 #4889)
  • Sync shipped skills with docs through 67e0e5d (2026-10-13) @adrianthedev (avo v.4.3.1 #4881)
  • chore(deps): bump the npm_and_yarn group across 1 directory with 2 updates @app/dependabot (avo v.4.3.1 #4879)
  • Sync shipped skills with docs through 8e4140b (2026-10-07) @adrianthedev (avo v.4.3.1 #4874)
  • [js] Update all Yarn dependencies (2026-10-08) @app/depfu (avo v.4.3.1 #4875)
  • Sync shipped skills with docs through c73b294 (2026-10-06) @adrianthedev (avo v.4.3.1 #4814)
  • Move Avo core and website clones to the workspace root @adrianthedev (avo-advanced_search v.4.3.2, avo-ai v.4.4.0, avo-api v.4.3.1, avo-audit_logging v.4.3.1, avo-authorization v.4.3.2, avo-calendar_view v.4.3.1, avo-cli v.4.4.0, avo-collaboration v.4.3.2, avo-custom_controls v.4.3.1, avo-dashboards v.4.3.2, avo-dynamic_filters v.4.3.1, avo-forms v.4.3.1 #413)
  • chore: dummy apps boot on the next free port when theirs is taken @adrianthedev (avo-advanced_search v.4.3.2, avo-ai v.4.4.0, avo-api v.4.3.1, avo-audit_logging v.4.3.1, avo-authorization v.4.3.2, avo-calendar_view v.4.3.1, avo-collaboration v.4.3.2, avo-custom_controls v.4.3.1, avo-dashboards v.4.3.2, avo-dynamic_filters v.4.3.1, avo-forms v.4.3.1, avo-http_resource v.4.3.1, avo-kanban v.4.3.1, avo-mcp_server v.4.4.0, avo-menu v.4.3.1, avo-nested v.4.3.2, avo-notifications v.4.3.1, avo-reactive_fields v.4.3.2, avo-record_reordering v.4.3.1, avo-scopes v.4.3.1 #410)
  • RubyGems homepage links now open each gem's page on avohq.io @adrianthedev (avo-advanced_search v.4.3.2, avo-ai v.4.4.0, avo-api v.4.3.1, avo-audit_logging v.4.3.1, avo-authorization v.4.3.2, avo-calendar_view v.4.3.1, avo-collaboration v.4.3.2, avo-custom_controls v.4.3.1, avo-dashboards v.4.3.2, avo-dynamic_filters v.4.3.1, avo-forms v.4.3.1, avo-http_resource v.4.3.1, avo-kanban v.4.3.1, avo-licensing v.4.3.1, avo-mcp_server v.4.4.0, avo-menu v.4.3.1, avo-nested v.4.3.2, avo-notifications v.4.3.1, avo-reactive_fields v.4.3.2, avo-record_reordering v.4.3.1, avo-scopes v.4.3.1 #406)
  • chore(avo-ai, avo-mcp_server, avo-cli): ship 4.4.0 as stable @Paul-Bob (avo-ai v.4.4.0, avo-cli v.4.4.0, avo-licensing v.4.4.0, avo-mcp_server v.4.4.0 #509)
  • Default the avo-ai dummy app to gpt-6-luna @adrianthedev (avo-ai v.4.4.0 #487)
  • avo-ai: require released ruby_llm 2.1, defer the rename tool @adrianthedev (avo-ai v.4.4.0 #384)
  • avo-audit_logging: dummy sign-in forms come filled in with the seeded admin @Paul-Bob (avo-audit_logging v.4.3.2 #489)
  • chore: refresh workspace lockfiles @app/avo-buddy (avo-audit_logging v.4.3.2, avo-collaboration v.4.4.0, avo-dashboards v.4.3.4, avo-dynamic_filters v.4.3.2, avo-licensing v.4.4.0 #463)
  • Test that avo-authorization refuses denied records on the association show route @Paul-Bob (avo-authorization v.4.3.2 #387)
  • chore(avo-custom_controls): action link specs match the action, not the whole URL @Paul-Bob (avo-custom_controls v.4.3.2 #457)
  • chore(avo-licensing): access is paused, never blocked, in the words customers read @Paul-Bob (avo-licensing v.4.4.0 #505)
  • Link plugins to their avohq.io gem pages on the licensing status page @adrianthedev (avo-licensing v.4.3.2 #418)

Dependency changes

@@ avo-advanced_search v.4.4.0, avo-ai v.4.4.0, avo-api v.4.4.0, avo-authorization v.4.4.0, avo-calendar_view v.4.4.0, avo-collaboration v.4.4.0, avo-custom_controls v.4.4.0, avo-dashboards v.4.4.0, avo-dynamic_filters v.4.4.0, avo-forms v.4.4.0, avo-http_resource v.4.4.0, avo-kanban v.4.4.0, avo-licensing v.4.4.0, avo-mcp_server v.4.4.0, avo-menu v.4.4.0, avo-nested v.4.4.0, avo-notifications v.4.4.0, avo-reactive_fields v.4.4.0, avo-record_reordering v.4.4.0, avo-scopes v.4.4.0 @@
- avo (>= 4.3.0)
+ avo (>= 4.4.0)
@@ avo-advanced_search v.4.4.0, avo-ai v.4.4.0, avo-api v.4.4.0, avo-authorization v.4.4.0, avo-calendar_view v.4.4.0, avo-collaboration v.4.4.0, avo-custom_controls v.4.4.0, avo-dashboards v.4.4.0, avo-dynamic_filters v.4.4.0, avo-forms v.4.4.0, avo-http_resource v.4.4.0, avo-kanban v.4.4.0, avo-mcp_server v.4.4.0, avo-menu v.4.4.0, avo-nested v.4.4.0, avo-notifications v.4.4.0, avo-reactive_fields v.4.4.0, avo-record_reordering v.4.4.0, avo-scopes v.4.4.0 @@
- avo-licensing (>= 4.3.0)
+ avo-licensing (>= 4.4.0)
@@ avo-ai v.4.4.0, avo-mcp_server v.4.4.0 @@
- avo-authorization (>= 4.3.0)
+ avo-authorization (>= 4.4.0)
@@ avo-ai v.4.4.0 @@
- ruby_llm (>= 2.0.0.rc4, < 2.1)
+ ruby_llm (~> 2.1)
After doing more research and comparing to some alternatives I chose Avo because I liked the modern interface and it appeared to be well maintained and active on GitHub
Nathan Kriege
Nathan Kriege
Ruby on Rails developer

latest minor release

Avo v4.4.0 released about 2 hours ago.