{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":65221460,"defaultBranch":"naomi-dev","name":"Naomi","ownerLogin":"NaomiProject","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-08-08T16:41:13.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/20894415?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1594429539.0","currentOid":""},"activityList":{"items":[{"before":"eb79b809547e52632c931d18276daca1178aeddb","after":"f0984bd57dd0adf3a379116f46316bd62bad2ace","ref":"refs/heads/naomi-dev","pushedAt":"2024-06-07T13:02:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Fix the microphone test (#409)\n\nThis fixes the microphone test that comes up during configuration.\r\n\r\nI switched from using the local_mic to mic_synchronous for the\r\nmicrophone, plus fixed the basic Mic __init__ method to not\r\nfail if some of the options being passed in through kwargs are\r\nmissing.","shortMessageHtmlLink":"Fix the microphone test (#409)"}},{"before":"9a348e7b0f7be7d7739fe5ea4745c4b6135078d6","after":"eb79b809547e52632c931d18276daca1178aeddb","ref":"refs/heads/naomi-dev","pushedAt":"2024-06-07T13:01:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Fixes for Alsa (#407)\n\n* Fixes for Alsa\r\n\r\nWhen the asynchronous mic was introduced, some formatting changes\r\nwere made that were not copied into the Alsa audio engine plugin.\r\n\r\n* Removed pyAudio code\r\n\r\nRemoved some pyaudio code that I copied into the alsa audio engine\r\nplugin while fixing some of the formatting.","shortMessageHtmlLink":"Fixes for Alsa (#407)"}},{"before":"9d2b60096d34d7602ebd130a22208c1fe05bf95c","after":"9a348e7b0f7be7d7739fe5ea4745c4b6135078d6","ref":"refs/heads/naomi-dev","pushedAt":"2024-04-24T01:23:53.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Audiolog fixes (#405)\n\nLog audio when using asynchronous mic, check database exists\r\nbefore attempting to record intent.","shortMessageHtmlLink":"Audiolog fixes (#405)"}},{"before":"579a8b33e2da40e7e0343954204b112df29d5eb2","after":"9d2b60096d34d7602ebd130a22208c1fe05bf95c","ref":"refs/heads/naomi-dev","pushedAt":"2024-03-21T19:29:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"These are some small fixes (#403)\n\nProbably the most notable here is the breaking change of changing\r\nthe \"verify_wakeword\" argument to \"verify_keyword\". This really\r\nisn't an important change, and it may cause some issues with the\r\nVOSK plugin depending on which version is installed.\r\n\r\nThis fixes an issue where the asyncronous mic assumes you are\r\nusing verify_keywords even if you are not.\r\n\r\nFinally, this sets the variable keyword to a string and keywords\r\nto a list in application.py, and saves the keywords to an arg\r\nvariable.","shortMessageHtmlLink":"These are some small fixes (#403)"}},{"before":"93efe5fe46e596e91dc2411ede8ce2ffe7de8c41","after":"579a8b33e2da40e7e0343954204b112df29d5eb2","ref":"refs/heads/naomi-dev","pushedAt":"2024-03-10T19:08:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Synchronous and Asynchronous Mic (#402)\n\n* Synchronous and Asynchronous Mic\r\n\r\nI have turned the Mic class into an abstract class and used it to\r\ncreate two new classes, MicSynchronous and MicAsynchronous. I'm\r\nhoping to expand it to all the different mic classes, including\r\nthe local (text) mic and the batch mic.\r\n\r\nI'm attempting to support both active listen mode (where the\r\ncomputer only starts listening for a command after hearing its\r\nwakeword - Siri-like mode) and passive listen mode (where the\r\ncomputer records blocks of audio, then checks for the wake word\r\nand then checks the same block of audio for a command - Echo-like).\r\n\r\nRight now, I am having trouble with the expect function when using\r\npassive listen mode with the asynchronous listener. This has to do\r\nwith the pyaudio device play_file, which returns when it has\r\nfinished writing to the queue, but before the audio is done\r\nplaying. This leads to situations where the next audio starts\r\ngetting queued before the last audio finishes playing. If the\r\naudio's have different frame sizes, this leads to a segmentation\r\nfault.\r\n\r\nI have been testing by using the \"knock knock joke\" and \"time\"\r\nspeechhandler plugins. Knock-knock joke uses expect quite a bit.\r\nI have been using Pocketsphinx_KWS for my passive STT engine,\r\nPocketsphinx for my special STT engine and VOSK (which is\r\navailable here: https://github.com/aaronchantrill/Naomi_VOSK_STT)\r\nas my active STT engine. VOSK works well, at least in English,\r\nbut requires some additional training if you have non-standard\r\nwords in your vocabulary. I'd like to make VOSK officially\r\navailable through NPE but the last time I trained VOSK to\r\nrecognize some additional words, it required a computer with\r\n32GiB of ram. I will test on my Raspberry Pi 5 with 8 GiB and\r\nsee if it can handle it, but have low expectations. I would\r\nlike to add an option to export the Naomi vocabulary so VOSK\r\ncan be trained on another computer, as it does run well on the\r\nRaspberry Pi 4 and 5.\r\n\r\n* Small fixes for flake8\r\n\r\n* Fix Mic initialization\r\n\r\nMic class is a child class of i18n.GettextMixin but was not using\r\nthat parent class correctly. Edited the __init__ method.\r\n\r\n* Added Utterance class\r\n\r\nI added an Utterance class that returns information from the mic\r\nlisten() and active_listen() methods. This object returns the\r\ntranscription when called without an parameters, so it is\r\nbackwards compatible with plugins that expect to get a string or\r\nlist of strings back from those methods.","shortMessageHtmlLink":"Synchronous and Asynchronous Mic (#402)"}},{"before":"36d30feca37c6c9c5ff83973bfdcf9b9de7c57f8","after":"93efe5fe46e596e91dc2411ede8ce2ffe7de8c41","ref":"refs/heads/naomi-dev","pushedAt":"2024-02-26T16:20:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Witai stt update - French and German translations added (#400)\n\n* Updating wit.ai api calls to the latest version (2023-02-15)\r\nAPI now now use http data chunks\r\n\r\n* Updating wit.ai tts plugin version and website link\r\n\r\n* small fix & comment\r\n\r\n* fix pep8, add settings function and string formatting\r\n\r\n* adding French and German translations for wit.ai plugin","shortMessageHtmlLink":"Witai stt update - French and German translations added (#400)"}},{"before":"bb79256ad7cfdb7e27f254ac09bed6f5a40d7166","after":"36d30feca37c6c9c5ff83973bfdcf9b9de7c57f8","ref":"refs/heads/naomi-dev","pushedAt":"2024-02-21T12:06:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Fix Translations (#401)\n\nWe ran into several problems with translations today. The biggest\r\nwas that because the i18n module is being initialized in the\r\nGenericPlugin class in naomi/plugin.py, every plugin was looking\r\nfor its phrases in naomi/data/locale, so most translations were\r\nfailing even after updating the .po files.\r\n\r\nThe next was that the first line Naomi speaks \"My name is {}\"\r\nhad the format inside the parameter being passed to GetText, so\r\nthe string was getting the name substituted before attempting to\r\nfind a matching string in the .po file, so most names were causing\r\nthat to default to english.\r\n\r\nFinally, even when passing the \"My name is {}\" string correctly,\r\nthe French .po file had no translation in the match for it, and\r\nthe \"My name is {} but you can also call me {}\" line was not even\r\nincluded in the translation file, plus I was not even attempting\r\nto use gettext on the \" or \" string.\r\n\r\nNow that all these issues are fixed, when I start Naomi in French\r\nI get the proper startup message:\r\n```\r\nComputer: Je suis Computer\r\nComputer: Comment puis-je être utile?\r\n```","shortMessageHtmlLink":"Fix Translations (#401)"}},{"before":"ba556a95e71c494334eb93a3245f11964e510ccb","after":"bb79256ad7cfdb7e27f254ac09bed6f5a40d7166","ref":"refs/heads/naomi-dev","pushedAt":"2024-02-19T16:22:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Wit.ai STT Plugin update (#394)\n\n* Updating wit.ai api calls to the latest version (2023-02-15)\r\nAPI now now use http data chunks\r\n\r\n* Updating wit.ai tts plugin version and website link\r\n\r\n* small fix & comment\r\n\r\n* fix pep8, add settings function and string formatting","shortMessageHtmlLink":"Wit.ai STT Plugin update (#394)"}},{"before":"c615d511d25e5f1d8a511077089785abcee55f0a","after":"ba556a95e71c494334eb93a3245f11964e510ccb","ref":"refs/heads/naomi-dev","pushedAt":"2024-02-18T20:03:40.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Remove default location from logfile (#399)\n\nIn my last request, I accidentally left the logfile with a default,\r\nso Naomi still records log entries to that file. Also, my idea for\r\nhaving two log handlers - one that writes to a file for anything\r\nbelow ERROR level messages and another that also sends ERROR and\r\nCRITICAL messages to the screen did not work because the handler\r\nsettings do not automatically come with the logger, just the\r\nsettings passed to logging.basicConfig do. So every time a logger\r\nis created, the handlers have to be added.","shortMessageHtmlLink":"Remove default location from logfile (#399)"}},{"before":"087c874ddd7702e053c7a951353fe9cf7c50768a","after":"c615d511d25e5f1d8a511077089785abcee55f0a","ref":"refs/heads/naomi-dev","pushedAt":"2024-02-18T03:37:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Restore logging to screen (#398)\n\nBecause of excessive messages being written to the screen, I\r\nset the logging to write to the ~/.config/naomi/Naomi.log file\r\nby default. The problem with that is that critical error messages\r\nwould not get written to the screen.\r\n\r\nHere I have set logging to log to a log file if one is explicitly\r\nset in the profile.yml file, but also to write ERROR and CRITICAL\r\nlevel messages to the screen. If running in DEBUG mode with a log\r\nfile, then DEBUG, INFO and WARN messages are written to the log\r\nfile and only ERROR or CRITICAL messages appear on the screen.\r\n\r\nWe might want to think about having Naomi attempt to also speak\r\nERROR and CRITICAL level messages.\r\n\r\nI also removed the redirect of stderr to /dev/null that surrounded\r\ncalls to opening pyAudio output streams, which was causing buffer\r\nunderflow error messages to write to the screen. The constant\r\nstream redirects were causing \"Too many open files\" errors, which\r\neventually cause Naomi to crash.","shortMessageHtmlLink":"Restore logging to screen (#398)"}},{"before":"e65086865ffac0e905e09adff51be520938eaa38","after":"087c874ddd7702e053c7a951353fe9cf7c50768a","ref":"refs/heads/naomi-dev","pushedAt":"2024-02-18T00:09:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Fix check_python_import() (#396)\n\nThe file diagnose.py has a test called check_python_import which\r\nis run during the unit testing. This function is failing with the\r\nmessage \"'FrozenImporter' has no attribute 'get_filename'\".\r\n\r\nApparently pkgutil.get_loader() can return different types of\r\nloaders.","shortMessageHtmlLink":"Fix check_python_import() (#396)"}},{"before":"5da0c0a453b188faeb5a4e0ca0428a56fd9bc16e","after":"e65086865ffac0e905e09adff51be520938eaa38","ref":"refs/heads/naomi-dev","pushedAt":"2023-07-03T00:45:26.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"This environment is externally managed (#388)\n\nI just tried installing Naomi on my new Bookworm computer and got\r\nthe above error message. It seems that Python now allows the OS\r\nto lock down the main python environment so you can't install\r\nto it using pip or conda or whatnot. You have to use the OS\r\nrepositories if you want to install packages on the main python\r\nenvironment.\r\n\r\nThis is good, and I'm sure it's the right way to do it. But\r\nalthough almost all of our packages are installed within the\r\nNaomi virtual environment, we have been using pip to install\r\nvirtualenvwrapper itself to the main python environment as a\r\nuser package. Since we can't, the install script breaks.\r\n\r\nTo fix this issue, I had to add the python3-virtualenvwrapper\r\npackage to the apt_requirements.txt file, then remove the pip3\r\ninstall --user virtualenvwrapper line from script.deb.sh.\r\n\r\nThe location of the virtualenvwrapper.sh script changes from\r\n~/.local/bin/virtualenvwrapper.sh to\r\n/usr/share/virtualenvwrapper/virtualenvwrapper.sh\r\nsince it is now being installed by the OS.\r\n\r\nThe location of virtualenv also changes. In this case, it\r\nworked to simply remove all the VIRTUALENVWRAPPER_VIRTUALENV\r\nlines.\r\n\r\nI also made a small change to sphinxplugin.py where I am no\r\nlonger checking for the g2p fst model when deciding whether to\r\nclone the CMUSphinx standard language model, since that file\r\nis generated after the model is downloaded. If something\r\nhappens between downloading the language model and generating the\r\ng2p model things would get confused.","shortMessageHtmlLink":"This environment is externally managed (#388)"}},{"before":"7272c31298f6c76fdc48efeb1e1d6cbfde14439d","after":"5da0c0a453b188faeb5a4e0ca0428a56fd9bc16e","ref":"refs/heads/naomi-dev","pushedAt":"2023-05-15T02:09:42.619Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Fix issue with path to CMU Dictionary (#383)\n\nBack in the old days, we used to require the user to download\r\ntheir own HMM model and CMU dictionary. The HMM model might be\r\ninstalled by installing a system package, along with the download\r\nof the pocketsphinx source code, or independently. Same with the\r\nCMU dictionary file.\r\n\r\nAt one point, it just seemed easier to host copies of the HMM\r\nmodel and dictionary ourselves. That way we would know where to\r\ndownload them from and could help the user with that, and would\r\nknow what format everything is in.\r\n\r\nRecently, I decided instead of asking for the locations of both the\r\nHMM model and the dictionary, just ask for the HMM model and assume\r\nthat the dictionary is in that same folder and named CMUDict.dict.\r\n\r\nUnfortunately, if it isn't, then that causes problems. I may need\r\nto revert to keeping the two settings separate in the future, but\r\nfor right now, I am going to stop searching in all the odd places\r\nfor the HMM model and dictionary and just assume we are using our\r\nhosted version. If the user does not have that installed, then\r\ndownload it for them.\r\n\r\nThere was an additional problem where if you did not download the\r\nHMM model and CMUDict during startup, the CMUDict variable did not\r\nget set. I have moved the initialization of that variable outside\r\nof that if/then block.","shortMessageHtmlLink":"Fix issue with path to CMU Dictionary (#383)"}},{"before":"e2d3707edad17b7bfe7bf81361fe0652696a33c0","after":"7272c31298f6c76fdc48efeb1e1d6cbfde14439d","ref":"refs/heads/naomi-dev","pushedAt":"2023-04-21T21:02:52.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"New pocketsphinx (#373)\n\n* Updated the pocketsphinx installation\r\n\r\nUsing APT and PyPI packages instead of building from source.\r\nSwitched from cmuclmtk to KenLM.\r\n\r\n* Moved KenLM info\r\n\r\nMoved the KenLM directory info out of Pocketsphinx and into its\r\nown section since it is quite likely that KenLM will be needed for\r\nother STT engines.\r\n\r\n* Remove STT installers\r\n\r\nRemove openfst, mitlm, cmuclmtk, Phonetisaurus, sphinxbase,\r\npocketsphinx, and the pocketsphinx python module because they\r\nare now installed via apt or pip repositories (at least on\r\ndebian type systems) which is way faster.\r\n\r\n* Fixing unit tests\r\n\r\nThe test_g2p tests were using a mock object to replace a call to\r\nsubprocess with a custom object. Since I'm using the phonetisaurus\r\npackage directly now, this was replacing the wrong object and\r\ncausing errors. I replaced the results of the predict method from\r\nphonetisaurus instead.\r\n\r\n* Fix phonetisaurus install\r\n\r\nFor some reason, sometimes the phonetisaurus python package can\r\nonly be installed using the `pip install phonetisaurus` command\r\nfor x86_64 platform users. If you are running on a Raspberry Pi,\r\nthen sometimes you have to download the binary from GitHub.\r\n\r\n* Add python3-dev as apt requirement\r\n\r\nPython3-dev is not installed by default on Armbian\r\n\r\n* Reinit Pocketsphinx vocabularies\r\n\r\nI am working on a Libre ROC-RK3328-CC Renegade computer as my main\r\ndevelopment board for Naomi. I am suddenly getting this error\r\nafter using \"expect\" (in the joke plugin):\r\n\r\nERROR:naomi.mic:Passive transcription failed!\r\nTraceback (most recent call last):\r\n File \"/home/naomi/Naomi/naomi/mic.py\", line 318, in wait_for_keyword\r\n transcribed = [word.upper() for word in self.passive_stt_engine.transcribe(f)]\r\n File \"/home/naomi/Naomi/plugins/stt/pocketsphinx-stt/sphinxplugin.py\", line 417, in transcribe\r\n self._decoder.process_raw(data, False, True)\r\n File \"_pocketsphinx.pyx\", line 960, in _pocketsphinx.Decoder.process_raw\r\nIndexError: Out of bounds on buffer access (axis 0)\r\n\r\nI'm not sure what this error means. It always seems to affect the\r\npassive listening engine. Usually I use the pocketsphinx_kws plugin\r\nfor passive listening, so this may have been happening for a while\r\nand I just didn't notice. Re-initializing the engine seems to work\r\nfine, so I'm just keeping an eye on it. The biggest problem with\r\nre-initializing is that with our current audio system, Naomi tends\r\nto stutter when the re-initialization happens. This is one reason\r\nfor wanting to move to a multi-threaded approach and see if that\r\nhelps.\r\n\r\n* Remove the fst file setting\r\n\r\nThe fst file is now generated inside the pocketsphinx hmm dir from\r\nthe cmudict.txt file. This means I can eliminate the fst_model\r\nsetting in addition to the phonetisaurus_executable setting. This\r\nleaves only the hmm_dir setting.\r\n\r\n* Fix G2P word translations\r\n\r\nFixed error in NaomiSTTTrainer.py when transcribing the last\r\navailable record.\r\n\r\nPut words fed to g2pconverter.translate into a list. Otherwise,\r\nwords get translated letter by letter which causes long words to\r\nmatch just about any noise.\r\n\r\n* Fix \"Too many open files\" error\r\n\r\nRecently, I am getting a \"Too many open files\" error. This appears\r\nto be because a file handle is opened to /dev/null so STDERR can\r\nbe redirected to it before performing some operations in\r\nPocketsphinx, but never getting closed. This gives the io.open\r\nmethod context so it will close automatically when it goes out\r\nof scope.\r\n\r\nAlso fixed an issue reported by CodeQL where a user-provided path\r\nis being used to serve content.\r\n\r\n* 2nd attempt to control wavfile path\r\n\r\nCodeQL still didn't like my solution, I think because the path\r\ncheck is disconnected from the use. 2nd attempt.","shortMessageHtmlLink":"New pocketsphinx (#373)"}},{"before":"2b960dc3d10328874e749a373bf19dd81ace202a","after":"e2d3707edad17b7bfe7bf81361fe0652696a33c0","ref":"refs/heads/naomi-dev","pushedAt":"2023-03-27T15:13:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Fix record and playback during install (#376)\n\ninstallers/naomi-setup.sh - Replace tabs with spaces\r\n\r\nnaomi/commandline.py - If default option is not available when\r\nselecting from a list, don't suggest a default\r\n\r\nnaomi/application.py - Don't load visualizations twice (caused\r\nduplicate visualizations). Set default vad from snr_vad to\r\nwebrtc_vad. Fixed some formatting issues. Used \"mic.play_file_sync\"\r\nto play the beep showing that Naomi heard because the \"mic.play_fp\"\r\nstarted playing the captured voice data right afterward.\r\n\r\nnaomi/populate.py - Minor formatting issues\r\n\r\nnaomi/visualizations.py - clear current visualizations before\r\nloading, prevents duplicate visualizations.\r\n\r\nplugins/audioengine/pyaudio-ae/pyaudioengine.py - noted problem\r\nwith switching stream properties before previous stream has\r\nfinished playing. Probably need to move to SoundDevice for audio.\r\n\r\nplugins/stt/pocketsphinx-stt/g2p.py - cleaned up output\r\n\r\nplugins/visualizations/terminal/terminal.py - Use system time when\r\nprinting timestamp, not Naomi's timezone (which is part of the\r\n\"clock\" plugin).\r\n\r\npython_requirements.txt - swap scikit-learn for sklearn.","shortMessageHtmlLink":"Fix record and playback during install (#376)"}},{"before":"4f8efb93e10017db2f518218c6656a2f05d033f5","after":"2b960dc3d10328874e749a373bf19dd81ace202a","ref":"refs/heads/naomi-dev","pushedAt":"2023-03-27T15:09:34.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"aaronchantrill","name":null,"path":"/aaronchantrill","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/7544675?s=80&v=4"},"commit":{"message":"Fix missing Naomi/Naomi.py error\n\nIf your \"use_release\" setting in your .naomi_options.json file is anything other than \"nightly\", \"milestone\" or \"stable\", the Naomi directory gets archived but no replacement Naomi directory is cloned, causing Naomi to fail because the \"~/Naomi/Naomi.py\" file does not exist. Fixed this by removing the \"cd ~\" and \"mv Naomi Naomi-Temp\" lines from before the \"if\" statement.","shortMessageHtmlLink":"Fix missing Naomi/Naomi.py error"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXztE_gA","startCursor":null,"endCursor":null}},"title":"Activity · NaomiProject/Naomi"}