<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.5">Jekyll</generator><link href="https://activescaffold.eu/feed.xml" rel="self" type="application/atom+xml" /><link href="https://activescaffold.eu/" rel="alternate" type="text/html" /><updated>2026-05-14T09:15:10+00:00</updated><id>https://activescaffold.eu/feed.xml</id><title type="html">Active Scaffold</title><subtitle>ActiveScaffold helps developers rapidly build and manage web applications with flexible scaffolding, automation, and developer-friendly tools. </subtitle><entry><title type="html">Announcing ActiveScaffold 4.3.0: Better Forms</title><link href="https://activescaffold.eu/2026/03/30/announcing-activescaffold-4-3-0-better-forms/" rel="alternate" type="text/html" title="Announcing ActiveScaffold 4.3.0: Better Forms" /><published>2026-03-30T14:27:46+00:00</published><updated>2026-03-30T14:27:46+00:00</updated><id>https://activescaffold.eu/2026/03/30/announcing-activescaffold-4-3-0-better-forms</id><content type="html" xml:base="https://activescaffold.eu/2026/03/30/announcing-activescaffold-4-3-0-better-forms/"><![CDATA[<p>We’re excited to release ActiveScaffold 4.3.0, a major update packed with new features, improved flexibility, and better developer experience. This release focuses on enhanced form UI capabilities, improved translation support, and better asset pipeline compatibility.</p>

<hr />

<h2 id="-major-new-features">🚀 <strong>Major New Features</strong></h2>

<h3 id="enhanced-enum-and-select-translations"><strong>Enhanced Enum and Select Translations</strong></h3>

<p>ActiveScaffold now supports nested translation keys for enum values and select options, providing more organized internationalization files. The system will look for translations in the pluralized column name before falling back to the traditional structure.</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="c1"># In your model</span>
<span class="k">class</span> <span class="nc">User</span> <span class="o">&lt;</span> <span class="no">ApplicationRecord</span>
  <span class="n">enum</span> <span class="ss">:status</span><span class="p">,</span> <span class="p">[</span><span class="ss">:active</span><span class="p">,</span> <span class="ss">:inactive</span><span class="p">]</span>
<span class="k">end</span></code></pre></figure>

<figure class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="c1"># config/locales/en.yml</span>
<span class="na">en</span><span class="pi">:</span>
  <span class="na">activerecord</span><span class="pi">:</span>
    <span class="na">attributes</span><span class="pi">:</span>
      <span class="na">user</span><span class="pi">:</span>
        <span class="na">status</span><span class="pi">:</span> <span class="s2">"</span><span class="s">User</span><span class="nv"> </span><span class="s">Status"</span>
        <span class="c1"># Old: enum values as columns</span>
        <span class="na">active</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Active"</span>
        <span class="na">inactive</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Inactive"</span>
        <span class="c1"># New: nested under pluralized column name</span>
        <span class="na">statuses</span><span class="pi">:</span>
          <span class="na">active</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Currently</span><span class="nv"> </span><span class="s">Active"</span>
          <span class="na">inactive</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Currently</span><span class="nv"> </span><span class="s">Inactive"</span></code></pre></figure>

<h3 id="subform-column-configuration"><strong>Subform Column Configuration</strong></h3>

<p>You can now specify which columns appear in subforms using the <code class="language-plaintext highlighter-rouge">:subform_columns</code> option. This works both in <code class="language-plaintext highlighter-rouge">form_ui_options</code> and directly in column options, and extends to horizontal and vertical show views.</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="c1"># In your controller</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:address</span><span class="p">].</span><span class="nf">form_ui</span> <span class="o">=</span> <span class="ss">:subform</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:address</span><span class="p">].</span><span class="nf">show_ui</span> <span class="o">=</span> <span class="ss">:horizontal</span>
<span class="c1"># setting subform_columns in column's options apply to form UI and show UI</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:address</span><span class="p">].</span><span class="nf">options</span> <span class="o">=</span> <span class="p">{</span>
  <span class="ss">subform_columns: </span><span class="p">[</span><span class="ss">:street</span><span class="p">,</span> <span class="ss">:city</span><span class="p">,</span> <span class="ss">:zip_code</span><span class="p">,</span> <span class="ss">:country</span><span class="p">]</span>
