{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":757277869,"defaultBranch":"main","name":"SOTAcat","ownerLogin":"SOTAmat","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2024-02-14T06:49:21.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/113223977?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1707893537.0","currentOid":""},"activityList":{"items":[{"before":"38a66f6e00abf0cae945f2353bfe5e4b2fe412cf","after":"51a91336b0eaa0b2ef25df0344543e9e552e42f0","ref":"refs/heads/main","pushedAt":"2024-04-22T03:20:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"At Jeff's request, I flipped the default mobile hotspot settings from Client-2 to Client-1. So by default Client-2 is for the home network (optional). I also updated the web page instructions. I also changed the \"Save Settings\" button to be a \"Save and Reboot\" so that you don't have to manually power down the SOTACAT when changing settings.","shortMessageHtmlLink":"At Jeff's request, I flipped the default mobile hotspot settings from…"}},{"before":"536360811dc859985bf66d1eab4b655a9e09658a","after":"38a66f6e00abf0cae945f2353bfe5e4b2fe412cf","ref":"refs/heads/main","pushedAt":"2024-04-21T22:56:09.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Changed the default for WiFi Client-2 to make Android Hotspot setup easier for people: less setup steps if you make your Android hotspot use the same SSID and Password that the SOTACAT defaults to with factory fresh firmware. Relates to issue #41.","shortMessageHtmlLink":"Changed the default for WiFi Client-2 to make Android Hotspot setup e…"}},{"before":"34fb53c2ffbbd639c30bd5638c0ddc91b45e94db","after":"536360811dc859985bf66d1eab4b655a9e09658a","ref":"refs/heads/main","pushedAt":"2024-04-21T07:36:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Updated the location of the WebSerial binary on the Wordpress site.","shortMessageHtmlLink":"Updated the location of the WebSerial binary on the Wordpress site."}},{"before":"7f710315bf6e63f264c2645a2621d3298b02976a","after":"34fb53c2ffbbd639c30bd5638c0ddc91b45e94db","ref":"refs/heads/main","pushedAt":"2024-04-21T07:30:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Demoted various ESP_LOGI calls to ESP_LOGD so they don't show up in Release builds. Also increased the number of retries when talking to the radio to 3 (from 2).","shortMessageHtmlLink":"Demoted various ESP_LOGI calls to ESP_LOGD so they don't show up in R…"}},{"before":"598d9ca147e4160fab55c8ba603fcbe1bb96d711","after":"7f710315bf6e63f264c2645a2621d3298b02976a","ref":"refs/heads/main","pushedAt":"2024-04-15T17:43:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"add FM to mode filter in sota/pota UI","shortMessageHtmlLink":"add FM to mode filter in sota/pota UI"}},{"before":"d05d1e1f4d0af5916b19db7b460b2947ba2c1124","after":"598d9ca147e4160fab55c8ba603fcbe1bb96d711","ref":"refs/heads/main","pushedAt":"2024-04-15T03:55:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"fix #5: filtering spots by mode\n\nThere is a new dropdown menu in the mode heading within the sota/pota\ntables. Selecting a specific mode (or \"All\") will filter the rows to\njust the desired type.\n\nImplementing this required significant adjustment to column sorting,\nsince the heading clicks were formerly ambiguous. Now, clicking a\nheading title will sort, but clicking the dropdown will prefer the\ndropdown itself, and not affect the sort.\n\nSorting is now more flexible, allowing column sort on a field that isn't\nactually displayed. This allows us to create computed columns, like\n\"timestamp\", which obey lexical order more efficiently than what we\ndisplay for the spot time.\n\nThe sota/potaSpotData table is augmented to contain additional fields\nbeyond those that were obtained by respective web sources.\n\nThis hints to a future change, where the columns will also specify\nwhat each cell beneath them in each row should display. This will\nenable us to eventually collapse the pota and sota code, relying on the\nHTML table definitions to call out what fields are required in an\nenriched data table.","shortMessageHtmlLink":"fix #5: filtering spots by mode"}},{"before":"42388d47fc8ad511e0defc1bf37c7624663995d5","after":"d05d1e1f4d0af5916b19db7b460b2947ba2c1124","ref":"refs/heads/main","pushedAt":"2024-04-14T16:49:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"streamline declarations; add comments\n\nStreamline declarations of assets and of handlers.\nConsolidate handlers into just one table, adding the http_method to\ndistinguish between them.\nAdd descriptive comments to all functions.\nUse REPLY_WITH_FAILURE where appropriate.","shortMessageHtmlLink":"streamline declarations; add comments"}},{"before":"c2898033ef03f104104d59f549833379e4607d64","after":"42388d47fc8ad511e0defc1bf37c7624663995d5","ref":"refs/heads/main","pushedAt":"2024-04-14T06:19:40.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"improve comments in idle_status_task.cpp","shortMessageHtmlLink":"improve comments in idle_status_task.cpp"}},{"before":"58cf18000d73ae759c02afbf86c4a31d2d2ddd90","after":"c2898033ef03f104104d59f549833379e4607d64","ref":"refs/heads/main","pushedAt":"2024-04-14T05:38:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"factor all handlers & improve their comments\n\nWrite descriptive comments for each function in the handlers set.\n\nDefine and apply REPLY_WITH_FAILURE and REPLY_WITH_SUCCESS, to encapsulate common\nreturns from handlers.\n\nDe-nest remaining conditionals, preferring early return on error rather\nthan deeply nested success cases.\n\nUse std::unique_ptr for local buffers rather than new/delete.\nRefer to the internals using unsafe_buf, where appropriate.\n\nGenerally, in handlers that have parameters, try to follow a standard\npattern of retrieving the query, finding the param, parsing it, then\noperating.\n\nCurrently, 404's are issued for errors in parsing, and 500's are issued\nfor errors in processing or interacting with the radio. Perhaps these\ncould be more precise, but presently the client (JS-side) doesn't do\nmuch with the error codes.","shortMessageHtmlLink":"factor all handlers & improve their comments"}},{"before":"bb510ab0722e03aa627259218927e17aecfe6559","after":"58cf18000d73ae759c02afbf86c4a31d2d2ddd90","ref":"refs/heads/main","pushedAt":"2024-04-13T23:56:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"add comments; un-nest error-handling\n\nAdd descriptive comments to major variables and all functions.\n\nInvert sense of error-detecting conditionals in functions, so that the\nreturn-on-error clauses happen earlier in the file, making the remaining\nerror-free case less nested.","shortMessageHtmlLink":"add comments; un-nest error-handling"}},{"before":"bd492a3659e8fb462b631a12d0964a0abd0154c0","after":"bb510ab0722e03aa627259218927e17aecfe6559","ref":"refs/heads/main","pushedAt":"2024-04-13T06:47:52.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"Merge branch 'main' of github.com:SOTAmat/SOTAcat","shortMessageHtmlLink":"Merge branch 'main' of github.com:SOTAmat/SOTAcat"}},{"before":"c1b38af74d14231b92da7768611b780166c0e1f0","after":"bd492a3659e8fb462b631a12d0964a0abd0154c0","ref":"refs/heads/main","pushedAt":"2024-04-05T22:52:28.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Fixed inverted markdown symbols for README.","shortMessageHtmlLink":"Fixed inverted markdown symbols for README."}},{"before":"2b8bcd3756be0d65f61462404868a8b5d3150c0e","after":"c1b38af74d14231b92da7768611b780166c0e1f0","ref":"refs/heads/main","pushedAt":"2024-04-05T22:50:21.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Updated README.md with info about K5EM's custom PCB github.\n\nUpdated README.md with info about K5EM's custom PCB github.","shortMessageHtmlLink":"Updated README.md with info about K5EM's custom PCB github."}},{"before":"097fa4215c9ec661386d714b5d5a1ad7531f183b","after":"2b8bcd3756be0d65f61462404868a8b5d3150c0e","ref":"refs/heads/main","pushedAt":"2024-04-02T03:52:00.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"fix #36: friendly validation of settings\n\nWifi settings now have two levels of validation\nFirst, using HTML5's validations we check for proper lengths of SSID and\nPassword. Then, using custom code we ensure that if one is set, so is\nthe other.","shortMessageHtmlLink":"fix #36: friendly validation of settings"}},{"before":"855de3411ef2dbd7ba380401697a516324fdfc0d","after":"097fa4215c9ec661386d714b5d5a1ad7531f183b","ref":"refs/heads/main","pushedAt":"2024-03-28T02:25:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Further Readme.md updates","shortMessageHtmlLink":"Further Readme.md updates"}},{"before":"0bbcddac957aca53f8ce4e13202c61e2c31e40f9","after":"855de3411ef2dbd7ba380401697a516324fdfc0d","ref":"refs/heads/main","pushedAt":"2024-03-28T02:17:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Updated instructions","shortMessageHtmlLink":"Updated instructions"}},{"before":"8a07b5287520df0248b482e03dd9b5217a7c23d1","after":"0bbcddac957aca53f8ce4e13202c61e2c31e40f9","ref":"refs/heads/main","pushedAt":"2024-03-28T00:51:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Moved location of the merged binary to be in the same directory as the manifest.json, and updated where the manifest.json gets served from: the sotamat.com web site rather than directly from github. Allows a QA step beyond developer work.","shortMessageHtmlLink":"Moved location of the merged binary to be in the same directory as th…"}},{"before":"cf2bbf3909abf0db32c6bd780dbbb4891a4d6a5a","after":"8a07b5287520df0248b482e03dd9b5217a7c23d1","ref":"refs/heads/main","pushedAt":"2024-03-28T00:42:29.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Additional logging for pre and post build scripts. Updated firmware manifest.","shortMessageHtmlLink":"Additional logging for pre and post build scripts. Updated firmware m…"}},{"before":"142e910c5632f6a234b583acf43f8a73a1808af3","after":"cf2bbf3909abf0db32c6bd780dbbb4891a4d6a5a","ref":"refs/heads/main","pushedAt":"2024-03-28T00:27:30.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Implements issue #39 to automatically updated the ESP Web Tools manifest.json with the build number and build type.","shortMessageHtmlLink":"Implements issue #39 to automatically updated the ESP Web Tools manif…"}},{"before":"cbc36cae9e971f2ed3871d4b004a47190327d75d","after":"142e910c5632f6a234b583acf43f8a73a1808af3","ref":"refs/heads/main","pushedAt":"2024-03-27T22:38:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Implements issue #14 to allow for Debug and Release builds as well as showing version info in the UI. Changes the logging level based on build type. Changes the optimization level too.","shortMessageHtmlLink":"Implements issue #14 to allow for Debug and Release builds as well as…"}},{"before":"9e2610238c3143a3df2f35c838c724b39612b2bf","after":"cbc36cae9e971f2ed3871d4b004a47190327d75d","ref":"refs/heads/main","pushedAt":"2024-03-27T04:01:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Slight UI tweaks.","shortMessageHtmlLink":"Slight UI tweaks."}},{"before":"9d6cd92d94774b7cc8031394eedb61065e8bf6c2","after":"9e2610238c3143a3df2f35c838c724b39612b2bf","ref":"refs/heads/main","pushedAt":"2024-03-27T03:46:25.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Updated firmware version ID for latest build posted to sotamat.com/sotacat.","shortMessageHtmlLink":"Updated firmware version ID for latest build posted to sotamat.com/so…"}},{"before":"015d9f898f21744879b152d9871aae62e5e5d3ac","after":"9d6cd92d94774b7cc8031394eedb61065e8bf6c2","ref":"refs/heads/main","pushedAt":"2024-03-26T04:01:44.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"Optimize dup row styling with dynamic CSS\n\nRather than re-populating the table when the \"dup\" box is [un]checked,\nwe now modify the style applied to the appropriate (duplicate) rows, to\ntoggle visibility.","shortMessageHtmlLink":"Optimize dup row styling with dynamic CSS"}},{"before":"e945eab152b5e285a445ab5cb9f7ed465cd54daa","after":"015d9f898f21744879b152d9871aae62e5e5d3ac","ref":"refs/heads/main","pushedAt":"2024-03-26T03:19:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"better use of Set\n\nseenCallSigns Set is now accessed in a more straighforward way","shortMessageHtmlLink":"better use of Set"}},{"before":"bd01a33c57ca83c7e1fa3e937c92b0508f973923","after":"e945eab152b5e285a445ab5cb9f7ed465cd54daa","ref":"refs/heads/main","pushedAt":"2024-03-26T02:41:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"Fix #22 - drop-down history duration for spot list\n\nRemoved code that had implemented variable refresh rate. Refresh is now\nevery minute, as it was earlier.\n\nImplemented a drop-down to select varying history duration for\ndisplaying the spot list. Two things to note:\n1) The dropdown is only for SOTA, not POTA. POTA has no such mechanism\nto request spots within a time range, so we just get what appears to be\nthe spots within the last hour. My understanding is that fresher spots\nare those that are respotted, and those that are more than an hour old\nare stale, in practice.\n2) SOTA spot history is quantized to an hour, so this commit doesn't\nimplement the 15 min and 30 min options as requested in the enhancement\nrequest. I had experimented with a secondary filter to get\nfiner-grained narrowing, but given that the list is sortable by time, it\ndidn't seem to be worth the code complication.\n\nIn the course of implementing this, I chose to simplify the\nrefreshSotaPotaJson routine so that it only gets the data relevant to\nthe current tab. This should lighten web traffic. Switching tabs\nbetween SOTA and POTA always fetches the latest data anyway, so there's\nno reason to keep the \"other\" tab's data up-to-date.","shortMessageHtmlLink":"Fix #22 - drop-down history duration for spot list"}},{"before":"4e30e3213947c1a3a28bb97c18e035576177bdb2","after":"bd01a33c57ca83c7e1fa3e937c92b0508f973923","ref":"refs/heads/main","pushedAt":"2024-03-25T05:25:43.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"rationalize include files\n\n- remove references to unnecessary #includes\n- clarify quoting of includes (\"\" vs <>)\n- hoist includes into local includes where necessary to access useful decls","shortMessageHtmlLink":"rationalize include files"}},{"before":"87b0138301119ce732ee8f71c790b5f7f1ec875c","after":"4e30e3213947c1a3a28bb97c18e035576177bdb2","ref":"refs/heads/main","pushedAt":"2024-03-25T04:11:56.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"Merge branch 'main' of github.com:SOTAmat/SOTAcat","shortMessageHtmlLink":"Merge branch 'main' of github.com:SOTAmat/SOTAcat"}},{"before":"d23927d05a6954fe9e7646d492082251b19331ab","after":"87b0138301119ce732ee8f71c790b5f7f1ec875c","ref":"refs/heads/main","pushedAt":"2024-03-24T21:02:23.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Fixed instructions. Slight wording mistake.","shortMessageHtmlLink":"Fixed instructions. Slight wording mistake."}},{"before":"d20cc9bbe9cadcf82f1ece1a851851056d89508b","after":"d23927d05a6954fe9e7646d492082251b19331ab","ref":"refs/heads/main","pushedAt":"2024-03-24T20:42:45.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"brianmathews","name":"Brian Mathews","path":"/brianmathews","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4545536?s=80&v=4"},"commit":{"message":"Merge branch 'main' of github.com:SOTAmat/SOTAcat","shortMessageHtmlLink":"Merge branch 'main' of github.com:SOTAmat/SOTAcat"}},{"before":"f40e420bf8ae2937262ed81c4814f6fcc0c9fcf1","after":"d20cc9bbe9cadcf82f1ece1a851851056d89508b","ref":"refs/heads/main","pushedAt":"2024-03-24T20:22:41.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"jeffkowalski","name":"Jeff Kowalski","path":"/jeffkowalski","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/56880?s=80&v=4"},"commit":{"message":"Merge branch 'main' of github.com:SOTAmat/SOTAcat","shortMessageHtmlLink":"Merge branch 'main' of github.com:SOTAmat/SOTAcat"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAENpMz8wA","startCursor":null,"endCursor":null}},"title":"Activity · SOTAmat/SOTAcat"}