Skip to content

Anonym Part 7: Article Page - #16968

Merged
dchukhin merged 48 commits into
WT-514-anonym-homepage-cmsfrom
anonym-part-7-article-page
Jan 12, 2026
Merged

Anonym Part 7: Article Page#16968
dchukhin merged 48 commits into
WT-514-anonym-homepage-cmsfrom
anonym-part-7-article-page

Conversation

@dchukhin

@dchukhin dchukhin commented Dec 26, 2025

Copy link
Copy Markdown
Collaborator

If this changeset needs to go into the FXC codebase, please add the WMO and FXC label.

This pull request depends on #16967

One-line summary

This pull request makes it possible to create the 'Article' Anonym page.

Significant changes and points to review

  • add AnonymArticlePage
    • this includes a notification (relation to the same snippet as in advertising), which reuses the same HTML file (mozorg/cms/snippets/notification_snippet.html), but will need anonym-specific styles
  • the SectionBlock now supports a rich_text child, which can be used to enter the entirety of the article

Issue / Bugzilla link

Testing

  1. log in to Wagtail
  2. make sure an Anonym Index Page exists
  3. choose to create a child of the Anonym Index Page, and choose an Anonym Article Page
  4. Enter the page content (though a section of rich text block(s)), and a notification

Note: this pull request does NOT include the styles needed to match the designs

… better handle the need for other card types in the future
@dchukhin
dchukhin requested review from a team as code owners December 26, 2025 17:07
@dchukhin
dchukhin marked this pull request as draft December 26, 2025 17:07
@codecov

codecov Bot commented Dec 26, 2025

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (WT-514-anonym-homepage-cms@c97ffb7). Learn more about missing BASE report.

Additional details and impacted files
@@                      Coverage Diff                      @@
##             WT-514-anonym-homepage-cms   #16968   +/-   ##
=============================================================
  Coverage                              ?   80.81%           
=============================================================
  Files                                 ?      164           
  Lines                                 ?     9394           
  Branches                              ?        0           
=============================================================
  Hits                                  ?     7592           
  Misses                                ?     1802           
  Partials                              ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Base automatically changed from anonym-part-6-static-pages to WT-514-anonym-homepage-cms January 12, 2026 19:48

@kkellydesign kkellydesign left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

additional fields for this page outlined here: https://mozilla-hub.atlassian.net/browse/WT-561

@kkellydesign
kkellydesign marked this pull request as ready for review January 12, 2026 19:53
@dchukhin
dchukhin merged commit b40c402 into WT-514-anonym-homepage-cms Jan 12, 2026
5 checks passed
@dchukhin
dchukhin deleted the anonym-part-7-article-page branch January 12, 2026 20:02
kkellydesign added a commit that referenced this pull request Feb 10, 2026
* add wagtail-thumbnail-choice-block to the project

* add an AnonymIndexPage to the project

* add cards to AnonymIndexPage

* add a stats list to AnonymIndexPage

* add a people list to AnonymIndexPage

* add call to action block to AnonymIndexPage

* for better clarity, rename AnonymIndexPage's sections field to content

* update labels for better clarity

* add help text to CallToActionBlock's heading field

* rename constant for better clarity

* remove commented-out code

* fix lint errors

* fix Docker build error due to missing staticfiles

* fix frontent lint issues by making CSS classes lowercase

* fix lint error

* add unit tests for remove_p_tag template tag

* make sure license exists in new test file

* make the CardsListBlock a child of a SectionBlock

* fix reference to section field in template

* make a couple block labels visible when collapsed

* add theme icons to repository

* make section content not required, since it sometimes needs to be not required

* only show icon element if icon is set

* make sure first section heading is an h1 element, and others are h2 elements

* change CardsListBlock.cards to be a StreamBlock, to better handle the need for other card types in the future

* update body class to be anonym-specific

* correctly reference icon card block value in template

* make sure AnonymIndexPage can be added in production