<span class="p">}</span>
<span class="c1"># Or using form_ui with options with horizontal/vertical layout</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:address</span><span class="p">].</span><span class="nf">form_ui</span> <span class="o">=</span> <span class="ss">:subform</span><span class="p">,</span> <span class="p">{</span><span class="ss">subform_columns: </span><span class="p">[</span><span class="ss">:street</span><span class="p">,</span> <span class="ss">:city</span><span class="p">]}</span></code></pre></figure>

<h3 id="multiple-layout-support-for-action-columns"><strong>Multiple Layout Support for Action Columns</strong></h3>

<p>Action columns now support multiple layouts, allowing forms to have columns in a multiple column layout. This provides greater flexibility in organizing form elements. Each column is an ActionColumn object too, so it supports the same methods and it’s possible to add subgroups in a column.</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="n">config</span><span class="p">.</span><span class="nf">create</span><span class="p">.</span><span class="nf">columns</span><span class="p">.</span><span class="nf">layout</span> <span class="o">=</span> <span class="ss">:multiple</span>
<span class="n">config</span><span class="p">.</span><span class="nf">create</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="ss">:username</span><span class="p">,</span> <span class="ss">:email</span><span class="p">,</span> <span class="ss">:last_name</span><span class="p">,</span> <span class="ss">:first_name</span><span class="p">]</span>
<span class="n">config</span><span class="p">.</span><span class="nf">create</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="ss">:title</span><span class="p">,</span> <span class="ss">:company</span><span class="p">,</span> <span class="ss">:employee_type</span><span class="p">,</span> <span class="ss">:department</span><span class="p">]</span>
<span class="c1"># or adding a group without using index</span>
<span class="n">config</span><span class="p">.</span><span class="nf">create</span><span class="p">.</span><span class="nf">columns</span> <span class="o">&lt;&lt;</span> <span class="p">[</span><span class="ss">:title</span><span class="p">,</span> <span class="ss">:company</span><span class="p">,</span> <span class="ss">:employee_type</span><span class="p">,</span> <span class="ss">:department</span><span class="p">]</span>
<span class="c1"># adding a subgroup</span>
<span class="n">config</span><span class="p">.</span><span class="nf">create</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="mi">1</span><span class="p">].</span><span class="nf">add_subgroup</span> <span class="s1">'Permissions'</span> <span class="k">do</span> <span class="o">|</span><span class="n">group</span><span class="o">|</span>
  <span class="n">group</span> <span class="o">&lt;&lt;</span> <span class="p">[</span><span class="ss">:users</span><span class="p">,</span> <span class="ss">:orders</span><span class="p">,</span> <span class="ss">:quotes</span><span class="p">]</span>
<span class="k">end</span></code></pre></figure>

<h3 id="new-form-ui-types"><strong>New Form UI Types</strong></h3>

<h4 id="checkboxes-form-ui"><strong>Checkboxes Form UI</strong></h4>

<p>A new list of checkboxes interface similar to the interface used for collection associations with <code class="language-plaintext highlighter-rouge">:select</code> form UI. It can be used with database columns, perfect for serialize columns saving a list of values.</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="c1"># For a serialize column storing an array of roles</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:roles</span><span class="p">].</span><span class="nf">form_ui</span> <span class="o">=</span> <span class="ss">:checkboxes</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:roles</span><span class="p">].</span><span class="nf">options</span> <span class="o">=</span> <span class="p">{</span>
  <span class="ss">options: </span><span class="p">[</span><span class="s1">'admin'</span><span class="p">,</span> <span class="s1">'editor'</span><span class="p">,</span> <span class="s1">'viewer'</span><span class="p">],</span>
  <span class="ss">selected: </span><span class="p">[</span><span class="s1">'editor'</span><span class="p">]</span>
<span class="p">}</span></code></pre></figure>

<h4 id="draggable-form-ui-for-non-associations"><strong>Draggable Form UI for Non-Associations</strong></h4>

