alphagov/whitehall
57.6
Adequate · 20 September 2026
37.6k
lines of production code
Ruby
primary language
1
measurement over time
What this system is
This system is the Whitehall administrative application, a content management platform for UK government publishing that manages the lifecycle of diverse document types such as consultations, fatality notices, and detailed guides. It provides a comprehensive admin interface for creating, editing, translating, and publishing content to the GOV.UK Publishing API, while handling complex workflows like fact-checking, access limitation, and bulk republishing. The platform also supports asset management for images and attachments, link health monitoring, and the maintenance of associated entities like organisations, ministers, and worldwide offices.
How it got here
2011–2013 — GOV.UK Design System migration and Rails 8 upgrade
87 changes.
This period focused on modernizing the Whitehall application by migrating the admin interface to the GOV.UK Design System and upgrading the core framework to Rails 8. It involved comprehensive refactoring of views, controllers, and assets to ensure consistent styling and improved maintainability, alongside significant backend changes such as renaming the Document model to Edition and implementing granular authorization rules.
2014–2023 — GOV.UK Design System migration
109 changes.
This period focused on comprehensively redesigning the Whitehall admin interface to align with the GOV.UK Design System, standardizing forms, tables, and components across all administrative views. Concurrently, the backend was modernized through the introduction of structured Publishing API presenters, modular payload builders, and robust taxonomy and data hygiene libraries. The work also included significant infrastructure updates, such as migrating email delivery to GOV.UK Notify and implementing GA4 tracking throughout the application.
2024–2026 — Standard Edition and Configurable Content Blocks
55 changes.
This period focused on introducing a configurable content block system and migrating legacy Topical Events to the new Standard Edition format. The work involved extensive refactoring of model concerns, attachment handling, and admin interfaces to support dynamic document types and improved data integrity. Additionally, new administrative features were added for managing social media accounts, emergency banners, and bulk republishing operations.
Features
Add CRUD interface for worldwide organisation pages
Administrators can now create, edit, view, and delete pages associated with worldwide organisations. The new index page lists existing pages and translations, while the new and edit forms allow users to select a corporate information page type, enter a required summary with character counting, and edit the body content. A dedicated confirmation screen is provided before deleting a page.
_app/views/admin/worldwide\_organisation\pages · high confidence
Add Rails binstubs and CI test-sharding scripts
The application now includes a set of executable binstubs in the bin directory (rails, rake, bundle, setup, update, dev, brakeman, rubocop) to ensure consistent execution of commands using the project's specific gem versions. Additionally, new CI-specific scripts (ci, minitest-ci, cucumber-ci) have been added to support parallelized test execution, splitting Minitest suites into ruby-only and assets-required shards, and distributing Cucumber scenarios across CI nodes.
bin · high confidence
Add S3 health check with conditional execution
A new S3 health check has been added to the healthcheck library. This check verifies connectivity to the configured AWS S3 bucket using the S3FileHandler. To prevent unnecessary checks in non-production environments, the actual S3 connection attempt is only performed when the environment variable RUN\_S3\_HEALTHCHECK\_FOR\_WHITEHALL\_BACKEND is present; otherwise, it returns an OK status immediately.
lib/healthcheck · high confidence
Add ability to create and delete editorial remarks
Users can now add internal notes to editions via a new 'New internal note' form and remove existing remarks through a dedicated confirmation page. The new views use the GOV.UK Design System, with the creation form featuring a labeled textarea for the note body and the deletion flow requiring explicit confirmation before removing the remark.
_app/views/admin/editorial\remarks · high confidence
Add address formatting configuration and CI/security tooling
The application now includes a new \config/address\_formats.yml\ file that defines localized address templates for numerous countries (e.g., GB, US, JP) using placeholders like \{{fn}}\ and \{{postal-code}}\, enabling consistent address display across different regions. Additionally, a new \config/ci.rb\ file has been added to standardize the continuous integration workflow, explicitly defining steps for Ruby style checking (Rubocop), security audits (Importmap audit, Brakeman), and test execution (Rails and System tests). A \config/brakeman.ignore\ file is also introduced to suppress specific, reviewed security warnings for SQL injection, command injection, and XSS in existing code paths.
config · high confidence
Add admin interface for managing historical accounts
Administrators can now create, edit, and delete historical accounts for people with relevant role appointments. The new interface includes an index page listing existing accounts with view, edit, and delete actions, a form for creating or editing accounts (capturing summary, political parties, birth/death dates, body, major acts, and interesting facts), and a confirmation step for deletion. This feature is gated so that only people with roles supporting historical accounts can have them created or managed.
_app/views/admin/historical\accounts · high confidence
Add bulk retagging preview and submission interface
Administrators can now use a new 'Retag content' page to paste CSV data for bulk updating document organisations. The interface includes a text area for input, guidance on required CSV headers (URL, lead/supporting organisations), and a preview step that displays a summary table of the proposed changes—including slug, lead, supporting, and access-limiting organisations—before allowing the user to publish the updates.
app/views/admin/retagging · high confidence
Add metrics for overdue and unenqueued scheduled publications
A new collector has been added to expose Prometheus metrics for scheduled publishing health. Users can now monitor the number of overdue scheduled publications and the count of scheduled editions that have not yet been enqueued for processing, helping to identify bottlenecks in the publishing pipeline.
lib/collectors · high confidence
Add review reminder management interface
Administrators can now create, edit, and delete review reminders for content editions. This change introduces new views for setting a review date and email address, including a confirmation screen that displays the specific review date before deletion.
_app/views/admin/review\reminders · high confidence
Add translation management for worldwide organisation pages
Administrators can now create, edit, and delete translations for worldwide organisation pages. The new interface includes a list view to select a target language for new translations, an edit form with required fields for translated summary and body (supporting right-to-left languages), and a confirmation step for deleting existing translations.
_app/views/admin/worldwide\_organisation\_page\translations · high confidence
Add worldwide office translation management interface
Administrators can now create, edit, and delete translations for worldwide office contact details. This change introduces a new set of admin views (index, edit, confirm\_destroy) that allow users to select a target language, fill in translated fields such as title, address, and phone numbers using the GOV.UK Design System components, and confirm deletion of existing translations.
_app/views/admin/worldwide\_office\translations · high confidence
Added blank form partial for GenericEditions
A new blank form partial (\_form.html.erb) has been added to the admin generic editions views, replacing a placeholder file in the models directory. This provides a dedicated template structure for rendering generic edition forms within the admin interface.
_app/views/admin/generic\editions · medium confidence
Admin interface for creating and managing promotional feature items
Administrators can now create, edit, and delete individual items within a promotional feature. The new interface allows users to add an item title and URL, a required summary, and choose between uploading an image or providing a YouTube video URL (including a description for the video). Users can also add multiple links to each item. The view displays item details in a summary card, showing processing status for images and providing direct links to view titles, videos, and item links in new tabs.
_app/views/admin/corporate\_information\_pages, app/views/admin/promotional\_feature\items · high confidence
Admin interface for managing edition change notes
Administrators can now view, edit, and delete specific change notes associated with an edition. The new interface includes a listing page that displays change notes in a table with date and content, alongside direct links to edit or delete individual entries. The edit view provides a textarea for modifying the note's text, while the delete flow presents a confirmation screen showing the current note and the publication date before removal.
_app/views/admin/contact\_translations, app/views/admin/edition\_change\notes · high confidence
Admin interface for managing emergency banners
Administrators can now view, edit, and remove the currently deployed emergency banner through a new set of admin views. The interface displays the banner's current status and configuration details (including campaign class, heading, description, and link) in a summary table, provides a form to update these fields, and includes a confirmation step for removing the banner entirely.
_app/views/admin/emergency\banner · high confidence
Admin interface for managing fields of operation
Administrators can now create, view, and edit fields of operation through a new set of views built with the GOV.UK Design System. The index page lists existing fields with edit links, while the new and edit forms allow users to input a name and description using a Govspeak editor. A warning message in both forms alerts users that changes appear instantly on the live site.
_app/views/admin/operational\fields · high confidence
Consultation admin form now supports opening/closing dates and participation details
The admin interface for creating and editing consultations has been updated to include specific fields for the consultation's opening and closing dates (including time), as well as detailed participation information. Admins can now specify how users can respond via a link URL, email address, or postal address, and attach a downloadable response form with options to keep, remove, or replace the file. The form also retains the ability to mark a consultation as held on an external website and manage associations with organisations, ministers, and topical events.
app/views/admin/consultations · high confidence
Display broken link check reports in the admin interface
The admin interface now renders link check reports, allowing users to view broken, dangerous, and caution links for a document. The report view includes a summary of issues, expandable details for each link (such as problem summaries and suggested fixes), and a 'Last checked' timestamp. Users can initiate a new check or refresh the report status via buttons that trigger asynchronous updates, and the interface indicates when links to draft documents were skipped.
_app/views/admin/link\_check\reports · high confidence
Fatality notices now support multiple casualties and operational associations
The fatality notice editing interface has been updated to allow users to record multiple casualties using an 'add another' pattern, where each casualty entry includes a personal details field. The form also introduces a required 'Roll call info' section for the field of operation introduction and includes an 'Associations' fieldset for linking organisations, appointments (ministers), and operational fields, providing a structured way to manage the specific data required for these notices.
_app/views/admin/fatality\notices · high confidence
Initial project scaffolding and configuration
Establishes the foundational configuration for the Whitehall application, including a new Dockerfile for containerization, a .ruby-version file specifying Ruby 3.3.6, and a Procfile defining web and worker processes. Adds standard linting and formatting configurations (RuboCop, ESLint, Prettier, Stylelint, ERB Lint) and updates the .gitignore to exclude build artifacts and temporary directories. Replaces the legacy README with updated technical documentation and adds an MIT License.
(repo-wide) · high confidence
Introduce admin 'What's New' page with structured update sections
A new 'What's New' page has been added to the admin interface, displaying updates organized into distinct sections: Introduction, Upcoming Changes, Recent Changes, and Guidance. The page features a contents list for navigation, renders update items with area captions, headings, dates, and Govspeak body text, and includes a 'Back to Contents' link. Update types are visually distinguished using color-coded tags (green for 'new', blue for 'improvement', red for 'change', yellow for 'fix'). The 'Upcoming Changes' section is conditionally rendered only if updates are present.
_app/views/admin/whats\new · high confidence
Introduce configurable content block system
A new configurable content block framework has been added to allow dynamic definition of form fields for document types. This includes a base block class and specific implementations for arrays, dates, objects, selects, strings, textareas, govspeak, and search-tagging selects. The system supports nested fields, custom button labels, and validation error paths, enabling editors to configure complex document structures without code changes.
_app/models/configurable\_content\blocks · high confidence
Introduce full admin interface for managing roles
Admin users can now create, edit, list, and delete roles through a new set of views styled with the GDS Design System. The interface includes a filterable roles index, a form for editing role details (such as title, type, organisations, and responsibilities), and an appointments tab for managing current and previous appointments. A dedicated delete confirmation page is also provided for removing roles.
app/views/admin/roles · high confidence
Introduce new Publishing API presenters and base class
This change introduces a new \BaseItemPresenter\ to standardise common payload attributes (title, locale, update type, publishing app) and adds a suite of new presenters for Publishing API content items, including \CallForEvidencePresenter\, \ConsultationPresenter\, \ContactPresenter\, \CorporateInformationPagePresenter\, \DetailedGuidePresenter\, \DocumentCollectionPresenter\, \EmbassiesIndexPresenter\, \FatalityNoticePresenter\, \GovernmentPresenter\, \HistoricalAccountPresenter\, \HistoricalAccountsIndexPresenter\, \HowGovernmentWorksPresenter\, and \HtmlAttachmentPresenter\. These presenters define how specific Whitehall content types are structured and sent to the Publishing API, including their links, details, and rendering applications.
_app/presenters/publishing\api · high confidence
Introduce new Whitehall library components for publishing, storage, and data management
This change adds several new library files to the Whitehall codebase to support updated workflows. The new \Whitehall::PublishingApi\ class provides a unified interface for publishing, saving drafts, patching links, and handling asynchronous operations like republishing, scheduling, and unpublishing to the Publishing API. \Whitehall::AssetManagerStorage\ introduces a new storage backend for handling assets via the Asset Manager, including temporary file storage and deletion jobs. A new data migration system is introduced via \Whitehall::DataMigration\ and \Whitehall::DataMigrator\ classes to manage and run database migrations. Additionally, new classes for \AdminLinkLookup\, \ImageKinds\, \RandomKey\, and \WhipOrganisation\ are added to support specific domain logic and configuration.
lib/whitehall · high confidence
Introduce new design system layout for admin interface
A new \design\_system.html.erb\ layout has been added to replace the previous \application.html.erb\ layout. This new layout integrates GOV.UK Frontend components for the header, footer, and page structure, enabling consistent styling and navigation across the admin interface. It includes built-in support for Google Analytics 4 (GA4) tracking via data attributes and modules, handles error summaries and flash messages with specific width constraints, and allows for flexible title and banner rendering. The old generic layout has been removed.
app/views/layouts · high confidence
Introduce new lib modules for publishing, localization, and service configuration
This change adds a suite of new library files to the application's core logic. It introduces \PublishesToPublishingApi\ and \PresentPageToPublishingApi\ to handle the automatic publishing of content and its 'gone' status to the Publishing API, including callbacks for republishing dependent editions and policy groups. A new \LocalisedModel\ and \TranslatableModel\ module provides robust support for managing translations, including automatic association localization and error handling in English. The \Services\ module centralizes configuration for external APIs (Publishing API, Asset Manager, Search API, Signon) using Plek for service discovery. Additionally, new modules like \PoliticalContentIdentifier\ define rules for marking content as political, \HasContentId\ manages UUID generation, and \S3FileHandler\ enables direct S3 file operations.
lib · high confidence
Introduce office summary card component for worldwide offices index
The worldwide offices index page now uses a dedicated \OfficeSummaryCardComponent\ to display contact details. This component renders a summary card showing office type, contact type, comments, homepage status, services, email, address, contact form URL, phone numbers, main office status, markdown code, and access/opening times. It also provides action links to edit, add translations, or delete the office, with paths dynamically adjusted for non-English translations.
_app/components/admin/worldwide\offices · high confidence
Introduce paginated timeline query for document history
A new PaginatedTimelineQuery class has been added to handle fetching a document's activity timeline with pagination support. This allows users to view a combined history of document versions and editorial remarks, limited to 10 items per page, and optionally filtered to show only versions or only internal notes. The query constructs a unified SQL result set from these two sources, enabling efficient retrieval of chronological activity without loading the entire history into memory at once.
app/queries · high confidence
Introduce previewable GovSpeak editor, client-side image cropper, and searchable miller columns
This update replaces the previous visual editor with a new previewable text area for GovSpeak, allowing users to toggle between editing and rendered preview modes while supporting images and attachments. It also introduces a client-side image cropper component that enables users to crop images directly in the browser with support for different aspect ratios and version-specific controls. Additionally, a new searchable miller columns component is added, leveraging the Choices.js library to provide fuzzy search capabilities for topic selection, replacing the previous autocomplete implementation.
app/assets/javascripts/components · high confidence
Introduce structured redirect content items for the Publishing API
A new \Whitehall::PublishingApi::Redirect\ presenter has been added to generate structured redirect content items. This component constructs JSON payloads that include the \base\_path\, a list of \redirects\, and metadata such as \document\_type\ set to 'redirect' and \schema\_name\ set to 'redirect', ensuring these items are correctly identified and published via the Whitehall publishing app.
_lib/whitehall/publishing\api · high confidence
Introduction of a new hand-rolled authorization system
A new authorization framework has been introduced to manage permissions for Whitehall admin users. This change adds a central \Enforcer\ class that routes permission checks to specific rule sets based on the subject type (such as Documents, Editions, Ministerial Roles, and Social Media Accounts). It also introduces custom error classes (\PermissionDenied\ and \InvalidAction\) to handle access control violations, replacing the previous ad-hoc permission logic with a structured, object-oriented rules engine.
lib/whitehall/authority · high confidence
Manage editionable social media accounts
Administrators can now add, edit, delete, and reorder social media accounts linked to an edition. The new interface includes an index page listing existing accounts, forms for creating and editing accounts (using a searchable service selector and URL/title inputs), a confirmation dialog for deletion, and a dedicated reorder view using a drag-and-drop list component.
_app/views/admin/editionable\_social\_media\accounts · high confidence
Migrate legacy Topical Events to Standard Edition
The system now supports migrating legacy Topical Events into the new Standard Edition format. This change introduces a \StandardEditionMigrator\ with a \TopicalEventRecipe\ that maps legacy data—such as titles, summaries, bodies, social media links, lead/supporting organisations, and featured documents—into the new structure. The migration handles specific data transformations, including normalizing social media link titles, dropping unsupported legacy fields (like \.atom\ routes and duration fields), and ensuring the migrated content is published with the correct creator and timestamps.
_app/services/standard\_edition\migrator · high confidence
New 'About' page for organisations in the admin interface
Administrators can now view the 'About' details for an organisation via a new dedicated page at the OrganisationController\#about endpoint. This page displays the organisation's summary and body text within a summary card component, includes a link to view the full page on the public website, and provides a back link to the main organisations list. If no about us page exists, an inset text message indicates this.
_app/views/admin/organisations\about · high confidence
New 'More' admin page with expanded management links
A new 'More' page has been added to the admin interface, providing a centralized list of links for managing various content and system settings. This includes links for cabinet ministers, emergency banners, fields of operation, governments, policy groups, organisations, people, roles, sitewide settings, topical events, world location news, worldwide organisations, republishing content, and retagging content.
app/views/admin/more · high confidence
New GA4 analytics modules for admin interface interactions
This change introduces a suite of new JavaScript modules in the admin analytics directory to track specific user interactions via Google Analytics 4. The new modules include \Ga4ButtonSetup\ for tracking non-submit button clicks using the 'select\_content' event, \Ga4FormSetup\ for monitoring form changes and submissions (excluding finder and specific form trackers), \Ga4SearchSetup\ and \Ga4SearchResultsSetup\ for tracking search queries and result clicks within ecommerce-style tables, \Ga4FinderSetup\ for tracking filter changes in finder components, \Ga4IndexSectionSetup\ for indexing form elements for structured data, and \Ga4PasteTracker\ for detecting paste actions. These modules collectively replace or supplement previous tracking logic by attaching specific data attributes and event listeners to admin interface elements.
app/assets/javascripts/admin/analytics-modules · high confidence
New JavaScript modules for admin form interactions and reports
This change introduces four new JavaScript modules in the admin interface to handle specific form behaviors and report generation. The new \BrokenLinksReport\ module enables automatic generation and polling of broken links reports, including GA4 tracking for the refresh action. The \EditionForm\ module manages dynamic UI updates for speech editions, such as showing/hiding location fields based on speech type, displaying warnings for future delivery dates, and revealing URL slug controls when the title changes. The \OrganisationForm\ module handles conditional visibility for custom logos and non-departmental public body fields. Finally, the \UnpublishDisplayConditions\ module manages the display of conditional sections in the unpublish/withdraw form based on the selected reason, including support for the new 'Archived' reason.
app/assets/javascripts/admin/views · high confidence
New Whitehall bookmarklets for navigating from frontend to admin
Added a new 'Whitehall bookmarklets' page in the admin interface that provides two new browser bookmarklets: 'Find in admin', which jumps from a frontend page to its corresponding admin page, and 'Find a PDF publication page in Whitehall', which redirects from a PDF to the Whitehall document it was attached to. These bookmarklets are implemented via new partials (\_find\_in\_admin.erb and \_find\_parent\_document.erb) and are accessible via the new index view.
app/views/admin/bookmarklets · high confidence
New address formatting library with multiple output formats
A new address formatting system has been introduced in lib/address\_formatter, providing a base Formatter class and specific renderers for HCard (HTML with break tags), JSON (structured address data with optional type), and plain Text (stripped of blank lines). This allows consumers to obtain contact addresses in various standardized formats from a single source of truth.
_lib/address\formatter · high confidence
New admin JavaScript modules for cache busting, document history, image processing, locale switching, and form safety
This change introduces several new JavaScript modules in the admin interface to improve user experience and reliability. The CachebustLink module ensures links carry fresh timestamps to prevent stale content. DocumentHistoryPaginator enables asynchronous pagination and filtering within the document history tab, allowing users to navigate history without full page reloads. ImageProcessingChecker provides resilient status updates for image uploads, handling loading states and failures gracefully. The LocaleSwitcher module dynamically adjusts text direction (RTL/LTR) for form fields based on the selected language. Additionally, PreventMultipleFormSubmissions disables submit buttons upon form submission to prevent duplicate entries, and NavbarToggle improves accessibility for the navigation menu.
app/assets/javascripts/admin/modules · high confidence
New admin UI presenters and CSV export capabilities
This change introduces several new presenters to support the admin interface and data exports. A new DocumentListExportPresenter generates CSV exports for documents, including columns for history-mode status, primary language, translations, and summary. An EditionableSocialMediaAccountsIndexPresenter displays social media accounts for editions, showing translations and providing edit/delete actions. An EmergencyBannerPresenter formats the current emergency banner details for display. Additionally, a RoleTypePresenter organizes role types into groups (such as Ministerial, Managerial, and specific department roles) for the admin role form, and a UseSlugAsParam module standardizes URL parameter usage for presenters.
app/presenters · high confidence
New admin filter classes for editions and statistics announcements
The admin interface now uses dedicated filter classes (\Admin::EditionFilter\ and \Admin::StatisticsAnnouncementFilter\) to manage document listing and statistics announcement queries. \Admin::EditionFilter\ centralizes filtering logic for editions, supporting criteria such as type, state, author, organization, date ranges, and broken links, while enforcing a maximum export size of 8,000 records and using a batch size of 100 for CSV exports to manage memory usage. \Admin::StatisticsAnnouncementFilter\ handles statistics-specific filtering, allowing users to filter by title, organization, and link status (unlinked publications), with specific ordering and date scopes for past, future, and imminent releases.
app/models/admin · high confidence
New admin helper modules for edition and attachment management
The admin interface now includes a set of new helper modules to support edition and attachment workflows. \Admin::AttachableHelper\ provides guidance on how attachments appear in publications and consultations. \Admin::BasePathHelper\ maps document URLs to their types and slugs, supporting the new edition routing structure. \Admin::EditionRoutesHelper\ and \Admin::EditionActionsHelper\ manage polymorphic edition paths and document type filtering options. \Admin::EditionsHelper\ consolidates edition form rendering, state filtering, and organisation selection logic. Additional helpers like \Admin::ContactsHelper\, \Admin::FeaturesHelper\, and \Admin::DocumentCollectionGroupMembershipsHelper\ support the display and management of contacts, featured content, and document collection memberships within the admin UI.
app/helpers/admin · high confidence
New admin interface for creating and editing Topical Event about pages
Administrators can now create, view, and edit 'about pages' for topical events through a new GDS-styled interface. This includes a dedicated show page that displays the about page details (name, read more link text, summary, and body) with an option to create a new page if none exists, and new/new/edit forms that allow users to input these fields using standard Govuk components like input, character count, textarea, and the govspeak editor. The edit and new forms include a warning that changes appear instantly on the live site and provide a help tab with simple formatting guidance.
_app/views/admin/topical\_event\_about\pages · high confidence
New admin interface for republishing content
Administrators now have a dedicated republishing section to refresh content in the Publishing API. The new index page provides direct links to republish specific individual pages, as well as search-based flows for organisations, people, roles, and documents. Each flow includes a confirmation step that displays the target content and any associated editions, ensuring users can verify what will be updated before triggering the republishing event.
app/views/admin/republishing · high confidence
New admin interfaces for managing offsite links, topical events, and feature ordering
Administrators can now manage external website links and topical events through dedicated views that display these items in tables with options to edit, feature, or delete them. A new reorder interface allows users to change the display order of currently featured documents using drag-and-drop or up/down buttons, with the option to update the order or cancel the changes.
_app/views/admin/feature\lists · high confidence
New and consolidated Rake tasks for content management, data hygiene, and maintenance
This change introduces a comprehensive suite of new Rake tasks in lib/tasks to streamline content operations, data maintenance, and developer workflows. Key additions include data hygiene tools for merging person records and reassigning role appointment speeches, election-specific tasks to manage ministerial appointments and political content markers, and reslugging utilities for people, roles, organisations, and HTML attachments. The update also adds reporting capabilities for invalid editions and Govspeak pattern matching, publishing API helpers for redirecting unpublished statistics and HTML attachments, and operational tasks for managing scheduled publishing jobs, taxonomy cache rebuilding, and review reminders. Developer experience is improved with new tasks for running linters, Jasmine tests, and publishing schema validations, alongside asset precompilation enhancements for Rails 7 compatibility.
lib/tasks · high confidence
New benchmarking and codebase metrics scripts; removed legacy rails script
Added script/benchmark\_edition\_search.rb to measure search performance against a local production database replica, and script/codebase\_metrics to report repository statistics such as file counts, size, and route numbers. The legacy script/rails entry point has been removed.
script · high confidence
New bulk organisation updater and dedicated reslugger classes for data hygiene
The data hygiene library now includes a \BulkOrganisationUpdater\ that processes CSV files to update lead, supporting, and access-limiting organisations for documents, including specific handling for Statistics Announcements, with validation and change summarization. Additionally, dedicated reslugger classes (\OrganisationReslugger\, \PersonReslugger\, \RoleReslugger\, \TopicalEventReslugger\) and utilities for HTML attachment redirection and deleted document restoration have been added to manage content updates and redirects more granularly.
_lib/data\hygiene · high confidence
New bulk republishing tasks for specific attachment scenarios
Added five new Rake tasks in lib/tasks/attachments to trigger bulk republishing of documents based on specific attachment conditions. These include republishing documents with non-PDF attachments (filterable by content type, age, and edition state), documents with inaccessible attachments for all organizations, documents with draft HTML attachments linked to consultation responses, documents with historically political HTML attachments, and documents with HTML attachments that have national inapplicabilities. Each task identifies the relevant documents and enqueues them for republishing via the Publishing API.
lib/tasks/attachments · high confidence
New component styles for datetime fields, govspeak editor, image cropper, and navigation
This change introduces SCSS stylesheets for several new or updated UI components in the admin interface. It adds styling for a datetime field wrapper, a govspeak editor with preview and error states, and an image cropper that integrates with the cropperjs library (including control buttons and keyboard focus states). It also defines styles for a secondary navigation component, a sub-navigation bar, a summary card, an inset prompt, a loading spinner, a single image upload component, and a miller columns selection interface with sticky column behavior.
app/assets/stylesheets/components · high confidence
New configurable content block templates for admin forms
Added view templates for several new configurable content block types in the admin interface, including default\_array, default\_date, default\_object, default\_select, default\_string, default\_textarea, govspeak, select\_with\_search\_tagging, and ordered\_select\_with\_search\_tagging. These templates render the appropriate form fields (such as inputs, textareas, date pickers, selects, and govspeak editors) using GOV.UK Publishing Components, handle validation error display, support right-to-left text direction, and show primary locale content where applicable. The array block specifically supports adding and removing multiple items with a custom 'Add another' button text, while the select with search tagging blocks provide single and multiple selection capabilities with search functionality.
_app/views/admin/configurable\_content\blocks · high confidence
New document addition workflow with title and URL search options
Administrators can now add documents to a collection group using a dedicated multi-step flow. The process begins with a search options page where users choose to add a document 'By title' or 'By URL'. The 'By title' view provides a search interface that displays document states (e.g., draft, published) in the results and restricts the 'Add' button to documents in pre-publication states, ensuring only appropriate content is added. The 'By URL' view allows direct addition via a document URL. Both views include analytics tracking attributes for GA4 and ensure new documents appear at the top of the collection group.
_app/views/admin/document\_collection\_group\_document\search · high confidence
New document connection interface for statistics announcements
Administrators can now search for and connect existing documents to a statistics announcement via a new index page. The interface includes a search form filtered by title or slug, displays matching results in a paginated table, and provides 'View' and 'Connect' actions for each document. The page also incorporates GA4 tracking attributes for search and e-commerce events to monitor user interaction.
_app/views/admin/statistics\_announcement\publications · high confidence
New email notifications for content lifecycle events
Added a set of new email templates to alert users about key content management actions, including reminders for Call for Evidence and consultation deadlines, notifications for new fact-check requests and responses, alerts when an edition is published or rejected, and reminders for scheduled content reviews. These templates provide specific guidance links and context to help users manage their content effectively.
_app/views/mail\notifications · high confidence
New featured documents table component with read-only mode and published date
A new \FeaturedDocumentsTableComponent\ has been added to the admin features interface, rendering a table that displays the title, type, and published date of featured items. The component supports a read-only mode, which hides the edit and unfeature action links, and distinguishes between new document features and legacy topical events or offsite links when determining the display type and associated edit links.
app/components/admin/features · high confidence
New form and list views for statistical data sets
Writers can now create and manage statistical data sets using a new dedicated form and list interface. The form provides guidance on when to use this format (for frequently updated live data) versus publications, and includes an associations section for linking to organisations. The list view displays statistical data sets as clickable links to their edit pages.
_app/views/admin/statistical\_data\sets · high confidence
New helper modules for attachment handling, document metadata, and error display
This change introduces several new helper modules to the application. AttachmentsHelper provides methods to display error summaries for file uploads and success notifications. DocumentHelper adds helpers to render attachment references (such as ISBNs and paper numbers) and humanized file type metadata. ErrorsHelper introduces utilities to format validation errors for input fields and flash messages. GovspeakHelper consolidates the rendering of Govspeak content, including image and attachment preparation, header hierarchy extraction, and internal link rewriting. OrganisationHelper manages the display of organisation names with definite articles (supporting Welsh grammar) and parental relationships. PluralizeHelper customizes pluralization logic, and TranslationHelper adds utilities for language fallbacks and corporate information page links. ApplicationHelper is also updated with new methods for page titles, pagination, datetime formatting, and external link detection.
app/helpers · high confidence
New image management interface for editions
Administrators now have a dedicated section to manage images for editions, including an index page that lists available images and allows bulk uploads, an edit page with an image cropper and optional caption/credit fields, and confirmation screens for deleting images or changing the default lead image behavior. The interface provides inline error handling, processing status indicators, and back links to improve navigation.
_app/views/admin/edition\images · high confidence
New interface for managing and reordering organisation people
Admin users can now view people associated with an organisation grouped by role type (such as Ministers, Management, or Military) and reorder these roles within each group. The new People index page displays these categories in tabs, showing the current occupant or vacancy status for each role, while a dedicated Reorder page allows users to adjust the display order using drag-and-drop or up/down buttons.
_app/views/admin/organisation\people · high confidence
New interface for managing and reordering organisations in topical events
Administrators can now view, toggle, and reorder organisations associated with a topical event. A new index page displays lead and supporting organisations in separate tables, with a toggle link to switch an organisation's role. For lead organisations, a dedicated reorder page allows administrators to adjust the display order using a drag-and-drop interface or up/down buttons.
_app/views/admin/topical\_event\organisations · high confidence
New interface for managing document collection group memberships
Administrators can now view, reorder, and remove documents within specific groups of a document collection. This change introduces the Document Collection Group Memberships index page, which lists group members and provides links to add or reorder documents. A new reorder interface allows users to adjust the display order of documents using drag-and-drop or up/down buttons, while a dedicated confirmation page clarifies the action by labeling the removal button as 'Remove' instead of 'Delete'. Additionally, a warning banner is displayed if any documents in the group are currently unavailable.
_app/views/admin/document\_collection\_group\_memberships, app/views/admin/topical\_event\_featurings, app/views/admin/worldwide\offices · high confidence
New interface for managing worldwide topic tags
A new edit page has been added for managing worldwide tags on editions, featuring a Miller columns component for browsing and selecting taxons. The form allows users to save topic changes, which are applied to live pages immediately if the content is already published, and includes a notice explaining this behavior.
_app/views/admin/edition\_world\tags · high confidence
New interface for updating edition access controls
Admin users can now update the access limitations of an edition via a dedicated edit page. This view presents a form to modify access-limiting organizations and requires a mandatory editorial remark explaining the change. It includes a warning for GDS Admins regarding sensitive information, a cancel link to return to the edition details, and a back link to the main editions list.
_app/views/admin/edition\_access\limited · high confidence
New interface to unpublish statistics announcements
Administrators can now unpublish statistics announcements via a new GOV.UK Design System form. The page explains that unpublishing is appropriate for duplicates or erroneous publications, and requires a redirect URL to preserve user access. A conditional hint directs users to cancel the release entirely if the statistics are no longer being published.
_app/views/admin/statistics\_announcement\unpublishings · high confidence
New publication type selection and association fields in admin forms
The admin publication editing interface now includes a dedicated 'Publication type' field using a grouped 'select with search' component, categorizing types into common, less common, and discouraged groups, along with dynamic format advice. The form also exposes an 'Associations' section allowing editors to link publications to appointments, statistical data sets, topical events, world locations, organisations, and nations.
app/views/admin/publications · high confidence
New service objects for edition lifecycle and bulk operations
The application now uses dedicated service objects in app/services to manage edition states and bulk tasks. Edition lifecycle actions (publish, schedule, unpublish, delete, withdraw, and their force/unschedule variants) are handled by specific services (e.g., EditionPublisher, EditionScheduler, EditionUnpublisher) that validate state transitions, update the Publishing API, and notify authors. A new BulkRepublisher service allows administrators to republish documents by various criteria (all, by organisation, by content type, or by attachment presence). Additional services handle draft updates, auth-bypass asset propagation, and taxon link patching, while a StandardEditionMigrator service supports migrating legacy content to the new StandardEdition model.
app/services · high confidence
New simple Govspeak preview interface for admin
A new preview page has been added at app/views/admin/preview/preview.html.erb that renders Govspeak content with embedded images and attachments. This allows administrators to preview how published documents will appear, including alternative format contact emails and uploaded attachments, while ensuring published documents do not link back to the admin interface.
app/views/admin/preview · high confidence
New string helpers and eager-loading patch for translated associations
This change introduces two new capabilities in the application's core libraries. First, it adds \possessive\ and \articleize\ methods to the \String\ class, allowing developers to easily format text with correct possessive apostrophes and indefinite articles (e.g., 'a' vs 'an'). Second, it adds a \with\_translations\_for\ scope to \ActiveRecord::Base\ to fix issues with eager-loading translations for associated objects, specifically addressing errors where standard Globalize3 merging failed to find the 'translations' association.
lib/patches · high confidence
New summary card component for worldwide organisation pages
Admin users now see a structured summary card on the worldwide organisation pages index, displaying truncated summary and body text alongside action links to edit, add translations, or delete pages. The component handles both default and non-English translations, ensuring appropriate titles and routing for each context.
_app/components/admin/worldwide\_organisation\pages · high confidence
New table component for managing featured documents in topical events
Administrators now have a dedicated view component to manage featured documents within topical events. This new component renders a table displaying the title, type (distinguishing between internal editions and external offsite links), and published date of each featured item, along with action links to edit or unfeature them. This change introduces a specific UI structure for this subset of features, replacing or supplementing previous inline displays with a consolidated tabular view.
_app/components/admin/topical\events · high confidence
New translation editing interface with configurable content blocks
Admin users can now edit translations for standard editions via a dedicated form that includes fields for translated title and summary, alongside support for right-to-left languages. The interface renders all config-driven content blocks using the new configurable content block system and provides access to help documentation and document history through a tabbed sidebar.
_app/views/admin/standard\_edition\translations · high confidence
Pagination added to the Document History tab
The Document History tab now supports paginated navigation, allowing users to browse older or newer entries without reloading the entire page. This change introduces remote pagination controls (previous/next links) that preserve the current editing state and filter context via query parameters, ensuring a seamless browsing experience within the history view.
app/views/kaminari/history · high confidence
Removals
Removal of legacy application README template
The static documentation template file \doc/README\_FOR\_APP\ has been removed. This file previously provided instructions for introducing the application and generating API documentation via \rake doc:app\; its removal indicates that this manual documentation approach is no longer supported or has been replaced by an automated generation process.
doc · high confidence
Architecture
Refactor edition scopes into modular concerns
The edition filtering and ordering logic has been reorganized from a single file into distinct, modular concerns (e.g., \filterable\_by\_author\, \filterable\_by\_broken\_links\, \searchable\_by\_title\). This change improves maintainability by separating concerns such as authorship, broken link detection, date ranges, and title searching into their own files, while preserving the existing filtering capabilities for users.
app/models/concerns/edition/scopes · high confidence
Refactored Govspeak content extraction into dedicated extractor classes
The Govspeak library has been restructured to improve code organization and maintainability. Contact and edition extraction logic has been moved into new, dedicated classes (\ContactsExtractor\ and \DependableEditionsExtractor\), replacing previous inline implementations. Regex patterns for embedded content are now centralized in a shared module (\EmbeddedContentPatterns\). Additionally, a new \OrphanedHeadingError\ class has been introduced to handle specific validation errors related to missing parent headings.
lib/govspeak · high confidence
Behavioural changes
Add SanitizedFile class with zero\_size? method
A new SanitizedFile class has been introduced within the CarrierWave library, providing a zero\_size? method that checks if the file size is zero. This change supports the library's internal file handling logic by offering a dedicated way to detect empty files.
_lib/carrier\wave · high confidence
Add bulk republishing by content type, organisation, and content ID
Admin users can now trigger bulk republishing operations using three new criteria: specific content types, organisations (via slug), or a list of content IDs. This replaces the previous 'all' option with targeted selection, allowing users to queue republishing for documents associated with a specific organisation, re-present documents matching given content IDs while retaining their current state, or republish all documents of a chosen content type.
_app/views/admin/bulk\republishing · high confidence
Added GA4 configuration and IE11 compatibility support for admin
The admin interface now includes a new domain configuration file that defines settings for Google Analytics 4 (GA4) across production, staging, and integration environments, including specific container IDs and authentication tokens. Additionally, a new script has been introduced to prevent JavaScript execution in Internet Explorer 11 by disabling ES6 module support and removing the 'js-enabled' class, ensuring the GOV.UK Frontend does not initialize in unsupported browsers.
app/assets/javascripts/admin · high confidence
Admin UI components refactored with GA4 tracking and GOV.UK Design System alignment
The admin interface now uses dedicated ViewComponents for key UI elements, introducing Google Analytics 4 (GA4) tracking for error summaries, flash notices, and flash alerts while removing legacy Universal Analytics code. The ErrorSummaryComponent has been rewritten to support error object inputs, sort messages by a designated field order, allow custom error labels, and correctly format dotted array attributes. The new CurrentlyFeaturedTabComponent presents featured pages in a GOV.UK Design System-compliant layout, distinguishing between live and remaining featured items, and providing a reorder link. Flash messages are now handled by a shared FlashMessageComponent with an html\_safe option, ensuring consistent rendering and tracking for success and error alerts.
app/components/admin · high confidence
Admin author contact details page now displays email
The admin view for individual authors has been updated to explicitly show the author's email address via a mailto link. The page title and heading now reflect that this is a contact details view, and the layout uses the standard grid system to present the information.
app/views/admin/authors · high confidence
Admin controllers transition to GOV.UK Design System with legacy fallback
The admin interface controllers have been updated to render views using the GOV.UK Design System for users with the appropriate preview permissions, while maintaining a legacy Bootstrap layout for others. This change involves duplicating view templates (prefixed with 'legacy' where necessary) and updating controller logic to conditionally select the layout based on user permissions, ensuring a gradual rollout of the new design without breaking access for users who do not have the new design system enabled.
app/controllers/admin · high confidence
Admin interface styling migrated to GOV.UK Design System
The admin interface's visual presentation has been updated to align with the GOV.UK Design System. This change introduces new, targeted SCSS styles for key administrative views—including the dashboard, edition management, document collections, and various index pages (organisations, people, roles, topical events)—replacing legacy global classes with component-specific styling. Users will see consistent spacing, typography, and table layouts across these admin sections, along with improved visual cues for audit trail comparisons and form elements.
app/assets/stylesheets/admin/views · high confidence
Admin interface styling overrides for tables, forms, and read-only views
A new overrides stylesheet introduces specific visual and behavioral adjustments to the admin interface. Tables with actions now align their action buttons to the right, and filterable tables use a fixed layout. Small tags are styled with increased font weight, and code elements are displayed in red. Translation input and textarea components have adjusted margins, while summary lists with images now vertically align their keys. Additionally, when JavaScript is enabled, the 'Remove' checkbox for 'Add another' fields is hidden to prevent empty field submissions, and the 'reorder attachments' list becomes non-interactive in read-only mode.
app/assets/stylesheets/admin · high confidence
Admin interface updates for featured links and read-only views
The admin interface now supports managing featured links with a new 'Add another' component that allows users to dynamically add, edit, and delete link entries, including support for translated inputs when editing non-default locales. A notice has been added to clearly indicate when an edition is in a read-only state, guiding users to create a new edition to make changes. Additionally, the search results for featurable editions now include specific data attributes to support GA4 tracking for list titles and start indices.
app/views/admin/shared · high confidence
Admin maintenance mode and authenticated user header support
The application now supports a maintenance mode that displays a specific error page when enabled, and ensures the authenticated user's ID is propagated via the x\_govuk\_authenticated\_user header for analytics and tracking. Additionally, a new controller allows signed-in users to request document list exports, which are then retrieved from S3.
app/controllers · high confidence
Admin social media accounts index uses GOV.UK Design System summary cards with permission checks
The social media accounts index page now renders account details using a new SummaryCard component styled with the GOV.UK Design System. This component displays account titles and URLs for each supported locale and provides action links (View, Edit, Delete) that are strictly gated by the current user's permissions, ensuring that users without update or delete rights cannot access those actions.
_app/components/admin/social\_media\accounts · high confidence
Adopts GOV.UK Publishing Components for pagination
The pagination view now renders using the \govuk\_publishing\_components\ pagination component instead of the previous Kaminari default. This change ensures that pagination links retain query string parameters and supports passing an anchor tag to the URL, providing a consistent user experience aligned with GOV.UK design standards.
_app/views/kaminari/govuk\paginator · high confidence
Automatic cleanup of organization associations during news story subtype conversions
A new \StandardEdition::HygieneEnforcer\ class is introduced to automatically resolve data inconsistencies that occur when converting between news story subtypes and world news stories. Previously, converting to or from a world news story could leave redundant associations (such as standard \organisations\ on a world news story or \worldwide\_organisations\ on other subtypes) in the database and Publishing API, causing incorrect data to surface on the frontend. This service now runs after every document conversion to detect these 'dirty' states, remove the redundant associations from the database, and patch the Publishing API links to ensure the correct organization data is displayed.
_app/services/standard\edition · high confidence
Custom slug normalization using Babosa
The application now uses a custom normalization module for FriendlyId slugs that leverages the Babosa gem. This change improves string parameterization by applying Babosa's normalize method to slugs, ensuring more consistent and readable URL slugs for users.
_lib/friendly\id · high confidence
Database schema migration for worldwide organisations and content blocks
This update applies a series of database migrations that restructure how worldwide organisations and content blocks are stored. Worldwide organisations are migrated to an edition-based model, involving the creation of new tables like \editionable\_worldwide\_organisations\ and \worldwide\_organisation\_pages\, while legacy tables such as \worldwide\_organisations\ and \sponsorships\ are dropped. Content blocks are introduced with new tables for documents, editions, and authors, alongside indexes to support these new relationships. Additionally, the schema is cleaned up by removing unused columns and tables, such as \financial\_reports\ and \specialist\_sectors\, and adding support for features like visual editors and republishing events.
db/migrate · high confidence
Database schema updated to Rails 8.1 with new access-limiting and attachment models
The database schema has been regenerated for Rails 8.1 (version 2026\_09\_16\_110000), introducing several new tables and columns to support updated application features. Key additions include \access\_limiting\_individuals\ and \access\_limiting\_organisations\ tables to manage granular access restrictions on editions, and an \attachment\_sources\ table to track external URLs for attachments. The \attachments\ table now includes fields for \accessible\, \deleted\, \safely\_resluggable\, and \unnumbered\_command\_paper\/\unnumbered\_hoc\_paper\ flags, alongside indexes to prevent duplicate attachment orderings. Additionally, the schema now supports \call\_for\_evidence\ and \consultation\ response forms and participations, as well as translated contact details via \contact\_translations\ and \contact\_number\_translations\. The database seeds have also been updated to skip publishing API callbacks in non-test environments and to create specific test data for users, organisations, world locations, and ministerial roles.
db · high confidence
Display read-only email notification settings for document collections
The document collection admin interface now shows a dedicated page for email notification settings. Instead of allowing users to edit these settings, the view informs them that notifications cannot be changed and explains that subscribers receive alerts for major content changes and when the page is unpublished. This replaces the previous UI that allowed adding email alerts, shifting the capability to a read-only informational display.
_app/views/admin/document\_collection\_email\subscriptions · high confidence
Document collection form migrated to GOV.UK Design System
The document collection creation and editing interface has been updated to use the GOV.UK Design System. The form now renders associations (organisations and topical events) within a styled fieldset component, replacing the previous legacy form structure to provide a consistent and accessible user experience.
_app/views/admin/document\collections · high confidence
Edition model refactored into modular concerns
The Edition model has been restructured by extracting its responsibilities into a suite of focused concerns (such as LimitedAccess, Organisations, Publishing, Workflow, and Identifiable). This change replaces the previous monolithic implementation with a modular architecture, introducing new capabilities like configurable access limiting by organisation or individual, a refined slug generation system, and a trait-based mechanism for handling association cloning during edition duplication.
app/models/concerns/edition · high confidence
Extract embed code replacement logic into dedicated service
The logic for finding and replacing embed codes within content blocks has been moved out of the Content Block Manager engine into a new, standalone service (FindAndReplaceEmbedCodesService). This service now handles fetching content items from the Publishing API using content ID aliases and rendering the corresponding blocks, providing a clearer separation of concerns for this specific functionality.
_app/services/content\block · high confidence
Government management interface migrated to GOVUK Design System
The admin interface for creating, editing, listing, and closing governments has been rebuilt using the GOVUK Publishing Components library. This update introduces a consistent design system across the government modelling pages, including a new form for setting start and end dates, a table-based index view, and a dedicated 'prepare to close' workflow that lists active ministerial appointments before unappointing them. The changes also enforce GDS admin permissions for these actions and ensure the UI handles blank dates and current-government states correctly.
app/views/admin/governments · high confidence
Implement link check report persistence and update logic
This change introduces the core data models and processing classes for storing and updating link checker results. It adds the \LinkCheckerApiReport\ and \LinkCheckerApiReport::Link\ models to persist report metadata and individual link statuses, including new fields for \problem\_summary\ and \suggested\_fix\. The \CreateFromBatchReport\ and \CreateNoopBatchReport\ classes handle the creation of new reports by replacing any existing ones for an edition, while \UpdateFromBatchReport\ manages incremental updates by adding, modifying, or removing links based on incoming payloads. This provides the backend foundation for tracking link health over time.
_app/models/link\_checker\_api\report · high confidence
Introduces custom Whitehall decorator infrastructure to replace Draper
The application now uses a new, internal decorator framework located in lib/whitehall/decorators, replacing the previous Draper-based implementation. This change introduces a base Decorator class and a specialized CollectionDecorator for handling lists of items, along with a configurable DelegateInstanceMethodsOf helper to manage method delegation. For users, this means the underlying presentation layer for models and collections has been refactored to be more lightweight and configurable, though the external API for decorating objects remains consistent.
lib/whitehall/decorators · high confidence
Migrate admin stylesheets from Sprockets manifest to SCSS imports
The admin interface's styling architecture has been updated to replace the legacy \application.css\ Sprockets manifest with a new \application.scss\ file that explicitly imports individual SCSS modules. This change introduces styles for new GOV.UK Design System components (such as the worldwide offices index summary card, datetime fields, and image cropper) and implements a \.js-enabled\ class strategy to prevent flash-of-unstyled-content issues during JavaScript module initialization. For users, this ensures consistent styling for newly ported admin views and a smoother visual experience when interacting with dynamic admin features.
app/assets/stylesheets · high confidence
Migrate asset precompile configuration to manifest file
The asset pipeline configuration has been updated to use a new \manifest.js\ file, which explicitly defines the precompiled assets including \application.js\, \test-dependencies.js\, \admin/domain-config.js\, and \es6-components.js\, alongside image and build directories. This change replaces the previous implicit or alternative configuration method, ensuring that the frontend JavaScript bundles and specific admin configurations are correctly linked during asset precompilation.
app/assets/config · high confidence
Migration to GOV.UK Notify for email delivery
The application has switched its email infrastructure from Amazon SES to the GOV.UK Notify service. This change introduces a new base mailer class that integrates with the Notify API using template IDs, replacing the previous ActionMailer implementation. Existing notification types such as fact-check requests, edition publication alerts, and consultation deadlines are now routed through this new system, ensuring consistent delivery via the government's central notification platform.
app/mailers · high confidence
Nation inapplicability list now conditionally renders alternative URLs
The partial rendering the list of nations where a policy or consultation does not apply has been updated to only display a clickable link when an alternative URL is available. If no alternative URL exists, the nation name is shown as plain text, and the link element is omitted entirely.
_app/views/nation\inapplicabilities · high confidence
New GOV.UK Design System interface for editing statistics announcement tags
Administrators can now use a redesigned, GOV.UK Design System-based interface to edit the topic taxonomy tags for a statistics announcement. The new edit view replaces the previous implementation, featuring a dedicated section for selected topics and a taxonomy group selector, streamlining the tagging workflow.
_app/views/admin/statistics\_announcement\tags · high confidence
New GOV.UK Design System interface for managing organisation translations
The organisation translations management area has been rebuilt using the GOV.UK Design System, providing a dedicated index page to list existing translations and missing languages, an edit form for updating translation details (name, acronym, logo formatted name, and featured links), and a confirmation dialog for deleting translations. This change replaces the previous implementation with a structured, accessible interface that supports right-to-left languages and includes back-navigation to the main organisations list.
_app/views/admin/document\_collection\_groups, app/views/admin/organisation\translations · high confidence
New Sidekiq job infrastructure and asset access limiting
The \app/sidekiq\ directory has been restructured with a new \JobBase\ class and a comprehensive suite of dedicated background jobs for asset management, publishing API interactions, and content maintenance. Key additions include \AssetManagerCreateAssetJob\, which now enforces individual and organizational access limiting on uploaded assets, and \AssetManagerAttachmentMetadataJob\, which safely handles asset replacement lookups only for models that support it. The system also introduces jobs for bulk republishing (\PublishingApiDocumentRepublishingJob\), link checking (\RevalidateLinkCheckReportJob\), and content updates (\FindAndReplaceJob\), while removing the legacy \StandardEditionMigrator\ implementation in favor of a new \StandardEditionMigratorJob\.
app/sidekiq · high confidence
New Topic Taxonomy tagging interface
The admin tagging interface now uses a dedicated 'Topic taxonomy tags' view for managing edition tags. This change replaces the previous tagging UI with a form that renders a shared taxonomy group description and selector, displays selected topics under a clear heading, and provides 'Save' and 'Cancel' actions, aligning the tagging workflow with the new topic taxonomy structure.
_app/views/admin/edition\tags · high confidence
New UI for featuring and unfeaturing items
The admin interface for managing featured content has been updated with new views for the 'new' and 'confirm unfeature' actions. Users can now feature items using a form that includes a file upload for images and an alt text field, with conditional warning messages displayed for non-editionable features and non-organisation parents. Additionally, a dedicated confirmation page allows users to verify the removal of a feature before it is unfeatured.
app/views/admin/features · high confidence
New ViewComponents for edition history, fact-checking, and document type changes
The edition editing interface now uses dedicated ViewComponents to render key sections. The Document History tab is encapsulated in DocumentHistoryTabComponent, which supports filtering (internal notes vs. history) and pagination, and renders specific entry types: AuditTrailEntryComponent for standard actions, EditorialRemarkComponent for internal notes (now supporting links), and HostContentUpdateEventComponent for content block updates. A new FactCheckingTabComponent displays pending and completed fact-check requests and provides a form to send new requests. Additionally, DocumentTypeChangeSummaryComponent visualizes field differences when changing a document's type, and the TagsComponent now surfaces 'Force scheduled' and 'Dangerous links' statuses.
app/components/admin/editions · high confidence
New ViewComponents for edition preview, sidebar actions, and translations
The edition show page now uses dedicated ViewComponents to structure the preview, sidebar actions, and translations sections. The PreviewComponent displays preview links with cache-busting, supports sharing via expiring auth-bypass tokens, and warns users if the edition is invalid. The SidebarActionsComponent consolidates all workflow buttons (create, edit, submit, schedule, publish, reject, delete, etc.) into a single list, applying GA4 tracking data attributes and preventing multiple form submissions. The TranslationsComponent lists non-primary translations with edit/delete actions where permitted.
app/components/admin/editions/show · high confidence
New admin forms and page diff views for Worldwide Organisations
The admin interface for Worldwide Organisations now uses new GOV.UK Design System components. The edit form (\_form.html.erb) allows administrators to update the logo formatted name, upload a default news image, and manage associations such as the main office, world locations, roles, and related organisations. Additionally, a new diff view (\_pages\_diff.html.erb) displays side-by-side comparisons of page summaries and bodies for audit trails, helping users track changes to corporate information pages.
_app/views/admin/worldwide\organisations · high confidence
New cabinet ministers ordering interface with reshuffle preview
The cabinet ministers administration page has been redesigned using the GOV.UK Design System, introducing a tabbed interface for reordering cabinet ministers, also-attends-cabinet roles, whips, and ministerial organisations. Each section now features a dedicated reorder form with drag-and-drop or button-based reordering capabilities. Additionally, during a reshuffle, a preview link is provided to view the ministers page on the website.
_app/views/admin/cabinet\ministers · high confidence
New component library for datetime, translation, and image editing interfaces
This change introduces a suite of new view components in app/views/components to standardize and improve specific editing interfaces. The datetime\_fields component now supports optional time selection and uses the GOV.UK date-input and fieldset components for better structure and accessibility. Translation workflows are enhanced with translated\_input and translated\_textarea components, which display original English text in a details section or a hint if no original exists, with the textarea optionally supporting the new govspeak\_editor for rich text. Image management is updated with the image\_cropper component, which uses Asset Manager URLs and includes an ImageProcessingChecker for robust loading states, and the single\_image\_upload component, which now supports optional inset text hints. Additionally, navigation and summary interfaces are refreshed with new secondary\_navigation, sub\_navigation, miller\_columns (integrating select-with-search), summary\_card, and summary\_card\_list components, alongside utility components like inset\_prompt and loading\_spinner.
app/views/components · high confidence
New controller concerns for historic content, permissions, and translations
This change introduces three new controller concerns to standardize and extract common logic. \HistoricContentConcern\ adds checks to prevent editing or unpublishing of documents in 'history mode', redirecting users with a specific guidance message if unauthorized. \PermissionsCheckerConcern\ provides a reusable \can?\ helper method to check user permissions against subjects via the Whitehall authority enforcer, making it available as a helper method. \TranslationControllerConcern\ encapsulates the workflow for managing translations, including loading translatable items, handling create/update/destroy actions for translations, and saving draft translations to the publishing API.
app/controllers/concerns · high confidence
New custom error pages for the Whitehall admin interface
The admin interface now displays custom-designed error pages for common HTTP status codes (400, 401, 403, 404, 422, 500) and maintenance downtime, replacing previous static or default responses. These pages follow the GOV.UK design system and provide specific guidance to users, such as links to raise support tickets for server errors, instructions to check URLs for 404s, and administrative options to update access permissions when encountering a 403 Forbidden error.
app/views/admin/errors · high confidence
New document creation page with GDS approval section
The new document creation interface has been updated to separate content types that require GDS approval into their own distinct section. Users will now see a dedicated set of radio buttons for these specific document types, accompanied by a hint text and a link to submit a GOV.UK support request for review. The page also retains the standard document type selection and includes a link to content types guidance for additional help.
_app/views/admin/new\document · high confidence
New granular role-based access control for Whitehall content
The system now enforces permissions through a new set of rule classes in \lib/whitehall/authority/rules\, replacing previous logic with specific rules for editions, organisations, people, and document types. This change introduces a 'Managing Editor' role with distinct capabilities, such as editing and unpublishing historic content (specifically for the 2024 Starmer Labour Government) and managing featured links, while restricting standard departmental editors from editing historic documents. Access to sensitive actions like force-publishing, administrative tasks, and government management is now strictly limited to GDS Admins and Editors, and access to fatality notices is restricted to GDS Editors or those from organisations that handle fatalities.
lib/whitehall/authority/rules · high confidence
New paginated document timeline with edition filtering and event inclusion
A new \Document::PaginatedTimeline\ class has been introduced to replace the previous history mechanism, providing a paginated view of document activity (10 items per page). This timeline now supports filtering by specific event types via an \only\ parameter and includes host content update events alongside version and remark entries. It also provides helper methods to group timeline entries by their relationship to the current, previous, or newer editions of a document.
app/models/document · high confidence
New search results table for featured editions
Admin users can now view search results for featured editions in a structured table format. The new \\_search\_results.html.erb\ partial displays edition title, type, and major change published date, along with specific actions for each item, replacing the previous display method. Pagination is included to handle large result sets, and a result count is shown at the top.
_app/views/admin/featurable\editions · high confidence
New storage classes for attachment and default asset handling
Two new storage implementations, \AttachmentStorage\ and \DefaultStorage\, have been introduced to handle asset uploads with distinct requirements. \AttachmentStorage\ is designed for attachment assets and includes specific logic to pass model context (such as \attachable\ class and ID) to the asset creation job, while \DefaultStorage\ provides a standard upload path for other assets. Both classes delegate temporary file storage to \TempStorage\ and asynchronously create assets via \AssetManagerCreateAssetJob\, ensuring that different asset types are processed according to their specific data needs.
app/uploaders/storage · high confidence
New summary list component for organisation details
The organisation show page now uses a dedicated summary list component to display key details such as name, acronym, logo settings, brand colour, default news image, URL, type, status, and associated organisations. The default news image row includes a 'Processing' label when asset variants are not yet uploaded, providing clearer feedback on image status.
app/components/admin/organisations · high confidence
New validation layer for attachments, URLs, and content safety
A comprehensive set of new validators has been introduced to enforce stricter data integrity and security rules across the publishing workflow. The new AttachmentValidator ensures House of Commons and Command Paper numbers follow correct formats and are mutually exclusive based on paper type. URL handling is now governed by dedicated validators: GovUkUrlValidator checks that internal links point to valid GOV.UK pages, GovUkUrlFormatValidator restricts external redirects to a specific allowlist (including .police.uk and judiciary.uk), and UriValidator enforces a 255-character limit and protocol checks. Content safety is improved via SafeHtmlValidator, which uses a memory cache to efficiently check Govspeak for unsafe HTML/XSS, and NoFootnotesInGovspeakValidator, which prevents footnotes in specific document types. Additional validators enforce that editions are tagged with a Taxon, that social media links are unique and valid, that embedded contacts exist, and that internal admin links in Govspeak are correctly formatted. Finally, the UnmodifiableValidator prevents changes to specific fields once an edition reaches certain states, and the SchemaValidator ensures consistency between document schemas and form definitions.
app/validators · high confidence
People administration views migrated to GOV.UK Design System
The admin interface for managing people (including ministers and privy counsellors) has been rewritten using GOV.UK Design System components. This update introduces new views for listing, creating, editing, and deleting people, featuring a summary list for person details, a dedicated reorderable list for role appointments, and a confirmation dialog for deletions. The form now supports specific fields such as the 'Rt Hon' prefix, title, forename, surname, letters, and biography, alongside image uploads. Warning messages are displayed to guide users on creating ministerial entries and the immediate impact of changes on the live site.
app/views/admin/people · high confidence
Rails 8 upgrade and configuration modernization
The application has been upgraded to Rails 8, bringing several configuration and behavioral changes. Session cookies are now secure by default in non-development/test environments, controllable via the DISABLE\_SECURE\_COOKIES environment variable. The cookie serializer has switched from the default to JSON for improved security and compatibility. Asset compilation now uses Dart Sass with specific build options, and Yarn node\_modules are included in the asset load path. CarrierWave storage is configured to use a default storage engine with a configurable uploads root and cache directory. New inflection rules preserve acronyms like NHS, FOI, and BSL, and handle specific pluralizations. Date and time formats have been standardized to UK conventions. The application now supports a wider range of file attachments via new MIME types (e.g., RDF, DXF, GML, SVG, OpenDocument formats). Error handling has been updated to exclude specific Redis and database errors from Sentry reporting. The publishing API client now uses bearer token authentication. Additionally, the application now supports auto-reloading of configurable document type schemas in development, and uses inline SVG with strict file-not-found raising.
config/initializers · high confidence
Redesign edition workflow confirmation pages using the GOV.UK Design System
The admin interface for edition workflow actions—specifically publishing, force publishing, force scheduling, unscheduling, unpublishing, withdrawing, unwithdrawing, and retrospective approval—has been updated to use the GOV.UK Design System. These new confirmation pages replace previous implementations with a consistent layout, including destructive styling for high-impact actions, integrated error summaries, and standardized form components. The unpublishing workflow now explicitly supports 'Withdrawn' and 'Archived' reasons, allows reusing previous withdrawal dates, and provides a govspeak editor for public explanations, ensuring the UI aligns with current government publishing standards.
_app/views/admin/edition\workflow · high confidence
Redesign fact-checking interface with GOV.UK Design System
The fact-checking workflow for administrators has been redesigned to use the GOV.UK Design System, replacing the previous HAML templates with new ERB views. The edit page now presents the document and its attachments in tabs, includes explicit instructions for fact-checkers, and provides a dedicated textarea for submitting comments. The show page displays the submitted response alongside the original document and attachments, while a new template handles cases where the document is unavailable. This change updates the user experience for managing fact-check requests, ensuring consistent styling and clearer guidance throughout the process.
_app/views/admin/fact\_check\_requests, app/views/admin/promotional\features · high confidence
Redesign of Topical Events admin interface
The admin interface for managing Topical Events has been updated to use the GOV.UK Design System. The new views include a redesigned form for creating and editing events, featuring structured date inputs for start and end dates, a dedicated logo upload component, and an 'add another' interface for social media accounts. The index page now displays a filterable table of events, and a new confirmation page has been added for the delete action, improving the overall consistency and usability of the administrative tools.
_app/views/admin/topical\events · high confidence
Redesign of sitewide settings pages using GOVUK Design System
The sitewide settings index and edit pages have been updated to use the GOVUK Design System components. The index page now displays settings in a styled table with an empty-state message when no settings are configured, while the edit page presents a form for enabling re-shuffle mode and editing Govspeak content, including a warning that changes appear instantly on the live site.
_app/views/admin/sitewide\settings · high confidence
Redesign of the Call for Evidence creation form
The admin interface for creating a Call for Evidence has been updated to use the GOV.UK design system. The form now includes specific guidance on when to use this format versus consultations, and provides structured fields for participation details (link, email, postal address) and downloadable response forms. Date inputs for opening and closing times have been migrated to a new component-based structure, and association fields (appointments, organisations, etc.) are now rendered via extracted partials for consistency.
_app/views/admin/calls\_for\evidence · high confidence
Redesign of the edition edit form with GOV.UK Design System components
The edition edit interface has been rebuilt using GOV.UK Design System components, replacing the previous Bootstrap-based layout. This change introduces a new radio-button interface for limiting document access (to specific organisations or named individuals), a redesigned change notes section that explicitly lists modified attachments, and a new conflict view that clearly displays differences in body text and associations. The update also standardises the document filter options, adds support for right-to-left language rendering in previews, and introduces a new 'Foreign language only' toggle for non-English editions.
app/views/admin/editions · high confidence
Redesign of the speech editing form with new speaker and date fields
The admin interface for editing speeches has been updated to use the GOV.UK Design System, introducing dedicated partials for speaker selection, delivery date, and location. Users can now specify whether a speaker (or writer, for authored articles) has a GOV.UK profile, selecting from a searchable list or providing a manual override. The 'Delivered on' date input now includes a dynamic warning if a future date is selected, and a new 'Location' field has been added to speech metadata. The form also consolidates association fields (topical events, world locations, organisations) and speech type selection into a structured layout.
app/views/admin/speeches · high confidence
Redesign organisation administration interface with GOV.UK Design System
The organisation administration views have been rebuilt using the GOV.UK Design System, replacing the previous layout with a consistent, accessible interface. This update introduces a new organisation creation and editing form that includes fields for name, acronym, logo, brand colour, and type, along with a dedicated section for managing closed organisations (reason, superseding organisations, and closure date). The index page now features a filterable table for listing organisations, while the show and features pages utilize a secondary navigation structure to organize content such as featured documents, topical events, and external links. A new confirmation page has been added for safely deleting organisations.
app/views/admin/organisations · high confidence
Redesign person translation management with GOV.UK Design System
The admin interface for managing person biographies has been rebuilt using the GOV.UK Design System, introducing a new index page that lists existing translations with view, edit, and delete actions, alongside a form to create new translations. The edit view now utilizes a dedicated translated textarea component that supports right-to-left languages and Govspeak formatting, while a new confirmation screen has been added for deleting translations. These changes provide a consistent, accessible experience for administrators managing multilingual content.
_app/views/admin/person\_translations, app/views/admin/role\translations · high confidence
Redesign policy group management with GOV.UK Design System
The admin interface for managing policy groups has been rebuilt using the GOV.UK Design System components. This update introduces a new index page listing groups with filterable table actions, a redesigned form for creating and editing groups (including name, email, summary, and description fields), and a dedicated confirmation page for deleting groups. The changes also include updated user-facing copy, such as warning messages about consulting GDS before creating groups and noting that changes appear instantly on the live site, as well as improved accessibility through standardized aria labels and visually hidden text for screen readers.
_app/views/admin/policy\groups · high confidence
Redesign role appointment management with GDS Design System
The role appointment admin interface has been rebuilt using the GDS Design System components, replacing the previous UI. The new edit and create forms use a searchable person selector and standardized date pickers for start and end dates. A key behavioral change is that the person assigned to an appointment cannot be edited after the record is created, with an explanatory note provided to users to preserve speech associations. The edit page now displays a list of speeches given during the appointment and other appointments to the same role, while the list view filters out non-persisted records.
_app/views/admin/role\appointments · high confidence
Redesign statistics announcement admin interface to GOV.UK Design System
The statistics announcement administration views have been rebuilt using the GOV.UK Design System components, replacing the previous layout and styling. This update introduces a new index page with enhanced filtering capabilities (by title, organisation, release date, and unlinked status) and search result tracking via GA4 data attributes. The new interface includes dedicated pages for creating, editing, and viewing announcements, as well as new workflows for cancelling announcements and editing cancellation reasons. Form elements such as date inputs, organisation selectors, and radio buttons have been standardized to the new design system, improving consistency and accessibility across the admin tool.
_app/views/admin/statistics\announcements · high confidence
Redesigned HTML and External attachment forms with read-only support
The admin interface for managing HTML and External attachments has been restructured into dedicated view templates. HTML attachment editing now includes a dedicated form for GoVSpeak content, featuring a checkbox to enable manually numbered headings and a preview link that appends a cache-busting parameter to ensure users see the latest published version. External attachments now have their own specific form for entering URLs. Both attachment types support a read-only mode, which disables editing and provides a back link to the parent edition's attachment list.
_app/views/admin/html\attachments · high confidence
Redesigned admin contacts interface with new design system and features
The admin contacts pages have been rebuilt using the GOV.UK design system, replacing the previous layout with structured forms and summary cards. Users can now create and edit contacts with a dedicated contact type selector, structured address fields, and the ability to add multiple phone numbers via an 'add another' interface. The interface supports managing translations for contacts, including adding and deleting them, and allows administrators to reorder contacts displayed on an organisation's homepage. A new confirmation step has been added for deleting contacts to prevent accidental removal.
app/views/admin/contacts · high confidence
Redesigned admin dashboard with GOV.UK Design System and new quick links
The admin dashboard has been rebuilt using the GOV.UK Design System, replacing the previous layout with a structured grid of quick links for Writing and publishing, Product development, and Support. The page now includes a dedicated section for 'My draft documents' and, for users in an organisation, a section for 'force-published documents', both rendered via a new shared document table component that displays title, type, last updated time, and action links.
app/views/admin/dashboard · high confidence
Redesigned admin interface for creating and editing consultation responses
The admin views for consultation responses have been rewritten to use the new GOV.UK Publishing Components framework. The edit and show pages now utilize the \datetime\_fields\ component for publishing dates and the \govspeak\_editor\ component for summaries, replacing previous custom implementations. The layout has been updated to use the standard grid system, and the show page now displays a summary list with an edit link, alongside an optional attachments section that reuses the common \attachment\_fields\ partial. This change standardizes the user experience for managing consultation responses within the admin interface.
_app/views/admin/consultation\responses · high confidence
Redesigned attachment management interface with bulk upload and reordering
The admin attachment management views have been rebuilt using the GOV.UK Design System to provide a more consistent and capable user experience. Administrators can now upload multiple files simultaneously via a bulk upload flow that includes a step to set titles and choose whether to keep or replace existing files. The interface introduces a dedicated page for reordering attachments using drag-and-drop or up/down buttons, and adds a confirmation step before deleting an attachment. The main attachment list now displays processing status tags, provides direct links to view or edit individual items, and includes copy-to-clipboard buttons for generating markdown links for inline file attachments.
app/views/admin/attachments · high confidence
Redesigned call for evidence response editing and viewing interface
The admin interface for managing call for evidence responses has been updated to use the current design system. The edit form now uses a dedicated \datetime\_fields\ component for the 'Published on' date, ensuring consistent styling and accessibility. The view page has been restructured to display a summary list of the response details (summary and publication date) with an edit link, alongside an optional attachments section. A new back link has been added to allow users to easily return to the main edition page from both the edit and show views.
_app/views/admin/call\_for\_evidence\responses · high confidence
Redesigned contact information display with new partial
The contact information section has been updated to use a new \\_contact.html.erb\ partial, which renders contact details using GOV.UK Frontend styling (e.g., \govuk-body\, \govuk-link\). This change introduces several behavioral updates: contact comments are now automatically linked if they contain URLs, access and opening times links for Worldwide Offices are now translatable and include language attributes, and the display logic for postal addresses, emails, contact forms, and phone numbers has been consolidated into a cleaner structure. The partial also supports hiding titles via a local variable and ensures proper HTML escaping and formatting for comments.
app/views/contacts · high confidence
Redesigned detailed guide editing form with GOV.UK Design System
The editing interface for detailed guides has been rebuilt using the GOV.UK Design System components, replacing the previous legacy form structure. This change introduces a new layout for the 'Associations' section, which now includes dedicated fields for organisations, topical events, nations, and a multi-select search component for linking related detailed guides. Additionally, the 'Related mainstream content' section has been updated to use standard input components for URL fields, improving consistency and usability for administrators managing these content types.
_app/views/admin/detailed\guides · high confidence
Redesigned edition summary page with new sidebar and status notices
The edition show view has been restructured into a main content area and a sidebar. The main section now displays a summary list containing the document type, status, change type, organisations, document access, review date, and primary language, along with sections for public change notes, topic taxonomy tags, worldwide tags, images, and attachments. A new sidebar provides action buttons, validation error prompts, similar-slug warnings, and tabs for document history and fact-checking. Additionally, prominent notices are displayed for rejected editions, force-published documents requiring review, and scheduled publications.
app/views/admin/editions/show · high confidence
Redesigned image management interface with upload validation and processing feedback
The admin image management UI has been refactored to provide clearer guidance and better feedback during image uploads. The new upload form now displays specific dimension requirements and restricts SVG uploads for lead images, while also showing inline error messages for failed uploads. Image cards now indicate processing status with a 'Processing' tag for newly uploaded images and a 'Requires cropping' tag for images needing attention. The lead image card has been updated to include a 'Use default image' option when no custom image is set, and the interface now hides caption fields when captions are disabled for the specific image usage.
_app/components/admin/edition\images · high confidence
Redesigned offsite link management interface using GOV.UK Design System
The admin interface for creating, editing, and deleting offsite links has been rebuilt using GOV.UK Design System components. The new UI includes dedicated views for adding and modifying external links, featuring structured input fields for title, summary, link type, and date, along with validation for permitted host domains. A confirmation step is now required before deleting a link, and the interface supports managing these links across various parent entities such as organisations, world locations, and topical events.
_app/views/admin/offsite\links · high confidence
Redesigned social media account management interface
The social media accounts section for organisations and worldwide organisations has been rebuilt using the GOV.UK Design System. Administrators can now create, edit, and delete social media accounts through dedicated pages that include a confirmation step for deletion. The interface supports adding optional titles to accounts and allows editing in multiple languages. The layout uses standard GOV.UK components for forms, navigation, and error handling, replacing the previous implementation.
_app/views/admin/social\_media\accounts · high confidence
Redesigned statistics announcement date change form using GOV.UK Design System
The interface for changing the release date of a statistics announcement has been rebuilt to use the GOV.UK publishing components and Design System. Users now interact with a structured date-time picker for the release date and radio buttons to select the precision level (exact date or within one/two months), with options clearly marked as provisional or confirmed. The form dynamically enforces a public change note when a confirmed exact date is selected, provides an inset text warning to also update any attached publication's release date, and retains user input on validation errors to improve the editing experience.
_app/views/admin/statistics\_announcement\_date\changes · high confidence
Redesigned statistics announcement summary page
The statistics announcement show page has been rebuilt using the GOV.UK design system components, replacing the previous layout with a structured summary view. Users now see a dedicated main section displaying the announcement summary, type, associated organisations, and release/delivery dates (including cancellation status), alongside a sidebar with action buttons for updating, cancelling, or unpublishing the announcement. The page also features a new history list and improved navigation for connected documents and topic taxonomy tags, ensuring consistent styling and usability across the admin interface.
_app/views/admin/statistics\announcements/show · high confidence
Redesigned translation workflow with new views and confirmation
The edition translation interface has been updated to use new, design-system-compliant views for creating, editing, and deleting translations. Writers now encounter a dedicated 'Add translation' page to select a language, a redesigned 'Edit translation' form that displays the original English text alongside translatable fields (title, summary, body) and supports right-to-left locales, and a new 'Confirm delete' page for removing translations. The edit view also integrates tabs for GoVSpeak help, document history, and fact-checking status where applicable.
_app/views/admin/edition\translations · high confidence
Redesigned unpublishing edit page with GOV.UK Design System and redirect options
The edit page for edition unpublishing has been rebuilt using the GOV.UK Design System, featuring a new layout and an error summary component. Users can now edit the public explanation via a dedicated Govspeak editor that supports pasting HTML and handling images/attachments. For non-withdrawn unpublishings, a new 'Alternative URL' field allows setting a redirect target, and a specific checkbox enables automatic redirection to that URL when the unpublishing reason is 'Published in Error'. The interface also includes a cancel link with a no-visited-state style.
_app/views/admin/edition\unpublishing · high confidence
Redesigned user administration interface with new views and components
The admin user management interface has been updated to use the GOV.UK Design System, replacing legacy templates with new index, show, and edit views. The index page now displays a filterable table of users showing their name, role, and organisation. The show page presents user details in a summary list format, including name, email, role, organisation, and world locations. The edit page allows administrators to update a user's world locations using a 'select with search' component. These changes modernize the UI and improve consistency across the admin section.
app/views/admin/users · high confidence
Redesigned world location news translation management interface
The admin interface for managing translations of world location news has been updated to use the GOV.UK Design System, replacing the previous styling. This change introduces a new index page that lists existing translations with view, edit, and delete actions, alongside a form to create new translations. The edit page now features a redesigned form for updating translation names, titles, and mission statements, including support for right-to-left languages. Additionally, a dedicated confirmation page has been added for the delete action, ensuring users explicitly confirm before removing a translation.
_app/views/admin/world\_location\_news\translations · high confidence
Refactor Publishing API payload builders into modular, config-driven components
The publishing API payload generation has been restructured from monolithic presenters into a suite of dedicated, single-responsibility payload builders (e.g., \AccessLimitation\, \Links\, \BlockContent\, \TopicalEvents\). This change introduces a config-driven approach where content types define their own payload structure via \type\_instance.presenter\ mappings, allowing for more flexible and maintainable content representation. Key behavioral updates include sending access limitation details (organisations and individuals) as distinct arrays, standardizing social media link formatting with default titles for X, and ensuring that topical events are correctly merged from both legacy and config-driven sources. Users will see more accurate and structured data in the Publishing API, with improved handling of edge cases like blank access limitation arrays and duplicate links.
_app/presenters/publishing\_api/payload\builder · high confidence
Refactor Standard Edition validation, block content handling, and taxon configuration
Standard Edition models now use a new \StandardEdition::TabForm\ to validate content on a per-tab basis, preventing duplicate errors and allowing scoped validation for fields stored in \block\_content\ versus those on the edition itself. The \block\_content\ setter has been updated to deep-merge incoming hashes rather than overwriting them, and values are normalized through a \StandardEdition::BlockContent\ object that validates against the schema defined by the active tab's configuration. Taxon requirements are now configurable via \type\_instance.settings\, exposing \requires\_taxon?\ and \supports\_taxon?\ methods. Additionally, lead image logic has been refactored into a \StandardEdition::LeadImage\ concern that supports multiple image usages and provides specific placeholder images for world news stories.
_app/models/concerns/standard\edition · high confidence
Refactor model concerns into new modular components
The model layer in app/models/concerns has been reorganized into a set of new, focused concerns to improve code structure and maintainability. New modules include AssetData for managing asset relationships and access limitations, Attachable for handling attachment lifecycles and types, and ImageKind for managing image configuration and cropping logic. Additional concerns such as Replaceable, ReshuffleMode, and DateValidation introduce specific behaviors for item replacement, ministerial reshuffle handling, and robust date input validation. This refactoring consolidates previously scattered logic into reusable components, ensuring consistent behavior for asset management, attachment ordering, and audit trails across the application.
app/models/concerns · high confidence
Refactor organisation type logic into a dedicated concern
The validation rules, query scopes, and helper methods for organisation types have been moved from the main Organisation model into a new \Organisation::OrganisationTypeConcern\. This change extracts specific logic—such as filtering for ministerial departments, HMCTS tribunals, and courts, as well as the \supporting\_bodies\ method—into a reusable module, improving code organization without altering the external API of the Organisation model.
app/models/concerns/organisation · high confidence
Refactor taxonomy tagging UI into shared partials
The taxonomy tagging interface in the admin area has been refactored by extracting the description and selector components into shared partials. The description partial now provides user guidance on using the topic taxonomy, including links to external guidance and forms for suggesting new or changed tags. The selector partial renders the miller columns component for choosing taxons and includes a notice explaining that topic changes are applied to live pages immediately upon updating tags, even before publishing a new edition.
app/views/admin/shared/tagging · high confidence
Refactor uploaders to use Asset Manager storage and Carrierwave
The uploaders in app/uploaders have been refactored to use the Asset Manager storage backend (AttachmentStorage) instead of the previous file system approach. This change ensures that uploaded assets are stored in a centralized location managed by the Asset Manager service, improving consistency and reliability across environments. The refactoring also includes updates to the uploader classes to support the new storage mechanism, such as setting the correct content types and handling file validation. Additionally, the FeaturedImageUploader has been updated to disable the deletion of previously stored files after an update, preventing potential 404 errors for associated documents.
app/uploaders · high confidence
Refactored asset management into dedicated updater, deleter, and attachment services
The asset management logic has been restructured into distinct service classes: \AssetManager::AssetUpdater\, \AssetManager::AssetDeleter\, and \AssetManager::AttachmentUpdater\, supported by a new \ServiceHelper\. This change introduces specific error handling for empty attributes and deleted live assets, ensures attachment updates correctly handle access limitations and replacement IDs, and prevents updates to assets that have been deleted, thereby improving reliability during publishing workflows.
_app/services/asset\manager · high confidence
Refactored attachment forms with read-only support and new reference fields
The attachment editing interface has been restructured into shared partials (\_fields, \_form, \_reference\_fields) to support distinct form modes, including a new read-only view that disables input fields. The form now includes dedicated fields for House of Commons paper numbers and Parliamentary sessions, alongside existing ISBN and unique reference inputs, allowing users to manage official document metadata more precisely.
app/views/admin/shared/attachments · high confidence
Refactored file attachment editing interface
The file attachment editing workflow has been restructured to support read-only modes and modularized view components. A new \\_fields.html.erb\ partial now handles the core attachment data inputs, including file upload logic, accessibility toggles, and hidden field management for file caching and replacement. The \edit.html.erb\ view has been updated to render this shared form partial and conditionally display a back link when the attachment is in a read-only state, allowing administrators to view attachment details without the ability to modify them.
_app/views/admin/file\attachments · high confidence
Refactored publishing API presenters into modular helpers
The code in app/helpers/presenters has been reorganized into specific helper modules to improve maintainability and separation of concerns. New modules include DefaultNewsImageHelper for handling news image URLs, FeaturedDocumentsHelper for constructing featured document payloads (supporting editioned, topical event, and offsite link types), PayloadHeadingsHelper for extracting structured headings from Govspeak, and UpdateTypeHelper for determining minor or major update types. This refactoring extracts reusable logic previously embedded in larger presenter classes, ensuring that the publishing API payload generation is more modular and easier to test.
app/helpers/presenters · high confidence
Refactored service listeners for publishing, asset management, and dependency handling
The service listeners in app/services/service\_listeners have been restructured to improve reliability and consistency in content publishing workflows. The PublishingApiPusher now handles associated documents and translation removals synchronously for unpublishing and withdrawal events, ensuring immediate state updates. New listeners manage asset lifecycle: AttachmentAssetPublisher and DraftAttachmentAssetDiscarder now explicitly handle response form data for Consultations and Calls for Evidence, preventing orphaned assets. AttachmentUpdater and AttachmentRedirectUrlUpdater have been consolidated to ensure asset metadata and redirect URLs stay in sync with edition changes. Additionally, EditionDependenciesPopulator and AttachmentDependencyPopulator now reliably extract and persist contact and edition dependencies from Govspeak content, while EditorialRemaker and FeaturableOrganisationRepublisher provide dedicated handling for editorial remarks and feature-based republishing.
_app/services/service\listeners · high confidence
Refactored taxonomy data access with Redis caching and separated world/topic taxonomies
The taxonomy library has been restructured to improve performance and clarity. Data retrieval now uses a new Redis-based cache (RedisCacheAdapter) with a 60-second generation timeout and reconnection strategy, replacing previous in-memory or direct API calls. The monolithic taxonomy logic has been split into distinct TopicTaxonomy and WorldTaxonomy classes, each using a dedicated PublishingApiAdapter to fetch data from the Publishing API. A new Taxon model encapsulates taxon properties (including phase and visibility flags) and tree navigation methods (ancestors, descendants, breadcrumbs), while the Tree class handles recursive parsing of the API response into this object structure. This separation ensures world taxons are processed independently from topic taxons, and visibility filtering is applied consistently.
lib/taxonomy · high confidence
Rename Document model to Edition
The core content model previously named Document has been renamed to Edition throughout the application. This change updates the model class, associated database table references, and internal method names (such as Document\#author becoming Edition\#creator) to better reflect that the system manages versions of content rather than static documents. Users will see this reflected in the admin interface and backend logic where 'Edition' is now the standard term for a piece of content being managed.
app/models · high confidence
Replace default Rails error pages and welcome screen with custom designs
The application no longer displays the default Rails error pages (404, 422, 500) or the 'Welcome aboard' index page. These have been removed from the \public\ directory and replaced with a custom, styled 406 'Unsupported Browser' page and a new SVG site icon. Users will now see a branded error message when accessing the site with an unsupported browser, while standard HTTP errors are handled by the application's error controllers rather than static files.
public · high confidence
Reslugs content for the monarch change and department rebrand
Data migrations update URLs to reflect the transition from Her Majesty to His Majesty, replacing terms like 'queens-bench' and 'her-majestys' with 'kings-bench' and 'his-majestys' across publications, statistics, organisations, and ministerial roles. Additionally, URLs for the Department for International Trade are reslugged to Department for Business and Trade across all worldwide organisation pages and locales.
_db/data\migration · high confidence
Restructured JavaScript bundling and upgraded to GOV.UK Frontend v5 components
The application's JavaScript build has been reorganized to explicitly require individual components from \govuk\_publishing\_components\ rather than using a catch-all \require\_tree\, improving maintainability and load efficiency. A new \es6-components.js\ file has been introduced to handle ES6-dependent components (such as buttons, checkboxes, and tabs) via a \type="module"\ script tag, ensuring graceful degradation for older browsers that do not support ES6. Additionally, the \application.js\ manifest now explicitly includes specific admin modules (like the document history paginator and locale switcher) and GA4 analytics trackers, replacing the previous broad inclusion strategy with a more granular and controlled asset pipeline.
app/assets/javascripts · high confidence
Schema-driven validation and attribute handling for configurable content blocks
Standard edition content blocks now derive their attributes and validation rules from a JSON schema rather than hardcoded values. This change introduces dynamic attribute casting (including support for date and array types) and enforces a suite of validators defined in the schema, such as checks for safe HTML, valid internal paths, embedded contacts, social media links, and length limits. Users will experience stricter data integrity checks when editing or publishing content, with errors mapped to specific fields via dotted attribute names.
_app/models/standard\edition · high confidence
Support for adding Welsh-language mainstream URLs to document collections
Users can now add mainstream GOV.UK URLs, including Welsh-language pages, to document collection groups. This change introduces a new validation and persistence layer (\DocumentCollectionNonWhitehallLink::GovukUrl\) that resolves content items by base path, supporting both English and Welsh locales, and ensures that guide sub-pages are correctly handled as valid links within collections.
_app/models/document\_collection\_non\_whitehall\link · high confidence
Support for configurable document types and features management in standard editions
Administrators can now create and manage standard editions using configurable document types, allowing them to select a specific type (such as news articles) when creating a new document or change the type of an existing draft, submitted, or rejected edition through a dedicated preview and confirmation flow. The edition editing interface has been restructured into tabs, with the main 'Content' tab handling core fields like title, summary, and publication dates, while a new 'Features' tab enables users to manage which GOV.UK content and external links are featured on the edition. These changes also introduce right-to-left language support for form fields and ensure that access limiting and file attachment options are correctly scoped to the edition's configuration.
_app/views/admin/standard\editions · high confidence
Updated shared UI components and added Asset Manager session handling
The shared view templates have been updated to use the GOV.UK Design System, including a new header with GA4 navigation tracking, phase banners for 'What's new', feedback, and maintenance notices, and a republishing form with submission prevention. Additionally, a new partial ensures the Asset Manager session cookie is initialized before loading images to prevent session invalidation.
app/views/shared · high confidence
Upgrade to Rails 8 and modernize environment configurations
The application has been upgraded to Rails 8, requiring a comprehensive update to the development, test, and production environment configurations. Key changes include replacing the deprecated \config.cache\_classes\ with \config.enable\_reloading\ and \config.eager\_load\, and updating static asset serving to use \config.public\_file\_server\ instead of \config.serve\_static\_assets\. The configuration now enforces stricter security and development practices, such as raising errors on unpermitted parameters in development and test modes, enabling server timing, and configuring specific asset compression (using Terser in production). Additionally, production logging has been standardized to use STDOUT when \RAILS\_LOG\_TO\_STDOUT\ is set, and host authorization is explicitly configured to protect against DNS rebinding attacks.
config/environments · high confidence
World location news admin pages migrated to GOV.UK Design System
The admin interface for managing world location news has been redesigned using the GOV.UK Design System components. The index page now uses tabs to separate active and inactive locations, displaying details in a structured table. The show page presents location information via a summary list, while the edit page utilizes standard form components for updating titles, mission statements, and featured links. The features page has been restructured into tabs for currently featured content, GOV.UK content, topical events, and external websites, improving the organization and consistency of the administrative workflow.
_app/views/admin/world\_location\news · high confidence
Test coverage
Acceptance tests for admin broken link reporting and dashboard; Add functional tests for the Generic Editions Controller; Added Jasmine test helpers for form input generation; Added JavaScript test coverage for admin modules; Added JavaScript tests for Govspeak Editor and Image Cropper components; Added component tests for datetime\_fields, govspeak\_editor, image\_cropper, and inset\_prompt; Added functional tests for email notification templates and document export controller; Added integration test for link checker API webhook signature validation; Added integration tests for attachment lifecycle and access control in Asset Manager; Added test coverage for GA4 analytics modules; Added test coverage for national applicability in publications; Added test fixtures for StandardEditionMigrator; Added test fixtures for data migration validation; Added test fixtures for importers and validation scenarios; Added tests for StandardEdition::HygieneEnforcer; Added tests for WithNestedAttributeErrors support module; Added tests for admin ViewComponents; Added tests for admin edition view components; Added tests for configurable document schema validation; Added tests for edition show page preview, sidebar, and translation components; Added tests for national applicability in consultations controller; Added tests for the Featured Documents Table component; Added tests for the Organisation show summary list component; Added tests for the admin social media accounts summary card component; Added tests for the worldwide office summary card component; Added tests for the worldwide organisation page summary card component; Added unit tests for Asset Manager services; Added unit tests for AssetData, ImageKind, and Replaceable concerns; Added unit tests for Document::PaginatedTimeline; Added unit tests for Edition model concerns; Added unit tests for FindAndReplaceEmbedCodesService; Added unit tests for GOV.UK URL validation in document collections; Added unit tests for Govspeak extractors; Added unit tests for LinkCheckerApiReport::Link; Added unit tests for Organisation model type concerns and scopes; Added unit tests for Publishing API payload builders; Added unit tests for Sidekiq asset and publishing jobs; Added unit tests for StandardEdition concerns; Added unit tests for StandardEdition::BlockContent validation rules; Added unit tests for StandardEditionMigrator recipes; Added unit tests for String\#articleize and TranslationsForAssociations; Added unit tests for Whitehall authority and access control rules; Added unit tests for Whitehall core libraries; Added unit tests for address formatting and publishing API redirects; Added unit tests for admin edition and statistics announcement filters; Added unit tests for admin helper methods; Added unit tests for application validators; Added unit tests for application, attachment, and organisation helpers; Added unit tests for attachment and default storage classes; Added unit tests for attachment republishing rake tasks; Added unit tests for configurable content block rendering; Added unit tests for core library components; Added unit tests for data hygiene rake tasks; Added unit tests for data hygiene utilities; Added unit tests for document export, social media index, publishing API, and role type presenters; Added unit tests for edition lifecycle and bulk republishing services; Added unit tests for election, publishing, and reporting rake tasks; Added unit tests for inflections, MySQL safety, WIP features, and translations; Added unit tests for model and decorator logic; Added unit tests for service listeners in the publishing workflow; Added unit tests for taxonomy library components; Added unit tests for the PaginatedTimelineQuery class; Added unit tests for uploader storage and validation logic; Added unit tests for view components; Added view component tests for edition image management; Admin feature tests for broken link reporting, dashboard, and document management; Comprehensive test factory suite for edition types and assets; Cucumber feature tests now use Playwright with Chromium; Expanded functional test coverage for admin controllers; Expanded unit tests for Publishing API presenters; New test support helpers for admin controller workflows; Removed obsolete browsing performance test; Test infrastructure modernization and parallelization support.
Dependencies
Routine dependency updates across the application
This release updates a wide range of Ruby and JavaScript dependencies, including major version bumps for Rails (up to 8.1.2), govuk\_publishing\_components, gds-api-adapters, govspeak, and view\_component, alongside numerous patch and minor updates for gems such as nokogiri, slimmer, and gds-sso. These changes ensure the application uses the latest stable versions of its core libraries, incorporating upstream bug fixes, security patches, and compatibility improvements for the current Ruby and Rails environments.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 58.
Lenses
- Code Health 65
- Architecture 93
- Maturity 85
- Readiness 72
- Security 58
- Domain Modelling 50
- Accessibility 65
Changes since last survey
- 300 commits — 280 feature/other, 20 fixes
By area
- (repo) — 124 commits
- (root) — 46 commits
- app/models — 26 commits
- app/views — 25 commits
- test/unit — 12 commits
- app/components — 8 commits
- app/controllers — 8 commits
- db/data_migration — 6 commits
- app/assets — 5 commits
- app/services — 5 commits
- app/presenters — 4 commits
- app/helpers — 3 commits
- app/uploaders — 3 commits
- docs/access_limiting.md — 3 commits
- app/sidekiq — 2 commits
- config/features.rb — 2 commits
- db/migrate — 2 commits
- features/step_definitions — 2 commits
- test/factories — 2 commits
- test/functional — 2 commits
Notable commits
- fix: Fix access controls on history mode documents [WHIT-3956]
- fix: Fix error when adding a Welsh page to collections
- fix: Fix link to "worldwide organisations" in helper sidebar [WHIT-3969]
- fix: Fix link to the National Archives
- fix: Fix validation check for The National Archives URL
- fix: Merge pull request #11643 from alphagov/fix-warden-test-state-leak
- fix: Merge pull request #11698 from alphagov/revert
- fix: Merge pull request #11716 from alphagov/fix-access-limiting-fields-display
- fix: Merge pull request #11721 from alphagov/fix-access-limiting-fieldset
- fix: Merge pull request #11745 from alphagov/tna-fixes
- fix: Merge pull request #11759 from alphagov/fix-link
- fix: Merge pull request #11763 from alphagov/WHIT-3970-fix-welsh-links-in-collections
- fix: Merge pull request #11777 from alphagov/revert-11751-change-person-renderer-to-frontend
- fix: Merge pull request #11778 from alphagov/revert-11777-revert-11751-change-person-renderer-to-frontend
- fix: Revert "Add delimiters and spacing"
- fix: Revert "Change rendering app for Person pages to frontend"
- fix: Revert "Group images by kind for image usages with multiple kinds"
- fix: Revert "Only allow image uploads for people in roles"
- fix: Revert "Redirect to latest edition when editing changenotes"
- fix: Revert "Revert "Change rendering app for Person pages to frontend""
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
alphagov/whitehall was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit d5d831da396a4f7c43cfc2425317e39935a12351 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.