* make sure AnonymIndexPage is included in db export script

* make instances of AnonymIndexPage more easily identifiable by setting verbose_name

* Anonym Part 2: Top & Bottom Page In CMS (#16961)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* update body class to be anonym-specific

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* Anonym Part 3: Content Page In CMS (#16962)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 4: Navigation (#16964)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 5: About Page (#16965)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 6: Static Pages (#16967)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 7: Article Page (#16968)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Anonym Part 8: More Changes (#16969)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* WT-514 Anonym CSS (#16966)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* Initial CSS implementation

* Match header style to Figma

Note: This attempts to reconcile differences between the Figma design and the m24 code this was based on

* Section styles

Increase fidelity of section styles to match Figma

* Card list styles

Increase fidelity of card list styles to match Figma

* Add section themes

* Add stats table styles

* Increase anonym homepage figma fidelity

---------

Co-authored-by: Dmitriy Chukhin <6025153+dchukhin@users.noreply.github.com>

* reorder migrations after merge

* fix lint errors

* Anonym Part 9: Anonym Directory (#16989)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* create anonym app for anonym files

* move anonym files to anonym app

* make sure to preserve anonym data in database

* add comment about use of db_table in models file

* update imports in scss files based on new directory structure

* fix lint error

* add license to files that are missing it

* remove unused anonym templates from mozorg app

* move Person snippet to anonym app

* add removed migration for moving person snippet to anonym app

* Anonym Part 10: Custom Table Component (#16990)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* create anonym app for anonym files

* move anonym files to anonym app

* make sure to preserve anonym data in database

* add comment about use of db_table in models file

* update imports in scss files based on new directory structure

* update imports in scss files based on new directory structure

* use custom component for comparison table on AnonymTopAndBottomPage, so we have more control over HTML and user experience

* remove wagtail.contrib.table_block from project, as it is no longer used

* fix lint error

* add license to files that are missing it

* remove unused anonym templates from mozorg app

* remove unused anonym templates from mozorg app

* move Person snippet to anonym app

* move Person snippet to anonym app

* reorder migrations after merge

* add removed migration for moving person snippet to anonym app

* add missing migration

* add license to new migration

---------

Co-authored-by: Kasey Kelly <kasey@servee.com>

* Anonym Part 11: Backend Updates (#17003)

* add an AnonymTopAndBottomPage to the project

* add counter to section templates

* only show icon element if icon is set

* add CSS class to sections with 'top glow' theme

* add table block to SectionBlocks

* make sure first section heading is an h1 element, and others are h2 elements on AnonymTopAndBottomPage

* add an AnonymContentSubPage to the project

* add toggleable items component to AnonymContentSubPage

* update migration, since CardsListBlock.cards is now a StreamBlock, to better handle the need for other card types in the future

* add logo cards, to allow creating case study cards on AnonymContentSubPage

* update toggle to handle dark and light icons automatically

* add a configurable navigation to anonym pages

* make sure migration has a license

* update body class to be anonym-specific

* update body class to be anonym-specific

* add a PersonCard, to allow adding cards with people's photos to the 'About' page

* add a TwoColumnBlock, to allow adding them to 'About' page

* add ability to create static pages as AnonymIndexPage children

* fill in content for static pages

* make sure AnonymTopAndBottomPage can be added in production

* make sure AnonymTopAndBottomPage is included in db export script

* make sure AnonymContentSubPage can be added in production

* make sure AnonymContentSubPage is included in db export script

* make sure AnonymStaticPage can be added in production

* make sure AnonymStaticPage is included in db export script

* make sure that there is only 1 AnonymNewsPage and 1 AnonymContactPage

* add AnonymArticlePage to project, with ability to add rich text blocks to sections

* update advertising pages to pass CSS class to notification snippet

* make instances of AnonymTopAndBottomPage more easily identifiable by setting verbose_name

* make instances of AnonymContentSubPage more easily identifiable by setting verbose_name

* make CMS process DRYer by updating PeopleListBlock to reference Person objects

* make sure migration has a license

* create anonym app for anonym files

* move anonym files to anonym app

* make sure to preserve anonym data in database

* add comment about use of db_table in models file

* update imports in scss files based on new directory structure

* update imports in scss files based on new directory structure

* use custom component for comparison table on AnonymTopAndBottomPage, so we have more control over HTML and user experience

* remove wagtail.contrib.table_block from project, as it is no longer used

* fix lint error

* add license to files that are missing it

* remove unused anonym templates from mozorg app

* remove unused anonym templates from mozorg app

* move Person snippet to anonym app

* move Person snippet to anonym app

* reorder migrations after merge

* support HTML-safe text in Person.description field

* support HTML-safe text in Person.description field

* remove PeopleListBlock.text, since it is not used

* add a field to link to URL to learn more about a Person

* make two column block subheading text optional

* make contact page title and subtitle editable

* make contact page fields editable

* make the news page an index page for news items

* exclude AnonymNewsItemPages with a link from the sitemap

* change StatsListBlock to NewsItemListBlock, so users can choose news items whose stats appear in the section

* skip paths that do not have translations in get_static_urls()

* fix lint errors

* rename AnonymArticlePage to AnonymCaseStudyItemPage

* replace LogoCardBlock with CaseStudyItemListBlock, so users can choose case studies to add to a section

* create an AnonymCaseStudyPage as an index page for case studies

* make AnonymContentSubPage sure loads correct JS file

* when >3 case studies in block, show link to case study page

* commit template tags file to repository

* make code DRYer by ruusing the same template for AnonymNewsItemPage and AnonymCaseStudyItemPage

* remove unused anonym logo from repository

* add removed migration for moving person snippet to anonym app

* correct template definition for AnonymCaseStudyItemPage

* add missing migration

* reorder migrations after merge

* add license to new migration

* add license to files that are missing it

* fix lint errors

* fix lint errors

* Anonym Part 12: Wagtail Dependencies (#17005)

* for consistency with springfield, add wagtail helper dependencies

* set up wagtail-localize-dashboard on project

* set up wagtail-localize-intentional-blanks on project

* create fixtures for tests and create test anonym pages with a management command (#17008)

---------

Co-authored-by: Kasey Kelly <kasey@servee.com>

* anon homepage frontend revisions

* CSS and model revisions

* license info added

* Update _misc.scss

* form fill icon fix

* avoid generic wrapper class names by using include_block for section blocks

* removing bad icon link

* fix lint errors

* removing another missing icon from protocol

* removing comments

* Create 0020_alter_anonymcasestudyitempage_content_and_more.py

* Update 0020_alter_anonymcasestudyitempage_content_and_more.py

* fix ruff formatting

* use latest version of wagtail-thumbnail-choice-block for CSS improvments

* fix ruff formatting issues

* use latest version of wagtail-localize-intentional-blanks

* contact page, solutions page, about page styles

* logo list block added

* news index page added

* news WIP

* requirements updated

* news styles, mobile styles

* for better clarity, rename NewsItemListBlock to be StatItemListBlock

* make code DRYer by having AnonymCaseStudyItemPage and AnonymNewsItemPage inherit from common abstract class

* support either AnonymNewsItemPage or AnonymCaseStudyItemPage in StatCardListBlock

* support either AnonymNewsItemPage or AnonymCaseStudyItemPage in LogoListBlock

* update tests based on recent changes to models

* support ordering by showing AnonymNewsItemPage publication date in Wagtail

* make selecting featured news item more explicit

* remove AnonymTopAndBottomPage, since it no longer has its own design

* squash anonym migrations, so they are easier to read

* [reset-db]

* comparison table revisions

* article page layout

* news page CMS revisions

---------

Co-authored-by: Jo Sprague <github@iamlocaljo.com>
Co-authored-by: Kasey Kelly <kasey@servee.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants