A Django content management system focused on flexibility and user experience

Overview

Wagtail

Wagtail is an open source content management system built on Django, with a strong community and commercial support. It's focused on user experience, and offers precise control for designers and developers.

Wagtail screenshot

Features

  • A fast, attractive interface for authors
  • Complete control over front-end design and structure
  • Scales to millions of pages and thousands of editors
  • Fast out of the box, cache-friendly when you need it
  • Content API for 'headless' sites with de-coupled front-end
  • Runs on a Raspberry Pi or a multi-datacenter cloud platform
  • StreamField encourages flexible content without compromising structure
  • Powerful, integrated search, using Elasticsearch or PostgreSQL
  • Excellent support for images and embedded content
  • Multi-site and multi-language ready
  • Embraces and extends Django

Find out more at wagtail.io.

Getting started

Wagtail works with Python 3, on any platform.

To get started with Wagtail, run the following in a virtual environment:

pip install wagtail
wagtail start mysite
cd mysite
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

For detailed installation and setup docs, see docs.wagtail.io.

Who’s using it?

Wagtail is used by NASA, Google, Oxfam, the NHS, Mozilla, MIT, the Red Cross, Salesforce, NBC, BMW, and the US and UK governments. Add your own Wagtail site to madewithwagtail.org.

Documentation

docs.wagtail.io is the full reference for Wagtail, and includes guides for developers, designers and editors, alongside release notes and our roadmap.

Compatibility

(If you are reading this on GitHub, the details here may not be indicative of the current released version - please see Compatible Django / Python versions in the Wagtail documentation.)

Wagtail supports:

  • Django 3.0.x, 3.1.x and 3.2.x
  • Python 3.7, 3.8, 3.9 and 3.10
  • PostgreSQL, MySQL and SQLite as database backends

Previous versions of Wagtail additionally supported Python 2.7 and Django 1.x - 2.x.


Community Support

There is an active community of Wagtail users and developers responding to questions on Stack Overflow. When posting questions, please read Stack Overflow's advice on how to ask questions and remember to tag your question "wagtail".

For topics and discussions that do not fit Stack Overflow's question and answer format, we have a Slack workspace and a Wagtail Support mailing list. Please respect the time and effort of volunteers by not asking the same question in multiple places.

Our Github discussion boards are open for sharing ideas and plans for the Wagtail project.

We maintain a curated list of third party packages, articles and other resources at Awesome Wagtail.

Commercial Support

Wagtail is sponsored by Torchbox. If you need help implementing or hosting Wagtail, please contact us: [email protected]. See also madewithwagtail.org/developers/ for expert Wagtail developers around the world.

Security

We take the security of Wagtail, and related packages we maintain, seriously. If you have found a security issue with any of our projects please email us at [email protected] so we can work together to find and patch the issue. We appreciate responsible disclosure with any security related issues, so please contact us first before creating a Github issue.

If you want to send an encrypted email (optional), the public key ID for [email protected] is 0x6ba1e1a86e0f8ce8, and this public key is available from most commonly-used keyservers.

Release schedule

Feature releases of Wagtail are released every three months. Selected releases are designated as Long Term Support (LTS) releases, and will receive maintenance updates for an extended period to address any security and data-loss related issues. For dates of past and upcoming releases and support periods, see Release Schedule.

Nightly releases

To try out the latest features before a release, we also create builds from main every night. You can find instructions on how to install the latest nightly release at https://releases.wagtail.io/nightly/index.html

Contributing

If you're a Python or Django developer, fork the repo and get stuck in! We have several developer focused channels on the Slack workspace.

You might like to start by reviewing the contributing guidelines and checking issues with the good first issue label.

We also welcome translations for Wagtail's interface. Translation work should be submitted through Transifex.

License

BSD

Thanks

We thank the following organisations for their services used in Wagtail's development:

Browserstack
BrowserStack provides the project with free access to their live web-based browser testing tool, and automated Selenium cloud testing.

squash.io
Squash provides the project with free test environments for reviewing pull requests.

Assistiv Labs
Assistiv Labs provides the project with unlimited access to their remote testing with assistive technologies.

Build Status License Version Total alerts Language grade: Python Language grade: JavaScript

