• 
      

    Add release notes for Djblets 6.0.

    Review Request #14759 — Created Jan. 5, 2026 and submitted

    Information

    Djblets
    release-6.x

    Reviewers

    Djblets 6.0 is a large release, featuring caching improvements, new
    dynamic page state injection support, general rate limiting, cache
    locks, layered siteconfig lookups, new templatetag support, and a whole
    lot more.

    This change introduces the release notes for this release, covering
    usage information and examples where appropriate.

    Given how much is going on in this release, sub-sections have been used
    to introduce the major new changes within a module's section, and
    examples have been added to help clarify how most of these work. This
    will be the pattern going forward, and should also help with any AI bots
    that want to learn from our releases.

    Built the docs. Checked for bad links, build errors, and any obvious
    errors in the text.

    Summary ID
    Add release notes for Djblets 6.0.
    Djblets 6.0 is a large release, featureing caching improvements, new dynamic page state injection support, general rate limiting, cache locks, layered siteconfig lookups, new templatetag support, and a whole lot more. This change introduces the release notes for this release, covering usage information and examples where appropriate. Given how much is going on in this release, sub-sections have been used to introduce the major new changes within a module's section, and examples have been added to help clarify how most of these work. This will be the pattern going forward, and should also help with any AI bots that want to learn from our releases.
    24c0dce29e31b108b4835c5333352925a74484a4
    Description From Last Updated

    Typo in description: featureing -> featuring

    david david

    The "featureing" typo in the description was never fixed.

    maubin maubin

    We don't have anything referencing this.

    david david

    This is a little bit confusing. Can you maybe clarify that once the deprecated modules are removed, this dependency should …

    david david

    Grammar here is a bit weird ("TemplateHook are a powerful way")

    david david

    Let's say "switch to using django-assert-queries directly"

    david david

    Typo: cam -> can

    david david

    This should be in a djblets.util.templatetags section, not djblets.util.decorators

    david david

    Typo: code-block: html+django -> code-block:: html+django (needs 2 colons)

    david david

    This reads a bit weird. The section for this says "dynamic page injections", so how about: "New module for dynamic …

    david david

    locked is a method, not a property. This should either be if lock.locked(): or if lock.acquired: (which both accomplish the …

    david david

    This says typelets.symbols.UNSET but the code is using djblets.util.symbols.UNSET, and those are currently not the same thing.

    david david

    This is mixing up two different APIs. We have override_feature_check, that takes in a single feature ID and state (like …

    david david

    This should also document the new trace_id argument.

    david david

    This should say Djblets 8.

    david david

    Underline is too long here.

    david david

    While this works, it seems like django templates would usually be written with as_type="int" (with quotes)

    david david

    It'd be nice to include this in the example below as well.

    maubin maubin

    I feel like the examples flow better if we put this point first, and the keyword args point second.

    maubin maubin

    The argument name in here is obj but then in the body you use author

    david david

    Your get_raw_object_value() method returns a dict with id, but then you're using pk here.

    david david

    Annotation says you return QuerySet but there's no return statement in here.

    david david

    Does this link correctly?

    david david

    This is importing override_feature_checks twice. One was supposed to be override_feature_check.

    david david

    These aren't quite right. The typelets names have Django in them (e.g. SerializableDjangoJSONDict)

    david david
    david
    1. 
        
    2. Show all issues

      Typo in description: featureing -> featuring

    3. docs/releasenotes/5.3.rst (Diff revision 1)
       
       
      Show all issues

      We don't have anything referencing this.

    4. docs/releasenotes/5.3.rst (Diff revision 1)
       
       
       
      Show all issues

      This is a little bit confusing. Can you maybe clarify that once the deprecated modules are removed, this dependency should be used directly instead?

    5. docs/releasenotes/5.3.rst (Diff revision 1)
       
       
       
      Show all issues

      Grammar here is a bit weird ("TemplateHook are a powerful way")

    6. docs/releasenotes/5.3.rst (Diff revision 1)
       
       
      Show all issues

      Let's say "switch to using django-assert-queries directly"

    7. docs/releasenotes/5.3.rst (Diff revision 1)
       
       
      Show all issues

      Typo: cam -> can

    8. docs/releasenotes/5.3.rst (Diff revision 1)
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      This should be in a djblets.util.templatetags section, not djblets.util.decorators

    9. docs/releasenotes/5.3.rst (Diff revision 1)
       
       
      Show all issues

      Typo: code-block: html+django -> code-block:: html+django (needs 2 colons)

    10. 
        
    chipx86
    david
    1. 
        
    2. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
       
      Show all issues

      This reads a bit weird. The section for this says "dynamic page injections", so how about: "New module for dynamic page state injection into templates"?

    3. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
      Show all issues

      locked is a method, not a property. This should either be if lock.locked(): or if lock.acquired: (which both accomplish the same thing).

    4. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
       
       
       
      Show all issues

      This says typelets.symbols.UNSET but the code is using djblets.util.symbols.UNSET, and those are currently not the same thing.

      1. Going to make that module just forward on to typelets, like we did with djblets.util.typing.

    5. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      This is mixing up two different APIs.

      We have override_feature_check, that takes in a single feature ID and state (like you have here), or override_feature_checks, which takes in a dict of states for multiple features.

      We should include docs for both of those here.

    6. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
       
      Show all issues

      This should also document the new trace_id argument.

    7. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
      Show all issues

      This should say Djblets 8.

    8. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
       
      Show all issues

      Underline is too long here.

    9. docs/releasenotes/6.0.rst (Diff revision 2)
       
       
       
       
      Show all issues

      While this works, it seems like django templates would usually be written with as_type="int" (with quotes)

      1. The Djblets template tags support sets those as strings, directly. If we do as_type="int", we get the string '"int"', which leads to:

        django.template.exceptions.TemplateSyntaxError: as_type="int" is not supported
        
    10. 
        
    chipx86
    maubin
    1. 
        
    2. Show all issues

      The "featureing" typo in the description was never fixed.

    3. docs/releasenotes/6.0.rst (Diff revision 3)
       
       
      Show all issues

      It'd be nice to include this in the example below as well.

    4. docs/releasenotes/6.0.rst (Diff revision 3)
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      I feel like the examples flow better if we put this point first, and the keyword args point second.

    5. 
        
    chipx86
    david
    1. 
        
    2. docs/releasenotes/6.0.rst (Diff revision 4)
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      The argument name in here is obj but then in the body you use author

    3. docs/releasenotes/6.0.rst (Diff revision 4)
       
       
      Show all issues

      Your get_raw_object_value() method returns a dict with id, but then you're using pk here.

    4. docs/releasenotes/6.0.rst (Diff revision 4)
       
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      Annotation says you return QuerySet but there's no return statement in here.

    5. docs/releasenotes/6.0.rst (Diff revision 4)
       
       
       
      Show all issues

      Does this link correctly?

      1. Yeah, beanbag-docutils gives us wrapping of references.

    6. docs/releasenotes/6.0.rst (Diff revision 4)
       
       
       
      Show all issues

      This is importing override_feature_checks twice. One was supposed to be override_feature_check.

    7. docs/releasenotes/6.0.rst (Diff revision 4)
       
       
       
       
       
       
       
       
       
       
       
       
       
       
       
      Show all issues

      These aren't quite right. The typelets names have Django in them (e.g. SerializableDjangoJSONDict)

    8. 
        
    chipx86
    david
    1. Ship It!
    2. 
        
    maubin
    1. Ship It!
    2. 
        
    chipx86
    Review request changed
    Status:
    Completed
    Change Summary:
    Pushed to release-6.x (5ce70f9)