diff --git a/_static/changelog-2023.4.0.png b/_static/changelog-2023.4.0.png new file mode 100644 index 000000000..38b113300 Binary files /dev/null and b/_static/changelog-2023.4.0.png differ diff --git a/changelog/2023.4.0.rst b/changelog/2023.4.0.rst new file mode 100644 index 000000000..aa863df17 --- /dev/null +++ b/changelog/2023.4.0.rst @@ -0,0 +1,245 @@ +ESPHome 2023.4.0 - 19th April 2023 +================================== + +.. seo:: + :description: Changelog for ESPHome 2023.4.0. + :image: /_static/changelog-2023.4.0.png + :author: Jesse Hills + :author_twitter: @jesserockz + +.. imgtable:: + :columns: 3 + + Voice Assistant, components/voice_assistant, voice-assistant.svg + Microphone Core, components/microphone/index, microphone.svg + I2S Microphone, components/microphone/i2s_audio, i2s_audio.svg + MMC5603, components/sensor/mmc5603, mmc5603.jpg + KSZ8081 Ethernet, components/ethernet, ethernet.svg + + +Voice Assistant +--------------- + +This year is the Year of the Voice for Home Assistant, and ESPHome is charging ahead with this in mind. +We've added a new :doc:`/components/voice_assistant` component that allows you to use ESPHome devices as an input +for `assist `__ in Home Assistant. + +With this also comes preliminary :doc:`microphone ` support, which has been built in a way that multiple +components, like ``voice_assistant`` can request start / stop of the microphone and get the data. We +hope this leads to more interesting use cases for the microphone in the future. + +Home Assistant is hosting a live stream all about the Year of the Voice - Chapter 2. + +.. raw:: html + + + + +Keith joins Nabu Casa +--------------------- + +Nabu Casa is pleased to annouce that long time contributor Keith Burzinski (:ghuser:`kbx81`) is joining the +team as a full time developer to help out on ESPHome. Keith created the :doc:`/components/sprinkler`, +:doc:`/components/climate/thermostat`, a bunch of the ``ssd`` display components and a few other components +as well as fixing many bug along the way. I expect his house climate and garden area are kept well in line. + +Looking forward to working with you Keith. + +Breaking Changes +---------------- + +I²S Media Player +^^^^^^^^^^^^^^^^ + +With the introduction of the :doc:`/components/microphone/i2s_audio`, the media player platform has some +required breaking changes to the YAML configuration. This involves moving the ``i2s_lrclk_pin`` and +``i2s_bclk_pin`` to a new :doc:`/components/i2s_audio` component. + +.. code-block:: yaml + + # Before + media_player: + - platform: i2s_audio + name: ESPHome I2S Media Player + dac_type: external + i2s_lrclk_pin: GPIO33 + i2s_bclk_pin: GPIO19 + i2s_dout_pin: GPIO22 + mode: mono + + # After + i2s_audio: + i2s_lrclk_pin: GPIO33 + i2s_bclk_pin: GPIO19 + + media_player: + - platform: i2s_audio + name: ESPHome I2S Media Player + dac_type: external + i2s_dout_pin: GPIO22 + mode: mono + +Default restore mode for Switches, Fans and Lights +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The default ``restore_mode`` for switches, fans and lights has been changed +from ``RESTORE_DEFAULT_OFF`` to ``ALWAYS_OFF`` with the intention that restoring values +from flash should be manually specified by a user if desired in their YAML configuration. + +Number ``step`` +^^^^^^^^^^^^^^^ + +The ``number`` components have always internally set a ``step`` required in config, +but allowed it to be not specified at all. This caused issues on the Home Assistant side +of things. This is only a breaking change for external components that have a ``number`` platform. + +UART ids +^^^^^^^^ + +Due to ``uart0`` / ``uart1`` / ``uart2`` being defined in some of the platform code ESPHome uses, +ESPHome will now disallow these ids from being used in the config. You can simply change them to +``uart_0`` to continue using. + +Full list of changes +-------------------- + +New Components +^^^^^^^^^^^^^^ + +- Added in mmc5603 code :esphomepr:`4175` by :ghuser:`benhoff` (new-integration) +- Add push to talk voice assistant :esphomepr:`4648` by :ghuser:`jesserockz` (new-integration) + +Breaking Changes +^^^^^^^^^^^^^^^^ + +- Disallow uart0/1/2 as ids in config :esphomepr:`4446` by :ghuser:`jesserockz` (breaking-change) +- Require step to be set when calling register_number :esphomepr:`4622` by :ghuser:`jesserockz` (breaking-change) +- Fix restore :esphomepr:`4655` by :ghuser:`spacemanspiff2007` (breaking-change) + +Beta Changes +^^^^^^^^^^^^ + +- debug component, allow without debug logging :esphomepr:`4685` by :ghuser:`jesserockz` +- Fixed dns2 for ethernet :esphomepr:`4698` by :ghuser:`HeMan` +- Add timeout to i2c write error logs :esphomepr:`4697` by :ghuser:`Szewcson` +- Add event triggers to voice_assistant :esphomepr:`4699` by :ghuser:`jesserockz` +- Call on_error if no api client connected that handles voice :esphomepr:`4709` by :ghuser:`jesserockz` +- Add ethernet powerdown (fixes esphome/issues#4420) :esphomepr:`4706` by :ghuser:`tracestep` +- Bump arduino platform version to 5.3.0 :esphomepr:`4713` by :ghuser:`jesserockz` + +All changes +^^^^^^^^^^^ + +- Mark unique_id() virtual method as deprecated :esphomepr:`4538` by :ghuser:`oxan` +- Drop deprecated entity property base methods :esphomepr:`4539` by :ghuser:`oxan` +- Format test files :esphomepr:`4541` by :ghuser:`jesserockz` +- EntityBase: Icon string can stay in flash. :esphomepr:`4566` by :ghuser:`Fabian-Schmidt` +- Update the delta filter to be able to take a percentage change :esphomepr:`4391` by :ghuser:`TrentHouliston` +- Added missing PM_1_0 and PM_10_0 for PMS5003T and PMS5003ST :esphomepr:`4560` by :ghuser:`genestealer` +- Add an option to force SPI into software mode :esphomepr:`4556` by :ghuser:`wupeka` +- allow using a binary output for the status led :esphomepr:`4532` by :ghuser:`ssieb` +- Add option flip_x :esphomepr:`4555` by :ghuser:`rafal83` +- Bump aioesphomeapi from 13.5.0 to 13.5.1 :esphomepr:`4572` by :ghuser:`dependabot[bot]` +- Verbose output of define. :esphomepr:`4576` by :ghuser:`Fabian-Schmidt` +- Add support for ESP32 CAM 3MP and 5MP resolutions and arbitrary camera clock. :esphomepr:`4580` by :ghuser:`peterhalicky` +- Add a simple 'skip_initial' filter :esphomepr:`4582` by :ghuser:`sybrenstuvel` +- Fix outdated filter string in platformio_api :esphomepr:`4587` by :ghuser:`LordMike` +- Split test3.yaml :esphomepr:`4591` by :ghuser:`jesserockz` +- Disallow uart0/1/2 as ids in config :esphomepr:`4446` by :ghuser:`jesserockz` (breaking-change) +- Upgrade clang-format to v13 :esphomepr:`4535` by :ghuser:`oxan` +- B/W support for GooDisplay GDEY029T94 (as used on Adafruit MagTag) :esphomepr:`4222` by :ghuser:`AaronJackson` +- Fix negative sqrt root in ct_clamp_sensor.cpp :esphomepr:`4236` by :ghuser:`jerome992` +- Wrap ipv6 code a bit more :esphomepr:`4574` by :ghuser:`jesserockz` +- Remove EntityBase from sprinkler :esphomepr:`4606` by :ghuser:`jesserockz` +- Fix wrong port multiplexer name in dump GPIO function of sx1509 :esphomepr:`4592` by :ghuser:`skaldo` +- Bump zeroconf from 0.47.3 to 0.47.4 :esphomepr:`4597` by :ghuser:`dependabot[bot]` +- Bump pytest-asyncio from 0.20.3 to 0.21.0 :esphomepr:`4599` by :ghuser:`dependabot[bot]` +- Limit range on filter time period for remote_receiver :esphomepr:`4604` by :ghuser:`RoboMagus` +- add select_schema to select component :esphomepr:`4545` by :ghuser:`regevbr` +- Add ability to clear the gatt cache :esphomepr:`4621` by :ghuser:`bdraco` +- Bump actions/stale from 7 to 8 :esphomepr:`4615` by :ghuser:`dependabot[bot]` +- Require step to be set when calling register_number :esphomepr:`4622` by :ghuser:`jesserockz` (breaking-change) +- Lower range of CONF_FREQUENCY :esphomepr:`4619` by :ghuser:`berendhaan` +- Allow entity names to be set to None :esphomepr:`4607` by :ghuser:`jesserockz` +- Fix platform restriction for bme680_bsec :esphomepr:`4616` by :ghuser:`jesserockz` +- Fix EzoCommandType enum :esphomepr:`4593` by :ghuser:`alfredopironti` +- `EntityBase` Name can stay in flash. :esphomepr:`4594` by :ghuser:`Fabian-Schmidt` +- feat: Add support to unsubscribe from BLE advertisements :esphomepr:`4620` by :ghuser:`richardhopton` +- EntityBase: Move ObjectId to Flash :esphomepr:`4569` by :ghuser:`Fabian-Schmidt` +- Add workflow to sync device classes with HA dev :esphomepr:`4629` by :ghuser:`jesserockz` +- Synchronise Device Classes from Home Assistant :esphomepr:`4633` by :ghuser:`github-actions[bot]` +- Remove AUTO_LOAD from as3935 :esphomepr:`4630` by :ghuser:`jesserockz` +- Add ifdef to new bt proxy unsubscribe :esphomepr:`4634` by :ghuser:`jesserockz` +- add bluetooth mac address in dump_config() :esphomepr:`4628` by :ghuser:`felixlungu` +- Binary map bugfixes :esphomepr:`4636` by :ghuser:`kahrendt` +- entity_base avoid padding bytes. :esphomepr:`4637` by :ghuser:`Fabian-Schmidt` +- Avoid sensor padding. :esphomepr:`4638` by :ghuser:`Fabian-Schmidt` +- Support advanced UART customization :esphomepr:`4465` by :ghuser:`Fabian-Schmidt` +- Log calibration results at level INFO :esphomepr:`4240` by :ghuser:`Duckle29` +- Number step not optional :esphomepr:`4649` by :ghuser:`RoboMagus` +- VSCode / devcontainer updates :esphomepr:`4647` by :ghuser:`jesserockz` +- Retry PN532_COMMAND_VERSION_DATA on setup() (fixes esphome/issues#3823) :esphomepr:`4651` by :ghuser:`tracestep` +- Bump pylint from 2.16.4 to 2.17.2 :esphomepr:`4650` by :ghuser:`dependabot[bot]` +- Bump black from 23.1.0 to 23.3.0 :esphomepr:`4635` by :ghuser:`dependabot[bot]` +- Added in mmc5603 code :esphomepr:`4175` by :ghuser:`benhoff` (new-integration) +- fix compilation with latest esp-idf :esphomepr:`4671` by :ghuser:`Mic92` +- Bump zeroconf from 0.47.4 to 0.56.0 :esphomepr:`4674` by :ghuser:`dependabot[bot]` +- Bump pytest from 7.2.2 to 7.3.0 :esphomepr:`4673` by :ghuser:`dependabot[bot]` +- Add push to talk voice assistant :esphomepr:`4648` by :ghuser:`jesserockz` (new-integration) +- Fix ESP32 SPI hardware assignment in Arduino fw :esphomepr:`4669` by :ghuser:`kbx81` +- Fix some NFC/PN532 crashes :esphomepr:`4678` by :ghuser:`kbx81` +- Add support for SSD1306 72x40 displays :esphomepr:`4659` by :ghuser:`johnsto` +- Fix pin schema for i2s microphone :esphomepr:`4680` by :ghuser:`jesserockz` +- Fix BedJet setup priority [fixes esphome/issues#3807] :esphomepr:`4677` by :ghuser:`jhansche` +- Add always trigger stop :esphomepr:`4249` by :ghuser:`X-Ryl669` +- Fix graph limits for negative values and other corner cases :esphomepr:`4253` by :ghuser:`unhold` +- Fix cut-off on 2.13" waveshare/ttgo epaper displays :esphomepr:`4255` by :ghuser:`unhold` +- [Ethernet] Add PHY KSZ8081 support :esphomepr:`4668` by :ghuser:`Fabian-Schmidt` +- Fix restore :esphomepr:`4655` by :ghuser:`spacemanspiff2007` (breaking-change) +- debug component, allow without debug logging :esphomepr:`4685` by :ghuser:`jesserockz` +- Fixed dns2 for ethernet :esphomepr:`4698` by :ghuser:`HeMan` +- Add timeout to i2c write error logs :esphomepr:`4697` by :ghuser:`Szewcson` +- Add event triggers to voice_assistant :esphomepr:`4699` by :ghuser:`jesserockz` +- Call on_error if no api client connected that handles voice :esphomepr:`4709` by :ghuser:`jesserockz` +- Add ethernet powerdown (fixes esphome/issues#4420) :esphomepr:`4706` by :ghuser:`tracestep` +- Bump arduino platform version to 5.3.0 :esphomepr:`4713` by :ghuser:`jesserockz` + +Past Changelogs +--------------- + +- :doc:`2023.3.0` +- :doc:`2023.2.0` +- :doc:`2022.12.0` +- :doc:`2022.11.0` +- :doc:`2022.10.0` +- :doc:`2022.9.0` +- :doc:`2022.8.0` +- :doc:`2022.6.0` +- :doc:`2022.5.0` +- :doc:`2022.4.0` +- :doc:`2022.3.0` +- :doc:`2022.2.0` +- :doc:`2022.1.0` +- :doc:`2021.12.0` +- :doc:`2021.11.0` +- :doc:`2021.10.0` +- :doc:`2021.9.0` +- :doc:`2021.8.0` +- :doc:`v1.20.0` +- :doc:`v1.19.0` +- :doc:`v1.18.0` +- :doc:`v1.17.0` +- :doc:`v1.16.0` +- :doc:`v1.15.0` +- :doc:`v1.14.0` +- :doc:`v1.13.0` +- :doc:`v1.12.0` +- :doc:`v1.11.0` +- :doc:`v1.10.0` +- :doc:`v1.9.0` +- :doc:`v1.8.0` +- :doc:`v1.7.0` diff --git a/changelog/index.rst b/changelog/index.rst index 697efc4d3..432d05582 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/2023.3.0.html + :url: /changelog/2023.4.0.html .. toctree:: :glob: diff --git a/components/display/max7219.rst b/components/display/max7219.rst index b60386cae..4959dbb10 100644 --- a/components/display/max7219.rst +++ b/components/display/max7219.rst @@ -104,7 +104,7 @@ segment of the previous position will be enabled. // Print the current time it.print(" "); - it.strftime("%H.%M.%S"); + it.strftime("%H.%M.%S", id(esptime).now()); // Result for 10:06:42 -> "10.06.42 " // Change the display intnsity based on another id. diff --git a/components/number/index.rst b/components/number/index.rst index 20f8253a4..34e82cec9 100644 --- a/components/number/index.rst +++ b/components/number/index.rst @@ -284,7 +284,7 @@ using a generic templatable action call. - number.operation: id: my_number operation: !lambda "return NUMBER_OP_INCREMENT;" - cycle: !lambda: "return true;" + cycle: !lambda "return true;" Configuration variables: diff --git a/guides/supporters.rst b/guides/supporters.rst index 78fc2f687..4c0d6ef55 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -16,6 +16,7 @@ Contributors (in alphabetical order) +- `007hacky007 (@007hacky007) `__ - `0hax (@0hax) `__ - `0x0a11c0de (@0x0a11c0de) `__ - `Denis Bodor (aka Lefinnois) (@0xDRRB) `__ @@ -26,10 +27,12 @@ Contributors - `Alessandro Campolo (@a13ssandr0) `__ - `Aalian Khan (@AalianKhan) `__ - `Adam Liddell (@aaliddell) `__ +- `Aaron Gamble (@aarongamble) `__ - `Aaron S. Jackson (@AaronJackson) `__ - `Abel Matser (@abelmatser) `__ - `Abílio Costa (@abmantis) `__ - `Antonio (@acarvajalperez) `__ +- `Avula Chandra Kiran Reddy (@ackr-8) `__ - `Zhenyu Wu (@Adam5Wu) `__ - `Chris Byrne (@adapt0) `__ - `Attila Darazs (@adarazs) `__ @@ -41,9 +44,12 @@ Contributors - `Stefan Agner (@agners) `__ - `Anders (@ahd71) `__ - `Alexander Pohl (@ahpohl) `__ +- `aidbish (@aidbish) `__ - `Airy André (@airy10) `__ +- `Airyzz (@Airyzz) `__ - `Adam Jacques (@ajacques) `__ - `Andrej Friesen (@ajfriesen) `__ +- `akennerly (@akennerly) `__ - `akoivist (@akoivist) `__ - `Andrej Komelj (@akomelj) `__ - `Alex Konradi (@akonradi) `__ @@ -58,13 +64,17 @@ Contributors - `Alex Iribarren (@alexiri) `__ - `Alex Mekkering (@AlexMekkering) `__ - `Alex (@alexyao2015) `__ +- `Alfredo (@alfredopironti) `__ - `Andreas Mandel (@amandel) `__ - `Amish Vishwakarma (@amishv) `__ +- `Amit Keret (@amitkeret) `__ - `Jason Nader (@ammgws) `__ - `Branden Cash (@ammmze) `__ - `Alexander Momchilov (@amomchilov) `__ - `anatoly-savchenkov (@anatoly-savchenkov) `__ - `andig (@andig) `__ +- `Andi Egli (@andilge) `__ +- `Kieren (@ando023) `__ - `András Bíró (@andrasbiro) `__ - `Andreas Hergert (@andreashergert1984) `__ - `Andrew J.Swan (@andrewjswan) `__ @@ -73,14 +83,17 @@ Contributors - `Andrzej (@andriej) `__ - `Andreas (@anduchs) `__ - `Andy2No (@Andy2No) `__ +- `AndyRPH (@AndyRPH) `__ - `Vegetto (@angelnu) `__ - `Sergey Anisimov (@anisimovsergey) `__ - `Nikolay Vasilchuk (@Anonym-tsk) `__ - `Anthony Keane (@anthonykeane) `__ +- `Rémi K. (@antibill51) `__ - `Antonio Fiol (@antonio-fiol) `__ - `Adriaan Peeters (@apeeters) `__ - `apendley (@apendley) `__ - `Darius Ratkevičius (@aphex008) `__ +- `aquaticus (@aquaticus) `__ - `Andy Allsopp (@arallsopp) `__ - `arantius (@arantius) `__ - `arturo182 (@arturo182) `__ @@ -88,33 +101,45 @@ Contributors - `Arya (@Arya11111) `__ - `Borys Pierov (@ashald) `__ - `Ash McKenzie (@ashmckenzie) `__ +- `ashp8i (@ashp8i) `__ - `Ashton Kemerling (@AshtonKem) `__ - `杨成锴 (@asjdf) `__ - `Pavel Pletenev (@ASMfreaK) `__ - `Andreas Soehlke (@asoehlke) `__ - `Mike Dunston (@atanisoft) `__ +- `Glenn Morrison (@atomicpapa) `__ - `Alexander Turlov (@aturlov) `__ +- `aus (@aus) `__ - `AustinMorris (@AustinMorris) `__ - `Avirsaam (@Avirsaam) `__ - `Arsène von Wyss (@avonwyss) `__ +- `Andrew Weddle (@aweddle2) `__ - `Achilleas Pipinellis (@axilleas) `__ - `Kamil Trzciński (@ayufan) `__ - `Nicholas Peters (@Azimath) `__ - `Daniel (@azrael783) `__ - `B48D81EFCC (@B48D81EFCC) `__ - `Florian Mösch (@badbadc0ffee) `__ +- `Baden (@baden03) `__ - `Marco Tombesi (@baggior) `__ - `balk77 (@balk77) `__ - `Paulus Schoutsen (@balloob) `__ - `Andrew Zaborowski (@balrog-kun) `__ - `BarryMar (@BarryMar) `__ +- `bartoszpierzchlewicz (@bartoszpierzchlewicz) `__ +- `BartoszPierzchlewiczMacrix (@BartoszPierzchlewiczMacrix) `__ - `Bascht74 (@Bascht74) `__ - `Viktr (@BbIKTOP) `__ - `J. Nick Koston (@bdraco) `__ - `Maxim Ocheretianko (@bearpawmaxim) `__ +- `beaudeanadams (@beaudeanadams) `__ - `Benjamin Freeman (@Beetix) `__ +- `beikeland (@beikeland) `__ +- `Ben-Schwabe (@Ben-Schwabe) `__ +- `Ben Hoff (@benhoff) `__ - `Benno Pütz (@bennop) `__ - `Benoit3 (@Benoit3) `__ +- `Ben Shaner (@bens545) `__ - `Ben Suffolk (@bensuffolk) `__ - `Berend Haan (@berendhaan) `__ - `Arturo Casal (@berfenger) `__ @@ -122,22 +147,29 @@ Contributors - `Bert Hertogen (@berthertogen) `__ - `Ivan Bessarabov (@bessarabov) `__ - `Brandon (@bgulla) `__ +- `Benedikt Hübschen (@bhuebschen) `__ - `Bierchermuesli (@Bierchermuesli) `__ - `Bill Church (@billchurch) `__ - `Brian Kaufman (@bkaufx) `__ - `JDavid (@blackhack) `__ - `blakadder (@blakadder) `__ - `Branimir Lambov (@blambov) `__ +- `bleeisme (@bleeisme) `__ - `Jim Ekman (@blejdfist) `__ - `Scott Smith (@blurfl) `__ - `Bob (@Bmooij) `__ - `Benjamin Klotz (@bnw) `__ +- `Bob Kersten (@bobkersten) `__ - `Bodmer (@Bodmer) `__ +- `Anthony Todd (@bohregard) `__ +- `Bomaker (@Bomaker) `__ - `Mauricio Bonani (@bonanitech) `__ - `Casey Olson (@bookcasey) `__ +- `Borja Burgos (@borjaburgos) `__ - `BoukeHaarsma23 (@BoukeHaarsma23) `__ - `brambo123 (@brambo123) `__ - `Bram Kragten (@bramkragten) `__ +- `Brandan Cotton (@Brando47) `__ - `Brad Davidson (@brandond) `__ - `Daniel H Brown (@brauhausdc) `__ - `Jens Bretschneider (@breti) `__ @@ -147,36 +179,52 @@ Contributors - `brianrjones69 (@brianrjones69) `__ - `Ben Brooks (@brooksben11) `__ - `buddydvd (@buddydvd) `__ +- `Matt Burke (@burkemw3) `__ - `Jon Little (@burundiocibu) `__ - `buxtronix (@buxtronix) `__ - `bvansambeek (@bvansambeek) `__ +- `c0ffeeca7 (@c0ffeeca7) `__ +- `Captain Haddock (@ca-haddock) `__ - `Cal Howard (@calhoward) `__ +- `callacomp (@callacomp) `__ +- `Callum Gare (@callumgare) `__ - `Carlos Gustavo Sarmiento (@carlos-sarmiento) `__ - `Carlos Garcia Saura (@CarlosGS) `__ - `Carlos Ruiz (@CarlosRDomin) `__ +- `carlywarly (@carlywarly) `__ - `carstenschroeder (@carstenschroeder) `__ - `Valentin Ochs (@Cat-Ion) `__ - `Stroe Andrei Catalin (@catalin2402) `__ - `cbialobos (@cbialobos) `__ +- `Cameron Bulock (@cbulock) `__ - `Ciprian Constantinescu (@cciprian5) `__ +- `cdmonk (@cdmonk) `__ +- `ceaswaran (@ceaswaran) `__ - `Cellie (@CelliesProjects) `__ - `Chris Feenstra (@cfeenstra1024) `__ +- `cg089 (@cg089) `__ - `Kostas Chatzikokolakis (@chatziko) `__ +- `Audric Schiltknecht (@chemicalstorm) `__ - `chris-jennings (@chris-jennings) `__ - `Chris (@chrismaki) `__ - `Christoph Wagner (@Christoph-Wagner) `__ - `Christian Taedcke (@chrta) `__ - `Pavel Skuratovich (@Chupaka) `__ - `Chris Johnson (@ciband) `__ +- `CircuitGuy (@CircuitGuy) `__ - `John (@CircuitSetup) `__ - `Colby Rome (@cisasteelersfan) `__ - `Chris Debenham (@cjd) `__ - `Chester (@clowrey) `__ +- `Colin McCambridge (@cmccambridge) `__ - `Clifford Roche (@cmroche) `__ - `Casey Burnett (@codeangler) `__ - `CODeRUS (@CODeRUS) `__ +- `Alex Miller (@Codex-) `__ - `Cody James (@codyjamestechnical) `__ +- `Ashton Lafferty (@cogneato) `__ - `Colin Leroy-Mira (@colinleroy) `__ +- `Max (@coltoncat) `__ - `Conclusio (@Conclusio) `__ - `John Coggeshall (@coogle) `__ - `James Crook (@cooljimy84) `__ @@ -189,20 +237,28 @@ Contributors - `Connor Prussin (@cprussin) `__ - `Corey Rice (@crice009) `__ - `cryptelli (@cryptelli) `__ +- `Christian Schwarzgruber (@cslux) `__ - `cstaahl (@cstaahl) `__ - `Chris Talkington (@ctalkington) `__ - `Massimo Cetra (@ctrix) `__ - `cvwillegen (@cvwillegen) `__ - `Christoph Wempe (@CWempe) `__ +- `Steven Webb (@cy1701) `__ - `Alex Solomaha (@CyanoFresh) `__ - `Luar Roji (@cyberplant) `__ +- `Petr Diviš (@czechdude) `__ - `Aleš Komárek (@cznewt) `__ +- `d-rez (@d-rez) `__ - `Dale Higgs (@dale3h) `__ - `damanti-me (@damanti-me) `__ +- `Dan C Williams (@dancwilliams) `__ - `Daniel Bjørnbakk (@danibjor) `__ - `Daniel Kucera (@danielkucera) `__ +- `Daniel O'Connor (@DanielO) `__ - `Daniel Rheinbay (@danielrheinbay) `__ - `Daniel Schramm (@danielschramm) `__ +- `Daniel Martin Gonzalez (@danimart1991) `__ +- `danlimlu (@danlimlu) `__ - `Chris (@darthsebulba04) `__ - `Dan Gentry (@dashdrum) `__ - `Aliasghar Dashkhaneh (@dashkhaneh) `__ @@ -215,13 +271,16 @@ Contributors - `David De Sloovere (@DavidDeSloovere) `__ - `David Beitey (@davidjb) `__ - `David Newgas (@davidn) `__ +- `David Noyes (@davidnoyes) `__ - `David Zovko (@davidzovko) `__ - `Davy Landman (@DavyLandman) `__ +- `Dawid Cieszyński (@dawidcieszynski) `__ - `Darren Tucker (@daztucker) `__ - `Donovan Baarda (@dbaarda) `__ - `David Buezas (@dbuezas) `__ - `dckiller51 (@dckiller51) `__ - `Daniel Correa Lobato (@dclobato) `__ +- `DeadEnd (@DeadEnded) `__ - `Debashish Sahu (@debsahu) `__ - `declanshanaghy (@declanshanaghy) `__ - `Maximilian (@DeerMaximum) `__ @@ -237,7 +296,9 @@ Contributors - `Deun Lee (@deunlee) `__ - `Develo (@devyte) `__ - `Dezorian (@Dezorian) `__ +- `Damian Gołda (@dgolda) `__ - `Dan Halbert (@dhalbert) `__ +- `Dustin L. Howett (@DHowett) `__ - `Alain Turbide (@Dilbert66) `__ - `Mark (@Diramu) `__ - `Dirk Heinke (@DirkHeinke) `__ @@ -254,19 +315,24 @@ Contributors - `Dorian Zedler (@dorianim) `__ - `Mark Dietzer (@Doridian) `__ - `Jiang Sheng (@doskoi) `__ +- `Artem Sheremet (@dotdoom) `__ - `Robert Schütz (@dotlambda) `__ - `Daniel Hyles (@DotNetDann) `__ - `dr-oblivium (@dr-oblivium) `__ - `Drew Perttula (@drewp) `__ - `drmpf (@drmpf) `__ +- `drogfild (@drogfild) `__ - `DrRob (@DrRob) `__ - `Daniel Müller (@dtmuller) `__ +- `Tom Soer (@dtx3k) `__ - `dubit0 (@dubit0) `__ - `Mikkel Jeppesen (@Duckle29) `__ - `Sergey V. DUDANOV (@dudanov) `__ - `David Girón (@duhow) `__ - `Duncan Findlay (@duncf) `__ - `Jannick (@DutchDeffy) `__ +- `David van der Leij (@dvanderleij) `__ +- `dxta1986 (@dxta1986) `__ - `dyarkovoy (@dyarkovoy) `__ - `Janez Troha (@dz0ny) `__ - `Dimitris Zervas (@dzervas) `__ @@ -279,10 +345,13 @@ Contributors - `Eduardo Pérez (@eduperez) `__ - `Eenoo (@Eenoo) `__ - `Eli Fidler (@efidler) `__ +- `egandro (@egandro) `__ - `Erwin Kooi (@egeltje) `__ - `Eike (@ei-ke) `__ - `Elazar Leibovich (@elazarl) `__ +- `Eli Yu (@elizhyu) `__ - `Elkropac (@Elkropac) `__ +- `Elliot Wood (@elliot-wood) `__ - `Joakim Plate (@elupus) `__ - `EmbeddedDevver (@EmbeddedDevver) `__ - `EmmanuelLM (@EmmanuelLM) `__ @@ -293,6 +362,7 @@ Contributors - `Bert (@Engelbert) `__ - `Nico Weichbrodt (@envy) `__ - `Evan Petousis (@epetousis) `__ +- `Josh Gwosdz (@erdii) `__ - `Eric Coffman (@ericbrian) `__ - `Eric Hiller (@erichiller) `__ - `Matt Hamilton (@Eriner) `__ @@ -307,20 +377,27 @@ Contributors - `Evgeni Golov (@evgeni) `__ - `Expaso (@Expaso) `__ - `Malte Franken (@exxamalte) `__ +- `f0rdprefect (@f0rdprefect) `__ - `Fabian Affolter (@fabaff) `__ - `Fabian (@Fabian-Schmidt) `__ - `Federico Ariel Castagnini (@facastagnini) `__ - `C W (@fake-name) `__ - `Florian idB (@fbeek) `__ - `Fabian Berthold (@fbrthld) `__ +- `felixlungu (@felixlungu) `__ - `Felix Storm (@felixstorm) `__ - `Christian Ferbar (@ferbar) `__ - `FeuerSturm (@FeuerSturm) `__ +- `Florian Golemo (@fgolemo) `__ - `Frank Riley (@fhriley) `__ +- `finity69x2 (@finity69x2) `__ - `Frédéric Jouault (@fjouault) `__ - `Sean Vig (@flacjacket) `__ - `Diego Elio Pettenò (@Flameeyes) `__ - `Flaviu Tamas (@flaviut) `__ +- `fluffymadness (@fluffymadness) `__ +- `fluffymonster (@fluffymonster) `__ +- `flyize (@flyize) `__ - `风飘雨 (@flyrainning) `__ - `Fractal147 (@Fractal147) `__ - `Francis-labo (@Francis-labo) `__ @@ -333,6 +410,7 @@ Contributors - `Evgeny (@freekode) `__ - `Brett McKenzie (@freerangeeggs) `__ - `Franck Nijhof (@frenck) `__ +- `Kenneth Fribert (@fribse) `__ - `frippe75 (@frippe75) `__ - `Fritz Mueller (@fritzm) `__ - `Florian Trück (@ftrueck) `__ @@ -350,6 +428,8 @@ Contributors - `Gérald Guiony (@gerald-guiony) `__ - `Gerard (@gerard33) `__ - `Giampiero Baggiani (@giampiero7) `__ +- `Gideon Kanikevich (@gid204) `__ +- `Giel Janssens (@gieljnssns) `__ - `Giovanni (@Gio-dot) `__ - `GitforZhangXL (@GitforZhangXL) `__ - `github-actions[bot] (@github-actions[bot]) `__ @@ -362,45 +442,62 @@ Contributors - `Germain Masse (@gmasse) `__ - `Garret Buell (@gmbuell) `__ - `Jelle Raaijmakers (@GMTA) `__ +- `Go0oSer (@Go0oSer) `__ - `Gonzalo Paniagua Javier (@gonzalop) `__ - `gordon-zhao (@gordon-zhao) `__ - `Gustavo Ambrozio (@gpambrozio) `__ +- `Granville Barker (@granvillebarker) `__ - `Antoine GRÉA (@grea09) `__ +- `Greg Arnold (@GregJArnold) `__ +- `Greg MacLellan (@gregmac) `__ - `Gil Peeters (@grillp) `__ - `George (@grob6000) `__ +- `groovejumper (@groovejumper) `__ - `gsexton (@gsexton) `__ - `Gabriel Sieben (@gsieben) `__ - `Jadson Santos (@gtjadsonsantos) `__ +- `guardmedia (@guardmedia) `__ - `Guillaume DELVIT (@guiguid) `__ - `guillempages (@guillempages) `__ - `Guyohms (@Guyohms) `__ - `Gilles van den Hoven (@gvdhoven) `__ +- `h0jeZvgoxFepBQ2C (@h0jeZvgoxFepBQ2C) `__ - `h3ndrik (@h3ndrik) `__ +- `Andi (@h4de5) `__ - `haade (@haade-administrator) `__ - `Peter van Dijk (@Habbie) `__ - `Hagai Shatz (@hagai-shatz) `__ - `Boris Hajduk (@hajdbo) `__ - `Gavin Mogan (@halkeye) `__ - `Charles (@hallard) `__ +- `Alex Griffith (@halomademeapc) `__ +- `Aniket (@HandyHat) `__ - `Charles Thompson (@haryadoon) `__ - `Ha Thach (@hathach) `__ - `hcoohb (@hcoohb) `__ - `Héctor Giménez (@hectorgimenez) `__ - `Jimmy Hedman (@HeMan) `__ +- `Hemi03 (@Hemi03) `__ - `HepoH3 (@HepoH3) `__ - `Hermann Kraus (@herm) `__ +- `Herr Frei (@herrfrei) `__ +- `highground88 (@highground88) `__ - `Hamish Moffatt (@hmoffatt) `__ - `Marcel Hoppe (@hobbypunk90) `__ - `MoA (@honomoa) `__ - `Hopperpop (@Hopperpop) `__ - `Yang Hau (@howjmay) `__ +- `hpineapples (@hpineapples) `__ - `Antonio Vanegas (@hpsaturn) `__ - `hreintke (@hreintke) `__ - `Jan Hubík (@hubikj) `__ - `Huub Eikens (@huubeikens) `__ - `Steve Rodgers (@hwstar) `__ +- `hificat (@hzkincony) `__ - `Arjan Filius (@iafilius) `__ +- `Iain Hay (@IainPHay) `__ - `Adrián Panella (@ianchi) `__ +- `Ian Anderson (@ianderso) `__ - `Ian Leeder (@ianleeder) `__ - `Jan Pobořil (@iBobik) `__ - `igg (@igg) `__ @@ -408,28 +505,38 @@ Contributors - `Petko Bordjukov (@ignisf) `__ - `ikatkov (@ikatkov) `__ - `iKK001 (@iKK001) `__ +- `ilium007 (@ilium007) `__ - `imgbot[bot] (@imgbot[bot]) `__ - `ImSorryButWho (@ImSorryButWho) `__ - `Dom (@Ing-Dom) `__ +- `Ingo Becker (@ingobecker) `__ - `Ingurum (@Ingurum) `__ +- `IoT-devices LLC (@iotdevicesdev) `__ - `Ivo Roefs (@ironirc) `__ - `irtimaled (@irtimaled) `__ - `Ingo Theiss (@itn3rd77) `__ - `Ivan Shvedunov (@ivan4th) `__ - `Ivan Kravets (@ivankravets) `__ +- `Ivan Lisenkov (@ivlis) `__ - `Ivo-tje (@Ivo-tje) `__ +- `J0RD4N300 (@J0RD4N300) `__ - `Fredrik Gustafsson (@jagheterfredrik) `__ - `Jan Harkes (@jaharkes) `__ +- `Jake Shirley (@JakeShirley) `__ - `Jakob Reiter (@jakommo) `__ - `James Braid (@jamesbraid) `__ - `James Duke (@jamesduke) `__ - `James Gao (@jamesgao) `__ +- `James Hirka (@jameshirka) `__ - `James Lakin (@jamesorlakin) `__ - `James Swift (@JamesSwift) `__ +- `Jason (@jamman9000) `__ - `Juraj Andrássy (@JAndrassy) `__ +- `Delio Castillo (@jangeador) `__ - `Jan Grewe (@jangrewe) `__ - `János Rusiczki (@janosrusiczki) `__ - `Jan Pieper (@janpieper) `__ +- `Jared Ring (@jaredring) `__ - `Jarek.P (@JaroslawPrzybyl) `__ - `Jason-nz (@Jason-nz) `__ - `Jason2866 (@Jason2866) `__ @@ -450,6 +557,7 @@ Contributors - `Jeff Rescignano (@JeffResc) `__ - `Jej (@jej) `__ - `Jens-Christian Skibakk (@jenscski) `__ +- `Jeremy Willans (@jeremywillans) `__ - `Jeroen (@jeroen85) `__ - `Jérôme Laban (@jeromelaban) `__ - `Jesse Hills (@jesserockz) `__ @@ -458,6 +566,7 @@ Contributors - `Jan Pieter Waagmeester (@jieter) `__ - `Jim Bauwens (@jimbauwens) `__ - `jimtng (@jimtng) `__ +- `jivesinger (@jivesinger) `__ - `Jérémy JOURDIN (@JJK801) `__ - `Jonathan Jefferies (@jjok) `__ - `John K. Luebs (@jkl1337) `__ @@ -465,14 +574,18 @@ Contributors - `Jeppe Ladefoged (@jladefoged) `__ - `Jean-Luc Béchennec (@jlbirccyn) `__ - `Jonas De Kegel (@jlsjonas) `__ +- `Jeff Anderson (@jman203) `__ - `Jonathan Martens (@jmartens) `__ - `jmichiel (@jmichiel) `__ +- `Jonathas Barbosa (@jnthas) `__ - `Joe Gross (@joegross) `__ - `Johan van der Kuijl (@johanvanderkuijl) `__ - `Johboh (@Johboh) `__ - `John Britton (@johndbritton) `__ - `John Erik Halse (@johnerikhalse) `__ - `John Moxley (@johnmoxley) `__ +- `Dave Johnston (@johnsto) `__ +- `joiboi (@joiboi) `__ - `JonasEr (@JonasEr) `__ - `Jonathan Adams (@jonathanadams) `__ - `Jonathan Treffler (@JonathanTreffler) `__ @@ -481,10 +594,12 @@ Contributors - `Joppy (@JoppyFurr) `__ - `Jared Sanson (@jorticus) `__ - `Joshua Spence (@joshuaspence) `__ +- `joskfg (@joskfg) `__ - `Joscha Wagner (@jowgn) `__ - `Javier Peletier (@jpeletier) `__ - `jsuanet (@jsuanet) `__ - `James Szalay (@jtszalay) `__ +- `Jules-R (@Jules-R) `__ - `Julie Koubová (@juliekoubova) `__ - `Justahobby01 (@Justahobby01) `__ - `Mike Ryan (@justfalter) `__ @@ -495,10 +610,12 @@ Contributors - `Jack Wozny (@jwozny) `__ - `Jozef Zuzelka (@jzlka) `__ - `Kris (@K-r-i-s-t-i-a-n) `__ +- `k0rtina (@k0rtina) `__ - `Harald Nagel (@k7hpn) `__ - `kaegi (@kaegi) `__ - `kahrendt (@kahrendt) `__ - `Kamahat (@kamahat) `__ +- `Karl0ss (@karl0ss) `__ - `Karol Zlot (@karolzlot) `__ - `Kattni (@kattni) `__ - `Krasimir Nedelchev (@kaykayehnn) `__ @@ -506,17 +623,25 @@ Contributors - `Keilin Bickar (@kbickar) `__ - `Keith Burzinski (@kbx81) `__ - `Ken Piper (@Kealper) `__ -- `Robert Kiss (@kepten) `__ +- `Kelvie Wong (@kelvie) `__ +- `Kenny Stier (@KennyStier) `__ +- `kernelpanic85 (@kernelpanic85) `__ - `Kevin O'Rourke (@kevinior) `__ +- `kevlar10 (@kevlar10) `__ +- `kfulko (@kfulko) `__ - `Kai Gerken (@KG3RK3N) `__ +- `kghandi (@kghandi) `__ - `Khoi Hoang (@khoih-prog) `__ +- `Kilowatt (@Kilowatt-W) `__ - `Ed (@kixtarter) `__ - `Kurt Kellner (@kkellner) `__ - `Klaas Schoute (@klaasnicolaas) `__ - `Klarstein (@Klarstein) `__ - `Marcus Klein (@kleini) `__ - `Kevin Lewis (@kll) `__ +- `KNXBroker (@KNXBroker) `__ - `Koen Vervloesem (@koenvervloesem) `__ +- `kokangit (@kokangit) `__ - `Petr Vraník (@konikvranik) `__ - `Kevin Pelzel (@kpelzel) `__ - `Karl Q. (@kquinsland) `__ @@ -524,24 +649,26 @@ Contributors - `KristopherMackowiak (@KristopherMackowiak) `__ - `kroimon (@kroimon) `__ - `krunkel (@krunkel) `__ +- `kryptonitecb3 (@kryptonitecb3) `__ - `Kendell R (@KTibow) `__ - `Kuba Szczodrzyński (@kuba2k2) `__ - `Jakub Šimo (@kubik369) `__ +- `Mark Kuchel (@kuchel77) `__ - `Ken Davidson (@kwdavidson) `__ -- `Kyle Hendricks (@kylehendricks) `__ -- `Kyle Manna (@kylemanna) `__ +- `Kyle Hill (@kylhill) `__ - `Kalashnikov Ilya (@l1bbcsg) `__ - `Limor "Ladyada" Fried (@ladyada) `__ -- `Lakshantha Dissanayake (@lakshanthad) `__ - `Luca Adrian L (@lal12) `__ - `Fredrik Lindqvist (@Landrash) `__ +- `Lawrie George (@lawriege) `__ - `Laszlo Gazdag (@lazlyhu) `__ +- `Ludovic BOUÉ (@lboue) `__ - `lcavalli (@lcavalli) `__ - `Craig Fletcher (@leakypixel) `__ - `Dominik Wagenknecht (@LeDominik) `__ - `Benny de Leeuw (@leeuwte) `__ - `Leonardo La Rocca (@leoli51) `__ -- `Lerosen (@Lerosen) `__ +- `Leo Winter (@LeoWinterDE) `__ - `Leon Loopik (@Lewn) `__ - `Luca Gugelmann (@lgugelmann) `__ - `Lubos Horacek (@lhoracek) `__ @@ -549,6 +676,7 @@ Contributors - `lillborje71 (@lillborje71) `__ - `lingex (@lingex) `__ - `lkomurcu (@lkomurcu) `__ +- `loadrunner42 (@loadrunner42) `__ - `Lazar Obradovic (@lobradov) `__ - `Barry Loong (@loongyh) `__ - `Michael Bisbjerg (@LordMike) `__ @@ -556,6 +684,9 @@ Contributors - `Joakim Sørensen (@ludeeus) `__ - `ludrao (@ludrao) `__ - `Lukas Klass (@LukasK13) `__ +- `Łukasz Świtaj (@lukaszswitaj) `__ +- `Luke (@Lukeskaiwalker) `__ +- `Jayden (@lukyjay) `__ - `Lumpusz (@Lumpusz) `__ - `Ohad Lutzky (@lutzky) `__ - `Luke Fitzgerald (@lwfitzgerald) `__ @@ -565,24 +696,31 @@ Contributors - `Marc-Antoine Courteau (@macourteau) `__ - `Massimiliano Ravelli (@madron) `__ - `Alexandre-Jacques St-Jacques (@Maelstrom96) `__ +- `Scott Cappellani (@maeneak) `__ - `Magnus Nordlander (@magnusnordlander) `__ - `majbthrd (@majbthrd) `__ - `Major Péter (@majorpeter) `__ +- `Kasper Malfroid (@malfroid) `__ +- `Malle355 (@Malle355) `__ - `raymonder jin (@mamil) `__ - `Manuel Díez (@manutenfruits) `__ +- `marcelolcosta (@marcelolcosta) `__ - `Marcel van der Veldt (@marcelveldt) `__ - `Marc (@MarcHagen) `__ +- `marcinkowalczyk (@marcinkowalczyk) `__ - `Marcio Granzotto Rodrigues (@marciogranzotto) `__ - `marecabo (@marecabo) `__ - `Ben Marengo (@marengaz) `__ - `Marvin Gaube (@margau) `__ - `maringeph (@maringeph) `__ - `Mario (@mario-tux) `__ +- `Mark Schabacker (@markschabacker) `__ - `Marek Marczykowski-Górecki (@marmarek) `__ - `marsjan155 (@marsjan155) `__ - `Martin (@martgras) `__ - `Martin Hjelmare (@MartinHjelmare) `__ - `MartinWelsch (@MartinWelsch) `__ +- `M-A (@maruel) `__ - `MasterTim17 (@MasterTim17) `__ - `Christopher Masto (@masto) `__ - `Mat931 (@Mat931) `__ @@ -595,28 +733,38 @@ Contributors - `Matus Ivanecky (@maty535) `__ - `Maximilian Gerhardt (@maxgerhardt) `__ - `mbo18 (@mbo18) `__ +- `mcmuller (@mcmuller) `__ +- `Miguel Diaz Gonçalves (@mdiazgoncalves) `__ - `Matthew Donoughe (@mdonoughe) `__ - `Me No Dev (@me-no-dev) `__ - `Alexandr Zarubkin (@me21) `__ - `Joseph Mearman (@Mearman) `__ - `mechanarchy (@mechanarchy) `__ - `Bas (@Mechazawa) `__ +- `megabitdragon (@megabitdragon) `__ - `meijerwynand (@meijerwynand) `__ - `Marco (@Melkor82) `__ - `Merlin Schumacher (@merlinschumacher) `__ - `Martin Flasskamp (@MFlasskamp) `__ - `Michael Gorven (@mgorven) `__ +- `Jörg Thalheim (@Mic92) `__ - `Michael Muré (@MichaelMure) `__ - `Micha Nordmann (@Michanord) `__ +- `Michel Munzert (@michelde) `__ - `Pauline Middelink (@middelink) `__ +- `Mike_Went (@MikeWent) `__ - `Mikko Tervala (@MikkoTervala) `__ - `MiKuBB (@MiKuBB) `__ - `André Klitzing (@misery) `__ - `Tomasz (@Misiu) `__ +- `mjbogusz (@mjbogusz) `__ - `Matthew Garrett (@mjg59) `__ - `Morton Jonuschat (@mjonuschat) `__ - `mjoshd (@mjoshd) `__ +- `Matt Kaatman (@mkaatman) `__ +- `Marcel Karger (@mkar1984) `__ - `mknjc (@mknjc) `__ +- `Matthew Kosmoski (@mkosmo) `__ - `Maurice Makaay (@mmakaay) `__ - `mmanza (@mmanza) `__ - `mnltake (@mnltake) `__ @@ -628,6 +776,8 @@ Contributors - `Morgan Robertson (@mrgnr) `__ - `Mariusz Kryński (@mrk-its) `__ - `Michael Davidson (@MrMDavidson) `__ +- `Murray Scott (@mscottco) `__ +- `MSe-5-14 (@MSe-5-14) `__ - `mtl010957 (@mtl010957) `__ - `mulcmu (@mulcmu) `__ - `Martin Murray (@murrayma) `__ @@ -642,6 +792,7 @@ Contributors - `Erik Näsström (@Naesstrom) `__ - `H. Árkosi Róbert (@nagyrobi) `__ - `Viktor Nagy (@nagyv) `__ +- `NanoSector (@NanoSector) `__ - `Oskar Napieraj (@napieraj) `__ - `Nate Lust (@natelust) `__ - `ueno (@nayuta-ueno) `__ @@ -654,24 +805,31 @@ Contributors - `Nick B. (@NickB1) `__ - `nickrout (@nickrout) `__ - `Nick Whyte (@nickw444) `__ +- `Nicky Ivy (@nickyivyca) `__ - `NP v/d Spek (@nielsnl68) `__ +- `Niels Zeilemaker (@NielsZeilemaker) `__ - `Joakim Vindgard (@nigobo) `__ - `nikito7 (@nikito7) `__ - `niklasweber (@niklasweber) `__ - `Niorix (@Niorix) `__ - `Zvonimir Haramustek (@nitko12) `__ +- `Nixspers (@Nixspers) `__ - `Dennis (@Nizzle) `__ - `nldroid (@nldroid) `__ - `Niccolò Maggioni (@nmaggioni) `__ +- `nmeachen (@nmeachen) `__ - `Jan Sandbrink (@NobodysNightmare) `__ +- `Álvaro Fernández Rojas (@Noltari) `__ - `Łukasz Śliwiński (@nonameplum) `__ - `Greg Johnson (@notgwj) `__ - `nouser2013 (@nouser2013) `__ +- `Nick (@ntompson) `__ - `Stephen Edgar (@ntwb) `__ - `Stanislav Meduna (@numo68) `__ - `Nuno Sousa (@nunofgs) `__ - `Maksym Lunin (@nut-code-monkey) `__ - `Chris Nussbaum (@nuttytree) `__ +- `Michał Sochoń (@nvtkaszpir) `__ - `Nathaniel Wesley Filardo (@nwf) `__ - `obrain17 (@obrain17) `__ - `Ockert Marais (@OckertM) `__ @@ -679,12 +837,14 @@ Contributors - `Andrey Ganzevich (@odya) `__ - `ogatatsu (@ogatatsu) `__ - `Oğuzhan Başer (@oguzhanbaser) `__ +- `OkhammahkO (@OkhammahkO) `__ - `Omar Ghader (@omarghader) `__ - `Ömer Şiar Baysal (@omersiar) `__ - `optimusprimespace (@optimusprimespace) `__ - `Oscar Bolmsten (@oscar-b) `__ - `Otamay (@Otamay) `__ - `Otto Winter (@OttoWinter) `__ +- `Maxime Dufour (@outscale-mdr) `__ - `Ben Owen (@owenb321) `__ - `Oxan van Leeuwen (@oxan) `__ - `Pablo Clemente Maseda (@paclema) `__ @@ -698,21 +858,30 @@ Contributors - `Paul Nicholls (@pauln) `__ - `Bartłomiej Biernacki (@pax0r) `__ - `Paul Doidge (@pdoidge) `__ +- `peddamat (@peddamat) `__ - `pedjas (@pedjas) `__ +- `pedrobsm (@pedrobsm) `__ - `per1234 (@per1234) `__ +- `David (@perldj) `__ - `Peter Valkov (@peter-valkov) `__ - `Peter Galantha (@peterg79) `__ - `Peter Halicky (@peterhalicky) `__ +- `Philippe Delodder (@phdelodder) `__ +- `philbowers (@philbowers) `__ - `Philippe FOUQUET (@Philippe12) `__ +- `Philip Rosenberg-Watt (@PhilRW) `__ - `pieterbrink123 (@pieterbrink123) `__ - `Piotr Kubiak (@piotr-kubiak) `__ - `Peter Kuehne (@pkuehne) `__ - `Plácido Revilla (@placidorevilla) `__ - `Marcus Kempe (@plopp) `__ +- `Jan Pluskal (@pluskal) `__ - `DK (@poldim) `__ +- `poloswiss (@poloswiss) `__ - `Pontus Oldberg (@PontusO) `__ - `poptix (@poptix) `__ - `Iván Povedano (@pove) `__ +- `Peter Provost (@PProvost) `__ - `probonopd (@probonopd) `__ - `Mike Lynch (@Prow7) `__ - `Peter Tatrai (@ptatrai) `__ @@ -722,6 +891,7 @@ Contributors - `Alex (@pxe-la) `__ - `[pʲɵs] (@pyos) `__ - `Qc (@qc24) `__ +- `Quinn Casey (@qcasey) `__ - `Karol Zlot (@qqgg231) `__ - `Tommy Jonsson (@quazzie) `__ - `Quentin Smith (@quentinmit) `__ @@ -735,14 +905,21 @@ Contributors - `Florian Ragwitz (@rafl) `__ - `Rai-Rai (@Rai-Rai) `__ - `randomllama (@randomllama) `__ +- `Marc Seeger (@rb2k) `__ - `rbaron (@rbaron) `__ - `Robert Cambridge (@rcambrj) `__ - `Rebbe Pod (@RebbePod) `__ +- `reddn (@reddn) `__ - `Alex (@redwngsrul) `__ +- `Refferic (@Refferic) `__ - `Regev Brody (@regevbr) `__ - `Alex Reid (@reidprojects) `__ +- `RenierM26 (@RenierM26) `__ - `Reuben (@reubn) `__ - `Robin Pronk (@rfpronk) `__ +- `Robert Gabrielson (@rgabrielson11) `__ +- `Rafael Goes (@rgriffogoes) `__ +- `rheinz (@rheinz) `__ - `richardhopton (@richardhopton) `__ - `Richard Klingler (@richardklingler) `__ - `Richard Lewis (@richrd) `__ @@ -750,47 +927,60 @@ Contributors - `rjlexx (@rjlexx) `__ - `René Klomp (@rklomp) `__ - `rlowens (@rlowens) `__ -- `LMR (@rmooreID) `__ - `Ryan Mounce (@rmounce) `__ - `rnauber (@rnauber) `__ - `Rob Deutsch (@rob-deutsch) `__ -- `Rob de Jonge (@robdejonge) `__ - `Robert Alfaro (@robert-alfaro) `__ - `Rob Gridley (@robgridley) `__ -- `Robin Smidsrød (@robinsmidsrod) `__ +- `Robinson1999 (@Robinson1999) `__ - `RoboMagus (@RoboMagus) `__ -- `Roi Tagar (@roitagar) `__ +- `Roeland Lutters (@Roeland54) `__ +- `RoganDawes (@RoganDawes) `__ - `Jérôme W. (@RomRider) `__ +- `roscoegray (@roscoegray) `__ - `rotarykite (@rotarykite) `__ - `Bob Perciaccante (@rperciaccante) `__ - `rradar (@rradar) `__ - `rspaargaren (@rspaargaren) `__ - `rsumner (@rsumner) `__ -- `Ruben De Smet (@rubdos) `__ - `@RubenKelevra (@RubenKelevra) `__ - `RubyBailey (@RubyBailey) `__ +- `Rus Ti (@Rusti-gotrage) `__ - `rweather (@rweather) `__ +- `Ryan Lang (@ryan-lang) `__ - `ryanalden (@ryanalden) `__ +- `Lukas Bachschwell (@s00500) `__ +- `Sabesto (@Sabesto) `__ - `Jan Čermák (@sairon) `__ +- `Sam Turner (@samturner3) `__ +- `Sender (@sanderlv) `__ - `sascha lammers (@sascha432) `__ +- `sbur83 (@sbur83) `__ - `Søren Christian Aarup (@scaarup) `__ - `Matthew Schinckel (@schinckel) `__ - `Nils Schulte (@Schnilz) `__ - `Wolle (@schreibfaul1) `__ - `Ville Skyttä (@scop) `__ - `Jeremy Pack (@scriptengine) `__ +- `Sean True (@seantrue) `__ - `sebcaps (@sebcaps) `__ - `Stefan Seyfried (@seife) `__ - `SenexCrenshaw (@SenexCrenshaw) `__ +- `Jason Sepinsky (@Sepinsky) `__ +- `Sergey Popov (@Sergey-SRG) `__ - `Sergio Mayoral Martínez (@sermayoral) `__ +- `Seth Girvan (@sethgirvan) `__ - `Emanuele Tessore (@setola) `__ - `Abdelkader Boudih (@seuros) `__ - `SharkSharp (@SharkSharp) `__ +- `Sebastiaan (@SharkWipf) `__ - `Fabio Todaro (@SharpEdgeMarshall) `__ - `ShellAddicted (@ShellAddicted) `__ - `sherbang (@sherbang) `__ - `Shish (@shish) `__ +- `signix (@signix) `__ - `SiliconAvatar (@SiliconAvatar) `__ +- `Mark Lopez (@Silvenga) `__ - `Francisco J. Solis (@sisco0) `__ - `Derek Hageman (@Sizurka) `__ - `Stephen Tierney (@sjtrny) `__ @@ -804,6 +994,8 @@ Contributors - `Sourabh Jaiswal (@sourabhjaiswal) `__ - `Philip Allgaier (@spacegaier) `__ - `spacemanspiff2007 (@spacemanspiff2007) `__ +- `sparkydave1981 (@sparkydave1981) `__ +- `spattinson (@spattinson) `__ - `Sean Brogan (@spbrogan) `__ - `Spegs21 (@Spegs21) `__ - `Eric Lind (@sperly) `__ @@ -812,49 +1004,73 @@ Contributors - `Stanislav Habich (@standahabich) `__ - `stegm (@stegm) `__ - `Stewart (@stewiem2000) `__ +- `sthorley (@sthorley) `__ - `sticilface (@sticilface) `__ - `Stijn Tintel (@stintel) `__ - `Mathias Stock (@Stock-M) `__ +- `Strixx76 (@Strixx76) `__ - `stubs12 (@stubs12) `__ - `Jordan Vohwinkel (@sublime93) `__ +- `sud33p (@sud33p) `__ - `sumirati (@sumirati) `__ - `swifty99 (@swifty99) `__ +- `Jan Gutowski (@Switch123456789) `__ - `Sybren A. Stüvel (@sybrenstuvel) `__ - `synco (@synco) `__ - `Marcel Feix (@Syndlex) `__ - `Suryandaru Triandana (@syndtr) `__ - `SyXavier (@SyXavier) `__ +- `Peter (@szpeter80) `__ - `Taigar2015 (@Taigar2015) `__ +- `Stefan Dragnev (@tailsu) `__ - `Levente Tamas (@tamisoft) `__ - `Aleksandr Oleinikov (@tannisroot) `__ - `tantive (@tantive) `__ - `Ryan Hoffman (@tekmaven) `__ - `testbughub (@testbughub) `__ - `Greg Lincoln (@tetious) `__ +- `Terry Hardie (@thardie) `__ +- `The-Paran0id-Andr0id (@The-Paran0id-Andr0id) `__ - `Nejc (@thedexboy) `__ - `Thomas Eckerstorfer (@TheEggi) `__ - `Theexternaldisk (@Theexternaldisk) `__ +- `Martijn van der Pol (@TheFes) `__ - `TheGroundZero (@TheGroundZero) `__ - `thejonesyboy (@thejonesyboy) `__ - `TheJulianJES (@TheJulianJES) `__ - `Zixuan Wang (@TheNetAdmin) `__ - `Dominik Bruhn (@theomega) `__ +- `Brian Levinsen (@therealeldaria) `__ +- `Steve Scott (@thewishy) `__ - `Florian Gareis (@TheZoker) `__ +- `Thibault Maekelbergh (@thibmaek) `__ +- `Matt (@ThisIsTheOnlyUsernameAvailable) `__ +- `Thomas Heiser (@thomasheiser85) `__ - `Andrew Thompson (@thompsa) `__ - `John (@thorrak) `__ +- `Thomas Langewouters (@thouters) `__ +- `Transylvania High Tech (@thtro) `__ +- `Thunderbiscuits (@Thunderbiscuits) `__ - `tiagofreire-pt (@tiagofreire-pt) `__ - `Tijs-B (@Tijs-B) `__ +- `Tim Laurence (@timdaman) `__ - `Aidan Timson (@timmo001) `__ - `Tim Savage (@timsavage) `__ +- `Tinkerfish (@tinkerfish) `__ +- `TJ Horner (@tjhorner) `__ +- `Christian (@Tntdruid) `__ - `Philipp Tölke (@toelke) `__ - `tomaszduda23 (@tomaszduda23) `__ - `Tom Brien (@TomBrien) `__ +- `Tom Hartogs (@TomHartogs) `__ - `tomlut (@tomlut) `__ - `tomle (@tomole444) `__ - `Tom Price (@tomtom5152) `__ - `David Kiliani (@torfbolt) `__ +- `tracestep (@tracestep) `__ - `Felix Eckhofer (@tribut) `__ - `Trick van Staveren (@trickv) `__ +- `TripitakaBC (@TripitakaBC) `__ - `Tobias (@tripplet) `__ - `Tyler Bules (@Troublebrewing) `__ - `Olli Salonen (@trsqr) `__ @@ -865,17 +1081,25 @@ Contributors - `tubalainen (@tubalainen) `__ - `tube0013 (@tube0013) `__ - `Alexey Vlasov (@turbulator) `__ +- `tvan0076 (@tvan0076) `__ - `Thorsten von Eicken (@tve) `__ - `Ubi de Feo (@ubidefeo) `__ +- `ulic75 (@ulic75) `__ +- `unhold (@unhold) `__ +- `Aaron Mildenstein (@untergeek) `__ - `uPesy Electronics (@uPesy) `__ - `UT2UH (@UT2UH) `__ - `Vc (@Valcob) `__ - `Nad (@valordk) `__ +- `Veli Veromann (@velijv) `__ - `André Lademann (@vergissberlin) `__ - `Austin (@vidplace7) `__ - `Vincèn (@vincegre) `__ +- `Virage Laboratories (@viragelabs) `__ - `VitaliyKurokhtin (@VitaliyKurokhtin) `__ - `Xuming Feng (@voicevon) `__ +- `vt-vaio (@vt-vaio) `__ +- `vtechun (@vtechun) `__ - `vxider (@Vxider) `__ - `Wai Weng (@waiweng83) `__ - `WallyCZ (@WallyCZ) `__ @@ -886,6 +1110,7 @@ Contributors - `Ian Wells (@wellsi) `__ - `wifwucite (@wifwucite) `__ - `wilberforce (@wilberforce) `__ +- `Wingman3434 (@Wingman3434) `__ - `Emil Hesslow (@WizKid) `__ - `WJCarpenter (@wjcarpenter) `__ - `Wouter van der Wal (@wjtje) `__ @@ -895,6 +1120,8 @@ Contributors - `Sven Serlier (@wrt54g) `__ - `Wolfgang Tremmel (@wtremmel) `__ - `wysiwyng (@wysiwyng) `__ +- `Jakob (@XDjackieXD) `__ +- `Mike Brown (@xenoxaos) `__ - `WitchKing (@xvil) `__ - `Yaroslav (@Yarikx) `__ - `Marcin Jaworski (@yawor) `__ @@ -903,10 +1130,13 @@ Contributors - `Yuval Aboulafia (@yuvalabou) `__ - `Björn Stenberg (@zagor) `__ - `david reid (@zathras777) `__ +- `Brynley McDonald (@ZephireNZ) `__ - `Geek_cat (@zhzhzhy) `__ - `I. Tomita (@ziceva) `__ - `Michael Labuschke (@zigman79) `__ +- `zivillian (@zivillian) `__ +- `Loïc (@zoic21) `__ - `Zack Barett (@zsarnett) `__ - `Christian Zufferey (@zuzu59) `__ -*This page was last updated March 27, 2023.* +*This page was last updated April 20, 2023.*