Comments
  • Internationalization for Wagtail content

    Internationalization for Wagtail content

    As noted in #23 and other places, it would be great if Wagtail could support content in and for different locales. The main effort about this is probably specification, so I'd like to get the discussion going here about the direction i18n for content should move.

    One important question about the issue is whether i18n should be enabled all the time or optional. Depending on this, the changes can either go into the models directly or into model subclasses.

    type:Enhancement component:i18n 
    opened by shezi 94
  • New StreamField & InlinePanel UIs

    New StreamField & InlinePanel UIs

    Wagtail’s first hatch, the first Wagtail crowdfunding campaign, is a success! :tada:

    The current issue covers the work for the main goal: rebuilding the StreamField & InlinePanel user interfaces. Please discuss here if you have some ideas on how that work could be improved compared to the mockups below. Another issue will be opened later for the second goal, the new form builder!

    I’m starting working full time on it in two weeks!

    StreamField mockups

    new-streamfield

    new-streamfield-grab

    new-streamfield-open

    InlinePanel mockup, like StreamField, but no types/icons

    new-inlinepanel

    Fixed issues

    This whole work will implement solutions for all these issues: #1033, #1336, #1532, #2123, #2264, #2325, #4179, #4215.

    type:Enhancement component:Streamfield crowdfunding:NoriPyt2018 
    opened by BertrandBordage 56
  • Limiting Explorer to the current user's

    Limiting Explorer to the current user's "explorable" Pages

    This PR is tied to #2401.

    What I've done here is limit the Explorer and the flyout menu in the sidebar to display only the Pages for which the user has permission to perform some kind of administration (any GroupPagePermission except the new one I added called "Choose", which is for the Chooser functionality I haven't written yet). I call these the user's "administrable Pages". In addition to these pages, all the direct ancestors of said pages are also displayed, up to the Closest Common Ancestor. This allows users to navigate through non-administrable Pages to get to ages that they can administer.

    In addition, the Explorer root (/admin/pages/) for non-superusers now displays the Closest Common Ancestor of the user's administrable Pages, rather than the root page (the root page can potentially be the CCA, though). This prevents users from knowing about any pages which they don't need to see.

    As a part of this change, the Explorer will now throw either a 404 or a 403 if the user tries to go to /admin/pages/<page_id> for a Page that they shouldn't be allowed to see. It throws 403 for Pages that are on the current Site, and 404 for Pages on other Sites. 404's are thrown because we don't want to reveal the existence of any Pages that belong to other tenant Sites on the same server.

    Work that still needs to be done:

    1. Update the two broken tests (I added TODOs for these), and add new tests for the new functionality.
    2. Add cache clearing code for the times when permitted_paths and required_ancestors might change for a given user. As far as I can tell, this will be when a Group's permissions change, when a User's Group set changes, or when a Page is moved.
    3. Possibly change the way the output of get_administrable_page_paths() is cached. As it stands, a lot of duplicate data is going to be cached, because the cache keys are differentiated only by user.id. All users which have the same Groups will have the same permitted paths, resulting in a lot of duplication. I'd like to cache by the User's list of Group IDs instead, but that would require an extra DB query every time get_administrable_page_paths() is called. I'm not sure about the tradeoff between data storage efficiency vs. performance here, as I have very little optimization experience. Not to mention that I'm not sure how to properly clear the cache when the key is built from multiple Group IDs.
    4. Update the admin homepage to display the correct Page count, as it currently counts all pages on the server, instead of all administrable pages. Or should it show all pages on the current Site, perhaps? Or maybe don't change it at all?
    5. Apply the same "administrable" limitations to Images and Documents in the User's permitted Collections.
    status:Needs Work 
    opened by coredumperror 55
  • [WIP] New field type to allow streams of mixed-type content

    [WIP] New field type to allow streams of mixed-type content

    Spec here (NB 'TumblrField' now has the proposed name StreamField): https://docs.google.com/document/d/1eAu5zJ6j7JIxUEQOT9amWjjmG-RUq_LQ3vyc4sZCs7Y/edit?usp=sharing

    Additional technical background

    We will partially re-implement the edit handler mechanism - the ad-hoc design of edit handlers has led to it being overly complex, and developing it further to support stream fields would incur technical debt. In this phase of development, this partial implementation does not need to deal with modelforms / formsets, since all data will be serialised to a single JSON field.

    There will be three 'patterns' that allow blocks to be composed into more complex arrangements:

    Struct: A fixed set of sub-blocks of possibly differing types, such as a Person block consisting of 'first name', 'surname' and 'photo' fields.

    List: An arbitrary number of blocks all of the same type, which can be added to (via an 'add another' button), deleted and reordered.

    Stream: An arbitrary number of blocks, each of which is one of several available types. Between each block, a menu bar is displayed for inserting an additional block at that point. Blocks can also be deleted and reordered.

    In the above descriptions, a 'block' may be a simple field (such as a text field or image picker) or one of the above patterns: e.g. it's possible to have a list of structs, or a struct where one of the members is a list of fields.

    Breakdown of tasks

    • [x] Mechanism for dynamically adding blocks to the edit page, supporting arbitrarily complex javascript behaviour within each block (including blocks that recursively support adding sub-blocks dynamically, such as Sir Trevor's list type)
    • [x] A generalised 'sequence' type to handle the adding/reordering behaviour which is common to List and Stream, but without dictating a specific UI pattern. (Needs to be flexible enough to cope with e.g. keeping Stream's menu bars in the right position relative to the blocks being moved)
    • [x] Menu logic for Stream
    • [x] Ability to define specific Struct/List/Stream types by subclassing those types, much like Django's Form class
    • [x] Implementing primitive block types such as text fields / choosers. (Hopefully we can implement blocks via the same API as Django form fields, which would make this unnecessary.)
    • [ ] A rich text component restricted to simple text formatting (probably a stripped-down hallo.js in this phase)
    • [x] A field validation mechanism
    • [x] A serialisation mechanism
    • [x] Front-end rendering of fields
    • [x] ~~A {% streamfield %} template tag as per spec~~ (just use if/else instead)
    component:Streamfield 
    opened by gasman 48
  • Initial idea for a table stream field block using handsontable.js.

    Initial idea for a table stream field block using handsontable.js.

    Hi, This is an initial implementation of a StreamField table block using handsontable.js. Let me know if there is anything else missing or gone totally astray.

    Missing is documentation as to the available table configuration options. If you like this initial approach I'll document it more clearly and completely.

    No tests have been written yet.

    type:Enhancement component:Streamfield 
    opened by Proper-Job 41
  • New explorer using the admin API, and React tooling

    New explorer using the admin API, and React tooling

    New explorer using the admin API, and related React tooling / JS build pipeline / testing tools.

    react-explorer

    Tasks TODO before merge

    • [x] Detailed list all of the tasks that need to be done before this can be merged (...)
    • [x] Resubmit against master instead of torchbox:admin-api
    • [x] Make WIP available on public wagtaildemo instance so people can easily test it. – https://wagtaildemo-springload.herokuapp.com/admin/

    Features

    • [x] Have a way to go to the homepage from the explorer
    • [x] Support for sites with multiple homepages
    • [x] ~Support for sites without homepages?~ – edit: not sure that's actually a thing? – marking as done.
    • [x] ~Page filters (with or without children) (currently an A/B toggle in the header for testing purposes)~ – Removed the filter
    • [x] "See all pages" menu item after all of the menu items if there are more pages at the current level than is shown. See https://gist.github.com/thibaudcolas/52f3921b1251c8a6bc278f5227713ae3
    • [x] #2869 "Limit explorer menu nav to the subtree the user has permission over" make sure this works the same with the API.
    • [x] ~#2878 "Adds 'exclude_from_explorer' attribute to ModelAdmin class" make sure this works the same with the API.~ – Check. Uses construct_explorer_page_queryset, which is about the listing pages not the menu.
    • [x] ~#3057 "Fix: Use specific page model for the parent page in the explore index" make sure this works the same with the API.~ – Not looking relevant.
    • [x] ~#3068~ – Check. Hiding the menu item will prevent the explorer from opening, same as before.
    • [x] Focus trap for tab navigation
    • [x] Error handling

    UI

    • [x] Basic translations using standard Django template tags to make JS variables
    • [x] Date format localization (Look at datepicker. Django probably has some way to share its current locale, and format.)
    • [x] Mobile UI as good as the existing one
    • [x] Matte layer when explorer is open?
    • [x] Fix explorer not closing other panels (settings) when opening
    • [x] If you open the explorer while scrolled down, you can't scroll back up to see the top of the explorer (you have to close explorer, scroll up, and open it again)
    • [x] #2985 "Increase legibility by increasing contrast" make sure this is reflected in the new explorer UI
    • [x] Explorer does not toggle when clicking "Pages" button.

    Tests

    • [x] Unit tests of the JS code including React components – 96% coverage?
    • [x] Test on some real-world content to see how it holds up. Test cases:
      • [x] 100+ pages at a given level of the page tree
      • [x] 1000+ pages at a given level of the page tree
      • [x] 10+ levels in the page tree
      • [x] 1 level in the page tree
      • [x] Empty page tree
      • [x] ~No page under the root but other pages further – is this possible?~ – No
      • [x] Pages with very long titles (overflowing 2-3 lines each)
    • [x] Cross-browser tests
    • [x] Contrast tests
    • [x] Accessibility tests (VoiceOver navigation, keyboard navigation, focus trap)

    Code quality

    • [x] Up to date front-end dependencies
    • [x] Redux DevTools
    • [x] ~Live-reload JS/CSS code #3022~
    • [x] JS source maps #3019
    • [x] Better Webpack builds #3021
    • [x] ESLint config Wagtail fixes https://github.com/robmoorman/eslint-config-wagtail/pull/1

    Documentation

    • [x] React components documentation
    • [x] Redux actions documentation
    • [x] API client documentation

    Tasks backlog post-merge

    • [x] Remove dead code – see separate PR #3385

    Features

    • [x] ~Store filter settings in localStorage~ – Not relevant anymore (removed filter)

    Tooling

    • [x] Update ESLint config Wagtail with latest Airbnb styleguide https://github.com/robmoorman/eslint-config-wagtail/

    Related work to address later

    • [x] Node tooling (nvm) doc #2730
    component:Frontend 
    opened by thibaudcolas 39
  • allow panels & edit_handler to be defined on ModelAdmin

    allow panels & edit_handler to be defined on ModelAdmin

    Thanks for contributing to Wagtail! 🎉

    Before submitting, please review the contributor guidelines http://docs.wagtail.io/en/latest/contributing/index.html and check the following:

    • Do the tests still pass? (http://docs.wagtail.io/en/latest/contributing/developing.html#testing) YES
    • Does the code comply with the style guide? (Run make lint from the Wagtail root) YES
    • For Python changes: Have you added tests to cover the new/fixed behaviour? YES
    • For front-end changes: Did you test on all of Wagtail’s supported browsers? Please list the exact versions you tested. No frontend changes
    • For new features: Has the documentation been updated accordingly? Not yet

    This pull requests proposes to allow edit_handler and panels to be defined on a ModelAdmin definition. Currently it is only possible to define edit_handler and panels on a Model definition, which forces a tight coupling between Model definition and wagtail. However it would be nice and would increase decoupling if panels and edit handlers could also be defined on a ModelAdmin instance, since models managed via a ModelAdmin often live in non-cms apps.

    See also this Slack thread for further details: https://wagtailcms.slack.com/archives/C81FGJR2S/p1541582510134300

    This pull request contains a modified ModelFormView.get_edit_handler and test cases to verify this functionality:

    class ModelFormView(WMABaseView, FormView):
    
        def get_edit_handler(self):
            if hasattr(self.model, 'edit_handler'):
                edit_handler = self.model.edit_handler
           # this elif is new...
            elif hasattr(self.model_admin, 'edit_handler'):
                edit_handler = self.model_admin.edit_handler
           # and this elif is new...
            elif hasattr(self.model_admin, 'panels'):
                panels = self.model_admin.panels
                edit_handler = ObjectList(panels)
            else:
                fields_to_exclude = self.model_admin.get_form_fields_exclude(request=self.request)
                panels = extract_panel_definitions_from_model_class(self.model, exclude=fields_to_exclude)
                edit_handler = ObjectList(panels)
            return edit_handler.bind_to_model(self.model)
    

    Looking forward to comments 😄

    status:Needs Review component:Modeladmin 
    opened by tkremmel 38
  • Visual design of login screen

    Visual design of login screen

    On any decent-resolution monitor, both the following look a bit ridiculous. Compared to our competitors It's certainly eye-catching in an unusual way, but I don't feel it's an attractive first impression to make.

    screen shot 2016-03-04 at 10 02 36 screen shot 2016-03-04 at 10 02 41

    A brief skim of any "Design Inspiration" site indicates a fad of centralised boxes with giant shadows and background textures e.g http://collectui.com/challenges/sign-up

    I'm keen to avoid an approach which dates quickly, so I'm not suggesting we jump blindly onto the bandwagons illustrated above, but there are qualities in all these examples which I feel wagtail shares, which our login screen doesn't convey.

    type:Enhancement component:Frontend component:User Management 
    opened by davecranwell 37
  • Page View Permission

    Page View Permission

    At this moment, the published wagtail page can be seen by everyone.

    How about a way that can limit the people who can see the specific page (people who want to see that page should login and be in specific role) ?

    type:Enhancement 
    opened by wdv4758h 37
  • Vanilla project template

    Vanilla project template

    This PR changes the builtin project template to be as much like Django's built-in one as possible with the bare minimum additions to make it run Wagtail.

    type:Cleanup/Optimisation 
    opened by kaedroho 36
  • Implements the new StreamField based on react-streamfield.

    Implements the new StreamField based on react-streamfield.

    This pull request is the final version of the first and main goal of the first Wagtail crowdfunding campaign.

    Main features:

    • Brand new fancy design
    • Straightforward structure
    • Drag and drop to move around the blocks
    • Blocks use as much width as possible, for a better nesting
    • Duplication of blocks
    • Blocks can be made collapsible for complex data structures
    • Smaller add panels, perfect when using more than a dozen blocks
    • Better performance by several orders of magnitude (up to 1000× faster for loading the edit page!)
    • New support for min_num and max_num in ListBlock
    • Django formsets are no longer used to handle the form data. Previously, we had to convert from the database JSON to formsets, then parse hundreds/thousands of fields with formsets to convert data to JSON. Now, a single hidden JSON input stores on the page the data that will be stored to the database, with almost no need for conversion (Draftail is an exception).
    • Far better responsiveness

    You can already test it by using wagtail-react-streamfield, a library that patches your existing Wagtail during the execution (a.k.a. monkey patching) to add this pull request.

    As you can see, this pull request is fairly small given the amount of work required by it. This is because almost all the magic is happening in react-streamfield, a JavaScript library I developed for the occasion. As of now, I spent a total of 179 hours on the campaign work (excluding preparation of the campaign), in addition to 120 hours spent benevolently on Wagtail since January.

    So yes, things got a little out of hand and took much longer than I planned. But I still hang on and am still planning to finish everything I promised I will do.

    For the integration, I had to update Babel, React and related librairies because react-streamfield relies on the latest JavaScript syntaxes and technologies.

    It’s fully working, but I’m still struggling with some last tests (after updating/adding/removing dozens of them). The remaining tests rely on the old template rendering of the StreamField and are tricky to update, I still have to spend 10-30 minutes on each test.

    Here is what it looks like: image

    The InlinePanel PR will follow, it’s enough to review for now ;)

    @thibaudcolas My proposition of paying you to review this work is still up! If you don’t have time, please let us know so someone else can do it.

    type:Enhancement component:Streamfield component:Frontend 
    opened by BertrandBordage 35
  • Updated documentation for adding reports to cover permission restrict…

    Updated documentation for adding reports to cover permission restrict…

    …ions

    Fixes #6014 Please check the following:

    • [ ] Do the tests still pass?[^1]
    • [ ] Does the code comply with the style guide?
      • [ ] Run make lint from the Wagtail root.
    • [ ] For Python changes: Have you added tests to cover the new/fixed behaviour?
    • [ ] For front-end changes: Did you test on all of Wagtail’s supported environments?[^2]
      • [ ] Please list the exact browser and operating system versions you tested:
      • [ ] Please list which assistive technologies [^3] you tested:
    • [ ] For new features: Has the documentation been updated accordingly?

    Please describe additional details for testing this change.

    [^1]: Development Testing [^2]: Browser and device support [^3]: Accessibility Target

    opened by Nazi-pikachu 1
  • Bugfix/9571 fix discrepancy between intended design system colors and actual implementation that lead to contrast issues

    Bugfix/9571 fix discrepancy between intended design system colors and actual implementation that lead to contrast issues

    Fixes #9571

    The discrepancy between intended design system colors and actual implementation while converting from HSL to RGB is connected with the fact that the number of colors you can possibly express using integer values is different for HSL (~3.5m) and RGB (16.8m), so multiple RGB values can map to the same HSL value - in the ratio of about 4.8 to 1.

    In order to solve the issue we need to use more precise HSL values in design tokens. More specifically - keeping one decimal for H, S, and L values respectively is enough.

    I tested this solution for all Wagtail colors in Chrome 108 and Firefox 108, and for several of them - in Safari 15.5 - works perfectly well and consistently for all 3 browsers.

    I also made changes in regex used in calculating color variables to correctly work with floats.

    opened by albinazs 1
  • make streamfield migration names from operations

    make streamfield migration names from operations

    • operation_name_fragment property added to operations
    • migration_name_fragment property added to MigrateStreamData
    • added tests, docs updated
    • BaseBlockOperation inherits from abc.ABC
    opened by sandilsranasinghe 1
  • Axe accessibility checker integration: milestones 1,2

    Axe accessibility checker integration: milestones 1,2

    • Integrate Axe in the userbar, calling axe.run, logging its results to the console
    • Exclude shadowDOM from the testing context
    • Display the native error count next to the userbar toggle, and a very basic rendering of the results when clicking the new "Accessibility" menu item inside the userbar

    image

    opened by albinazs 1
  • Changing default slug causes get_site to return no pages.

    Changing default slug causes get_site to return no pages.

    Issue Summary

    When we change the slug for a page, the get_url_paths method (called by get_site) in the Page class returns no pages

    Steps to Reproduce

    1. Start a new project with wagtail start myproject
    2. Set up a basic content site_ with a few index child pages or use an existing demo built on Wagtail 2.16 that has child pages and the Promote tab in the admin parent page
    3. Add this method to the BlogIndexPage in models.py to get all child pages def get_collections(): res = None site = self.get_site() if site: res = res.in_site(site) return res
    4. in your index template add this not pretty, but enough to show the data <div> {% page.get_collections %}</div>
    5. run your site and go to the Promote tab on the index page
    6. change the slug, save draft, publish
    7. refresh the index page and see that the data is gone

    I expected all results for get_site

    Technical details

    • Python version: 3.8
    • Django version: 2.2
    • Wagtail version: 2.16
    • Browser version: Chrome 108
    type:Bug status:Unconfirmed 
    opened by kimberlyherman 0
  • created the w-action controller and added function for the enable but…

    created the w-action controller and added function for the enable but…

    First PR for #9815

    Fix Summary

    • Removed the inline script for the enable action button and converted to stimulus
    • Changed the method of posting data from creating a form to using FormData method and XMLHttpRequest.

    Issues I have with this PR

    • After the data is sent, the success dialog that usually shows at the top didn't display and the page didn't reload since it isn't a form submit. So I used window.location.reload(). But even after doing that the sucess dialog still didn't show

    Before fix before clicking enable

    workflow-enable-action-before

    After fix after before enable


    image

    After fix after after enable


    image

    opened by Lovelyfin00 4
Releases(v4.1.1)
  • v4.1.1(Nov 11, 2022)

    • Fix: Fix issue where lock/unlock buttons would not work on the Dashboard (home) page or the page index listing via the status sidebar (Stefan Hammer)
    • Fix: Fix disabled style on StreamField add button (Matt Westcott)
    • Fix: Ensure models are fully loaded before registering snippets, to avoid circular import issues (Matt Westcott)
    • Fix: Prevent fields without a verbose_name property from breaking usage report views (Matt Westcott)
    • Fix: Exclude tags from the reference index (Matt Westcott)
    • Fix: Fix errors in handling generic foreign keys when populating the reference index (Matt Westcott)
    • Fix: Prevent error in handling null ParentalKeys when populating the reference index (Matt Westcott)
    • Fix: Make sure minimap error indicators follow the minimap scrolling (Thibaud Colas)
    • Fix: Ensure background HTTP request to clear stale preview data correctly respects the CSRF_HEADER_NAME setting (Sage Abdullah)
    • Fix: Prevent error on aging pages report when "Last published by" user has been deleted (Joshua Munn)
    Source code(tar.gz)
    Source code(zip)
  • v4.1(Nov 1, 2022)

    • New scheduled publishing UI, available from the Status side panel (Sage Abdullah)
    • Allow snippet admin views to be customised via SnippetViewSet (Sage Abdullah)
    • Implement scheduled publishing for snippets inheriting from DraftStateMixin (Sage Abdullah)
    • Add reference index and usage reports for images, documents and snippets (Karl Hobley, Matt Westcott)
    • Formalised support for Python 3.11 (Matt Westcott)
    • Add basic keyboard control and screen reader support for page listing re-ordering (Paarth Agarwal, Thomas van der Hoeven)
    • Add PageQuerySet.private method as an alias of not_public (Mehrdad Moradizadeh)
    • Most images in the admin will now only load once they are visible on screen (Jake Howard)
    • Allow setting default attributes on image tags (Jake Howard)
    • Optimise the performance of the Wagtail userbar to remove duplicated queries, improving page loads when viewing live pages while signed in (Jake Howard)
    • Remove legacy styling classes for buttons (unbutton, button-neutral, button-strokeonhover, hover-no, yes) and refactor button styles to be more maintainable (Paarth Agarwal, LB (Ben Johnston))
    • Add button variations to the pattern library (Paarth Agarwal)
    • Provide a more accessible page title where the unique information is shown first and the CMS name is shown last (Mehrdad Moradizadeh)
    • Pull out behaviour from AbstractFormField to FormMixin and AbstractEmailForm to EmailFormMixin to allow use with subclasses of Page (Mehrdad Moradizadeh, Kurt Wall)
    • Add a docs.wagtail.org/.well-known/security.txt so that the security policy is available as per the specification on https://securitytxt.org/ (Jake Howard)
    • Add unit tests for the classnames Wagtail admin template tag (Mehrdad Moradizadeh)
    • Show an inverse locked indicator when the page has been locked by the current user in reports and dashboard listings (Vaibhav Shukla, LB (Ben Johnston))
    • Add clarity to the development documentation that admonition should not be used and titles for note are not supported, including clean up of some existing incorrect usage (LB (Ben Johnston))
    • Unify the styling of delete/destructive button styles across the admin interface (Paarth Agarwal)
    • Adopt new designs and unify the styling styles for .button-secondary buttons across the admin interface (Paarth Agarwal)
    • Refine designs for disabled buttons throughout the admin interface (Paarth Agarwal)
    • Update expanding formset add buttons to use button not link for behaviour (LB (Ben) Johnston)
    • Add robust unit testing for authentication scenarios across the user management admin pages (Mehrdad Moradizadeh)
    • Avoid assuming an integer PK named 'id' on multiple upload views (Matt Westcott)
    • Add a toggle to collapse/expand all page panels at once (Helen Chapman)
    • Improve the GitHub Workflows (CI) security (Alex (sashashura))
    • Use search type input in documentation search (LB (Ben) Johnston)
    • Render help_text when set on FieldPanel, MultiFieldPanel, FieldRowPanel, and other panel APIs where it previously worked without official support (Matt Westcott)
    • Consolidate usage of Excel libraries to a single library openpyxl, removing usage of XlsxWriter, tablib, xlrd and xlwt (Jaap Roes)
    • Adopt wagtail.admin.views.generic.IndexView for the Users index listing and search results (Mehrdad Moradizadeh)
    • Adopt wagtail.admin.views.generic.CreateView for the User creation view (Mehrdad Moradizadeh)
    • Adopt wagtail.admin.views.generic.DeleteView for the User delete view (Mehrdad Moradizadeh)
    • Adopt wagtail.admin.views.generic.EditView for the User edit view (Mehrdad Moradizadeh)
    • Add button-secondary bicolor variants to the pattern library and styleguide (Adinapunyo Banerjee)
    • Add better support for non-integer / non-id primary keys into Wagtail's generic views, including for Snippets and custom User models (Mehrdad Moradizadeh)
    • Upgrade jQuery UI to version 1.13.2 (LB (Ben) Johnston)
    • Update pattern library background & text examples (Albina Starykova)
    • Switch StreamField blocks to use a <section> element so screen reader users can bypass them more easily (Thibaud Colas)
    • Add anchor links to StreamField blocks so users can navigate straight to a given block (Thibaud Colas)
    • Support "Ctrl + f" in-page search within collapsed StreamField blocks (Thibaud Colas)
    • Remember the last opened side panel in the page editor, activating it on page load (Sage Abdullah)
    • Ensure that the update_index command can run without console output if called with --verbosity 0 (Ben Sturmfels, Oliver Parker)
    • Improve side panels’ resizing in page editor and listings (Steven Steinwand)
    • Adjust breadcrumb text alignment and size in page listings & page editor (Steven Steinwand)
    • Improvements to getting started tutorial aimed at developers who are very new to Python and have no Django experience (Damilola Oladele)
    • Update documentation dependencies; Sphinx Wagtail Theme to v5.3.2, MyST Parser to v0.18.1, add Sphinx Copy Button (LB (Ben) Johnston)
    • Add "What's New" dashboard banner and "Help" menu in sidebar (Sage Abdullah)
    • Implement new "minimap" component for the page editor (Thibaud Colas)
    • The image_url template tag, when using the serve view to redirect rather than serve directly, will now use temporary redirects with a cache header instead of permanent redirects (Jake Howard)
    • Add new test assertions to WagtailPageTestCase - assertPageIsRoutable, assertPageIsRenderable, assertPageIsEditable, assertPageIsPreviewable (Andy Babic)
    • Add documentation to the performance section about how to better create image URLs when not used directly on the page (Jake Howard)
    • Add ability to provide a required permission to PanelGroup, used by TabbedInterface, ObjectList, FieldRowPanel and MultiFieldPanel (Oliver Parker)
    • Update documentation screenshots of the admin interface to align with changes in this release (Thibaud Colas)
    • Fix: Prevent PageQuerySet.not_public from returning all pages when no page restrictions exist (Mehrdad Moradizadeh)
    • Fix: Ensure that duplicate block ids are unique when duplicating stream blocks in the page editor (Joshua Munn)
    • Fix: Revise colour usage so that privacy & locked indicators can be seen in Windows High Contrast mode (LB (Ben Johnston))
    • Fix: Ensure that disabled buttons have a consistent presentation on hover to indicate no interaction is available (Paarth Agarwal)
    • Fix: Update the 'Locked pages' report menu title so that it is consistent with other pages reports and its own title on viewing (Nicholas Johnson)
    • Fix: Support formfield_callback handling on ModelForm.Meta for future Django 4.2 release (Matt Westcott)
    • Fix: Ensure that ModelAdmin correctly supports filters in combination with subsequent searches without clearing the applied filters (Stefan Hammer)
    • Fix: Add missing translated values to site settings' headers plus models presented in listings and audit report filtering labels (Stefan Hammer)
    • Fix: Remove capitalize() calls to avoid issues with other languages or incorrectly presented model names for reporting and parts of site settings (Stefan Hammer)
    • Fix: Add back rendering of help_text for InlinePanel (Matt Westcott)
    • Fix: Ensure for_user argument is passed to the form class when previewing pages (Matt Westcott)
    • Fix: Ensure the capitalisation of the timesince_simple tag is consistently added in the template based on usage in context (Stefan Hammer)
    • Fix: Add missing translation usage for the timesince_last_update and ensure the translated labels can be easier to work with in Transifex (Stefan Hammer)
    • Fix: Add additional checks for duplicate form field clean_name values in the Form Builder validation and increase performance of checks (Dan Bentley)
    • Fix: Use correct color for labels of radio and checkbox fields (Steven Steinwand)
    • Fix: Adjust spacing of fields’ error messages and position in tables (Steven Steinwand)
    • Fix: Update dead or redirected links throughout the documentation (LB (Ben) Johnston)
    • Fix: Use different icons for workflow timeline component, so the steps can be distinguished with other means than color (Sam Moran)
    • Fix: Use the correct custom font for the Wagtail userbar (Umar Farouk Yunusa)
    • Fix: StreamField blocks are now collapsible with the keyboard (Thibaud Colas)
    • Fix: StreamField block headings now have a label for screen reader users (Thibaud Colas)
    • Fix: Display the "*" required field indicator for StreamField blocks (Thibaud Colas)
    • Fix: Resolve inconsistency in action button positions in InlinePanel (Thibaud Colas)
    • Fix: Use h3 elements with a counter in InlinePanel so screen reader users can navigate by heading (Thibaud Colas)
    • Fix: Ensure that buttons on custom chooser widgets are correctly shown on hover (Thibaud Colas)
    • Fix: Add missing asterisk to title field placeholder (Seremba Patrick, Stefan Hammer)
    • Fix: Avoid creating an extra rich text block when inserting a new block at the end of the content (Matt Westcott)
    • Fix: Removed the extra dot in the Wagtail version shown within the admin settings menu item (Loveth Omokaro)
    • Fix: Fully remove the obsolete wagtailsearch_editorspick table that prevents flushing the database (Matt Westcott)
    • Fix: Update latest version message on Dashboard to accept dev build version format used on nlightly builds (Sam Moran)
    • Fix: references extraction for ChooserBlock (Alex Tomkins)
    • Fix: Regression in field width for authentication pages (log in / password reset) (Chisom)
    • Fix: Ensure the new minimap correctly pluralises error counts for aria-labels (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.4(Oct 18, 2022)

    (Reissue of 4.0.3 due to packaging issues)

    • Render help_text when set on FieldPanel, MultiFieldPanel, FieldRowPanel, and other panel APIs where it previously worked without official support (Matt Westcott)
    • Update special-purpose FieldPanel deprecation message to add clarity for developers (Matt Westcott)
    • Fix: Add back rendering of help_text for InlinePanel (Matt Westcott)
    • Fix: Ensure that AbstractForm & AbstractEmailForm page models correctly pass the form to the preview context (Dan Bentley)
    • Fix: Use the correct custom font for the Wagtail userbar (Umar Farouk Yunusa)
    • Fix: Ensure that buttons on custom chooser widgets are correctly shown on hover (Thibaud Colas)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.3(Oct 18, 2022)

    • Render help_text when set on FieldPanel, MultiFieldPanel, FieldRowPanel, and other panel APIs where it previously worked without official support (Matt Westcott)
    • Update special-purpose FieldPanel deprecation message to add clarity for developers (Matt Westcott)
    • Fix: Add back rendering of help_text for InlinePanel (Matt Westcott)
    • Fix: Ensure that AbstractForm & AbstractEmailForm page models correctly pass the form to the preview context (Dan Bentley)
    • Fix: Use the correct custom font for the Wagtail userbar (Umar Farouk Yunusa)
    • Fix: Ensure that buttons on custom chooser widgets are correctly shown on hover (Thibaud Colas)
    Source code(tar.gz)
    Source code(zip)
  • v4.1rc1(Oct 18, 2022)

    • New scheduled publishing UI, available from the Status side panel (Sage Abdullah)
    • Allow snippet admin views to be customised via SnippetViewSet (Sage Abdullah)
    • Implement scheduled publishing for snippets inheriting from DraftStateMixin (Sage Abdullah)
    • Add reference index and usage reports for images, documents and snippets (Karl Hobley, Matt Westcott)
    • Add basic keyboard control and screen reader support for page listing re-ordering (Paarth Agarwal, Thomas van der Hoeven)
    • Add PageQuerySet.private method as an alias of not_public (Mehrdad Moradizadeh)
    • Most images in the admin will now only load once they are visible on screen (Jake Howard)
    • Allow setting default attributes on image tags (Jake Howard)
    • Optimise the performance of the Wagtail userbar to remove duplicated queries, improving page loads when viewing live pages while signed in (Jake Howard)
    • Remove legacy styling classes for buttons (unbutton, button-neutral, button-strokeonhover, hover-no, yes) and refactor button styles to be more maintainable (Paarth Agarwal, LB (Ben Johnston))
    • Add button variations to the pattern library (Paarth Agarwal)
    • Provide a more accessible page title where the unique information is shown first and the CMS name is shown last (Mehrdad Moradizadeh)
    • Pull out behaviour from AbstractFormField to FormMixin and AbstractEmailForm to EmailFormMixin to allow use with subclasses of Page (Mehrdad Moradizadeh, Kurt Wall)
    • Add a docs.wagtail.org/.well-known/security.txt so that the security policy is available as per the specification on https://securitytxt.org/ (Jake Howard)
    • Add unit tests for the classnames Wagtail admin template tag (Mehrdad Moradizadeh)
    • Show an inverse locked indicator when the page has been locked by the current user in reports and dashboard listings (Vaibhav Shukla, LB (Ben Johnston))
    • Add clarity to the development documentation that admonition should not be used and titles for note are not supported, including clean up of some existing incorrect usage (LB (Ben Johnston))
    • Unify the styling of delete/destructive button styles across the admin interface (Paarth Agarwal)
    • Adopt new designs and unify the styling styles for .button-secondary buttons across the admin interface (Paarth Agarwal)
    • Refine designs for disabled buttons throughout the admin interface (Paarth Agarwal)
    • Update expanding formset add buttons to use button not link for behaviour (LB (Ben) Johnston)
    • Add robust unit testing for authentication scenarios across the user management admin pages (Mehrdad Moradizadeh)
    • Avoid assuming an integer PK named 'id' on multiple upload views (Matt Westcott)
    • Add a toggle to collapse/expand all page panels at once (Helen Chapman)
    • Improve the GitHub Workflows (CI) security (Alex (sashashura))
    • Use search type input in documentation search (LB (Ben) Johnston)
    • Render help_text when set on FieldPanel, MultiFieldPanel, FieldRowPanel, and other panel APIs where it previously worked without official support (Matt Westcott)
    • Consolidate usage of Excel libraries to a single library openpyxl, removing usage of XlsxWriter, tablib, xlrd and xlwt (Jaap Roes)
    • Adopt wagtail.admin.views.generic.IndexView for the Users index listing and search results (Mehrdad Moradizadeh)
    • Adopt wagtail.admin.views.generic.CreateView for the User creation view (Mehrdad Moradizadeh)
    • Adopt wagtail.admin.views.generic.DeleteView for the User delete view (Mehrdad Moradizadeh)
    • Adopt wagtail.admin.views.generic.EditView for the User edit view (Mehrdad Moradizadeh)
    • Add button-secondary bicolor variants to the pattern library and styleguide (Adinapunyo Banerjee)
    • Add better support for non-integer / non-id primary keys into Wagtail's generic views, including for Snippets and custom User models (Mehrdad Moradizadeh)
    • Upgrade jQuery UI to version 1.13.2 (LB (Ben) Johnston)
    • Update pattern library background & text examples (Albina Starykova)
    • Switch StreamField blocks to use a <section> element so screen reader users can bypass them more easily (Thibaud Colas)
    • Add anchor links to StreamField blocks so users can navigate straight to a given block (Thibaud Colas)
    • Support "Ctrl + f" in-page search within collapsed StreamField blocks (Thibaud Colas)
    • Remember the last opened side panel in the page editor, activating it on page load (Sage Abdullah)
    • Ensure that the update_index command can run without console output if called with --verbosity 0 (Ben Sturmfels, Oliver Parker)
    • Improve side panels’ resizing in page editor and listings (Steven Steinwand)
    • Adjust breadcrumb text alignment and size in page listings & page editor (Steven Steinwand)
    • Improvements to getting started tutorial aimed at developers who are very new to Python and have no Django experience (Damilola Oladele)
    • Update documentation dependencies; Sphinx Wagtail Theme to v5.3.2, MyST Parser to v0.18.1, add Sphinx Copy Button (LB (Ben) Johnston)
    • Add "What's New" dashboard banner and "Help" menu in sidebar (Sage Abdullah)
    • Implement new "minimap" component for the page editor (Thibaud Colas)
    • The image_url template tag, when using the serve view to redirect rather than serve directly, will now use temporary redirects with a cache header instead of permanent redirects (Jake Howard)
    • Add new test assertions to WagtailPageTestCase - assertPageIsRoutable, assertPageIsRenderable, assertPageIsEditable, assertPageIsPreviewable (Andy Babic)
    • Add documentation to the performance section about how to better create image URLs when not used directly on the page (Jake Howard)
    • Add ability to provide a required permission to PanelGroup, used by TabbedInterface, ObjectList, FieldRowPanel and MultiFieldPanel (Oliver Parker)
    • Fix: Prevent PageQuerySet.not_public from returning all pages when no page restrictions exist (Mehrdad Moradizadeh)
    • Fix: Ensure that duplicate block ids are unique when duplicating stream blocks in the page editor (Joshua Munn)
    • Fix: Revise colour usage so that privacy & locked indicators can be seen in Windows High Contrast mode (LB (Ben Johnston))
    • Fix: Ensure that disabled buttons have a consistent presentation on hover to indicate no interaction is available (Paarth Agarwal)
    • Fix: Update the 'Locked pages' report menu title so that it is consistent with other pages reports and its own title on viewing (Nicholas Johnson)
    • Fix: Support formfield_callback handling on ModelForm.Meta for future Django 4.2 release (Matt Westcott)
    • Fix: Ensure that ModelAdmin correctly supports filters in combination with subsequent searches without clearing the applied filters (Stefan Hammer)
    • Fix: Add missing translated values to site settings' headers plus models presented in listings and audit report filtering labels (Stefan Hammer)
    • Fix: Remove capitalize() calls to avoid issues with other languages or incorrectly presented model names for reporting and parts of site settings (Stefan Hammer)
    • Fix: Add back rendering of help_text for InlinePanel (Matt Westcott)
    • Fix: Ensure for_user argument is passed to the form class when previewing pages (Matt Westcott)
    • Fix: Ensure the capitalisation of the timesince_simple tag is consistently added in the template based on usage in context (Stefan Hammer)
    • Fix: Add missing translation usage for the timesince_last_update and ensure the translated labels can be easier to work with in Transifex (Stefan Hammer)
    • Fix: Add additional checks for duplicate form field clean_name values in the Form Builder validation and increase performance of checks (Dan Bentley)
    • Fix: Use correct color for labels of radio and checkbox fields (Steven Steinwand)
    • Fix: Adjust spacing of fields’ error messages and position in tables (Steven Steinwand)
    • Fix: Update dead or redirected links throughout the documentation (LB (Ben) Johnston)
    • Fix: Use different icons for workflow timeline component, so the steps can be distinguished with other means than color (Sam Moran)
    • Fix: Use the correct custom font for the Wagtail userbar (Umar Farouk Yunusa)
    • Fix: StreamField blocks are now collapsible with the keyboard (Thibaud Colas)
    • Fix: StreamField block headings now have a label for screen reader users (Thibaud Colas)
    • Fix: Display the "*" required field indicator for StreamField blocks (Thibaud Colas)
    • Fix: Resolve inconsistency in action button positions in InlinePanel (Thibaud Colas)
    • Fix: Use h3 elements with a counter in InlinePanel so screen reader users can navigate by heading (Thibaud Colas)
    • Fix: Ensure that buttons on custom chooser widgets are correctly shown on hover (Thibaud Colas)
    • Fix: Add missing asterisk to title field placeholder (Seremba Patrick)
    • Fix: Avoid creating an extra rich text block when inserting a new block at the end of the content (Matt Westcott)
    • Fix: Removed the extra dot in the Wagtail version shown within the admin settings menu item (Loveth Omokaro)
    • Fix: Fully remove the obsolete wagtailsearch_editorspick table that prevents flushing the database (Matt Westcott)
    • Fix: Update latest version message on Dashboard to accept dev build version format used on nlightly builds (Sam Moran)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.2(Sep 23, 2022)

    • Update all images and sections of the Wagtail Editor's guide to align with the new admin interface changes from Wagtail 3.0 and 4.0 (Thibaud Colas)
    • Ensure all images in the documentation have a suitable alt text (Thibaud Colas)
    • Fix: Ensure tag autocompletion dropdown has a solid background (LB (Ben) Johnston)
    • Fix: Allow inline panels to be ordered (LB (Ben) Johnston)
    • Fix: Only show draft / live status tags on snippets that have DraftStateMixin applied (Sage Abdullah)
    • Fix: Prevent JS error when initialising chooser modals with no tabs (LB (Ben) Johnston)
    • Fix: Add missing vertical spacing between chooser modal header and body when there are no tabs (LB (Ben) Johnston)
    • Fix: Reinstate specific labels for chooser buttons (for example 'Choose another page', 'Edit this page' not 'Change', 'Edit') so that it is clearer for users and non-English translations (Matt Westcott)
    • Fix: Resolve issue where searches with a tag and a query param in the image listing would result in an FilterFieldError (Stefan Hammer)
    • Fix: Add missing vertical space between header and content in embed chooser modal (LB (Ben) Johnston)
    • Fix: Use the correct type scale for heading levels in rich text (Steven Steinwand)
    • Fix: Update alignment and reveal logic of fields’ comment buttons (Steven Steinwand)
    • Fix: Regression from Markdown conversion in documentation for API configuration - update to correctly use PEP-8 for example code (Storm Heg)
    • Fix: Prevent 'Delete' link on page edit view from redirecting back to the deleted page (LB (Ben) Johnston)
    • Fix: Prevent JS error on images index view when collections dropdown is omitted (Tidiane Dia)
    • Fix: Prevent "Entries per page" dropdown on images index view from reverting to 10 (Tidiane Dia)
    • Fix: Set related_name on user revision relation to avoid conflict with django-reversion (Matt Westcott)
    • Fix: Ensure the "recent edits" panel on the Dashboard (home) page works when page record is missing (Matt Westcott)
    • Fix: Only add Translate buttons when the simple_translation app is installed (Dan Braghis)
    • Fix: Ensure that MultiFieldPanel correctly outputs all child classnames in the template (Matt Westcott)
    • Fix: Remove over-eager caching on ModelAdmin permission checks (Matt Westcott, Stefan Hammer)
    Source code(tar.gz)
    Source code(zip)
  • v4.0.1(Sep 5, 2022)

    • Fix: On the Locked Pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
    • Fix: Prevent JavaScript error when using StreamField on views without commenting support, such as snippets (Jacob Topp-Mugglestone)
    • Fix: Modify base template for new projects so that links opened from the preview panel open in a new window (Sage Abdullah)
    • Fix: Prevent circular import error between custom document models and document chooser blocks (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.3(Sep 5, 2022)

    • Fix: On the Locked Pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
    • Fix: Prevent JavaScript error when using StreamField on views without commenting support, such as snippets (Jacob Topp-Mugglestone)
    Source code(tar.gz)
    Source code(zip)
  • v2.16.3(Sep 5, 2022)

    • Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the WAGTAIL_ENABLE_UPDATE_CHECK sends the referrer origin with strict-origin-when-cross-origin (Karl Hobley)
    • Fix: On the Locked Pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
    • Fix: Ensure Python 3.10 compatibility when using Elasticsearch backend (Przemysław Buczkowski, Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v2.15.6(Sep 5, 2022)

    • Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the WAGTAIL_ENABLE_UPDATE_CHECK sends the referrer origin with strict-origin-when-cross-origin (Karl Hobley)
    • Fix: On the Locked Pages report, limit the "locked by" filter to just users who have locked pages (Stefan Hammer)
    • Fix: Ensure Python 3.10 compatibility when using Elasticsearch backend (Przemysław Buczkowski, Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v4.0(Aug 31, 2022)

    • Added support for Django 4.1
    • Added a new BaseGenericSetting base model class that allows defining a settings model that applies to all sites rather than just a single site (Kyle Bayliss)
    • Add clarity to confirmation when being asked to convert an external link to an internal one (Thijs Kramer)
    • Convert the rest of the documentation to Markdown (Khanh Hoang, Vu Pham, Daniel Kirkham, LB (Ben) Johnston, Thiago Costa de Souza, Benedict Faw, Noble Mittal, Sævar Öfjörð Magnússon, Sandeep M A, Stefano Silvestri)
    • Add base_url_path to ModelAdmin so that the default URL structure of app_label/model_name can be overridden (Vu Pham, Khanh Hoang)
    • Add full_url to the API output of ImageRenditionField (Paarth Agarwal)
    • Use InlinePanel's label when available for field comparison label (Sandil Ranasinghe)
    • Drop support for Safari 13 by removing left/right positioning in favour of CSS logical properties (Thibaud Colas)
    • Use FormData instead of jQuery's form.serialize when editing documents or images just added so that additional fields can be better supported (Stefan Hammer)
    • Add informational Codecov status checks for GitHub CI pipelines (Tom Hu)
    • Replace PageRevision with generic Revision model (Sage Abdullah)
    • Make it possible to reuse and customise Wagtail’s fonts with CSS variables (LB (Ben) Johnston)
    • Add better handling and informative developer errors for cross linking URLS (e.g. success after add) in generic views wagtail.admin.views.generic (Matt Westcott)
    • Introduce wagtail.admin.widgets.chooser.BaseChooser to make it easier to build custom chooser inputs (Matt Westcott)
    • Introduce JavaScript chooser module, including a SearchController class which encapsulates the standard pattern of re-rendering the results panel in response to search queries and pagination (Matt Westcott)
    • Migrate Image and Document choosers to new JavaScript chooser module (Matt Westcott)
    • Add ability to select multiple items at once within bulk actions selections when holding shift on subsequent clicks (Hitansh Shah)
    • Upgrade notification, shown to admins on the dashboard if Wagtail is out of date, will now link to the release notes for the closest minor branch instead of the latest patch (Tibor Leupold)
    • Upgrade notification can now be configured to only show updates when there is a new LTS available via WAGTAIL_ENABLE_UPDATE_CHECK = 'lts' (Tibor Leupold)
    • Implement redesign of the Workflow Status dialog, fixing accessibility issues (Steven Steinwand)
    • Add the ability to change the number of images displayed per page in the image library (Tidiane Dia, with sponsorship from YouGov)
    • Allow users to sort by different fields in the image library (Tidiane Dia, with sponsorship from YouGov)
    • Add prefetch_renditions method to ImageQueryset for performance optimisation on image listings (Tidiane Dia, Karl Hobley)
    • Add ability to define a custom get_field_clean_name method when defining FormField models that extend AbstractFormField (LB (Ben) Johnston)
    • Migrate Home (Dashboard) view to use generic Wagtail class based view (LB (Ben) Johnston)
    • Combine most of Wagtail’s stylesheets into the global core.css file (Thibaud Colas)
    • Add new Breadcrumbs and Tabs to the Wagtail pattern library (Paarth Agarwal)
    • Adopt new Page Editor UI tabs in the workflow history report page (Paarth Agarwal)
    • Update ReportView to extend from generic wagtail.admin.views.generic.models.IndexView (Sage Abdullah)
    • Introduce a wagtail.admin.viewsets.chooser.ChooserViewSet module to serve as a common base implementation for chooser modals (Matt Westcott)
    • Add documentation for wagtail.admin.viewsets.model.ModelViewSet (Matt Westcott)
    • Enhance new breadcrumbs so they can be added to any header or container element (Paarth Agarwal)
    • Adopt new breadcrumbs on the page explorer (listing) view and the page chooser modal, remove legacy breadcrumbs code for move page as no longer used (Paarth Agarwal)
    • Added multi-site support to the API (Sævar Öfjörð Magnússon)
    • Add add_to_admin_menu option for ModelAdmin (Oliver Parker)
    • Implement Fuzzy matching for Elasticsearch (Nick Smith)
    • Rename Page.get_latest_revision_as_page to Page.get_latest_revision_as_object (Sage Abdullah)
    • Cache model permission codenames in PermissionHelper (Tidiane Dia)
    • Selecting a new parent page for moving a page now uses the chooser modal which allows searching (Viggo de Vries)
    • Move get_snippet_edit_handler function to wagtail.admin.panels.get_edit_handler (Sage Abdullah)
    • Add clarity to the search indexing documentation for how boost works when using Postgres with the database search backend (Tibor Leupold)
    • Rename explorer_breadcrumb template tag to breadcrumbs as it is now used in multiple locations (Paarth Agarwal)
    • Updated django-filter version to support 23 (Yuekui)
    • Use .iterator() in a few more places in the admin, to make it more stable on sites with many pages (Andy Babic)
    • Migrate some simple React component files to TypeScript (LB (Ben) Johnston)
    • Deprecate the usage and documentation of the wagtail.contrib.modeladmin.menus.SubMenu class, provide a warning if used directing developers to use wagtail.admin.menu.Menu instead (Matt Westcott)
    • Remove legacy (non-next) breadcrumbs no longer used, remove ModelAdmin usage of breadcrumbs completely (Paarth Agarwal)
    • Replace human-readable-date hover pattern with accessible tooltip variant across all of admin (Bernd de Ridder)
    • Added WAGTAILADMIN_USER_PASSWORD_RESET_FORM setting for overriding the admin password reset form (Michael Karamuth)
    • Prefetch workflow states in edit page view to to avoid queries in other parts of the view/templates that need it (Tidiane Dia)
    • Remove the edit link from edit bird in previews to avoid confusion (Sævar Öfjörð Magnússon)
    • Introduce new template fragment and block level enclosure tags for easier template composition (Thibaud Colas)
    • Add a classnames template tag to easily build up classes from variables provided to a template (Paarth Agarwal)
    • Migrate the dashboard (home) view header to the shared header template and update designs (Paarth Agarwal)
    • Switch all report workflow, redirects, form submissions, site settings views to use Wagtail’s reusable header component (Paarth Agarwal)
    • Update classes and styles for the shared header templates to align with UI guidelines (Paarth Agarwal)
    • Clean up multiple eslint rules usage and configs to align better with the Wagtail coding guidelines (LB (Ben Johnston))
    • Add inline toolbar for Draftail, to avoid clashing with the page’s header (Thibaud Colas)
    • Add command palette in rich text editor to change text format with the keyboard only (Thibaud Colas)
    • Add a live-updating character count to the Draftail rich text editor (Thibaud Colas)
    • Add rich text editor paste to auto-create links (Thibaud Colas)
    • Add rich text editor text shortcuts undo, to allow typing text normally detected as a shortcut (Thibaud Colas)
    • Add support for right-to-left (RTL) languages to the rich text editor (Thibaud Colas)
    • Change rich text editor placeholder to follow the user’s focus on empty blocks (Thibaud Colas)
    • Add rich text editor empty block highlight by showing their block type (Thibaud Colas)
    • Add ability to split a rich text field and insert a StreamField block at the same time (Jacob Topp-Mugglestone)
    • Make ModelAdmin InspectView footer actions consistent with other parts of the UI (Thibaud Colas)
    • Introduce a new auto-updating preview panel inside the page editor (Sage Abdullah)
    • Add support for Twitter and other text-only embeds in Draftail embed previews (Iman Syed, Paarth Agarwal)
    • Use new modal dialog component for privacy settings modal (Sage Abdullah)
    • Add menu_item_name to modify MenuItem's name for ModelAdmin (Alexander Rogovskyy, Vu Pham)
    • Add an extra confirmation prompt when deleting pages with a large number of child pages (Jaspreet Singh)
    • Adopt the slim header in page listing views, with buttons moved under the "Actions" dropdown, including addition of translation page in the parent "more" button (Paarth Agarwal)
    • Improve help block styles in Windows High Contrast Mode with less reliance on communication via colour alone (Anuja Verma)
    • Add a bottom border to top messages so they stand out from the header (Anuja Verma)
    • Replace latin abbreviations (i.e. / e.g.) with common English phrases so that documentation is easier to understand (Dominik Lech)
    • Add shortcut for accessing StreamField blocks by block name with new blocks_by_name and first_block_by_name methods on StreamValue (Tidiane Dia, Matt Westcott)
    • Extend support for custom user interface colours across almost all admin colours (Thibaud Colas)
    • Add HTML-aware max_length validation and character count on RichTextField and RichTextBlock (Matt Westcott, Thibaud Colas)
    • Remove undocumented SearchableListMixin (Sage Abdullah)
    • Extract filtering code from ReportView to generic IndexView (Sage Abdullah)
    • Extract unpublish code for pages to generic UnpublishView (Sage Abdullah)
    • Retain other query params in header search behaviour (Sage Abdullah)
    • Remove is_parent kwarg in various page button hooks as this approach is no longer required (Paarth Agarwal)
    • Improve security of redirect imports by adding a file hash (signature) check for so that any tampering of file contents between requests will throw a BadSignature error (Jaap Roes)
    • Refresh designs for Home (Dashboard) site summary panels, use theme spacing and colours, add support for RTL layouts and better support for small devices (Paarth Agarwal, LB (Ben) Johnston)
    • Include all CSS system colours in allowed values in Stylelint's declaration-strict-value rule (Thibaud Colas)
    • Add JavaScript range utility function (LB (Ben) Johnston)
    • Allow generic chooser viewsets to support non-model data such as an API endpoint (Matt Wescott)
    • Update all widget styles across the admin UI (Thibaud Colas)
    • Update field styles across forms, with help text consistently under fields, error messages above, and comment buttons to the side (Thibaud Colas)
    • Make all sections of the page editing UI collapsible by default (Thibaud Colas)
    • Update the side panels to prevent overlap with form fields unless necessary (Thibaud Colas)
    • Remove unused change password page, was not removed when account management view was converted to tabs (Paarth Agarwal)
    • Rework layout of login and password reset pages to ensure main id on main element (for skip link) and consistent DOM layout for h1 header (Paarth Agarwal, LB (Ben) Johnston)
    • Adopt new design, including logo, for login and password reset pages (Paarth Agarwal, LB (Ben) Johnston)
    • Remove usage of inline script to focus on the username field, instead use autofocus (LB (Ben) Johnston)
    • Improve organisation of the settings reference page in the documentation (Akash Kumar Sen)
    • Added path and re_path decorators to the RoutablePageMixin module which emulate their Django URL utils equivalent, redirect re_path to the original route decorator (Tidiane Dia)
    • BaseChooser widget now provides a Telepath adapter that's directly usable for any subclasses that use the chooser widget and modal JS as-is with no customisations (Matt Westcott)
    • Implement the new chooser widget styles as part of the page editor redesign (Thibaud Colas)
    • Update base Draftail/TextField form designs as part of the page editor redesign (Thibaud Colas)
    • Move commenting trigger to inline toolbar and move block splitting to the block toolbar and command palette only in Draftail (Thibaud Colas)
    • Pages are now locked when they are scheduled for publishing (Karl Hobley)
    • Simplify page chooser views by converting to class-based views (Matt Westcott)
    • Add support for previews, revisions and drafts on snippets (Sage Abdullah)
    • Add "Translate" button within pages’ Actions dropdown when editing pages (Sage Abdullah)
    • Add translated labels to the bulk actions tags and collections bulk update fields (Stefan Hammer)
    • Fix: Typo in ResumeWorkflowActionFormatter message (Stefan Hammer)
    • Fix: Issue where ModelAdmin index listings with export list enabled would show buttons with an incorrect layout (Josh Woodcock)
    • Fix: Throw a meaningful error when saving an image to an unrecognised image format (Christian Franke)
    • Fix: Remove extra padding for headers with breadcrumbs on mobile viewport (Steven Steinwand)
    • Fix: Ensure that custom document or image models support custom tag models (Matt Westcott)
    • Fix: Ensure comments use translated values for their placeholder text (Stefan Hammer)
    • Fix: Ensure the upgrade notification, shown to admins on the dashboard if Wagtail is out of date, content is translatable (LB (Ben) Johnston)
    • Fix: Show the re-ordering option to users that have permission to publish pages within the page listing (Stefan Hammer)
    • Fix: Ensure default sidebar branding (bird logo) is not cropped in RTL mode (Steven Steinwand)
    • Fix: Add an accessible label to the image focal point input when editing images (Lucie Le Frapper)
    • Fix: Remove unused header search JavaScript on the redirects import page (LB (Ben) Johnston)
    • Fix: Ensure non-square avatar images will correctly show throughout the admin (LB (Ben) Johnston)
    • Fix: Ignore translations in test files and re-include some translations that were accidentally ignored (Stefan Hammer)
    • Fix: Show alternative message when no page types are available to be created (Jaspreet Singh)
    • Fix: Prevent error on sending notifications for the legacy moderation process when no user was specified (Yves Serrano)
    • Fix: Ensure aria-label is not set on locale selection dropdown within page chooser modal as it was a duplicate of the button contents (LB (Ben Johnston))
    • Fix: Revise the ModelAdmin title column behaviour to only link to 'edit' if the user has the correct permissions, fallback to the 'inspect' view or a non-clickable title if needed (Stefan Hammer)
    • Fix: Ensure that DecimalBlock preserves the Decimal type when retrieving from the database (Yves Serrano)
    • Fix: When no snippets are added, ensure the snippet chooser modal would have the correct URL for creating a new snippet (Matt Westcott)
    • Fix: ngettext in Wagtail's internal JavaScript internationalisation utilities now works (LB (Ben) Johnston)
    • Fix: Ensure the linting/formatting npm scripts work on Windows (Anuja Verma)
    • Fix: Fix display of dates in exported xlsx files on macOS Preview and Numbers (Jaap Roes)
    • Fix: Make progress bars’ progress visible in forced colors mode (Anuja Verma)
    • Fix: Make checkboxes visible in forced colors mode (Anuja Verma)
    • Fix: Display the correct color for icons in forced colors mode (Anuja Verma)
    • Fix: Add a border around modal dialogs so they can be identified in forced colors mode (Anuja Verma)
    • Fix: Remove outdated reference to 30-character limit on usernames in help text (minusf)
    • Fix: Resolve multiple form submissions index listing page layout issues including title not being visible on mobile and interaction with large tables (Paarth Agarwal)
    • Fix: Ensure ModelAdmin single selection lists show correctly with Django 4.0 form template changes (Coen van der Kamp)
    • Fix: Ensure icons within help blocks have accessible contrasting colours, and links have a darker colour plus underline to indicate they are links (Paarth Agarwal)
    • Fix: Ensure consistent sidebar icon position whether expanded or collapsed (Scott Cranfill)
    • Fix: Avoid redirects import error if the file had lots of columns (Jaap Roes)
    • Fix: Resolve accessibility and styling issues with the expanding status panel (Sage Abdullah)
    • Fix: Avoid 503 AttributeError when an empty search param q= is combined with other filters in the Images index view (Paritosh Kabra)
    • Fix: Fix error with string representation of FormSubmission not returning a string (LB (Ben) Johnston)
    • Fix: Ensure disabled buttons are distinguishable from active buttons in forced colors mode (Anuja Verma)
    • Fix: Revise usage of extra_actions in new changes to shared header template to avoid invalid template variable usage (Paarth Agarwal)
    • Fix: Ensure that bulk actions correctly support models with non-integer primary keys (id) (LB (Ben) Johnston)
    • Fix: Make it possible to toggle collapsible panels in the edit UI with the keyboard (Thibaud Colas)
    • Fix: Re-implement checkbox styles so the checked state is visible in forced colors mode (Thibaud Colas)
    • Fix: Re-implement switch component styles so the checked state is visible in forced colors mode (Thibaud Colas)
    • Fix: Always render select widgets consistently regardless of where they are in the admin (Thibaud Colas)
    • Fix: Make sure input labels and always take up the available space (Thibaud Colas)
    • Fix: Correctly style BooleanBlock within StructBlock (Thibaud Colas)
    • Fix: Make sure comment icons can’t overlap with help text (Thibaud Colas)
    • Fix: Make it possible to scroll input fields in admin on safari mobile (Thibaud Colas)
    • Fix: Stop rich text fields from overlapping with sidebar (Thibaud Colas)
    • Fix: Prevent comment buttons from overlapping with fields (Thibaud Colas)
    • Fix: Resolve MySQL search compatibility issue with Django 4.1 (Andy Chosak)
    • Fix: Ensure that the fields on login and password reset forms are visible in forced colors mode (Paarth Agarwal)
    • Fix: Missing a outline on dropdown content and malformed tooltip arrow in forced colors mode (Anuja Verma, LB (Ben) Johnston)
    • Fix: Layout issues with reports (including form submissions listings) on md device widths (Akash Kumar Sen, LB (Ben) Johnston)
    • Fix: Layout issue with page explorer's inner header item on small device widths (Akash Kumar Sen)
    • Fix: Ensure that BaseSiteSetting / BaseGenericSetting objects can be pickled (Andy Babic)
    • Fix: Ensure DocumentChooserBlock can be deconstructed for migrations (Matt Westcott)
    • Fix: Resolve frontent console error and unintented console logging issues (Matt Wescott, Paarth Agarwal)
    • Fix: Resolve issue with sites that have not yet migrated away from BaseSetting when upgrading to Wagtail 4.0 (Stefan Hammer)
    • Fix: Use correct classnames for showing/hiding edit button on chooser widget (Matt Wescott)
    • Fix: Render MultiFieldPanel’s heading even when nested (Thibaud Colas)
    • Fix: Make sure select widgets render correctly regardless of the Django field and widget type (Thibaud Colas)
    • Fix: Consistently display boolean field labels above the widget so they render correctly (Thibaud Colas)
    • Fix: Address form field label alignment issues by always displaying labels above the widget (Thibaud Colas)
    • Fix: Make sure rich text URL editing tooltip is fully visible when displayed inside InlinePanel blocks (Thibaud Colas)
    • Fix: Allow input fields to scroll horizontally in Safari iOS (Thibaud Colas)
    • Fix: Ensure screen readers are made aware of page level messages added dynamically to the top of the page (Paarth Agarwal)
    • Fix: Fix updatemodulepaths command for Python 3.7 (Matt Westcott)
    • Fix: Only show locale filter in choosers when i18n is enabled in settings (Matt Westcott)
    • Fix: Ensure that the live preview panel correctly clears the cache when a new page is created (Sage Abdullah)
    • Fix: Ensure that there is a larger hoverable area for add block (+) within the Drafttail editor (Steven Steinwand)
    • Fix: Resolve multiple header styling issues for modal, alignment on small devices, outside click handling target on medium devices, close button target size and hover styles (Paarth Agarwal)
    • Fix: Fix issue where comments could not be added in StreamField that were already already saved (Jacob Topp-Mugglestone)
    • Fix: Remove outdated reference to Image.LoaderError (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.2(Aug 30, 2022)

    • Fix: Ensure string representation of FormSubmission returns a string (LB (Ben Johnston))
    • Fix: Fix updatemodulepaths command for Python 3.7 (Matt Westcott)
    • Fix: Fix issue where comments could not be added in StreamField that were already already saved (Jacob Topp-Mugglestone)
    • Fix: Remove outdated reference to Image.LoaderError (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v4.0rc2(Aug 18, 2022)

    Changes from 4.0rc1:

    • Add missing icon file causing manage.py collectstatic to fail
    • Fix error on deconstructing DocumentChooserBlock for migrations
    • Fix failures when using legacy BaseSetting class
    • Fix error insertion logic for modal upload forms
    • Fix rich text command palette so that items can be selected by mouse
    • Improve API for get_preview_template and get_preview_context methods
    • Improve documentation for Page model and related mixins
    • Fix live preview error banner overlapping with preview mode selector
    • Fix pluralisation on "no permission to delete snippets" errors
    • Fix console error for breadcrumbs
    • Remove JS debug output from page-editor.js
    Source code(tar.gz)
    Source code(zip)
  • v4.0rc1(Aug 12, 2022)

    • Added support for Django 4.1
    • Added a new BaseGenericSetting base model class that allows defining a settings model that applies to all sites rather than just a single site (Kyle Bayliss)
    • Add clarity to confirmation when being asked to convert an external link to an internal one (Thijs Kramer)
    • Convert the rest of the documentation to Markdown (Khanh Hoang, Vu Pham, Daniel Kirkham, LB (Ben) Johnston, Thiago Costa de Souza, Benedict Faw, Noble Mittal, Sævar Öfjörð Magnússon, Sandeep M A, Stefano Silvestri)
    • Add base_url_path to ModelAdmin so that the default URL structure of app_label/model_name can be overridden (Vu Pham, Khanh Hoang)
    • Add full_url to the API output of ImageRenditionField (Paarth Agarwal)
    • Fix issue where ModelAdmin index listings with export list enabled would show buttons with an incorrect layout (Josh Woodcock)
    • Use InlinePanel's label when available for field comparison label (Sandil Ranasinghe)
    • Drop support for Safari 13 by removing left/right positioning in favour of CSS logical properties (Thibaud Colas)
    • Use FormData instead of jQuery's form.serialize when editing documents or images just added so that additional fields can be better supported (Stefan Hammer)
    • Add informational Codecov status checks for GitHub CI pipelines (Tom Hu)
    • Replace PageRevision with generic Revision model (Sage Abdullah)
    • Make it possible to reuse and customise Wagtail’s fonts with CSS variables (LB (Ben) Johnston)
    • Add better handling and informative developer errors for cross linking URLS (e.g. success after add) in generic views wagtail.admin.views.generic (Matt Westcott)
    • Introduce wagtail.admin.widgets.chooser.BaseChooser to make it easier to build custom chooser inputs (Matt Westcott)
    • Introduce JavaScript chooser module, including a SearchController class which encapsulates the standard pattern of re-rendering the results panel in response to search queries and pagination (Matt Westcott)
    • Migrate Image and Document choosers to ne JavaScript chooser module (Matt Westcott)
    • Add ability to select multiple items at once within bulk actions selections when holding shift on subsequent clicks (Hitansh Shah)
    • Upgrade notification, shown to admins on the dashboard if Wagtail is out of date, will now link to the release notes for the closest minor branch instead of the latest patch (Tibor Leupold)
    • Upgrade notification can now be configured to only show updates when there is a new LTS available via WAGTAIL_ENABLE_UPDATE_CHECK = 'lts' (Tibor Leupold)
    • Implement redesign of the Workflow Status dialog, fixing accessibility issues (Steven Steinwand)
    • Add the ability to change the number of images displayed per page in the image library (Tidiane Dia, with sponsorship from YouGov)
    • Allow users to sort by different fields in the image library (Tidiane Dia, with sponsorship from YouGov)
    • Add prefetch_renditions method to ImageQueryset for performance optimisation on image listings (Tidiane Dia, Karl Hobley)
    • Add ability to define a custom get_field_clean_name method when defining FormField models that extend AbstractFormField (LB (Ben) Johnston)
    • Migrate Home (Dashboard) view to use generic Wagtail class based view (LB (Ben) Johnston)
    • Combine most of Wagtail’s stylesheets into the global core.css file (Thibaud Colas)
    • Add new Breadcrumbs and Tabs to the Wagtail pattern library (Paarth Agarwal)
    • Adopt new Page Editor UI tabs in the workflow history report page (Paarth Agarwal)
    • Update ReportView to extend from generic wagtail.admin.views.generic.models.IndexView (Sage Abdullah)
    • Introduce a wagtail.admin.viewsets.chooser.ChooserViewSet module to serve as a common base implementation for chooser modals (Matt Westcott)
    • Add documentation for wagtail.admin.viewsets.model.ModelViewSet (Matt Westcott)
    • Enhance new breadcrumbs so they can be added to any header or container element (Paarth Agarwal)
    • Adopt new breadcrumbs on the page explorer (listing) view and the page chooser modal, remove legacy breadcrumbs code for move page as no longer used (Paarth Agarwal)
    • Added multi-site support to the API (Sævar Öfjörð Magnússon)
    • Add add_to_admin_menu option for ModelAdmin (Oliver Parker)
    • Implement Fuzzy matching for Elasticsearch (Nick Smith)
    • Rename Page.get_latest_revision_as_page to Page.get_latest_revision_as_object (Sage Abdullah)
    • Cache model permission codenames in PermissionHelper (Tidiane Dia)
    • Selecting a new parent page for moving a page now uses the chooser modal which allows searching (Viggo de Vries)
    • Move get_snippet_edit_handler function to wagtail.admin.panels.get_edit_handler (Sage Abdullah)
    • Add clarity to the search indexing documentation for how boost works when using Postgres with the database search backend (Tibor Leupold)
    • Rename explorer_breadcrumb template tag to breadcrumbs as it is now used in multiple locations (Paarth Agarwal)
    • Updated django-filter version to support 23 (Yuekui)
    • Use .iterator() in a few more places in the admin, to make it more stable on sites with many pages (Andy Babic)
    • Migrate some simple React component files to TypeScript (LB (Ben) Johnston)
    • Deprecate the usage and documentation of the wagtail.contrib.modeladmin.menus.SubMenu class, provide a warning if used directing developers to use wagtail.admin.menu.Menu instead (Matt Westcott)
    • Remove legacy (non-next) breadcrumbs no longer used, remove ModelAdmin usage of breadcrumbs completely (Paarth Agarwal)
    • Replace human-readable-date hover pattern with accessible tooltip variant across all of admin (Bernd de Ridder)
    • Added WAGTAILADMIN_USER_PASSWORD_RESET_FORM setting for overriding the admin password reset form (Michael Karamuth)
    • Prefetch workflow states in edit page view to to avoid queries in other parts of the view/templates that need it (Tidiane Dia)
    • Remove the edit link from edit bird in previews to avoid confusion (Sævar Öfjörð Magnússon)
    • Introduce new template fragment and block level enclosure tags for easier template composition (Thibaud Colas)
    • Add a classnames template tag to easily build up classes from variables provided to a template (Paarth Agarwal)
    • Migrate the dashboard (home) view header to the shared header template and update designs (Paarth Agarwal)
    • Switch all report workflow, redirects, form submissions, site settings views to use Wagtail’s reusable header component (Paarth Agarwal)
    • Update classes and styles for the shared header templates to align with UI guidelines (Paarth Agarwal)
    • Clean up multiple eslint rules usage and configs to align better with the Wagtail coding guidelines (LB (Ben Johnston))
    • Add inline toolbar for Draftail, to avoid clashing with the page’s header (Thibaud Colas)
    • Add command palette in rich text editor to change text format with the keyboard only (Thibaud Colas)
    • Add a live-updating character count to the Draftail rich text editor (Thibaud Colas)
    • Add rich text editor paste to auto-create links (Thibaud Colas)
    • Add rich text editor text shortcuts undo, to allow typing text normally detected as a shortcut (Thibaud Colas)
    • Add support for right-to-left (RTL) languages to the rich text editor (Thibaud Colas)
    • Change rich text editor placeholder to follow the user’s focus on empty blocks (Thibaud Colas)
    • Add rich text editor empty block highlight by showing their block type (Thibaud Colas)
    • Add ability to split a rich text field and insert a StreamField block at the same time (Jacob Topp-Mugglestone)
    • Make ModelAdmin InspectView footer actions consistent with other parts of the UI (Thibaud Colas)
    • Introduce a new auto-updating preview panel inside the page editor (Sage Abdullah)
    • Add support for Twitter and other text-only embeds in Draftail embed previews (Iman Syed, Paarth Agarwal)
    • Use new modal dialog component for privacy settings modal (Sage Abdullah)
    • Add menu_item_name to modify MenuItem's name for ModelAdmin (Alexander Rogovskyy, Vu Pham)
    • Add an extra confirmation prompt when deleting pages with a large number of child pages (Jaspreet Singh)
    • Adopt the slim header in page listing views, with buttons moved under the "Actions" dropdown, including addition of translation page in the parent "more" button (Paarth Agarwal)
    • Improve help block styles in Windows High Contrast Mode with less reliance on communication via colour alone (Anuja Verma)
    • Add a bottom border to top messages so they stand out from the header (Anuja Verma)
    • Replace latin abbreviations (i.e. / e.g.) with common English phrases so that documentation is easier to understand (Dominik Lech)
    • Add shortcut for accessing StreamField blocks by block name with new blocks_by_name and first_block_by_name methods on StreamValue (Tidiane Dia, Matt Westcott)
    • Extend support for custom user interface colours across almost all admin colours (Thibaud Colas)
    • Add HTML-aware max_length validation and character count on RichTextField and RichTextBlock (Matt Westcott, Thibaud Colas)
    • Remove undocumented SearchableListMixin (Sage Abdullah)
    • Extract filtering code from ReportView to generic IndexView (Sage Abdullah)
    • Extract unpublish code for pages to generic UnpublishView (Sage Abdullah)
    • Retain other query params in header search behaviour (Sage Abdullah)
    • Remove is_parent kwarg in various page button hooks as this approach is no longer required (Paarth Agarwal)
    • Improve security of redirect imports by adding a file hash (signature) check for so that any tampering of file contents between requests will throw a BadSignature error (Jaap Roes)
    • Refresh designs for Home (Dashboard) site summary panels, use theme spacing and colours, add support for RTL layouts and better support for small devices (Paarth Agarwal, LB (Ben) Johnston)
    • Include all CSS system colours in allowed values in Stylelint's declaration-strict-value rule (Thibaud Colas)
    • Add JavaScript range util for (LB (Ben) Johnston)
    • Allow generic chooser viewsets to support non-model data such as an API endpoint (Matt Wescott)
    • Update all widget styles across the admin UI (Thibaud Colas)
    • Update field styles across forms, with help text consistently under fields, error messages above, and comment buttons to the side (Thibaud Colas)
    • Make all sections of the page editing UI collapsible by default (Thibaud Colas)
    • Update the side panels to prevent overlap with form fields unless necessary (Thibaud Colas)
    • Remove unused change password page, was not removed when account management view was converted to tabs (Paarth Agarwal)
    • Rework layout of login and password reset pages to ensure main id on main element (for skip link) and consistent DOM layout for h1 header (Paarth Agarwal, LB (Ben) Johnston)
    • Adopt new design, including logo, for login and password reset pages (Paarth Agarwal, LB (Ben) Johnston)
    • Remove usage of inline script to focus on the username field, instead use autofocus (LB (Ben) Johnston)
    • Improve organisation of the settings reference page in the documentation (Akash Kumar Sen)
    • Added path and re_path decorators to the RoutablePageMixin module which emulate their Django URL utils equivalent, redirect re_path to the original route decorator (Tidiane Dia)
    • BaseChooser widget now provides a Telepath adapter that's directly usable for any subclasses that use the chooser widget and modal JS as-is with no customisations (Matt Westcott)
    • Implement the new chooser widget styles as part of the page editor redesign (Thibaud Colas)
    • Update base Draftail/TextField form designs as part of the page editor redesign (Thibaud Colas)
    • Move commenting trigger to inline toolbar and move block splitting to the block toolbar and command palette only in Draftail (Thibaud Colas)
    • Pages are now locked when they are scheduled for publishing (Karl Hobley)
    • Simplify page chooser views by converting to class-based views (Matt Westcott)
    • Fix: Typo in ResumeWorkflowActionFormatter message (Stefan Hammer)
    • Fix: Throw a meaningful error when saving an image to an unrecognised image format (Christian Franke)
    • Fix: Remove extra padding for headers with breadcrumbs on mobile viewport (Steven Steinwand)
    • Fix: Ensure that custom document or image models support custom tag models (Matt Westcott)
    • Fix: Ensure comments use translated values for their placeholder text (Stefan Hammer)
    • Fix: Ensure the upgrade notification, shown to admins on the dashboard if Wagtail is out of date, content is translatable (LB (Ben) Johnston)
    • Fix: Show the re-ordering option to users that have permission to publish pages within the page listing (Stefan Hammer)
    • Fix: Ensure default sidebar branding (bird logo) is not cropped in RTL mode (Steven Steinwand)
    • Fix: Add an accessible label to the image focal point input when editing images (Lucie Le Frapper)
    • Fix: Remove unused header search JavaScript on the redirects import page (LB (Ben) Johnston)
    • Fix: Ensure non-square avatar images will correctly show throughout the admin (LB (Ben) Johnston)
    • Fix: Ignore translations in test files and re-include some translations that were accidentally ignored (Stefan Hammer)
    • Fix: Show alternative message when no page types are available to be created (Jaspreet Singh)
    • Fix: Prevent error on sending notifications for the legacy moderation process when no user was specified (Yves Serrano)
    • Fix: Ensure aria-label is not set on locale selection dropdown within page chooser modal as it was a duplicate of the button contents (LB (Ben Johnston))
    • Fix: Revise the ModelAdmin title column behaviour to only link to 'edit' if the user has the correct permissions, fallback to the 'inspect' view or a non-clickable title if needed (Stefan Hammer)
    • Fix: Ensure that DecimalBlock preserves the Decimal type when retrieving from the database (Yves Serrano)
    • Fix: When no snippets are added, ensure the snippet chooser modal would have the correct URL for creating a new snippet (Matt Westcott)
    • Fix: ngettext in Wagtail's internal JavaScript internationalisation utilities now works (LB (Ben) Johnston)
    • Fix: Ensure the linting/formatting npm scripts work on Windows (Anuja Verma)
    • Fix: Fix display of dates in exported xlsx files on macOS Preview and Numbers (Jaap Roes)
    • Fix: Make progress bars’ progress visible in forced colors mode (Anuja Verma)
    • Fix: Make checkboxes visible in forced colors mode (Anuja Verma)
    • Fix: Display the correct color for icons in forced colors mode (Anuja Verma)
    • Fix: Add a border around modal dialogs so they can be identified in forced colors mode (Anuja Verma)
    • Fix: Remove outdated reference to 30-character limit on usernames in help text (minusf)
    • Fix: Resolve multiple form submissions index listing page layout issues including title not being visible on mobile and interaction with large tables (Paarth Agarwal)
    • Fix: Ensure ModelAdmin single selection lists show correctly with Django 4.0 form template changes (Coen van der Kamp)
    • Fix: Ensure icons within help blocks have accessible contrasting colours, and links have a darker colour plus underline to indicate they are links (Paarth Agarwal)
    • Fix: Ensure consistent sidebar icon position whether expanded or collapsed (Scott Cranfill)
    • Fix: Avoid redirects import error if the file had lots of columns (Jaap Roes)
    • Fix: Resolve accessibility and styling issues with the expanding status panel (Sage Abdullah)
    • Fix: Avoid 503 AttributeError when an empty search param q= is combined with other filters in the Images index view (Paritosh Kabra)
    • Fix: Fix error with string representation of FormSubmission not returning a string (LB (Ben) Johnston)
    • Fix: Ensure disabled buttons are distinguishable from active buttons in forced colors mode (Anuja Verma)
    • Fix: Revise usage of extra_actions in new changes to shared header template to avoid invalid template variable usage (Paarth Agarwal)
    • Fix: Ensure that bulk actions correctly support models with non-integer primary keys (id) (LB (Ben) Johnston)
    • Fix: Make it possible to toggle collapsible panels in the edit UI with the keyboard (Thibaud Colas)
    • Fix: Re-implement checkbox styles so the checked state is visible in forced colors mode (Thibaud Colas)
    • Fix: Re-implement switch component styles so the checked state is visible in forced colors mode (Thibaud Colas)
    • Fix: Always render select widgets consistently regardless of where they are in the admin (Thibaud Colas)
    • Fix: Make sure input labels and always take up the available space (Thibaud Colas)
    • Fix: Correctly style BooleanBlock within StructBlock (Thibaud Colas)
    • Fix: Make sure comment icons can’t overlap with help text (Thibaud Colas)
    • Fix: Make it possible to scroll input fields in admin on safari mobile (Thibaud Colas)
    • Fix: Stop rich text fields from overlapping with sidebar (Thibaud Colas)
    • Fix: Prevent comment buttons from overlapping with fields (Thibaud Colas)
    • Fix: Resolve MySQL search compatibility issue with Django 4.1 (Andy Chosak)
    • Fix: Ensure that the fields on login and password reset forms are visible in forced colors mode (Paarth Agarwal)
    • Fix: Missing a outline on dropdown content and malformed tooltip arrow in forced colors mode (Anuja Verma, LB (Ben) Johnston)
    • Fix: Layout issues with reports (including form submissions listings) on md device widths (Akash Kumar Sen, LB (Ben) Johnston)
    • Fix: Layout issue with page explorer's inner header item on small device widths (Akash Kumar Sen)
    • Fix: Ensure that BaseSiteSetting / BaseGenericSetting objects can be pickled (Andy Babic)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.1(Jun 16, 2022)

    • Add warning when WAGTAILADMIN_BASE_URL is not configured (Matt Westcott)
    • Fix: Ensure TabbedInterface will not show a tab if no panels are visible due to permissions (Paarth Agarwal)
    • Fix: Specific snippets list language picker was not properly styled (Sage Abdullah)
    • Fix: Ensure the upgrade notification request for the latest release, which can be disabled via the WAGTAIL_ENABLE_UPDATE_CHECK sends the referrer origin with strict-origin-when-cross-origin (Karl Hobley)
    • Fix: Fix misaligned spinner icon on page action button (LB (Ben Johnston))
    • Fix: Ensure radio buttons / checkboxes display vertically under Django 4.0 (Matt Westcott)
    • Fix: Prevent failures when splitting blocks at the start or end of a block, or with highlighted text (Jacob Topp-Mugglestone)
    • Fix: Allow scheduled publishing to complete when the initial editor did not have publish permission (Matt Westcott)
    • Fix: Stop emails from breaking when WAGTAILADMIN_BASE_URL is absent due to the request object not being available (Matt Westcott)
    • Fix: Make try/except on sending email less broad so that legitimate template rendering errors are exposed (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v3.0(May 16, 2022)

    • Phase out special-purpose panel types (StreamFieldPanel, RichTextFieldPanel, ImageChooserPanel, DocumentChooserPanel, PageChooserPanel, SnippetChooserPanel) in favour of FieldPanel (Matt Westcott)
    • Implement splitting of rich text blocks within StreamField (Jacob Topp-Mugglestone)
    • Add support for image rendition prefetching (Andy Babic)
    • Upgrade ESLint and Stylelint configurations to latest shared Wagtail configs (Thibaud Colas, Paarth Agarwal)
    • Major updates to frontend tooling; move Node tooling from Gulp to Webpack, upgrade to Node v16 and npm v8, eslint v8, stylelint v14 and others (Thibaud Colas)
    • Change comment headers’ date formatting to use browser APIs instead of requiring a library (LB (Ben Johnston))
    • Lint with flake8-comprehensions and flake8-assertive, including adding a pre-commit hook for these (Mads Jensen, Dan Braghis)
    • Switch the Wagtail branding font to a system font stack (Steven Steinwand, Paarth Agarwal)
    • Add black configuration and reformat code using it (Dan Braghis)
    • Remove UI code for legacy browser support: polyfills, IE11 workarounds, Modernizr (Thibaud Colas)
    • Remove redirect auto-creation recipe from documentation as this feature is now supported in Wagtail core (Andy Babic)
    • Remove IE11 warnings (Gianluca De Cola)
    • Remove the legacy Hallo rich text editor as it has moved to an external package (LB (Ben Johnston))
    • Increase the size of checkboxes throughout the UI, and simplify their alignment (Steven Steinwand)
    • Adopt MyST for parsing documentation written in Markdown, replaces recommonmark (LB (Ben Johnston), Thibaud Colas)
    • Installing docs extras requirements in CircleCI so issues with the docs requirements are picked up earlier (Thibaud Colas)
    • Remove core usage of jinjalint and migrate to curlylint to resolve dependency incompatibility issues (Thibaud Colas)
    • Switch focus outlines implementation to :focus-visible for cross-browser consistency (Paarth Agarwal)
    • Remove most uppercased text styles from admin UI (Paarth Agarwal)
    • Convert all UI code to CSS logical properties for Right-to-Left (RTL) language support (Thibaud Colas)
    • Migrate multiple documentation pages from RST to MD - including the editor's guide (Vibhakar Solanki, LB (Ben Johnston), Shwet Khatri)
    • Add documentation for defining custom form validation on models used in Wagtail's modelAdmin (Serafeim Papastefanos)
    • Update README.md logo to work for GitHub dark mode (Paarth Agarwal)
    • Avoid an unnecessary page reload when pressing enter within the header search bar (Images, Pages, Documents) (Riley de Mestre)
    • Removed unofficial length parameter on If-Modified-Since header in sendfile_streaming_backend which was only used by IE (Mariusz Felisiak)
    • Add Pinterest support to the list of default oEmbed providers (Dharmik Gangani)
    • Update Jinja2 template support for Jinja2 3.x (Seb Brown)
    • Add ability for StreamField to use JSONField to store data, rather than TextField (Sage Abdullah)
    • Replace content_json TextField with content JSONField in PageRevision (Sage Abdullah)
    • Remove replace_text management command (Sage Abdullah)
    • Replace data_json TextField with data JSONField in BaseLogEntry (Sage Abdullah)
    • Split up linting / formatting tasks in Makefile into client and server components (Hitansh Shah)
    • Add support for embedding Instagram reels (Luis Nell)
    • Use Django’s JavaScript catalog feature to manage translatable strings in JavaScript (Karl Hobley)
    • Add a page_description to the Page model, to provide help text for a given page type (Kalob Taulien, Thibaud Colas, Matt Westcott, Stefan Hammer)
    • Add trimmed attribute to all blocktrans tags, so spacing is more reliable in translated strings (Harris Lapiroff)
    • Add documentation that describes how to use ModelAdmin to manage Tags (Abdulmajeed Isa)
    • Rename the setting BASE_URL (undocumented) to WAGTAILADMIN_BASE_URL and add to documentation, BASE_URL will be removed in a future release (Sandil Ranasinghe)
    • Validate to and from email addresses within form builder pages when using AbstractEmailForm (Jake Howard)
    • Add WAGTAILIMAGES_RENDITION_STORAGE setting to allow an alternative image rendition storage (Heather White)
    • Add wagtail_update_image_renditions management command to regenerate image renditions or purge all existing renditions (Hitansh Shah, Onno Timmerman, Damian Moore)
    • Fully remove the legacy sidebar, with slim sidebar replacing it for all users (Thibaud Colas)
    • Add support for adding custom attributes for link menu items in the slim sidebar (Thibaud Colas)
    • Implement new slim page editor header with breadcrumb (Steven Steinwand, Karl Hobley)
    • Add the ability for choices to be separated by new lines instead of just commas within the form builder, commas will still be supported if used (Abdulmajeed Isa)
    • Add internationalisation UI to modeladmin (Andrés Martano)
    • Support chunking in PageQuerySet.specific() to reduce memory consumption (Andy Babic)
    • Implement new tabs design across the admin interface (Steven Steinwand)
    • Move page meta information from the header to a new status side panel component inside of the page editing UI (Steven Steinwand, Karl Hobley)
    • Add useful help text to Tag fields to advise what content is allowed inside tags, including when TAG_SPACES_ALLOWED is True or False (Abdulmajeed Isa)
    • Change AbstractFormSubmission's form_data to use JSONField to store form submissions (Jake Howard)
    • Add image duplicate detection on upload (Tidiane Dia, with sponsorship from The Motley Fool)
    • Add a system font stack for monospace fonts (Rishank Kanaparti)
    • Fix: When using simple_translations ensure that the user is redirected to the page edit view when submitting for a single locale (Mitchel Cabuloy)
    • Fix: When previewing unsaved changes to Form pages, ensure that all added fields are correctly shown in the preview (Joshua Munn)
    • Fix: When Documents (e.g. PDFs) have been configured to be served inline via WAGTAILDOCS_CONTENT_TYPES & WAGTAILDOCS_INLINE_CONTENT_TYPES ensure that the filename is correctly set in the Content-Disposition header so that saving the files will use the correct filename (John-Scott Atlakson)
    • Fix: Improve the contrast of the “Remember me” checkbox against the login page’s background (Steven Steinwand)
    • Fix: Group permission rows with custom permissions no longer have extra padding (Steven Steinwand)
    • Fix: Make sure the focus outline of checkboxes is fully around the outer border (Steven Steinwand)
    • Fix: Consistently set aria-haspopup="menu" for all sidebar menu items that have sub-menus (LB (Ben Johnston))
    • Fix: Make sure aria-expanded is always explicitly set as a string in sidebar (LB (Ben Johnston))
    • Fix: Use a button element instead of a link for page explorer menu item, for the correct semantics and behavior (LB (Ben Johnston))
    • Fix: Make sure the “Title” column label can be translated in the page chooser and page move UI (Stephanie Cheng Smith)
    • Fix: Remove redundant role="main" attributes on <main> elements causing HTML validation issues (Luis Espinoza)
    • Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
    • Fix: Stop skipping heading levels in Wagtail welcome page (Jesse Menn)
    • Fix: Add missing lang attributes to <html> elements (James Ray)
    • Fix: Avoid 503 server error when entering tags over 100chars and instead show a user facing validation error (Vu Pham, Khanh Hoang)
    • Fix: Ensure thumb_col_header_text is correctly used by ThumbnailMixin within ModelAdmin as the column header label (Kyle J. Roux)
    • Fix: Page copy in Wagtail admin ignores exclude_fields_in_copy (John-Scott Atlakson)
    • Fix: Translation key IntegrityError when publishing pages with translatable Orderables that were copied without being published (Kalob Taulien, Dan Braghis)
    • Fix: Ignore GenericRelation when copying pages (John-Scott Atlakson)
    • Fix: Implement ARIA tabs markup and keyboards interactions for admin tabs (Steven Steinwand)
    • Fix: Ensure wagtail updatemodulepaths works when system locale is not UTF-8 (Matt Westcott)
    • Fix: Re-establish focus trap for Pages explorer in slim sidebar (Thibaud Colas)
    • Fix: Ensure the icon font loads correctly when STATIC_URL is not "/static/" (Jacob Topp-Mugglestone)
    Source code(tar.gz)
    Source code(zip)
  • v3.0rc3(Apr 29, 2022)

    Changes from 3.0rc2:

    • Design review fixes
    • Added API documentation for panels
    • Hide 'More actions' dropdown when bulk actions are active
    • Defer making use_json_field argument on StreamField required until Wagtail 5.0
    • Document requirement for Sqlite JSON1 extension
    • Remove is_searchable check from shared header template
    • Ensure wagtail updatemodulepaths works when system locale is not UTC
    Source code(tar.gz)
    Source code(zip)
  • v3.0rc2(Apr 22, 2022)

    Changes from rc1:

    • Fix HelpPanel
    • Update release notes and wagtail updatemodulepaths command to cover rename from wagtail.core.utils to wagtail.coreutils
    • Reinstate comments notification toggle
    • Update translations
    Source code(tar.gz)
    Source code(zip)
  • v3.0rc1(Apr 14, 2022)

    • Phase out special-purpose panel types (StreamFieldPanel, RichTextFieldPanel, ImageChooserPanel, DocumentChooserPanel, PageChooserPanel, SnippetChooserPanel) in favour of FieldPanel (Matt Westcott)
    • Implement splitting of rich text blocks within StreamField (Jacob Topp-Mugglestone)
    • Add support for image rendition prefetching (Andy Babic)
    • Upgrade ESLint and Stylelint configurations to latest shared Wagtail configs (Thibaud Colas, Paarth Agarwal)
    • Major updates to frontend tooling; move Node tooling from Gulp to Webpack, upgrade to Node v16 and npm v8, eslint v8, stylelint v14 and others (Thibaud Colas)
    • Change comment headers’ date formatting to use browser APIs instead of requiring a library (LB (Ben Johnston))
    • Lint with flake8-comprehensions and flake8-assertive, including adding a pre-commit hook for these (Mads Jensen, Dan Braghis)
    • Switch the Wagtail branding font to a system font stack (Steven Steinwand, Paarth Agarwal)
    • Add black configuration and reformat code using it (Dan Braghis)
    • Remove UI code for legacy browser support: polyfills, IE11 workarounds, Modernizr (Thibaud Colas)
    • Remove redirect auto-creation recipe from documentation as this feature is now supported in Wagtail core (Andy Babic)
    • Remove IE11 warnings (Gianluca De Cola)
    • Remove the legacy Hallo rich text editor as it has moved to an external package (LB (Ben Johnston))
    • Increase the size of checkboxes throughout the UI, and simplify their alignment (Steven Steinwand)
    • Adopt MyST for parsing documentation written in Markdown, replaces recommonmark (LB (Ben Johnston), Thibaud Colas)
    • Installing docs extras requirements in CircleCI so issues with the docs requirements are picked up earlier (Thibaud Colas)
    • Remove core usage of jinjalint and migrate to curlylint to resolve dependency incompatibility issues (Thibaud Colas)
    • Switch focus outlines implementation to :focus-visible for cross-browser consistency (Paarth Agarwal)
    • Remove most uppercased text styles from admin UI (Paarth Agarwal)
    • Convert all UI code to CSS logical properties for Right-to-Left (RTL) language support (Thibaud Colas)
    • Migrate multiple documentation pages from RST to MD - including the editor's guide (Vibhakar Solanki, LB (Ben Johnston), Shwet Khatri)
    • Add documentation for defining custom form validation on models used in Wagtail's modelAdmin (Serafeim Papastefanos)
    • Update README.md logo to work for GitHub dark mode (Paarth Agarwal)
    • Avoid an unnecessary page reload when pressing enter within the header search bar (Images, Pages, Documents) (Riley de Mestre)
    • Removed unofficial length parameter on If-Modified-Since header in sendfile_streaming_backend which was only used by IE (Mariusz Felisiak)
    • Add Pinterest support to the list of default oEmbed providers (Dharmik Gangani)
    • Update Jinja2 template support for Jinja2 3.x (Seb Brown)
    • Add ability for StreamField to use JSONField to store data, rather than TextField (Sage Abdullah)
    • Replace content_json TextField with content JSONField in PageRevision (Sage Abdullah)
    • Remove replace_text management command (Sage Abdullah)
    • Replace data_json TextField with data JSONField in BaseLogEntry (Sage Abdullah)
    • Split up linting / formatting tasks in Makefile into client and server components (Hitansh Shah)
    • Add support for embedding Instagram reels (Luis Nell)
    • Use Django’s JavaScript catalog feature to manage translatable strings in JavaScript (Karl Hobley)
    • Add a page_description to the Page model, to provide help text for a given page type (Kalob Taulien, Thibaud Colas, Matt Westcott)
    • Add trimmed attribute to all blocktrans tags, so spacing is more reliable in translated strings (Harris Lapiroff)
    • Add documentation that describes how to use ModelAdmin to manage Tags (Abdulmajeed Isa)
    • Rename the setting BASE_URL (undocumented) to WAGTAILADMIN_BASE_URL and add to documentation, BASE_URL will be removed in a future release (Sandil Ranasinghe)
    • Validate to and from email addresses within form builder pages when using AbstractEmailForm (Jake Howard)
    • Add WAGTAILIMAGES_RENDITION_STORAGE setting to allow an alternative image rendition storage (Heather White)
    • Add wagtail_update_image_renditions management command to regenerate image renditions or purge all existing renditions (Hitansh Shah, Onno Timmerman, Damian Moore)
    • Fully remove the legacy sidebar, with slim sidebar replacing it for all users (Thibaud Colas)
    • Add support for adding custom attributes for link menu items in the slim sidebar (Thibaud Colas)
    • Implement new slim page editor header with breadcrumb (Steven Steinwand, Karl Hobley)
    • Add the ability for choices to be separated by new lines instead of just commas within the form builder, commas will still be supported if used (Abdulmajeed Isa)
    • Add internationalisation UI to modeladmin (Andrés Martano)
    • Support chunking in PageQuerySet.specific() to reduce memory consumption (Andy Babic)
    • Implement new tabs design across the admin interface (Steven Steinwand)
    • Move page meta information from the header to a new status side panel component inside of the page editing UI (Steven Steinwand, Karl Hobley)
    • Add useful help text to Tag fields to advise what content is allowed inside tags, including when TAG_SPACES_ALLOWED is True or False (Abdulmajeed Isa)
    • Change AbstractFormSubmission's form_data to use JSONField to store form submissions (Jake Howard)
    • Add image duplicate detection on upload (Tidiane Dia, with sponsorship from The Motley Fool)
    • Add a system font stack for monospace fonts (Rishank Kanaparti)
    • Fix: When using simple_translations ensure that the user is redirected to the page edit view when submitting for a single locale (Mitchel Cabuloy)
    • Fix: When previewing unsaved changes to Form pages, ensure that all added fields are correctly shown in the preview (Joshua Munn)
    • Fix: When Documents (e.g. PDFs) have been configured to be served inline via WAGTAILDOCS_CONTENT_TYPES & WAGTAILDOCS_INLINE_CONTENT_TYPES ensure that the filename is correctly set in the Content-Disposition header so that saving the files will use the correct filename (John-Scott Atlakson)
    • Fix: Improve the contrast of the “Remember me” checkbox against the login page’s background (Steven Steinwand)
    • Fix: Group permission rows with custom permissions no longer have extra padding (Steven Steinwand)
    • Fix: Make sure the focus outline of checkboxes is fully around the outer border (Steven Steinwand)
    • Fix: Consistently set aria-haspopup="menu" for all sidebar menu items that have sub-menus (LB (Ben Johnston))
    • Fix: Make sure aria-expanded is always explicitly set as a string in sidebar (LB (Ben Johnston))
    • Fix: Use a button element instead of a link for page explorer menu item, for the correct semantics and behavior (LB (Ben Johnston))
    • Fix: Make sure the “Title” column label can be translated in the page chooser and page move UI (Stephanie Cheng Smith)
    • Fix: Remove redundant role="main" attributes on <main> elements causing HTML validation issues (Luis Espinoza)
    • Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
    • Fix: Stop skipping heading levels in Wagtail welcome page (Jesse Menn)
    • Fix: Add missing lang attributes to <html> elements (James Ray)
    • Fix: Avoid 503 server error when entering tags over 100chars and instead show a user facing validation error (Vu Pham, Khanh Hoang)
    • Fix: Ensure thumb_col_header_text is correctly used by ThumbnailMixin within ModelAdmin as the column header label (Kyle J. Roux)
    • Fix: Page copy in Wagtail admin ignores exclude_fields_in_copy (John-Scott Atlakson)
    • Fix: Translation key IntegrityError when publishing pages with translatable Orderables that were copied without being published (Kalob Taulien, Dan Braghis)
    • Fix: Ignore GenericRelation when copying pages (John-Scott Atlakson)
    • Fix: Implement ARIA tabs markup and keyboards interactions for admin tabs (Steven Steinwand)
    Source code(tar.gz)
    Source code(zip)
  • v2.16.2(Apr 11, 2022)

    • Fix: Update django-treebeard dependency to 4.5.1 or above (Serafeim Papastefanos)
    • Fix: Fix permission error when sorting pages having page type restrictions (Thijs Kramer)
    • Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
    • Fix: Ensure that all descendant pages are logged when deleting a page, not just immediate children (Jake Howard)
    • Fix: Refactor FormPagesListView in wagtail.contrib.forms to avoid undefined locale variable when subclassing (Dan Braghis)
    • Fix: Page copy in Wagtail admin ignores exclude_fields_in_copy (John-Scott Atlakson)
    • Fix: Translation key IntegrityError when publishing pages with translatable Orderables that were copied without being published (Kalob Taulien, Dan Braghis)
    • Fix: Ignore GenericRelation when copying pages (John-Scott Atlakson)
    • Fix: Ensure 'next' links from image / document listings do not redirect back to partial AJAX view (Matt Westcott)
    • Fix: Skip creation of automatic redirects when page cannot be routed (Matt Westcott)
    • Fix: Prevent JS errors on locale switcher in page chooser (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v2.15.5(Apr 11, 2022)

    • Fix: Allow bulk publishing of pages without revisions (Andy Chosak)
    • Fix: Ensure that all descendant pages are logged when deleting a page, not just immediate children (Jake Howard)
    • Fix: Translation key IntegrityError when publishing pages with translatable Orderables that were copied without being published (Kalob Taulien, Dan Braghis)
    • Fix: Ignore GenericRelation when copying pages (John-Scott Atlakson)
    Source code(tar.gz)
    Source code(zip)
  • v2.16.1(Feb 11, 2022)

    • Fix: Ensure that correct sidebar submenus open when labels use non-Latin alphabets (Matt Westcott)
    • Fix: Fix issue where invalid bulk action URLs would incorrectly trigger a server error (500) instead of a valid not found (404) (Ihor Marhitych)
    • Fix: Fix issue where bulk actions would not work for object IDs greater than 999 when USE_THOUSAND_SEPARATOR (Dennis McGregor)
    • Fix: Set cookie for sidebar collapsed state to "SameSite: lax" (LB (Ben Johnston))
    • Fix: Prevent error on creating automatic redirects for sites with non-standard ports (Matt Westcott)
    • Fix: Restore ability to customise admin UI colours via CSS (LB (Ben Johnston))
    Source code(tar.gz)
    Source code(zip)
  • v2.15.4(Feb 11, 2022)

    • Fix: Fix issue where invalid bulk action URLs would incorrectly trigger a server error (500) instead of a valid not found (404) (Ihor Marhitych)
    • Fix: Fix issue where bulk actions would not work for object IDs greater than 999 when USE_THOUSAND_SEPARATOR (Dennis McGregor)
    • Fix: Fix syntax when logging image rendition generation (Jake Howard)
    Source code(tar.gz)
    Source code(zip)
  • v2.16(Feb 7, 2022)

    • Added support for Django 4.0
    • Removed support for Django 3.0 and 3.1
    • Removed support for Python 3.6
    • Added persistent IDs for ListBlock items, allowing commenting and improvements to revision comparisons (Matt Westcott, Tidjani Dia, with sponsorship from NHS)
    • Added Aging Pages report (Tidjani Dia)
    • Added automatic redirect creation feature (Andy Babic, with sponsorship from The National Archives)
    • Added page_slug_changed signal for pages (Andy Babic)
    • Add more SketchFab oEmbed patterns for models (Tom Usher)
    • Add collapse option to StreamField, StreamBlock, and ListBlock which will load all sub-blocks initially collapsed (Matt Westcott)
    • Private pages can now be fetched over the API (Nabil Khalil)
    • Added alias_of field to the pages API (Dmitrii Faiazov)
    • Add support for Azure CDN and Front Door front-end cache invalidation (Tomasz Knapik)
    • Improved styling of workflow timeline modal view (Tidjani Dia)
    • Add secondary actions menu in edit page headers (Tidjani Dia)
    • Removed WOFF fonts
    • Add system check for missing core Page fields in search_fields (LB (Ben Johnston))
    • Improve CircleCI frontend & backend build caches, add automated browser accessibility test suite in CircleCI (Thibaud Colas)
    • Add a 'remember me' checkbox to the admin sign in form, if unticked (default) the auth session will expire if the browser is closed (Michael Karamuth, Jake Howard)
    • When returning to image or document listing views after editing, filters (collection or tag) are now remembered (Tidjani Dia)
    • Improve the visibility of field error messages, in Windows high-contrast mode and out (Jason Attwood)
    • Improve implementations of visually-hidden text in explorer and main menu toggle (Martin Coote)
    • Add locale labels to page listings (Dan Braghis)
    • Add locale labels to page reports (Dan Braghis)
    • Change release check domain to releases.wagtail.org (Jake Howard)
    • Add the user who submitted a page for moderation to the "Awaiting your review" homepage summary panel (Tidiane Dia)
    • When moving pages, default to the current parent section (Tidjani Dia)
    • admin/expanding_formset.js has been renamed to admin/expanding-formset.js (LB (Ben Johnston))
    • Change docs URL to docs.wagtail.org (Jake Howard)
    • Update links to wagtail.io to point to new domain wagtail.org (Jake Howard)
    • Add borders to TypedTableBlock to help visualize rows and columns (Scott Cranfill)
    • Set default submit button label on generic create views to 'Create' instead of 'Save' (Matt Westcott)
    • Improve display of image listing for long image titles (Krzysztof Jeziorny)
    • Use SVG icons in admin home page site summary items (Jérôme Lebleu)
    • Ensure site summary items wrap on smaller devices on the admin home page (Jérôme Lebleu)
    • Rework Workflow task chooser modal to align with other chooser modals, using consistent pagination and leveraging class based views (Matt Westcott)
    • Implemented a locale switcher on the forms listing page in the admin (Dan Braghis)
    • Implemented a locale switcher on the page chooser modal (Dan Braghis)
    • Implemented the wagtail_site template tag for Jinja2 (Vladimir Tananko)
    • Change webmaster to website administrator in the admin (Naomi Morduch Toubman)
    • Added documentation for creating custom submenus in the admin menu (Sævar Öfjörð Magnússon)
    • Choice blocks in StreamField now show label rather than value when collapsed (Jérôme Lebleu)
    • Added documentation to clarify configuration of user-uploaded files (Cynthia Kiser)
    • Change security contact address to [email protected] (Jake Howard)
    • Fix: Accessibility fixes for Windows high contrast mode; Dashboard icons colour and contrast, help/error/warning blocks for fields and general content, side comment buttons within the page editor, dropdown buttons (Sakshi Uppoor, Shariq Jamil, LB (Ben Johnston), Jason Attwood)
    • Fix: Rename additional 'spin' CSS animations to avoid clashes with other libraries (Kevin Gutiérrez)
    • Fix: default_app_config deprecations for Django >= 3.2 (Tibor Leupold)
    • Fix: Refresh page from database on create before passing to hooks. Page aliases get correct first_published_date and last_published_date (Dan Braghis)
    • Fix: Additional login form fields from WAGTAILADMIN_USER_LOGIN_FORM are now rendered correctly (Michael Karamuth)
    • Fix: Icon only button styling issue on small devices where height would not be set correctly (Vu Pham)
    • Fix: Add padding to the Draftail editor to ensure ol items are not cut off (Khanh Hoang)
    • Fix: Prevent opening choosers multiple times for Image, Page, Document, Snippet (LB (Ben Johnston))
    • Fix: Ensure subsequent changes to styles files are picked up by Gulp watch (Jason Attwood)
    • Fix: Ensure that programmatic page moves are correctly logged as 'move' and not 'reorder' in some cases (Andy Babic)
    Source code(tar.gz)
    Source code(zip)
  • v2.16rc2(Jan 28, 2022)

    Changes from 2.16rc1:

    • Formalised Django 4.0 support (Matt Westcott)
    • Changed security contact address to [email protected] (Jake Howard)
    • Fix: Implement correct check for SQLite installations without full-text search support (Matt Westcott)
    • Fix: Prevent error on redirects with route path set for a non-RoutablePageMixin page, and removed field from form (Andy Babic)

    Full 2.16 changelog:

    • Added support for Django 4.0
    • Removed support for Django 3.0 and 3.1
    • Removed support for Python 3.6
    • Added persistent IDs for ListBlock items, allowing commenting and improvements to revision comparisons (Matt Westcott, Tidjani Dia, with sponsorship from NHS)
    • Added Aging Pages report (Tidjani Dia)
    • Added automatic redirect creation feature (Andy Babic, with sponsorship from The National Archives)
    • Added page_slug_changed signal for pages (Andy Babic)
    • Add more SketchFab oEmbed patterns for models (Tom Usher)
    • Add collapse option to StreamField, StreamBlock, and ListBlock which will load all sub-blocks initially collapsed (Matt Westcott)
    • Private pages can now be fetched over the API (Nabil Khalil)
    • Added alias_of field to the pages API (Dmitrii Faiazov)
    • Add support for Azure CDN and Front Door front-end cache invalidation (Tomasz Knapik)
    • Improved styling of workflow timeline modal view (Tidjani Dia)
    • Add secondary actions menu in edit page headers (Tidjani Dia)
    • Removed WOFF fonts
    • Add system check for missing core Page fields in search_fields (LB (Ben Johnston))
    • Improve CircleCI frontend & backend build caches, add automated browser accessibility test suite in CircleCI (Thibaud Colas)
    • Add a 'remember me' checkbox to the admin sign in form, if unticked (default) the auth session will expire if the browser is closed (Michael Karamuth, Jake Howard)
    • When returning to image or document listing views after editing, filters (collection or tag) are now remembered (Tidjani Dia)
    • Improve the visibility of field error messages, in Windows high-contrast mode and out (Jason Attwood)
    • Improve implementations of visually-hidden text in explorer and main menu toggle (Martin Coote)
    • Add locale labels to page listings (Dan Braghis)
    • Add locale labels to page reports (Dan Braghis)
    • Change release check domain to releases.wagtail.org (Jake Howard)
    • Add the user who submitted a page for moderation to the "Awaiting your review" homepage summary panel (Tidiane Dia)
    • When moving pages, default to the current parent section (Tidjani Dia)
    • admin/expanding_formset.js has been renamed to admin/expanding-formset.js (LB (Ben Johnston))
    • Change docs URL to docs.wagtail.org (Jake Howard)
    • Update links to wagtail.io to point to new domain wagtail.org (Jake Howard)
    • Add borders to TypedTableBlock to help visualize rows and columns (Scott Cranfill)
    • Set default submit button label on generic create views to 'Create' instead of 'Save' (Matt Westcott)
    • Improve display of image listing for long image titles (Krzysztof Jeziorny)
    • Use SVG icons in admin home page site summary items (Jérôme Lebleu)
    • Ensure site summary items wrap on smaller devices on the admin home page (Jérôme Lebleu)
    • Rework Workflow task chooser modal to align with other chooser modals, using consistent pagination and leveraging class based views (Matt Westcott)
    • Implemented a locale switcher on the forms listing page in the admin (Dan Braghis)
    • Implemented a locale switcher on the page chooser modal (Dan Braghis)
    • Implemented the wagtail_site template tag for Jinja2 (Vladimir Tananko)
    • Change webmaster to website administrator in the admin (Naomi Morduch Toubman)
    • Added documentation for creating custom submenus in the admin menu (Sævar Öfjörð Magnússon)
    • Choice blocks in StreamField now show label rather than value when collapsed (Jérôme Lebleu)
    • Added documentation to clarify configuration of user-uploaded files (Cynthia Kiser)
    • Change security contact address to [email protected] (Jake Howard)
    • Fix: Accessibility fixes for Windows high contrast mode; Dashboard icons colour and contrast, help/error/warning blocks for fields and general content, side comment buttons within the page editor, dropdown buttons (Sakshi Uppoor, Shariq Jamil, LB (Ben Johnston), Jason Attwood)
    • Fix: Rename additional 'spin' CSS animations to avoid clashes with other libraries (Kevin Gutiérrez)
    • Fix: default_app_config deprecations for Django >= 3.2 (Tibor Leupold)
    • Fix: Refresh page from database on create before passing to hooks. Page aliases get correct first_published_date and last_published_date (Dan Braghis)
    • Fix: Additional login form fields from WAGTAILADMIN_USER_LOGIN_FORM are now rendered correctly (Michael Karamuth)
    • Fix: Icon only button styling issue on small devices where height would not be set correctly (Vu Pham)
    • Fix: Add padding to the Draftail editor to ensure ol items are not cut off (Khanh Hoang)
    • Fix: Prevent opening choosers multiple times for Image, Page, Document, Snippet (LB (Ben Johnston))
    • Fix: Ensure subsequent changes to styles files are picked up by Gulp watch (Jason Attwood)
    • Fix: Ensure that programmatic page moves are correctly logged as 'move' and not 'reorder' in some cases (Andy Babic)
    Source code(tar.gz)
    Source code(zip)
  • v2.15.3(Jan 26, 2022)

  • v2.11.9(Jan 24, 2022)

  • v2.16rc1(Jan 21, 2022)

    • Removed support for Django 3.0 and 3.1
    • Removed support for Python 3.6
    • Added persistent IDs for ListBlock items, allowing commenting and improvements to revision comparisons (Matt Westcott, Tidjani Dia, with sponsorship from NHS)
    • Added Aging Pages report (Tidjani Dia)
    • Added automatic redirect creation feature (Andy Babic, with sponsorship from The National Archives)
    • Added page_slug_changed signal for pages (Andy Babic)
    • Add more SketchFab oEmbed patterns for models (Tom Usher)
    • Add collapse option to StreamField, StreamBlock, and ListBlock which will load all sub-blocks initially collapsed (Matt Westcott)
    • Private pages can now be fetched over the API (Nabil Khalil)
    • Added alias_of field to the pages API (Dmitrii Faiazov)
    • Add support for Azure CDN and Front Door front-end cache invalidation (Tomasz Knapik)
    • Improved styling of workflow timeline modal view (Tidjani Dia)
    • Add secondary actions menu in edit page headers (Tidjani Dia)
    • Removed WOFF fonts
    • Add system check for missing core Page fields in search_fields (LB (Ben Johnston))
    • Improve CircleCI frontend & backend build caches, add automated browser accessibility test suite in CircleCI (Thibaud Colas)
    • Add a 'remember me' checkbox to the admin sign in form, if unticked (default) the auth session will expire if the browser is closed (Michael Karamuth, Jake Howard)
    • When returning to image or document listing views after editing, filters (collection or tag) are now remembered (Tidjani Dia)
    • Improve the visibility of field error messages, in Windows high-contrast mode and out (Jason Attwood)
    • Improve implementations of visually-hidden text in explorer and main menu toggle (Martin Coote)
    • Add locale labels to page listings (Dan Braghis)
    • Add locale labels to page reports (Dan Braghis)
    • Change release check domain to releases.wagtail.org (Jake Howard)
    • Add the user who submitted a page for moderation to the "Awaiting your review" homepage summary panel (Tidiane Dia)
    • When moving pages, default to the current parent section (Tidjani Dia)
    • admin/expanding_formset.js has been renamed to admin/expanding-formset.js (LB (Ben Johnston))
    • Change docs URL to docs.wagtail.org (Jake Howard)
    • Update links to wagtail.io to point to new domain wagtail.org (Jake Howard)
    • Add borders to TypedTableBlock to help visualize rows and columns (Scott Cranfill)
    • Set default submit button label on generic create views to 'Create' instead of 'Save' (Matt Westcott)
    • Improve display of image listing for long image titles (Krzysztof Jeziorny)
    • Use SVG icons in admin home page site summary items (Jérôme Lebleu)
    • Ensure site summary items wrap on smaller devices on the admin home page (Jérôme Lebleu)
    • Rework Workflow task chooser modal to align with other chooser modals, using consistent pagination and leveraging class based views (Matt Westcott)
    • Implemented a locale switcher on the forms listing page in the admin (Dan Braghis)
    • Implemented a locale switcher on the page chooser modal (Dan Braghis)
    • Implemented the wagtail_site template tag for Jinja2 (Vladimir Tananko)
    • Change webmaster to website administrator in the admin (Naomi Morduch Toubman)
    • Added documentation for creating custom submenus in the admin menu (Sævar Öfjörð Magnússon)
    • Choice blocks in StreamField now show label rather than value when collapsed (Jérôme Lebleu)
    • Added documentation to clarify configuration of user-uploaded files (Cynthia Kiser)
    • Fix: Accessibility fixes for Windows high contrast mode; Dashboard icons colour and contrast, help/error/warning blocks for fields and general content, side comment buttons within the page editor, dropdown buttons (Sakshi Uppoor, Shariq Jamil, LB (Ben Johnston), Jason Attwood)
    • Fix: Rename additional 'spin' CSS animations to avoid clashes with other libraries (Kevin Gutiérrez)
    • Fix: default_app_config deprecations for Django >= 3.2 (Tibor Leupold)
    • Fix: Refresh page from database on create before passing to hooks. Page aliases get correct first_published_date and last_published_date (Dan Braghis)
    • Fix: Additional login form fields from WAGTAILADMIN_USER_LOGIN_FORM are now rendered correctly (Michael Karamuth)
    • Fix: Icon only button styling issue on small devices where height would not be set correctly (Vu Pham)
    • Fix: Add padding to the Draftail editor to ensure ol items are not cut off (Khanh Hoang)
    • Fix: Prevent opening choosers multiple times for Image, Page, Document, Snippet (LB (Ben Johnston))
    • Fix: Ensure subsequent changes to styles files are picked up by Gulp watch (Jason Attwood)
    • Fix: Ensure that programmatic page moves are correctly logged as 'move' and not 'reorder' in some cases (Andy Babic)
    Source code(tar.gz)
    Source code(zip)
  • v2.15.2(Jan 18, 2022)

    • Fix: CVE-2022-21683 - Comment reply notifications sent to incorrect users (Ihor Marhitych, Jacob Topp-Mugglestone)
    • Fix: Transform operations in Filter.run() when image has been re-oriented (Justin Michalicek)
    • Fix: Remove extraneous header action buttons when creating or editing workflows and tasks (Matt Westcott)
    • Fix: Ensure that bulk publish actions pick up the latest draft revision (Matt Westcott)
    • Fix: Ensure the checkbox_aria_label is used correctly in the Bulk Actions checkboxes (Vu Pham)
    • Fix: Prevent error on MySQL search backend when searching three or more terms (Aldán Creo)
    • Fix: Allow wagtail.search app migrations to complete on versions of SQLite without full-text search support (Matt Westcott)
    • Fix: Update Pillow dependency to allow 9.x (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
  • v2.15.1(Nov 11, 2021)

    • Fix: Fix syntax when logging image rendition generation (Jake Howard)
    • Fix: Increase version range for django-filter dependency (Serafeim Papastefanos)
    • Fix: Prevent bulk action checkboxes from displaying on page reports and other non-explorer listings (Matt Westcott)
    • Fix: Fix errors on publishing pages via bulk actions (Matt Westcott)
    • Fix: Fix csrf_token issue when using the Approve or Unlock buttons on pages on the Wagtail admin home (Matt Westcott)
    Source code(tar.gz)
    Source code(zip)
Owner
Wagtail
The powerful Python CMS for modern websites
Wagtail
Flask-SQLAlchemy implementation of nested/threaded comment replies.

Threaded comments using Common Table Expressions (CTE) for a MySQL Flask blog or CMS Credits to peterspython Also read more about the implementation h

ONDIEK ELIJAH OCHIENG 5 Nov 12, 2022
Django CMS Project for quicksetup with minimal installation process.

Django CMS Project for quicksetup with minimal installation process.

Dipankar Chowdhury 3 Mar 24, 2022
An open source CMS, in python and integrable in Django

Python CMS based on the Django Framework

Titouan Bénard 0 Sep 10, 2021
Backend routes and database for an abstract theoretical app that relates a database of courses, users, and assignments.

Backend routes and database for an abstract theoretical app that relates a database of courses, users, and assignments.

Sean Wiesner 0 Dec 27, 2021
A modular, high performance, headless e-commerce platform built with Python, GraphQL, Django, and ReactJS.

Saleor Commerce Customer-centric e-commerce on a modern stack A headless, GraphQL-first e-commerce platform delivering ultra-fast, dynamic, personaliz

Mirumee Labs 17.8k Jan 07, 2023
CMS framework for Django

Created by Stephen McDonald Overview Mezzanine is a powerful, consistent, and flexible content management platform. Built using the Django framework,

Stephen McDonald 4.6k Dec 29, 2022
Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System called the Kotti CMS.

Kotti Kotti is a high-level, Pythonic web application framework based on Pyramid and SQLAlchemy. It includes an extensible Content Management System c

Kotti 394 Jan 07, 2023
Library Management system designed for managing and operating various aspects of a library

Proposal This proposal is written to clarify the project work of Information Systems, assigned to us as an individual task in order to tackle the case

Prawal 1 Oct 27, 2021
Simple yet powerful and really extendable application for managing a blog within your Django Web site.

Django Blog Zinnia Simple yet powerful and really extendable application for managing a blog within your Django Web site. Zinnia has been made for pub

Julien Fache 2.1k Dec 24, 2022
用Hexo的方式管理WordPress(使用Github Actions自动更新文章到WordPress)

方圆小站Github仓库 ---start--- 目录(2021年02月17日更新) 《刺杀小说家》一个勇士屠恶龙救苍生的故事 衡水的中学为高考服务,996.icu为人民企业家服务 轻薄的代价(纪念不足两岁MacBook轻薄本的陨落) PP鸭最佳替代品!《图压》批量压缩图片而不损失画质,支持JPG,

zhaoolee 166 Jan 06, 2023
A Django-based CMS with a focus on extensibility and concise code

FeinCMS - An extensible Django-based CMS When was the last time, that a pre-built software package you wanted to use got many things right, but in the

FeinCMS 847 Jan 07, 2023
CSM: Construction Safety Management system

CSM: Construction Safety Management system 1. 서비스 소개 개요: 공사현장에서의 최적의 안전진단기술을 통한 고도화된 시스템으로 개선하고자 함 목표: 안전 관련 주요 시각데이터를 Cross-Domain으로 활용하여 통합 안전 관리기술의

5 Jul 29, 2022
Journey is a journaling app where users can create their own journal and entries in it!

Journey is a journaling app where users can create their own journal and entries in it!

Hieu Ma 8 Dec 12, 2021
Crypt Wiki - VimWiki with added support for encryption/decryption

Crypt Wiki - VimWiki with added support for encryption/decryption This project is meant to solve an issue I have ran into recently. I wanted to have a

Adrian Costin 6 Dec 18, 2022
Random tarot card generator + rudimentary Django CMS

TAROT JUICER This is a rudimentary Django-based CMS which dynamically presents tarot-related content placed onto unconventional but familiar contexts

Kyle Rafa Lazaro 7 Apr 26, 2022
Website for PyCon

PyCon 2019 Web Site Built by the Python Community atop the Django web framework. Rather than use this as the basis for your conference site directly,

PyCon 155 Nov 05, 2022
Set of Web-backend projects to implement micro-blogging site

Mini-Twitter This repository contains a set of projects covered for CPSC-449 Web-Backend development under the guidance of Prof. Kenytt Avery at CSU,

1 Nov 07, 2021
A full stack e-learning application, this is the backend using django restframework and docker.

DevsPrime API API Service backing client interfaces Technologies Python 3.9 : Base programming language for development Bash Scripting : Create conven

Nnabue Favour Chukwuemeka 1 Oct 21, 2021
A self-hosted application that lets you create podcast RSS feeds from YouTube playlists

Playlist2Podcast A self-hosted application that lets you create podcast RSS feeds from YouTube playlists. What Does This Do? Takes a list of YouTube p

Simon 12 Nov 14, 2022
Python scripts to interact with the CakeCMS API.

Python scripts to interact with the CakeCMS API. Installation of the python module Prerequisites The cakecms module has to be installed first. Install

Fabian Thomas 3 Jan 31, 2022