<p>The draggable UI now works with non-association columns, enabling sortable interfaces for serialize columns.</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="c1"># For a serialize column storing ordered items</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:playlist_order</span><span class="p">].</span><span class="nf">form_ui</span> <span class="o">=</span> <span class="ss">:draggable</span> <span class="c1"># same as :checkboxes, {draggable_lists: true}</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:playlist_order</span><span class="p">].</span><span class="nf">options</span> <span class="o">=</span> <span class="p">{</span>
  <span class="ss">options: </span><span class="p">[</span><span class="s1">'Song 1'</span><span class="p">,</span> <span class="s1">'Song 2'</span><span class="p">,</span> <span class="s1">'Song 3'</span><span class="p">]</span>
<span class="p">}</span></code></pre></figure>

<h3 id="list-ui-for-multiple-selection-types"><strong>List UI for Multiple Selection Types</strong></h3>

<p>Added consistent list UI for the corresponding <code class="language-plaintext highlighter-rouge">select_multiple</code>, <code class="language-plaintext highlighter-rouge">draggable</code>, <code class="language-plaintext highlighter-rouge">checkboxes</code>, <code class="language-plaintext highlighter-rouge">select</code> and <code class="language-plaintext highlighter-rouge">radio</code> form UIs. This provides a more consistent view, displaying in list and show actions the same values as the form, for all different form UIs, not only <code class="language-plaintext highlighter-rouge">select</code> and <code class="language-plaintext highlighter-rouge">radio</code> as before.</p>

<hr />

<h2 id="-improvements-and-fixes">🔧 <strong>Improvements and Fixes</strong></h2>

<h3 id="clear-form-column-conditionals"><strong>Clear Form Column Conditionals</strong></h3>

<p>Added <code class="language-plaintext highlighter-rouge">clear_form_column_if</code> — similar to <code class="language-plaintext highlighter-rouge">hide_form_column_if</code> but sends empty values instead of the previous values to clear database fields.</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="c1"># Clears the field when condition is met</span>
<span class="n">config</span><span class="p">.</span><span class="nf">columns</span><span class="p">[</span><span class="ss">:otp_info</span><span class="p">].</span><span class="nf">clear_form_column_if</span> <span class="o">=</span> <span class="nb">lambda</span> <span class="k">do</span> <span class="o">|</span><span class="n">column</span><span class="p">,</span> <span class="n">record</span><span class="o">|</span>
  <span class="n">record</span><span class="p">.</span><span class="nf">mfa_type</span> <span class="o">==</span> <span class="s1">'otp'</span>
<span class="k">end</span></code></pre></figure>

<h3 id="better-exception-handling"><strong>Better Exception Handling</strong></h3>

<p>Improved error handling when rendering columns. Exceptions now provide complete backtraces, making debugging significantly easier.</p>

<h3 id="polymorphic-and-nested-subform-fixes"><strong>Polymorphic and Nested Subform Fixes</strong></h3>

<p>Fixed field rendering for polymorphic associations and nested subforms in edge cases, ensuring consistent behavior across complex associations.</p>

<h3 id="propshaft-compatibility"><strong>Propshaft Compatibility</strong></h3>

<p>ActiveScaffold now supports Propshaft with dartsass-rails, removing dependency on dartsass-sprockets. Simply add propshaft and dartsass-rails gems to your Gemfile:</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="c1"># In your Gemfile</span>
<span class="n">gem</span> <span class="s2">"propshaft"</span>
<span class="n">gem</span> <span class="s2">"dartsass-rails"</span>  <span class="c1"># or dartsass-sprockets if not using propshaft</span></code></pre></figure>

<hr />

<h2 id="-upgrade-notes">📦 <strong>Upgrade Notes</strong></h2>

<p>When upgrading to 4.3.0, please note:</p>

<ul>
  <li>The new translation nesting is optional and backward compatible</li>
  <li>Propshaft users need to ensure they have dartsass-rails gem in their Gemfile</li>
  <li>If you’re still using sprockets, add dartsass-sprockets gem; it’s not a dependency as both systems are supported</li>
