Limited offer 60% off on your first year, for new customers. Applied automatically at checkout. See pricing

Releases

0.4.0

September 23, 2026

Breaking

  • All procs are now called with keyword arguments. This means procs configured for collection_query, searchable, sortable will need to have their signature changed (from eg lambda { |query, term| } to lambda { |query:, term:| }).
  • Internal uchi_user method has been removed. If you happened to use it, use Uchi::Context#user instead.

Added

  • Uchi::Context with useful details about what's currently happening.
  • collection_query, searchable, sortable procs now receive a context argument with the current Uchi::Context.
  • Official support for PostgreSQL and MySQL, in addition to SQLite.
  • A set of constants to use when referencing views: Uchi::View::INDEX etc. See the Views documentation for details.
  • Support for mounting the engine at a nested path like /admin/uchi or similar.

Changed

  • Code from Uchi::ApplicationController has been moved to Uchi::Controller. This provides a clean Uchi::ApplicationController for consumer applications to reopen and modify.
  • Uchi::Actions::ExecutionsController now inherits from Uchi::ApplicationController as expected.
  • All internal Uchi controllers are now routed under a _ scope to avoid naming conflicts with your repository controllers.
  • rails generate uchi:install no longer adds an unnecessary namespace :uchi block to routes.rb.
  • Views are now referenced using a Uchi::View instead of a Symbol as before.
  • Repository#title now prefers the return value from the title method before checking for name or to_s, because, well, that's what the method is named.

Fixed

  • The root repository URL can now be customized in a way that works even when mounted at a custom mount point.
  • Repositories now support models with primary key columns not named id.
0.3.1

August 31, 2026

Added

  • The built release is now verified against our test application before pushing it to the gem server.

Fixed

  • A bunch of internal routes were missing from the released gem causing errors like NoMethodError (undefined method 'has_many_associated_records_path' for an instance of ActionDispatch::Routing::RoutesProxy). This release adds them back in.
0.3.0

August 29, 2026

Added

  • New Field::HasMany#nested_fields for inline editing of has_many associations using Rails nested attributes. Switches the field from selecting existing records to creating, editing, and deleting associated records directly within the parent form. Accepts Field instances (like Repository#fields), supporting String, Text, Number, Boolean, Date, and DateTime fields.
  • If your repositories are searchable, a Global Search link appears so you can search across all searchable models.
  • New records can now be added to has_many associations directly from the record show page.
  • Searchable can receive a lambda in order to modify the search query. This makes it possible to normalize the search term or even join associated tables into the query and search across those.
  • Documentation for each Field type currently supported.

Changed

  • Repositories are now always returned in the same order from Uchi::Repository.all.

Fixed

  • Index views were not scrollable on mobile viewports.
0.2.0

August 29, 2026

Breaking

  • Uchi::SortOrder#name has been renamed to Uchi::SortOrder#column.

Added

  • A bunch of documentation with more to come.
  • Add visible configuration option to fields. This gives finer control over which fields are displayed for a given record, allowing for more dynamic and context-sensitive UIs.
  • New field type: Field::Select for fixed lists of options.

Fixed

  • Scrolling could result in scrolling entirely past all the content. The inline scrolling of each individidual pane should now be much more robust.
  • Field::Text now renders on :new actions by default as expected.
0.1.8

May 12, 2026

Added

  • Fields can now be configured to appear on :new pages, but not on :edit, and vice versa. Either add or remove :new from the fields on() configuration as needed.
  • Uchi can now be mounted at a path other than /uchi. If you want it to live at fx. /admin, use the at: argument: Uchi.routes.mount(self, at: :admin).
  • Inklings of a plugin-system. For now, it's for internal use only.

Fixed

  • Allow UI to use the full height of the viewport to prevent clipping popovers and dialogs.
  • BelongsTo fields for polymorphic associations no longer cause an error on edit and new pages. Instead, they just don't show up. This isn't exactly optimal, but for now we don't have an automated way of actually figuring out what ActiveRecord class they are associated with.
0.1.7

January 05, 2026

Added

  • BelongsTo and HasMany fields now use a more powerful and user-friendly widget than the standard select dropdown to fetch relevant records from the backend.
  • Mounting Uchi is now done by adding Uchi.routes.mount(self) to config/routes.rb. The old explicit mount syntax still works, you won't reap some of the future benefits by doing so.
  • Routes for RepositoryControllers are now automatically added to the host app's routes.
  • It is now possible to customize the JavaScript and stylesheet assets that Uchi loads.