{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":649196185,"defaultBranch":"main","name":"keystoke-statusbar","ownerLogin":"lloydlobo","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-06-04T05:04:19.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/76430758?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1685855080.043977","currentOid":""},"activityList":{"items":[{"before":"b169372d09fefc404b378ad9cafdde4f579753ee","after":"521b79f219e8160c8e0c785c2294fb416e176be7","ref":"refs/heads/main","pushedAt":"2023-10-22T05:20:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"chore: add placeholder for macOS Windows support","shortMessageHtmlLink":"chore: add placeholder for macOS Windows support"}},{"before":"5282ffad55990fbeb6c7f2069a00e757979c781e","after":"b169372d09fefc404b378ad9cafdde4f579753ee","ref":"refs/heads/main","pushedAt":"2023-10-22T04:40:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"docs: update project name","shortMessageHtmlLink":"docs: update project name"}},{"before":"5ac0217fd778edf88d4b04788656ba9486e2e7bc","after":"5282ffad55990fbeb6c7f2069a00e757979c781e","ref":"refs/heads/main","pushedAt":"2023-06-23T07:04:56.624Z","pushType":"push","commitsCount":2,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"test: add benchmarks\n\nThe repeat_blinker.py script has been refactored to improve the\nimplementation and two approaches have been compared using benchmarks.\n\nChanges Made:\n- Refactored repeat_blinker.py to include two different approaches (approach1\n and approach2) for updating the repeat_blinker variable.\n- Added benchmarking code to measure the execution time of each approach.\n- Documented the benchmark results and conclusions for both the original\n code and the refactored code.\n\nBenchmark Results (Timestamp: 2023-06-23 12:10pm):\n- Approach 1 execution time: 0.1358351930102799\n- Approach 2 execution time: 0.1464715600013733\n- Approach 1 execution time: 0.15091263700742275\n- Approach 2 execution time: 0.17113871900073718\n- Approach 1 execution time: 0.14487505500437692\n- Approach 2 execution time: 0.15307779899740126\n- Approach 1 execution time: 0.13119528599781916\n- Approach 2 execution time: 0.14762886799871922\n- Approach 1 execution time: 0.1345155849994626\n- Approach 2 execution time: 0.16528391500469297\n- Approach 1 execution time: 0.14086058299290016\n- Approach 2 execution time: 0.14593262600828893\n- Approach 1 execution time: 0.1390316269971663\n- Approach 2 execution time: 0.17395710000710096\n- Approach 1 execution time: 0.14983699499862269\n- Approach 2 execution time: 0.16607758001191542\n\nConclusion:\nBased on the benchmark results, it can be observed that the execution times for Approach 1 and Approach 2 are relatively close. There is some variation in the execution times between different runs, but overall, the difference in performance between the two approaches is not significant. Therefore, in terms of performance, both approaches can be considered comparable.\n\nBenchmark Results (Timestamp: 12:23pm):\n- Approach 1 mod execution time: 0.10104788100579754\n- Approach 2 mod execution time: 0.07497309299651533\n- Approach 1 mod execution time: 0.1052592949999962\n- Approach 2 mod execution time: 0.09829926800739486\n- Approach 1 mod execution time: 0.1202450900018448\n- Approach 2 mod execution time: 0.09305175200279336\n- Approach 1 mod execution time: 0.13630819699028507\n- Approach 2 mod execution time: 0.0821700980013702\n- Approach 1 mod execution time: 0.16806030299630947\n- Approach 2 mod execution time: 0.09783654000784736\n- Approach 1 mod execution time: 0.12246345700987149\n- Approach 2 mod execution time: 0.10021215899905656\n- Approach 1 mod execution time: 0.11530429699632805\n- Approach 2 mod execution time: 0.08205466400249861\n- Approach 1 mod execution time: 0.10933067300356925\n- Approach 2 mod execution time: 0.080028497002786","shortMessageHtmlLink":"test: add benchmarks"}},{"before":"519a44e416b2c01f0cf01354ef27b695c7a81913","after":"5ac0217fd778edf88d4b04788656ba9486e2e7bc","ref":"refs/heads/main","pushedAt":"2023-06-23T05:25:25.576Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"fix: use subtle repeat key background indicator","shortMessageHtmlLink":"fix: use subtle repeat key background indicator"}},{"before":"776b6ea2217e096378a315cceef0bdc0f3a7b5ef","after":"519a44e416b2c01f0cf01354ef27b695c7a81913","ref":"refs/heads/main","pushedAt":"2023-06-23T04:54:33.039Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: Refactor key handling logic and optimize key history caching\n\n- Replaced the `key_history` list with a `key_history` deque to\n efficiently handle the sliding window of key history with max length.\n Also avoids the need to clear the entire deque.\n- Updated the `on_press` and `on_release` methods to correctly handle\n key events and update the key history.\n- Removed unnecessary code and unused variables.\n- Improved the rendering logic and fixed rendering issues.\n- Optimized the key count calculation and reset the key count after each round.\n- Cleaned up unused imports and commented-out code.\n- Removed unused `pause_listener` and `resume_listener` methods.\n- Updated the `run` method to remove unnecessary conditionals and\n improve performance.\n- Updated the debug information and comments.\n\nThis commit improves the efficiency and performance of the key handling logic\n, making the code more readable and maintainable.","shortMessageHtmlLink":"feat: Refactor key handling logic and optimize key history caching"}},{"before":"272598bbd05f5df1f8cbe91c7b429f8760cbe2d8","after":"776b6ea2217e096378a315cceef0bdc0f3a7b5ef","ref":"refs/heads/main","pushedAt":"2023-06-16T13:51:28.918Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"chore: disable printing mappings conversions","shortMessageHtmlLink":"chore: disable printing mappings conversions"}},{"before":"a9f15590c4a681a2dcf0a320014ae40ad3dff406","after":"272598bbd05f5df1f8cbe91c7b429f8760cbe2d8","ref":"refs/heads/main","pushedAt":"2023-06-16T13:45:06.732Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: use global hot-keys to reset or pause","shortMessageHtmlLink":"feat: use global hot-keys to reset or pause"}},{"before":"cc4f8d5c66be95cf60cb29a2b4fdc779a8b952b8","after":"a9f15590c4a681a2dcf0a320014ae40ad3dff406","ref":"refs/heads/main","pushedAt":"2023-06-16T07:36:46.457Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: print mod key symbols on key event","shortMessageHtmlLink":"feat: print mod key symbols on key event"}},{"before":"6b633f1b987b1d51f994d022bb9add0ef03da6d3","after":"cc4f8d5c66be95cf60cb29a2b4fdc779a8b952b8","ref":"refs/heads/main","pushedAt":"2023-06-15T12:26:43.304Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: add colemak_dh keybindings","shortMessageHtmlLink":"feat: add colemak_dh keybindings"}},{"before":"6231e672b6b1cc7c64c87bb9a26bda0b32b4dc1d","after":"6b633f1b987b1d51f994d022bb9add0ef03da6d3","ref":"refs/heads/main","pushedAt":"2023-06-14T05:14:42.424Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: disable drawing world scene","shortMessageHtmlLink":"feat: disable drawing world scene"}},{"before":"af7fa8c85b5236424d5868d5e232571719b9e3f4","after":"6231e672b6b1cc7c64c87bb9a26bda0b32b4dc1d","ref":"refs/heads/main","pushedAt":"2023-06-13T14:31:34.627Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: print dual bindings","shortMessageHtmlLink":"feat: print dual bindings"}},{"before":"a9115601a66dca4ae48e6f52aa60db6d8aaecb8c","after":"af7fa8c85b5236424d5868d5e232571719b9e3f4","ref":"refs/heads/main","pushedAt":"2023-06-13T11:00:03.014Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: add keybindings for layouts","shortMessageHtmlLink":"feat: add keybindings for layouts"}},{"before":"f4d05715eb02af1b3ba084eaaa9db51e713f3ae4","after":"a9115601a66dca4ae48e6f52aa60db6d8aaecb8c","ref":"refs/heads/main","pushedAt":"2023-06-13T09:48:21.430Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"feat: print dvorak qwerty relation","shortMessageHtmlLink":"feat: print dvorak qwerty relation"}},{"before":"fb44aa35a54ba6454cc4ec14a82d4ceba0f9c54b","after":"f4d05715eb02af1b3ba084eaaa9db51e713f3ae4","ref":"refs/heads/main","pushedAt":"2023-06-12T03:12:26.870Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"docs: update usage in README.md\n\nChanges: `&` at the end of `... > game.log &` runs the process in the background.","shortMessageHtmlLink":"docs: update usage in README.md"}},{"before":"8279fcf2f8fed156bf2b1f65773b82809a4d6f3c","after":"fb44aa35a54ba6454cc4ec14a82d4ceba0f9c54b","ref":"refs/heads/main","pushedAt":"2023-06-12T03:04:23.246Z","pushType":"pr_merge","commitsCount":5,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: Merge pull request #2 from Harshal662/task1\n\nThis pull request fixes these issues.\r\n- [perf: use accurate sleep timing mechanism](https://github.com/lloydlobo/keystrokes/issues/1)","shortMessageHtmlLink":"perf: Merge pull request #2 from Harshal662/task1"}},{"before":"ac42dfb176a64f5d8aee99bfd95d7c9715bc4435","after":"8279fcf2f8fed156bf2b1f65773b82809a4d6f3c","ref":"refs/heads/main","pushedAt":"2023-06-11T09:10:42.575Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"docs: update README with improved script usage instructions\n\nThis commit updates the README file to provide clearer and more detailed instructions for running the `keystrokes` script, improving the overall usability of the documentation.","shortMessageHtmlLink":"docs: update README with improved script usage instructions"}},{"before":"b4217e4d58a50de6e6c0707e7a3ead5db70a82fd","after":"ac42dfb176a64f5d8aee99bfd95d7c9715bc4435","ref":"refs/heads/main","pushedAt":"2023-06-06T13:50:50.999Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"refactor: stop using dot imports","shortMessageHtmlLink":"refactor: stop using dot imports"}},{"before":"941f3b7a6f74e6451ce288ba71e2ab48daa28732","after":"b4217e4d58a50de6e6c0707e7a3ead5db70a82fd","ref":"refs/heads/main","pushedAt":"2023-06-06T13:08:41.543Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"fix: use if else to print key if not paused","shortMessageHtmlLink":"fix: use if else to print key if not paused"}},{"before":"4eea4f6d9a97d9b8e192aea1c98c15f0f5e89b31","after":"941f3b7a6f74e6451ce288ba71e2ab48daa28732","ref":"refs/heads/main","pushedAt":"2023-06-06T12:55:38.110Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: use faster f-strings to print scene\n\n.format is slower than using f-strings while printing\noutput module messages, that render the world scene per frame","shortMessageHtmlLink":"perf: use faster f-strings to print scene"}},{"before":"6e520294e999dffa43d84622ee049d9fc9df5ad7","after":"4eea4f6d9a97d9b8e192aea1c98c15f0f5e89b31","ref":"refs/heads/main","pushedAt":"2023-06-06T12:23:56.659Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: replace list with deque for speed & safety\n\nUsing double-ended queue. In Python it is a doubly linked list.\n\nIt avoids unnecessary list operations: The code performs multiple list\noperations like pop(0) and append() in the render() method.\nA deque (double-ended queue) from the collections module, provides\nefficient operations for adding and removing elements from both ends.\n\nIn the modified code, the foreground and background lists have been\nreplaced with deque objects. The popleft() and append() methods of deque\nare used instead of pop(0) and append() for improved performance when\nremoving elements from the left end and adding elements to the right end\nof the deque.\n\nBy using deque, the code will be more efficient when working with large\nlists and performing frequent insertions and deletions.","shortMessageHtmlLink":"perf: replace list with deque for speed & safety"}},{"before":"8d86c7909f45971f25db921178c8e3050f086e8b","after":"6e520294e999dffa43d84622ee049d9fc9df5ad7","ref":"refs/heads/main","pushedAt":"2023-06-06T11:22:17.577Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"refactor: use better variable names","shortMessageHtmlLink":"refactor: use better variable names"}},{"before":"872cd846eaf778fc068d2a2aced9235a6309c73f","after":"8d86c7909f45971f25db921178c8e3050f086e8b","ref":"refs/heads/main","pushedAt":"2023-06-06T10:52:54.381Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"fix: initalize App in main first then run","shortMessageHtmlLink":"fix: initalize App in main first then run"}},{"before":"0a4cbce1e19163f4f5a05fb1edc89a767e491e4b","after":"872cd846eaf778fc068d2a2aced9235a6309c73f","ref":"refs/heads/main","pushedAt":"2023-06-06T08:35:51.054Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"refactor: use declarative name for rendering random tree","shortMessageHtmlLink":"refactor: use declarative name for rendering random tree"}},{"before":"b9a2482a78be418ddb750410d348ed3789188c55","after":"0a4cbce1e19163f4f5a05fb1edc89a767e491e4b","ref":"refs/heads/main","pushedAt":"2023-06-06T08:18:36.213Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"style: use declarative syntax to display world artifacts","shortMessageHtmlLink":"style: use declarative syntax to display world artifacts"}},{"before":"20d97d33f8425d7bbce6366883f40206bd5073f6","after":"b9a2482a78be418ddb750410d348ed3789188c55","ref":"refs/heads/main","pushedAt":"2023-06-06T07:28:36.836Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: avoid filter mapping None in self.world","shortMessageHtmlLink":"perf: avoid filter mapping None in self.world"}},{"before":"52af55916f5b77a02fa9f8802d13c528e30b0559","after":"20d97d33f8425d7bbce6366883f40206bd5073f6","ref":"refs/heads/main","pushedAt":"2023-06-06T06:42:37.350Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: iterate over world lists together with zip\n\nFor potential performance improvements, using the zip() function to\niterate over the self.background and self.foreground lists simultaneously.\nThis way, we can avoid accessing the self.world list multiple times\nwithin the list comprehension.\n\nBy using zip(), we can iterate over both self.foreground and self.background\nlists simultaneously, accessing their elements in pairs.\nThis allows us to perform the required conditions and assignments in a single\npass (as they are accesed as tuples), potentially improving\nperformance compared to the original list comprehension.","shortMessageHtmlLink":"perf: iterate over world lists together with zip"}},{"before":"935959637a34279cf0e8e5ab95772e581c3f18ae","after":"52af55916f5b77a02fa9f8802d13c528e30b0559","ref":"refs/heads/main","pushedAt":"2023-06-05T14:05:27.721Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"style: change hill to cloud for background","shortMessageHtmlLink":"style: change hill to cloud for background"}},{"before":"1cdc75fcf8294e0c3dac3637885bc10a57a2a1a3","after":"935959637a34279cf0e8e5ab95772e581c3f18ae","ref":"refs/heads/main","pushedAt":"2023-06-05T14:01:17.737Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: use list comprehension to speed up\n\nAlso add new world CHAR for foreground and background","shortMessageHtmlLink":"perf: use list comprehension to speed up"}},{"before":"e86d2f2fcb7156e109bf5e835504cd6680068e3f","after":"1cdc75fcf8294e0c3dac3637885bc10a57a2a1a3","ref":"refs/heads/main","pushedAt":"2023-06-05T09:30:27.251Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: avoid import dot operation to save time\n\nSee reference:\nhttps://www.loginradius.com/blog/engineering/speed-up-python-code/\n\nDo not use dot operation\n\nTry to avoid dot operation. See the below programme.\n\nimport math\nval = math.sqrt(60)\n\nInstead of the above style write code like this:\n\nfrom math import sqrt\nval = sqrt(60)\n\nBecause when you call a function using . (dot) it first calls __getattribute\n()__ or __getattr()__ which then use dictionary operation which costs time. So\n, try using from module import function.","shortMessageHtmlLink":"perf: avoid import dot operation to save time"}},{"before":"ab534444866eb92c87114eb65958c194715e8bc6","after":"e86d2f2fcb7156e109bf5e835504cd6680068e3f","ref":"refs/heads/main","pushedAt":"2023-06-05T09:22:44.019Z","pushType":"push","commitsCount":1,"pusher":{"login":"lloydlobo","name":"Lloyd Lobo","path":"/lloydlobo","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/76430758?s=80&v=4"},"commit":{"message":"perf: avoid creating new output string modules\n\nTo improve performance and avoid creating new strings with\nthe + operator, we use the str.join() method and concatenate\nthe different parts of the output string.\n\nUsing `while 1` instead of `while True` for runtime speed boost.","shortMessageHtmlLink":"perf: avoid creating new output string modules"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADnMqe0gA","startCursor":null,"endCursor":null}},"title":"Activity ยท lloydlobo/keystoke-statusbar"}