docs: update changelog, nicer output for script (#2811)

diff --git a/docs/changelog.rst b/docs/changelog.rst
index 2e97e78..a1410a7 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -11,10 +11,57 @@
 ------------------------------
 
 
+Minor missing functionality added:
+
+* enum: add missing Enum.value property.
+  `#2739 <https://github.com/pybind/pybind11/pull/2739>`_
+
 * Allow thread termination to be avoided during shutdown for CPython 3.7+ via
-  ``.disarm``.
+  ``.disarm`` for ``gil_scoped_acquire``/``gil_scoped_release``.
   `#2657 <https://github.com/pybind/pybind11/pull/2657>`_
 
+
+Build improvements:
+
+* Setup helpers: ``extra_compile_args`` and ``extra_link_args`` automatically set by
+  Pybind11Extension are now prepended, which allows them to be overridden
+  by user-set ``extra_compile_args`` and ``extra_link_args``.
+  `#2808 <https://github.com/pybind/pybind11/pull/2808>`_
+
+* Setup helpers: Don't trigger unused parameter warning.
+  `#2735 <https://github.com/pybind/pybind11/pull/2735>`_
+
+* CMake: Support running with ``--warn-uninitialized`` active.
+  `#2806 <https://github.com/pybind/pybind11/pull/2806>`_
+
+* CMake: Avoid error if included from two submodule directories.
+  `#2804 <https://github.com/pybind/pybind11/pull/2804>`_
+
+* CMake: Fix ``STATIC`` / ``SHARED`` being ignored in FindPython mode.
+  `#2796 <https://github.com/pybind/pybind11/pull/2796>`_
+
+* CMake: Respect the setting for ``CMAKE_CXX_VISIBILITY_PRESET`` if defined.
+  `#2793 <https://github.com/pybind/pybind11/pull/2793>`_
+
+* CMake: Fix issue with FindPython2/FindPython3 not working with ``pybind11::embed``.
+  `#2662 <https://github.com/pybind/pybind11/pull/2662>`_
+
+* CMake: mixing local and installed pybind11's would prioritize the installed
+  one over the local one (regression in 2.6.0).
+  `#2716 <https://github.com/pybind/pybind11/pull/2716>`_
+
+
+Bug fixes:
+
+* Fix invalid access when calling a pybind11 ``__init__`` on a non-pybind11
+  class instance.
+  `#2755 <https://github.com/pybind/pybind11/pull/2755>`_
+
+* The ``type_caster`` for integers does not convert Python objects with
+  ``__int__`` anymore with ``noconvert`` or during the first round of trying
+  overloads.
+  `#2698 <https://github.com/pybind/pybind11/pull/2698>`_
+
 * Fix bug where the constructor of ``object`` subclasses would not throw on
   being passed a Python object of the wrong type.
   `#2701 <https://github.com/pybind/pybind11/pull/2701>`_
@@ -34,19 +81,41 @@
 * Fix ``py::gil_scoped_acquire`` assert with CPython 3.9 debug build.
   `#2683 <https://github.com/pybind/pybind11/pull/2683>`_
 
-* CMake: Fix issue with FindPython2/FindPython3 not working with ``pybind11::embed``.
-  `#2662 <https://github.com/pybind/pybind11/pull/2662>`_
-
-* CMake: mixing local and installed pybind11's would prioritize the installed
-  one over the local one (regression in 2.6.0).
-  `#2716 <https://github.com/pybind/pybind11/pull/2716>`_
-
-* Don't trigger unused parameter warning in ``setup_helpers.py``.
-  `#2735 <https://github.com/pybind/pybind11/pull/2735>`_
-
 * Fix issue with a test failing on PyTest 6.2.
   `#2741 <https://github.com/pybind/pybind11/pull/2741>`_
 
+Warning fixes:
+
+* Fix warning modifying constructor parameter 'flag' that shadows a field of
+  'set_flag' ``[-Wshadow-field-in-constructor-modified]``.
+  `#2780 <https://github.com/pybind/pybind11/pull/2780>`_
+
+* Suppressed some deprecation warnings about old-style
+  ``__init__``/``__setstate__`` in the tests.
+  `#2759 <https://github.com/pybind/pybind11/pull/2759>`_
+
+Valgrind work:
+
+* Fixed various minor memory leaks in pybind11's test suite.
+  `#2758 <https://github.com/pybind/pybind11/pull/2758>`_
+
+* Resolved memory leak in cpp_function initialization when exceptions occurred.
+  `#2756 <https://github.com/pybind/pybind11/pull/2756>`_
+
+* Added a Valgrind build, checking for leaks and memory-related UB, to CI.
+  `#2746 <https://github.com/pybind/pybind11/pull/2746>`_
+
+Compiler support:
+
+* Intel compiler was not activating C++14 support due to a broken define.
+  `#2679 <https://github.com/pybind/pybind11/pull/2679>`_
+
+* Support ICC and NVIDIA HPC SDK in C++17 mode.
+  `#2729 <https://github.com/pybind/pybind11/pull/2729>`_
+
+* Support Intel OneAPI compiler (ICC 20.2) and add to CI.
+  `#2573 <https://github.com/pybind/pybind11/pull/2573>`_
+
 
 
 v2.6.1 (Nov 11, 2020)
diff --git a/tools/make_changelog.py b/tools/make_changelog.py
index 2c8c47c..609ce2f 100755
--- a/tools/make_changelog.py
+++ b/tools/make_changelog.py
@@ -3,7 +3,10 @@
 
 import re
 
-import ghapi.core
+import ghapi.all
+
+from rich import print
+from rich.syntax import Syntax
 
 
 ENTRY = re.compile(
@@ -19,8 +22,10 @@
     re.DOTALL | re.VERBOSE,
 )
 
+print()
 
-api = ghapi.core.GhApi(owner="pybind", repo="pybind11")
+
+api = ghapi.all.GhApi(owner="pybind", repo="pybind11")
 
 issues = api.issues.list_for_repo(labels="needs changelog", state="closed")
 missing = []
@@ -34,17 +39,25 @@
         if not msg.endswith("."):
             msg += "."
 
-        print(msg)
-        print(f"  `#{issue.number} <{issue.html_url}>`_\n")
+        msg += f"\n  `#{issue.number} <{issue.html_url}>`_"
+
+        print(Syntax(msg, "rst", theme="ansi_light"))
+        print()
 
     else:
         missing.append(issue)
 
 if missing:
     print()
-    print("-" * 30)
+    print("[blue]" + "-" * 30)
     print()
 
     for issue in missing:
-        print(f"Missing: {issue.title}")
-        print(f"  {issue.html_url}")
+        print(f"[red bold]Missing:[/red bold][red] {issue.title}")
+        print(f"[red]  {issue.html_url}\n")
+
+    print("[bold]Template:\n")
+    msg = "## Suggested changelog entry:\n\n```rst\n\n```"
+    print(Syntax(msg, "md", theme="ansi_light"))
+
+print()