</ul>

<p>To upgrade, update your Gemfile:</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="n">gem</span> <span class="s1">'active_scaffold'</span><span class="p">,</span> <span class="s1">'~&gt; 4.3'</span></code></pre></figure>

<p>Then run:</p>

<figure class="highlight"><pre><code class="language-shell" data-lang="shell">bundle update active_scaffold</code></pre></figure>

<hr />

<h2 id="-acknowledgments">🙏 <strong>Acknowledgments</strong></h2>

<p>Thanks to all contributors who made this release possible with their feedback, bug reports, and code contributions.</p>

<hr />

<p>🚀 <strong>Happy scaffolding with ActiveScaffold!</strong></p>]]></content><author><name></name></author><category term="Releases" /><summary type="html"><![CDATA[We’re excited to release ActiveScaffold 4.3.0, a major update packed with new features, improved flexibility, and better developer experience. This release focuses on enhanced form UI capabilities, improved translation support, and better asset pipeline compatibility.]]></summary></entry><entry><title type="html">Plugin Duplicate 2.0 Released: new feature on subforms</title><link href="https://activescaffold.eu/2026/02/10/plugin-duplicate-2-0-released-new-feature-on-subforms/" rel="alternate" type="text/html" title="Plugin Duplicate 2.0 Released: new feature on subforms" /><published>2026-02-10T10:47:10+00:00</published><updated>2026-02-10T10:47:10+00:00</updated><id>https://activescaffold.eu/2026/02/10/plugin-duplicate-2-0-released-new-feature-on-subforms</id><content type="html" xml:base="https://activescaffold.eu/2026/02/10/plugin-duplicate-2-0-released-new-feature-on-subforms/"><![CDATA[<p><strong>ActiveScaffoldDuplicate 2.0</strong> has been released, featuring a new feature, requiring ActiveScaffold 4.2.</p>

<p>Built on the new helper <code class="language-plaintext highlighter-rouge">active_scaffold_subform_record_actions</code> introduced in ActiveScaffold 4.2, adds support to have a duplicate button on the subform rows, next to the remove button. It will send a request to the action <code class="language-plaintext highlighter-rouge">edit_associated</code>, with the fields of the row and a <code class="language-plaintext highlighter-rouge">dup</code> parameter. Then, a new row will be added, copying the values from the duplicated row.</p>]]></content><author><name></name></author><category term="Releases" /><summary type="html"><![CDATA[ActiveScaffoldDuplicate 2.0 has been released, featuring a new feature, requiring ActiveScaffold 4.2.]]></summary></entry><entry><title type="html">4.2 Released: Faster, Smarter and More Flexible</title><link href="https://activescaffold.eu/2026/02/03/4-2-released-faster-smarter-and-more-flexible/" rel="alternate" type="text/html" title="4.2 Released: Faster, Smarter and More Flexible" /><published>2026-02-03T14:19:19+00:00</published><updated>2026-02-03T14:19:19+00:00</updated><id>https://activescaffold.eu/2026/02/03/4-2-released-faster-smarter-and-more-flexible</id><content type="html" xml:base="https://activescaffold.eu/2026/02/03/4-2-released-faster-smarter-and-more-flexible/"><![CDATA[<p><strong>ActiveScaffold 4.2</strong> has been released, featuring major performance optimizations for large forms, integrated logical search, enhanced subform handling, and extended framework compatibility, including Rails 8.</p>

<hr />

<h2 id="-key-features--improvements">🚀 <strong>Key Features &amp; Improvements</strong></h2>

<h3 id="performance-boosts"><strong>Performance Boosts</strong></h3>

<ul>
  <li><strong>Faster Form Operations</strong>: Significant speed improvements for refreshing fields and saving large forms.</li>
  <li><strong>Optimized Validation</strong>: Faster validation for forms, especially with nested subforms and many records.</li>
  <li><strong>Smart Preloading</strong>: New <code class="language-plaintext highlighter-rouge">subform_includes</code> option in columns to optimize association loading, used on edit action, for a faster form rendering, especially when the form has long subforms which require other associations to load, or many nested subforms. A <code class="language-plaintext highlighter-rouge">preload_for_form</code> method in the controller will generate the associations to preload, and it can be overrided to add more associations, although <code class="language-plaintext highlighter-rouge">subform_includes</code> can be better and easier in most cases.</li>
  <li><strong>Faster Rendering of Action Links</strong>: Cache the generated HTML for action links in the rows, so the HTML is reused, rendering long lists or having many action links faster.</li>
</ul>

<h3 id="improved-form-handling"><strong>Improved Form Handling</strong></h3>

<ul>
  <li><strong>Better Unauthorized Field Handling</strong>: Unauthorized columns and subforms now display as read-only using the code from show action, so they look the same, and it’s possible to display whole read-only subforms as tables.</li>
  <li><strong>Flexible Field Updates</strong>: Support for hashes in <code class="language-plaintext highlighter-rouge">update_columns</code>, so it’s possible to refresh fields at different levels in the form, lower level refreshing fields on subforms (with nested subform support!), or upper level refreshing a field in the main form when a field in a subform changes.</li>
  <li><strong>Enhanced Create Links on Associations</strong>: Added <code class="language-plaintext highlighter-rouge">add_new_link</code> to open a create form on associations from the parent record, without open the list and then create, it will refresh the parent record.</li>
</ul>

<h3 id="enhanced-search-capabilities"><strong>Enhanced Search Capabilities</strong></h3>

<ul>
  <li><strong>Logical Search Integration</strong>: A new bridge that integrates with LogicalQueryParser adds support for logical searches, it supports full logical search with the operators supported by the gem, or simplified searches with intuitive ‘all keywords’ and ‘any keyword’ operators.</li>
</ul>

<h3 id="uiux-enhancements"><strong>UI/UX Enhancements</strong></h3>

<ul>
  <li><strong>Responsive Field Descriptions</strong>: Option to hide descriptions by default, showing them on hover or click.</li>
  <li><strong>Better Action Menus</strong>: Dynamic action link groups in a submenu now open under the action link, inside the submenu.</li>
  <li><strong>Improved File Management</strong>: Enhanced ActiveStorage bridge to preserve existing files in <code class="language-plaintext highlighter-rouge">has_many_attachments</code>.</li>
  <li><strong>Collection Association Enhancement</strong>: <code class="language-plaintext highlighter-rouge">add_new</code> supported for collection associations too (defaults to popup mode, the only one supported).</li>
  <li><strong>Improved Chosen Integration</strong>: <code class="language-plaintext highlighter-rouge">add_new</code> supported as in select form UI.</li>
  <li><strong>Support Click on Action Link Groups</strong>: action link submenus can open with click instead of hover, and the lists with many action links may be rendered faster, as not all links needs to be rendered initially.</li>
</ul>

<hr />

<h2 id="-important-fixes">🐛 <strong>Important Fixes</strong></h2>

<ul>
  <li><strong>Frozen String Literals</strong>: Added compatibility and magic comments for Ruby’s frozen string literal mode</li>
  <li><strong>TinyMCE with requierd</strong>: Fixed validation errors for required textareas using TinyMCE</li>
</ul>

<hr />

<h2 id="-extended-compatibility">🔧 <strong>Extended Compatibility</strong></h2>

<ul>
  <li><strong>Rails 8 Support</strong>: Full compatibility with Rails 8.0 framework</li>
  <li><strong>Bootstrap 5 Compatibility</strong>: Updated tab components for seamless Bootstrap 5 integration</li>
  <li><strong>Improved Localization</strong>: Added translations for millisecond and microsecond prompts in jQuery UI datetime picker</li>
</ul>

<hr />

<h2 id="-for-developers">🛠 <strong>For Developers</strong></h2>

