roots/sage
47.3
Weak · 25 September 2026
620
lines of production code
PHP
with JavaScript
4
measurements over time
What this system is
Features
Add anonymous Alert component with Tailwind styling
A new anonymous Blade component, resources/views/components/alert.blade.php, has been added. It renders a div with Tailwind CSS utility classes that change color based on the 'type' prop (success, caution, warning, or default). This provides a built-in alert component for displaying messages with appropriate visual feedback.
resources/views/components · high confidence
Add search form component with button element
A new search form view is introduced at resources/views/forms/search.blade.php. The form uses a button element for the submit action, includes a screen-reader-only label, and displays the search query value in the input field.
resources/views/forms · high confidence
Initialize empty font and image resource directories
Added empty .gitkeep files to the resources/fonts and resources/images directories. This ensures these directories are tracked by version control, providing a standard location for users to place font and image assets.
resources/fonts, resources/images · high confidence
Introduce app layout with skip-to-content link and section includes
A new app layout is introduced at resources/views/layouts/app.blade.php, establishing the default HTML structure for the theme. This layout includes a 'Skip to content' link for improved keyboard accessibility, integrates header and footer via section includes, and provides a main content area with an optional sidebar. The layout also ensures proper WordPress hooks (wp\_head, wp\_footer, body\_class) are present.
resources/views/layouts · high confidence
Introduce new Blade view templates for content rendering and comments
The theme now uses a set of new Blade view templates in resources/views/partials to handle the rendering of different content types. Specifically, content.blade.php and content-search.blade.php define the structure for standard and search result posts, while content-single.blade.php handles single post views with h-entry microformat classes. Additionally, entry-meta.blade.php provides a standardized way to display post metadata like date and author, and comments.blade.php manages the comment section and pagination. These changes replace previous inline PHP or different template structures, providing a more consistent and accessible way to render content across the site.
resources/views/partials · high confidence
Removals
Removal of CodeMirror editor and admin styling
The CodeMirror JavaScript library and its associated CSS styles have been removed from the theme. This eliminates the inline code editor functionality and the corresponding admin panel styling, simplifying the theme's asset footprint.
includes · high confidence
Behavioural changes
Add .gitkeep to public directory
A .gitkeep file has been added to the public directory. This ensures the directory is tracked by version control, preventing issues where the folder might be ignored or cause errors during development or build processes.
public · high confidence
Extracted site sections into dedicated view files
The header, footer, and sidebar templates have been moved into a new \resources/views/sections\ directory. The header now renders the site name using unescaped output (\{!! $siteName !!}\) and displays the primary navigation menu, while the footer and sidebar render their respective dynamic sidebars.
resources/views/sections · medium confidence
Extracted view logic into dedicated Composers
The view data and rendering logic for the application header, comments, and post templates have been moved from inline or mixed locations into dedicated Composer classes (App, Comments, Post). This refactoring simplifies the default template structure by centralizing the data each view needs—such as the site name, comment titles and pagination, and post titles with archive/search/404 handling—making the Blade templates cleaner and the PHP logic more reusable.
app/View · high confidence
Initialize JavaScript entry points for the new build system
The JavaScript build configuration has been updated to support the new Vite-based asset pipeline. This change introduces the primary entry points for the application's client-side logic, specifically creating the main app.js and editor.js modules to handle frontend and editor-specific interactions respectively.
resources/js · high confidence
Introduced Sage 10 ThemeServiceProvider for application bootstrapping
A new ThemeServiceProvider has been added to the application's provider directory, extending the Sage 10 SageServiceProvider. This change aligns the application's service registration and bootstrapping with the Sage 10 architecture, replacing the previous provider setup with a theme-specific service provider that manages the application's service lifecycle.
app/Providers · high confidence
Major theme architecture overhaul: modernized build, templating, and styling
The theme has been significantly refactored to modernize the development workflow and template structure. The build system has been upgraded from Gulp to Vite, and the templating engine has shifted from standard PHP templates to Laravel Blade, with the \index.php\ now rendering a Blade view. Styling defaults have changed from Blueprint CSS to Tailwind CSS, and the \style.css\ header has been updated to reflect the new Sage branding and MIT license. Additionally, the theme now utilizes the Acorn framework for dependency injection and service providers, replacing the previous manual \include\ and \add\_action\ setup in \functions.php\. Several legacy template files (e.g., \404.php\, \archive.php\, \comments.php\) have been removed as the new architecture relies on the \resources/views\ directory for all theme markup.
(repo-wide) · high confidence
Migrate template views to Blade syntax and restructure layout includes
The template files in resources/views (404, index, page, search, single, and template-custom) have been converted to use modern Blade syntax, including the use of @while loops for post iteration and @includeFirst for flexible template selection. The 404 template now displays a warning alert and search form when no posts are found. The index and search templates use get\_the\_posts\_navigation() for pagination. The index template also includes a sidebar section. The page and single templates use @includeFirst for content parts. The custom template includes a page header and content.
resources/views · medium confidence
Migrate to Tailwind CSS v4 with explicit source globs
The project has upgraded to Tailwind CSS v4, introducing new CSS entry points for the main application and the editor. The main app stylesheet now explicitly defines source paths for PHP, Blade templates, and JavaScript files to ensure Tailwind generates the correct utility classes. The editor stylesheet is also updated to import Tailwind's core styles.
resources/css · high confidence
Removal of the Blueprint CSS framework
The Blueprint CSS framework has been removed from the project. This includes the deletion of all associated stylesheet files (ie.css, print.css, screen.css) and the LICENSE file from the css/blueprint directory, indicating a shift away from this specific CSS grid and typography system.
css/blueprint · high confidence
Removed custom CSS styles in favor of H5BP base
The custom \style.css\ file has been deleted, removing site-specific styling for elements like buttons, navigation menus, and post headers. This change aligns the project with the HTML5 Boilerplate (H5BP) base styles, meaning users will see the default H5BP appearance rather than the previous custom theme styles.
css · high confidence
Removed obsolete jQuery plugins and custom scripts
The project has removed several outdated or unused JavaScript files: the jQuery Cycle plugin (both the core and lite versions), the jQuery Fancybox lightbox plugin, the jQuery Placeholder plugin, and a custom scripts.js file. These removals align with the commit to update to the latest h5bp (HTML5 Boilerplate) structure, which typically manages such plugins via external CDNs or modern build tools rather than bundling them directly.
js · high confidence
Restructure theme setup and add editor styling injection
The theme's initialization logic has been consolidated into new \app/setup.php\ and \app/filters.php\ files. \setup.php\ now handles core WordPress theme support registration (title tag, post thumbnails, HTML5 markup, navigation menus, and sidebars) and disables full-site editing and default block patterns. Additionally, the block editor is now configured to load \editor.css\ via a \block\_editor\_settings\_all\ filter, and the admin head is updated to enqueue editor scripts and dependencies from the Vite build. This restructure separates concerns, moving filter logic out of the main setup file and ensuring the block editor receives the correct assets.
app · high confidence
Updated jQuery library to version 1.5.2
The jQuery library has been upgraded from version 1.5.1 to 1.5.2. This update replaces the previous minified source file with the newer 1.5.2 release, ensuring the application uses the latest version of the library.
js/libs · high confidence
Dependencies
Sage 10: Modern PHP and Node.js requirements with Vite and Tailwind v4
The project has been updated to require PHP 8.3+ and Node.js 20.19+/22.12.0+. The build system now uses Vite with the @roots/vite-plugin and Tailwind CSS v4, replacing the previous Gulp/Webpack-based pipeline. Composer dependencies have been updated to require roots/acorn ^6.0 and laravel/pint ^1.20 for PHP linting.
(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
This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.
Score
- CAI 42 → 47 (+5.4)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (+0.0)
- Architecture 69 → 69 (+0.0)
- Maturity 35 → 37 (+2.8)
- Readiness 33 → 39 (+5.8)
- Security 53 → 65 (+12.4)
- Accessibility 80 (new)
Resolved (13)
- Dimension evaluation failed
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- No exposed public API
- Scanner failed to run — not a clean result
New (21)
- Dependency hygiene PARTLY measured — Composer dependencies read, no committed lock to grade for currency
- Documentation: no contributor guidance (README.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- High: security finding (details withheld)
- PR-triggered workflow without a permissions block
- Scanner failed to run — not a clean result
- Scanner failed to run — not a clean result
- …and 1 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
roots/sage 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 25 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 56249ebd4905d0d438e268909bcec55611d26176 — 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-a9cd699f3cd5.