)]}'
{
  "log": [
    {
      "commit": "569d8f31dbd7934a7e20606db311fcfb1e86b59d",
      "tree": "b6334f1f583ce62fdad5aee3e9ee3acd21b0ea54",
      "parents": [
        "a76f5bab5002d6106e612730ed9559c956a5640a"
      ],
      "author": {
        "name": "Ricard Rosson",
        "email": "ricard@groundbits.com",
        "time": "Tue Aug 11 09:02:34 2026 +0100"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Aug 11 18:13:21 2026 -0300"
      },
      "message": "examples/apa102: use fprintf() instead of the kernel _err() macro\n\n_err() is a kernel-internal debug macro from \u003cdebug.h\u003e; it resolves to\nthe kernel-only _err symbol, which an application cannot reference.  In a\nflat build the example therefore fails to link:\n\n  apa102_main.c: undefined reference to `_err\u0027\n\n(observed on xtensa/esp32s3).  Report the failure with fprintf(stderr),\nwhich is what the open() error path a few lines above already does.\n\nSigned-off-by: Ricard Rosson \u003cricard@groundbits.com\u003e\nAssisted-by: Claude Opus 5 (Claude Code)\n"
    },
    {
      "commit": "a76f5bab5002d6106e612730ed9559c956a5640a",
      "tree": "b61040ef780e7a62d27b935d65ffea0c672c0b6c",
      "parents": [
        "3d0d710975b2221f1142dda74d3fd207852ff660"
      ],
      "author": {
        "name": "Ricard Rosson",
        "email": "ricard@groundbits.com",
        "time": "Tue Aug 11 09:02:16 2026 +0100"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Aug 11 18:13:21 2026 -0300"
      },
      "message": "examples/apa102: depend on LEDS_APA102, not LCD_APA102\n\nThis example drives the APA102 LED-strip character driver: it opens\n/dev/leddrv0 and writes an array of struct apa102_ledstrip_s from\n\u003cnuttx/leds/apa102.h\u003e, which is provided by drivers/leds/apa102.c\n(CONFIG_LEDS_APA102).  CONFIG_LCD_APA102 selects an unrelated driver,\ndrivers/lcd/apa102.c, which drives an APA102 matrix as a framebuffer LCD\nand registers no /dev/leddrvN node at all.\n\nThe wrong dependency makes the example unusable either way: with the LED\nstrip driver enabled the example cannot be selected in menuconfig, and\nwith CONFIG_LCD_APA102 the dependency is met but the driver the example\nneeds is absent, so it fails at open().\n\nSigned-off-by: Ricard Rosson \u003cricard@groundbits.com\u003e\nAssisted-by: Claude Opus 5 (Claude Code)\n"
    },
    {
      "commit": "3d0d710975b2221f1142dda74d3fd207852ff660",
      "tree": "56d1b372ec58cba35eb4c1aac9c35a4a08697287",
      "parents": [
        "9827090fa9d47e7277b35880e5f52f6db1c29ec1"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:51:38 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "netutils/paho_mqtt: fixed the header file\n\n- fixed the header file\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "9827090fa9d47e7277b35880e5f52f6db1c29ec1",
      "tree": "e92ce4c5b6c0b430c58654613cbe35b470874204",
      "parents": [
        "af029c0e56fb32c9dcfc88ef4058743b02321e9c"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:49:16 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "videoutils/x264: fixed the header file\n\n- fixed the header file\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "af029c0e56fb32c9dcfc88ef4058743b02321e9c",
      "tree": "6f43c73dbf732fd099c4b89cc49ad582a9d53b8e",
      "parents": [
        "e65738161063cd3bca4697d6ee7b75d4ac655b82"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:46:22 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "testing/drivers/crypto: Fix Kconfig style\n\n- Add TABs\n\n- Fixed the header file\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "e65738161063cd3bca4697d6ee7b75d4ac655b82",
      "tree": "c66f4b9aa7455735c5316c3da4f0b936eb999097",
      "parents": [
        "10fef9d9162de0a983e77332c136d40167c3c08a"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:41:48 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "tee/optee_client: Fix Kconfig style\n\n- Remove spaces from Kconfig\n\n- Add TABs\n\n- Fixed the header file\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "10fef9d9162de0a983e77332c136d40167c3c08a",
      "tree": "f19c37e5488c391ff0619af5bdb4e7b37ce32c63",
      "parents": [
        "e6e968b7061acfa3c579b0fdd8e147fc01938871"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:37:46 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "mlearning/tflite-micro: fixed the header file\n\n- fixed the header file\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "e6e968b7061acfa3c579b0fdd8e147fc01938871",
      "tree": "680fc04a5deb5eb3e7f67061fb4607adf50f089a",
      "parents": [
        "3d06069783c04471e2d2904709ac8131555af3ee"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:34:05 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "math: fixed the header file\n\n - fixed the header file\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "3d06069783c04471e2d2904709ac8131555af3ee",
      "tree": "1615ad4c466c8f098db95317305e34db8505231d",
      "parents": [
        "8e5f3d30d5395db2e48a3440261237aecabb2e36"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:27:09 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "games/NXDoom: Fix Kconfig style\n\n- Remove spaces from Kconfig\n\n- Add TABs\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "8e5f3d30d5395db2e48a3440261237aecabb2e36",
      "tree": "1ab95f2412b49e1ebde730175e4da7409f5a1255",
      "parents": [
        "211f5072398ffa4be60ada24636c4a22133f6abf"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:24:26 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "examples/smf: Fix Kconfig style\n\n- Remove spaces from Kconfig\n\n- Add TABs\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "211f5072398ffa4be60ada24636c4a22133f6abf",
      "tree": "7e393245e66a2e2589e3e79a62e84dad51287eb4",
      "parents": [
        "fec07a1d14ff0ba5543c3628c3c4cc1ad6b33d23"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Tue Aug 11 19:14:38 2026 +0200"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Aug 11 15:38:46 2026 -0400"
      },
      "message": "system: Fix Kconfig style\n\n- Remove spaces from Kconfig\n\n- Add TABs\n\n- Fixed the header file\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "fec07a1d14ff0ba5543c3628c3c4cc1ad6b33d23",
      "tree": "aabd6728303ed8d362286107343fab42a578039f",
      "parents": [
        "ab7e0660d59adc131e1dff5ea41a8729aefd4634"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 10 22:22:26 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 11 11:21:58 2026 +0800"
      },
      "message": "build(deps): bump actions/github-script from 7 to 9\n\nBumps [actions/github-script](https://github.com/actions/github-script) from 7 to 9.\n- [Release notes](https://github.com/actions/github-script/releases)\n- [Commits](https://github.com/actions/github-script/compare/v7...v9)\n\n---\nupdated-dependencies:\n- dependency-name: actions/github-script\n  dependency-version: \u00279\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "ab7e0660d59adc131e1dff5ea41a8729aefd4634",
      "tree": "c95a0cf5cdd34548bc982e2f8734cf42130af8a9",
      "parents": [
        "198b89a81d80168beb4941a70e4fff2834183b4b"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Mon Aug 10 16:24:37 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 11 11:21:43 2026 +0800"
      },
      "message": "nshlib/ifconfig: support \"ifconfig \u003ciface\u003e up|down\"\n\nPreviously \"ifconfig eth0 up\" fell through to the host-IP parsing\nbranch, where inet_addr(\"up\") returns INADDR_NONE, so the address was\nsilently set to 255.255.255.255 and the interface was never brought\nup.  Users had to run the separate \"ifup\"/\"ifdown\" commands.\n\nRecognize the \"up\" and \"down\" tokens explicitly and apply them once\nthe rest of the configuration is in place, so up/down is just another\nkeyword in the argument list as it is in Linux ifconfig.\n\nA bare \"ifconfig \u003ciface\u003e up|down\" needs no special case: the preceding\npatch made the address, netmask, gateway, DNS and DHCP blocks check\nwhether they were asked for, so the command falls through them without\ntouching anything.\n\nThe up/down handling calls netlib_ifup()/netlib_ifdown() from netlib, so\nit stays available regardless of CONFIG_NSH_DISABLE_IFUPDOWN (which only\nstrips the standalone ifup/ifdown commands).\n\nAssisted-by: GitHubCopilot:claude-opus-5\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "198b89a81d80168beb4941a70e4fff2834183b4b",
      "tree": "b3d45488df1114a3cc176c67a3e767339a18023b",
      "parents": [
        "a8d55f4a10078affc7e4f9e30988f0f55a67863a"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Mon Aug 10 16:20:35 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 11 11:21:43 2026 +0800"
      },
      "message": "nshlib/ifconfig: drop the redundant \"argc \u003e 2\" check\n\ncmd_ifconfig() returns early for argc \u003c\u003d 2, so by the time the argument\nloop is reached argc \u003e 2 always holds.  Remove the dead condition and\nunindent the loop.\n\nNo functional change.\n\nAssisted-by: GitHubCopilot:claude-opus-5\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "a8d55f4a10078affc7e4f9e30988f0f55a67863a",
      "tree": "91c1da28e36bbe4c55b5836b55f4c93e81ac914c",
      "parents": [
        "413d2ddbc32abcde25ade549960809d6fcf4d7d3"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Mon Aug 10 16:33:01 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 11 11:21:43 2026 +0800"
      },
      "message": "nshlib/ifconfig: only apply the settings that were asked for\n\ncmd_ifconfig() pushed every setting to the device on each invocation,\nwhether or not the command line carried it, and stopped parsing as soon\nas it saw \"mtu\".  So a command meant to touch one thing quietly rewrote\nthe rest of the interface configuration:\n\n  ifconfig eth0 hw 00:11:22:33:44:55  # clears the address, netmask,\n                                      # gateway and resolver, and kicks\n                                      # off a DHCP request\n  ifconfig eth0 mtu 1500              # same, plus the default route\n  ifconfig eth0 mtu 1500 dns 8.8.8.8  # dns silently ignored\n\nIn detail:\n\n  - the address was written unconditionally.  For IPv6 that read the\n    uninitialized addr6 off the stack and pushed whatever it held into\n    the device; for IPv4 it forced 0.0.0.0.\n  - the netmask fell back to a hard-coded 255.255.255.0, or to\n    ffff:ffff:ffff:ffff:: for IPv6.\n  - the IPv4 gateway was always written, unlike the IPv6 one, so it fell\n    back to INADDR_ANY.\n  - the resolver fell back to that gateway, i.e. to 0.0.0.0.\n  - the DHCP client was started whenever gip was left at zero instead of\n    when \"dhcp\" was asked for, and gip only becomes non-zero when an\n    address or a gateway is parsed.\n  - the \"mtu\" branch returned as soon as netlib_set_mtu() succeeded, so\n    every argument behind it was dropped.\n\nWrite each setting only when the user provided it, or when an address\nis being assigned and the setting belongs to it.  Keeping the address\ncase is deliberate: a freshly assigned address still needs a mask and\na route, so dropping the derived netmask and \"x.x.x.1\" gateway there\nwould be a regression of its own.  DHCP now triggers on the \"dhcp\"\nkeyword, which is the only way to request it.  And with nothing left\nto clobber, the \"mtu\" branch no longer has to bail out early.\n\nThis is how ifconfig behaves elsewhere: Linux net-tools walks the\nargument vector in a single loop where every keyword handler ends in\n\"continue\" and none of them returns, so each keyword is an independent,\nidempotent operation applied in the order it was written.\n\nAs a side effect mip is now only read along the paths that assign it,\nsince the IPv4 gateway fallback only derives an address from mip when\ngip came from hostip.\n\nAssisted-by: GitHubCopilot:claude-opus-5\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "413d2ddbc32abcde25ade549960809d6fcf4d7d3",
      "tree": "fee884ed3f5fee409157aa0fc41d46ee11fe9484",
      "parents": [
        "7043f96fef7a846312bea9a983672c8bf888d7b2"
      ],
      "author": {
        "name": "zhangyuan29",
        "email": "zhangyuan29@xiaomi.com",
        "time": "Wed Jul 08 15:52:54 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 10 16:55:36 2026 -0300"
      },
      "message": "testing/libc/arch_libc: Cover unaligned src/dst copy paths.\n\ntest_strcpy(), test_strncpy() and test_stpcpy() applied the same offset\nto the source and to the destination, so both pointers always shared the\nsame word congruence.  Architecture optimized copy routines take a\ndifferent code path when the two offsets differ: a byte prologue to\nalign the destination, then either a byte fallback or a shift-merge loop\nthat recombines two source words per store.  None of that was reached by\nthe test.\n\nVary the source and destination offsets independently over 0..7 in those\nthree tests, so both the equal congruence (aligned word copy) and the\nunequal congruence (shift-merge) paths are covered, and report both\noffsets on failure so a regression points at the offending combination.\n\nAlso drop the ARCH_TOOLCHAIN_GNU dependency from TESTING_ARCH_LIBC.  The\ntest only uses standard C string functions and perf_gettime(), with no\nGNU specific construct, so it builds with non GNU toolchains such as\nTASKING as well.\n\nImpact: test only, selected by CONFIG_TESTING_ARCH_LIBC (default n).\nDropping the ARCH_TOOLCHAIN_GNU dependency only widens the set of\ntoolchains that may select the test, no existing configuration changes.\n\nTesting: built and ran sim:nsh on Linux x86_64 (Ubuntu 24.04,\ngcc 13.3.0) with CONFIG_TESTING_ARCH_LIBC\u003dy.  strcpy, strncpy and\nstpcpy report PASSED for all 64 offset combinations, and\n\"arch_libc_test Passed\".\n\nAssisted-by: Claude:claude-opus-5\nSigned-off-by: zhangyuan29 \u003czhangyuan29@xiaomi.com\u003e\n"
    },
    {
      "commit": "7043f96fef7a846312bea9a983672c8bf888d7b2",
      "tree": "6720ac3a417bd127983e8b658a176728e380deae",
      "parents": [
        "0b3049b6ca86d8f9a7bc5dcb75d6cfad13770d0a"
      ],
      "author": {
        "name": "dengwenqi",
        "email": "dengwenqi@xiaomi.com",
        "time": "Mon Jul 06 21:59:03 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 10 16:55:36 2026 -0300"
      },
      "message": "testing/libc/arch_libc: Fix out-of-bounds write in memmove test.\n\nThe adjacent overlap case in test_memmove() placed the source at a fixed\ng_buf1 + align + 64 and the destination one size further, so the\ndestination tail reached align + 64 + 2 * size.  g_buf1 is only\nTEST_BUF_SIZE + MAX_ALIGN (528) bytes, so the larger swept sizes ran off\nthe end: align\u003d0 with size\u003d255 writes up to offset 573, that is 46 bytes\npast the object.  AddressSanitizer aborted arch_libctest with a\nglobal-buffer-overflow.\n\nStart the adjacent layout at g_buf1 + align instead.  The tail then\nreaches align + 2 * size, which is at most 7 + 2 * 257 \u003d 521 and stays\ninside g_buf1 for every alignment and boundary size that is swept, while\nstill keeping source and destination exactly adjacent.\n\nImpact: test only, selected by CONFIG_TESTING_ARCH_LIBC (default n).\n\nTesting: built and ran sim:nsh on Linux x86_64 (Ubuntu 24.04,\ngcc 13.3.0) with CONFIG_TESTING_ARCH_LIBC\u003dy.  memmove reports PASSED\nwith no sanitizer report, and \"arch_libc_test Passed\".\n\nAssisted-by: Claude:claude-opus-5\nSigned-off-by: dengwenqi \u003cdengwenqi@xiaomi.com\u003e\n"
    },
    {
      "commit": "0b3049b6ca86d8f9a7bc5dcb75d6cfad13770d0a",
      "tree": "aa1c7ecf0f64b27ee9ca2d0f3e0a67fd2a3d080f",
      "parents": [
        "ed56c56d7b019689dafd708f42abc8a6351b586b"
      ],
      "author": {
        "name": "anjiahao",
        "email": "anjiahao@xiaomi.com",
        "time": "Wed Jul 01 16:02:13 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 10 16:55:36 2026 -0300"
      },
      "message": "testing/libc/arch_libc: Add strchrnul test and sweep size boundaries.\n\nAdd test_strchrnul() and speed_strchrnul(), selected by the new\nCONFIG_TESTING_ARCH_LIBC_STRCHRNUL option, covering the hit, miss and\nNUL cases.\n\nSweep alignment 0..7 and the boundary sizes {0, 1, 7, 8, 9, 15, 16, 17,\n31, 32, 33, 63, 64, 65, 127, 128, 129, 255, 256, 257} in the scan\nfunction tests (memcmp, memchr, strlen, strcmp, strchr, strncmp,\nstrnlen, strrchr) and in memmove.  Those sizes sit on the 8 and 16 byte\nchunk edges and on the sub-word tails, so vectorized (NEON/MVE) and\nword-at-a-time implementations are stressed exactly at their alignment\nand size boundaries instead of only at \"nice\" lengths.  memmove is\nadditionally exercised across four overlap layouts: forward, backward,\ncontained and adjacent.\n\nImpact: test only, selected by CONFIG_TESTING_ARCH_LIBC (default n).\n\nTesting: built and ran qemu-armv7a:nsh (Cortex-A7, generic C\nimplementation) and sim:nsh on Linux x86_64 (Ubuntu 24.04, gcc 13.3.0)\nwith CONFIG_TESTING_ARCH_LIBC\u003dy.  All 16 enabled functions report\nPASSED and \"arch_libc_test Passed\".  These tests pass against the\ngeneric C routines, which establishes the correctness baseline before\narchitecture optimized assembly is introduced.\n\nSigned-off-by: anjiahao \u003canjiahao@xiaomi.com\u003e\n"
    },
    {
      "commit": "ed56c56d7b019689dafd708f42abc8a6351b586b",
      "tree": "fd4a3c0bec2097c33366bf708a98f44c79702a43",
      "parents": [
        "cc8a6c8b851060ff76725ea2afcf973c5f9941d6"
      ],
      "author": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang@xiaomi.com",
        "time": "Fri Mar 13 16:33:37 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 10 16:55:36 2026 -0300"
      },
      "message": "testing/libc/arch_libc: Add tests for all string/memory functions.\n\nThe arch_libc test only covered strcpy, so the architecture optimized\nimplementations of the remaining string and memory routines were never\nexercised by the test suite.\n\nExtend the test to also cover memcpy, memmove, memset, memcmp, memchr,\nstrlen, strcmp, strchr, strncmp, strnlen, strncpy, stpcpy, strcat and\nstrrchr:\n\n* Every function gets a correctness test that sweeps the buffer\n  alignment and the transfer size and compares the result against the\n  expected value.\n* Every function gets a speed test that reports the average cycle count\n  measured with perf_gettime().\n* Every individual test is selected by its own\n  CONFIG_TESTING_ARCH_LIBC_\u003cFUNC\u003e option (default y), so a target can\n  drop the ones it does not need.\n\nImpact: test only.  Nothing is built unless CONFIG_TESTING_ARCH_LIBC\n(default n) is selected, so no existing board configuration changes.\n\nTesting: built and ran sim:nsh on Linux x86_64 (Ubuntu 24.04,\ngcc 13.3.0) with CONFIG_TESTING_ARCH_LIBC\u003dy.  All 15 enabled functions\nreport PASSED and \"arch_libc_test Passed\".\n\nSigned-off-by: Xiang Xiao \u003cxiaoxiang@xiaomi.com\u003e\n"
    },
    {
      "commit": "cc8a6c8b851060ff76725ea2afcf973c5f9941d6",
      "tree": "6e13504a8ae9b8516c1efa45af18efd07928e73e",
      "parents": [
        "680c5ce797ef1419a9570d718f5fa2711d118cbe"
      ],
      "author": {
        "name": "Alan Carvalho de Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Aug 08 15:53:10 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Aug 09 10:43:01 2026 -0300"
      },
      "message": "cmake: Use NUTTX(_DIR/_BINARY_DIR) instead of CMAKE(_SOURCE_DIR/BINARY_DIR)\n\nThis companion change updates the nuttx-apps CMake build to use\nNuttX’s NUTTX_DIR and NUTTX_BINARY_DIR instead of CMAKE_SOURCE_DIR\nand CMAKE_BINARY_DIR, which incorrectly refer to the outermost project\nwhen NuttX is embedded via add_subdirectory(). Since apps/ is itself\nincluded from NuttX’s top-level CMakeLists.txt, these variables were\neffectively being used as references to NuttX’s root and inherited\nthe same bug fixed in the matching NuttX change for #19697. All\nself-referencing uses are replaced while intentionally preserving\nstandalone projects and unrelated custom variables or hardcoded paths.\nThe change affects only the CMake build system, preserves normal\nstandalone behavior, and was tested with sim:nsh both standalone and\nembedded, with apps such as hello and ostest successfully built and\navailable in NSH.\n\nFixes #19697.\n\nAssisted-by: Claude:claude-sonnet-5\nSigned-off-by: Alan Carvalho de Assis \u003cacassis@gmail.com\u003e\n"
    },
    {
      "commit": "680c5ce797ef1419a9570d718f5fa2711d118cbe",
      "tree": "01cd9867014fdda0aadd5a46eef43f51ab54c84f",
      "parents": [
        "1cda63ad0fd5a7339c4018c7f5cefb1e47a4d836"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Sat Aug 08 18:03:38 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Aug 08 16:56:29 2026 -0300"
      },
      "message": "apps/system/adcscope: nxstyle fix Relative files path\n\n- fix Relative file path does not match actual file.\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "1cda63ad0fd5a7339c4018c7f5cefb1e47a4d836",
      "tree": "336d3128e336aaba740824b77e68ea48ff781ebf",
      "parents": [
        "d88aa87e38ee9fba6de6471f87b55eac72ce82a1"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Sat Aug 08 18:00:25 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Aug 08 16:56:29 2026 -0300"
      },
      "message": " apps/tee/optee_client: nxstyle fix Relative files path\n\n- fix Relative file path does not match actual file.\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "d88aa87e38ee9fba6de6471f87b55eac72ce82a1",
      "tree": "95cad18f055131853c354798bdf781f988b5dbac",
      "parents": [
        "9ae5f15073d408272d66d801a97e5f6bebf551fb"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Sat Aug 08 17:56:41 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Aug 08 16:56:29 2026 -0300"
      },
      "message": "apps/interpreters/jimtcl: nxstyle fix Missing file header\n\n- fix Missing file header\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "9ae5f15073d408272d66d801a97e5f6bebf551fb",
      "tree": "fca5400ff5bed98aa9ce93aecd4cefd1a35a8458",
      "parents": [
        "15de50d80c4c31b6342bead85a090f3442c4090a"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Sat Aug 08 17:21:35 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Aug 08 16:56:29 2026 -0300"
      },
      "message": "apps/industry/nxmodbus: nxstyle fix Relative files path\n\n- fix Relative file path does not match actual file.\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "15de50d80c4c31b6342bead85a090f3442c4090a",
      "tree": "191e81510a977d0d85b56abdf14780a310d1740e",
      "parents": [
        "8af42424fa175327067b1c1f0c15b5c8a6bb5b4e"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Sat Aug 08 17:16:34 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Aug 08 16:56:29 2026 -0300"
      },
      "message": "apps/examples/xedge_demo: nxstyle fix Relative files path\n\n- fix Relative file path does not match actual file.\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "8af42424fa175327067b1c1f0c15b5c8a6bb5b4e",
      "tree": "c64f79add34c34fe42aaee0312067ce3860918eb",
      "parents": [
        "82c1e7d9be2a48c8b77e203af438f22ef996001a"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Sat Aug 08 17:13:44 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Aug 08 16:56:29 2026 -0300"
      },
      "message": "apps/examples/smf: nxstyle fix Relative files path\n\n- fix Relative file path does not match actual file.\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "82c1e7d9be2a48c8b77e203af438f22ef996001a",
      "tree": "f46bfec3ffe89688989d0e63a89334dcd5e3302a",
      "parents": [
        "a65a5372f9b3c44820102b7a551aeb9d9435b186"
      ],
      "author": {
        "name": "Justin Hammond",
        "email": "justin@dynam.ac",
        "time": "Fri Aug 07 19:52:13 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 09 03:18:40 2026 +0800"
      },
      "message": "import: Link libnx for graphics applications in a kernel build.\n\nThe link line for applications in a kernel build is libmm, libc and the\nproxies.  libnx is never named, though the export has been shipping it\nall along.  So every application built on NX or NXFONTS fails to link,\nthe nx examples and fbcon alike, with undefined references to the font\nand geometry routines.\n\nName it, ahead of libc since it calls into it, and only when CONFIG_NX\nis set so that configurations without graphics are unaffected.\n\nTested on an EIC7700 EVB in a kernel build: with this, an application\nbuilt on NXFONTS links and runs; without it the same application fails\nat link time.\n\nAssisted-by: Claude:claude-opus-5\nSigned-off-by: Justin Hammond \u003cjustin@dynam.ac\u003e\n"
    },
    {
      "commit": "a65a5372f9b3c44820102b7a551aeb9d9435b186",
      "tree": "edf4d28129a1a8d4ab580c061fb5875fa2980011",
      "parents": [
        "30a028d4e69fc927a257bd08bc1b939d2c2c50d3"
      ],
      "author": {
        "name": "Justin Hammond",
        "email": "justin@dynam.ac",
        "time": "Fri Aug 07 19:52:24 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 09 03:18:28 2026 +0800"
      },
      "message": "examples/fbcon: Do not require a builtin registry to spawn the shell.\n\nfbcon asked the registry of built-in applications for the stack size and\npriority to spawn its shell with.  A kernel build has no such registry:\nits programs are ELF files in a filesystem, which is exactly what the\nposix_spawn() below already handles, PATH search and all.  The lookup\ntherefore fails to compile there.\n\nAsk the registry only where there is one, and take the numbers from this\nexample\u0027s own configuration otherwise.\n\nTested on an EIC7700 EVB in a kernel build: fbcon renders its console on\na 1080p HDMI framebuffer and spawns a shell whose prompt appears on the\nmonitor.\n\nAssisted-by: Claude:claude-opus-5\nSigned-off-by: Justin Hammond \u003cjustin@dynam.ac\u003e\n"
    },
    {
      "commit": "30a028d4e69fc927a257bd08bc1b939d2c2c50d3",
      "tree": "488d93b05d83ff013e988621b7cbd23b4bdf5373",
      "parents": [
        "145e64a5d40a874da1a0f1ab49546152d55d50f4"
      ],
      "author": {
        "name": "Justin Hammond",
        "email": "justin@dynam.ac",
        "time": "Fri Aug 07 16:54:15 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 09 03:18:20 2026 +0800"
      },
      "message": "examples/lvglterm: Let the shell be named something other than nsh.\n\nThe terminal spawned \"nsh\" by a name compiled in, which finds nothing\non a system that installs NSH under another name, as a kernel build\ndoes when NSH is the system\u0027s init: the program is /system/bin/init\nand no \"nsh\" exists at all.  The terminal came up,\ntook keystrokes, and had no shell behind it.\n\nThe name is now configurable and still defaults to \"nsh\", so a bare\nname is looked up on PATH as before and a path is taken as given.\n\nAssisted-by: Claude:claude-opus-5\nSigned-off-by: Justin Hammond \u003cjustin@dynam.ac\u003e\n"
    },
    {
      "commit": "145e64a5d40a874da1a0f1ab49546152d55d50f4",
      "tree": "953a564e70f0f24658e32a5d80d36a5e9923c8cc",
      "parents": [
        "6e61ce7cb7cce474572e32f3f837361ec18f1f62"
      ],
      "author": {
        "name": "Junbo Zheng",
        "email": "zhengjunbo1@xiaomi.com",
        "time": "Tue Aug 04 22:05:26 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Aug 07 21:31:18 2026 +0800"
      },
      "message": "nshlib: boot: guard nsh_getfullpath against NULL argv[1]\n\nA bare `boot` (no argument, argc \u003d\u003d 1) passes argv[1] \u003d\u003d NULL.\nnsh_getfullpath(NULL) returns strdup(g_home) \u003d\u003d \"/\" instead of NULL,\nwhich turned the default-boot path (NULL -\u003e board default image)\ninto \"/\".  board_boot_image(\"/\") then failed with -EINVAL (-22),\npreventing the board from booting.\n\nGuard the nsh_getfullpath() call so NULL passes through unchanged,\nrestoring the original default-boot behavior while still resolving\nrelative paths when an argument is given.\n\nThis fixes the regression introduced by the relative-path support\n```\ncommit fabafbc3615b3d22636bbf33f932578f491bef23 (origin/master, origin/HEAD)\nAuthor: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\nDate:   Fri Jul 24 23:47:44 2026 +0800\n\n    nshlib: add relative image path support in boot command\n\n    cmd_boot passed the image path straight to boardctl(), which resolves\n    it in a context that does not inherit the NSH shell cwd, so relative\n    paths failed and only absolute paths worked. Use nsh_getfullpath() to\n    resolve relative paths against the cwd before calling boardctl().\n\n    Signed-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n```\n\nSigned-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n"
    },
    {
      "commit": "6e61ce7cb7cce474572e32f3f837361ec18f1f62",
      "tree": "341ad713f699c552104908216bd31c9488288142",
      "parents": [
        "2946d7961b7e1e417c852a58e9628d9468cde72e"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Tue Aug 04 09:42:33 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Aug 07 11:24:32 2026 +0800"
      },
      "message": "examples/fdpicxip, testing/fs/xipfs: A DT_NEEDED library is one instance.\n\nBoth the demo and the test asserted that each running instance of a module\ngets its own copy of a library named in DT_NEEDED: two instances adding\ntheir own seed each saw a total of seed*3.\n\nThat was true of the loader that walked DT_NEEDED itself.  The loader now\nhands the work to dlopen(), which returns the object already in the module\nregistry rather than loading a second copy of it, so there is one library\nand one set of its globals, shared by every module that names it.  The\nmodule\u0027s own data stays private per instance, because exec() loads the\nmodule afresh each time.\n\nWhat an instance can still assert on its own is that every add it made\nlanded in the library, so that is what it checks; the totals interleave and\nthe final one counts both.  The test additionally checks the consequences:\nthe library is pinned once rather than once per instance, and its\ndestructor runs once, at the last close, holding what both instances built\nup.\n\nUSER_FAIL_PRIVATE becomes USER_FAIL_SHARED rather than gaining a\ncompanion.  The bit is a private protocol between cxxuser.cpp, which sets\nit, and testing/fs/xipfs, which reads it; nothing else names it, and the\nproperty it used to report no longer exists.\n\nAssisted-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "2946d7961b7e1e417c852a58e9628d9468cde72e",
      "tree": "d4c9d325a6679b3b56ff971f4d20bea4b3faffac",
      "parents": [
        "4f5adbd34698c507e3aa842a213613d455211fac"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Tue Aug 04 09:42:33 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Aug 07 11:24:32 2026 +0800"
      },
      "message": "examples/fdpicxip: Follow the fdpic-embed.py rename.\n\nThe two helper scripts this Makefile names gained a file extension when\ntools/fdpic came into the nuttx tree: checkpatch rejects an executable file\nthat is not .sh, .py or .bat.\n\nAssisted-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "4f5adbd34698c507e3aa842a213613d455211fac",
      "tree": "3bffe4dc7760da05a151e9100f6a74ed19d55bfe",
      "parents": [
        "baef9ebf6e1424afcc855a3fd6c34941b7b6609e"
      ],
      "author": {
        "name": "Alan Carvalho de Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Aug 06 09:27:45 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Aug 06 18:19:31 2026 -0300"
      },
      "message": "system/readline: Fix espace sequence returning to user console\n\nThis commit fixes the issue:\nhttps://github.com/apache/nuttx-apps/issues/3680\n\nSigned-off-by: Alan C. Assis \u003cacassis@gmail.com\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "baef9ebf6e1424afcc855a3fd6c34941b7b6609e",
      "tree": "807851061cfea7d8a1a5897b466e0fe6c34d8a87",
      "parents": [
        "2aebae7400afd34c271ffc4e053edfca4390646f"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Mon Aug 03 00:53:59 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Aug 06 13:01:26 2026 -0300"
      },
      "message": "wireless/lora_pkt_fwd: add Semtech UDP packet forwarder and lora command\n\nForward the packets received by a LoRa concentrator to a LoRaWAN network\nserver with the Semtech UDP protocol version 2, and turn the downlink\nrequests of the server into transmissions.  The server may be given as a name\nand is resolved with getaddrinfo().  No floating point is used anywhere.\n\nThe same program provides the \"lora\" command, which mirrors the AT command\nset of the vendor gateway firmwares, plus tx, which sends a single packet and\nso brings a gateway up against any LoRa receiver without a network server.\n\nNothing here names a chip: the types and the commands are the device\nindependent gateway ones of the nuttx repository,\nnuttx/wireless/lpwan/lora_gw.h.  The application depends on LPWAN_LORA_GW,\nthe symbol such a driver selects, so until one is merged nothing here is\ncompiled.\n\nAssisted-by: Claude Code 4.8\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "2aebae7400afd34c271ffc4e053edfca4390646f",
      "tree": "cb057e8084207d5d2280fabca136c1022f88a739",
      "parents": [
        "f2e9924b6a79cb597afcd917c3be9ae4b0acb088"
      ],
      "author": {
        "name": "zhangning21",
        "email": "zhangning21@xiaomi.com",
        "time": "Sun Aug 02 19:26:09 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Thu Aug 06 17:22:54 2026 +0800"
      },
      "message": "ci: Support pull request dependencies via Depends-On.\n\nAllow pull requests targeting master to declare same- and\ncross-repository dependencies. Parse declarations with a tested Python\nhelper, apply exact dependency commits before the existing build matrix,\nand rerun heavy CI only when an edited description changes the dependency\nstate.\n\nKeep fork builds read-only and use a trusted workflow_run to validate\nartifacts and post per-build dependency results. Keep the apps workflow\nconsistent with the implementation already merged in apache/nuttx.\n\nAssisted-by: Kiro:gpt-5.6-sol\nSigned-off-by: zhangning21 \u003czhangning21@xiaomi.com\u003e\n"
    },
    {
      "commit": "f2e9924b6a79cb597afcd917c3be9ae4b0acb088",
      "tree": "eca35a7af57ad87d2eacdc00cd9b2f247b383937",
      "parents": [
        "eea8384ff577f8f323309ae568eaaf9ad29d9c8d"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Aug 04 21:37:03 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Aug 06 01:39:13 2026 +0800"
      },
      "message": "testing/ostest: set STACKSIZE for the standalone ELF build\n\nThe CMake build passed no STACKSIZE, so kernel-mode ELF loading fell\nback to CONFIG_ELF_STACKSIZE, which may exceed the initial user heap.\nUse CONFIG_DEFAULT_TASK_STACKSIZE as the Makefile does.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "eea8384ff577f8f323309ae568eaaf9ad29d9c8d",
      "tree": "a256d396dade6ac306571591a64fdc20e90a5052",
      "parents": [
        "3da1f4e94bff25959d264df934665b6ba2472d93"
      ],
      "author": {
        "name": "Martin Krasula",
        "email": "mkrasula@elektroline.cz",
        "time": "Tue Aug 04 07:48:48 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Aug 05 21:52:16 2026 +0800"
      },
      "message": "testing/ostest: Add timed mutex timeout regression tests\n\nVerify that a mutex remains reusable after its last waiter times out\nand that ownership is transferred when another waiter remains queued.\n\nSigned-off-by: Martin Krasula \u003cmkrasula@elektroline.cz\u003e\n"
    },
    {
      "commit": "3da1f4e94bff25959d264df934665b6ba2472d93",
      "tree": "5f3f897c0d5210dbd88db9ff115b1df9158d3cbb",
      "parents": [
        "5a73a6f124adcb6a9b3e3a73dcccc1bb4ad3c2ca"
      ],
      "author": {
        "name": "renjianguang",
        "email": "renjianguang@xiaomi.com",
        "time": "Fri Jun 20 16:27:52 2025 +0800"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Wed Aug 05 12:35:26 2026 +0200"
      },
      "message": "nxplayer: add tone cmd implementation\n\nPlay 20 seconds tone:\n    1.nxplayer\n    2.nxplayer\u003e device pcm0p\n    3.nxplayer\u003e tone 48000 20\n\nSigned-off-by: renjianguang \u003crenjianguang@xiaomi.com\u003e\n"
    },
    {
      "commit": "5a73a6f124adcb6a9b3e3a73dcccc1bb4ad3c2ca",
      "tree": "1e296a4a3146d7475330d23c0ab9d468702f473d",
      "parents": [
        "40c3e33bcba2c5a305a2538763d13f8228bf7846"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Sun Aug 02 12:31:21 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 04 12:48:54 2026 +0800"
      },
      "message": "games/NXDoom: drop the assignments left over from dehacked\n\nSix statements assign a variable to itself, which clang rejects:\n\n  src/doom/f_finale.c:637:16: error: explicitly assigning value of\n  variable of type \u0027const char *\u0027 to itself [-Werror,-Wself-assign]\n    637 |       lumpname \u003d (lumpname);\n\nChocolate DOOM wraps those strings in DEH_String() so that a dehacked\npatch can substitute them. The port has no dehacked support, and the\nmacro went away with it, leaving the parentheses behind. Two comments\nthat only described the substitution go as well.\n\nNothing changes at run time. GCC does not warn about this, so the\nconfigurations built so far never noticed; the ones built with clang\ndo, and they fail because the CI treats warnings as errors.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "40c3e33bcba2c5a305a2538763d13f8228bf7846",
      "tree": "730c92f6a236db7f597fd3573be0ac871a4defb5",
      "parents": [
        "d3de432a2c269a581c9c71d81760417c8401da67"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Aug 03 22:22:30 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 04 10:38:00 2026 +0800"
      },
      "message": "build(deps): bump docker/login-action from 4.5.1 to 4.6.0\n\nBumps [docker/login-action](https://github.com/docker/login-action) from 4.5.1 to 4.6.0.\n- [Release notes](https://github.com/docker/login-action/releases)\n- [Commits](https://github.com/docker/login-action/compare/abd2ef45e78c5afb21d64d4ca52ee8550d9572c7...dbcb813823bdd20940b903addbd779551569679f)\n\n---\nupdated-dependencies:\n- dependency-name: docker/login-action\n  dependency-version: 4.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d3de432a2c269a581c9c71d81760417c8401da67",
      "tree": "c0d497e89b0251d3055f05a8aeda91026fb66440",
      "parents": [
        "f1033082f9b6199ce9ba216501a40dc883c3a068"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Aug 03 12:26:13 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Aug 04 10:37:33 2026 +0800"
      },
      "message": "examples/sotest: Check that a library can be opened twice.\n\ndlopen() of an already loaded library used to fail, so nothing exercised\nwhat happens when two callers hold the same object.\n\nOpen the library a second time, check the same handle comes back, close\none of the two and check the library is still usable through the other.\n\nNeeds the counterpart change in nuttx; without it the second dlopen()\nreturns NULL and this reports it.\n\nAssisted-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "f1033082f9b6199ce9ba216501a40dc883c3a068",
      "tree": "3b378d6289b76435b3e9a80239aa7f2d5fcfa0a9",
      "parents": [
        "795ea8d534a71a3eecebd367938366b359c1d3f0"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Aug 02 19:05:33 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 03 09:22:39 2026 -0300"
      },
      "message": "netutils/dropbear, testing/nand_sim: do not use fork() to run in background.\n\nNeither of these wants fork() semantics.  Both reach for fork() only to put\nwork in the background, and each has a NuttX-native way to do that, so\nneither needs a fork primitive at all -- which matters once apache/nuttx#19562\nmakes ARCH_HAVE_FORK conditional on the architecture implementing POSIX\nfork().\n\nnetutils/dropbear: the port already routes every fork-then-exec through\nvfork(), because sysoptions.h selects DROPBEAR_VFORK when HAVE_FORK is\nundefined and the port leaves it undefined.  spawn_command() in dbutil.c and\nboth call sites in scp.c follow that switch.  The one exception is the\ndaemon() fallback that compat.c compiles under #ifndef HAVE_DAEMON, which\ncalls fork() directly and bypasses it.  NuttX provides daemon() in\nlibs/libc/unistd/lib_daemon.c and declares it in unistd.h, so the fallback is\nredundant; define HAVE_DAEMON alongside the HAVE_STRLCAT and HAVE_STRLCPY\nentries that are there for exactly the same reason.  The code was unreachable\nin any case -- the port hands svr_getopts() an argv containing -F, so\nsvr_opts.forkbg is always zero and dropbear never calls daemon() at all.\n\ntesting/drivers/nand_sim: forked so that the parent could return to the shell\nwhile the child registered the MTD device and slept forever.  Nothing from\nbefore the fork is used after it, so the child is a self-contained entry\npoint, and task_create() expresses that directly.  The emulator body moves\ninto nand_sim_daemon() unchanged.  TESTING_NAND_SIM therefore needs no fork\ndependency, and the two sim configurations that enable it keep working\nwhatever ARCH_HAVE_FORK is set to.\n\nAssisted-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "795ea8d534a71a3eecebd367938366b359c1d3f0",
      "tree": "0e7e99c310465f2388290001c7c434578baf6b15",
      "parents": [
        "e59fee53afe8d7bea65d9f86dd72d1c5865c8483"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Aug 02 19:05:27 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Aug 03 09:22:39 2026 -0300"
      },
      "message": "testing, system: do not build tests that call fork() where it is absent.\n\nTwo places call fork() from code that is compiled unconditionally, which is\nfine only for as long as every architecture provides it.  NuttX is splitting\nfork() into three primitives -- see apache/nuttx#19562 -- after which\nARCH_HAVE_FORK announces POSIX fork() specifically, and is off until an\narchitecture implements it.  Both then fail to link.  Each is dropped only\nwhere ARCH_HAVE_FORK is unset, so builds that have fork() are unaffected.\n\nsystem/libuv: test-fork.c and test-pipe-close-stdout-read-stdin.c are\nfiltered out of the test-*.c glob.  Nothing is lost even where they are\ndropped: every test they define is already excluded from the task list on\nNuttX by 0001-libuv-port-for-nuttx.patch, which extends the _WIN32 guards\naround them to __NuttX__ -- all nine fork_* entries and\npipe_close_stdout_read_stdin.  They are compiled today but never run.\n\ntesting/ltp: the open_posix_testsuite is filtered through LTP\u0027s existing\nBLACKWORDS mechanism, which already drops tests for absent features and is\nalready conditioned on configuration symbols.  The pattern spares vfork()\nand task_fork().  Where fork() is absent this drops 278 of 1943 test files;\nthose tests exercise fork() and cannot link without it, and they return per\narchitecture as fork() lands.\n\nAgainst today\u0027s master this is a no-op: ARCH_HAVE_FORK is set everywhere, so\nneither filter drops anything.  It is part of what lets the NuttX side build\nagainst apps master.\n\nAssisted-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "e59fee53afe8d7bea65d9f86dd72d1c5865c8483",
      "tree": "578b2c76459d0f489e4d8c1d9720437afe386af4",
      "parents": [
        "ece6221edb972cf20322ce7e21fbad340d4ceb90"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Fri Jul 31 00:17:44 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 02 18:36:37 2026 +0800"
      },
      "message": "nshlib, graphics/microwindows: require the keyboard byte stream\n\nBoth read a keyboard as a stream of characters:  NSH uses a USB HID\nkeyboard for stdin, and the raw mode of the Microwindows keyboard driver\ndecodes the stream with the codec.  That stream now comes from\nINPUT_KEYBOARD_BYTESTREAM rather than from the USB HID driver itself.\n\nSay so, so that Kconfig refuses a combination that cannot work instead of\nletting the application read events and treat them as text.  No in-tree\nconfiguration selects either option.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "ece6221edb972cf20322ce7e21fbad340d4ceb90",
      "tree": "bce14d6ceee71266a261255b3edee6d7860575b9",
      "parents": [
        "b62cec9eb1d698004c1bd191202d3e7d49254baf"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Thu Jul 30 18:10:21 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 02 18:36:37 2026 +0800"
      },
      "message": "examples/hidkbd: follow the byte stream option rename\n\nThe example gated its decoding on HIDKBD_ENCODED, which no longer\nexists: the USB HID keyboard driver reports through the keyboard upper\nhalf now, and what produces the byte stream is\nINPUT_KEYBOARD_BYTESTREAM.\n\nLeft as it was, the option could never be satisfied and the example\nwould quietly stop decoding special keys.\n\nReaching the option again brings hidkbd_decode() back into the build\nafter a spell of being unreachable, and it uses isprint() without\nincluding ctype.h. That is an error rather than a warning under the\n-Werror the CI builds with, in the nine configurations that enable\nEXAMPLES_HIDKBD, so add the include here rather than in a later commit.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "b62cec9eb1d698004c1bd191202d3e7d49254baf",
      "tree": "325704f0bdc449c8c9d5c1138c3fe75484d99f01",
      "parents": [
        "47b3f92f9d054954f7523345cce69b73e0b5b9b8"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Thu Jul 30 18:46:11 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 02 18:36:37 2026 +0800"
      },
      "message": "system/kbd: inject keys into a uinput keyboard\n\nSomebody porting a board has to work on the application side before the\nkeyboard driver exists, and somebody reviewing that work often does not\nhave the board at hand at all.\n\nWith -i the tool goes the other way and writes into a uinput keyboard,\neither what it reads from its own stdin or every key of another keyboard.\nSo an application reading /dev/ukeyboard is driven from the serial\nconsole, or from whatever is on the far end of it, and a real keyboard\nand an injected one can drive it at the same time, which neither can do\non its own since an application opens a single device.\n\nNothing in the application changes:  it is reading a keyboard like any\nother, which is the point.\n\nValidated on a Linum STM32H753BI, forwarding a USB HID keyboard and the\nserial console into the same virtual keyboard, with the LVGL terminal\nreading it.  24 press and release pairs survived the crossing with no\nduplicate, no orphan and three keys held at once.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "47b3f92f9d054954f7523345cce69b73e0b5b9b8",
      "tree": "daa016e29936c660be4fec0e2063e10a08c66d49",
      "parents": [
        "f52bc61adb592f9f4bec14b3d3006ebd8f59433a"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Thu Jul 30 16:55:35 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 02 18:36:37 2026 +0800"
      },
      "message": "examples/lvglterm: read any keyboard through one input path\n\nThe terminal had three input sources to choose from, and its own help\ntext explained why:  the physical keyboard options \"differ in the data\nthe keyboard device delivers on read(), so pick the one that matches the\nhardware\".  That is the abstraction leaking.  A user had to know that\nthe keyboard was USB rather than a matrix in order to compile the\nterminal, and swapping one for the other meant rebuilding.\n\nThere are two sources now, touch and physical, and the physical one\nreads any keyboard registered with keyboard_register().  Which format\narrives is decided by INPUT_KEYBOARD_BYTESTREAM, a property of the build\nrather than of the hardware, so the terminal no longer asks.\n\nCursor keys reported as special events scroll the terminal, which is\nwhat a driver following the current contract sends.  The out of band\ncodes that the M5Stack Cardputer reports as ordinary presses are still\nhonoured, so that board keeps working until its driver is converted.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "f52bc61adb592f9f4bec14b3d3006ebd8f59433a",
      "tree": "b00001877d29b50f44d5d6260af36cea61d0fc03",
      "parents": [
        "a8e6021c6eff256ec19e638f93b4eba8ee4cdbb3"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Thu Jul 30 15:15:54 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 02 18:36:37 2026 +0800"
      },
      "message": "games/NXDoom: handle the special key events\n\ni_get_event() handled KEYBOARD_PRESS and KEYBOARD_RELEASE and dropped\neverything else, so every key reported as KEYBOARD_SPECPRESS went\nnowhere.  On the simulator that is already every arrow key, since\nsim_keyboard reports them that way:  the game is unplayable and says\nnothing about why.\n\nHandle all four types.  A special key carries a value from enum\nkbd_keycode_e rather than a character, so it gets its own translation\ninto doomkeys.h and contributes no printable character to the event.\n\nThe map covers what the game binds by default, which now includes Ctrl,\nShift and Alt.  Fire, run and strafe are on the modifiers, so a keyboard\nthat reports them is the difference between playing and walking around.\n\nEnter needed folding onto KEY_ENTER as well.  A driver reports it as the\ncharacter that it produces, which is the line feed, so it never arrived\nas KEYCODE_ENTER and never matched the carriage return that the game\nbinds the menu to.  Confirmed on hardware with a USB keyboard.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "a8e6021c6eff256ec19e638f93b4eba8ee4cdbb3",
      "tree": "6ce8bca6caed96a14be9de5fc8f96665b23b4004",
      "parents": [
        "37a1f0e068dfc9d5d995d0d515f6dd34ac84b4e2"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Thu Jul 30 15:15:54 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Aug 02 18:36:37 2026 +0800"
      },
      "message": "system/kbd: add a keyboard dump that reads any keyboard\n\nThe hidkbd and keyboard examples do the same thing for one kind of\nkeyboard each:  hidkbd reads a USB HID keyboard as a byte stream, and\nkeyboard reads an upper half keyboard as events.  Neither works with the\nother, so bringing up a new keyboard means picking the right example\nfirst, and there is no answer for somebody whose keyboard is neither.\n\nEvery keyboard registered with keyboard_register() is read the same way,\nso one tool covers them all:  USB HID, matrix, simulator, virtio, VNC.\n\nThe payload follows INPUT_KEYBOARD_BYTESTREAM rather than a switch of\nits own.  An application has no business knowing what hardware is behind\nthe device, and a build cannot mix the two formats anyway.\n\nThe two examples stay for now.  They are what the in-tree configurations\nstill name, and removing them has to wait until those configurations\nhave been moved over.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "37a1f0e068dfc9d5d995d0d515f6dd34ac84b4e2",
      "tree": "2495eea3a78c90a23a97d362f1ada8af4536209c",
      "parents": [
        "20dc5e5167fa8f4b4d31ea4f1fdf2e3f40c99a09"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Fri Jul 31 15:23:04 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 31 19:44:51 2026 -0300"
      },
      "message": "audioutils/lame: pin the checkout and build its AVX-512 sources\n\nThe bundled encoder was checked out from lame\u0027s trunk with no revision, so\nevery build took whatever trunk happened to be at that moment.  lame\u0027s trunk\ngrows vector tiers over time, and each one adds sources that the two build\nfiles have to name:  r6655 offered AVX2 to the vector routines on 2026-07-25,\nand r6718 and r6720 added an AVX-512 tier on 2026-07-30.  The AVX-512 sources\nwere never listed, so sim:alsa stopped linking on x86 hosts:\n\n  takehiro.c:332:    undefined reference to `quantize_lines_xrpow_avx512\u0027\n  takehiro.c:533:    undefined reference to `ix_max_avx512\u0027\n  takehiro.c:569:    undefined reference to `count_bit_esc_avx512\u0027\n  vbrquantize.c:261: undefined reference to `calc_sfb_noise_x34_avx512\u0027\n\nPin the checkout to r6720 through a LAME_VERSION variable, as the rest of\napps/ pins its third-party sources, and list the three AVX-512 files that\nrevision provides.  The pin is what keeps the two in step:  the source list is\nmaintained by hand, so it can only be correct for a known revision.\n\nThe checkout is also only performed when lame/configure is absent and is never\nupdated afterwards, so before this an unpinned tree was frozen at whatever\ntrunk was on the day it was first built.  Anyone who checked out before\n2026-07-30 still links and cannot reproduce the failure, which is why this\nsurfaced only in CI.\n\nMakefile named just vector/xmm_quantize_sub.c and none of the other vector\nsources, so a Make build on an x86 host fails the same way with a longer list\nof symbols, from SSE2 upwards.  CI builds sim:alsa through CMake only, so that\nhalf was latent rather than visible.  Both files now list the same nine\nsources under the same host condition.\n\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n\nAssisted-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "20dc5e5167fa8f4b4d31ea4f1fdf2e3f40c99a09",
      "tree": "cf80e9a2625944e6493da3acc7cd33ff9b74fbe7",
      "parents": [
        "859c014d4dffa55295974651619e3619bfe8ed40"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Thu Jul 30 13:40:17 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 31 18:47:17 2026 -0300"
      },
      "message": "testing/fs/xipfs: Cover the FDPIC module loader.\n\nAdds two sections to the xipfs suite, guarded by CONFIG_FDPIC so a build\nwithout the loader is unaffected.  They belong here rather than in their own\ntest because what they exercise is modules loaded *out of the filesystem* --\nthe pin, the in-place mapping and the loader are one path.\n\n\u0027fdpic\u0027 asserts on the loader properties that otherwise fail *quietly*: a\nloader that skips DT_INIT_ARRAY runs a C++ module happily with every global\nleft zero, one that skips DT_JMPREL loads a module that hard-faults only\nonce it calls out, and one that mis-sizes the descriptor pool corrupts the\nheap.  None of those announce themselves.  The module exit status is the\nchannel -- each module checks its own invariants and reports a bitmask.  It\nalso covers shared libraries across concurrent instances, per-instance data,\nthe leaf-library GOT fallback, the R_ARM_FUNCDESC descriptor pool, and every\nfirmware entry point that has to resolve a module callback, including\nmq_notify and timer_create with SIGEV_THREAD.\n\n\u0027reject\u0027 mutates a known-good module byte by byte and asserts the loader\nrefuses it rather than loading something broken: a missing import, and more\nDT_NEEDED entries than the walk will follow.\n\nThe modules are embedded as headers, for the same reason as in\nexamples/fdpicxip, and built for cortex-m3 for the same reason: one set of\nblobs then runs on both the v7-M and v8-M targets.  Their sources and the\nmakefile that regenerates these headers live in\napps/examples/fdpicxip/modules, so the copies the two apps carry are built\nfrom the same sources in the same way.\n\nVerified on a Pimoroni Pico Plus 2: fdpic 33/33, reject 7/7, and the whole\nsuite 130/130 with them included.  The same three numbers on mps2-an500 under\nQEMU, which is a Cortex-M7 rather than the RP2350\u0027s Cortex-M33.\n\nAssisted-by: Claude Code:claude-opus-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "859c014d4dffa55295974651619e3619bfe8ed40",
      "tree": "bd106dc42fab718f3d2046d160f13082415ef191",
      "parents": [
        "5f286fc924995e4fe320f85ebd67073d42c6c399"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Thu Jul 30 13:40:04 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 31 18:47:17 2026 -0300"
      },
      "message": "examples/fdpicxip: Demonstrate FDPIC modules executed in place.\n\nThe FDPIC counterpart of examples/nxflatxip, kept separate from it: that\nexample is about NXFLAT, and mixing the two module formats into one program\nwould leave neither demonstrating anything clearly.\n\nFour subcommands, each showing one property of the loader.  \u0027qsort\u0027 is the\nsimplest case it has -- one self-contained module, two concurrent instances,\none shared copy of the text in flash and a private copy of the data each,\nwith the pin count showing the extent held in place while they run and\nreleased after.  \u0027solib\u0027 adds a shared library, so two objects are mapped\nand each instance still gets its own copy of both objects\u0027 data.  \u0027cxx\u0027 is\nthe same in C++, which additionally requires global constructors to have run\nin dependency order before main.  \u0027jmprel\u0027 is a module whose imports are all\nin DT_JMPREL rather than DT_REL.\n\nThe modules are embedded as headers rather than built as part of the app:\nlinking one needs arm-uclinuxfdpiceabi binutils, which the tree does not\nrequire, so the headers are committed and both this example and\ntesting/fs/xipfs build with a plain toolchain.\n\nTheir sources are in modules/, with a makefile that rebuilds every header\nfrom them on an explicit \u0027make regen NUTTX_DIR\u003d...\u0027 and is never invoked by\nthe application build.  It drives nuttx/tools/fdpic and writes the headers\nthis example needs alongside the ones testing/fs/xipfs needs, so one source\ntree serves both and the two cannot drift apart.  CPU is cortex-m3 there\ndeliberately: a v7-M module runs on the v8-M targets too, so one set of blobs\nserves both the RP2350 and mps2-an500, while a cortex-m33 build produces\nblobs the Cortex-M7 cannot execute at all.\n\nThis demonstrates; it does not assert.  The assertions are in the fdpic and\nreject sections of apps/testing/fs/xipfs.\n\nVerified on a Pimoroni Pico Plus 2: all four subcommands, and nxflatxip\nunaffected alongside them.  Also verified on mps2-an500 under QEMU, which is\na Cortex-M7 -- a different core generation from the RP2350\u0027s Cortex-M33.\n\nAssisted-by: Claude Code:claude-opus-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "5f286fc924995e4fe320f85ebd67073d42c6c399",
      "tree": "628f2ae93a56fc86fafb4151db583f5a4dcab5c5",
      "parents": [
        "2631d3e59add05e4099ff1df7e6b0f20d0b4a979"
      ],
      "author": {
        "name": "tuansuper",
        "email": "144403817+tuansuper@users.noreply.github.com",
        "time": "Thu Jul 30 23:22:42 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 31 10:32:58 2026 -0300"
      },
      "message": "flashtool: Fix compile error due to missing statement after default label\n\nIn flashtool_main.c, the \u0027default:\u0027 label in a switch statement was\nfollowed directly by \u0027}\u0027, which is invalid in C.\nThis commit adds a \u0027break;\u0027 statement after the default label to\nresolve the error.\n\nSigned-off-by: tuansuper \u003ctunainnet@tutanota.com\u003e\n"
    },
    {
      "commit": "2631d3e59add05e4099ff1df7e6b0f20d0b4a979",
      "tree": "94a9ecf356378efd5676828ad82c71f8c90c62e0",
      "parents": [
        "be43888aa53d646e9919c08c57a50184be35d016"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Wed Jul 29 14:04:14 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 31 09:49:59 2026 -0300"
      },
      "message": "testing/ostest: build the perf test only where it can link\n\nperf_gettime() and perf_getfreq() are kernel functions, defined in\nsched/clock/clock_perf.c.  Neither appears in syscall.csv, and libc supplies\nonly perf_gettime(), under CONFIG_ARCH_HAVE_PERF_EVENTS_USER_ACCESS.  So a\nprotected or kernel build cannot resolve either of them from user space:\n\n  ostest/perf_gettime.c:91:  undefined reference to `perf_gettime\u0027\n  ostest/perf_gettime.c:184: undefined reference to `perf_getfreq\u0027\n  make[1]: *** [nuttx_user.elf] Error 1\n\nThe call in user_main() is guarded by CONFIG_ARCH_PERF_EVENTS \u0026\u0026\n!CONFIG_ARCH_PERF_EVENTS_USER_ACCESS -- which is exactly the case where the\nsymbols are kernel-only -- so every such configuration fails to link.\nmps3-an547:knsh is one: it sets CONFIG_SCHED_IRQMONITOR, which makes\nARCH_PERF_EVENTS default y.  mps2-an521:knsh escapes only because it sets\nneither monitor, leaving ARCH_PERF_EVENTS off, so the call compiles out and\nthe archive member is never pulled in.\n\nRequire CONFIG_BUILD_FLAT, where ostest links against the kernel\u0027s own copy.\nNo configuration that runs the test today stops running it.\n\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n\nAssisted-by: Claude Opus 5 (1M context) \u003cnoreply@anthropic.com\u003e\n"
    },
    {
      "commit": "be43888aa53d646e9919c08c57a50184be35d016",
      "tree": "27a82ef4856d86d62ea3a2fc4eb107f4222414b5",
      "parents": [
        "fc14d02ae092b990ce68a6faad36449f4ecb4e0c"
      ],
      "author": {
        "name": "Ricard Rosson",
        "email": "ricard@groundbits.com",
        "time": "Sat Jul 11 06:17:53 2026 +0100"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Jul 31 15:19:31 2026 +0800"
      },
      "message": "netutils/mdns: raise responder stack size default to 8KiB\n\nCONFIG_NETUTILS_MDNS_STACKSIZE defaulted to DEFAULT_TASK_STACKSIZE,\nwhich resolves to as little as 2KiB on some targets.  The bundled\nmjansson responder uses a deeper stack than that (DNS record parsing\nwith name decompression, plus the send/receive buffers) and overflows\non startup, taking the board down with a hardfault before it answers a\nsingle query.\n\nDefault to 8KiB, the value that reliably runs the responder, and\ncorrect the help text, which previously claimed a 4KiB default that did\nnot match DEFAULT_TASK_STACKSIZE.\n\nAssisted-by: Claude (Anthropic Claude Code)\nSigned-off-by: Ricard Rosson \u003cricard@groundbits.com\u003e\n"
    },
    {
      "commit": "fc14d02ae092b990ce68a6faad36449f4ecb4e0c",
      "tree": "d8683fb7b6494e32d6b917dcfccc1f1039f2468f",
      "parents": [
        "917e2e860b5618ba53971dac9ff44033ef0caf53"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Wed Jul 29 16:18:51 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Jul 31 10:20:23 2026 +0800"
      },
      "message": "nshlib,fsutils: add Kconfig deps for NSH console login with PBKDF2\n\nRequire a cryptodev backend for FSUTILS_PASSWD and tie NSH console/telnet\nlogin to ROMFS passwd generation when ETC_ROMFS is enabled.\n\nFixes #19573\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "917e2e860b5618ba53971dac9ff44033ef0caf53",
      "tree": "9c1b404fb338a35b39ed4588296417fc24cc93e6",
      "parents": [
        "484474bbbe357cbdc5f2c457b6f95fbaa5fe93eb"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Wed Jul 29 13:51:15 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Jul 31 01:14:30 2026 +0800"
      },
      "message": "testing/ostest: create temp passwd file for multiuser test\n\nInstall a minimal passwd file at CONFIG_LIBC_PASSWD_FILEPATH before\ngetpwnam() checks so sim:ostest does not require a pre-built /etc/passwd.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "484474bbbe357cbdc5f2c457b6f95fbaa5fe93eb",
      "tree": "63bc11db7169f1a5f91d0da12dc82d55541496fb",
      "parents": [
        "92c3b6446d6cb8c99002cc3d376e040f9cb93fde"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Thu Jul 16 18:55:50 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Jul 31 01:14:30 2026 +0800"
      },
      "message": "testing/ostest: extend multiuser credential and IPC tests\n\nAdd getresuid/setreuid coverage plus ownership and permission checks\nfor message queues, named semaphores, shared memory, and FIFOs.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "92c3b6446d6cb8c99002cc3d376e040f9cb93fde",
      "tree": "692a8adc4d136ba2a206a7ac429da925186fc8f1",
      "parents": [
        "07c123437217de9db4c5c0865127c14c53a9ff22"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Thu Jul 16 18:55:50 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Jul 31 01:14:30 2026 +0800"
      },
      "message": "nsh: show real, effective, and saved IDs in id command\n\nUse getresuid() and getresgid() for Linux-style id output with name\nresolution and a groups\u003d list based on the effective GID.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "07c123437217de9db4c5c0865127c14c53a9ff22",
      "tree": "9bd7902fbc8e1ddf0468fbc1815c2ffdf58f4cd0",
      "parents": [
        "68701867076ff1e28b16899818335ad7cdea6152"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Wed Jul 29 22:52:02 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Jul 31 01:07:59 2026 +0800"
      },
      "message": "games/NXDoom: draw in the pixel format of the frame buffer\n\nThe blit assumed a 32-bit frame buffer:  it wrote a uint32_t per pixel\nand converted the palette with ARGBTO32 as it went, so the image came\nout wrong anywhere else.  It also drew at the origin, leaving the image\nin a corner of a display it does not fill, and indexed the source by the\noutput column, which costs a division for every pixel of every frame.\n\nConvert the palette once per palette change into the format the frame\nbuffer actually uses, map output columns to source columns through a\ntable built at startup, and centre the result.  Output rows that come\nfrom the same source row are copied rather than converted again.\n\nFour options are added, all off by default, so that a board can trade\nmemory for speed where it pays:\n\n  GAMES_NXDOOM_FB_CMAP blits palette indices and lets a frame buffer\n  that has a colour map do the conversion in hardware.\n\n  GAMES_NXDOOM_FILLSCREEN stretches the image over the whole display\n  rather than scaling it by a whole number.\n\n  GAMES_NXDOOM_ROWSTAGE builds each row in a staging buffer so that the\n  frame buffer only sees burst-friendly copies.\n\n  GAMES_NXDOOM_STATIC_SCRNBUF places the render target in .bss, which\n  keeps it out of external memory on a board whose heap is mostly that.\n\nOn an STM32H753 driving a 1024x600 panel from SDRAM, the last two are\nworth 2.7x together.\n\nAlso open the frame buffer with O_CLOEXEC.\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "68701867076ff1e28b16899818335ad7cdea6152",
      "tree": "799d3f1eecc37cdf01bccc73fe4cdb2b98e8e69b",
      "parents": [
        "2492317f15bcf69787249060a6b16915170cc3a3"
      ],
      "author": {
        "name": "Acfboy",
        "email": "AcfboyU@outlook.com",
        "time": "Wed Jul 29 23:51:31 2026 +0800"
      },
      "committer": {
        "name": "Michal Lenc",
        "email": "michallenc@seznam.cz",
        "time": "Thu Jul 30 09:42:18 2026 +0200"
      },
      "message": "graphics/microwindows: fix missing HAVE_FNT_SUPPORT in Makefile\n\nWithout this Make variable, Objects.rules does not add font_fnt.o\nto the build, causing undefined reference to fnt_createfont at link time.\n\nSigned-off-by: Acfboy \u003cAcfboyU@outlook.com\u003e\n"
    },
    {
      "commit": "2492317f15bcf69787249060a6b16915170cc3a3",
      "tree": "4aa239d94fc408f97d5c6f7c9e84ab32b260cfb5",
      "parents": [
        "3a03552c6ad13d835d2dd62e358d9ffd82b161c5"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sat Jul 25 13:53:16 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Jul 28 16:47:49 2026 +0800"
      },
      "message": "examples/nxflatxip: Run an NXFLAT module in place out of xipfs.\n\nThe point of a writable execute-in-place file system is that a module can\narrive after the firmware was built and still run without being copied into\nRAM.  This demonstrates exactly that, end to end: it writes an NXFLAT module\ninto xipfs the way a download would, declaring the size up front so the\nextent is exact, checks the file system can hand out a real flash pointer\nfor it, and runs two instances concurrently.\n\nBoth instances report the address of their own text and of their stack.  The\ntext address is the same in both and is inside the flash window -- it is the\naddress the file occupies on the media -- while the stacks differ.  While\nthey run, the extent carries one pin per instance, which is what stops the\ndefragmenter relocating code that is executing.\n\nTwo subcommands cover the file system rather than the module.  bench times a\nbulk read out of the mapped flash before and after a write, which on the\nRP2350 is the cost of whichever path the driver used to restore XIP.  defrag\nfills the volume, deletes every other file until an allocation genuinely\ncannot be satisfied, compacts, retries the same allocation, then verifies\nevery relocated file byte for byte and again after a remount, printing a\nblock map at each step.\n\nThe module has neither static data nor string constants, and reports through\na callback into the firmware instead of formatting its own output.  That is\nnot stylistic: the ldnxflat in circulation resolves the GOT entries for .bss\nobjects into the import table, and drops the addend when it resolves the\nPC-relative references to .rodata, so a module using either quietly computes\nwrong addresses.  The comment in module/xipmod.c records both.  The callback\nalso exercises the other direction of the interface, firmware code entered\nwith the module\u0027s data base still live in r10.\n\nAssisted-by: Claude Code:claude-opus-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "3a03552c6ad13d835d2dd62e358d9ffd82b161c5",
      "tree": "ca734183ed28cb162441ac52ffed1b4be35ca3e1",
      "parents": [
        "b695ec057f1eb35b4e9ea75f14b371c1e796aa32"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sat Jul 25 13:53:16 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Jul 28 16:47:49 2026 +0800"
      },
      "message": "testing/fs/xipfs: Add a test suite for the xipfs file system.\n\nTwelve sections, selected by name on the command line because the power loss\nsweeps run for minutes while everything else runs in seconds.\n\nThe routine part covers the VFS paths, the write-once rules (reopen for\nwrite, append, seek during write, truncate of a written file are all refused)\nand both mmap variants: that a plain mapping lands inside the media window\nwith no heap growth, that MAP_XIP_STRICT fails with ENXIO rather than\ncopying, and that N mappings of one file produce N pins on one extent.\n\nThe rest is aimed at the two properties that are easy to get wrong and quiet\nwhen they are:\n\nPin release.  A pin taken by one task and a task that dies with a mapping\nstill live both have to end with the extent movable again -- the second\nwithout the task ever calling munmap, since a module that faults never will.\nBoth are checked by asking the defragmenter to move the extent afterwards.\n\nPower-loss atomicity.  With CONFIG_FS_XIPFS_FAULT_INJECT the suite fails the\nNth flash operation, remounts, and checks the volume is consistent and every\nfile that had been committed is byte-for-byte intact.  It sweeps N across\ncreate, unlink and defragmentation, and repeats the sweep with the failing\nwrite torn -- a partial program rather than a clean refusal -- which is what\na real power loss mid-program leaves behind.\n\nAssisted-by: Claude Code:claude-opus-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "b695ec057f1eb35b4e9ea75f14b371c1e796aa32",
      "tree": "a96090ac962df5bda2dee1db1c3bd0d9274124b0",
      "parents": [
        "ce49ac905326fa2a992a6fd4ade3e7768fad8ad9"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Thu Jul 23 18:40:26 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Jul 28 16:47:49 2026 +0800"
      },
      "message": "system/xipfs: Add a command to compact a xipfs volume and report it.\n\nxipfs has a defragmentation ioctl and no way to reach it from a shell.  The\nonly caller was a demo in examples/nxflatxip, which built its own block map\nto show what compaction had done.\n\n  xipfs [-n] [-t \u003cms\u003e] [\u003cmountpoint\u003e]\n\n-n surveys and reports without moving anything: where each file sits, a map\nof the volume, and how much of the free space a single allocation can reach.\nThat last number is the one a caller facing -ENOSPC actually wants; at 0%\nthe largest possible file already fits however scattered the map looks.\n\nThe compaction is asked for through a descriptor for the mountpoint\ndirectory, so no file inside the volume is open while it runs and a single\npass can reach every extent.\n\nThe walk descends into the directories xipfs synthesises from names, and\nreports each file by its path relative to the mount, so a volume that uses\nthem is described in full rather than down to its first level.\n\nBlock totals come from statfs rather than XIPFSIOC_EXTENTINFO, because that\none does name a file and an empty volume has none, yet its geometry is still\nworth reporting.\n\nAssisted-by: Claude Code:claude-opus-4-8\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "ce49ac905326fa2a992a6fd4ade3e7768fad8ad9",
      "tree": "86aa4eda7e2a6d57026b308ca09baf1677a9b8e6",
      "parents": [
        "ae601e28927efef64364f2cbe908e823bb73afcd"
      ],
      "author": {
        "name": "Acfboy",
        "email": "AcfboyU@outlook.com",
        "time": "Mon Jul 27 09:04:25 2026 +0800"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Tue Jul 28 09:53:05 2026 +0200"
      },
      "message": "examples/microwindows: add mwdemo demo application\n\nThis ports mwdemo.c from Microwindows as a standalone NuttX example\napplication.  mwdemo is the primary Win32 API demo in the Microwindows\nproject, featuring 3D graphics, window controls, timer-driven\nanimation, and bitmap image rendering.\n\nThe demo runs on both qemu-intel64:mw and sim:mw configurations.\n\nSigned-off-by: Acfboy \u003cAcfboyU@outlook.com\u003e\n\nexamples/microwindows: address review, clean up mwdemo.\n\n- Replace minimal copyright notice with full Apache 2.0 license header\n- Use angle brackets for system and microwindows includes\n- Remove OS-specific dead code (DOS_TURBOC, RTEMS, EMSCRIPTEN/MULTIAPP)\n- Drop unused demo-mode macros and their corresponding dead code paths\n  (IMAGE, CLIENT3D, CLIPDEMO, ARCDEMO).  Keep a fixed GRAPH3D+CONTROLS\n  configuration as the single NuttX demo.\n- Add g_ prefix to global variable (image -\u003e g_image)\n- Move demoWndData typedef from mid-file to Private Types section\n- Merge WinMain body into main() and remove the WinMain indirection\n- Removed unused images.\n\nSigned-off-by: Acfboy \u003cAcfboyU@outlook.com\u003e\n"
    },
    {
      "commit": "ae601e28927efef64364f2cbe908e823bb73afcd",
      "tree": "39e3b427361326f64347d2f0ffd8414d51969eec",
      "parents": [
        "636047a4e09c6e3a9bacae1e7caae788212651c6"
      ],
      "author": {
        "name": "Acfboy",
        "email": "AcfboyU@outlook.com",
        "time": "Mon Jul 27 08:57:48 2026 +0800"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Tue Jul 28 09:53:05 2026 +0200"
      },
      "message": "graphics/microwindows: introduce Microwindows graphics support to NuttX\n\nThis commit integrates the Microwindows core into the NuttX apps\nbuild system:\n\n- Downloads a pinned upstream commit during build and compiles the\n  engine, drivers and precompiled bitmap fonts via Microwindows\u0027\n  Objects.rules files.\n- Adds Kconfig options for framebuffer path, keyboard driver\n  selection (event-mode, raw byte-stream, none, custom), and\n  mouse/touchscreen driver selection (relative, touchscreen, none,\n  custom).\n- Uses the MWCONFIG_FILE mechanism to inject NuttX-specific\n  configuration (mwconfig.nuttx) without modifying upstream headers.\n- The NuttX screen, keyboard, mouse and touchscreen drivers are\n  pulled from upstream Microwindows. Driver selection is controlled\n  via ARCH\u003dNUTTX and Kconfig-driven KEYBOARD/MOUSE variables in\n  the Makefile.\n- Depends on VIDEO_FB for the framebuffer device.\n- Builds the mwin library (Win32 API layer) when MICROWINDOWS_MWIN\n  is enabled.\n\nCo-authored-by: Pavel Pisa \u003cppisa@pikron.com\u003e\nSigned-off-by: Pavel Pisa \u003cppisa@pikron.com\u003e\nSigned-off-by: Acfboy \u003cAcfboyU@outlook.com\u003e\n"
    },
    {
      "commit": "636047a4e09c6e3a9bacae1e7caae788212651c6",
      "tree": "a2c488b46d6eadecd71d7c647644a87991f0f39a",
      "parents": [
        "61161866f045adf7e9279ecb4f87a50a371d6dd0"
      ],
      "author": {
        "name": "Filipe Cavalcanti",
        "email": "filipe.cavalcanti@espressif.com",
        "time": "Mon Jul 27 13:57:40 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Jul 28 10:46:12 2026 +0800"
      },
      "message": "examples/fb: add SMPTE color bar example\n\nAdd a -p option to select the pattern to draw. The existing expanding\nrectangles animation remains the default, and a new \"smpte\" pattern\nfills the display with seven equal vertical bars (white, yellow, cyan,\ngreen, magenta, red and blue), which is useful to verify color ordering\nand channel wiring of a framebuffer display.\n\nTo support more than one palette, the draw_rect() helpers now receive\nthe color value to write instead of an index into the per-format color\ntables. Monochrome displays pick black or white per bar using a BT.601\nluma threshold.\n\nThe FBIO_UPDATE ioctl is moved out of draw_rect() into a new\npresent_area() helper, so the SMPTE pattern can draw every bar and\nthen update the display only once.\n\nAssisted-by: Cursor:claude-opus-5\nSigned-off-by: Filipe Cavalcanti \u003cfilipe.cavalcanti@espressif.com\u003e\n"
    },
    {
      "commit": "61161866f045adf7e9279ecb4f87a50a371d6dd0",
      "tree": "bf7333855054ed7a3842cb1e602daa6a253853e8",
      "parents": [
        "b42589e8e77a7bc7212daa52647a9b90a5b428ba"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 22:22:27 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Jul 28 10:46:03 2026 +0800"
      },
      "message": "build(deps): bump docker/login-action from 4.4.0 to 4.5.1\n\nBumps [docker/login-action](https://github.com/docker/login-action) from 4.4.0 to 4.5.1.\n- [Release notes](https://github.com/docker/login-action/releases)\n- [Commits](https://github.com/docker/login-action/compare/af1e73f918a031802d376d3c8bbc3fe56130a9b0...abd2ef45e78c5afb21d64d4ca52ee8550d9572c7)\n\n---\nupdated-dependencies:\n- dependency-name: docker/login-action\n  dependency-version: 4.5.1\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "b42589e8e77a7bc7212daa52647a9b90a5b428ba",
      "tree": "2833a782775d9c130e5d18162b3f61eb13879831",
      "parents": [
        "a5c0e9c188cb1f4a4feb7e812651e8505904a1da"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Fri Jul 24 14:34:02 2026 -0400"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Jul 27 13:24:25 2026 -0300"
      },
      "message": "games/NXDoom: Fix warnings in i_pcsound module\n\nThis fixes all the warnings in the i_pcsound module caused when enabling\nthe sound feature Kconfig option. This warnings would prevent CI from\npassing.\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    },
    {
      "commit": "a5c0e9c188cb1f4a4feb7e812651e8505904a1da",
      "tree": "ef890f1b1dd2ab7f226ebc94b5372123c8b2e6ac",
      "parents": [
        "57e761f7242254e0a15d498972d87704c709b07e"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Jul 21 13:04:04 2026 -0400"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Jul 27 13:24:25 2026 -0300"
      },
      "message": "apps/games/NXDoom: Add support for RTTTL DOOM theme\n\nImplements and RTTTL player music module to play the DOOM theme song\nover RTTTL.\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    },
    {
      "commit": "57e761f7242254e0a15d498972d87704c709b07e",
      "tree": "566c0e0252d71999c7237d614c1ed2f88d84c159",
      "parents": [
        "fabafbc3615b3d22636bbf33f932578f491bef23"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Jul 26 17:00:11 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Jul 27 12:19:41 2026 -0300"
      },
      "message": "build: Omit default priority ELF symbol.\n\nDo not define nx_priority for applications that use SCHED_PRIORITY_DEFAULT. The ELF loader already uses its scheduler default when the symbol is absent, avoiding the invalid priority-zero value previously encoded by Application.mk.\n\nKeep emitting nx_priority, and retaining it through stripping, for explicit numeric priorities.\n\nAssisted-by: Zed:GPT-5.6 Terra\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "fabafbc3615b3d22636bbf33f932578f491bef23",
      "tree": "d9af7c9be0079f55f31065fbcedaa9200753ea32",
      "parents": [
        "8d5e9f3754128c2b9bca911af062ded9c7987d60"
      ],
      "author": {
        "name": "Junbo Zheng",
        "email": "zhengjunbo1@xiaomi.com",
        "time": "Fri Jul 24 23:47:44 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Jul 27 09:38:34 2026 -0300"
      },
      "message": "nshlib: add relative image path support in boot command\n\ncmd_boot passed the image path straight to boardctl(), which resolves\nit in a context that does not inherit the NSH shell cwd, so relative\npaths failed and only absolute paths worked. Use nsh_getfullpath() to\nresolve relative paths against the cwd before calling boardctl().\n\nSigned-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n"
    },
    {
      "commit": "8d5e9f3754128c2b9bca911af062ded9c7987d60",
      "tree": "cc857654c71ec74966d1226374c0ebfb1cfe75c2",
      "parents": [
        "f2ceac78db76d54b4a2cf8fdc3275edd690d2e50"
      ],
      "author": {
        "name": "Alan Carvalho de Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Jul 26 13:35:43 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Jul 26 18:46:45 2026 -0300"
      },
      "message": "system/readline: Fix small issues\n\nThis PR fixes some small issues raised by Xiang Xiao.\n\nSigned-off-by: Alan C. Assis \u003cacassis@gmail.com\u003e\n"
    },
    {
      "commit": "f2ceac78db76d54b4a2cf8fdc3275edd690d2e50",
      "tree": "a038d2118dcac703b91abe37e248e8d43ca56931",
      "parents": [
        "3ecd036f8f81e89b7f1e5d595e5a961f164003ad"
      ],
      "author": {
        "name": "aviralgarg05",
        "email": "gargaviral99@gmail.com",
        "time": "Sat Jul 11 21:57:50 2026 +0530"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Jul 26 20:54:58 2026 +0800"
      },
      "message": "examples/sotest: support packaged shared library fixtures.\n\nExtend the examples/sotest packaging path so the shared-library test\nfixtures can also be prepared through nxpkg-style package artifacts.\n\nGenerate shared-index.json and pkgsotest.nsh from the built modprint\nand sotest shared objects, recording the correct target arch/compat\nmetadata and SHA-256 digests for the packaged shared-library fixtures.\nAllow sotest to run in either its existing builtin-ROMFS flow or from\nexplicit shared-library paths, with a --mount helper mode for\npreparing the builtin test mount separately. Keep the paired fixture\noutputs in one grouped make step so parallel builds do not re-enter\nthe generator independently.\n\nThis makes the sotest shared-library example usable as a\npackage-style fixture producer for the Dynamic ELF/nxpkg series,\nuseful for validating the shared-library side of the packaging flow\nwhere the loader should consume installed artifacts rather than only\nthe default builtin test paths. The existing builtin-ROMFS path is\npreserved with no regression to the normal sotest example flow.\n\nAssisted-by: Claude:claude-sonnet-5\nAssisted-by: OpenAI Codex:gpt-5.6-sol\nSigned-off-by: aviralgarg05 \u003cgargaviral99@gmail.com\u003e\n"
    },
    {
      "commit": "3ecd036f8f81e89b7f1e5d595e5a961f164003ad",
      "tree": "5790d7f56eb0f8cc279cc406372fae5daab29945",
      "parents": [
        "355d090d838906c61a4931923b7c540105e09c96"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Jul 26 09:48:20 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Jul 26 08:33:06 2026 -0300"
      },
      "message": "audioutils/lame: Add CMake vector sources.\n\nAdd the SSE2 and AVX2 vector implementation files to the CMake libmp3lame target for x86 simulator hosts. LAME\u0027s enabled runtime dispatch paths call these functions, so omitting them leaves sim:alsa with unresolved symbols at link time.\n\nNon-x86 simulator hosts continue to use LAME\u0027s scalar implementation.\n\nAssisted-by: Zed:GPT-5.6 Terra\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "355d090d838906c61a4931923b7c540105e09c96",
      "tree": "d77c6bf4d447c9feac36f41c3370dea1d93bd72d",
      "parents": [
        "101b713be6c42dd757e63c020af3aacbd14d257e"
      ],
      "author": {
        "name": "Felipe Moura",
        "email": "moura.fmo@gmail.com",
        "time": "Fri Jul 24 20:18:38 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Jul 26 07:54:11 2026 -0300"
      },
      "message": "netutils/dropbear: back chacha20-poly1305 with NuttX /dev/crypto\n\nReplace the bundled libtomcrypt chacha20-poly1305 implementation with an\nadapter that drives the NuttX crypto device: the SSH construction maps onto\nCRYPTO_CHACHA20_DJB (the original 64-bit counter/nonce ChaCha20\nparameterization used by chacha20-poly1305@openssh.com) for the packet\nlength and payload streams, and onto CRYPTO_POLY1305 for the authentication\ntag (plain MACs are driven in two steps through /dev/crypto: COP_FLAG_UPDATE\nfeeds the data, a final call retrieves the tag).\n\nSigned-off-by: Felipe Moura \u003cmoura.fmo@gmail.com\u003e\n"
    },
    {
      "commit": "101b713be6c42dd757e63c020af3aacbd14d257e",
      "tree": "c132fb0126e9f1421cb98b04762fe31d49bd1eda",
      "parents": [
        "6ca1272b99494686731c53d22f81224d7ab8117d"
      ],
      "author": {
        "name": "Junbo Zheng",
        "email": "zhengjunbo1@xiaomi.com",
        "time": "Thu Jul 23 19:47:13 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Jul 26 07:39:39 2026 -0300"
      },
      "message": "nshlib: add du command support\n\nAdd a du command to NSH that recursively summarizes the size of each\npath argument in 1K-blocks, or human-readable form with -h.\n\nSupports -s (summary only), -a (all files), -d N (max-depth), and -h,\nmatching GNU du semantics.\n\nTesting:\n\nBuilt and ran on sim:nsh with:\n```bash\n  cmake -B out/nuttx_sim_nsh -S nuttx -DBOARD_CONFIG\u003dsim:nsh -GNinja\n  ninja -C out/nuttx_sim_nsh\n  ./out/nuttx_sim_nsh/nuttx\n\n  nsh\u003e du\n  397449  /data/test/elf\n  71993   /data/test/coredump\n  5       /data/test/log2\n  3251    /data/test/log1\n  472700  /data/test\n\n  nsh\u003e du -h\n  388.1M  /data/test/elf\n  70.3M   /data/test/coredump\n  4.1K    /data/test/log2\n  3.1M    /data/test/log1\n  461.6M  /data/test\n```\n\nHost Ubuntu22.04 du on the same directory:\n```bash\n  $ du\n  397456  ./elf\n  72000   ./coredump\n  8       ./log2\n  3252    ./log1\n  472720  .\n\n  $ du -h\n  389M  ./elf\n  71M   ./coredump\n  8.0K  ./log2\n  3.2M  ./log1\n  462M  .\n```\n\nSigned-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n"
    },
    {
      "commit": "6ca1272b99494686731c53d22f81224d7ab8117d",
      "tree": "55b5cf913be2bc9c31a800bbbc935489a039781c",
      "parents": [
        "690ec808e54168459b127122bc0791044388118d"
      ],
      "author": {
        "name": "aviralgarg05",
        "email": "gargaviral99@gmail.com",
        "time": "Sat Jul 11 21:58:05 2026 +0530"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sat Jul 25 12:06:28 2026 -0300"
      },
      "message": "examples/elf: extend nxpkg validation coverage.\n\nExtend the examples/elf ROMFS path so nxpkg validation can use\ngenerated package fixtures instead of hand-managed metadata.\n\nGenerate index.json, bad-index.json, pkgtest.nsh, and pkgfail.nsh\nfrom the built hello ELF, recording the correct target arch/compat\nmetadata and SHA-256 digest for the valid fixture. Keep mismatched-\ntarget and missing-artifact cases alongside the valid fixture so\nnxpkg target selection and failure handling can be exercised from\nthe same example tree. Group the paired fixture outputs in one make\nstep so parallel builds do not re-enter the generator independently.\n\nThis keeps the fixture metadata tied to the actual built hello\nartifact instead of relying on manually maintained hashes or ad hoc\nshell setup, making follow-up review and later test reruns more\npredictable. There is no intended loader or board-behavior change;\nthis is limited to fixture generation inside examples/elf.\n\nAssisted-by: Claude:claude-sonnet-5\nAssisted-by: OpenAI Codex:gpt-5.6-sol\nSigned-off-by: aviralgarg05 \u003cgargaviral99@gmail.com\u003e\n"
    },
    {
      "commit": "690ec808e54168459b127122bc0791044388118d",
      "tree": "2c15ac3435c35c135ca51c634cfcc785ed41c748",
      "parents": [
        "ae237624ee1e57a8b799cadedf43b8818ee1571f"
      ],
      "author": {
        "name": "Felipe Moura",
        "email": "moura.fmo@gmail.com",
        "time": "Sat Jul 11 20:14:39 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 24 18:34:35 2026 -0300"
      },
      "message": "netutils/dropbear: back hmac-sha2-256 with NuttX /dev/crypto\n\nReplace the bundled libtomcrypt HMAC modules with an adapter that computes the hmac-sha2-256 packet MAC through the NuttX crypto device using CRYPTO_SHA2_256_HMAC sessions.\n\nRequire CRYPTO, CRYPTO_RANDOM_POOL, CRYPTO_CRYPTODEV and CRYPTO_CRYPTODEV_SOFTWARE_CRYPTO explicitly instead of selecting crypto support.\n\nSigned-off-by: Felipe Moura \u003cmoura.fmo@gmail.com\u003e\n"
    },
    {
      "commit": "ae237624ee1e57a8b799cadedf43b8818ee1571f",
      "tree": "a37decf55111af42439a747b4ace27a5da864a2c",
      "parents": [
        "48eb95998b4b1b34e0d2989c640994b8ee0b0138"
      ],
      "author": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Jul 23 14:35:12 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 24 14:12:38 2026 -0300"
      },
      "message": "readline: Improve robustness of editing and escape-sequence handling\n\nReplace fragile cursor compensation with full-line redraws where needed,\nfix Ctrl+W buffer/screen corruption, properly consume unrecognized CSI\nsequences, and always clean up leaked local-echo characters from buggy\nserial drivers. These changes make line editing consistent across\nterminals while preserving existing behavior.\n\nSigned-off-by: Alan C. Assis \u003cacassis@gmail.com\u003e\nAssisted-by: Claude Code (Sonnet 5)\n"
    },
    {
      "commit": "48eb95998b4b1b34e0d2989c640994b8ee0b0138",
      "tree": "53359d2d51da4041c3ecc1d86cb16bd08658c410",
      "parents": [
        "893f0c31eed10adf58ca95b52fffed56f89e43c5"
      ],
      "author": {
        "name": "Alan C. Assis",
        "email": "acassi@gmail.com",
        "time": "Wed Jul 22 09:26:32 2026 +0000"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 24 14:12:38 2026 -0300"
      },
      "message": "readline: Make prompt-caching available\n\nreadline cached the current prompt only when TAB completion was enabled,\neven though line-editing redraws also depend on that cached prompt.\nWith TAB completion disabled, full-line redraws erased the prompt and\nrepainted only the command buffer. Make the prompt cache available\nwhenever line editing is enabled.\n\nSigned-off-by: Alan C. Assis \u003cacassis@gmail.com\u003e\n"
    },
    {
      "commit": "893f0c31eed10adf58ca95b52fffed56f89e43c5",
      "tree": "8b4bfe894b7555cf13cc34bb416925ed3e6139d5",
      "parents": [
        "51bfd48e78a55b8b6eab53c5743bbadfe5de2a2a"
      ],
      "author": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Jul 22 07:54:54 2026 +0000"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 24 14:12:38 2026 -0300"
      },
      "message": "readline: remove 5x duplicated in redraw code\n\nThe original readline_common.c file had some duplicated code that was\ncausing the nsh to be more than 1KB bigger. This clean up will allow\nadding line editing without increasing the final firmware size too much.\n\nSigned-off-by: Alan C. Assis \u003cacassis@gmail.com\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "51bfd48e78a55b8b6eab53c5743bbadfe5de2a2a",
      "tree": "ff36449b15817187ccc5dbb86adf6572026cd2c5",
      "parents": [
        "0304721c85146b611c8a3d068de85f147e4e5410"
      ],
      "author": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Jul 14 21:39:39 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 24 14:12:38 2026 -0300"
      },
      "message": "system/readline: Add support for line movements and editing\n\nThis commit adds support to nsh\u003e command line editing. This is one\nof the most missing feature of the NuttShell. If you typed a long\ncommand line and make a mistake you need to press Backspace and\nremove everything until reach that typo. Only the basic editing\nfeature is enabled by default (left/right keys movement, Home/End\nto move to the beginning or ending of the command line).\n\nMore advanced features are available when CONFIG_READLINE_EDIT_EMACS\nis selected. It enables the Emacs-style control keys (Ctrl+A/B/D/E/F/K/U/W)\nthat allow more flexible line editing.\n\nOther more advanced feature is enabled when CONFIG_READLINE_CMD_HISTORY\nand CONFIG_READLINE_EDIT_EMACS_REVERSE_SEARCH are enabled. It allows the\nuser to press Ctrl+R to do reverse search in the command line history.\n\nSigned-off-by: Alan C. Assis \u003cacassis@gmail.com\u003e\nAssisted-by: Claude Code\n"
    },
    {
      "commit": "0304721c85146b611c8a3d068de85f147e4e5410",
      "tree": "5ad34314e8fc454e70650f05a33ea1b227cd60ac",
      "parents": [
        "094b988be3a39440a191464fca32b4972a9d5f8c"
      ],
      "author": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Jul 19 20:06:51 2026 +0000"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Fri Jul 24 14:12:38 2026 -0300"
      },
      "message": "readline: Don\u0027t assert on a zero-length RL_WRITE\n\nThen readline_write() was called with buflen \u003d\u003d 0 it was causing a\ndebug assertion. Now it returns early for instead of asserting.\n\nSigned-off-by: Alan C. Assis \u003cacassis@gmail.com\u003e\n"
    },
    {
      "commit": "094b988be3a39440a191464fca32b4972a9d5f8c",
      "tree": "17659b42b49a9b0db7f3578d4f83ac85366abc15",
      "parents": [
        "86afa6d1823def2783281fa88d2f278794f22c33"
      ],
      "author": {
        "name": "Carlos Sánchez de La Lama",
        "email": "csanchezdll@gmail.com",
        "time": "Thu Jul 16 13:55:09 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Jul 24 17:15:49 2026 +0800"
      },
      "message": "interpreters: add Tcl support\n\nTcl is added using The Jim Interpreter. Jim is an opensource small-footprint\nimplementation of the Tcl programming language. It implements a large subset\nof Tcl and adds new features like references with garbage collection,\nclosures, built-in Object Oriented Programming system, Functional Programming\ncommands, first-class arrays and UTF-8 support.\n\nSigned-off-by: Carlos Sánchez de La Lama \u003ccsanchezdll@gmail.com\u003e\n"
    },
    {
      "commit": "86afa6d1823def2783281fa88d2f278794f22c33",
      "tree": "cff3f1db1ae5d46a38d63e9c66fe5b919d8263f3",
      "parents": [
        "d273af4834a5401b5f97e7fd5b72f4f3bc3ffb1c"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Mon Jul 20 18:43:12 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Jul 23 17:18:08 2026 -0300"
      },
      "message": "netutils/rexecd: forward PRIORITY/STACKSIZE config in CMake build\n\nThe Makefile build already forwards both values via PRIORITY /\nSTACKSIZE.  Align the CMake build with the Makefile so that\nCONFIG_NETUTILS_REXECD_PRIORITY and CONFIG_NETUTILS_REXECD_STACKSIZE\ntake effect under CMake as well.\n\nAssisted-by: GitHubCopilot:claude-4.8-opus\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "d273af4834a5401b5f97e7fd5b72f4f3bc3ffb1c",
      "tree": "c8790336cba3d988cbc0862a721bc55c913c8fef",
      "parents": [
        "e751331ecb7ea28073bff41600d2e9c9ba90aa1a"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Tue Jul 21 10:44:20 2026 -0400"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Thu Jul 23 09:31:29 2026 +0200"
      },
      "message": "applications/audioutils/morsey: Update Morsey version\n\nUse newer version without compile time warnings that prevent CI from\nbuilding.\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    },
    {
      "commit": "e751331ecb7ea28073bff41600d2e9c9ba90aa1a",
      "tree": "e220e31dc19f753b25cfd47e7aafc3dd8daedb4b",
      "parents": [
        "c02683e2829644b1fc69d1335aee252e59f758fe"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Wed Jul 22 05:06:16 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Jul 22 17:21:22 2026 +0800"
      },
      "message": "ci: fix sim/login ROMFS passwd credential for promptpasswd.sh\n\nNUTTX_ROMFS_PASSWD_PASSWORD lacked a special character, so nuttx\u0027s\npromptpasswd.sh rejects it and headless CI builds fail at etctmp.c when\nsim/login is built.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "c02683e2829644b1fc69d1335aee252e59f758fe",
      "tree": "a86a53c0affa4b40ca7119a6132d2c4baeba1a6c",
      "parents": [
        "608f13fd4be86e8538e26ac855dedc5d4545cbd1"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Wed Jul 15 15:40:21 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Jul 22 17:21:22 2026 +0800"
      },
      "message": "!nshlib: Remove fixed login; require FSUTILS_PASSWD\n\nReport password policy failures clearly from useradd and passwd when a\npassword does not meet complexity requirements.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "608f13fd4be86e8538e26ac855dedc5d4545cbd1",
      "tree": "8cfeb9c93b81f342dc3e043f3f276e21932ff83e",
      "parents": [
        "01c6a6058115f8bddce9afc8a6b7d48324500899"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Thu Jun 25 16:55:03 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Jul 22 17:21:22 2026 +0800"
      },
      "message": "!fsutils/passwd: Replace TEA with PBKDF2-HMAC-SHA256\n\nMigrate passwd encrypt/verify to PBKDF2 modular crypt format using\nkernel cryptodev (CRYPTO_PBKDF2_HMAC_SHA256 via /dev/crypto).  Add\npasswd_pbkdf2 wrapper, base64url helpers, complexity validation, and\npbkdf2_test for RFC 6070 vector coverage.  FSUTILS_PASSWD selects\nCRYPTO, ALLOW_BSD_COMPONENTS, and CRYPTO_CRYPTODEV so existing sim\ndefconfigs keep building.  Change NSH_LOGIN_USERNAME default to root and\nremove fixed-login password defaults.\n\nBREAKING CHANGE: TEA-encoded /etc/passwd entries no longer verify.\nRegenerate each entry after upgrading.  Pair with the nuttx host mkpasswd\nchanges in apache/nuttx#19209.  Boards must enable the appropriate\nsoftware or hardware crypto backend for PBKDF2 at runtime.  When\nCONFIG_NSH_LOGIN_FIXED\u003dy, set CONFIG_NSH_LOGIN_PASSWORD in the board\ndefconfig or menuconfig; there is no default password.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "01c6a6058115f8bddce9afc8a6b7d48324500899",
      "tree": "5e1619bb3fd5cd8d7e0fbfd988ae7790fa59c220",
      "parents": [
        "067b0ccf2875357f0f6a6c4ffea503a468d9689b"
      ],
      "author": {
        "name": "hanzhijian",
        "email": "hanzhijian@zepp.com",
        "time": "Mon Jul 20 18:00:38 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Jul 21 15:37:01 2026 -0300"
      },
      "message": "testing/drivers: add watchdog notifier cmocka coverage\n\nExtend the watchdog drivertest with notifier ordering, duplicate registration, repeated delivery, unregister, NULL-data, and concurrent registration coverage.\n\nRegister the watchdog test when either reset-cause or timeout-notifier support is available. Keep hardware watchdog cases gated by reset-cause support and allow notifier-only simulator builds through both Make and CMake.\n\nKeep test state in the watchdog fixture and notifier blocks so callbacks do not depend on shared notifier state.\n\nAssisted-by: OpenAI Codex\nSigned-off-by: hanzhijian \u003chanzhijian@zepp.com\u003e\n"
    },
    {
      "commit": "067b0ccf2875357f0f6a6c4ffea503a468d9689b",
      "tree": "6bd793e1ef9babd2b9e126438469d519a41306ed",
      "parents": [
        "593bfca04761f59b3c2eed1d02e5e64eeafc3215"
      ],
      "author": {
        "name": "anjiahao",
        "email": "anjiahao@xiaomi.com",
        "time": "Wed Jul 15 16:11:18 2026 +0800"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Jul 21 05:47:25 2026 -0300"
      },
      "message": "Application.mk:define application attribute in elf symbol\n\nEmit --defsym for nx_stacksize, nx_priority (and nx_uid/nx_gid/nx_mode\nunder CONFIG_SCHED_USER_IDENTITY) into MODLDFLAGS so the ELF binary\nloader can recover the application\u0027s configured attributes at load time.\n\nAlso skip builtin registration for separately-built module ELFs\n(BUILD_MODULE instead of DYNLIB).\n\nSigned-off-by: anjiahao \u003canjiahao@xiaomi.com\u003e\n"
    },
    {
      "commit": "593bfca04761f59b3c2eed1d02e5e64eeafc3215",
      "tree": "d8ebe4abeeb8c2562760f75ab03b3468e8d39823",
      "parents": [
        "c814059f6c4a36bd9e1992f443ff4039ad4cc2a5"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 22:22:33 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Jul 21 16:47:02 2026 +0800"
      },
      "message": "build(deps): bump actions/setup-python from 6 to 7\n\nBumps [actions/setup-python](https://github.com/actions/setup-python) from 6 to 7.\n- [Release notes](https://github.com/actions/setup-python/releases)\n- [Commits](https://github.com/actions/setup-python/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-python\n  dependency-version: \u00277\u0027\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c814059f6c4a36bd9e1992f443ff4039ad4cc2a5",
      "tree": "2937e5e3648c1de751106ce81bbf1de1ca3ad4b5",
      "parents": [
        "4d3bb6e7c9b791d4f867ea401f2c414cf4395310"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Mon Jul 20 20:11:38 2026 -0400"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Jul 21 05:46:11 2026 -0300"
      },
      "message": "examples/txmorse: Example application for transmitting Morse code\n\nAdds an example application leveraging the Morsey library for\ntransmitting Morse code, either to the console (debug) or to GPIO\ndevices for now as the two supported sinks.\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    },
    {
      "commit": "4d3bb6e7c9b791d4f867ea401f2c414cf4395310",
      "tree": "04ac1abf277f503c4c33f5999ec5893fe450825e",
      "parents": [
        "1e490d3fbe941705d51d2d218080e8d1308985b1"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Mon Jul 20 18:27:22 2026 -0400"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Jul 21 05:46:11 2026 -0300"
      },
      "message": "audioutils/morsey: Add the Morsey library\n\nThis commit adds the Morsey library (Apache 2.0 licensed) to be\ndownloaded from an external repository so it can be used in NuttX\napplications.\n\nThis library parses ASCII text into Morse code marks to be played by a\nuser-implemented \u0027transmit\u0027 function (i.e. over an LED, buzzer, audio\nsink, etc.).\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    },
    {
      "commit": "1e490d3fbe941705d51d2d218080e8d1308985b1",
      "tree": "acc634800c5c1c843e0b9c86e501465574da6e9e",
      "parents": [
        "865393d419994015bb60e74c859eb1341f163b4f"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Sat Jul 18 15:04:05 2026 +0000"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Mon Jul 20 12:45:48 2026 -0400"
      },
      "message": "dropbear: rename libtomcrypt symbols to avoid NuttX collisions\n\nRename base64_encode, base64_decode, and ecc_make_key in bundled\nlibtomcrypt to avoid duplicate symbol link errors when dropbear is built\nalongside netutils/codecs and NuttX crypto (e.g. sim:dropbear).\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "865393d419994015bb60e74c859eb1341f163b4f",
      "tree": "ee3beb99d770dbac9024fed5c4520d4ad237f2d4",
      "parents": [
        "98f683dea826cd825c5cca6142dd0928f287d60f"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Sun Jul 19 13:46:50 2026 -0300"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Mon Jul 20 10:21:57 2026 +0200"
      },
      "message": "system/curl: add a small curl-like HTTP client command\n\nAdd the \"curl\" NSH command: a command-line HTTP client built on top of\nthe netutils webclient library. It implements a subset of the real curl\noptions: GET and POST (and other methods via -X), custom request headers\n(-H), a raw request body (-d, including -d @file), multipart/form-data\nfile uploads (-F name\u003d@file), saving the response body to a file (-o)\nand verbose output (-v). HTTP only (no HTTPS).\n\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "98f683dea826cd825c5cca6142dd0928f287d60f",
      "tree": "4b4751390c07b037bb37b8065caee0fc4decfa43",
      "parents": [
        "7469e88bfa6cff5ce3dc90c0f01fde3c18b2e863"
      ],
      "author": {
        "name": "Ansh Rai",
        "email": "anshrai331@gmail.com",
        "time": "Thu Jul 16 20:17:06 2026 +0000"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Mon Jul 20 10:21:26 2026 +0200"
      },
      "message": "apps: Sanitize PROGNAME for _main symbol generation\n\nProgram names containing \u0027-\u0027 (e.g. renaming hello to hello-world via\nPROGNAME) previously generated an invalid identifier \u003cPROGNAME\u003e_main\nwhen constructing internal entry-point symbols. This caused build\nfailures for C/C++ applications due to invalid identifiers in compiler\ndefinitions and generated builtin_proto.h.\n\nIntroduce PROGSYM, a sanitized copy of PROGNAME with \u0027-\u0027 replaced by\n\u0027_\u0027, and use it wherever an internal C/Zig identifier is constructed\n(the -Dmain\u003d defines, the Zig RENAMEMAIN rule, and the REGISTER\ncall\u0027s entry-point argument). Preserve the original PROGNAME for the\nregistered NSH command name and builtin registry entry, where hyphens\nare valid and expected.\n\nThe Zig RENAMEMAIN path is also updated to use PROGSYM for consistency.\nThe current hello_zig and leds_zig examples do not exercise this path,\nsince neither uses a literal \u0027fn main\u0027 entry point, but the change\nkeeps symbol generation consistent for future Zig applications.\n\nTesting (WSL2 Ubuntu, x86_64, sim:nsh):\n- CONFIG_EXAMPLES_HELLO_PROGNAME\u003d\"hello-world\": clean build,\n  \u0027hello-world\u0027 runs and prints \u0027Hello, World!!\u0027\n- Reverted to default PROGNAME\u003d\"hello\": clean build, no regression\n- Confirmed by inspection that RENAMEMAIN\u0027s sed substitution does not\n  fire on either current .zig source (generated _tmp.zig is\n  byte-identical to the source)\n\nFixes #19447\n\nSigned-off-by: Ansh Rai \u003canshrai331@gmail.com\u003e\n"
    },
    {
      "commit": "7469e88bfa6cff5ce3dc90c0f01fde3c18b2e863",
      "tree": "20e1ecb83a53dec85e6250373dec52557ba0e77d",
      "parents": [
        "5114ddd6c02d38d8bffa940edc2c2c7afb09b10c"
      ],
      "author": {
        "name": "Felipe Moura",
        "email": "moura.fmo@gmail.com",
        "time": "Sat Jul 18 12:14:02 2026 -0300"
      },
      "committer": {
        "name": "Alin Jerpelea",
        "email": "alin.jerpelea@sony.com",
        "time": "Mon Jul 20 10:04:50 2026 +0200"
      },
      "message": "netutils/dropbear: retain child exit status for NSH PTY session\n\nThe per-session NSH task is reaped with waitpid() in\ndropbear_nshsession.c.  Without CONFIG_SCHED_CHILD_STATUS the kernel does\nnot retain the child exit status, so waitpid() returns ECHILD right after\nauthentication and the interactive session never starts\n(\"NSH session wait failed: Unknown error 10\").\n\nDepend on SCHED_HAVE_PARENT and SCHED_CHILD_STATUS (following the project\u0027s\ndepends-on-over-select convention) so the requirement is explicit; boards\nenabling Dropbear must set these in their defconfig.\n\nSigned-off-by: Felipe Moura \u003cmoura.fmo@gmail.com\u003e\n"
    },
    {
      "commit": "5114ddd6c02d38d8bffa940edc2c2c7afb09b10c",
      "tree": "7eca28c7b7a9349d506d495334d2724c08b86099",
      "parents": [
        "09682dad05378607e537a92279883cdc6f8e4a38"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Mon Jun 22 20:49:27 2026 -0400"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Jul 20 09:40:04 2026 +0800"
      },
      "message": "examples/baromonitor: New LVGL example which integrates with barometer\n\nThis example is an LVGL application which reads pressure and temperature\ndata from a barometer and displays it on gauges. It is intended to\nprovide an idea of what LVGL on NuttX can practically be used for in an\napplication.\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    }
  ],
  "next": "09682dad05378607e537a92279883cdc6f8e4a38"
}