<ul>
  <li><strong>Better Controller Customization</strong>: Add <code class="language-plaintext highlighter-rouge">custom_modules</code> at config or global level for controller customization. An easier way to load modules which override ActiveScaffold methods. Also, support a controller method in <code class="language-plaintext highlighter-rouge">after_config_callbacks</code>.</li>
  <li><strong>JS Setup Callbacks</strong>: New <code class="language-plaintext highlighter-rouge">ActiveScaffold.setup_callbacks</code> array for executing functions on form/page load (whenever ActiveScaffold.setup is called).</li>
  <li><strong>Better Sorting Control</strong>: <code class="language-plaintext highlighter-rouge">sort_joins</code> column option for optimized SQL joins during sorting.</li>
  <li><strong>Modern JavaScript</strong>: Consolidated JS helpers for file upload bridges into <code class="language-plaintext highlighter-rouge">active_scaffold.js</code>, removing the JS mixed in the HTML tags.</li>
  <li><strong>Subform Actions Helper</strong>: New <code class="language-plaintext highlighter-rouge">active_scaffold_subform_record_actions</code> helper for adding custom actions to subform rows, supporting custom buttons on the subform.</li>
  <li><strong>Flexible Configuration</strong>: Enhanced customization options throughout the framework</li>
</ul>

<hr />

<p>🚀 <strong>Happy coding with ActiveScaffold!</strong></p>]]></content><author><name></name></author><category term="Releases" /><summary type="html"><![CDATA[ActiveScaffold 4.2 has been released, featuring major performance optimizations for large forms, integrated logical search, enhanced subform handling, and extended framework compatibility, including Rails 8.]]></summary></entry><entry><title type="html">New ActiveScaffold Release, 4.1 is Here!</title><link href="https://activescaffold.eu/2025/07/09/new-activescaffold-release-4-1-is-here/" rel="alternate" type="text/html" title="New ActiveScaffold Release, 4.1 is Here!" /><published>2025-07-09T15:42:24+00:00</published><updated>2025-07-09T15:42:24+00:00</updated><id>https://activescaffold.eu/2025/07/09/new-activescaffold-release-4-1-is-here</id><content type="html" xml:base="https://activescaffold.eu/2025/07/09/new-activescaffold-release-4-1-is-here/"><![CDATA[<p>We are excited to announce the release of <strong>ActiveScaffold 4.1</strong>, a major update packed with new features, consolidating the features added on 4.0 and improving the integration with modern Rails applications. This version adds filters to the list action, popup mode for add_new with a JS popup, consolidates tabbed feature added in 4.0, improved compatibility with Rails 7, improves grouped search, add few more small features and optimizes refreshing columns in a form, when disabling the form while the fields are refreshed is not needed (for example to refresh read only fields).</p>

<hr />

<h2 id="whats-new-in-activescaffold-40"><strong>What’s New in ActiveScaffold 4.0?</strong></h2>

<ul>
  <li><strong>Better Support for Rails 7:</strong> ActiveScaffold 4.1 is fully compatible with Rails 7, dropping support for older version 6.1, and migrating to dart sass.</li>
  <li><strong>Improved tabbed interface:</strong> Tabbed_by is supported in columns group of show action too, so it can look like the form, but read only.</li>
  <li><strong>Improved add_new:</strong> The text for the links can be changed in the form UI options, using a hash for add_new, and a new mode :popup is added, using a JS dialog, as :popup position does for action links.</li>
  <li><strong>Filters:</strong> Filters are now a first-class setting in ActiveScaffold, so they don’t need to be added as action links to :index action, and the conditions are handled next to the filter definition. No more overriding of conditions_for_collection or beginning_of_chain to define the filter condition.</li>
  <li><strong>Improved grouped search:</strong> Field search supported a limited group by feature, it’s more powerful now, so grouping by more than one column is supported, virtual columns can be displayed in the grouped search defining the DB columns to be used for the calculation, and support more SQL functions than the supported by Rails in the calculate method.</li>
  <li><strong>Faster typing while refreshing a field:</strong> If the refreshed fields can’t be edited, or you don’t worry about user editing a field which will be replaced (for example, because the refreshed fields are far from the changed field), disabling the form while refreshing fields can be disabled.</li>
  <li><strong>Enhanced Components:</strong> Add support for prompt on action links, as an easy and fast way to request and submit an string (comment, reason, …), support embedding with multiple values in a constraint, defining empty_field_text per column, and support overriding with class prefix in another helper (sorted_association_options_find), which is useful when clear_helpers is not used.</li>
  <li><strong>Improved Bridge Support:</strong> Better integration with TinyMCE, supporting setup option in tinymce config with a function.</li>
  <li><strong>Bug Fixes &amp; Stability Improvements:</strong> Addressed multiple issues reported by the community to enhance reliability and ease of use.</li>
