)]}'
{
  "log": [
    {
      "commit": "b1a17ba453b80980ac6a6b7112a790b1f5592c6f",
      "tree": "44117622712c9ea607631a84b6517f935de92ab2",
      "parents": [
        "e09557ea8c629337052e2374dab3a4f20225149b"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Tue Oct 13 18:55:38 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:44 2026 +0800"
      },
      "message": "include/logging/nxscope/nxscope.h: fix codespell issues\n\nfix codespell issues for nxscope.h\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "e09557ea8c629337052e2374dab3a4f20225149b",
      "tree": "d254371822921151d0e9f4fecbfc6b32c0f5754c",
      "parents": [
        "0e157a57aa4149af7ef1ba68e50eede0fdcef459"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 02 10:05:16 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:44 2026 +0800"
      },
      "message": "logging/nxscope: route critical channels by the channel type\n\nCritical routing used the type passed by the put call, which never has\nthe cri bit, so critical channels were always buffered. When reached,\nthe sample was written at the start of the critical buffer, where the\nframe header overwrote it. Route by the channel info, lay the critical\nbuffer out as a stream frame and count the flags and channel id bytes\nin its size check.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "0e157a57aa4149af7ef1ba68e50eede0fdcef459",
      "tree": "7641e07ae15da9e7d2979bc32c11e5a7cdbac27c",
      "parents": [
        "d8f1282431f63a13aac88a0f7f658fd85f4280ed"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 02 10:05:16 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:44 2026 +0800"
      },
      "message": "logging/nxscope: report partial sends on the serial interface\n\nA non-blocking port accepts only what fits in its TX buffer, and the\nrest of the frame was lost. Write what the port takes now and report a\npartial send, so the stream retry completes the frame. The send does not\nwait for room on a non-blocking port: a caller blocked on a full port\nwould also block its producers.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "d8f1282431f63a13aac88a0f7f658fd85f4280ed",
      "tree": "5486cec3d151b01115f7f335c332d4c3cd24105e",
      "parents": [
        "2d833fc973c1b013afb160d3cab57766a7a57ec4"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 02 10:05:16 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:44 2026 +0800"
      },
      "message": "logging/nxscope: keep a stream frame intact until it is fully sent\n\nA failed stream send kept the finalized frame for retry, but later puts\nwere appended after its footer and the retry sent them without a frame\nheader, so the client dropped them silently. A partial send was taken as\nsuccess and the rest of the frame was lost. A failed critical channel\nsend also marked the stream buffer for retry, so the next stream frame\nwent out unfinalized.\n\nA retry now continues where the previous send stopped, puts while a\nframe waits are dropped and flagged in the next frame, and only the\nstream buffer keeps a frame for retry.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "2d833fc973c1b013afb160d3cab57766a7a57ec4",
      "tree": "0c73187c91ec916821895c65bbe18795ef3e7a9f",
      "parents": [
        "0932430d44386d2da403af8098ed6144854b5c89"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu Oct 01 10:32:55 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:44 2026 +0800"
      },
      "message": "logging/nxscope: add nxscope_put_samples() for sample blocks\n\nPut a block of samples of one channel with one lock and one channel\ncheck. The divider, space check and buffer write are split out of\nnxscope_ch_validate() and nxscope_put_common_m() unchanged and shared\nby both paths, so a block put stores exactly what n per-sample puts do.\n\nMeasured on nRF52840 (PPK2, 100kS/s int16 over CDC/ACM): put path\n~34% -\u003e ~21% of CPU, idle ~27% -\u003e ~34%.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "0932430d44386d2da403af8098ed6144854b5c89",
      "tree": "c08b2917cc0c9760f9c3dc9d82071ceb5de14393",
      "parents": [
        "22f51f210f5d4d41df064ae38acd4b8fe8dbb1e9"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Mon Aug 10 20:30:54 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:44 2026 +0800"
      },
      "message": "logging/nxscope: skip the sample divider when it is disabled\n\nWith div \u003d\u003d 0 the modulo is always zero, so the counter update and the\ndivision ran on every sample of every undecimated stream for nothing.\nGuard them; the decimating path is unchanged.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "22f51f210f5d4d41df064ae38acd4b8fe8dbb1e9",
      "tree": "d4e68942d207a4d09d0b216431864a2776e64f44",
      "parents": [
        "bbab560b6050e537e9bd6761f72fd51bb559ede7"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Wed Oct 14 14:32:13 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:27 2026 +0800"
      },
      "message": "system/nxinit: add stdout and stderr service options\n\nRedirect a service\u0027s stdout/stderr to a file (nsh \"cmd \u003e file\" style)\nbehind SYSTEM_NXINIT_SERVICE_REDIR (default n, not recommended).  Share\nthe console file actions and string assignment as common helpers.\n\nAssisted-by: OpenCode:mimo-2.6-pro\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "bbab560b6050e537e9bd6761f72fd51bb559ede7",
      "tree": "e5397e664204eb839769b267c789fd73ce168aed",
      "parents": [
        "93c3d23da427e9934a101bc025a6055faafe39ef"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Wed Oct 14 14:29:38 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 19:47:27 2026 +0800"
      },
      "message": "system/nxinit: use unsigned shifts for service flags\n\nSVC_REMOVE (1 \u003c\u003c 31) is UB; on sim with UBSan the report\u0027s stack\ntrace printing crashes and nxinit sim boards SEGV at boot.  Use\n(1U \u003c\u003c n) for all SVC_* flags to match the uint32_t flags field.\n\nAssisted-by: OpenCode:mimo-2.6-pro\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "93c3d23da427e9934a101bc025a6055faafe39ef",
      "tree": "95a25cc7a421289bf077dff4aff6935551558c83",
      "parents": [
        "467e2208894b7bb8a6da10b28bf53df1a8a7ce0b"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Wed Oct 14 23:26:54 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 15:00:45 2026 +0800"
      },
      "message": "system/nxdiag: Include stdlib.h for exit().\n\nnxdiag_main() calls exit() with EXIT_SUCCESS and EXIT_FAILURE in every\nconfiguration, but nxdiag.c included stdlib.h only with\nCONFIG_SYSTEM_NXDIAG_ESPRESSIF_CHIP_WO_TOOL.  stdio.h no longer brings\nin stdlib.h, so esp32-devkitc:nxdiag fails to build:\n\n  nxdiag.c:241:7: error: implicit declaration of function \u0027exit\u0027\n\nInclude stdlib.h unconditionally.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "467e2208894b7bb8a6da10b28bf53df1a8a7ce0b",
      "tree": "ab7036a9008ef028f0b1fab6d52efb960950a72d",
      "parents": [
        "5a668132f8992cff9ddf0fb605ffd55c7aa99b52"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Wed Oct 14 08:47:50 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 01:59:58 2026 +0800"
      },
      "message": "build(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2\n\nBumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 7.0.1 to 7.0.2.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v7.0.1...v7.0.2)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n  dependency-version: 7.0.2\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5a668132f8992cff9ddf0fb605ffd55c7aa99b52",
      "tree": "2092ceeff656c2939c3e3c44a70a4a8c4981882c",
      "parents": [
        "0f3776509d1e6709b162dffff477f4142866bae3"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Wed Oct 14 07:23:25 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 15 01:59:38 2026 +0800"
      },
      "message": "examples/optee_gp: Include stdlib.h and string.h.\n\noptee_gp_main.c calls malloc(), free(), memset() and memcmp(), but got\ntheir declarations only indirectly.  nuttx/lib/lib.h is no longer\nincluded by stdio.h, so imx93-evk:optee does not compile.  Include the\nheaders directly.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "0f3776509d1e6709b162dffff477f4142866bae3",
      "tree": "698f3185b7a81df72bb00c2917c0c7f13c846c68",
      "parents": [
        "7e03b989c7be11b325d76cc030baef1ae536df0d"
      ],
      "author": {
        "name": "Alan Carvalho de Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 12 15:29:28 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Oct 14 06:11:59 2026 -0300"
      },
      "message": "industry/cnc: Add nvmpg-dro application for the NVMPG pendant.\n\nAdd a CNC category under industry and the nvmpg-dro application:\na replacement firmware for the Digital Dream NVMPG CNC pendant\n(nvmpg-stm32f1 board) used with the NVUM/NVEM/EC300/EC500 motion\ncontrollers.\n\nIt speaks the same serial protocol as the original firmware: it\nreceives the 51-byte status frames from the controller, answers the\nidentify request, draws the axis positions, overrides, MPG step and\nlamps on the LCD (redrawing only what changed), and reports the key\npresses and releases back to the controller.  Optionally it shows\nthe NuttX logo at startup.\n\nSigned-off-by: Alan Carvalho de Assis \u003cacassis@gmail.com\u003e\nAssisted-by: Claude Opus 5.5\n"
    },
    {
      "commit": "7e03b989c7be11b325d76cc030baef1ae536df0d",
      "tree": "257ebbf74aefba392b819b89d73551827aafdc72",
      "parents": [
        "c56e79394c2998ca2369e0737925ab77c504da83"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 18:06:20 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 14 11:24:47 2026 +0800"
      },
      "message": "nshlib/nsh_parse.c: do not run a command with too many arguments.\n\nnsh_parse_command() and nsh_parse_cmdparm() printed \"too many\narguments\" when argc exceeded CONFIG_NSH_MAXARGUMENTS but still ran\nthe command. The command then ran with all arguments, or, with more\nthan MAX_ARGV_ENTRIES - 1 words, with the words after that silently\ndropped (they are not parsed).\n\nReport the error and fail the command instead, as a shell does when\nexec() fails with E2BIG. NSH commands already reject argc above their\nmaxargs in nsh_command(); this also covers builtin and file\napplications.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "c56e79394c2998ca2369e0737925ab77c504da83",
      "tree": "2016198eb2cf774e98a1bfa1413683b4d46a4b3d",
      "parents": [
        "4cf2c81817f150a475d27787ecb20f222376f5bc"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 12 08:42:56 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 14 09:10:38 2026 +0800"
      },
      "message": "apps: Include the headers that are used.\n\nThese files use declarations from stdlib.h, unistd.h, pthread.h and\nother headers without including them.  They got the declarations only\nbecause stdio.h included nuttx/lib/lib.h, and through it stdlib.h,\nnuttx/sched.h and more.\n\n- stdlib.h: adjtime, ads7046, audio_rttl, baromonitor, bmp280, hx711,\n  netpkt_ethercat, nimble_blecent (main, peer), nimble_bleprph (main,\n  gatt_svr), shv-test, stepper, tmp112, dhcpd, netlib_iptables,\n  netlib_ip6tables, adcscope, iptables, ip6tables, nxdiag, sensorscope,\n  nxboot boot.c, nand_sim, pcitest, cachetest, ymodem rb and sb.\n- unistd.h: nxboot boot.c and flash.c, fbcon, netpkt_ethercat,\n  nimble_blecent, nimble_bleprph, shv-test, stepper, watched,\n  lapi_other, ofloader, nand_sim, ser, setest, drivertest_block,\n  drivertest_i2c_spi, drivertest_relay, epoll, fdsantest_simple,\n  memfd_test, i8sak_acceptassoc, passwd_delete, plcatool.  NXDoom: in\n  i_timer.h, which every file that calls usleep() includes.\n- pthread.h: camera_bkgd, mqttc_pub, nxterm, pty_test, pwfb_events,\n  pwlines_events, ofloader, epoll, memfd_test, ostest\n  sched_thread_local.c and i8sak.h.\n- sched.h: ble_main, calib_udelay, drivertest_pm_smp.\n  nuttx/atomic.h: the atomic test.  nuttx/kmalloc.h: nand_sim,\n  drivertest_block.\n- testing/cmocka: the downloaded cmocka.c uses ftruncate(); include\n  unistd.h in cmocka_platform.h, which cmocka.c includes.\n- system/zlib: the downloaded gzlib.c, gzread.c and gzwrite.c use\n  lseek(), read() and write(); make zconf.h include unistd.h, as\n  zlib\u0027s configure does on Unix.\n- interpreters/wamr: the NuttX platform of older WAMR versions (sim:wamr\n  pins one) uses the pthread types without including pthread.h; build\n  WAMR with -include pthread.h.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "4cf2c81817f150a475d27787ecb20f222376f5bc",
      "tree": "59f6cf8469d9608c46a9d8a9dced153b03085760",
      "parents": [
        "779bd171387b89f38c60c916b4605e5cea62f4e5"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Mon Oct 12 08:44:17 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Oct 14 09:10:38 2026 +0800"
      },
      "message": "apps: Fix the nxstyle errors in the files that the next commit changes.\n\nThe next commit adds includes to these files, and checkpatch checks each\nchanged file as a whole.  So fix their old nxstyle errors first: the\nindentation of case labels and other lines, blank lines after\ndeclarations, a long comment, and a long string (split in two, with the\nsame output).  Only the layout changes.\n\ncodespell also checks the whole files: fix \"Types\" and \"transfer\" in\nsb_main.c, \"corresponds\" in hx711_main.c and \"primitive\" in\ni8sak_acceptassoc.c, and add the path line of testing/drivers/ser/ser.c\nto .codespell-ignore-lines (\"ser\" is not a typo there).\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "779bd171387b89f38c60c916b4605e5cea62f4e5",
      "tree": "d80f6ad61cb884c51c90347c090bb8438f11e464",
      "parents": [
        "7691b5a6ae40d3e084b542a54ad813cb78155058"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Thu Oct 08 11:58:04 2026 -0300"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Tue Oct 13 23:32:59 2026 +0800"
      },
      "message": "system/brctl: Add Ethernet bridge configuration command.\n\nAdd the brctl command to create and delete Ethernet bridges and to add or\nremove their ports, using the SIOCBRADDBR, SIOCBRDELBR, SIOCBRADDIF and\nSIOCBRDELIF ioctl commands.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "7691b5a6ae40d3e084b542a54ad813cb78155058",
      "tree": "93056d1d05064e2ac3324f2d3811acfc63cf6014",
      "parents": [
        "fb8bb05629f69804b4f6711074a3a9397d375cf0"
      ],
      "author": {
        "name": "Sarthak Pandey",
        "email": "sarthak@email.com",
        "time": "Mon Oct 12 22:20:42 2026 +0530"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 13 22:15:12 2026 +0800"
      },
      "message": "netutils/dropbear: fix CMake build target names, scp includes, and main alias\n\n- Use apps_\u003cname\u003e target names for target_include_directories,\n  target_compile_definitions, and target_compile_options.\n- Add missing libtomcrypt and libtommath include directories and\n  definitions for apps_scp.\n- Use set_property(... APPEND ...) on dropbear/src/scp.c so the\n  main\u003dscp_main alias is preserved.\n- Place dropbear_main.c as the first source in SRCS so nuttx_add_application\n  assigns the main alias to it.\n- Remove duplicate target_sources(apps PRIVATE).\nFixes #3834\n\nSigned-off-by: Sarthak Pandey \u003csarthak@email.com\u003e\n"
    },
    {
      "commit": "fb8bb05629f69804b4f6711074a3a9397d375cf0",
      "tree": "eb4f84e921b8ba297a239ec6b3a9132825a739fa",
      "parents": [
        "ed6e03e2320531c3ea2216a04050452fff3802f3"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Sun Oct 11 19:27:30 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 13 09:28:51 2026 +0800"
      },
      "message": "system/nxinit: test that an empty action is skipped\n\nParse an \"on\" section with no command under it, trigger its event, and\ncheck that it never reaches the ready queue and that\ninit_action_run_command() reports INT_MAX instead of taking the head of\nan empty command list.\n\nWithout the preceding fix this test fails at the ready-queue assertion,\nand removing that assertion so the run path is reached crashes on a NULL\ndereference.\n\nAssisted-by: Kiro:claude-opus-5\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "ed6e03e2320531c3ea2216a04050452fff3802f3",
      "tree": "e24a3a087d743d072c8637b27098c3998bb583b1",
      "parents": [
        "53ff941e3026694013663a604ea0265fe6840fd3"
      ],
      "author": {
        "name": "Kai Cheng",
        "email": "chengkai@xiaomi.com",
        "time": "Sun Oct 11 19:27:30 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Oct 13 09:28:51 2026 +0800"
      },
      "message": "system/nxinit: skip actions without commands\n\nAn \"on\" section can end up with an empty command list: the section line\nis accepted on its own, and a board whose init.rc goes through the C\npreprocessor can have every command inside the section compiled out.\nadd_ready() queued such an action anyway, and init_action_run_command()\nthen took the head of its empty command list, which\nlist_peek_head_type() reports as NULL, and dereferenced it.\n\nDo not queue an action that has no commands.\n\nAssisted-by: Kiro:claude-opus-5\nSigned-off-by: Kai Cheng \u003cchengkai@xiaomi.com\u003e\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "53ff941e3026694013663a604ea0265fe6840fd3",
      "tree": "e0b126dc7da67cf04057975275d5a310a3932a1c",
      "parents": [
        "c133161f87409c92bc6494e5196311a3641e4a1e"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Wed Oct 07 18:03:06 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Oct 12 09:51:22 2026 -0300"
      },
      "message": "examples/pmstress: Add a power management current staircase.\n\nWalk the PM states in a fixed, timed sequence (active, idle, standby,\nthen the deepest state for ever), with a 1 s full-speed burst between\nthe steps, so that a logging supply can record the current of each\nstate with no debugger or console attached.\n\nOn the rp23xx, \"pmstress suspend \u003cseconds\u003e\" also suspends to RAM with\nthe BOARDIOC_RP23XX_SUSPEND boardctl() command, and prints the wake\nsource.  The wake is an RTC alarm that it sets with RTC_SET_RELATIVE,\nnot an rp23xx timer, so it needs RTC_DRIVER and RTC_ALARM.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "c133161f87409c92bc6494e5196311a3641e4a1e",
      "tree": "0f0575b5e40376ed9c2a7ca128fc2e00213fa91b",
      "parents": [
        "6c461cbda21d3c29b3dc4856d040b9a7b0424b1f"
      ],
      "author": {
        "name": "Junbo Zheng",
        "email": "zhengjunbo1@xiaomi.com",
        "time": "Fri Oct 09 21:50:53 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 20:07:19 2026 +0800"
      },
      "message": "examples/mml_parser: Fix \"occured\" typo in the error message\n\nFix the misspelling flagged by codespell when this file was touched\nby the nitems conversion.\n\nAssisted-by: Claude Code (glm-5.3) \u003cclaude@anthropic.com\u003e\nSigned-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n"
    },
    {
      "commit": "6c461cbda21d3c29b3dc4856d040b9a7b0424b1f",
      "tree": "465daeeed8fc588022615dfd8697ad68fc3668f2",
      "parents": [
        "acbb8b33f362cabdde0c5c7408f793d8a8002f51"
      ],
      "author": {
        "name": "Junbo Zheng",
        "email": "zhengjunbo1@xiaomi.com",
        "time": "Fri Oct 09 21:50:18 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 20:07:19 2026 +0800"
      },
      "message": "misc: Fix pre-existing nxstyle issues in files touched by the nitems conversion\n\nThe CI checkpatch runs nxstyle on every file a patch touches, not just\non the changed lines.  Resolve the accumulated alignment, blank-line\nand missing-braces issues in those files so that the conversion can\npass the checks.  Whitespace-only changes plus braces added around\nsingle statements where nxstyle requires them; no functional changes.\n\nAssisted-by: Claude Code (glm-5.3) \u003cclaude@anthropic.com\u003e\nSigned-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n"
    },
    {
      "commit": "acbb8b33f362cabdde0c5c7408f793d8a8002f51",
      "tree": "fcfdad23fdd54d87cb2a5dfb46906d6d29186c55",
      "parents": [
        "56c9b325c7e87268a0d7342a348b99dc9b6212c7"
      ],
      "author": {
        "name": "Junbo Zheng",
        "email": "zhengjunbo1@xiaomi.com",
        "time": "Sat Oct 03 23:37:35 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 20:07:19 2026 +0800"
      },
      "message": "misc: Convert the remaining sizeof(arr)/sizeof(arr[0]) to nitems\n\nConvert the remaining open-coded sizeof(arr) / sizeof(arr[0])\noccurrences to nitems() from \u003csys/param.h\u003e across examples, industry,\nnshlib, system and the testing suites.\n\nAssisted-by: Claude Code (glm-5.3) \u003cclaude@anthropic.com\u003e\nSigned-off-by: Junbo Zheng \u003czhengjunbo1@xiaomi.com\u003e\n"
    },
    {
      "commit": "56c9b325c7e87268a0d7342a348b99dc9b6212c7",
      "tree": "9538176cb28e6d5262bfcafb20bc41d8427e7019",
      "parents": [
        "ae2dcf6b8f04885fecbd3ae34a7c45d738533f27"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sat Oct 10 23:42:32 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 09:04:44 2026 +0800"
      },
      "message": "netutils/netcat, system/nxinit: Include the headers that are used.\n\nnetcat_main.c uses errno and true, and nxinit/parser.c uses errno and\nthe error codes, but neither file includes errno.h, and netcat_main.c\ndoes not include stdbool.h.  They compile only because other headers\ninclude them indirectly.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "ae2dcf6b8f04885fecbd3ae34a7c45d738533f27",
      "tree": "24ef3fb86928c6a1a68c240f24be729b73a5f465",
      "parents": [
        "ba47d6cffd11428968aa0d8f2e001df5ab1099d0"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sat Oct 10 23:42:32 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 09:04:44 2026 +0800"
      },
      "message": "netutils/netcat: Fix the nxstyle error in netcat_main.c.\n\nAdd the blank line after the declarations in main().  No code change.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "ba47d6cffd11428968aa0d8f2e001df5ab1099d0",
      "tree": "4ea64bf3eecb8f6b158aa07077fd172f665ae26f",
      "parents": [
        "1f825a5cc8df06ab188467f6a5b88ed6921dd1be"
      ],
      "author": {
        "name": "simbit18",
        "email": "simbit18@gmail.com",
        "time": "Sun Oct 11 16:58:44 2026 +0200"
      },
      "committer": {
        "name": "CeDeROM",
        "email": "tomek@cedro.info",
        "time": "Mon Oct 12 01:38:35 2026 +0200"
      },
      "message": "workflows/build.yml: Fix related to prolonged use of the msys2 job\n\nTo prevent the job from using the Windows Runner Image for an extended period (6 hours), the temporary solution is to:\n - Use the previous setup-msys2 (GitHub Action to setup MSYS2).\n    https://github.com/msys2/setup-msys2\n - Add the maximum number of minutes that the `msys2` job can run before GitHub automatically terminates it.\n       GitHub Actions timeout\nhttps://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes\n\nSigned-off-by: simbit18 \u003csimbit18@gmail.com\u003e\n"
    },
    {
      "commit": "1f825a5cc8df06ab188467f6a5b88ed6921dd1be",
      "tree": "b11e0ab8fba71891e6a451c9595d0c7666bbf4e7",
      "parents": [
        "526e292c91d23d5b630a5a69dab7467e2afe0446"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 15:20:36 2026 +0200"
      },
      "committer": {
        "name": "simbit18",
        "email": "101105604+simbit18@users.noreply.github.com",
        "time": "Sun Oct 11 21:34:00 2026 +0200"
      },
      "message": "examples/mqttc: Fix publisher program name in CMake build.\n\nCMakeLists.txt named the publisher CONFIG_EXAMPLES_MQTTC_PUB_PROGNAME,\nwhich Kconfig does not define (the option is EXAMPLES_MQTTC_PROGNAME,\nas used by the Makefile). The CMake build therefore registered no\nmqttc_pub builtin. Use the Kconfig name.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "526e292c91d23d5b630a5a69dab7467e2afe0446",
      "tree": "b3e48b1aed30ef5337f4b6be94f822ef1ddfe3fd",
      "parents": [
        "c85eed67ce2c76b1306275790d041ccc7d331b1c"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 09 19:46:22 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 02:37:02 2026 +0800"
      },
      "message": "interpreters/python: add CMake build support.\n\nCPython was only buildable with Make. The CMake build follows the\nMakefile: download and patch CPython, build the host Python, configure\nand build the target libpython, pack the standard library into a ROMFS\nimage and link libpython, libHacl_Hash_SHA2 and libexpat into NuttX.\n\nCPython\u0027s configure gets the flags NuttX compiles C sources with: the\ndirectory compile options (the arch toolchain flags, with\n$\u003cCOMPILE_LANGUAGE:...\u003e resolved for C), the global NuttX options,\ndefinitions and include directories. ARFLAGS carries \"rcs\" because\nCMAKE_AR is the bare archiver.\n\nTested with qemu-intel64:python and rv-virt:python (with loadable\nmodules disabled: CMake has no NSH symbol table for them yet) on QEMU.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "c85eed67ce2c76b1306275790d041ccc7d331b1c",
      "tree": "634b9d7c46d4f2c49221dec7e8e728d71388eae0",
      "parents": [
        "d7cf29f02120042f9b1e68f28e068e1e9c47ccf0"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 15:20:49 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 02:36:32 2026 +0800"
      },
      "message": "examples/nxmbserver: Reset g_running on every run.\n\ng_running was initialized to true only at load time and the signal\nhandler sets it to false. NuttX does not re-initialize .data between\nruns of a builtin, so after one SIGINT/SIGTERM every later nxmbserver\nrun in the same boot left the poll loop at once. Set g_running before\nconnecting the signal handlers.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "d7cf29f02120042f9b1e68f28e068e1e9c47ccf0",
      "tree": "70c7101492362f7344c0036c0a5d3b07e89ae0eb",
      "parents": [
        "74df79a539e87fae10744276088fe09b31b825dc"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Sat Oct 10 15:20:49 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Oct 12 02:36:24 2026 +0800"
      },
      "message": "industry/nxmodbus: Accept 4-byte RTU frames.\n\nNXMB_RTU_MIN_FRAME_SIZE was 5, but the shortest valid RTU frame is\nunit_id + fc + 2 CRC bytes \u003d 4 bytes, e.g. a Report Server ID (FC17)\nrequest. Such requests were dropped and never answered. Set the\nminimum to 4. The ASCII transport already accepts the equivalent\nminimum frame (addr + fc + LRC).\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "74df79a539e87fae10744276088fe09b31b825dc",
      "tree": "eeb3f38c01063750c6c82fbd522f2a084f52ac70",
      "parents": [
        "27ecdd789f3e985f68610ea39c0aa3dcd6000d93"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Oct 11 08:58:13 2026 +0200"
      },
      "committer": {
        "name": "Mateusz Szafoni",
        "email": "raiden00pl@gmail.com",
        "time": "Sun Oct 11 16:19:20 2026 +0200"
      },
      "message": "testing/ostest: Restore the round-robin test defaults.\n\nThis reverts commit 27ecdd789f3e985f68610ea39c0aa3dcd6000d93.\n\nrr_test records which thread finishes each run, and fails if the first\nCONFIG_TESTING_OSTEST_RR_RUNS runs all come from one thread.  With 4\nruns over a range of 10000, one thread on qemu-armv8a does all its\nruns within one time slice, before the other thread finishes a run,\nand the test stops with an assertion at roundrobin.c:281.  Since that\nchange, ostest crashes on every qemu-armv8a configuration that CI\ntests (arm64-01).\n\nRestore 30000 and 10 runs.  A slow board can set\nCONFIG_TESTING_OSTEST_RR_RANGE and CONFIG_TESTING_OSTEST_RR_RUNS lower\nin its defconfig.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "27ecdd789f3e985f68610ea39c0aa3dcd6000d93",
      "tree": "60a1b1913da533d1e801c23c0786b5b130121384",
      "parents": [
        "72018699a3fe59df30eb6952fce175df23aee553"
      ],
      "author": {
        "name": "Swatantra Yadav",
        "email": "maverickswatantra@gmail.com",
        "time": "Mon Oct 05 23:09:54 2026 +0530"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 03:00:11 2026 +0800"
      },
      "message": "testing/ostest: shrink default round-robin getprime test duration\n\nThe round-robin scheduler test runs two threads that calculate prime\nnumbers up to CONFIG_TESTING_OSTEST_RR_RANGE for CONFIG_TESTING_OSTEST_RR_RUNS.\nUsing default range of 30,000 and 10 runs requires billions of trial-division\nloop iterations, causing OSTest to stall for over 5 minutes on slower targets\nsuch as Cortex-M0/M3 and Raspberry Pi Pico (RP2040).\n\nRestore the default search range to 10,000 (aligning with roundrobin.c\nheader notes and documentation in Documentation/applications/testing/ostest/)\nand reduce the default number of runs from 10 to 4. This significantly\nreduces runtime while providing sufficient time-sliced context switches\nto reliably verify round-robin scheduling.\n\nFixes #3620\n\nSigned-off-by: Swatantra Yadav \u003cmaverickswatantra@gmail.com\u003e\n"
    },
    {
      "commit": "72018699a3fe59df30eb6952fce175df23aee553",
      "tree": "eeb3f38c01063750c6c82fbd522f2a084f52ac70",
      "parents": [
        "5c31efbd2c2b101c8ed36b4b7471b36ab5b00fa3"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Wed Oct 07 19:17:30 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:55:44 2026 +0800"
      },
      "message": "examples/fdpicxip, testing/fs/xipfs: Each task group has its own library.\n\nThe NuttX change \"libs/libc/elf: Keep a module registry per task group\"\ngives each task group its own list of loaded ELF objects.  A library that\na module names in DT_NEEDED is now loaded once per task group, not once\nfor the system.  Two instances of a module thus have two copies of the\nlibrary data.  The library text in xipfs is still shared, and is pinned\nonce per instance.\n\nChange the C++ test to check this:\n\n* The library is pinned twice while both instances run.\n* The library destructor runs once per instance.\n* Each destructor sees only the adds of its own instance.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "5c31efbd2c2b101c8ed36b4b7471b36ab5b00fa3",
      "tree": "bff8b98713e1d1ab9dbaf46a30622940a580269b",
      "parents": [
        "6016be0ccdc1814eaf3e2550d296d46892a2e121"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu Oct 08 11:33:13 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:54:45 2026 +0800"
      },
      "message": "system/nxinit: Run builtin commands with the original signal mask.\n\ninit blocks all signals and only unblocks them in ppoll(). Builtin\ncommands run in the init task, so tasks and threads they create\ninherited a mask with all signals blocked: e.g. the NTP client started\nby \"netinit\" never received the wakeup signal of ntpc_stop(), and\nntpcstop waited for the client\u0027s current sleep to end.\n\nSave the mask init had before blocking and run builtin commands with it,\nkeeping SIGCHLD blocked so that a child exiting meanwhile still wakes\nup ppoll().\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "6016be0ccdc1814eaf3e2550d296d46892a2e121",
      "tree": "904c63e14c2df34f848fa07054ac5d9738ccecac",
      "parents": [
        "31f84f1cad60d412e59f3889cdc5ee9a050e6c6e"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Thu Oct 08 22:02:44 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:54:38 2026 +0800"
      },
      "message": "nshlib, testing/ostest: Include the headers that are used.\n\nThese files use lib_get_pathbuffer(), lib_get_tempbuffer(), the\natomic_t operations and posix_spawn() without including\n\u003cnuttx/lib/lib.h\u003e, \u003cnuttx/atomic.h\u003e or \u003cspawn.h\u003e.  They compile only\nbecause other headers include those indirectly.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "31f84f1cad60d412e59f3889cdc5ee9a050e6c6e",
      "tree": "c07c58d01de7d6414cef02b9307d5f95a3475c23",
      "parents": [
        "808fbd0733e21fd4d31ccc99e0a04cefe51ab514"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Thu Oct 08 22:03:07 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:54:38 2026 +0800"
      },
      "message": "nshlib: Fix nxstyle errors in nsh_parse.c and nsh_timcmds.c.\n\nAdd missing blank lines after declarations and fix the indentation of\none block.  No functional change.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "808fbd0733e21fd4d31ccc99e0a04cefe51ab514",
      "tree": "7203e1b3c5dbb45a0f67cb568b6d5c312eca774c",
      "parents": [
        "0a9d3d2d2c7fb7b4d2b8e3ae58d6736e62697039"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Fri Oct 09 13:08:45 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:54:12 2026 +0800"
      },
      "message": "system/nxmbclient: pack write-coils values into bits.\n\nnxmb_write_coils() takes the coil values packed, one bit per coil, and\nsends (count + 7) / 8 bytes. cmd_write_coils() passed one byte per\ncoil, so \"write-coils 40 1 0 1 1 0 1\" wrote only coil 40 and still\nprinted OK. Pack the values into bits.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "0a9d3d2d2c7fb7b4d2b8e3ae58d6736e62697039",
      "tree": "d2f272b4327fa193479076e870796d3adebaa57d",
      "parents": [
        "546c3d53596e55f6d401a664316cc243c8f61dd2"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Fri Oct 09 16:06:32 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:53:40 2026 +0800"
      },
      "message": "netutils/codecs: Include errno.h in md5.c.\n\nmd5_file() uses errno and ENOMEM but md5.c did not include \u003cerrno.h\u003e.\nIt compiled only because another header included it indirectly.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "546c3d53596e55f6d401a664316cc243c8f61dd2",
      "tree": "007dec7d0cc0c27699f2eac570d3dc054a158415",
      "parents": [
        "34a4fc864c50ce58093cbfcad8ff05bbb034b4bc"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Fri Oct 09 16:06:32 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:53:40 2026 +0800"
      },
      "message": "netutils/codecs: Fix the nxstyle error in md5.c.\n\nAdd a blank line after a declaration.  Whitespace only.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "34a4fc864c50ce58093cbfcad8ff05bbb034b4bc",
      "tree": "1d70818e161da53ef551342cd55204fe40cfefc8",
      "parents": [
        "da92a492bda0d58534de97a66cfde0db06705244"
      ],
      "author": {
        "name": "jsanchez-2g",
        "email": "jsanchez@2g-eng.com",
        "time": "Fri Oct 09 09:25:12 2026 -0500"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Oct 11 02:53:30 2026 +0800"
      },
      "message": "testing/crctest: Cover SMBus PEC and CRC8 compatibility.\n\nExercise crc8smbus() and crc8smbuspart() using known PEC vectors,\nall split points of the standard check string, empty buffers and all\n256 seed values against an independent bitwise reference.\n\nVerify the existing complemented crc8ccitt() behavior is preserved.\nRetain the existing CRC variant tests. All nine cases pass in a native\nbuild with real CMocka 1.1.7. Requires the companion NuttX SMBus helpers.\n\nAssisted-by: Codex:GPT-6\nSigned-off-by: jsanchez-2g \u003cjsanchez@2g-eng.com\u003e\n"
    },
    {
      "commit": "da92a492bda0d58534de97a66cfde0db06705244",
      "tree": "c5f50d32345e7adca3e2809a6a04b3bde7ffbd9d",
      "parents": [
        "3cab1855103a97cc5df1bee01d11f9b4f34e649d"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu Oct 08 10:40:14 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Oct 09 20:39:31 2026 +0800"
      },
      "message": "netutils/dhcpd: Replace the FIXME #warning with a comment.\n\narm64 builds C code with -Werror, so the #warning in\ndhcpd_allocipaddr() made netutils/dhcpd fail to build on every arm64\ntarget. Keep the note as a comment.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "3cab1855103a97cc5df1bee01d11f9b4f34e649d",
      "tree": "bc382233c2cc37fc903d20414c4d3df7c54b6f1e",
      "parents": [
        "1f8cac8b87a925403340947582b026cf2a117423"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu Oct 08 10:40:14 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Oct 09 20:39:31 2026 +0800"
      },
      "message": "netutils/dhcpd: Fix nxstyle issues.\n\nFix alignment, add blank lines after declarations and split a multiple\ndeclaration. No functional change.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "1f8cac8b87a925403340947582b026cf2a117423",
      "tree": "6d8b178802ff8afa98555565fa5e29cdb9bb40e6",
      "parents": [
        "9a4b29984ce0b5daed777f598642eb9606642985"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Oct 07 16:09:47 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 08 11:36:51 2026 +0800"
      },
      "message": "netutils/ping: Set ICMP_FILTER at the SOL_RAW level.\n\nThe filter was set with level IPPROTO_ICMP, which is 1, the same value\nas SOL_SOCKET, so psock_setsockopt() handled it as the socket level\noption 1, SO_BROADCAST, and the ICMP filter was never set. ping then\nreceived unrelated ICMP messages (e.g. port unreachable), stopped\nwaiting for the echo reply of that sequence and counted it as lost:\nwith port unreachable messages arriving at 50/s, ping -c 20 lost 19\nof 20 replies on sim.\n\nThe ICMP socket expects ICMP_FILTER at SOL_RAW, as on Linux.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "9a4b29984ce0b5daed777f598642eb9606642985",
      "tree": "da05855aa4a174ec7348f4ebd8eb940870c80a70",
      "parents": [
        "cd169288e86e456f050e1640f79fa04545f6cb5f"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Oct 07 16:09:47 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 08 11:36:37 2026 +0800"
      },
      "message": "netutils/ntpclient: Stop the daemon promptly on ntpc_stop().\n\nntpc_stop() sets NTP_STOP_REQUESTED and signals the daemon, but the\ndaemon checked the state only at the top of its loop. The signal\ninterrupts just the call blocked at that moment; the daemon then\ncontinued with the remaining samples, each waiting up to\nCONFIG_NETUTILS_NTPCLIENT_TIMEOUT_MS when the server does not answer,\nand slept the retry delay. ntpcstop took about 21 s on sim with an\nunreachable server.\n\nStop collecting samples and skip the retry delay once a stop is\nrequested.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "cd169288e86e456f050e1640f79fa04545f6cb5f",
      "tree": "7300e72889243da180283576f2a39d3731e12a41",
      "parents": [
        "033b6c8d01e8cc7e686ab2b4e119075d1f158a24"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Oct 07 19:40:30 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 08 11:36:37 2026 +0800"
      },
      "message": "netutils/ntpclient: Fix nxstyle issues.\n\nBrace the month name checks, indent the switch cases, split a multiple\ndeclaration and add a blank line after a declaration. No functional\nchange.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "033b6c8d01e8cc7e686ab2b4e119075d1f158a24",
      "tree": "b9730ebb31a2ba64d974a88c6fa861feec972513",
      "parents": [
        "fbd5bc133bee74afb872781467a2c3f69e496cac"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Tue Oct 06 18:34:40 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Oct 07 16:06:16 2026 -0300"
      },
      "message": "examples/nxflat: Fix the stack size and the argv[0] check of the task test.\n\nThe child task had a 512 byte stack.  Its first printf() overflows it and\noverwrites the argument strings at the bottom of the stack, so the child\nsaw an empty argv[0].  Use CONFIG_DEFAULT_TASK_STACKSIZE.\n\nWith CONFIG_TASK_NAME_SIZE set to 0 the test expected argv[0] to be\n\"\u003cnoname\u003e\".  But argv[0] is always the name given to task_create(); the\noption only limits the copy in the TCB.  Compare with that name in all\nconfigurations.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "fbd5bc133bee74afb872781467a2c3f69e496cac",
      "tree": "f62359fe245da76f5832d74754dd33aeaa161434",
      "parents": [
        "1ece0b12bac97da224894b05f5fec4ad859cbb0e"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Tue Oct 06 18:34:40 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Oct 07 16:06:16 2026 -0300"
      },
      "message": "examples/nxflat: Fix the checks of the signal test.\n\nThe handler set sigusr2_rcvd for SIGUSR1 and sigusr1_rcvd for SIGUSR2, so\nthe first check failed even when the signal arrived.  The last check\nremoved the handler, sent SIGUSR2 and then required that the handler ran.\n\nSet the flag of the signal that arrived, and make the last check require\nthat the removed handler does not run.  Also name SIGUSR2, not SIGUSR1, in\nthe messages of that step.\n\nThe test still fails before apache/nuttx#20468: getpid() in a module that\nexec() started returns the pid of its caller, so kill(getpid(), SIGUSR1)\nsignals examples/nxflat instead of the module.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "1ece0b12bac97da224894b05f5fec4ad859cbb0e",
      "tree": "90f6a890fe3f8355f63d88280943c8540e0d5517",
      "parents": [
        "4f73de0e2968b316640760f3cc999b97b6c39605"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Sep 27 10:34:22 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Oct 07 16:06:16 2026 -0300"
      },
      "message": "examples/nxflat: Install the modules without a GNU extension.\n\ninstall -D is GNU\u0027s, and creates the leading directories.  The BSD install\nthat macOS carries has no such option and fails the build of every module.\nmkdir -p does that part, and the mode stays explicit.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "4f73de0e2968b316640760f3cc999b97b6c39605",
      "tree": "3c0bd3397a5aa3df0cb5ab114b48d5feffcef158",
      "parents": [
        "dbcc33f306e4ba84b881dd62ff9656ea0565b299"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Sun Sep 27 10:04:48 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Oct 07 16:06:16 2026 -0300"
      },
      "message": "examples/nxflat: Build the test modules that do build.\n\nThe Makefile said \"Most of these do no build yet\" and built three of the nine.\nEight build and convert: errno, hello, longjmp, mutex, pthread, signal, struct\nand task.  What had kept most of them out was read-only data reached\nPC-relative, which the tree now compiles GOT-relative.\n\nBUILD_SUBDIRS was assigned but never read, so mutex, pthread and task stayed\nout even where the configuration allowed them.  The conditionals now append to\nSUBDIRS, which the recipes walk.\n\nlongjmp is built only where CONFIG_ARCH_SETJMP_H is set.  It imports setjmp()\nand longjmp(), which the firmware exports only when it supplies its own\nimplementation; without the guard the kernel link fails on two undefined\nreferences.\n\nhello++ stays out: two of its four modules convert, the third needs\nR_ARM_TARGET1 from the converter and the fourth needs an iostream.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "dbcc33f306e4ba84b881dd62ff9656ea0565b299",
      "tree": "1c09c702fc2ca1c147f0d4958222686ef18818a4",
      "parents": [
        "6fd13da93b1cc0c3c61b40b4f88f84d6deb25bde"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Oct 07 16:09:47 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 08 02:39:55 2026 +0800"
      },
      "message": "netutils/tftpc: Fix NULL dereference when the WRQ is acknowledged.\n\ntftpput_cb() calls tftp_rcvack() with a NULL blockno for the ACK of\nthe write request, but tftp_rcvack() always stored the received block\nnumber. On targets where address 0 is not writable (e.g. sim) every\nTFTP put crashed.\n\nStore the block number only if the caller asked for it.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "6fd13da93b1cc0c3c61b40b4f88f84d6deb25bde",
      "tree": "80f6744fd130f9177df25f18000ce47d67f12348",
      "parents": [
        "cfb0af0cca078ced84741010b6e71d3611608b56"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Tue Oct 06 19:47:54 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Oct 07 15:30:19 2026 -0300"
      },
      "message": "examples/fdpicxip: Build the FDPIC modules in the application build.\n\nThe modules that examples/fdpicxip and testing/fs/xipfs load were\ncommitted as C headers.  An explicit \u0027make regen\u0027 built them, with flags\nand a linker script of its own.\n\nBuild them as ordinary loadable modules and shared libraries instead:\nMODULE \u003d m and BUILD_SHARED_LIBRARY in make, MODULE m and DYNLIB y in\nCMake.  With CONFIG_FDPIC, the module flags of the tree make each of them\nan FDPIC module.  Each app then embeds the modules it loads from bin/\nafter they are linked, as the elf and sotest examples embed theirs.\n\nA module that links against a library builds the library first, so that\nthe library exists when the module links.  manyneeded names one stub\nlibrary more than CONFIG_LIBC_ELF_MAXDEPEND, so the test follows that\noption.  lazymod is compiled without -mlong-calls: its imports must go\nthrough the PLT and stay in DT_JMPREL, which is what it exists to test.\n\nmkblobs.sh stops the build if a module is not an FDPIC shared object, and\nthe module link already stops if arm-uclinuxfdpiceabi-ld is missing.  So\na tree with CONFIG_FDPIC builds these apps only with a toolchain that\nmakes FDPIC modules.\n\nThe headers, header.template and the regen Makefile go.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "cfb0af0cca078ced84741010b6e71d3611608b56",
      "tree": "d981c3ad777799a2d76535b609452b2a645232db",
      "parents": [
        "86e7c460b4e1b3323a09542248ff7bdee8e89221"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Tue Oct 06 19:50:59 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Oct 07 15:30:19 2026 -0300"
      },
      "message": "testing/fs/xipfs: Fix the indentation of a block in the defrag test.\n\nnxstyle reports \"Bad left brace alignment\" for the block that holds the\nopen-file obstruction check: its braces were at column 4, not 2.  Move\nthe block two columns left.  This changes whitespace only, and the error\nis older than the change that follows.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "86e7c460b4e1b3323a09542248ff7bdee8e89221",
      "tree": "7b87a9a200bf01ab68c1766633446f9a12185e31",
      "parents": [
        "ebf379ffe273244de8da291d5c455c532c54ddb3"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Wed Oct 07 10:33:37 2026 +0200"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 08 01:52:57 2026 +0800"
      },
      "message": "examples/tcpblaster: fix CMake build with GCC 14\n\nWith CMake, the tcpblaster host tool is built as part of the NuttX\nbuild and uses the host C library headers. tcpblaster_server.c calls\naccept4(), which glibc declares only when _GNU_SOURCE is defined, so\nGCC 14 fails with \"implicit declaration of function \u0027accept4\u0027\".\n\nDefine _GNU_SOURCE for the host tool in tcpblaster_host.cmake. The\nMake build is not affected.\n\nAssisted-by: Claude:claude-opus-5-5\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "ebf379ffe273244de8da291d5c455c532c54ddb3",
      "tree": "38efbc3fbb870c84f8d25a7b79f70e645d10975d",
      "parents": [
        "4ca4c700ddc5058088ef80e34f2e11301408cd26"
      ],
      "author": {
        "name": "Erik Englund",
        "email": "erik.englund@gmail.com",
        "time": "Fri Oct 02 19:55:32 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Oct 04 17:50:27 2026 -0300"
      },
      "message": "netutils/dhcpc: Fix nxstyle issues.\n\nComment indentation in dhcpc_parseoptions() and missing blank lines after\ndeclarations.  No functional change.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Erik Englund \u003cerik.englund@gmail.com\u003e\n"
    },
    {
      "commit": "4ca4c700ddc5058088ef80e34f2e11301408cd26",
      "tree": "210b78d7c0ebacf667dd5543e30db8107bb89022",
      "parents": [
        "00b6e59123363d7fc92d0a08cb43f449d438e4bc"
      ],
      "author": {
        "name": "Erik Englund",
        "email": "erik.englund@gmail.com",
        "time": "Fri Oct 02 19:34:25 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Sun Oct 04 17:50:27 2026 -0300"
      },
      "message": "netutils/dhcpc: Send the REQUEST before using the offered address.\n\ndhcpc_request() assigned the offered address to the interface as soon\nas the OFFER arrived, so that it could receive a unicast ACK.  The\nREQUEST then went out with the offered address as IP source, while\nRFC 2131 section 4.1 requires 0.0.0.0 until the server has assigned\nthe address.  Some routers treat such a client as one with a static\naddress; TP-Link Deco mesh routers, for example, list it as offline\nand do not offer address reservation for it.\n\nSend each REQUEST from the address the interface had before and only\nthen use the offered address while waiting for the ACK, so unicast ACKs\nare still received.  Also restore the old address when no ACK arrives\ninstead of leaving the unconfirmed offered address in place.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Erik Englund \u003cerik.englund@gmail.com\u003e\n"
    },
    {
      "commit": "00b6e59123363d7fc92d0a08cb43f449d438e4bc",
      "tree": "4070c58cdd6604dc298b126ff53539e8a948d9ae",
      "parents": [
        "8efc2726fbdd966b766ab512d37d479957e1a0a5"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Wed Sep 30 20:50:58 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Oct 01 23:18:31 2026 +0800"
      },
      "message": "mlearning/tflite-micro: make the tflm tool run real models\n\nThe tflm tool could only allocate a model: it knew nine operators,\nran Invoke() on uninitialized input, and never printed the result.\nThe 64 KB MicroProfiler also lived on the 4 KB task stack.\n\nRegister the operators a model uses (about 90 builtins), verify the\nfile with the FlatBuffers verifier, and add:\n\n  -I  print operators, input/output tensors and arena usage\n  -d  comma separated input values, quantized automatically\n  -x  raw input tensor file\n  -n  repeat inference and print the average Invoke() time\n\nOutputs are printed dequantized with argmax. Inputs are restored\nbefore every run because the planner may reuse their buffers. The\nresolver, profiler and interpreter are allocated on the heap.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "8efc2726fbdd966b766ab512d37d479957e1a0a5",
      "tree": "83b7de85a6307d049eb1371b6ba3d27bca3bd0fa",
      "parents": [
        "620a182f51065a50213627902d14a6c05ea87802"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Tue Aug 11 20:09:41 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Sep 30 13:25:06 2026 -0300"
      },
      "message": "examples/sandbox: Add a containment test for protected and kernel builds.\n\nA test that a user process which makes a forbidden access is stopped, and\nthat nothing else is.  It spawns this program again as a separate process\nto make the access, because a kernel build does not give user code\ntask_create(), and checks that the offender died, that the caller still\nruns and that a canary thread kept counting.  The canary is what tells\n\"the offender was contained\" from \"the whole system stopped\".\n\nEvery target has the outcome it expects:\n\n  self      the process\u0027s own data       must succeed\n  kernel    kernel memory                must fault\n  periph    a peripheral register        must fault\n  unmapped  an address with no mapping   must fault\n\n\"self\" is the control.  Without it a build that refuses every access\npasses every other check.  An MMU keeps processes apart but does not stop\none reaching a peripheral, and an unmapped access is refused by another\nmechanism again, so neither is covered by the kernel target.\n\nThe offender allocates memory and opens a file before the access.  The\ntest reads /proc/meminfo and /proc/\u003cpid\u003e/group/fd while it lives and after\nit is reaped, and fails if the counts never rose, since \"the same before\nand after\" says nothing if the resources were never seen.\n\nThe addresses come from Kconfig, because a user process cannot see kernel\nsymbols.  A protected build derives the kernel target from\nCONFIG_NUTTX_USERSPACE when none is set.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "620a182f51065a50213627902d14a6c05ea87802",
      "tree": "5ab50cd3c296b630ed053f1d84e55caa4c75d670",
      "parents": [
        "b66303e26aa537dd74d6abaeeeded81c151a7e35"
      ],
      "author": {
        "name": "Marco Casaroli",
        "email": "marco.casaroli@gmail.com",
        "time": "Fri Jul 24 23:39:54 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Wed Sep 30 13:25:06 2026 -0300"
      },
      "message": "examples/pffault: Add a test that touches a kernel address from user space.\n\nA small user program that reads or writes one address, by default\n0x3fc98000, the base of the ESP32-S3 kernel DRAM region.  A user process\nmust not reach it, so the access must fault and only the process must die.\n\"pffault w\" makes the access a store, and a second argument names another\naddress.\n\nWith CONFIG_ESP32S3_PAGEFAULT and CONFIG_ESP32S3_PAGEFAULT_SELFTEST on the\nkernel side, \"pffault r 0x80000000\" exercises the recoverable-fault restart\npath, and \"pffault r 0x0\" the report path.\n\nAssisted-by: Claude Code:claude-opus-5-5\nSigned-off-by: Marco Casaroli \u003cmarco.casaroli@gmail.com\u003e\n"
    },
    {
      "commit": "b66303e26aa537dd74d6abaeeeded81c151a7e35",
      "tree": "5f971a0a803e69942c93c3ab3586214fc1c7400e",
      "parents": [
        "a539a4d7688db8bccb7f540233096ba56cbe0289"
      ],
      "author": {
        "name": "Alan Carvalho de Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Sep 24 09:57:25 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Sep 28 08:53:30 2026 +0800"
      },
      "message": "examples/tinygl: add TinyGL gears demo\n\nRender Brian Paul\u0027s classic OpenGL \"gears\" demo with TinyGL on a NuttX\nframebuffer device.  TinyGL draws each frame into its own ZBuffer, which\nis then copied to the mmap()ed framebuffer (plus FBIO_UPDATE when\nCONFIG_FB_UPDATE is enabled), so partially drawn frames are never shown.\nThe frame rate is printed every five seconds.\n\nUsage: tinygl [frames] [fbdev]\n\nTested on sim:tinygl (640x480, 32 bpp): about 1400 FPS with\nCONFIG_DEBUG_FULLOPT on an x86_64 host, with both make and CMake.\n\nAssisted-By: Claude Opus 5.5 (1M context)\nSigned-off-by: Alan Carvalho de Assis \u003cacassis@gmail.com\u003e\n"
    },
    {
      "commit": "a539a4d7688db8bccb7f540233096ba56cbe0289",
      "tree": "705838b3026d9bd5efbd0e5e780dd4c54f9c28da",
      "parents": [
        "df19cbe26be2ea8029c7bf97b67134dfd3b223a7"
      ],
      "author": {
        "name": "Alan Carvalho de Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Sep 24 09:57:25 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Sep 28 08:53:30 2026 +0800"
      },
      "message": "graphics/tinygl: add TinyGL software OpenGL library\n\nAdd TinyGL (https://github.com/C-Chads/tinygl), a small software-only\nimplementation of a subset of OpenGL 1.1 written in portable C99, by\nFabrice Bellard, Gek and C-Chads, under a zlib-style license.\n\nLike graphics/lvgl, the sources are not kept in the repository: the\nbuild downloads a pinned git revision from GitHub\n(CONFIG_TINYGL_VERSION) and applies the NuttX patches that live next to\nthe Makefile:\n\n  0001 zfeatures: allow overriding the feature switches at build time\n  0002 Fix -Wstrict-prototypes warnings\n  0003 zbuffer: do not over-read the source in ZB_copyFrameBuffer()\n  0004 zbuffer.h: make the default allocator wrappers static inline\n\nThe TinyGL compile time features (pixel depth, GL_SELECT, GL_POLYGON,\nblending, texture size, ...) are exposed as CONFIG_TINYGL_* Kconfig\noptions.  They change public structures, so Make.defs / CMakeLists.txt\nexport them to every application that includes \u003cGL/gl.h\u003e or\n\u003czbuffer.h\u003e.\n\nBoth the make and the CMake builds are supported.  An unpack stamp file\nmakes sure an object directory created inside the source tree is never\nmistaken for downloaded sources.\n\nAssisted-by: Claude Opus 5.5 (1M context)\nSigned-off-by: Alan Carvalho de Assis \u003cacassis@gmail.com\u003e\n"
    },
    {
      "commit": "df19cbe26be2ea8029c7bf97b67134dfd3b223a7",
      "tree": "34e3af1e4e4dfabb6e5ece702efb84a0b2ac39d6",
      "parents": [
        "269bdf04408cc831ec647145d0d5195661329456"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Thu Sep 24 11:31:11 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Sep 27 18:47:41 2026 +0800"
      },
      "message": "netutils/ptpd: refuse to start when -H has no hardware timestamp support.\n\nWhen ptpd runs over IEEE 802.3 (-2) with hardware timestamping and\nETHTOOL_GET_TS_INFO does not report SOF_TIMESTAMPING_TX_HARDWARE,\nSOF_TIMESTAMPING_RX_HARDWARE and SOF_TIMESTAMPING_RAW_HARDWARE for the\ninterface, refuse to start instead of logging a warning and running in\nsoftware - the same way linuxptp/ptp4l refuses to start when hardware\ntimestamping is configured but not reported as supported by ethtool,\nrather than silently degrading. The error message names the missing\ncapability and points to -S, and the usage text documents the\nrequirement.\n\nHardware RX timestamps are required as well: without them the receive\ntimestamps come from the system clock while the transmit ones come from\nthe MAC, and the two cannot be combined into a meaningful delay.\n\nThe check is limited to the 802.3 transport, the only one on which ptpd\nretrieves hardware TX timestamps. -H is the default with\nCONFIG_NET_TIMESTAMP, so applying it to the UDP transports would make a\nplain \"ptpd\" refuse to start on any interface whose driver does not\nreport hardware timestamping, although it never needs that capability.\n\nAssisted-by: Claude:claude-sonnet-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n\n\n"
    },
    {
      "commit": "269bdf04408cc831ec647145d0d5195661329456",
      "tree": "b6f93003d083202c142efd83332f6f4ae87445fc",
      "parents": [
        "c78e4d69eadf15376b05877db36bd2f63dc3b8a6"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Thu Sep 24 10:33:26 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Sep 27 18:47:41 2026 +0800"
      },
      "message": "netutils/ptpd: query timestamping capabilities via ETHTOOL_GET_TS_INFO\n\nQuery interface hardware timestamping capabilities with the SIOCETHTOOL\nETHTOOL_GET_TS_INFO ioctl during initialization, the same way\nlinuxptp/ptp4l does on Linux, instead of detecting support through\nruntime trial and error. If the query itself fails, refuse to start.\n\nRemove the consecutive failure counter (hwts_tx_failures,\nPTP_HWTS_TX_MAX_FAILURES, hwts_tx_disabled). When hardware TX\ntimestamping is supported and requested, report genuine runtime timeouts\nas errors (ptperr) instead of silently downgrading to software\ntimestamping. Invalidate clock_source_valid in ptpd status while a\nhardware TX timestamp failure persists.\n\nAssisted-by: Gemini:gemini-3.8-pro\nAssisted-by: Claude:claude-sonnet-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n\n\n"
    },
    {
      "commit": "c78e4d69eadf15376b05877db36bd2f63dc3b8a6",
      "tree": "b3899a4c45e809a17dd281935ea2f2ba16ccd46c",
      "parents": [
        "dd35d76edd81b2b3ea8a86ee1546423b1c444c9a"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sat Sep 19 15:45:39 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: Add egress latency compensation for TX timestamps.\n\nThe frame leaves the MAC later than the moment its hardware transmit\ntimestamp is latched, because of the clock domain crossing and the PHY.\nThis fixed delay is the egressLatency port parameter of IEEE 1588.\n\nAdd the configured latency to every hardware transmit timestamp\nobtained through MSG_ERRQUEUE, the counterpart of the ingress\ncompensation.\n\n- Add CONFIG_NETUTILS_PTPD_EGRESS_LATENCY_NS (default 0, which applies\n  no compensation).\n- Add the -O option to override it at run time.\n- Add egress_latency_ns to struct ptpd_config_s.\n\nSoftware timestamps are not affected.\n\nAssisted-by: Claude:claude-sonnet-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "dd35d76edd81b2b3ea8a86ee1546423b1c444c9a",
      "tree": "df6d316f6c0011813fcde6a016f70c94d5835c4f",
      "parents": [
        "3727812c22fa64e97f9ee54a85e2ab3cb792b4b2"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sat Sep 19 15:45:39 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: Retrieve hardware TX timestamps via MSG_ERRQUEUE.\n\nTimestamp transmitted event messages with the hardware clock instead of\nreading the clock after sendmsg() returns.\n\nWhen hardware timestamping is selected on an AF_PACKET socket, request\nSOF_TIMESTAMPING_TX_HARDWARE for each event message, wait for the\nlooped-back packet on the error queue with MSG_ERRQUEUE, and take the\ntimestamp from its SO_TIMESTAMPING control message, as on Linux. Sync,\nDelay_Req and Pdelay_Req get their real departure time.\n\n- Use a transmit socket of its own, separate from the event socket, so\n  the error queue is not shared with received packets.\n- Handle POLLERR separately from POLLIN in the main loop and drain all\n  pending packets on each wakeup.\n- If the timestamp does not arrive, fall back to a software timestamp\n  taken before the frame is sent. After three consecutive failures the\n  driver is assumed not to provide hardware transmit timestamps, a\n  warning is printed once and only software timestamps are used, so a\n  driver without support does not stall the daemon.\n- Take the software timestamp before sending in every mode. It used to\n  be taken after sendmsg() returned, so a fast peer\u0027s reply could appear\n  to arrive before the request had left and give a negative delay.\n- Accept a measured path delay down to -100 microseconds and clamp it to\n  zero, since hardware timestamps on both ends can make a short link\n  measure slightly negative.\n\nAssisted-by: Claude:claude-sonnet-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "3727812c22fa64e97f9ee54a85e2ab3cb792b4b2",
      "tree": "6e2dd9d28a65dda2969983343b014f2547f27b9f",
      "parents": [
        "8940f6b0d469a864a4d231a33ec00ddbfdd5e058"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sat Sep 19 17:35:04 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: Discard outlier Sync phase error samples.\n\nA single Sync sample whose receive timestamp was taken late, for\nexample because the task was scheduled late with software\ntimestamping, was fed straight into the phase correction and the\ndrift estimate, and could pull the clock away from the master.\n\n- Add CONFIG_NETUTILS_PTPD_OUTLIER_THRESHOLD_NS (default 0, which\n  disables the check). A phase error that differs by more than this\n  many nanoseconds from the median of the last five accepted samples\n  is discarded, with a warning.\n- Accept the sample after eight consecutive rejections and restart\n  the history from it, so that a real step of the master is still\n  followed while a short burst of disturbed samples is ridden out.\n- Restart the history whenever the clock is stepped, since the old\n  samples no longer describe the new time base.\n- With the default of 0 the behaviour is unchanged.\n\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\nAssisted-by: Claude:claude-sonnet-5\n"
    },
    {
      "commit": "8940f6b0d469a864a4d231a33ec00ddbfdd5e058",
      "tree": "d00b79cb6ab5166ab9ca2277ff15ccdab0f2e36d",
      "parents": [
        "585db4b657840cf8989e52cf0f93490d277e4103"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Fri Sep 18 10:10:53 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: retain in-memory IPC for CONFIG_BUILD_FLAT in ptpd_status()\n\nPR #3789 replaced the in-memory sigqueue + shared memory IPC in ptpd_status()\nwith file-based IPC to support Protected and Kernel modes across address\nspaces. However, on microcontrollers running CONFIG_BUILD_FLAT, a filesystem\nor /tmp (TMPFS) is rarely mounted or available, causing ptpd_status() to fail\nwith -ETIMEDOUT (errno 110) because the status file cannot be created.\n\nRetain the file-based IPC for !CONFIG_BUILD_FLAT (Protected and Kernel modes)\nwhile restoring the zero-overhead in-memory sigqueue + semaphore IPC for\nCONFIG_BUILD_FLAT. Both modes share the status serialization logic via\nptp_populate_status() and support all fields including P2P.\n\nAssisted-by: Gemini:gemini-3.8-flash-medium\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "585db4b657840cf8989e52cf0f93490d277e4103",
      "tree": "efe482c6c043fdc131478cfb19019132e866806f",
      "parents": [
        "6d10b44bc1a24c5d0decb58c2707a57f328c1a6c"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sat Sep 19 14:40:40 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: Add ingress latency compensation for RX timestamps.\n\nThe MAC latches a hardware receive timestamp later than the frame\nreaches the wire, because of the PHY and the clock domain crossing.\nThis fixed delay is the ingressLatency port parameter of IEEE 1588 and\nshows up as a constant phase error between the local and the master\nclock.\n\nSubtract the configured latency from every hardware receive timestamp\nin ptp_getrxtime(), the single place where they enter the daemon, so\nSync, Delay_Resp and the peer delay messages are all corrected.\n\n- Add CONFIG_NETUTILS_PTPD_INGRESS_LATENCY_NS (default 0, which applies\n  no compensation).\n- Add the -I option to override it at run time.\n- Add ingress_latency_ns to struct ptpd_config_s.\n\nSoftware timestamps are not affected.\n\nAssisted-by: Claude:claude-sonnet-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "6d10b44bc1a24c5d0decb58c2707a57f328c1a6c",
      "tree": "4e200a7ad8ac5d5711a726ee8ab9833944085da6",
      "parents": [
        "e8fa49dc72a8f8e448d19af9a1965c04e1bf1081"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Thu Sep 17 17:50:44 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: phase-lock hardware clock via POSIX clock_adjtime.\n\nWhen state-\u003eclockid is configured to a hardware PTP clock device\n(e.g., /dev/ptp0) instead of CLOCK_REALTIME, ptp_adjtime() previously\npassed only the measured frequency drift (-ppb) to clock_adjtime(),\nignoring the residual phase offset (delta_ns / adjustment_ns).\nAs a result, while the hardware counter tracked frequency, its phase\nwas never pulled into alignment with the master clock.\n\nConvert delta_ns (which combines frequency drift and current phase error\nclamped to max_adjust_ns) to ppb over CONFIG_CLOCK_ADJTIME_PERIOD_MS,\nacting as a proportional-integral (PI) phase servo. This drives the\nhardware clock to phase lock with the master via POSIX clock_adjtime()\nusing ADJ_FREQUENCY without requiring proprietary ioctl calls.\n\nAssisted-by: Claude:claude-sonnet-5\nAssisted-by: Gemini:gemini-3.8-flash-medium\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "e8fa49dc72a8f8e448d19af9a1965c04e1bf1081",
      "tree": "1f6773a6ba805ae04af69fe6ce39cbbfbda6486f",
      "parents": [
        "6d6ab399398d88e6124fcedc30cf165b030ef1ee"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Wed Sep 16 15:19:41 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: discard implausible drift-rate samples before averaging\n\nA single drift-rate sample computed between two consecutive sync\nupdates was clamped against CLOCK_ADJTIME_SLEWLIMIT_PPM - the\nhardware\u0027s slew-rate safety limit, not a bound on how large a real\ncrystal-oscillator drift measurement can plausibly be. An abnormally\nshort or long measurement interval (e.g. right after a clock\nsource outage/reconnect, or a burst of closely spaced sync packets\nfollowing packet loss) could therefore produce a wildly implausible\nsample that still passed the check and corrupted the long-term\ndrift_ppb average.\n\nAdd CONFIG_NETUTILS_PTPD_MAX_DRIFT_PPB (default 500000, well above\nany real crystal\u0027s few-hundred-ppm drift) as a dedicated plausibility\nbound, intentionally much tighter than CLOCK_ADJTIME_SLEWLIMIT_PPM.\nA sample outside this bound is discarded and the previous averaged\ndrift_ppb is kept unchanged instead of being corrupted.\n\nAssisted-by: Claude:claude-sonnet-5\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "6d6ab399398d88e6124fcedc30cf165b030ef1ee",
      "tree": "5e13539a96d15091d60d0f69e3df6c4e43a01d4f",
      "parents": [
        "7c4ea1dbff13b25e80820210be094f3a386bbf33"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sun Sep 13 13:06:36 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: Implement IEEE 1588 peer-to-peer (P2P) delay mechanism.\n\nImplements the Peer-to-Peer (P2P) transparent clock delay measurement\nmechanism (IEEE 1588-2008 §11.4 / IEEE 802.1AS / IEC/IEEE 61850-9-3)\nin apps/netutils/ptpd:\n\n- Add PTP_MSGTYPE_PDELAY_REQ, PTP_MSGTYPE_PDELAY_RESP, and\n  PTP_MSGTYPE_PDELAY_RESP_FOLLOW_UP definitions and structs in ptpv2.h.\n- Define IEEE 1588-2008 Annex F peer delay multicast MAC address\n  01:80:c2:00:00:0e and Annex D peer delay IP address 224.0.0.107.\n- Replace bool delay_e2e with enum ptp_delay_mechanism_e (PTP_DELAY_NONE,\n  PTP_DELAY_E2E, PTP_DELAY_P2P) in include/netutils/ptpd.h.\n- Add -P CLI option in system/ptpd/ptpd_main.c with mutual exclusion\n  check against -E, and display last_transmitted_pdelayreq in status.\n- Implement responder logic in ptp_process_pdelay_req() sending\n  Pdelay_Resp (t2) and Pdelay_Resp_Follow_Up (t3) regardless of master\n  or slave state.\n- Implement requester logic in ptp_send_pdelay_req() gated on the\n  physical link without requiring prior BMCA master selection.\n- Implement ptp_process_pdelay_resp() and\n  ptp_process_pdelay_resp_followup() using canonical mean path delay\n  formula ((t4 - t1) - (t3 - t2)) / 2.\n- Refactor path delay bounds checking and moving average filter into\n  ptp_record_path_delay() shared across E2E and P2P mechanisms.\n- Set PTP version 2.0 and controlField 0x05 in Pdelay_Req, Pdelay_Resp\n  and Pdelay_Resp_Follow_Up, and in the own-identity header, so that\n  peers such as linuxptp accept the messages.\n- Clear pdelay_waiting_followup when a new Pdelay_Req is sent, so an\n  orphaned Pdelay_Resp_Follow_Up from an abandoned cycle is not paired\n  with stale timestamps.\n- Warn at startup when P2P is selected without CONFIG_SCHED_TICKLESS,\n  since a tick-driven clock cannot resolve the peer delay.\n- Skip IP multicast join/leave handling for AF_PACKET.\n\nAssisted-by: Claude:claude-sonnet-5\nAssisted-by: Gemini:gemini-3.8-flash-medium\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "7c4ea1dbff13b25e80820210be094f3a386bbf33",
      "tree": "82c4d5eeee00a86e0fee0949924884d9e9c61cea",
      "parents": [
        "46e148db093d091fae102c4a4a2294f36dbe24c6"
      ],
      "author": {
        "name": "Daniel P. Carvalho",
        "email": "danieloak@gmail.com",
        "time": "Sun Sep 13 12:10:37 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Thu Sep 24 11:07:31 2026 +0800"
      },
      "message": "netutils/ptpd: Fix Delay_Resp consumption by sendmsg.\n\nptp_sendmsg() called a blocking recvmsg(state-\u003etx_socket, ...) right\nafter sending a Delay_Req whenever hardware_ts was set, assuming a\nLinux-style MSG_ERRQUEUE/loopback semantics NuttX does not have.\nSince tx_socket and event_socket share the same underlying\nconnection, this call instead blocked on and consumed whatever PTP\npacket arrived next on the wire — almost always the Delay_Resp,\nwhich typically arrives within milliseconds of the request. Its\npayload was read into a local buffer that went out of scope on\nreturn, so the packet never reached ptp_process_rx_packet() and\npath_delay_ns stayed at 0 in -H mode. t3 is now captured locally\nvia ptp_gettime(), the same way -S mode already did, until\nhardware TX timestamping is supported.\n\nAlso replaces the path delay heuristic in ptp_process_delay_resp()\n(which derived an approximation of (t2-t1) from path_delay_ns and\nlast_delta_ns, only valid once the clock had already converged) with\nthe canonical IEEE 1588-2008 §11.3 formula: store (t2-t1) directly\nfrom Sync/Follow_Up as sync_diff_ns, then average it with (t4-t3)\nfrom the Delay_Req/Delay_Resp exchange. Relaxes the path delay\nceiling to 10ms unconditionally, since Delay_Req\u0027s t3 is software-\ntimestamped in both modes until hardware TX timestamping is supported.\n\nAssisted-by: Claude:claude-sonnet-5\nAssisted-by: Gemini:gemini-3.8-flash-medium\nSigned-off-by: Daniel P. Carvalho \u003cdanieloak@gmail.com\u003e\n"
    },
    {
      "commit": "46e148db093d091fae102c4a4a2294f36dbe24c6",
      "tree": "8c52ae105dd48b64376660546d1b6697a36b77d8",
      "parents": [
        "922cf59799f274b620b60778fb10913668838b51"
      ],
      "author": {
        "name": "hanzhijian",
        "email": "hanzhijian@zepp.com",
        "time": "Sat Aug 01 17:45:02 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Wed Sep 23 15:37:09 2026 +0800"
      },
      "message": "testing/ostest: add strto base tests\n\nAdd regression coverage for integer conversions with explicit bases from 2 through 36.  Exercise lower- and upper-case digits, positional values, all six strto* interfaces, end pointers, errno, and the invalid range boundaries.\n\nThe tests fail at base 27 without apache/nuttx#19594 and pass with the corresponding libc fix.\n\nSigned-off-by: hanzhijian \u003chanzhijian@zepp.com\u003e\n"
    },
    {
      "commit": "922cf59799f274b620b60778fb10913668838b51",
      "tree": "42f31db67a46663fe33931d9eb1212c3f060bb28",
      "parents": [
        "34ca2a5ed86aa8c7fc84118b1963ceff0b6cfc27"
      ],
      "author": {
        "name": "aviralgarg05",
        "email": "gargaviral99@gmail.com",
        "time": "Sun Aug 16 21:02:53 2026 +0530"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Tue Sep 22 14:17:01 2026 -0300"
      },
      "message": "games/NXDoom: support RGB565 and loadable modules\n\nAdd RGB565 framebuffer output and module builds. Harden configuration parsing and renderer bounds, support supervised SIGTERM shutdown, and notify framebuffer drivers after drawing.\n\nAssisted-by: Codex:gpt-5\nSigned-off-by: aviralgarg05 \u003cgargaviral99@gmail.com\u003e\n"
    },
    {
      "commit": "34ca2a5ed86aa8c7fc84118b1963ceff0b6cfc27",
      "tree": "39eaf4cdab1c2255e9b93cfa1f92c665f088a930",
      "parents": [
        "546bbd21d7baeb8ae0c33c702563924fa106b728"
      ],
      "author": {
        "name": "Felipe Moura",
        "email": "moura.fmo@gmail.com",
        "time": "Tue Sep 15 20:41:00 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 22 14:44:19 2026 +0800"
      },
      "message": "system/uorb: bump listener stack when float print extension is on\n\nuorb_listener\u0027s %pB debug printing (orb_info() -\u003e lib_bsprintf()) does\nreal floating-point-to-string conversion synchronously, in the\nlistener\u0027s own task -- not a lightweight pointer dump. With\nCONFIG_LIBC_PRINT_EXTENSION off, %pB just prints a raw pointer and the\ndefault CONFIG_UORB_STACKSIZE (DEFAULT_TASK_STACKSIZE, 2048 on most\nconfigs) is plenty. With it on, decoding a topic\u0027s float fields through\nthis path silently overflows a 2048-byte stack -- confirmed on real\nhardware (ESP32-S3, one push every ~10-20ms from two subscribed\ntopics): uorb_listener hangs completely after printing only a partial\ntopic name, no panic, no stack dump, nothing -- because\nCONFIG_SCHED_STACKGUARD/CONFIG_STACK_COLORATION aren\u0027t on by default\neither, so there\u0027s no guard to catch the overflow before it corrupts\nadjacent memory.\n\nRaising the default only when CONFIG_LIBC_PRINT_EXTENSION is set (not\nunconditionally, and not keyed off CONFIG_DEBUG_UORB specifically,\nsince anything else that selects the same libc extension hits the same\npath) keeps the common case -- raw pointer output, small stack --\nexactly as before, and only pays for the extra stack when the feature\nthat needs it is actually enabled.\n\n4096 was verified sufficient (tested against 2048, which reproduces\nthe hang, and 8192, which also works but wastes RAM); reproduced\ncleanly across multiple fresh boots.\n\nNote: this default only applies when CONFIG_UORB_STACKSIZE has never\nbeen explicitly recorded in .config. Like any Kconfig int default,\nflipping CONFIG_LIBC_PRINT_EXTENSION on in an existing .config that\nalready has an explicit CONFIG_UORB_STACKSIZE value won\u0027t retroactively\nraise it; the value has to be re-picked (e.g. via a fresh olddefconfig\nafter removing the stale line, or manually).\n\nSigned-off-by: Felipe Moura \u003cmoura.fmo@gmail.com\u003e\n"
    },
    {
      "commit": "546bbd21d7baeb8ae0c33c702563924fa106b728",
      "tree": "d5036ff1cccc2880f6cd7d0ea8636d7ee74a112f",
      "parents": [
        "83955c8dbee8b5fe4037849bfc304f902a66fa4b"
      ],
      "author": {
        "name": "Abhishek Mishra",
        "email": "mishra.abhishek2808@gmail.com",
        "time": "Mon Sep 21 15:13:44 2026 +0000"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 22 14:43:45 2026 +0800"
      },
      "message": "mlearning/tflite-micro: use the same compile flags in Make and CMake\n\nDefine TF_LITE_STATIC_MEMORY and TFLITE_EMULATE_FLOAT in both build\nsystems. Drop the CMake-only -O3 so optimization follows NuttX\nKconfig, and remove the duplicate CMSIS_NN define, KissFFT include,\nand non-English comment.\n\nSigned-off-by: Abhishek Mishra \u003cmishra.abhishek2808@gmail.com\u003e\n"
    },
    {
      "commit": "83955c8dbee8b5fe4037849bfc304f902a66fa4b",
      "tree": "7eb541f2beecfd8b1af2c5bb46f58d551e827f58",
      "parents": [
        "d7fa4d1d5b3f02eb5b18927778f628b2ebc40d4d"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Mon Sep 21 16:22:16 2026 -0400"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 22 13:27:05 2026 +0800"
      },
      "message": "examples/nimble: Use ble_hs_adv_fields instead\n\nThis removes the less readable way of setting advertising parameters and\nreplaces it with the more readable `ble_gap_adv_set_fields` struct. This\nalso resolves the bug where the value in `g_gap_name` appeared truncated\non devices discovering the advertisement. Now the full string appears in\ndiscovery.\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    },
    {
      "commit": "d7fa4d1d5b3f02eb5b18927778f628b2ebc40d4d",
      "tree": "cf36ce3d88aaf51828bd0915da1f6976b2da4a18",
      "parents": [
        "ee20ddd0ba47dedd2d66949d1d869b22065c21ec"
      ],
      "author": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Mon Sep 21 15:55:45 2026 -0400"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 22 13:27:05 2026 +0800"
      },
      "message": "bluetooth/nimble: Allow DIS service options to be changed\n\nThis allows NuttX users to configure the NimBLE built-in DIS service\noptions that are only available at compile-time. Now all the\ncharacteristics can be used if desired. The default Kconfig values match\nthe original definitions, so there is no change in behaviour.\n\nSigned-off-by: Matteo Golin \u003cmatteo.golin@gmail.com\u003e\n"
    },
    {
      "commit": "ee20ddd0ba47dedd2d66949d1d869b22065c21ec",
      "tree": "ddb128fd17c3153dc5e7bd1adb34e071e2d071ca",
      "parents": [
        "11124141cb3282fc80aae20e1f0e6f3b95a60202"
      ],
      "author": {
        "name": "Jorge Guzman",
        "email": "jorge.gzm@gmail.com",
        "time": "Fri Jul 10 09:23:58 2026 -0300"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Mon Sep 21 18:46:31 2026 -0300"
      },
      "message": "system/zbus: Port the Zephyr zbus message bus to NuttX\n\nPort of the Zephyr RTOS zbus (many-to-many message bus with typed\nchannels and decoupled observers), built entirely on native NuttX\nprimitives and preserving the original declarative API\n(ZBUS_CHAN_DEFINE, ZBUS_LISTENER_DEFINE, ZBUS_SUBSCRIBER_DEFINE, ...).\n\nFeatures: listeners (synchronous callbacks), subscribers (queue of\nchannel references), message subscribers (ordered message copies),\nasync listeners (callback on a dedicated task), runtime observers,\nper-observation notification masks, observer enable/disable, message\nvalidators, channel user data, publish statistics, lookup by\nname/numeric id and channel/observer iteration.\n\nMapping to NuttX primitives:\n- Channel/observer registration: link-time iterable sections\n  (include/nuttx/iterable_sections.h); the observers of a channel are\n  named after their position in the definition, so the linker sorts the\n  notification order, and the declarative macros are built on\n  nuttx/macro.h (CONCATENATE, FOREACH_ARG and the FOREACH_IDX_ARG added\n  in a companion nuttx commit) rather than on a private macro engine.\n  Notification masks live in .bss with their initial value preserved in\n  ROM and applied on lazy init.\n- Channel lock: sem_t (enable CONFIG_PRIORITY_INHERITANCE instead of\n  the Zephyr priority-boost/HLP); timeouts are computed with the\n  clock_timespec_* helpers from nuttx/clock.h.\n- Subscriber queues: kernel message queues (file_mq_*) opened lazily\n  via pthread_once, usable from any task; mq payload copying replaces\n  the Zephyr net_buf machinery entirely.\n- Async listeners: one task per listener (task_create, priority and\n  stack size configurable) blocking on the listener queue; a task\n  rather than a pthread so it outlives the first API caller.\n- Timeouts: milliseconds with CLOCK_MONOTONIC deadlines\n  (ZBUS_NO_WAIT/ZBUS_FOREVER).\n\nIncludes a runnable example (examples/zbus, CONFIG_EXAMPLES_ZBUS) and a\ncmocka test suite (testing/zbus, CONFIG_TESTING_ZBUS) covering the full\nAPI: 17/17 tests passing on linum-stm32h753bi hardware, including\nmulti-channel index grouping, mask semantics, runtime observer error\npaths, notification order (the observers of a channel run in the order\nthey are listed, and an observation bound with ZBUS_CHAN_ADD_OBS() runs\nafter all of them), queue overflow/timeout semantics, async listener\nbursts,\nbit-exact float/double payload delivery across every observer type\n(sensor-style messages with a float-math validator) and an\ninterrupt-driven publisher (kernel timer interrupt -\u003e signal -\u003e sampling\nthread -\u003e zbus_chan_pub, the recommended pattern for interrupt sources).\n\nRequirements: FLAT build; CONFIG_MQ_MAXMSGSIZE \u003e\u003d pointer size +\nCONFIG_ZBUS_MSG_SUBSCRIBER_MAX_MSG_SIZE for message subscribers; board\nlinker script including \u003cnuttx/linker/common-rom.ld\u003e or the generic\nCONFIG_ITERABLE_SECTIONS_LINKER_INSERT mode.\n\nNot ported: multi-domain proxy agent (experimental upstream); publishing\nfrom interrupt handlers (userspace library: hand the data to a thread).\n\nDocumentation lives in the nuttx repository\n(Documentation/applications/system/zbus).\n\nAssisted-by: Claude Code\nSigned-off-by: Jorge Guzman \u003cjorge.gzm@gmail.com\u003e\n"
    },
    {
      "commit": "11124141cb3282fc80aae20e1f0e6f3b95a60202",
      "tree": "3ba972634376a7b2bf4f16a9ba6d1a43f39d2ef1",
      "parents": [
        "41a2c9d98224a0fc816abda37e75c88f1a80ee99"
      ],
      "author": {
        "name": "wenquan1",
        "email": "wenquan1@xiaomi.com",
        "time": "Mon Sep 21 10:50:35 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Mon Sep 21 16:26:06 2026 +0800"
      },
      "message": "testing/nettest: add SO_TIMESTAMPING cmocka test\n\nAdd cmocka-based test program for SO_TIMESTAMPING socket option\nunder testing/nettest/timestamp/. Covers all five test scenarios\nfrom the SO_TIMESTAMPING PR (apache/nuttx#20161):\n\n1. SO_TIMESTAMPING setsockopt/getsockopt\n2. SO_TIMESTAMP/SO_TIMESTAMPNS backward compatibility\n3. TX timestamping + MSG_ERRQUEUE delivery\n4. RX timestamp via SO_TIMESTAMP\n5. TX timestamping with poll(POLLPRI) notification\n\nEnable with CONFIG_TESTING_NET_TIMESTAMP\u003dy (requires\nCONFIG_NET_TIMESTAMP, CONFIG_NET_PKT, CONFIG_TESTING_CMOCKA).\n\nTested on sim:dynconns — all 5 tests pass.\n\nSigned-off-by: wenquan1 \u003cwenquan1@xiaomi.com\u003e\n"
    },
    {
      "commit": "41a2c9d98224a0fc816abda37e75c88f1a80ee99",
      "tree": "2fa394c8c0182fc496efbc0b527cf5871bd411b9",
      "parents": [
        "3cfb129dbfccf6e24b0efb1ff61767ffca6b4824"
      ],
      "author": {
        "name": "Justin Hammond",
        "email": "justin@dynam.ac",
        "time": "Sun Sep 20 16:53:00 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Sun Sep 20 22:30:19 2026 +0800"
      },
      "message": "system/uorb: Select the printf extension the format strings need.\n\nEvery topic\u0027s format string is printed through orb_info() or\norb_fprintf(), and both reach the data through \"%pB\", which is a NuttX\nextension rather than a standard conversion.  UORB_FORMAT turns that\ncode on without turning the extension on, so a configuration that\nenables the listener but not the debug output builds cleanly, runs, and\nprints a pointer where the reading should be:\n\n  sensor_voltage(now:4294968998000):0xc0203c98B\n\nThe address is the va_format the extension was supposed to expand, and\nthe trailing B is the conversion character being taken as ordinary\ntext.  Nothing warns, because to the compiler and to printf this is a\nvalid format string that means something else.\n\nDEBUG_UORB already selects the extension, so the fault is invisible to\nanyone who turned that on.  The two are independent options and only\none of them declared what it needed.  Move the select onto UORB_FORMAT,\nwhich is the option that decides whether the format strings are\ncompiled in at all.\n\nSigned-off-by: Justin Hammond \u003cjustin@dynam.ac\u003e\n"
    },
    {
      "commit": "3cfb129dbfccf6e24b0efb1ff61767ffca6b4824",
      "tree": "f18e8b6344e9f61eed5c0d7984385c55ad39b4f4",
      "parents": [
        "6d45e5404d7db44363425a58b3d7e039a9181e5e"
      ],
      "author": {
        "name": "Justin Hammond",
        "email": "justin@dynam.ac",
        "time": "Sun Sep 20 16:59:49 2026 +0800"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Sun Sep 20 09:24:47 2026 -0400"
      },
      "message": "system/sensortest: Put a blank line after the declarations.\n\nEach of the ten print helpers opens with a declaration followed\nimmediately by its printf, which nxstyle reports as an error on every\none of them.  The file cannot be checked cleanly until they are fixed,\nso a later change to it starts from a failing run and has to sort its\nown errors from the existing ones.\n\nWhitespace only.  git diff -w is empty.\n\nSigned-off-by: Justin Hammond \u003cjustin@dynam.ac\u003e\n"
    },
    {
      "commit": "6d45e5404d7db44363425a58b3d7e039a9181e5e",
      "tree": "aef3058243553396b6bab7afc587f2c17e9a13fd",
      "parents": [
        "0e2e851f50b362a1c9065151970f004dbccf7a53"
      ],
      "author": {
        "name": "Justin Hammond",
        "email": "justin@dynam.ac",
        "time": "Sun Sep 20 16:58:20 2026 +0800"
      },
      "committer": {
        "name": "Matteo Golin",
        "email": "matteo.golin@gmail.com",
        "time": "Sun Sep 20 09:24:47 2026 -0400"
      },
      "message": "system/sensortest: Add rows for the voltage, current and power topics.\n\nThe three electrical topics exist and publish, but sensortest rejects\ntheir node names before opening them: its table is matched by name and\ncarries each structure\u0027s size, so a type without a row is one the tool\ncannot read at all.\n\nAll three are a timestamp and a single value, the shape print_valf\nalready handles.\n\nSigned-off-by: Justin Hammond \u003cjustin@dynam.ac\u003e\n"
    },
    {
      "commit": "0e2e851f50b362a1c9065151970f004dbccf7a53",
      "tree": "0d6f363cafa5a424855c2ee1ec83e5e77e60cba4",
      "parents": [
        "b6bb99c9512ca2ac2d1491803bc25d23cee7dae9"
      ],
      "author": {
        "name": "Felipe Moura",
        "email": "moura.fmo@gmail.com",
        "time": "Tue Sep 15 20:30:30 2026 -0300"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Sep 18 21:24:16 2026 +0800"
      },
      "message": "fsutils/libtinycbor: fix build on picolibc/newlib\n\nCONFIG_FSUTILS_TINYCBOR_LIB fails to build on toolchains with their own\n\u003cmemory.h\u003e (picolibc, newlib): cbortojson.c does \"#include \u003cmemory.h\u003e\"\nmeaning TinyCBOR\u0027s own (where cbor_malloc/cbor_realloc/cbor_free are\ndeclared), but only the parent directory was on the include path, so\nthe toolchain\u0027s own \u003cmemory.h\u003e wins instead, leaving those symbols\nimplicitly declared.\n\nFix: also put the unpacked tinycbor/ subdirectory (Make.defs\u0027 own\nTINYCBOR_UNPACKNAME) on the include path.\n\nSigned-off-by: Felipe Moura \u003cmoura.fmo@gmail.com\u003e\nAssisted-by: Claude:claude-sonnet-5\n"
    },
    {
      "commit": "b6bb99c9512ca2ac2d1491803bc25d23cee7dae9",
      "tree": "d6408ba31d508730239848c73e06d48352854b55",
      "parents": [
        "6e12c3de75732bba1359a2e0db8a14c07e4493cd"
      ],
      "author": {
        "name": "Arnav Sharma",
        "email": "2006arnavsharma@gmail.com",
        "time": "Tue Sep 15 12:26:01 2026 +0530"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Sep 18 21:10:56 2026 +0800"
      },
      "message": "testing/drivertest: add sensor watchdog regression test.\n\nIssue apache/nuttx#20145 reported a sensor fetch-watchdog lifetime\nregression: sensor_poll() arms a per-subscriber watchdog for\nfetch-only sensors with a finite interval, but sensor_close()\nfreed the subscriber without cancelling it, letting\nsensor_fetch_expired() run after free.\n\nFixed by apache/nuttx#20146, which cancels the watchdog on close.\nAdd regression coverage in drivertest as suggested by the maintainer:\nopen a sensor device, set a finite fetch interval, enter the poll\npath so the watchdog can be armed, then close while the watchdog\nstate is relevant. Sleep past the interval so any stray timer would\nfire, and reopen to prove teardown was clean. The test skips\ngracefully when no sensor device is present, so it is safe on sim\nwithout hardware.\n\nThe test does not deterministically reproduce the UAF; it verifies\nthe observable invariant that repeated poll/close/reopen cycles\ncomplete cleanly and the device remains usable. Under KASAN or\nstress, a missing wd_cancel in close would be caught here.\n\nImpact:\n* Is new feature added? YES (new regression test coverage in\n  testing/drivers/drivertest, no existing functionality changed).\n* Impact on user, build, hardware, documentation, security,\n  compatibility? NO, test-only change.\n\nTesting:\n* Full build and runtime logs are provided in the PR description.\n\nAssisted-by: Muse Spark:muse-spark-1.3\nAssisted-by: Claude:claude-opus\nSigned-off-by: Arnav Sharma \u003c2006arnavsharma@gmail.com\u003e\n"
    },
    {
      "commit": "6e12c3de75732bba1359a2e0db8a14c07e4493cd",
      "tree": "ab58abdcae75181de6045d3203ddfdf0859d3b95",
      "parents": [
        "e3e39331382b307e4efd08ad567d758c43460d01"
      ],
      "author": {
        "name": "wenquan1",
        "email": "wenquan1@xiaomi.com",
        "time": "Thu Sep 17 09:54:32 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Sep 18 21:09:13 2026 +0800"
      },
      "message": "canutils/candump: guard SOF_TIMESTAMPING macros with ifndef\n\ncandump.c locally defines SOF_TIMESTAMPING_SOFTWARE,\nSOF_TIMESTAMPING_RX_SOFTWARE and SOF_TIMESTAMPING_RAW_HARDWARE.\nAfter nuttx added these macros to sys/socket.h, the build fails\nwith -Werror\u003dredefine. Wrap the local defines with #ifndef guards\nso they are only used when the system header does not provide them.\n\nSigned-off-by: wenquan1 \u003cwenquan1@xiaomi.com\u003e\n"
    },
    {
      "commit": "e3e39331382b307e4efd08ad567d758c43460d01",
      "tree": "505e5e45424e86bc6e29c5e053335fe93767ed15",
      "parents": [
        "4210b2226e546b61f80e592351fefc2d6d2aa253"
      ],
      "author": {
        "name": "wenquan1",
        "email": "wenquan1@xiaomi.com",
        "time": "Thu Sep 17 09:25:23 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Sep 18 17:00:03 2026 +0800"
      },
      "message": "netutils/ptpd: use status file for ptpd_status IPC\n\nReplace the sigqueue + shared-memory IPC mechanism in ptpd_status()\nwith a file-based approach:\n\n  - Daemon side: on SIGUSR1, write a binary ptpd_status_s struct to\n    a temp file and atomically rename it to the status path.\n  - Client side: send kill(SIGUSR1), poll for the file to appear,\n    then read the struct back.\n\nThis removes the CONFIG_BUILD_FLAT restriction (the old code returned\n-ENOTSUP for Protected and Kernel builds) and avoids passing pointers\nacross address spaces via sigqueue.  The status file path is\nconfigurable via NETUTILS_PTPD_STATUSFILE (default /tmp/ptpd.status).\n\nThe atomic temp + rename pattern ensures readers never see a partial\nwrite.\n\nSigned-off-by: wenquan1 \u003cwenquan1@xiaomi.com\u003e\n"
    },
    {
      "commit": "4210b2226e546b61f80e592351fefc2d6d2aa253",
      "tree": "da7c365a869bb270ce3ad2632de971d44258fcee",
      "parents": [
        "642720e9b4bfd885b0f11814812df120ef7edefd"
      ],
      "author": {
        "name": "wenquan1",
        "email": "wenquan1@xiaomi.com",
        "time": "Thu Sep 17 09:23:24 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Sep 18 17:00:03 2026 +0800"
      },
      "message": "netutils/ptpd: move multicast join after interface address query\n\nThe IGMP multicast join (ipmsfilter) was previously called before\nthe interface address (interface_addr) was populated via SIOCGIFADDR.\nThis meant the IGMP join had to locate the network device without\na valid local address, which could fail or join on the wrong interface.\n\nMove the multicast group subscription to after the interface address\nis queried, and guard it with an AF_INET check since IGMP only applies\nto IPv4. This ensures the IGMP join can always locate the correct\nnetwork device.\n\nSigned-off-by: wenquan1 \u003cwenquan1@xiaomi.com\u003e\n"
    },
    {
      "commit": "642720e9b4bfd885b0f11814812df120ef7edefd",
      "tree": "9be0094dda0379300cdedb866efcef51032a1e02",
      "parents": [
        "73a9c9a69711027a5536f4b51ba5c082f86bf9c9"
      ],
      "author": {
        "name": "Arnav Sharma",
        "email": "2006arnavsharma@gmail.com",
        "time": "Wed Sep 16 23:12:10 2026 +0530"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Fri Sep 18 16:35:34 2026 +0800"
      },
      "message": "examples/configdata: exercise unregister/register lifetime\n\nAdd a regression test for apache/nuttx#20166 to the configdata\nexample, which runs automatically in every sim:configdata build.\nAfter the normal configdata test loops, close the long-lived\ndescriptor and run a full lifetime cycle on /dev/config:\n\n- mtdconfig_unregister() must succeed,\n- the unregistered device must no longer be openable (ENOENT),\n- the same MTD device must be registerable again and usable,\n- a final unregister must succeed, leaving the device unregistered.\n\nBefore the driver fix this crashes deterministically: the old\nmtdconfig_unregister_by_path() freed the private device structure\nbefore closing its temporary file, so the subsequent open() faults\nin mm_malloc on the corrupted heap (SIGSEGV observed on sim right\nafter unregister returns).  With the fix the whole example,\n934706/934706 checks included, completes cleanly.\n\nThe test uses only generic configdata APIs, so it also passes\nunchanged under CONFIG_MTD_CONFIG_NVS, whose open/close callbacks\nare no-ops.\n\nAssisted-by: Claude:claude-opus\nSigned-off-by: Arnav Sharma \u003c2006arnavsharma@gmail.com\u003e\n"
    },
    {
      "commit": "73a9c9a69711027a5536f4b51ba5c082f86bf9c9",
      "tree": "d86c3d1a1c5b68388c62fafc294877dead876969",
      "parents": [
        "2f76986584ddd3881335e5897bbd80e12ae431a2"
      ],
      "author": {
        "name": "raiden00pl",
        "email": "raiden00@railab.me",
        "time": "Thu Sep 17 09:24:45 2026 +0200"
      },
      "committer": {
        "name": "Alan C. Assis",
        "email": "acassis@gmail.com",
        "time": "Thu Sep 17 09:40:21 2026 -0300"
      },
      "message": "testing/ostest: accept -ENOENT from work_cancel() for unqueued work\n\nSince nuttx commit 5a209a853e (\"sched/wqueue: restore -ENOENT from\nwork_cancel() for unqueued work\") work_cancel() and work_cancel_wq()\nreturn -ENOENT when the work is not queued. The tester thread queues\nwork with zero delay, so the worker may already have consumed it by the\ntime it is cancelled and the ASSERT(ret \u003d\u003d OK) fires;\n\nAccept -ENOENT there and expect it when cancelling idle work in\nthe API validation test.\n\nSigned-off-by: raiden00pl \u003craiden00@railab.me\u003e\n"
    },
    {
      "commit": "2f76986584ddd3881335e5897bbd80e12ae431a2",
      "tree": "357c24d3794aa7adcc4761e603b5e8ba9ea83b45",
      "parents": [
        "3b993dfbb61d1d57325014079fc01e638202ae43"
      ],
      "author": {
        "name": "fangpeina",
        "email": "fangpeina@xiaomi.com",
        "time": "Fri Aug 28 17:27:11 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:09:34 2026 +0800"
      },
      "message": "system/fastboot: fix pre-existing nxstyle warnings\n\nAdd missing blank lines after variable declarations and fix\nalignment in preprocessor conditionals. These are pre-existing\nstyle issues exposed by the latest nxstyle version.\n\nSigned-off-by: fangpeina \u003cfangpeina@xiaomi.com\u003e\n"
    },
    {
      "commit": "3b993dfbb61d1d57325014079fc01e638202ae43",
      "tree": "90d5c413355d64f93eecd5646799679f60db9b50",
      "parents": [
        "43dcb51087a15bc5911411577f9ea2f3d14d1ccd"
      ],
      "author": {
        "name": "fangpeina",
        "email": "fangpeina@xiaomi.com",
        "time": "Fri Aug 21 17:11:50 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:09:34 2026 +0800"
      },
      "message": "system/fastboot: Add serial (UART) transport backend.\n\nAdd a serial transport alongside the existing USB and TCP backends.\nThe serial backend reuses the TCP v1 wire framing (FB01 handshake\nplus an 8-byte big-endian length prefix) so the host side needs no\nnew tool: socat bridges the UART to a TCP socket and the standard\nfastboot tool connects via tcp:.\n\nThe serial port path is configured at build time through Kconfig\nSYSTEM_FASTBOOTD_SERIAL_PORT.\n\nSigned-off-by: fangpeina \u003cfangpeina@xiaomi.com\u003e\n"
    },
    {
      "commit": "43dcb51087a15bc5911411577f9ea2f3d14d1ccd",
      "tree": "ed567a7d33440e7f4d2619e88db2454e009fa100",
      "parents": [
        "bac662c2157e1de8626b2c7d04c24adf604814c7"
      ],
      "author": {
        "name": "fangpeina",
        "email": "fangpeina@xiaomi.com",
        "time": "Thu Aug 27 22:07:44 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:09:34 2026 +0800"
      },
      "message": "system/fastboot: extract framed_read helper and simplify tcp_read\n\nExtract fastboot_framed_read() that handles TCP v1 wire framing:\nhandshake detection (FB01 exchange) and 8-byte big-endian length\nprefix parsing.  Simplify fastboot_tcp_read() to reuse this helper\nfor both initial handshake and subsequent data frames.\n\nThis prepares for adding a serial transport that shares the same\nframed protocol.\n\nSigned-off-by: fangpeina \u003cfangpeina@xiaomi.com\u003e\n"
    },
    {
      "commit": "bac662c2157e1de8626b2c7d04c24adf604814c7",
      "tree": "bcfaa94f921eb7ef25acdfc3d8ea86789807c087",
      "parents": [
        "06ceed1afb449cf80bf8f5724c4916ed31446c48"
      ],
      "author": {
        "name": "fangpeina",
        "email": "fangpeina@xiaomi.com",
        "time": "Thu Aug 27 20:47:52 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:09:34 2026 +0800"
      },
      "message": "system/fastboot: add per-transport Kconfig options for USB and TCP\n\nAdd SYSTEM_FASTBOOTD_USB (default y) and SYSTEM_FASTBOOTD_TCP\n(default y) to allow disabling individual transports independently.\n\nReplace direct CONFIG_USBFASTBOOT / CONFIG_NET_TCP guards in the\ntransport code with the new fastbootd-level Kconfig symbols.\n\nSigned-off-by: fangpeina \u003cfangpeina@xiaomi.com\u003e\n"
    },
    {
      "commit": "06ceed1afb449cf80bf8f5724c4916ed31446c48",
      "tree": "697d5d47e0b048f394b8fb364b19c353b22b2439",
      "parents": [
        "2085e1ca962457b57cb85d4ec4fa214413472c1b"
      ],
      "author": {
        "name": "fangpeina",
        "email": "fangpeina@xiaomi.com",
        "time": "Tue Jul 21 14:50:59 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:09:34 2026 +0800"
      },
      "message": "system/fastboot: fix buffer pointer and length in fastboot_read_all\n\nThe read loop was passing the original buf pointer and full length on\nevery iteration, causing subsequent reads to overwrite previous data\nand potentially request more bytes than the remaining buffer space.\n\nUpdate buf and len after each successful read to advance through the\nbuffer correctly.\n\nSigned-off-by: fangpeina \u003cfangpeina@xiaomi.com\u003e\n"
    },
    {
      "commit": "2085e1ca962457b57cb85d4ec4fa214413472c1b",
      "tree": "cd048155d162bc4110a9ca8eab1e8e8d4f721959",
      "parents": [
        "5f7db152b216c56825cd068fcecd06845b554fd0"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Fri Aug 28 21:14:06 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:08:45 2026 +0800"
      },
      "message": "system/nxinit: add fallback option to resolve preset service conflict\n\nThe preset kvdb service defined in parser.c conflicts with user-defined\nkvdb service in board-level init.rc, causing:\n\n  Error redefined service \u0027kvdb\u0027\n\nAdd SVC_FALLBACK flag and fallback service option. When a service\nis marked as fallback, it will be silently ignored if another\nservice with the same name already exists. This is the semantic\nopposite of override:\n\n- override: new definition replaces old\n- fallback: new definition yields to old\n- old has fallback + new arrives: old yields to new\n\nIf neither flag is set, duplicate service names still produce\nEEXIST error as before.\n\nMark the preset kvdb service as fallback so that board-specific\ninit.rc can freely define its own kvdb service without conflict.\n\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "5f7db152b216c56825cd068fcecd06845b554fd0",
      "tree": "ae6c572967218505940baf96af3bccc1accffb38",
      "parents": [
        "64f65dbf3d3adda5aa08feb3af6da5634a39248f"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Fri Aug 28 21:13:53 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:08:45 2026 +0800"
      },
      "message": "system/nxinit: fix rptun builtin blocking the action queue\n\nRPTUNIOC_START returns the (positive) pid of the rptun kernel thread\nin async mode (CONFIG_RPTUN_START_SYNC unset). The action engine\ntreats any positive builtin return value as the pid of a spawned\nchild and waitpid()s on it (action.c: \"if (ret \u003e 0) pid_running \u003d\nret\"). The rptun thread is a detached kthread, never a child of init,\nso that wait blocks the whole action queue forever and \"on init\" /\nconsole never run. Normalize a successful start to 0.\n\nAssisted-by: OpenCode:claude-sonnet-5\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "64f65dbf3d3adda5aa08feb3af6da5634a39248f",
      "tree": "c6c48b15c4d7550fb9edd8fdcd71a701e69793d9",
      "parents": [
        "04ee0d45effa63c3d6a699cc7885104baef2e011"
      ],
      "author": {
        "name": "wangyongrong",
        "email": "wangyongrong@xiaomi.com",
        "time": "Fri Aug 28 21:13:04 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:08:45 2026 +0800"
      },
      "message": "system/nxinit: add rptun and unlink builtin commands\n\nBL uses init framework (not NSH), so the NSH rptun command is not\navailable. Add rptun as an init builtin command that supports\nstart and stop subcommands. Also add a generic unlink builtin\ncommand for removing device nodes.\n\nUsage in init.bl.rc:\n  rptun stop /dev/rptun/corecs\n  unlink /dev/rptun/corecs\n  rptun start /dev/rptun/corecs\n\n- rptun start/stop: open device, ioctl(RPTUNIOC_START/STOP), close\n- unlink: generic command to unlink any file/device node\n\nSigned-off-by: wangyongrong \u003cwangyongrong@xiaomi.com\u003e\n"
    },
    {
      "commit": "04ee0d45effa63c3d6a699cc7885104baef2e011",
      "tree": "adc1d98a5ab6a1e51b8d60070972c908b6433af5",
      "parents": [
        "1c0a81237770a403cabca79d28bd150ea8a94ef9"
      ],
      "author": {
        "name": "wangjianyu3",
        "email": "wangjianyu3@xiaomi.com",
        "time": "Wed Sep 02 20:53:40 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:08:22 2026 +0800"
      },
      "message": "system/nxinit: use TRACE_DEVERROR_BIT|TRACE_CLSERROR_BIT, not TRACE_BITSET\n\nusbtrace_enable(TRACE_BITSET) was copied from nsh\u0027s CONFIG_USBDEV_TRACE\nblock without also copying nsh\u0027s local #define TRACE_BITSET or the\n\u003cnuttx/usb/usbdev_trace.h\u003e include it needs. TRACE_BITSET has no\nbuilt-in definition; every other CONFIG_USBDEV_TRACE caller in the\ntree (nsh, composite, cdcacm, usbmsc) defines its own. This compiled\nfine as long as CONFIG_SYSTEM_NXINIT and CONFIG_USBDEV_TRACE were never\nboth on for the same board; the two combined for the first time and\ninit.c failed to build with \u0027TRACE_BITSET\u0027 undeclared.\n\nAdd the missing include and inline the same error-only bitset those\nother callers fall back to when none of their granular trace options\nare enabled, since this file has no such granular Kconfig of its own.\n\nAssisted-by: OpenCode:claude-sonnet-5\nSigned-off-by: wangjianyu3 \u003cwangjianyu3@xiaomi.com\u003e\n"
    },
    {
      "commit": "1c0a81237770a403cabca79d28bd150ea8a94ef9",
      "tree": "fafdf899ff5de85a236a195ed392849a62c46a24",
      "parents": [
        "61143782d43287342473b49fa88cf46a287612d4"
      ],
      "author": {
        "name": "DuoYuWang",
        "email": "thirteenking.wang@gmail.com",
        "time": "Mon Sep 07 16:54:52 2026 +0800"
      },
      "committer": {
        "name": "GUIDINGLI",
        "email": "49524062+GUIDINGLI@users.noreply.github.com",
        "time": "Wed Sep 16 00:07:51 2026 +0800"
      },
      "message": "testing/ostest: exercise custom work queues\n\nAdd a focused wqueue entry that exercises predefined and dynamically\ncreated work queues without changing the no-argument ostest flow.\n\nShare the semaphore wait and basic worker helpers across configurations.\nFlat builds exercise scheduler queues, Protected builds exercise USRWORK,\nand pthread-enabled builds additionally cover configurable custom worker\npools. When pthread support is disabled, only predefined USRWORK cases are\ncompiled.\n\nCover invalid arguments, priority lookup, immediate and delayed work,\npending replacement and cancellation, periodic requeue, synchronous and\nparallel cancellation, concurrent queues, callback self-destruction, and\nqueue teardown.\n\nAssisted-by: Codex:GPT-5\nSigned-off-by: DuoYuWang \u003cthirteenking.wang@gmail.com\u003e\n"
    },
    {
      "commit": "61143782d43287342473b49fa88cf46a287612d4",
      "tree": "065039abc2ab3405907bdd0764b9d4070a55f8aa",
      "parents": [
        "c8ffe2a5e110bbb834f20c64010403132ba7882a"
      ],
      "author": {
        "name": "Felix-LJY",
        "email": "1793542731@qq.com",
        "time": "Tue Sep 15 11:54:46 2026 +0800"
      },
      "committer": {
        "name": "Xiang Xiao",
        "email": "xiaoxiang781216@gmail.com",
        "time": "Tue Sep 15 21:43:29 2026 +0800"
      },
      "message": "benchmarks/sd_bench: Fix sd_bench in CMake build system.\n\nFix sd_bench in CMake build system.\n\nSigned-off-by: JingYue LIAO \u003cfelix-liao@my.swjtu.edu.cn\u003e\n"
    }
  ],
  "next": "c8ffe2a5e110bbb834f20c64010403132ba7882a"
}
