Important
This release has breaking changes for some apps. Read the upgrade guide before you upgrade.
Note
These are the highlights. All 207 changes are listed below.
Using Avo
What changes for people using Avo
- The delete confirmation says which related records go with the record.
- With session persistence on, Avo remembers the sort, the selected rows and the page.
- Saved nested records can be deleted from the parent form, when the model allows it.
Building with Avo
What changes for people building with Avo
- Audit logging can record changes made outside Avo (the console, jobs, your own controllers) with
outside_avo: true.
- The status page shows which Avo gems are behind, and in development updates them all with one button.
- Slots add, wrap or replace parts of the Index, Show, Edit and New views without copying them.
- Association fields take
before_attach, after_attach, before_detach and after_detach hooks.
- Any keyboard shortcut can be rebound or turned off from
config.hotkeys.
AI and MCP
What changes in the assistant, the MCP server and the CLI
-
avo-ai, avo-mcp_server and avo-cli leave beta.
- The chat can save reusable skills and run as a full page without the floating bar.
- Chat and MCP can be turned on or off per user with a
use? policy method.
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)