</ul>

<hr />

<h3 id="how-to-upgrade"><strong>How to Upgrade?</strong></h3>

<p>If you’re using an older version of ActiveScaffold, upgrading is simple. Add or update the gem in your <code class="language-plaintext highlighter-rouge">Gemfile</code>:</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="n">gem</span> <span class="s1">'active_scaffold'</span><span class="p">,</span> <span class="s1">'~&gt; 4.1'</span></code></pre></figure>
<p>Then, run:</p>

<figure class="highlight"><pre><code class="language-shell" data-lang="shell">bundle update active_scaffold</code></pre></figure>
<hr />

<h3 id="breaking-changes"><strong>Breaking Changes</strong></h3>

<p>Support for rails 6.1 and ruby 3.0 has been removed.</p>

<p>The <code class="language-plaintext highlighter-rouge">active_scaffold_habtm_joins</code> method has been renamed to active_scaffold_joins, and it’s deprecated now.</p>

<hr />

<h3 id="whats-next"><strong>What’s Next?</strong></h3>

<p>We are starting to work on the support for rails 8.0, and new features, such as logical search. Future updates may continue improving performance, and will add new features, and enhance integration with modern Rails workflows. If you have feedback or feature requests, we welcome contributions on <a href="https://github.com/activescaffold/active_scaffold">GitHub</a>.</p>

<hr />

<h3 id="try-it-now"><strong>Try It Now!</strong></h3>

<p>Download <strong>ActiveScaffold 4.1</strong> today and experience the improvements firsthand. Stay tuned for more updates and upcoming tutorials on how to make the most of the new features.</p>

<hr />

<p>🚀 <strong>Happy coding with ActiveScaffold!</strong></p>]]></content><author><name></name></author><category term="Releases" /><summary type="html"><![CDATA[We are excited to announce the release of ActiveScaffold 4.1, a major update packed with new features, consolidating the features added on 4.0 and improving the integration with modern Rails applications. This version adds filters to the list action, popup mode for add_new with a JS popup, consolidates tabbed feature added in 4.0, improved compatibility with Rails 7, improves grouped search, add few more small features and optimizes refreshing columns in a form, when disabling the form while the fields are refreshed is not needed (for example to refresh read only fields).]]></summary></entry><entry><title type="html">ActiveScaffold 4.0 is Here!</title><link href="https://activescaffold.eu/2025/01/16/active-scaffold-4-0-release/" rel="alternate" type="text/html" title="ActiveScaffold 4.0 is Here!" /><published>2025-01-16T05:12:00+00:00</published><updated>2025-01-16T05:12:00+00:00</updated><id>https://activescaffold.eu/2025/01/16/active-scaffold-4-0-release</id><content type="html" xml:base="https://activescaffold.eu/2025/01/16/active-scaffold-4-0-release/"><![CDATA[<p>We are excited to announce the release of <strong>ActiveScaffold 4.0</strong>, a major update packed with new features, performance improvements, and better integration with modern Rails applications. This version brings enhanced UI components, improved compatibility with Rails 7, and optimizations to make CRUD operations even more efficient.</p>

<hr />

<h2 id="whats-new-in-activescaffold-40"><strong>What’s New in ActiveScaffold 4.0?</strong></h2>

