{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":295602252,"defaultBranch":"master","name":"furble","ownerLogin":"gkoh","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2020-09-15T03:17:20.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/5484552?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1727245710.0","currentOid":""},"activityList":{"items":[{"before":"875a0b70554dfff1184d8b3ed4c005faad153ab0","after":null,"ref":"refs/heads/canon-m6-cleanup","pushedAt":"2024-09-25T06:27:16.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"}},{"before":"321d5a197f8fee7a0379a8d8a57a0009e014e39c","after":"8a94541661697fdfc5d8f92b0c1c7d706052751e","ref":"refs/heads/master","pushedAt":"2024-09-25T06:27:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Minor cleanup of Canon EOS M6. (#131)\n\n* Minor cleanup of Canon EOS M6.\r\n\r\nRemove unneeded WiFi handshake.\r\nClarify GPS only works over WiFi for this model.\r\n\r\n* clang-format","shortMessageHtmlLink":"Minor cleanup of Canon EOS M6. (#131)"}},{"before":"474d57ba018d4dc8fd7063f108b2d6ae1dd9e49a","after":"875a0b70554dfff1184d8b3ed4c005faad153ab0","ref":"refs/heads/canon-m6-cleanup","pushedAt":"2024-09-25T06:24:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"clang-format","shortMessageHtmlLink":"clang-format"}},{"before":null,"after":"474d57ba018d4dc8fd7063f108b2d6ae1dd9e49a","ref":"refs/heads/canon-m6-cleanup","pushedAt":"2024-09-25T05:40:35.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Minor cleanup of Canon EOS M6.\n\nRemove unneeded WiFi handshake.\nClarify GPS only works over WiFi for this model.","shortMessageHtmlLink":"Minor cleanup of Canon EOS M6."}},{"before":"811bda15e8d2f329b457fdbbd9eb0b9ca8d10cbb","after":null,"ref":"refs/heads/more-cpp","pushedAt":"2024-09-22T06:00:52.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"}},{"before":"f1468219fdf61d103ad77abd3ba06ed103f9d3ce","after":"321d5a197f8fee7a0379a8d8a57a0009e014e39c","ref":"refs/heads/master","pushedAt":"2024-09-22T06:00:51.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Curate more C++ features. (#130)\n\n* Curate more C++ features.\r\n\r\nStrengthen immutability by adding more const qualifiers.\r\nUse some more iterators.\r\nReduce binary size further by disabling exceptions.\r\n\r\n* Remove stale use of placeholders.\r\n\r\n* More references, fewer pointers.","shortMessageHtmlLink":"Curate more C++ features. (#130)"}},{"before":"a71d2db4f973e89db3cc4be2c2a32d402c2636a4","after":"811bda15e8d2f329b457fdbbd9eb0b9ca8d10cbb","ref":"refs/heads/more-cpp","pushedAt":"2024-09-22T05:30:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"More references, fewer pointers.","shortMessageHtmlLink":"More references, fewer pointers."}},{"before":"0608eb70a4be5be7aeebf4b00944f091362ca022","after":"a71d2db4f973e89db3cc4be2c2a32d402c2636a4","ref":"refs/heads/more-cpp","pushedAt":"2024-09-22T02:53:31.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Remove stale use of placeholders.","shortMessageHtmlLink":"Remove stale use of placeholders."}},{"before":"906d8bc81118f40567ffe817b5f48fe1fe9d6792","after":"0608eb70a4be5be7aeebf4b00944f091362ca022","ref":"refs/heads/more-cpp","pushedAt":"2024-09-22T02:47:57.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Curate more C++ features.\n\nStrengthen immutability by adding more const qualifiers.\nUse some more iterators.\nReduce binary size further by disabling exceptions.","shortMessageHtmlLink":"Curate more C++ features."}},{"before":null,"after":"906d8bc81118f40567ffe817b5f48fe1fe9d6792","ref":"refs/heads/more-cpp","pushedAt":"2024-09-22T02:46:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Reduce binary size further by disabling exceptions.","shortMessageHtmlLink":"Reduce binary size further by disabling exceptions."}},{"before":"a4a3d665648a0c6607e88ccd5004c1d2cf69908a","after":null,"ref":"refs/heads/multi-connect","pushedAt":"2024-09-18T02:12:25.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"}},{"before":"8afb0e1848274bf463d002da3cc89256679d4b2b","after":"f1468219fdf61d103ad77abd3ba06ed103f9d3ce","ref":"refs/heads/master","pushedAt":"2024-09-18T02:12:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Implement simultaneous camera connect (#127)\n\n* Add per-camera task and queue.\r\n\r\nLay the foundation for supporting simultaneous, parallel camera\r\nconnections.\r\n\r\nThe UI now sends commands to the control task, which relays them to\r\nper-camera tasks.\r\nThis allows the UI and each connected camera to operate asynchronously.\r\n\r\nIncrease limit maximum clients from 3 to 8.\r\n\r\n* Display human readable mobile device names.\r\n\r\nFix #100 by updating to a development cut of NimBLE-Arduino.\r\nWhilst here improve device bond handling, this makes subsequent\r\npair/forget sequences a little less iffy.\r\n\r\n* Implement multi-connect.\r\n\r\nM5ez:\r\nAdd context to menu item advanced function.\r\n\r\nFurble:\r\nTweak NimBLE settings.\r\nRemove scan duration, now scan forever as we can stop on demand.\r\nDrop global interval_t, load as needed to reduce variable scope.\r\n\r\nAdd setting to toggle multi-connect.\r\nModify connection menu to support tagging cameras.\r\nAdd ability to connect to all tagged cameras.\r\n\r\nCannot get directed advertising to mobile devices so still disabled.\r\n\r\nMulti-connect to mobile devices is super iffy, not recommended for\r\nproduction use.\r\n\r\n* Tweak the code style a little.\r\n\r\nFix minor error in shutter lock formatting, introduced when migrating\r\nfrom String to std::string.\r\n\r\nAlso removed unused macros.\r\n\r\n* Update clang-format action version.\r\n\r\n* Fix m5stack-core build.\r\n\r\n* Minor style updates.\r\n\r\nMove some more code into std::string native and const a few more\r\nparameters.\r\n\r\n* Further C++ refactoring.\r\n\r\nRefactor the Camera type into the base Camera class.\r\nRefactor fillSaveName into CameraList class, it is only used there.\r\nStyle adjustments.","shortMessageHtmlLink":"Implement simultaneous camera connect (#127)"}},{"before":"a1c22d56f392db3b9665d61eeac06719bcf89ead","after":"a4a3d665648a0c6607e88ccd5004c1d2cf69908a","ref":"refs/heads/multi-connect","pushedAt":"2024-09-18T02:01:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Further C++ refactoring.","shortMessageHtmlLink":"Further C++ refactoring."}},{"before":"c521d95f97a8602499bcd7c0ca62068f23106369","after":"a1c22d56f392db3b9665d61eeac06719bcf89ead","ref":"refs/heads/multi-connect","pushedAt":"2024-09-18T00:58:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Further C++ refactoring.\n\nRefactor the Camera type into the base Camera class.\nRefactor fillSaveName into CameraList class, it is only used there.\nStyle adjustments.","shortMessageHtmlLink":"Further C++ refactoring."}},{"before":"cf0cf19d514c417c0bd2eae5719e753a028bbb06","after":"c521d95f97a8602499bcd7c0ca62068f23106369","ref":"refs/heads/multi-connect","pushedAt":"2024-09-17T07:39:49.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Minor style updates.\n\nMove some more code into std::string native and const a few more\nparameters.","shortMessageHtmlLink":"Minor style updates."}},{"before":"9fc44cc31bd82fd3685f4da6f6e0821812ab192b","after":"cf0cf19d514c417c0bd2eae5719e753a028bbb06","ref":"refs/heads/multi-connect","pushedAt":"2024-09-16T10:23:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Fix m5stack-core build.","shortMessageHtmlLink":"Fix m5stack-core build."}},{"before":"8490aa8753e795895e673c6f89e4a5b434b5fa0e","after":"9fc44cc31bd82fd3685f4da6f6e0821812ab192b","ref":"refs/heads/multi-connect","pushedAt":"2024-09-16T10:19:04.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Update clang-format action version.","shortMessageHtmlLink":"Update clang-format action version."}},{"before":null,"after":"8490aa8753e795895e673c6f89e4a5b434b5fa0e","ref":"refs/heads/multi-connect","pushedAt":"2024-09-16T10:02:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Tweak the code style a little.\n\nFix minor error in shutter lock formatting, introduced when migrating\nfrom String to std::string.\n\nAlso removed unused macros.","shortMessageHtmlLink":"Tweak the code style a little."}},{"before":"e4cdf5e336e871542cdfa278f78b938cab56fed4","after":null,"ref":"refs/heads/migrate-freertos","pushedAt":"2024-09-10T04:34:59.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"}},{"before":"bbcd1407b3e84284f878f8b54809793e2bbe9be2","after":"8afb0e1848274bf463d002da3cc89256679d4b2b","ref":"refs/heads/master","pushedAt":"2024-09-10T04:34:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Migrate to FreeRTOS for UI and camera control. (#126)\n\nStill using the Arduino framework, however we now use the underlying\r\nFreeRTOS for better control over tasks.\r\n\r\nInitially, split the UI and control to separate tasks, furthermore, use\r\na queue to manage camera control.\r\nThis almost allows the UI to operate without constraints on camera traffic.","shortMessageHtmlLink":"Migrate to FreeRTOS for UI and camera control. (#126)"}},{"before":"dbb74e20ce64fb501d82499fa7dc61b9cb4cf39a","after":"e4cdf5e336e871542cdfa278f78b938cab56fed4","ref":"refs/heads/migrate-freertos","pushedAt":"2024-09-10T04:11:16.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Migrate to FreeRTOS for UI and camera control.\n\nStill using the Arduino framework, however we now use the underlying\nFreeRTOS for better control over tasks.\n\nInitially, split the UI and control to separate tasks, furthermore, use\na queue to manage camera control.\nThis almost allows the UI to operate without constraints on camera traffic.","shortMessageHtmlLink":"Migrate to FreeRTOS for UI and camera control."}},{"before":null,"after":"dbb74e20ce64fb501d82499fa7dc61b9cb4cf39a","ref":"refs/heads/migrate-freertos","pushedAt":"2024-09-10T04:07:03.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Migrate camera control to task and queue.","shortMessageHtmlLink":"Migrate camera control to task and queue."}},{"before":"49e75349441523390c151d5be95e4b01769d0426","after":null,"ref":"refs/heads/use-esp-log","pushedAt":"2024-09-01T04:34:28.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"}},{"before":"8065699708e70fca1c70a07414baa23faa233b1c","after":"bbcd1407b3e84284f878f8b54809793e2bbe9be2","ref":"refs/heads/master","pushedAt":"2024-09-01T04:34:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Replace Serial.print with esp_log (#125)\n\n* Migrate from Serial.print to ESP_LOG.\r\n\r\nUse the ESP32 logging framework for debug messages.\r\n\r\n* Migrate more Serial.prints.\r\n\r\n* Clean up migration to ESP logging.\r\n\r\nWhilst here, noticed we're leaking client connections, so migrate to\r\nunique_ptr to handle it.","shortMessageHtmlLink":"Replace Serial.print with esp_log (#125)"}},{"before":null,"after":"49e75349441523390c151d5be95e4b01769d0426","ref":"refs/heads/use-esp-log","pushedAt":"2024-09-01T04:24:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Clean up migration to ESP logging.\n\nWhilst here, noticed we're leaking client connections, so migrate to\nunique_ptr to handle it.","shortMessageHtmlLink":"Clean up migration to ESP logging."}},{"before":"4533d7c27538571cc72fc7450359e4565a6b7e10","after":null,"ref":"refs/heads/123-unify-m5stickc-firmware-images","pushedAt":"2024-08-27T10:30:20.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"}},{"before":"754664c2ac5751a3efd6ec70d5ec92ba8dbf13d6","after":"8065699708e70fca1c70a07414baa23faa233b1c","ref":"refs/heads/master","pushedAt":"2024-08-27T10:30:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Use runtime board detection to set screen parameters. (#124)\n\nMove the compile parameters for various UI elements to runtime\r\ndetection.\r\n\r\nRemove the M5StickC firmware variants, now there is only one M5StickC\r\nfirmware for all hardware variants.","shortMessageHtmlLink":"Use runtime board detection to set screen parameters. (#124)"}},{"before":"eb3b978f4b8ed6f0a67ca4598f3645e7aa76e7b8","after":"4533d7c27538571cc72fc7450359e4565a6b7e10","ref":"refs/heads/123-unify-m5stickc-firmware-images","pushedAt":"2024-08-27T10:17:22.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Use runtime board detection to set screen parameters.\n\nMove the compile parameters for various UI elements to runtime\ndetection.\n\nRemove the M5StickC firmware variants, now there is only one M5StickC\nfirmware for all hardware variants.","shortMessageHtmlLink":"Use runtime board detection to set screen parameters."}},{"before":"90b43991cc594f16c27b33276dfb175affdb4da2","after":"eb3b978f4b8ed6f0a67ca4598f3645e7aa76e7b8","ref":"refs/heads/123-unify-m5stickc-firmware-images","pushedAt":"2024-08-27T10:16:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Fix README for M5StickC Plus build.","shortMessageHtmlLink":"Fix README for M5StickC Plus build."}},{"before":"754664c2ac5751a3efd6ec70d5ec92ba8dbf13d6","after":"90b43991cc594f16c27b33276dfb175affdb4da2","ref":"refs/heads/123-unify-m5stickc-firmware-images","pushedAt":"2024-08-27T10:13:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gkoh","name":"Guo-Rong","path":"/gkoh","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/5484552?s=80&v=4"},"commit":{"message":"Use runtime board detection to set screen parameters.\n\nMove the compile parameters for various UI elements to runtime\ndetection.\n\nRemove the M5StickC firmware variants, now there is only one M5StickC\nfirmware for all hardware variants.","shortMessageHtmlLink":"Use runtime board detection to set screen parameters."}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"startCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOS0yNVQwNjoyNzoxNi4wMDAwMDBazwAAAAS_8OXa","endCursor":"Y3Vyc29yOnYyOpK7MjAyNC0wOC0yN1QxMDoxMzo0MS4wMDAwMDBazwAAAASlNYdW"}},"title":"Activity ยท gkoh/furble"}