diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index dda6baf..7fb85fb 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -1,5 +1,42 @@
 # Release Notes
 
+## Version 22.02
+
+Starting with this release, ndn-tools switched to a new versioning scheme:
+`YEAR.MONTH[.REVISION]`.
+
+chunks:
+- Add `--naming-convention` command-line option (Issue #5109)
+- Increase the default segment size to 8000 bytes
+
+dissect:
+- Support `InterestSignature` fields and more types of name components
+- The `Content` field is no longer dissected by default; use the new `--content` option
+  to enable it
+- Minor cosmetic improvements to the tool output
+
+dissect-wireshark:
+- Remove support for obsolete TLV elements
+- Recognize `ForwardingHint` (Issue #4185)
+- Recognize `ParametersSha256DigestComponent`
+- Fix decoding of several TLV elements such as `HopLimit` and `PitToken`
+- Update the TLV type of `IncomingFaceId` (Issue #5185)
+
+peek:
+- Replace `--link-file` option with `--fwhint` and adapt to the new `ForwardingHint`
+  format (Issues #4207, #5187)
+
+poke:
+- Remove deprecated `--force` option; use `--unsolicited` instead
+- Remove deprecated `--identity` and `--digest` options; use `--signing-info` instead
+- Change the short form of `--freshness` to `-f`
+
+pingserver:
+- Remove deprecated `-x` alias for the `--freshness` option
+
+build system:
+- Upgrade `waf` to version 2.0.23
+
 ## Version 0.7.1
 
 The build requirements have been increased to require Clang >= 4.0, Xcode >= 9.0, and Python >= 3.6.
@@ -71,7 +108,8 @@
 poke:
 - Use `PendingInterestHandle` and `RegisteredPrefixHandle` (Issues #4316, #3919)
 
-Various build system and build script improvements.
+build system:
+- Upgrade `waf` to version 2.0.14 and other improvements
 
 ## Version 0.6.2
 
@@ -126,8 +164,8 @@
 - Drop `Selectors` support (Issue #4571)
 - Add `-P/--prefix` option to set `CanBePrefix` in the Interest packet
 
-build scripts:
-- Upgrade `waf` to the latest version and other improvements
+build system:
+- Upgrade `waf` to version 2.0.6 and other improvements
 
 ## Version 0.6
 
@@ -146,16 +184,16 @@
 - Switch to version 2 of certificates, `KeyChain`, and `Validator` (Issue #4089)
 - Compilation fixes (Issue #4259)
 
-peek:
-- Convert use of `Link` into `ForwardingHint` (Issue #4055)
-
 chunks:
-- Make `ndnputchunks` display some output by default. A new `-q` flag makes output
+- Make `ndnputchunks` display some output by default; a new `-q` flag makes the tool
   completely silent, except for errors (Issue #4286)
 - Refactor `ndnputchunks` options handling
 - Reduce initial timeout of iterative version discovery in `ndncatchunks` (Issue #4291)
 - Fix potential `ndncatchunks` crash on exit
 
+peek:
+- Convert use of `Link` into `ForwardingHint` (Issue #4055)
+
 ## Version 0.4
 
 As of this version, NDN Essential Tools require a modern compiler (gcc >= 4.8.2, clang >= 3.4)
@@ -210,7 +248,7 @@
 - Capture and print network NACK packets
 - Update docs to include NACK capture feature
 
-build scripts:
+build system:
 - Enable `-Wextra` by default
 - Fix missing tool name in `configure --help` output
 - Fix compatibility with Python 3
diff --git a/core/version.cpp.in b/core/version.cpp.in
index 7c44aac..8abef00 100644
--- a/core/version.cpp.in
+++ b/core/version.cpp.in
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017,  Arizona Board of Regents.
+/*
+ * Copyright (c) 2014-2022,  Arizona Board of Regents.
  *
  * This file is part of ndn-tools (Named Data Networking Essential Tools).
  * See AUTHORS.md for complete list of ndn-tools authors and contributors.
diff --git a/core/version.hpp b/core/version.hpp
index 440f1bc..03058f6 100644
--- a/core/version.hpp
+++ b/core/version.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2015,  Arizona Board of Regents.
+/*
+ * Copyright (c) 2014-2022,  Arizona Board of Regents.
  *
  * This file is part of ndn-tools (Named Data Networking Essential Tools).
  * See AUTHORS.md for complete list of ndn-tools authors and contributors.
@@ -20,12 +20,13 @@
 #ifndef NDN_TOOLS_CORE_VERSION_HPP
 #define NDN_TOOLS_CORE_VERSION_HPP
 
-#include "common.hpp"
+#include "core/common.hpp"
 
 namespace ndn {
 namespace tools {
 
-/** \brief version of ndn-tools
+/**
+ * \brief The version of ndn-tools.
  */
 extern const char VERSION[];
 
diff --git a/wscript b/wscript
index 5000266..f0c4d6d 100644
--- a/wscript
+++ b/wscript
@@ -3,7 +3,7 @@
 from waflib import Context, Logs, Utils
 import os, subprocess
 
-VERSION = '0.7.1'
+VERSION = '22.02'
 APPNAME = 'ndn-tools'
 GIT_TAG_PREFIX = 'ndn-tools-'
 
@@ -64,11 +64,15 @@
         target='core/version.cpp',
         VERSION_BUILD=VERSION)
 
-    bld.objects(target='core-objects',
-                source=bld.path.ant_glob('core/*.cpp') + ['core/version.cpp'],
-                use='NDN_CXX BOOST',
-                includes='.',
-                export_includes='.')
+    bld.objects(
+        target='core-objects',
+        source=bld.path.find_node('core').ant_glob('*.cpp') + ['core/version.cpp'],
+        use='NDN_CXX BOOST',
+        includes='.',
+        export_includes='.')
+
+    bld.recurse('tools')
+    bld.recurse('tests')
 
     if Utils.unversioned_sys_platform() == 'linux':
         systemd_units = bld.path.ant_glob('systemd/*.in')
@@ -77,9 +81,6 @@
             source=systemd_units,
             target=[u.change_ext('') for u in systemd_units])
 
-    bld.recurse('tools')
-    bld.recurse('tests')
-
     if bld.env.SPHINX_BUILD:
         bld(features='sphinx',
             name='manpages',