<ul>
  <li><strong>Full Support for Rails 7:</strong> ActiveScaffold 4.0 is fully compatible with Rails 7, ensuring smooth performance with the latest framework updates.</li>
  <li><strong>Enhanced UI Components:</strong> Improved handling of form inputs, improved field search and accessibility refinements for a better user experience.</li>
  <li><strong>Performance Optimizations:</strong> Faster page loads and query execution, especially for large datasets.</li>
  <li><strong>Safer code with thread-safety:</strong> Thread safety fully integrated, it isn’t an optional feature anymore, no more performance issues with thread-safety with 4.0.</li>
  <li><strong>More Flexible Customization:</strong> Additional configuration options for form and list UIs, giving developers more control over the look and behavior of ActiveScaffold components.</li>
  <li><strong>Improved Plugin &amp; Bridge Support:</strong> Better integration with external gems like TinyMCE, ActiveStorage, CarrierWave, Dragonfly, Paperclip and RecordSelect.</li>
  <li><strong>Bug Fixes &amp; Stability Improvements:</strong> Addressed multiple issues reported by the community to enhance reliability and ease of use.</li>
</ul>

<hr />

<h3 id="how-to-upgrade"><strong>How to Upgrade?</strong></h3>

<p>If you’re using an older version of ActiveScaffold, upgrading is simple. Add or update the gem in your <code class="language-plaintext highlighter-rouge">Gemfile</code>:</p>

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="n">gem</span> <span class="s1">'active_scaffold'</span><span class="p">,</span> <span class="s1">'~&gt; 4.0'</span></code></pre></figure>
<p>Then, run:</p>

<figure class="highlight"><pre><code class="language-shell" data-lang="shell">bundle update active_scaffold</code></pre></figure>
<p>Add <code class="language-plaintext highlighter-rouge">active_scaffold/manifest.js</code> to <code class="language-plaintext highlighter-rouge">app/assets/config/manifest.js</code> to prevent issues with assets.</p>

<hr />

<h3 id="breaking-changes">Breaking Changes</h3>

<p>Support for rails 5.2 and 6.0, and ruby 2.x, has been removed.</p>

<p>Changing column settings on a request has changed, it must use <code class="language-plaintext highlighter-rouge">active_scaffold_config.columns.override(:name)</code> at least the first time. After calling <code class="language-plaintext highlighter-rouge">columns.override(:name)</code>, calling it again or calling <code class="language-plaintext highlighter-rouge">columns[:name]</code> will return the overrided column. It also supports a block. See <a href="/doc/per-request-configuration">Per Request Configuration</a> for examples and more comprehensive explanation.</p>

<p>Changing columns for an action (e.g. add or exclude) on a request must use active_scaffold_config.actions.override_columns, the first time, or use assignment with the whole list of columns.</p>

<p>If you have a <code class="language-plaintext highlighter-rouge">_form_association_record</code> partial view overrided, use <code class="language-plaintext highlighter-rouge">record</code> local variable instead of <code class="language-plaintext highlighter-rouge">form_association_record</code>.</p>

<p>If you have code rendering <code class="language-plaintext highlighter-rouge">form_association_record</code> partial, then pass <code class="language-plaintext highlighter-rouge">record</code> local variable instead of using <code class="language-plaintext highlighter-rouge">:object</code> option, or use <code class="language-plaintext highlighter-rouge">as: :record</code> if you’re using render with <code class="language-plaintext highlighter-rouge">:collection</code> argument.</p>

<hr />

<h3 id="whats-next"><strong>What’s Next?</strong></h3>

<p>This release is a major step forward, but we’re not stopping here! Future updates will continue to improve performance, add new features, and enhance integration with modern Rails workflows. If you have feedback or feature requests, we welcome contributions on <a href="https://github.com/activescaffold/active_scaffold">GitHub</a>.</p>

<hr />

<h3 id="try-it-now"><strong>Try It Now!</strong></h3>

<p>Download <strong>ActiveScaffold 4.0</strong> today and experience the improvements firsthand. Stay tuned for more updates and upcoming tutorials on how to make the most of the new features.</p>

<hr />

<p>🚀 <strong>Happy coding with ActiveScaffold!</strong></p>]]></content><author><name></name></author><category term="Releases" /><summary type="html"><![CDATA[We are excited to announce the release of ActiveScaffold 4.0, a major update packed with new features, performance improvements, and better integration with modern Rails applications. This version brings enhanced UI components, improved compatibility with Rails 7, and optimizations to make CRUD operations even more efficient.]]></summary></entry></feed>