From 093b442459ea6cd8879cccf7285142dad97214f4 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:29:09 +1300 Subject: [PATCH 01/10] Bump version to v1.17.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- script/bump-version.py | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Doxygen b/Doxygen index ae4d37139..36c0c07d6 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.17.0-dev +PROJECT_NUMBER = 1.17.0b1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 1a15daf6c..e3ce13443 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = v1.16.2 +ESPHOME_REF = v1.17.0b1 .PHONY: html html-strict cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png diff --git a/_static/version b/_static/version index ee8855caa..c4c22c58f 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.17.0-dev +1.17.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index 3f2f786b7..357202291 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "Otto Winter" # The short X.Y version. version = "1.17" # The full version, including alpha/beta/rc tags. -release = "1.17.0-dev" +release = "1.17.0b1" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/script/bump-version.py b/script/bump-version.py index 83ffa4b4d..0a38889f9 100755 --- a/script/bump-version.py +++ b/script/bump-version.py @@ -60,9 +60,9 @@ def write_version(version: Version): "Doxygen", r"PROJECT_NUMBER = .*", f"PROJECT_NUMBER = {version}" ) # version = '1.14' - sub("conf.py", r"version = '.*'", f"version = '{version.major}.{version.minor}'") + sub("conf.py", r'version = ".*"', f'version = "{version.major}.{version.minor}"') # release = '1.14.4' - sub("conf.py", r"release = '.*'", f"release = '{version}'") + sub("conf.py", r'release = ".*"', f'release = "{version}"') with open("_static/version", "wt") as fh: fh.write(str(version)) From 35330c419a8e328d6ffef38aa661bf333e93736f Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:36:22 +1300 Subject: [PATCH 02/10] Update changelog for 1.17.0b1 --- changelog/index.rst | 2 +- changelog/v1.17.0.rst | 176 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 changelog/v1.17.0.rst diff --git a/changelog/index.rst b/changelog/index.rst index 58680e625..8dd643894 100644 --- a/changelog/index.rst +++ b/changelog/index.rst @@ -2,7 +2,7 @@ Changelog ========= .. redirect:: - :url: /changelog/v1.16.0.html + :url: /changelog/v1.17.0.html .. toctree:: :glob: diff --git a/changelog/v1.17.0.rst b/changelog/v1.17.0.rst new file mode 100644 index 000000000..68f009bed --- /dev/null +++ b/changelog/v1.17.0.rst @@ -0,0 +1,176 @@ +Changelog - Version 1.17.0 - TBD 2021 +=============================================== + +.. seo:: + :description: Changelog for ESPHome version 1.17.0. + :image: /_static/changelog-1.17.0.png + :author_twitter: @esphome_ + +.. imgtable:: + :columns: 4 + + Inkbird IBS-TH1 Mini, components/sensor/inkbird_ibsth1_mini, inkbird_isbth1_mini.jpg + MCP4725, components/output/mcp4725, mcp4725.jpg + Xiaomi Miscale, components/sensor/xiaomi_miscale, xiaomi_miscale.jpg + Xiaomi Miscale2, components/sensor/xiaomi_miscale2, xiaomi_miscale2.jpg + Midea Air Conditioner, components/climate/midea_ac, midea.svg + Addressable Light Display, components/display/addressable_light, addressable_light.jpg + Pulse Meter, components/sensor/pulse_meter, pulse.svg + +RELEASE NOTES TO GO HERE + +New Features +------------ + +- esphome: Vl53l0x change address :esphomepr:`1126` by :ghuser:`kkellner` (new-feature) +- esphome: Background calibration & ABC commands for SenseAir S8 :esphomepr:`1623` by :ghuser:`nmaggioni` (new-feature) +- esphome: Add trigger for http actions to receive the status code :esphomepr:`1599` by :ghuser:`jesserockz` (new-feature) + +New Integrations +---------------- + +- esphome: Adding support for the Inkbird IBS-TH1 Mini sensor :esphomepr:`1099` by :ghuser:`fkirill` (new-integration) +- esphome: Add MCP4725 DAC Component :esphomepr:`1418` by :ghuser:`JJK801` (new-integration) +- esphome: Add Xiaomi Miscale v1 and v2 :esphomepr:`1368` by :ghuser:`dckiller51` (new-integration) +- esphome: Add support for the SM300D2 7-in-1 sensor module :esphomepr:`1524` by :ghuser:`moritzgloeckl` (new-integration) +- esphome: Midea climate support :esphomepr:`1328` by :ghuser:`dudanov` (new-integration) +- esphome: Add addressable_light display platform :esphomepr:`1272` by :ghuser:`justfalter` (new-integration) (notable-change) +- esphome: Implement pulse_meter as an improvement on pulse_counter and pulse_width for meters :esphomepr:`1434` by :ghuser:`stevebaxter` (new-integration) + +Breaking Changes +---------------- + +- esphome: MCP23XXX Refactor :esphomepr:`1560` by :ghuser:`jesserockz` (breaking-change) + +Notable Changes +--------------- + +- esphome: Device class attribute for sensor component :esphomepr:`1525` by :ghuser:`marecabo` (notable-change) +- esphome: Add default device classes to sensor components :esphomepr:`1533` by :ghuser:`marecabo` (notable-change) +- esphome: Add addressable_light display platform :esphomepr:`1272` by :ghuser:`justfalter` (new-integration) (notable-change) + +All changes +----------- + +- esphome: Bump voluptuous from 0.12.0 to 0.12.1 :esphomepr:`1411` by :ghuser:`dependabot[bot]` +- esphome: add http request tests :esphomepr:`1448` by :ghuser:`glmnet` +- esphome: codegen: Lambda improvements :esphomepr:`1476` by :ghuser:`balrog-kun` +- docs: Add options to control pulse duration on Climate_IR_LG Component :docspr:`963` by :ghuser:`mhentschke` +- esphome: Add options to control pulse duration on Climate_IR_LG Component :esphomepr:`1470` by :ghuser:`mhentschke` +- esphome: Adding support for the Inkbird IBS-TH1 Mini sensor :esphomepr:`1099` by :ghuser:`fkirill` (new-integration) +- docs: Adding documentation for Inkbird IBS-TH1 Mini sensor :docspr:`657` by :ghuser:`fkirill` +- esphome: Add config validator location :esphomepr:`1490` by :ghuser:`glmnet` +- esphome: Add MCP4725 DAC Component :esphomepr:`1418` by :ghuser:`JJK801` (new-integration) +- docs: Add MCP4725 docs :docspr:`889` by :ghuser:`JJK801` +- docs: Fix format consistency :docspr:`989` by :ghuser:`glmnet` +- esphome: Added codeowners to max7219digit :esphomepr:`1487` by :ghuser:`rspaargaren` +- esphome: Correct Native API Wire Format Documentation :esphomepr:`1528` by :ghuser:`justin-gerhardt` +- esphome: st7735_conf_fixes :esphomepr:`1530` by :ghuser:`SenexCrenshaw` +- docs: ST7735 Changed configuration items to snake_case :docspr:`1000` by :ghuser:`SenexCrenshaw` +- esphome: Device class attribute for sensor component :esphomepr:`1525` by :ghuser:`marecabo` (notable-change) +- docs: Add doc for device_class attribute of sensor :docspr:`996` by :ghuser:`marecabo` +- docs: Add sleep duration to enter deep sleep action :docspr:`995` by :ghuser:`nuttytree` +- esphome: Add duration option to action start deep sleep :esphomepr:`1526` by :ghuser:`nuttytree` +- esphome: fix substitution losing track of document range :esphomepr:`1547` by :ghuser:`glmnet` +- docs: Update esp32_camera.rst :docspr:`1020` by :ghuser:`lukaszrud` +- docs: Fix format next :docspr:`1023` by :ghuser:`glmnet` +- docs: Add another project to diy.rst :docspr:`1019` by :ghuser:`shish` +- docs: Update esphome-configs URL :docspr:`1018` by :ghuser:`shish` +- docs: Icon is ignored by HA when device class is set :docspr:`1011` by :ghuser:`marecabo` +- docs: Update pid.rst :docspr:`1006` by :ghuser:`boradwell` +- docs: Mention that Hyperion.NG works with E1.31 :docspr:`975` by :ghuser:`rradar` +- esphome: Add Xiaomi Miscale v1 and v2 :esphomepr:`1368` by :ghuser:`dckiller51` (new-integration) +- docs: Add docs for Xiaomi Miscale v1 and v2 :docspr:`1021` by :ghuser:`dckiller51` +- docs: Add missing closing parenthesis in example :docspr:`1029` by :ghuser:`lepinkainen` +- docs: Update Inkplate.rst :docspr:`1026` by :ghuser:`jakommo` +- docs: typo in st7735 model number :docspr:`1025` by :ghuser:`wjcarpenter` +- docs: Fix mcp23sXX id config :docspr:`1017` by :ghuser:`jesserockz` +- docs: Update bme680.rst :docspr:`1007` by :ghuser:`wifwucite` +- docs: Sim800l dial :docspr:`1027` by :ghuser:`spilin` +- esphome: Add dial support for sim800l component :esphomepr:`1558` by :ghuser:`spilin` +- esphome: Climate IR LG -keep previous temp and fan if swing :esphomepr:`1556` by :ghuser:`Otamay` +- esphome: Vl53l0x change address :esphomepr:`1126` by :ghuser:`kkellner` (new-feature) +- docs: Update vl53l0x docs :docspr:`679` by :ghuser:`kkellner` +- esphome: tuya: Use queue for sending command messages :esphomepr:`1404` by :ghuser:`stubs12` +- esphome: Replace substitutions in substitutions first :esphomepr:`1567` by :ghuser:`edenhaus` +- esphome: Added heater to climate_ir_lg :esphomepr:`1555` by :ghuser:`Otamay` +- esphome: More yaml validation :esphomepr:`1568` by :ghuser:`glmnet` +- esphome: Add default device classes to sensor components :esphomepr:`1533` by :ghuser:`marecabo` (notable-change) +- docs: Document recurring data in uart switch :docspr:`986` by :ghuser:`gabe565` +- esphome: Add support for recurring data in uart switch :esphomepr:`1514` by :ghuser:`gabe565` +- esphome: Added samsung36 ir protocol :esphomepr:`1438` by :ghuser:`tuxBurner` +- docs: Added remote samsung36 protocol docs :docspr:`904` by :ghuser:`tuxBurner` +- docs: Add IWOOLE Table Lamp cookbook entry :docspr:`947` by :ghuser:`Deinara` +- docs: Update uart.rst example to read all available characters :docspr:`1031` by :ghuser:`RoganDawes` +- esphome: ADC fix: GPIO0 not usable as output if ADC_VCC is used :esphomepr:`1557` by :ghuser:`ferbar` +- esphome: Add constants for device classes of binary_sensor :esphomepr:`1549` by :ghuser:`marecabo` +- esphome: fix path on windows escape :esphomepr:`1573` by :ghuser:`glmnet` +- esphome: Migrate ESPColor to Color :esphomepr:`1551` by :ghuser:`SenexCrenshaw` +- docs: Migrate ESPColor to Color :docspr:`1036` by :ghuser:`SenexCrenshaw` +- esphome: Add support for the SM300D2 7-in-1 sensor module :esphomepr:`1524` by :ghuser:`moritzgloeckl` (new-integration) +- docs: Added documentation for the SM300D2 sensor :docspr:`993` by :ghuser:`moritzgloeckl` +- esphome: changed color temp from float to int :esphomepr:`1522` by :ghuser:`codyjamestechnical` +- esphome: Bump pytest-cov from 2.10.1 to 2.11.1 :esphomepr:`1483` by :ghuser:`dependabot[bot]` +- esphome: Bump colorlog from 4.6.2 to 4.7.2 :esphomepr:`1473` by :ghuser:`dependabot[bot]` +- esphome: pins: Add three new boards :esphomepr:`1576` by :ghuser:`balrog-kun` +- esphome: Bump pytest from 6.2.1 to 6.2.2 :esphomepr:`1574` by :ghuser:`dependabot[bot]` +- esphome: Bump pytz from 2020.5 to 2021.1 :esphomepr:`1575` by :ghuser:`dependabot[bot]` +- esphome: Fix for waveshare 2.13in-ttgo-b73 :esphomepr:`1543` by :ghuser:`nikito7` +- docs: Added new blogpost :docspr:`1038` by :ghuser:`pieterbrink123` +- esphome: Add min/max filters :esphomepr:`1569` by :ghuser:`gabe565` +- docs: Document new min/max filters :docspr:`1032` by :ghuser:`gabe565` +- esphome: Bump pylint from 2.6.0 to 2.7.2 :esphomepr:`1582` by :ghuser:`dependabot[bot]` +- esphome: Extend 'uart:' with 'invert:' for esp32 :esphomepr:`1586` by :ghuser:`needspeed` +- docs: Uart invert option for ESP32 :docspr:`1039` by :ghuser:`Mynasru` +- esphome: Bump platformio from 5.0.4 to 5.1.0 :esphomepr:`1581` by :ghuser:`dependabot[bot]` +- esphome: fix servo warning :esphomepr:`1591` by :ghuser:`glmnet` +- docs: add-black :docspr:`1044` by :ghuser:`glmnet` +- esphome: add-black :esphomepr:`1593` by :ghuser:`glmnet` +- esphome: MCP23XXX Refactor :esphomepr:`1560` by :ghuser:`jesserockz` (breaking-change) +- docs: Update MCP23XXX docs with interrupts and pin schemas :docspr:`1028` by :ghuser:`jesserockz` +- esphome: Improve error checking: too many component id candidates :esphomepr:`1570` by :ghuser:`glmnet` +- esphome: Schema dump :esphomepr:`1564` by :ghuser:`glmnet` +- docs: Dump schema :docspr:`1030` by :ghuser:`glmnet` +- docs: Update i2c.rst :docspr:`1043` by :ghuser:`webeling67` +- docs: Update rf_bridge.rst :docspr:`1042` by :ghuser:`samnewman86` +- esphome: Inkplate 6 Optimizations :esphomepr:`1592` by :ghuser:`Sizurka` +- docs: Fix RF Bridge link to Portisch Repo :docspr:`1045` by :ghuser:`jesserockz` +- docs: pin schema and other fixes :docspr:`1047` by :ghuser:`glmnet` +- esphome: schema-dump-pins :esphomepr:`1596` by :ghuser:`glmnet` +- docs: Adding that mpr121_id is a valid option for binary_sensor :docspr:`966` by :ghuser:`minideezel` +- esphome: change lcd clear() to clear the buffer :esphomepr:`1600` by :ghuser:`ssieb` +- esphome: PN532 - don't read extra page and fix size :esphomepr:`1565` by :ghuser:`ssieb` +- docs: schema-filters :docspr:`1052` by :ghuser:`glmnet` +- esphome: Fix component_tests config :esphomepr:`1608` by :ghuser:`madron` +- esphome: Added receive for Fujitsu ACs :esphomepr:`1577` by :ghuser:`alex-richards` +- esphome: Change COLOR_ON to be 255 values instead of 1 :esphomepr:`1594` by :ghuser:`jesserockz` +- esphome: a4988 wait 1ms when coming out of sleep :esphomepr:`1597` by :ghuser:`WeekendWarrior1` +- docs: Remove cs_pin from rc522 i2c example :docspr:`1059` by :ghuser:`jesserockz` +- esphome: Support fan speed levels :esphomepr:`1541` by :ghuser:`blejdfist` +- docs: Documentation for fan speed levels :docspr:`1056` by :ghuser:`blejdfist` +- docs: Add CLI logs section :docspr:`1060` by :ghuser:`Tmin10` +- esphome: Add option to suffix name with mac address :esphomepr:`1615` by :ghuser:`jesserockz` +- esphome: Midea climate support :esphomepr:`1328` by :ghuser:`dudanov` (new-integration) +- docs: Midea Climate support :docspr:`804` by :ghuser:`dudanov` +- docs: Add docs for `name_add_mac_suffix` config :docspr:`1058` by :ghuser:`jesserockz` +- esphome: SPI transfer fix. Use write when no miso pin is set :esphomepr:`1563` by :ghuser:`SenexCrenshaw` +- esphome: SPI Improvements :esphomepr:`1617` by :ghuser:`SenexCrenshaw` +- esphome: Add addressable_light display platform :esphomepr:`1272` by :ghuser:`justfalter` (new-integration) (notable-change) +- docs: Add docs for addressable_light display :docspr:`755` by :ghuser:`justfalter` +- esphome: Implement pulse_meter as an improvement on pulse_counter and pulse_width for meters :esphomepr:`1434` by :ghuser:`stevebaxter` (new-integration) +- esphome: e131: fix issue 1579: limitation of maximum light count :esphomepr:`1619` by :ghuser:`docteurzoidberg` +- docs: Add documentation for pulse_meter :docspr:`900` by :ghuser:`stevebaxter` +- esphome: Bump platformio from 5.1.0 to 5.1.1 :esphomepr:`1618` by :ghuser:`dependabot[bot]` +- esphome: Fix pulse-meter with device_class and black :esphomepr:`1621` by :ghuser:`jesserockz` +- esphome: Declare Color objects in main.cpp :esphomepr:`1395` by :ghuser:`kbx81` +- esphome: Add 2.13in-ttgo-b1 waveshare epaper module. :esphomepr:`1326` by :ghuser:`matikij` +- docs: Add docs for ttgo-b1 version (next branch) :docspr:`808` by :ghuser:`matikij` +- esphome: Bump flake8 from 3.8.4 to 3.9.0 :esphomepr:`1612` by :ghuser:`dependabot[bot]` +- esphome: Bundle platformio lib_deps in docker images :esphomepr:`1625` +- esphome: Bump protobuf from 3.13.0 to 3.15.6 :esphomepr:`1607` by :ghuser:`dependabot[bot]` +- esphome: Bump pyyaml from 5.3.1 to 5.4.1 :esphomepr:`1482` by :ghuser:`dependabot[bot]` +- esphome: Switch docker images to debian :esphomepr:`1626` +- esphome: Background calibration & ABC commands for SenseAir S8 :esphomepr:`1623` by :ghuser:`nmaggioni` (new-feature) +- docs: SenseAir: background calibration & ABC commands :docspr:`1066` by :ghuser:`nmaggioni` +- esphome: Add trigger for http actions to receive the status code :esphomepr:`1599` by :ghuser:`jesserockz` (new-feature) +- docs: Add docs for http_request on_response trigger :docspr:`1049` by :ghuser:`jesserockz` From a7bf56b21dd34739b26a179d534e60956892dc55 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 22 Mar 2021 17:36:47 +1300 Subject: [PATCH 03/10] Update supporters for 1.17.0b1 --- guides/supporters.rst | 74 ++++++++++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 22 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 99dd38928..690ac643f 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -94,7 +94,7 @@ that have made it into the `ESPHome organization's ` Author & Main Developer *********************** -- `Otto Winter (@OttoWinter) `__ - 2356 contributions +- `Otto Winter (@OttoWinter) `__ - 2361 contributions Contributors ************ @@ -113,7 +113,6 @@ Contributors - `Attila Darazs (@adarazs) `__ - 2 contributions - `adezerega (@adezerega) `__ - 1 contribution - `Andrea Donno (@adonno) `__ - 1 contribution -- `Adrian Cuzman (@adriancuzman) `__ - 2 contributions - `Johan Bloemberg (@aequitas) `__ - 6 contributions - `Anders (@ahd71) `__ - 1 contribution - `Alexander Pohl (@ahpohl) `__ - 4 contributions @@ -121,6 +120,7 @@ Contributors - `akoivist (@akoivist) `__ - 1 contribution - `Andrej Komelj (@akomelj) `__ - 3 contributions - `Alone (@al-one) `__ - 2 contributions +- `Alex (@alex-richards) `__ - 1 contribution - `Alexander Leisentritt (@Alex9779) `__ - 10 contributions - `Alexandre Danault (@AlexDanault) `__ - 1 contribution - `Alex Mekkering (@AlexMekkering) `__ - 3 contributions @@ -143,13 +143,14 @@ Contributors - `Florian Mösch (@badbadc0ffee) `__ - 10 contributions - `balk77 (@balk77) `__ - 2 contributions - `Paulus Schoutsen (@balloob) `__ - 41 contributions -- `Andrew Zaborowski (@balrog-kun) `__ - 8 contributions +- `Andrew Zaborowski (@balrog-kun) `__ - 9 contributions - `Rutger Nijhuis (@BananaPukeh) `__ - 1 contribution - `J. Nick Koston (@bdraco) `__ - 2 contributions - `Ben Suffolk (@bensuffolk) `__ - 1 contribution - `Bierchermuesli (@Bierchermuesli) `__ - 1 contribution -- `Jim Ekman (@blejdfist) `__ - 4 contributions +- `Jim Ekman (@blejdfist) `__ - 6 contributions - `Mauricio Bonani (@bonanitech) `__ - 1 contribution +- `boradwell (@boradwell) `__ - 1 contribution - `Patrik Hermansson (@bphermansson) `__ - 1 contribution - `Bram Kragten (@bramkragten) `__ - 2 contributions - `Brad Davidson (@brandond) `__ - 19 contributions @@ -165,6 +166,7 @@ Contributors - `chris-jennings (@chris-jennings) `__ - 1 contribution - `John (@CircuitSetup) `__ - 5 contributions - `Chris Debenham (@cjd) `__ - 1 contribution +- `Cody James (@codyjamestechnical) `__ - 1 contribution - `James Crook (@cooljimy84) `__ - 1 contribution - `Corban Mailloux (@corbanmailloux) `__ - 5 contributions - `Dmitry Berezovsky (@corvis) `__ - 2 contributions @@ -187,12 +189,14 @@ Contributors - `David De Sloovere (@DavidDeSloovere) `__ - 3 contributions - `David Beitey (@davidjb) `__ - 1 contribution - `David Zovko (@davidzovko) `__ - 1 contribution +- `dckiller51 (@dckiller51) `__ - 1 contribution - `Debashish Sahu (@debsahu) `__ - 1 contribution - `declanshanaghy (@declanshanaghy) `__ - 3 contributions - `deftdawg (@deftdawg) `__ - 1 contribution +- `Christiaan Blom (@Deinara) `__ - 1 contribution - `Rsan (@deltazerorsan) `__ - 1 contribution - `Mickaël Le Baillif (@demikl) `__ - 3 contributions -- `dependabot[bot] (@dependabot[bot]) `__ - 43 contributions +- `dependabot[bot] (@dependabot[bot]) `__ - 53 contributions - `Destix (@Destix) `__ - 1 contribution - `Alain Turbide (@Dilbert66) `__ - 2 contributions - `Mark (@Diramu) `__ - 1 contribution @@ -202,6 +206,7 @@ Contributors - `Marcos Pérez Ferro (@djwmarcx) `__ - 2 contributions - `Dan Mannock (@dmannock) `__ - 1 contribution - `dmkif (@dmkif) `__ - 1 contribution +- `DrZoid (@docteurzoidberg) `__ - 1 contribution - `Jiang Sheng (@doskoi) `__ - 1 contribution - `Robert Schütz (@dotlambda) `__ - 3 contributions - `Daniel Hyles (@DotNetDann) `__ - 4 contributions @@ -209,10 +214,12 @@ Contributors - `Drew Perttula (@drewp) `__ - 2 contributions - `DrRob (@DrRob) `__ - 1 contribution - `dubit0 (@dubit0) `__ - 1 contribution +- `Sergey V. DUDANOV (@dudanov) `__ - 1 contribution - `Dimitris Zervas (@dzervas) `__ - 2 contributions - `dziobson (@dziobson) `__ - 1 contribution - `Dan Jackson (@e28eta) `__ - 1 contribution - `Ermanno Baschiera (@ebaschiera) `__ - 1 contribution +- `Robert Resch (@edenhaus) `__ - 1 contribution - `Niclas Larsson (@edge90) `__ - 1 contribution - `Eenoo (@Eenoo) `__ - 1 contribution - `Erwin Kooi (@egeltje) `__ - 2 contributions @@ -230,12 +237,12 @@ Contributors - `Eric Hiller (@erichiller) `__ - 1 contribution - `Ernst Klamer (@Ernst79) `__ - 1 contribution - `escoand (@escoand) `__ - 7 contributions -- `esphomebot (@esphomebot) `__ - 15 contributions +- `esphomebot (@esphomebot) `__ - 16 contributions - `Evan Coleman (@evandcoleman) `__ - 3 contributions - `Malte Franken (@exxamalte) `__ - 2 contributions - `Fabian Affolter (@fabaff) `__ - 29 contributions - `C W (@fake-name) `__ - 2 contributions -- `Christian Ferbar (@ferbar) `__ - 2 contributions +- `Christian Ferbar (@ferbar) `__ - 3 contributions - `fkirill (@fkirill) `__ - 1 contribution - `foxsam21 (@foxsam21) `__ - 2 contributions - `Fractal147 (@Fractal147) `__ - 1 contribution @@ -249,13 +256,14 @@ Contributors - `Fritz Mueller (@fritzm) `__ - 1 contribution - `Marc Egli (@frog32) `__ - 1 contribution - `mr G1K (@G1K) `__ - 2 contributions +- `Gabe Cook (@gabe565) `__ - 2 contributions - `galagaking (@galagaking) `__ - 1 contribution - `Geoff Davis (@geoffdavis) `__ - 2 contributions - `Gerard (@gerard33) `__ - 2 contributions - `Giovanni (@Gio-dot) `__ - 2 contributions - `gitolicious (@gitolicious) `__ - 16 contributions - `The Gitter Badger (@gitter-badger) `__ - 1 contribution -- `Guillermo Ruffino (@glmnet) `__ - 202 contributions +- `Guillermo Ruffino (@glmnet) `__ - 240 contributions - `Giorgos Logiotatidis (@glogiotatidis) `__ - 1 contribution - `Germain Masse (@gmasse) `__ - 2 contributions - `Jelle Raaijmakers (@GMTA) `__ - 1 contribution @@ -283,6 +291,7 @@ Contributors - `Ivan Shvedunov (@ivan4th) `__ - 1 contribution - `Ivan Kravets (@ivankravets) `__ - 1 contribution - `Ivo-tje (@Ivo-tje) `__ - 1 contribution +- `Jakob Reiter (@jakommo) `__ - 1 contribution - `James Gao (@jamesgao) `__ - 1 contribution - `Jan Pieper (@janpieper) `__ - 2 contributions - `Jason-nz (@Jason-nz) `__ - 1 contribution @@ -291,7 +300,7 @@ Contributors - `Joshua Dadswell (@jdads1) `__ - 1 contribution - `jeff-h (@jeff-h) `__ - 2 contributions - `Jeff Rescignano (@JeffResc) `__ - 11 contributions -- `Jesse Hills (@jesserockz) `__ - 119 contributions +- `Jesse Hills (@jesserockz) `__ - 133 contributions - `Jérémy JOURDIN (@JJK801) `__ - 1 contribution - `Jonathan Jefferies (@jjok) `__ - 1 contribution - `Justin Maxwell (@jkmaxwell) `__ - 1 contribution @@ -306,20 +315,22 @@ Contributors - `Joppy (@JoppyFurr) `__ - 2 contributions - `junnikokuki (@junnikokuki) `__ - 1 contribution - `Justahobby01 (@Justahobby01) `__ - 1 contribution +- `Mike Ryan (@justfalter) `__ - 1 contribution - `Justin Gerhardt (@justin-gerhardt) `__ - 1 contribution - `Justyn Shull (@justyns) `__ - 1 contribution - `Jasper van der Neut - Stulen (@jvanderneutstulen) `__ - 2 contributions - `João Vitor M. Roma (@jvmr1) `__ - 1 contribution - `Jack Wozny (@jwozny) `__ - 1 contribution -- `Kris (@K-r-i-s-t-i-a-n) `__ - 1 contribution +- `Kris (@K-r-i-s-t-i-a-n) `__ - 2 contributions - `Harald Nagel (@k7hpn) `__ - 2 contributions - `kalebzettl (@kalebzettl) `__ - 1 contribution - `Krasimir Nedelchev (@kaykayehnn) `__ - 1 contribution - `kbouchard111 (@kbouchard111) `__ - 1 contribution -- `Keith Burzinski (@kbx81) `__ - 26 contributions +- `Keith Burzinski (@kbx81) `__ - 27 contributions - `Robert Kiss (@kepten) `__ - 2 contributions - `Kevin O'Rourke (@kevinior) `__ - 1 contribution - `kimonm (@kimonm) `__ - 1 contribution +- `Kurt Kellner (@kkellner) `__ - 1 contribution - `Klaas Schoute (@klaasnicolaas) `__ - 1 contribution - `Klarstein (@Klarstein) `__ - 3 contributions - `Kevin Lewis (@kll) `__ - 1 contribution @@ -339,20 +350,23 @@ Contributors - `Steffen Weinreich (@lairsdragon) `__ - 1 contribution - `Fredrik Lindqvist (@Landrash) `__ - 1 contribution - `lein1013 (@lein1013) `__ - 1 contribution +- `Riku Lindblad (@lepinkainen) `__ - 1 contribution - `Lazar Obradovic (@lobradov) `__ - 4 contributions -- `Joakim Sørensen (@ludeeus) `__ - 11 contributions +- `Joakim Sørensen (@ludeeus) `__ - 12 contributions - `Lukas Klass (@LukasK13) `__ - 1 contribution +- `lukaszrud (@lukaszrud) `__ - 1 contribution - `Lumpusz (@Lumpusz) `__ - 2 contributions - `Luke Fitzgerald (@lwfitzgerald) `__ - 1 contribution - `Lewis Juggins (@lwis) `__ - 1 contribution - `Michael Klamminger (@m1ch) `__ - 1 contribution - `M95D (@M95D) `__ - 1 contribution - `Marc-Antoine Courteau (@macourteau) `__ - 1 contribution +- `Massimiliano Ravelli (@madron) `__ - 1 contribution - `magnus (@magnusja) `__ - 1 contribution - `Magnus Øverli (@magnusoverli) `__ - 1 contribution - `Major Péter (@majorpeter) `__ - 2 contributions - `Marcel van der Veldt (@marcelveldt) `__ - 2 contributions -- `marecabo (@marecabo) `__ - 2 contributions +- `marecabo (@marecabo) `__ - 4 contributions - `Marvin Gaube (@margau) `__ - 4 contributions - `Martynas Griškonis (@Margriko) `__ - 1 contribution - `Mario (@mario-tux) `__ - 3 contributions @@ -361,7 +375,7 @@ Contributors - `Martin Hjelmare (@MartinHjelmare) `__ - 1 contribution - `MartinWelsch (@MartinWelsch) `__ - 1 contribution - `MasterTim17 (@MasterTim17) `__ - 1 contribution -- `matikij (@matikij) `__ - 1 contribution +- `matikij (@matikij) `__ - 2 contributions - `Michel Marti (@matoxp) `__ - 4 contributions - `Maurice Schleußinger (@maurice-schleussinger) `__ - 1 contribution - `mbo18 (@mbo18) `__ - 1 contribution @@ -374,6 +388,7 @@ Contributors - `micw (@micw) `__ - 1 contribution - `Pauline Middelink (@middelink) `__ - 2 contributions - `mikosoft83 (@mikosoft83) `__ - 1 contribution +- `Minideezel (@minideezel) `__ - 1 contribution - `Matthew Edwards (@mje-nz) `__ - 1 contribution - `Maarten (@mjkl-gh) `__ - 1 contribution - `mjoshd (@mjoshd) `__ - 2 contributions @@ -382,6 +397,7 @@ Contributors - `mnaz (@mnaz) `__ - 1 contribution - `Michael Nieß (@mniess) `__ - 1 contribution - `Matt N. (@mnoorenberghe) `__ - 1 contribution +- `Moritz Glöckl (@moritzgloeckl) `__ - 1 contribution - `morph027 (@morph027) `__ - 1 contribution - `Matthew Pettitt (@mpettitt) `__ - 1 contribution - `Ryan Matthews (@mrrsm) `__ - 1 contribution @@ -395,14 +411,16 @@ Contributors - `Oskar Napieraj (@napieraj) `__ - 7 contributions - `Bergont Nicolas (@nbergont) `__ - 1 contribution - `Nebula (@nebula-it) `__ - 1 contribution +- `needspeed (@needspeed) `__ - 1 contribution - `nepozs (@nepozs) `__ - 1 contribution - `nickrout (@nickrout) `__ - 1 contribution - `Nick Whyte (@nickw444) `__ - 3 contributions - `nicuh (@nicuh) `__ - 1 contribution -- `nikito7 (@nikito7) `__ - 2 contributions +- `nikito7 (@nikito7) `__ - 3 contributions - `Zvonimir Haramustek (@nitko12) `__ - 1 contribution - `Nikolay Kitanov (@nkitanov) `__ - 1 contribution - `nldroid (@nldroid) `__ - 2 contributions +- `Niccolò Maggioni (@nmaggioni) `__ - 1 contribution - `Alex (@nnmalex) `__ - 1 contribution - `ffabi (@norges) `__ - 2 contributions - `Greg Johnson (@notgwj) `__ - 1 contribution @@ -413,6 +431,7 @@ Contributors - `Omar Ghader (@omarghader) `__ - 1 contribution - `Oncleben31 (@oncleben31) `__ - 1 contribution - `Oscar Bolmsten (@oscar-b) `__ - 4 contributions +- `Otamay (@Otamay) `__ - 2 contributions - `Pack3tL0ss (@Pack3tL0ss) `__ - 1 contribution - `Panuruj Khambanonda (PK) (@panuruj) `__ - 2 contributions - `Paul Deen (@PaulAntonDeen) `__ - 2 contributions @@ -423,7 +442,7 @@ Contributors - `perjury (@perjury) `__ - 1 contribution - `Philip Rosenberg-Watt (@PhilRW) `__ - 1 contribution - `phjr (@phjr) `__ - 2 contributions -- `pieterbrink123 (@pieterbrink123) `__ - 1 contribution +- `pieterbrink123 (@pieterbrink123) `__ - 2 contributions - `pille (@pille) `__ - 2 contributions - `pixiandreas (@pixiandreas) `__ - 1 contribution - `Peter Kuehne (@pkuehne) `__ - 5 contributions @@ -457,19 +476,21 @@ Contributors - `Rob de Jonge (@robdejonge) `__ - 1 contribution - `Robin Smidsrød (@robinsmidsrod) `__ - 2 contributions - `RockBomber (@RockBomber) `__ - 1 contribution +- `RoganDawes (@RoganDawes) `__ - 1 contribution - `Jérôme W. (@RomRider) `__ - 1 contribution - `Robbie Page (@rorpage) `__ - 1 contribution -- `rradar (@rradar) `__ - 7 contributions +- `rradar (@rradar) `__ - 8 contributions - `rspaargaren (@rspaargaren) `__ - 7 contributions - `Rubén G. (@rubengargar) `__ - 1 contribution - `rudgr (@rudgr) `__ - 1 contribution - `ryanalden (@ryanalden) `__ - 2 contributions - `Ryan Nazaretian (@ryannazaretian) `__ - 1 contribution +- `samnewman86 (@samnewman86) `__ - 1 contribution - `Sascha (@Scarbous) `__ - 1 contribution - `Nils Schulte (@Schnilz) `__ - 1 contribution - `Ville Skyttä (@scop) `__ - 5 contributions - `sekkr1 (@sekkr1) `__ - 1 contribution -- `SenexCrenshaw (@SenexCrenshaw) `__ - 14 contributions +- `SenexCrenshaw (@SenexCrenshaw) `__ - 17 contributions - `Sergio (@sergio303) `__ - 2 contributions - `Sergio Mayoral Martínez (@sermayoral) `__ - 3 contributions - `sethcohn (@sethcohn) `__ - 1 contribution @@ -478,18 +499,21 @@ Contributors - `shaeed (@shaeed) `__ - 1 contribution - `shbatm (@shbatm) `__ - 1 contribution - `sherbang (@sherbang) `__ - 4 contributions +- `Shish (@shish) `__ - 2 contributions - `SiliconAvatar (@SiliconAvatar) `__ - 1 contribution - `sillyfrog (@sillyfrog) `__ - 1 contribution -- `Derek Hageman (@Sizurka) `__ - 2 contributions +- `Derek Hageman (@Sizurka) `__ - 3 contributions - `Stephen Tierney (@sjtrny) `__ - 1 contribution - `Niklas Wagner (@Skaronator) `__ - 9 contributions - `spattinson (@spattinson) `__ - 1 contribution +- `spilin (@spilin) `__ - 1 contribution - `square99 (@square99) `__ - 2 contributions - `Paul Krischer (@SqyD) `__ - 1 contribution - `sredfern (@sredfern) `__ - 2 contributions - `srg74 (@srg74) `__ - 1 contribution -- `Samuel Sieb (@ssieb) `__ - 15 contributions -- `stubs12 (@stubs12) `__ - 2 contributions +- `Samuel Sieb (@ssieb) `__ - 18 contributions +- `Steve Baxter (@stevebaxter) `__ - 1 contribution +- `stubs12 (@stubs12) `__ - 3 contributions - `Jordan Vohwinkel (@sublime93) `__ - 1 contribution - `Marcel Feix (@Syndlex) `__ - 2 contributions - `Teemu Mikkonen (@T3m3z) `__ - 2 contributions @@ -516,6 +540,7 @@ Contributors - `Tijs-B (@Tijs-B) `__ - 1 contribution - `Tim P (@timpur) `__ - 2 contributions - `Tim Savage (@timsavage) `__ - 7 contributions +- `Max Efremov (@Tmin10) `__ - 1 contribution - `Philipp Tölke (@toelke) `__ - 1 contribution - `Tom Brien (@TomBrien) `__ - 1 contribution - `TomFahey (@TomFahey) `__ - 2 contributions @@ -531,6 +556,7 @@ Contributors - `tubalainen (@tubalainen) `__ - 3 contributions - `Tuckie (@Tuckie) `__ - 1 contribution - `Alexey Vlasov (@turbulator) `__ - 1 contribution +- `Seppel Hardt (@tuxBurner) `__ - 1 contribution - `tyomikh (@tyomikh) `__ - 1 contribution - `ukewea (@ukewea) `__ - 1 contribution - `Vc (@Valcob) `__ - 4 contributions @@ -541,10 +567,14 @@ Contributors - `vxider (@Vxider) `__ - 7 contributions - `warpzone (@warpzone) `__ - 1 contribution - `Wauter (@Wauter) `__ - 3 contributions +- `webeling67 (@webeling67) `__ - 1 contribution +- `WeekendWarrior1 (@WeekendWarrior1) `__ - 1 contribution - `Ian Wells (@wellsi) `__ - 1 contribution - `Werner Beroux (@wernight) `__ - 1 contribution +- `wifwucite (@wifwucite) `__ - 1 contribution - `Wilmar den Ouden (@wilmardo) `__ - 1 contribution - `Emil Hesslow (@WizKid) `__ - 1 contribution +- `WJCarpenter (@wjcarpenter) `__ - 1 contribution - `Artur 'Wodor' Wielogorski (@wodor) `__ - 1 contribution - `Rick van Hattem (@WoLpH) `__ - 2 contributions - `wutr (@wutr) `__ - 1 contribution @@ -559,4 +589,4 @@ Contributors - `San (@zhujunsan) `__ - 2 contributions - `Christian Zufferey (@zuzu59) `__ - 1 contribution -*This page was last updated February 20, 2021.* +*This page was last updated March 22, 2021.* From 8edc1bf2854de719b9a37bbaa2511b0a8af7ad69 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Mon, 3 May 2021 23:10:47 +1200 Subject: [PATCH 04/10] Merge braanch 'current' into branch 'beta' --- CODE_OF_CONDUCT.md | 22 ++++---- _static/custom.css | 9 ++-- _templates/layout.html | 11 ++-- components/canbus.rst | 10 ++-- components/display/ili9341.rst | 2 +- components/display/index.rst | 4 +- components/display/ssd1325.rst | 2 +- components/display/ssd1327.rst | 2 +- components/display/st7789v.rst | 2 +- components/i2c.rst | 2 +- components/spi.rst | 6 +-- guides/configuration-types.rst | 12 ++--- guides/diy.rst | 1 + guides/supporters.rst | 94 ++-------------------------------- index.rst | 1 - misc/privacy.rst | 2 +- 16 files changed, 51 insertions(+), 131 deletions(-) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c5be22727..b91a3b4f8 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -8,19 +8,19 @@ In the interest of fostering an open and welcoming environment, we as contributo Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Our Responsibilities @@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe ## Enforcement -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at contact@otto-winter.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at esphome@nabucasa.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. diff --git a/_static/custom.css b/_static/custom.css index 6dad41e47..70273f248 100644 --- a/_static/custom.css +++ b/_static/custom.css @@ -62,15 +62,18 @@ table.docutils { z-index: 9999; display: none } -#upgrade-footer-changelog { +.footer-button-container { + margin: 0 60px 0 10px; + float: right; +} +.footer-button { background-color: #b3b3b3; color: #4e4e4e; display: inline-block; border-radius: 5px; padding: 0 20px; + margin-left: 10px; cursor: pointer; - float: right; - margin: 0 60px 0 10px; text-decoration: none; } .not-hidden { diff --git a/_templates/layout.html b/_templates/layout.html index 27e04b79a..c8b9d9a29 100644 --- a/_templates/layout.html +++ b/_templates/layout.html @@ -30,15 +30,20 @@ {% block footer %} diff --git a/components/canbus.rst b/components/canbus.rst index 86ac347dd..440cd501b 100644 --- a/components/canbus.rst +++ b/components/canbus.rst @@ -92,7 +92,7 @@ This automation will be triggered when a can frame is received. A variable ``x` .. note:: - Messeges this node sends to te same ID will not show up as reveived messages. + Messages this node sends to the same ID will not show up as received messages. .. code-block:: yaml @@ -144,10 +144,10 @@ Configuration variables: MCP2515 Component ----------------- -The MCP2515 is a spi device and therfore you must first add the configuration for the spi bus to your file. +The MCP2515 is a spi device and therefore you must first add the configuration for the spi bus to your file. You need to have an :ref:`SPI bus ` in your configuration with both the **mosi_pin** and **miso_pin** set. -For wireing up the MSP2515 please refer to the section below. +For wiring up the MSP2515 please refer to the section below. Configuration variables: ************************ @@ -157,7 +157,7 @@ Configuration variables: Sometimes also called ``SS``. - **clock** (*Optional*): One of ``8MHZ``, ``16MHZ`` or ``20MHZ``. Clock crystal used on the MCP2515 device. Defaults to ``8MHZ``. -- **mode** (*Optional*): Operation mode. Default ot ``NORMAL`` +- **mode** (*Optional*): Operation mode. Default to ``NORMAL`` - NORMAL: Normal operation - LOOPBACK: Loopback mode can be used to just test you spi connections to the device @@ -205,7 +205,7 @@ Standard IDs and Extended IDs can coexist on the same segment. .. note:: - It is important to know that for example Standard 0x123 and Extended 0x123 are different addesses. + It is important to know that for example Standard 0x123 and Extended 0x123 are different addresses. This example shows how the different ID types are used in the configuration for transmission and receiving. For the IDs decimal or hexadecimal notation is possible: 0x000 - 0x7ff / 0-2047 for Standard IDs only. diff --git a/components/display/ili9341.rst b/components/display/ili9341.rst index 612a89b91..7ee2ab7c0 100644 --- a/components/display/ili9341.rst +++ b/components/display/ili9341.rst @@ -65,7 +65,7 @@ Configuration examples To utilize the color capabilities of this display module, you'll likely want to add a ``color:`` section to your YAML configuration; please see :ref:`color ` for more detail on this configuration section. -To use colors in your lambada: +To use colors in your lambda: .. code-block:: yaml diff --git a/components/display/index.rst b/components/display/index.rst index 782de3f4e..a8aa8fdb1 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -374,10 +374,10 @@ Configuration variables: - ``BINARY``: Two colors, suitable for 1 color displays or 2 color image in color displays. Uses 1 bit per pixel, 8 pixels per byte. - - ``GREYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. + - ``GRAYSCALE``: Full scale grey. Uses 8 bits per pixel, 1 pixel per byte. - ``RGB24``: Full RGB color stored. Uses 3 bytes per pixel. -- **dither** (*Optional*): Specifies which dither method used to process the image, only used in GREYSCALE and BINARY type image. Defaults to ``NONE``. You can read more about it `here `__ and `here `__. +- **dither** (*Optional*): Specifies which dither method used to process the image, only used in GRAYSCALE and BINARY type image. Defaults to ``NONE``. You can read more about it `here `__ and `here `__. - ``NONE``: Every pixel convert to its nearest color. - ``FLOYDSTEINBERG``: Uses Floyd-Steinberg dither to approximate the original image luminosity levels. diff --git a/components/display/ssd1325.rst b/components/display/ssd1325.rst index 45740b025..8af7569c4 100644 --- a/components/display/ssd1325.rst +++ b/components/display/ssd1325.rst @@ -71,7 +71,7 @@ To utilize the grayscale capabilities of this display module, add a ``color:`` s please see :ref:`color ` for more details. As this is a grayscale display, it only uses the white color element as shown below. -To use grayscale in your lambada: +To use grayscale in your lambda: .. code-block:: yaml diff --git a/components/display/ssd1327.rst b/components/display/ssd1327.rst index 3ba15b3f8..e8a01aebd 100644 --- a/components/display/ssd1327.rst +++ b/components/display/ssd1327.rst @@ -128,7 +128,7 @@ To utilize the grayscale capabilities of this display module, add a ``color:`` s please see :ref:`color ` for more details. As this is a grayscale display, it only uses the white color element as shown below. -To use grayscale in your lambada: +To use grayscale in your lambda: .. code-block:: yaml diff --git a/components/display/st7789v.rst b/components/display/st7789v.rst index f6352148f..89606c15b 100644 --- a/components/display/st7789v.rst +++ b/components/display/st7789v.rst @@ -70,7 +70,7 @@ As of version 1.15, ESPHome supports color displays. To utilize the color capabi module, you'll likely want to add a ``color:`` section to your YAML configuration; please see :ref:`color ` for more detail on this configuration section. -To use colors in your lambada: +To use colors in your lambda: .. code-block:: yaml diff --git a/components/i2c.rst b/components/i2c.rst index 3fa859ad5..57043320f 100644 --- a/components/i2c.rst +++ b/components/i2c.rst @@ -12,7 +12,7 @@ This component sets up the I²C bus for your ESP32 or ESP8266. In order for thes to work correctly, you need to define the I²C bus in your configuration. Please note the ESP will enable its internal 10kΩ pullup resistors for these pins, so you usually don't need to put on external ones. You can use multiple devices on one I²C bus as each device is given a -unique address for communicating between between it and the ESP. You can do this by hopping +unique address for communicating between it and the ESP. You can do this by hopping wires from the two lines (SDA and SCL) from each device board to the next device board or by connecting the wires from each device back to the two I²C pins on the ESP. diff --git a/components/spi.rst b/components/spi.rst index 2ca47e4ed..5839b0547 100644 --- a/components/spi.rst +++ b/components/spi.rst @@ -31,9 +31,9 @@ rarely be necessary, as the SPI bus can be shared by the devices). # Example configuration entry spi: - clk_pin: GPIO21 - mosi_pin: GPIO22 - miso_pin: GPIO23 + clk_pin: GPIO14 + mosi_pin: GPIO13 + miso_pin: GPIO12 Configuration variables: ------------------------ diff --git a/guides/configuration-types.rst b/guides/configuration-types.rst index 4c4f0e21c..87fde6d27 100644 --- a/guides/configuration-types.rst +++ b/guides/configuration-types.rst @@ -13,15 +13,15 @@ page describes them. ID -- -Quite an important aspect of ESPHome are “ids”. They are used to +Quite an important aspect of ESPHome are “IDs”. They are used to connect components from different domains. For example, you define an -output component together with an id and then later specify that same id +output component together with an ID and then later specify that same ID in the light component. IDs should always be unique within a configuration and ESPHome will warn you if you try to use the same ID twice. Because ESPHome converts your configuration into C++ code and the -ids are in reality just C++ variable names, they must also adhere to +IDs are in reality just C++ variable names, they must also adhere to C++’s naming conventions. `C++ Variable names `__ … @@ -205,7 +205,7 @@ of nodes inherit: To hide these base files from the dashboard, you can - - Place them in a subdirectory (dashboard only shows files in top-level dir) + - Place them in a subdirectory (dashboard only shows files in top-level directory) - Prepend a dot to the filename, like ``.base.yaml`` .. _command-line-substitutions: @@ -271,8 +271,8 @@ config in the main yaml file. All definitions from packages will be merged with config in non-destructive way so you could always override some bits and pieces of package configuration. -Consider the following example where author put common pieces of configuration like WiFi, -I²C into base files and extends it with some devices specific configurations in the main config. +Consider the following example where the author put common pieces of configuration like WiFi and +I²C into base files and extends it with some device specific configurations in the main config. Note how the piece of configuration describing ``api`` component in ``device_base.yaml`` gets merged with the services definitions from main config file. diff --git a/guides/diy.rst b/guides/diy.rst index 47fb07b9e..d64c5520c 100644 --- a/guides/diy.rst +++ b/guides/diy.rst @@ -47,6 +47,7 @@ Blog Posts & Videos - `4$ Xiaomi mijia thermometer LYWSD03MMC + ESP32 + ESPhome `__ by `Omar GHADER `__ - `Baseboard (Line Voltage) Thermostat from Smart Switch `__ by :ghuser:`rjmurph2241` - `Office Doorbell `__ by :ghuser:`shish` +- `Display TM1637 with ESPHome and MQTT showing Youtube subscribers count and other info `__ by :ghuser:`electrofun-smart` Custom Components & Code ------------------------ diff --git a/guides/supporters.rst b/guides/supporters.rst index 690ac643f..732a4d187 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -1,100 +1,13 @@ -Supporters & Contributors -========================= - -**Hi! I'm Otto Winter, the author and main developer of ESPHome.** - -Developing ESPHome takes a lot of time. There's a lot of things that go -into developing and maintaining an open-source project: from developing new features, fixing bugs, -answering questions to maintaining servers, preparing releases and moderating discussions. -And of course all of the hardware for new features has to be bought too. I'm a student -so I really appreciate donations :) - -**You can support ESPHome's development** by becoming a Patron or a one-time contribution -with PayPal. - -.. raw:: html - - -
-
-

Support Regularly 💫

- Become A Patron -

- Become a patron for this project. -

-
-
-

One-Time Donation

- Donate with PayPal -

- Make a one-time donation via PayPal. -

-
-
- -Patrons -------- - -People that support ESPHome's development over `Patreon `__. -You guys are awesome! - -- Alexander Leisentritt -- Anders -- Andrea Donno -- Andrew Tierney -- Book of the Future -- Christer Frostmo -- Christoph -- Clayton -- Daan Damhuis -- Dattas Moonchaser -- David Padbury -- Dennis Münchgesang -- Dmitriy Khazansky -- DrZzs -- fabi -- Franck Nijhof -- Gaiar Baimuratov -- Intermittent Technology -- Jung Ervin -- Kenvase -- Lazar Obradovic -- Magnus Overli -- minsuke -- Nick Rout -- Nigel Michki -- Paul Krischer -- Paul Morley -- Paweł Kawa -- Philippe Penochet -- Radu Tizu -- Roman Priesol -- LMR -- Ryan Bahm -- Ryan Nazaretian -- Sam Absalom -- Sasha Mikhnov -- Saulo Onze -- Starwolf73 -- Thibault Maekelbergh -- Thomas Hermine -- Vincèn PUJOL -- Wojciech Bederski -- Yonatan Adest -- Zoltán Jáki - - Contributors ------------- +============ ESPHome is an open-source project, and everybody can contribute to it to make this project awesome. This list contains a list of people who have submitted patches that have made it into the `ESPHome organization's `__ repositories. -Author & Main Developer -*********************** +ESPHome is lead by `Jesse Hills (@jesserockz) `__, who is funded to work on ESPHome full-time by `Nabu Casa `__. To help fund development of ESPHome, subscribe to `Home Assistant Cloud by Nabu Casa `__. -- `Otto Winter (@OttoWinter) `__ - 2361 contributions +ESPHome was originally founded by `Otto Winter (@OttoWinter) `__. Contributors ************ @@ -300,7 +213,6 @@ Contributors - `Joshua Dadswell (@jdads1) `__ - 1 contribution - `jeff-h (@jeff-h) `__ - 2 contributions - `Jeff Rescignano (@JeffResc) `__ - 11 contributions -- `Jesse Hills (@jesserockz) `__ - 133 contributions - `Jérémy JOURDIN (@JJK801) `__ - 1 contribution - `Jonathan Jefferies (@jjok) `__ - 1 contribution - `Justin Maxwell (@jkmaxwell) `__ - 1 contribution diff --git a/index.rst b/index.rst index 0338b36d5..8f8ede82d 100644 --- a/index.rst +++ b/index.rst @@ -19,7 +19,6 @@ ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configu GitHub Discord Twitter - Donate .. _guides: diff --git a/misc/privacy.rst b/misc/privacy.rst index 976fd9a4c..73b4180f6 100644 --- a/misc/privacy.rst +++ b/misc/privacy.rst @@ -126,4 +126,4 @@ when they are posted on this page. Contact Us ---------- -If you have any questions about this Privacy Policy, please contact us by email: contact@otto-winter.com +If you have any questions about this Privacy Policy, please contact us by email: esphome@nabucasa.com From ba35e12e65347925d28f9214213ddb124a76b1d3 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 4 May 2021 09:21:14 +1200 Subject: [PATCH 05/10] Bump version to v1.17.0 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 36c0c07d6..28a30553d 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.17.0b1 +PROJECT_NUMBER = 1.17.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index e3ce13443..44f23078a 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_PATH = ../esphome -ESPHOME_REF = v1.17.0b1 +ESPHOME_REF = v1.17.0 .PHONY: html html-strict cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png diff --git a/_static/version b/_static/version index c4c22c58f..73d74673c 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.17.0b1 \ No newline at end of file +1.17.0 \ No newline at end of file diff --git a/conf.py b/conf.py index 357202291..b0c7c64b8 100644 --- a/conf.py +++ b/conf.py @@ -69,7 +69,7 @@ author = "Otto Winter" # The short X.Y version. version = "1.17" # The full version, including alpha/beta/rc tags. -release = "1.17.0b1" +release = "1.17.0" # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From ad46e2985bcddab34b0d73a634cd848910a3f771 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 4 May 2021 09:31:29 +1200 Subject: [PATCH 06/10] Update changelog for 1.17.0 --- changelog/v1.17.0.rst | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/changelog/v1.17.0.rst b/changelog/v1.17.0.rst index 68f009bed..adcb076dc 100644 --- a/changelog/v1.17.0.rst +++ b/changelog/v1.17.0.rst @@ -1,9 +1,10 @@ -Changelog - Version 1.17.0 - TBD 2021 +Changelog - Version 1.17.0 - 4th May 2021 =============================================== .. seo:: :description: Changelog for ESPHome version 1.17.0. :image: /_static/changelog-1.17.0.png + :author: ESPHome :author_twitter: @esphome_ .. imgtable:: @@ -17,7 +18,19 @@ Changelog - Version 1.17.0 - TBD 2021 Addressable Light Display, components/display/addressable_light, addressable_light.jpg Pulse Meter, components/sensor/pulse_meter, pulse.svg -RELEASE NOTES TO GO HERE + +So, ESPHome was acquired by Nabu Casa. That was big and unexpected, but awesome news for the project as now I have been hired +by Nabu Casa full-time to work on ESPHome. I know I said this is the last release, but hopefully now that it is literally +my job, the releases will move to a (yet to be defined) schedule. + +A lot of fixes and updates to exisitng components in this release, and a couple of new integrations and features too. Check them out +if you have the hardware but could not use it before. + +Hopefully I can get some help and pointers from the Nabu Casa team to tidy up these release notes and make them all fancy and +actually something to look forward to reading. + +Jesse + New Features ------------ @@ -174,3 +187,13 @@ All changes - docs: SenseAir: background calibration & ABC commands :docspr:`1066` by :ghuser:`nmaggioni` - esphome: Add trigger for http actions to receive the status code :esphomepr:`1599` by :ghuser:`jesserockz` (new-feature) - docs: Add docs for http_request on_response trigger :docspr:`1049` by :ghuser:`jesserockz` +- docs: Fix typo lambada -> lambda in multiple display compoments :docspr:`1071` by :ghuser:`rheinz` +- docs: Consistent spelling of "ID" :docspr:`1068` by :ghuser:`spacegaier` +- docs: Change GREYSCALE to GRAYSCALE :docspr:`1073` by :ghuser:`adrienbrault` +- docs: SPI: fix Example :docspr:`1076` by :ghuser:`ferbar` +- docs: Update diy.rst :docspr:`1106` by :ghuser:`electrofun-smart` +- docs: Make changelog banner dismissable :docspr:`1113` by :ghuser:`manutenfruits` +- docs: Correct typo: "between between" -> "between" :docspr:`1109` by :ghuser:`janosrusiczki` +- docs: Update canbus.rst :docspr:`1115` by :ghuser:`meijerwynand` +- docs: Update diy.rst :docspr:`1114` by :ghuser:`murilobaliego` +- docs: Update email addresses :docspr:`1122` by :ghuser:`jesserockz` From 3ac9750af220244e469b72a80af4744b4aae80a4 Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 4 May 2021 09:31:49 +1200 Subject: [PATCH 07/10] Update supporters for 1.17.0 --- guides/supporters.rst | 1000 +++++++++++++++++++++-------------------- 1 file changed, 512 insertions(+), 488 deletions(-) diff --git a/guides/supporters.rst b/guides/supporters.rst index 732a4d187..2bba79b20 100644 --- a/guides/supporters.rst +++ b/guides/supporters.rst @@ -5,7 +5,9 @@ ESPHome is an open-source project, and everybody can contribute to it to make th project awesome. This list contains a list of people who have submitted patches that have made it into the `ESPHome organization's `__ repositories. -ESPHome is lead by `Jesse Hills (@jesserockz) `__, who is funded to work on ESPHome full-time by `Nabu Casa `__. To help fund development of ESPHome, subscribe to `Home Assistant Cloud by Nabu Casa `__. +ESPHome is lead by `Jesse Hills (@jesserockz) `__, +who is funded to work on ESPHome full-time by `Nabu Casa `__. +To help fund development of ESPHome, subscribe to `Home Assistant Cloud by Nabu Casa `__. ESPHome was originally founded by `Otto Winter (@OttoWinter) `__. @@ -14,491 +16,513 @@ Contributors (in alphabetical order) -- `0hax (@0hax) `__ - 4 contributions -- `2016for (@2016for) `__ - 1 contribution -- `Pavel Golovin (@31337Ghost) `__ - 2 contributions -- `David Martin (@3ative) `__ - 1 contribution -- `Aalian Khan (@AalianKhan) `__ - 5 contributions -- `Abel Matser (@abelmatser) `__ - 1 contribution -- `Abílio Costa (@abmantis) `__ - 3 contributions -- `acshef (@acshef) `__ - 1 contribution -- `adamgreg (@adamgreg) `__ - 1 contribution -- `Attila Darazs (@adarazs) `__ - 2 contributions -- `adezerega (@adezerega) `__ - 1 contribution -- `Andrea Donno (@adonno) `__ - 1 contribution -- `Johan Bloemberg (@aequitas) `__ - 6 contributions -- `Anders (@ahd71) `__ - 1 contribution -- `Alexander Pohl (@ahpohl) `__ - 4 contributions -- `Airy André (@airy10) `__ - 1 contribution -- `akoivist (@akoivist) `__ - 1 contribution -- `Andrej Komelj (@akomelj) `__ - 3 contributions -- `Alone (@al-one) `__ - 2 contributions -- `Alex (@alex-richards) `__ - 1 contribution -- `Alexander Leisentritt (@Alex9779) `__ - 10 contributions -- `Alexandre Danault (@AlexDanault) `__ - 1 contribution -- `Alex Mekkering (@AlexMekkering) `__ - 3 contributions -- `Alex (@alexyao2015) `__ - 5 contributions -- `Amish Vishwakarma (@amishv) `__ - 3 contributions -- `András Bíró (@andrasbiro) `__ - 1 contribution -- `Andreas Hergert (@andreashergert1984) `__ - 2 contributions -- `Andrzej (@andriej) `__ - 1 contribution -- `Andreas (@anduchs) `__ - 1 contribution -- `anekinloewe (@anekinloewe) `__ - 1 contribution -- `ankycooper (@ankycooper) `__ - 1 contribution -- `Nikolay Vasilchuk (@Anonym-tsk) `__ - 35 contributions -- `Adriaan Peeters (@apeeters) `__ - 4 contributions -- `Darius Ratkevičius (@aphex008) `__ - 1 contribution -- `Ash McKenzie (@ashmckenzie) `__ - 2 contributions -- `Pavel Pletenev (@ASMfreaK) `__ - 1 contribution -- `Achilleas Pipinellis (@axilleas) `__ - 1 contribution -- `Kamil Trzciński (@ayufan) `__ - 7 contributions -- `Nicholas Peters (@Azimath) `__ - 2 contributions -- `Florian Mösch (@badbadc0ffee) `__ - 10 contributions -- `balk77 (@balk77) `__ - 2 contributions -- `Paulus Schoutsen (@balloob) `__ - 41 contributions -- `Andrew Zaborowski (@balrog-kun) `__ - 9 contributions -- `Rutger Nijhuis (@BananaPukeh) `__ - 1 contribution -- `J. Nick Koston (@bdraco) `__ - 2 contributions -- `Ben Suffolk (@bensuffolk) `__ - 1 contribution -- `Bierchermuesli (@Bierchermuesli) `__ - 1 contribution -- `Jim Ekman (@blejdfist) `__ - 6 contributions -- `Mauricio Bonani (@bonanitech) `__ - 1 contribution -- `boradwell (@boradwell) `__ - 1 contribution -- `Patrik Hermansson (@bphermansson) `__ - 1 contribution -- `Bram Kragten (@bramkragten) `__ - 2 contributions -- `Brad Davidson (@brandond) `__ - 19 contributions -- `Brian Hanifin (@brianhanifin) `__ - 1 contribution -- `brianrjones69 (@brianrjones69) `__ - 1 contribution -- `buxtronix (@buxtronix) `__ - 7 contributions -- `bvansambeek (@bvansambeek) `__ - 1 contribution -- `bwente (@bwente) `__ - 1 contribution -- `Carlos Gustavo Sarmiento (@carlos-sarmiento) `__ - 4 contributions -- `Carlos Garcia Saura (@CarlosGS) `__ - 1 contribution -- `cbialobos (@cbialobos) `__ - 1 contribution -- `Marco (@cdrfun) `__ - 1 contribution -- `chris-jennings (@chris-jennings) `__ - 1 contribution -- `John (@CircuitSetup) `__ - 5 contributions -- `Chris Debenham (@cjd) `__ - 1 contribution -- `Cody James (@codyjamestechnical) `__ - 1 contribution -- `James Crook (@cooljimy84) `__ - 1 contribution -- `Corban Mailloux (@corbanmailloux) `__ - 5 contributions -- `Dmitry Berezovsky (@corvis) `__ - 2 contributions -- `Connor Prussin (@cprussin) `__ - 2 contributions -- `cretep (@cretep) `__ - 1 contribution -- `cryptelli (@cryptelli) `__ - 3 contributions -- `Chris Talkington (@ctalkington) `__ - 1 contribution -- `Alex Solomaha (@CyanoFresh) `__ - 1 contribution -- `Luar Roji (@cyberplant) `__ - 2 contributions -- `Dale Higgs (@dale3h) `__ - 1 contribution -- `damanti-me (@damanti-me) `__ - 2 contributions -- `Daniel Bjørnbakk (@danibjor) `__ - 1 contribution -- `Daniel Kucera (@danielkucera) `__ - 1 contribution -- `Daniel Schramm (@danielschramm) `__ - 2 contributions -- `Chris (@darthsebulba04) `__ - 1 contribution -- `DAVe3283 (@DAVe3283) `__ - 3 contributions -- `Dave Richer (@davericher) `__ - 3 contributions -- `Dave T (@davet2001) `__ - 1 contribution -- `Dave Wongillies (@davewongillies) `__ - 1 contribution -- `David De Sloovere (@DavidDeSloovere) `__ - 3 contributions -- `David Beitey (@davidjb) `__ - 1 contribution -- `David Zovko (@davidzovko) `__ - 1 contribution -- `dckiller51 (@dckiller51) `__ - 1 contribution -- `Debashish Sahu (@debsahu) `__ - 1 contribution -- `declanshanaghy (@declanshanaghy) `__ - 3 contributions -- `deftdawg (@deftdawg) `__ - 1 contribution -- `Christiaan Blom (@Deinara) `__ - 1 contribution -- `Rsan (@deltazerorsan) `__ - 1 contribution -- `Mickaël Le Baillif (@demikl) `__ - 3 contributions -- `dependabot[bot] (@dependabot[bot]) `__ - 53 contributions -- `Destix (@Destix) `__ - 1 contribution -- `Alain Turbide (@Dilbert66) `__ - 2 contributions -- `Mark (@Diramu) `__ - 1 contribution -- `Dirk Heinke (@DirkHeinke) `__ - 1 contribution -- `Dirk Jahnke (@dirkj) `__ - 1 contribution -- `djtef (@djtef) `__ - 1 contribution -- `Marcos Pérez Ferro (@djwmarcx) `__ - 2 contributions -- `Dan Mannock (@dmannock) `__ - 1 contribution -- `dmkif (@dmkif) `__ - 1 contribution -- `DrZoid (@docteurzoidberg) `__ - 1 contribution -- `Jiang Sheng (@doskoi) `__ - 1 contribution -- `Robert Schütz (@dotlambda) `__ - 3 contributions -- `Daniel Hyles (@DotNetDann) `__ - 4 contributions -- `dr-oblivium (@dr-oblivium) `__ - 2 contributions -- `Drew Perttula (@drewp) `__ - 2 contributions -- `DrRob (@DrRob) `__ - 1 contribution -- `dubit0 (@dubit0) `__ - 1 contribution -- `Sergey V. DUDANOV (@dudanov) `__ - 1 contribution -- `Dimitris Zervas (@dzervas) `__ - 2 contributions -- `dziobson (@dziobson) `__ - 1 contribution -- `Dan Jackson (@e28eta) `__ - 1 contribution -- `Ermanno Baschiera (@ebaschiera) `__ - 1 contribution -- `Robert Resch (@edenhaus) `__ - 1 contribution -- `Niclas Larsson (@edge90) `__ - 1 contribution -- `Eenoo (@Eenoo) `__ - 1 contribution -- `Erwin Kooi (@egeltje) `__ - 2 contributions -- `Eike (@ei-ke) `__ - 1 contribution -- `Elkropac (@Elkropac) `__ - 2 contributions -- `EmbeddedDevver (@EmbeddedDevver) `__ - 1 contribution -- `EmmanuelLM (@EmmanuelLM) `__ - 1 contribution -- `Emory Dunn (@emorydunn) `__ - 1 contribution -- `Eric Muehlstein (@emuehlstein) `__ - 1 contribution -- `Anders Persson (@emwap) `__ - 4 contributions -- `Nico Weichbrodt (@envy) `__ - 1 contribution -- `Evan Petousis (@epetousis) `__ - 1 contribution -- `Wilhelm Erasmus (@erasmuswill) `__ - 1 contribution -- `erazor666 (@erazor666) `__ - 1 contribution -- `Eric Hiller (@erichiller) `__ - 1 contribution -- `Ernst Klamer (@Ernst79) `__ - 1 contribution -- `escoand (@escoand) `__ - 7 contributions -- `esphomebot (@esphomebot) `__ - 16 contributions -- `Evan Coleman (@evandcoleman) `__ - 3 contributions -- `Malte Franken (@exxamalte) `__ - 2 contributions -- `Fabian Affolter (@fabaff) `__ - 29 contributions -- `C W (@fake-name) `__ - 2 contributions -- `Christian Ferbar (@ferbar) `__ - 3 contributions -- `fkirill (@fkirill) `__ - 1 contribution -- `foxsam21 (@foxsam21) `__ - 2 contributions -- `Fractal147 (@Fractal147) `__ - 1 contribution -- `Francis-labo (@Francis-labo) `__ - 1 contribution -- `Francisk0 (@Francisk0) `__ - 1 contribution -- `Frank Bakker (@FrankBakkerNl) `__ - 5 contributions -- `Frankster-NL (@Frankster-NL) `__ - 1 contribution -- `Fredrik Erlandsson (@fredrike) `__ - 2 contributions -- `Evgeny (@freekode) `__ - 8 contributions -- `Brett McKenzie (@freerangeeggs) `__ - 1 contribution -- `Fritz Mueller (@fritzm) `__ - 1 contribution -- `Marc Egli (@frog32) `__ - 1 contribution -- `mr G1K (@G1K) `__ - 2 contributions -- `Gabe Cook (@gabe565) `__ - 2 contributions -- `galagaking (@galagaking) `__ - 1 contribution -- `Geoff Davis (@geoffdavis) `__ - 2 contributions -- `Gerard (@gerard33) `__ - 2 contributions -- `Giovanni (@Gio-dot) `__ - 2 contributions -- `gitolicious (@gitolicious) `__ - 16 contributions -- `The Gitter Badger (@gitter-badger) `__ - 1 contribution -- `Guillermo Ruffino (@glmnet) `__ - 240 contributions -- `Giorgos Logiotatidis (@glogiotatidis) `__ - 1 contribution -- `Germain Masse (@gmasse) `__ - 2 contributions -- `Jelle Raaijmakers (@GMTA) `__ - 1 contribution -- `gordon-zhao (@gordon-zhao) `__ - 1 contribution -- `Antoine GRÉA (@grea09) `__ - 4 contributions -- `Guillaume DELVIT (@guiguid) `__ - 1 contribution -- `guptamp (@guptamp) `__ - 1 contribution -- `Guyohms (@Guyohms) `__ - 1 contribution -- `h0-- (@h0--) `__ - 1 contribution -- `Boris Hajduk (@hajdbo) `__ - 4 contributions -- `Gavin Mogan (@halkeye) `__ - 1 contribution -- `Charles Thompson (@haryadoon) `__ - 1 contribution -- `hcoohb (@hcoohb) `__ - 1 contribution -- `Héctor Giménez (@hectorgimenez) `__ - 2 contributions -- `Jimmy Hedman (@HeMan) `__ - 5 contributions -- `HepoH3 (@HepoH3) `__ - 1 contribution -- `Hamish Moffatt (@hmoffatt) `__ - 1 contribution -- `MoA (@honomoa) `__ - 2 contributions -- `Ian Leeder (@ianleeder) `__ - 3 contributions -- `icarome (@icarome) `__ - 1 contribution -- `igg (@igg) `__ - 5 contributions -- `ikatkov (@ikatkov) `__ - 1 contribution -- `Michael (@imeekle) `__ - 1 contribution -- `Lorenzo Ortiz (@Infinitte) `__ - 1 contribution -- `Ivan Shvedunov (@ivan4th) `__ - 1 contribution -- `Ivan Kravets (@ivankravets) `__ - 1 contribution -- `Ivo-tje (@Ivo-tje) `__ - 1 contribution -- `Jakob Reiter (@jakommo) `__ - 1 contribution -- `James Gao (@jamesgao) `__ - 1 contribution -- `Jan Pieper (@janpieper) `__ - 2 contributions -- `Jason-nz (@Jason-nz) `__ - 1 contribution -- `Jason Hines (@jasonehines) `__ - 1 contribution -- `JbLb (@jblb) `__ - 1 contribution -- `Joshua Dadswell (@jdads1) `__ - 1 contribution -- `jeff-h (@jeff-h) `__ - 2 contributions -- `Jeff Rescignano (@JeffResc) `__ - 11 contributions -- `Jérémy JOURDIN (@JJK801) `__ - 1 contribution -- `Jonathan Jefferies (@jjok) `__ - 1 contribution -- `Justin Maxwell (@jkmaxwell) `__ - 1 contribution -- `Jeppe Ladefoged (@jladefoged) `__ - 2 contributions -- `Jonathan Martens (@jmartens) `__ - 1 contribution -- `Johan van der Kuijl (@johanvanderkuijl) `__ - 1 contribution -- `Johboh (@Johboh) `__ - 2 contributions -- `John Erik Halse (@johnerikhalse) `__ - 1 contribution -- `Jonathan Adams (@jonathanadams) `__ - 2 contributions -- `Jonathan Treffler (@JonathanTreffler) `__ - 1 contribution -- `JonnyaiR (@jonnyair) `__ - 2 contributions -- `Joppy (@JoppyFurr) `__ - 2 contributions -- `junnikokuki (@junnikokuki) `__ - 1 contribution -- `Justahobby01 (@Justahobby01) `__ - 1 contribution -- `Mike Ryan (@justfalter) `__ - 1 contribution -- `Justin Gerhardt (@justin-gerhardt) `__ - 1 contribution -- `Justyn Shull (@justyns) `__ - 1 contribution -- `Jasper van der Neut - Stulen (@jvanderneutstulen) `__ - 2 contributions -- `João Vitor M. Roma (@jvmr1) `__ - 1 contribution -- `Jack Wozny (@jwozny) `__ - 1 contribution -- `Kris (@K-r-i-s-t-i-a-n) `__ - 2 contributions -- `Harald Nagel (@k7hpn) `__ - 2 contributions -- `kalebzettl (@kalebzettl) `__ - 1 contribution -- `Krasimir Nedelchev (@kaykayehnn) `__ - 1 contribution -- `kbouchard111 (@kbouchard111) `__ - 1 contribution -- `Keith Burzinski (@kbx81) `__ - 27 contributions -- `Robert Kiss (@kepten) `__ - 2 contributions -- `Kevin O'Rourke (@kevinior) `__ - 1 contribution -- `kimonm (@kimonm) `__ - 1 contribution -- `Kurt Kellner (@kkellner) `__ - 1 contribution -- `Klaas Schoute (@klaasnicolaas) `__ - 1 contribution -- `Klarstein (@Klarstein) `__ - 3 contributions -- `Kevin Lewis (@kll) `__ - 1 contribution -- `korellas (@korellas) `__ - 1 contribution -- `Kevin Pelzel (@kpelzel) `__ - 1 contribution -- `Karl Q. (@kquinsland) `__ - 1 contribution -- `krahabb (@krahabb) `__ - 2 contributions -- `krikk (@krikk) `__ - 1 contribution -- `KristopherMackowiak (@KristopherMackowiak) `__ - 1 contribution -- `kroimon (@kroimon) `__ - 2 contributions -- `Kendell R (@KTibow) `__ - 2 contributions -- `kvvoff (@kvvoff) `__ - 1 contribution -- `Ken Davidson (@kwdavidson) `__ - 1 contribution -- `Kyle Manna (@kylemanna) `__ - 1 contribution -- `la7dja (@la7dja) `__ - 1 contribution -- `Stefan Lässer (@Laess3r) `__ - 1 contribution -- `Steffen Weinreich (@lairsdragon) `__ - 1 contribution -- `Fredrik Lindqvist (@Landrash) `__ - 1 contribution -- `lein1013 (@lein1013) `__ - 1 contribution -- `Riku Lindblad (@lepinkainen) `__ - 1 contribution -- `Lazar Obradovic (@lobradov) `__ - 4 contributions -- `Joakim Sørensen (@ludeeus) `__ - 12 contributions -- `Lukas Klass (@LukasK13) `__ - 1 contribution -- `lukaszrud (@lukaszrud) `__ - 1 contribution -- `Lumpusz (@Lumpusz) `__ - 2 contributions -- `Luke Fitzgerald (@lwfitzgerald) `__ - 1 contribution -- `Lewis Juggins (@lwis) `__ - 1 contribution -- `Michael Klamminger (@m1ch) `__ - 1 contribution -- `M95D (@M95D) `__ - 1 contribution -- `Marc-Antoine Courteau (@macourteau) `__ - 1 contribution -- `Massimiliano Ravelli (@madron) `__ - 1 contribution -- `magnus (@magnusja) `__ - 1 contribution -- `Magnus Øverli (@magnusoverli) `__ - 1 contribution -- `Major Péter (@majorpeter) `__ - 2 contributions -- `Marcel van der Veldt (@marcelveldt) `__ - 2 contributions -- `marecabo (@marecabo) `__ - 4 contributions -- `Marvin Gaube (@margau) `__ - 4 contributions -- `Martynas Griškonis (@Margriko) `__ - 1 contribution -- `Mario (@mario-tux) `__ - 3 contributions -- `Matthew Harrold (@marrold) `__ - 1 contribution -- `Martin (@martgras) `__ - 1 contribution -- `Martin Hjelmare (@MartinHjelmare) `__ - 1 contribution -- `MartinWelsch (@MartinWelsch) `__ - 1 contribution -- `MasterTim17 (@MasterTim17) `__ - 1 contribution -- `matikij (@matikij) `__ - 2 contributions -- `Michel Marti (@matoxp) `__ - 4 contributions -- `Maurice Schleußinger (@maurice-schleussinger) `__ - 1 contribution -- `mbo18 (@mbo18) `__ - 1 contribution -- `Joseph Mearman (@Mearman) `__ - 1 contribution -- `Mechotronic (@Mechotronic) `__ - 1 contribution -- `MeIchthys (@meichthys) `__ - 1 contribution -- `meijerwynand (@meijerwynand) `__ - 2 contributions -- `Marco (@Melkor82) `__ - 2 contributions -- `mhentschke (@mhentschke) `__ - 1 contribution -- `micw (@micw) `__ - 1 contribution -- `Pauline Middelink (@middelink) `__ - 2 contributions -- `mikosoft83 (@mikosoft83) `__ - 1 contribution -- `Minideezel (@minideezel) `__ - 1 contribution -- `Matthew Edwards (@mje-nz) `__ - 1 contribution -- `Maarten (@mjkl-gh) `__ - 1 contribution -- `mjoshd (@mjoshd) `__ - 2 contributions -- `mknjc (@mknjc) `__ - 2 contributions -- `mmanza (@mmanza) `__ - 1 contribution -- `mnaz (@mnaz) `__ - 1 contribution -- `Michael Nieß (@mniess) `__ - 1 contribution -- `Matt N. (@mnoorenberghe) `__ - 1 contribution -- `Moritz Glöckl (@moritzgloeckl) `__ - 1 contribution -- `morph027 (@morph027) `__ - 1 contribution -- `Matthew Pettitt (@mpettitt) `__ - 1 contribution -- `Ryan Matthews (@mrrsm) `__ - 1 contribution -- `MrZetor (@MrZetor) `__ - 1 contribution -- `mtl010957 (@mtl010957) `__ - 9 contributions -- `Michiel van Turnhout (@mvturnho) `__ - 15 contributions -- `Mynasru (@Mynasru) `__ - 2 contributions -- `Niels Ulrik Andersen (@myplacedk) `__ - 1 contribution -- `Kevin Uhlir (@n0bel) `__ - 1 contribution -- `Erik Näsström (@Naesstrom) `__ - 1 contribution -- `Oskar Napieraj (@napieraj) `__ - 7 contributions -- `Bergont Nicolas (@nbergont) `__ - 1 contribution -- `Nebula (@nebula-it) `__ - 1 contribution -- `needspeed (@needspeed) `__ - 1 contribution -- `nepozs (@nepozs) `__ - 1 contribution -- `nickrout (@nickrout) `__ - 1 contribution -- `Nick Whyte (@nickw444) `__ - 3 contributions -- `nicuh (@nicuh) `__ - 1 contribution -- `nikito7 (@nikito7) `__ - 3 contributions -- `Zvonimir Haramustek (@nitko12) `__ - 1 contribution -- `Nikolay Kitanov (@nkitanov) `__ - 1 contribution -- `nldroid (@nldroid) `__ - 2 contributions -- `Niccolò Maggioni (@nmaggioni) `__ - 1 contribution -- `Alex (@nnmalex) `__ - 1 contribution -- `ffabi (@norges) `__ - 2 contributions -- `Greg Johnson (@notgwj) `__ - 1 contribution -- `Nuno Sousa (@nunofgs) `__ - 1 contribution -- `Chris Nussbaum (@nuttytree) `__ - 2 contributions -- `Dave Walker (@oddsockmachine) `__ - 1 contribution -- `Olivér Falvai (@ofalvai) `__ - 1 contribution -- `Omar Ghader (@omarghader) `__ - 1 contribution -- `Oncleben31 (@oncleben31) `__ - 1 contribution -- `Oscar Bolmsten (@oscar-b) `__ - 4 contributions -- `Otamay (@Otamay) `__ - 2 contributions -- `Pack3tL0ss (@Pack3tL0ss) `__ - 1 contribution -- `Panuruj Khambanonda (PK) (@panuruj) `__ - 2 contributions -- `Paul Deen (@PaulAntonDeen) `__ - 2 contributions -- `Paul Nicholls (@pauln) `__ - 4 contributions -- `Bartłomiej Biernacki (@pax0r) `__ - 2 contributions -- `peq123 (@peq123) `__ - 2 contributions -- `per1234 (@per1234) `__ - 2 contributions -- `perjury (@perjury) `__ - 1 contribution -- `Philip Rosenberg-Watt (@PhilRW) `__ - 1 contribution -- `phjr (@phjr) `__ - 2 contributions -- `pieterbrink123 (@pieterbrink123) `__ - 2 contributions -- `pille (@pille) `__ - 2 contributions -- `pixiandreas (@pixiandreas) `__ - 1 contribution -- `Peter Kuehne (@pkuehne) `__ - 5 contributions -- `Plácido Revilla (@placidorevilla) `__ - 2 contributions -- `Marcus Kempe (@plopp) `__ - 1 contribution -- `DK (@poldim) `__ - 2 contributions -- `Iván Povedano (@pove) `__ - 1 contribution -- `Peter Stuifzand (@pstuifzand) `__ - 1 contribution -- `Peter Tatrai (@ptatrai) `__ - 1 contribution -- `Leandro Puerari (@puerari) `__ - 1 contribution -- `puuu (@puuu) `__ - 22 contributions -- `Tommy Jonsson (@quazzie) `__ - 2 contributions -- `Quinn Hosler (@quinnhosler) `__ - 1 contribution -- `r-jordan (@r-jordan) `__ - 1 contribution -- `Richard Kuhnt (@r15ch13) `__ - 2 contributions -- `Pär Stålberg (@rabbadab) `__ - 1 contribution -- `Florian Ragwitz (@rafl) `__ - 1 contribution -- `Robert Cambridge (@rcambrj) `__ - 1 contribution -- `Ronald Dehuysser (@rdehuyss) `__ - 1 contribution -- `Alex Reid (@reidprojects) `__ - 2 contributions -- `richardweinberger (@richardweinberger) `__ - 1 contribution -- `Rich Foley (@RichFoley) `__ - 1 contribution -- `Richard Lewis (@richrd) `__ - 3 contributions -- `Rico van Genugten (@ricovangenugten) `__ - 1 contribution -- `rjmurph2241 (@rjmurph2241) `__ - 1 contribution -- `rlowens (@rlowens) `__ - 3 contributions -- `LMR (@rmooreID) `__ - 1 contribution -- `Ryan Mounce (@rmounce) `__ - 1 contribution -- `rnauber (@rnauber) `__ - 3 contributions -- `Rob Deutsch (@rob-deutsch) `__ - 1 contribution -- `Rob de Jonge (@robdejonge) `__ - 1 contribution -- `Robin Smidsrød (@robinsmidsrod) `__ - 2 contributions -- `RockBomber (@RockBomber) `__ - 1 contribution -- `RoganDawes (@RoganDawes) `__ - 1 contribution -- `Jérôme W. (@RomRider) `__ - 1 contribution -- `Robbie Page (@rorpage) `__ - 1 contribution -- `rradar (@rradar) `__ - 8 contributions -- `rspaargaren (@rspaargaren) `__ - 7 contributions -- `Rubén G. (@rubengargar) `__ - 1 contribution -- `rudgr (@rudgr) `__ - 1 contribution -- `ryanalden (@ryanalden) `__ - 2 contributions -- `Ryan Nazaretian (@ryannazaretian) `__ - 1 contribution -- `samnewman86 (@samnewman86) `__ - 1 contribution -- `Sascha (@Scarbous) `__ - 1 contribution -- `Nils Schulte (@Schnilz) `__ - 1 contribution -- `Ville Skyttä (@scop) `__ - 5 contributions -- `sekkr1 (@sekkr1) `__ - 1 contribution -- `SenexCrenshaw (@SenexCrenshaw) `__ - 17 contributions -- `Sergio (@sergio303) `__ - 2 contributions -- `Sergio Mayoral Martínez (@sermayoral) `__ - 3 contributions -- `sethcohn (@sethcohn) `__ - 1 contribution -- `Emanuele Tessore (@setola) `__ - 1 contribution -- `Abdelkader Boudih (@seuros) `__ - 1 contribution -- `shaeed (@shaeed) `__ - 1 contribution -- `shbatm (@shbatm) `__ - 1 contribution -- `sherbang (@sherbang) `__ - 4 contributions -- `Shish (@shish) `__ - 2 contributions -- `SiliconAvatar (@SiliconAvatar) `__ - 1 contribution -- `sillyfrog (@sillyfrog) `__ - 1 contribution -- `Derek Hageman (@Sizurka) `__ - 3 contributions -- `Stephen Tierney (@sjtrny) `__ - 1 contribution -- `Niklas Wagner (@Skaronator) `__ - 9 contributions -- `spattinson (@spattinson) `__ - 1 contribution -- `spilin (@spilin) `__ - 1 contribution -- `square99 (@square99) `__ - 2 contributions -- `Paul Krischer (@SqyD) `__ - 1 contribution -- `sredfern (@sredfern) `__ - 2 contributions -- `srg74 (@srg74) `__ - 1 contribution -- `Samuel Sieb (@ssieb) `__ - 18 contributions -- `Steve Baxter (@stevebaxter) `__ - 1 contribution -- `stubs12 (@stubs12) `__ - 3 contributions -- `Jordan Vohwinkel (@sublime93) `__ - 1 contribution -- `Marcel Feix (@Syndlex) `__ - 2 contributions -- `Teemu Mikkonen (@T3m3z) `__ - 2 contributions -- `Taigar2015 (@Taigar2015) `__ - 2 contributions -- `Levente Tamas (@tamisoft) `__ - 2 contributions -- `TBobsin (@TBobsin) `__ - 1 contribution -- `Team Super Panda (@teamsuperpanda) `__ - 1 contribution -- `teffcz (@teffcz) `__ - 1 contribution -- `The Impaler (@the-impaler) `__ - 1 contribution -- `Nejc (@thedexboy) `__ - 1 contribution -- `Thomas Eckerstorfer (@TheEggi) `__ - 5 contributions -- `Spencer Hachmeister (@TheHackmeister) `__ - 1 contribution -- `thejonesyboy (@thejonesyboy) `__ - 1 contribution -- `TheJulianJES (@TheJulianJES) `__ - 3 contributions -- `Jozef Zuzelka (@TheKuko) `__ - 2 contributions -- `Mateusz Soszyński (@TheLastGimbus) `__ - 1 contribution -- `Andrew Quested (@thenameiwantedwastaken) `__ - 1 contribution -- `Zixuan Wang (@TheNetAdmin) `__ - 1 contribution -- `Florian Gareis (@TheZoker) `__ - 12 contributions -- `Thomas Klingbeil (@thomasklingbeil) `__ - 3 contributions -- `Andrew Thompson (@thompsa) `__ - 2 contributions -- `thubot (@thubot) `__ - 1 contribution -- `tiagofreire-pt (@tiagofreire-pt) `__ - 1 contribution -- `Tijs-B (@Tijs-B) `__ - 1 contribution -- `Tim P (@timpur) `__ - 2 contributions -- `Tim Savage (@timsavage) `__ - 7 contributions -- `Max Efremov (@Tmin10) `__ - 1 contribution -- `Philipp Tölke (@toelke) `__ - 1 contribution -- `Tom Brien (@TomBrien) `__ - 1 contribution -- `TomFahey (@TomFahey) `__ - 2 contributions -- `Tommy Kihlstrøm (@tomludd) `__ - 1 contribution -- `tomlut (@tomlut) `__ - 3 contributions -- `Tom Price (@tomtom5152) `__ - 4 contributions -- `Torwag (@torwag) `__ - 1 contribution -- `Felix Eckhofer (@tribut) `__ - 1 contribution -- `Troon (@Troon) `__ - 1 contribution -- `truglodite (@truglodite) `__ - 1 contribution -- `Trevor North (@trvrnrth) `__ - 2 contributions -- `Gediminas Šaltenis (@trylika) `__ - 2 contributions -- `tubalainen (@tubalainen) `__ - 3 contributions -- `Tuckie (@Tuckie) `__ - 1 contribution -- `Alexey Vlasov (@turbulator) `__ - 1 contribution -- `Seppel Hardt (@tuxBurner) `__ - 1 contribution -- `tyomikh (@tyomikh) `__ - 1 contribution -- `ukewea (@ukewea) `__ - 1 contribution -- `Vc (@Valcob) `__ - 4 contributions -- `Nad (@valordk) `__ - 14 contributions -- `Víctor Ferrer García (@vicfergar) `__ - 1 contribution -- `voibit (@voibit) `__ - 2 contributions -- `Xuming Feng (@voicevon) `__ - 2 contributions -- `vxider (@Vxider) `__ - 7 contributions -- `warpzone (@warpzone) `__ - 1 contribution -- `Wauter (@Wauter) `__ - 3 contributions -- `webeling67 (@webeling67) `__ - 1 contribution -- `WeekendWarrior1 (@WeekendWarrior1) `__ - 1 contribution -- `Ian Wells (@wellsi) `__ - 1 contribution -- `Werner Beroux (@wernight) `__ - 1 contribution -- `wifwucite (@wifwucite) `__ - 1 contribution -- `Wilmar den Ouden (@wilmardo) `__ - 1 contribution -- `Emil Hesslow (@WizKid) `__ - 1 contribution -- `WJCarpenter (@wjcarpenter) `__ - 1 contribution -- `Artur 'Wodor' Wielogorski (@wodor) `__ - 1 contribution -- `Rick van Hattem (@WoLpH) `__ - 2 contributions -- `wutr (@wutr) `__ - 1 contribution -- `xheronimo (@xheronimo) `__ - 1 contribution -- `Yaroslav (@Yarikx) `__ - 4 contributions -- `Marcin Jaworski (@yawor) `__ - 2 contributions -- `Pavel (@yekm) `__ - 2 contributions -- `Atsuko Ito (@yottatsa) `__ - 1 contribution -- `Nico B (@youknow0) `__ - 2 contributions -- `YuanL.Lee (@yuanl) `__ - 1 contribution -- `ZabojnikM (@ZabojnikM) `__ - 1 contribution -- `San (@zhujunsan) `__ - 2 contributions -- `Christian Zufferey (@zuzu59) `__ - 1 contribution +- `0hax (@0hax) `__ +- `2016for (@2016for) `__ +- `Pavel Golovin (@31337Ghost) `__ +- `David Martin (@3ative) `__ +- `Aalian Khan (@AalianKhan) `__ +- `Abel Matser (@abelmatser) `__ +- `Abílio Costa (@abmantis) `__ +- `acshef (@acshef) `__ +- `adamgreg (@adamgreg) `__ +- `Attila Darazs (@adarazs) `__ +- `adezerega (@adezerega) `__ +- `Andrea Donno (@adonno) `__ +- `Adrien Brault (@adrienbrault) `__ +- `Johan Bloemberg (@aequitas) `__ +- `Anders (@ahd71) `__ +- `Alexander Pohl (@ahpohl) `__ +- `Airy André (@airy10) `__ +- `akoivist (@akoivist) `__ +- `Andrej Komelj (@akomelj) `__ +- `Alone (@al-one) `__ +- `Alex (@alex-richards) `__ +- `Alexander Leisentritt (@Alex9779) `__ +- `Alexandre Danault (@AlexDanault) `__ +- `Alex Mekkering (@AlexMekkering) `__ +- `Alex (@alexyao2015) `__ +- `Amish Vishwakarma (@amishv) `__ +- `András Bíró (@andrasbiro) `__ +- `Andreas Hergert (@andreashergert1984) `__ +- `Andrzej (@andriej) `__ +- `Andreas (@anduchs) `__ +- `anekinloewe (@anekinloewe) `__ +- `Vegetto (@angelnu) `__ +- `ankycooper (@ankycooper) `__ +- `Nikolay Vasilchuk (@Anonym-tsk) `__ +- `Adriaan Peeters (@apeeters) `__ +- `Darius Ratkevičius (@aphex008) `__ +- `Ash McKenzie (@ashmckenzie) `__ +- `Pavel Pletenev (@ASMfreaK) `__ +- `Achilleas Pipinellis (@axilleas) `__ +- `Kamil Trzciński (@ayufan) `__ +- `Nicholas Peters (@Azimath) `__ +- `Florian Mösch (@badbadc0ffee) `__ +- `balk77 (@balk77) `__ +- `Paulus Schoutsen (@balloob) `__ +- `Andrew Zaborowski (@balrog-kun) `__ +- `Rutger Nijhuis (@BananaPukeh) `__ +- `J. Nick Koston (@bdraco) `__ +- `Ben Suffolk (@bensuffolk) `__ +- `Bierchermuesli (@Bierchermuesli) `__ +- `Jim Ekman (@blejdfist) `__ +- `Mauricio Bonani (@bonanitech) `__ +- `boradwell (@boradwell) `__ +- `Patrik Hermansson (@bphermansson) `__ +- `Bram Kragten (@bramkragten) `__ +- `Brad Davidson (@brandond) `__ +- `Brian Hanifin (@brianhanifin) `__ +- `brianrjones69 (@brianrjones69) `__ +- `buxtronix (@buxtronix) `__ +- `bvansambeek (@bvansambeek) `__ +- `bwente (@bwente) `__ +- `Carlos Gustavo Sarmiento (@carlos-sarmiento) `__ +- `Carlos Garcia Saura (@CarlosGS) `__ +- `cbialobos (@cbialobos) `__ +- `Marco (@cdrfun) `__ +- `chris-jennings (@chris-jennings) `__ +- `John (@CircuitSetup) `__ +- `Chris Debenham (@cjd) `__ +- `Cody James (@codyjamestechnical) `__ +- `John Coggeshall (@coogle) `__ +- `James Crook (@cooljimy84) `__ +- `Corban Mailloux (@corbanmailloux) `__ +- `Dmitry Berezovsky (@corvis) `__ +- `Connor Prussin (@cprussin) `__ +- `cretep (@cretep) `__ +- `cryptelli (@cryptelli) `__ +- `Chris Talkington (@ctalkington) `__ +- `Alex Solomaha (@CyanoFresh) `__ +- `Luar Roji (@cyberplant) `__ +- `Dale Higgs (@dale3h) `__ +- `damanti-me (@damanti-me) `__ +- `Daniel Bjørnbakk (@danibjor) `__ +- `Daniel Kucera (@danielkucera) `__ +- `Daniel Schramm (@danielschramm) `__ +- `Chris (@darthsebulba04) `__ +- `Dan Gentry (@dashdrum) `__ +- `Anthony Uk (@dataway) `__ +- `DAVe3283 (@DAVe3283) `__ +- `Dave Richer (@davericher) `__ +- `Dave T (@davet2001) `__ +- `Dave Wongillies (@davewongillies) `__ +- `David De Sloovere (@DavidDeSloovere) `__ +- `David Beitey (@davidjb) `__ +- `David Zovko (@davidzovko) `__ +- `dckiller51 (@dckiller51) `__ +- `Debashish Sahu (@debsahu) `__ +- `declanshanaghy (@declanshanaghy) `__ +- `deftdawg (@deftdawg) `__ +- `Christiaan Blom (@Deinara) `__ +- `Rsan (@deltazerorsan) `__ +- `Mickaël Le Baillif (@demikl) `__ +- `dependabot[bot] (@dependabot[bot]) `__ +- `Destix (@Destix) `__ +- `Alain Turbide (@Dilbert66) `__ +- `Mark (@Diramu) `__ +- `Dirk Heinke (@DirkHeinke) `__ +- `Dirk Jahnke (@dirkj) `__ +- `djtef (@djtef) `__ +- `Marcos Pérez Ferro (@djwmarcx) `__ +- `Dan Mannock (@dmannock) `__ +- `dmkif (@dmkif) `__ +- `DrZoid (@docteurzoidberg) `__ +- `Jiang Sheng (@doskoi) `__ +- `Robert Schütz (@dotlambda) `__ +- `Daniel Hyles (@DotNetDann) `__ +- `dr-oblivium (@dr-oblivium) `__ +- `Drew Perttula (@drewp) `__ +- `DrRob (@DrRob) `__ +- `dubit0 (@dubit0) `__ +- `Sergey V. DUDANOV (@dudanov) `__ +- `Dimitris Zervas (@dzervas) `__ +- `dziobson (@dziobson) `__ +- `Dan Jackson (@e28eta) `__ +- `Ermanno Baschiera (@ebaschiera) `__ +- `Robert Resch (@edenhaus) `__ +- `Niclas Larsson (@edge90) `__ +- `Eenoo (@Eenoo) `__ +- `Erwin Kooi (@egeltje) `__ +- `Eike (@ei-ke) `__ +- `electrofun-smart (@electrofun-smart) `__ +- `Elkropac (@Elkropac) `__ +- `elyorkhakimov (@elyorkhakimov) `__ +- `EmbeddedDevver (@EmbeddedDevver) `__ +- `EmmanuelLM (@EmmanuelLM) `__ +- `Emory Dunn (@emorydunn) `__ +- `Eric Muehlstein (@emuehlstein) `__ +- `Anders Persson (@emwap) `__ +- `Nico Weichbrodt (@envy) `__ +- `Evan Petousis (@epetousis) `__ +- `Wilhelm Erasmus (@erasmuswill) `__ +- `erazor666 (@erazor666) `__ +- `Eric Hiller (@erichiller) `__ +- `Ernst Klamer (@Ernst79) `__ +- `escoand (@escoand) `__ +- `esphomebot (@esphomebot) `__ +- `Evan Coleman (@evandcoleman) `__ +- `Malte Franken (@exxamalte) `__ +- `Fabian Affolter (@fabaff) `__ +- `C W (@fake-name) `__ +- `Christian Ferbar (@ferbar) `__ +- `fkirill (@fkirill) `__ +- `Diego Elio Pettenò (@Flameeyes) `__ +- `foxsam21 (@foxsam21) `__ +- `Fractal147 (@Fractal147) `__ +- `Francis-labo (@Francis-labo) `__ +- `Francisk0 (@Francisk0) `__ +- `Frank Bakker (@FrankBakkerNl) `__ +- `Frankster-NL (@Frankster-NL) `__ +- `Fredrik Erlandsson (@fredrike) `__ +- `Evgeny (@freekode) `__ +- `Brett McKenzie (@freerangeeggs) `__ +- `Fritz Mueller (@fritzm) `__ +- `Marc Egli (@frog32) `__ +- `mr G1K (@G1K) `__ +- `Gabe Cook (@gabe565) `__ +- `Gareth Cooper (@gaco79) `__ +- `galagaking (@galagaking) `__ +- `Geoff Davis (@geoffdavis) `__ +- `Gerard (@gerard33) `__ +- `Giovanni (@Gio-dot) `__ +- `gitolicious (@gitolicious) `__ +- `The Gitter Badger (@gitter-badger) `__ +- `Guillermo Ruffino (@glmnet) `__ +- `Giorgos Logiotatidis (@glogiotatidis) `__ +- `Germain Masse (@gmasse) `__ +- `Jelle Raaijmakers (@GMTA) `__ +- `gordon-zhao (@gordon-zhao) `__ +- `Antoine GRÉA (@grea09) `__ +- `Guillaume DELVIT (@guiguid) `__ +- `guptamp (@guptamp) `__ +- `Guyohms (@Guyohms) `__ +- `h0-- (@h0--) `__ +- `Boris Hajduk (@hajdbo) `__ +- `Gavin Mogan (@halkeye) `__ +- `Charles Thompson (@haryadoon) `__ +- `hcoohb (@hcoohb) `__ +- `Héctor Giménez (@hectorgimenez) `__ +- `Jimmy Hedman (@HeMan) `__ +- `HepoH3 (@HepoH3) `__ +- `Hamish Moffatt (@hmoffatt) `__ +- `MoA (@honomoa) `__ +- `Ian Leeder (@ianleeder) `__ +- `icarome (@icarome) `__ +- `igg (@igg) `__ +- `ikatkov (@ikatkov) `__ +- `Michael (@imeekle) `__ +- `Lorenzo Ortiz (@Infinitte) `__ +- `Ivan Shvedunov (@ivan4th) `__ +- `Ivan Kravets (@ivankravets) `__ +- `Ivo-tje (@Ivo-tje) `__ +- `Jakob Reiter (@jakommo) `__ +- `James Gao (@jamesgao) `__ +- `János Rusiczki (@janosrusiczki) `__ +- `Jan Pieper (@janpieper) `__ +- `Jason-nz (@Jason-nz) `__ +- `Jason Hines (@jasonehines) `__ +- `JbLb (@jblb) `__ +- `Joshua Dadswell (@jdads1) `__ +- `jeff-h (@jeff-h) `__ +- `Jeff Rescignano (@JeffResc) `__ +- `Jesse Hills (@jesserockz) `__ +- `Jérémy JOURDIN (@JJK801) `__ +- `Jonathan Jefferies (@jjok) `__ +- `Justin Maxwell (@jkmaxwell) `__ +- `Jeppe Ladefoged (@jladefoged) `__ +- `Jonathan Martens (@jmartens) `__ +- `Johan van der Kuijl (@johanvanderkuijl) `__ +- `Johboh (@Johboh) `__ +- `John Erik Halse (@johnerikhalse) `__ +- `Jonathan Adams (@jonathanadams) `__ +- `Jonathan Treffler (@JonathanTreffler) `__ +- `JonnyaiR (@jonnyair) `__ +- `Joppy (@JoppyFurr) `__ +- `junnikokuki (@junnikokuki) `__ +- `Justahobby01 (@Justahobby01) `__ +- `Mike Ryan (@justfalter) `__ +- `Justin Gerhardt (@justin-gerhardt) `__ +- `Justyn Shull (@justyns) `__ +- `Jasper van der Neut - Stulen (@jvanderneutstulen) `__ +- `João Vitor M. Roma (@jvmr1) `__ +- `Jack Wozny (@jwozny) `__ +- `Kris (@K-r-i-s-t-i-a-n) `__ +- `Harald Nagel (@k7hpn) `__ +- `kalebzettl (@kalebzettl) `__ +- `Krasimir Nedelchev (@kaykayehnn) `__ +- `kbouchard111 (@kbouchard111) `__ +- `Keith Burzinski (@kbx81) `__ +- `Robert Kiss (@kepten) `__ +- `Kevin O'Rourke (@kevinior) `__ +- `kimonm (@kimonm) `__ +- `Kurt Kellner (@kkellner) `__ +- `Klaas Schoute (@klaasnicolaas) `__ +- `Klarstein (@Klarstein) `__ +- `Kevin Lewis (@kll) `__ +- `korellas (@korellas) `__ +- `Kevin Pelzel (@kpelzel) `__ +- `Karl Q. (@kquinsland) `__ +- `krahabb (@krahabb) `__ +- `krikk (@krikk) `__ +- `KristopherMackowiak (@KristopherMackowiak) `__ +- `kroimon (@kroimon) `__ +- `Kendell R (@KTibow) `__ +- `kvvoff (@kvvoff) `__ +- `Ken Davidson (@kwdavidson) `__ +- `Kyle Manna (@kylemanna) `__ +- `la7dja (@la7dja) `__ +- `Stefan Lässer (@Laess3r) `__ +- `Steffen Weinreich (@lairsdragon) `__ +- `Fredrik Lindqvist (@Landrash) `__ +- `lein1013 (@lein1013) `__ +- `Riku Lindblad (@lepinkainen) `__ +- `Juraj Liso (@LiJu09) `__ +- `Lazar Obradovic (@lobradov) `__ +- `Barry Loong (@loongyh) `__ +- `Joakim Sørensen (@ludeeus) `__ +- `Lukas Klass (@LukasK13) `__ +- `lukaszrud (@lukaszrud) `__ +- `Lumpusz (@Lumpusz) `__ +- `Luke Fitzgerald (@lwfitzgerald) `__ +- `Lewis Juggins (@lwis) `__ +- `Michael Klamminger (@m1ch) `__ +- `M95D (@M95D) `__ +- `Marc-Antoine Courteau (@macourteau) `__ +- `Massimiliano Ravelli (@madron) `__ +- `magnus (@magnusja) `__ +- `Magnus Øverli (@magnusoverli) `__ +- `Major Péter (@majorpeter) `__ +- `Manuel Díez (@manutenfruits) `__ +- `Marcel van der Veldt (@marcelveldt) `__ +- `marecabo (@marecabo) `__ +- `Marvin Gaube (@margau) `__ +- `Martynas Griškonis (@Margriko) `__ +- `Mario (@mario-tux) `__ +- `Matthew Harrold (@marrold) `__ +- `Martin (@martgras) `__ +- `Martin Hjelmare (@MartinHjelmare) `__ +- `MartinWelsch (@MartinWelsch) `__ +- `MasterTim17 (@MasterTim17) `__ +- `matikij (@matikij) `__ +- `Michel Marti (@matoxp) `__ +- `Maurice Schleußinger (@maurice-schleussinger) `__ +- `mbo18 (@mbo18) `__ +- `Joseph Mearman (@Mearman) `__ +- `Mechotronic (@Mechotronic) `__ +- `MeIchthys (@meichthys) `__ +- `meijerwynand (@meijerwynand) `__ +- `Marco (@Melkor82) `__ +- `mhentschke (@mhentschke) `__ +- `micw (@micw) `__ +- `Pauline Middelink (@middelink) `__ +- `mikosoft83 (@mikosoft83) `__ +- `Minideezel (@minideezel) `__ +- `Matthew Edwards (@mje-nz) `__ +- `Maarten (@mjkl-gh) `__ +- `mjoshd (@mjoshd) `__ +- `mknjc (@mknjc) `__ +- `Maurice Makaay (@mmakaay) `__ +- `mmanza (@mmanza) `__ +- `mnaz (@mnaz) `__ +- `Michael Nieß (@mniess) `__ +- `Matt N. (@mnoorenberghe) `__ +- `Moritz Glöckl (@moritzgloeckl) `__ +- `Matthew Pettitt (@mpettitt) `__ +- `Ryan Matthews (@mrrsm) `__ +- `MrZetor (@MrZetor) `__ +- `mtl010957 (@mtl010957) `__ +- `Murilo (@murilobaliego) `__ +- `Michiel van Turnhout (@mvturnho) `__ +- `Mynasru (@Mynasru) `__ +- `Niels Ulrik Andersen (@myplacedk) `__ +- `Kevin Uhlir (@n0bel) `__ +- `Erik Näsström (@Naesstrom) `__ +- `Oskar Napieraj (@napieraj) `__ +- `Bergont Nicolas (@nbergont) `__ +- `Nebula (@nebula-it) `__ +- `needspeed (@needspeed) `__ +- `nepozs (@nepozs) `__ +- `nickrout (@nickrout) `__ +- `Nick Whyte (@nickw444) `__ +- `nicuh (@nicuh) `__ +- `nikito7 (@nikito7) `__ +- `Zvonimir Haramustek (@nitko12) `__ +- `Nikolay Kitanov (@nkitanov) `__ +- `nldroid (@nldroid) `__ +- `Niccolò Maggioni (@nmaggioni) `__ +- `Alex (@nnmalex) `__ +- `ffabi (@norges) `__ +- `Greg Johnson (@notgwj) `__ +- `Stanislav Meduna (@numo68) `__ +- `Nuno Sousa (@nunofgs) `__ +- `Chris Nussbaum (@nuttytree) `__ +- `Dave Walker (@oddsockmachine) `__ +- `Olivér Falvai (@ofalvai) `__ +- `Omar Ghader (@omarghader) `__ +- `Oncleben31 (@oncleben31) `__ +- `Oscar Bolmsten (@oscar-b) `__ +- `Otamay (@Otamay) `__ +- `Otto Winter (@OttoWinter) `__ +- `Pack3tL0ss (@Pack3tL0ss) `__ +- `Panuruj Khambanonda (PK) (@panuruj) `__ +- `Paul Deen (@PaulAntonDeen) `__ +- `Paul Nicholls (@pauln) `__ +- `Bartłomiej Biernacki (@pax0r) `__ +- `peq123 (@peq123) `__ +- `per1234 (@per1234) `__ +- `perjury (@perjury) `__ +- `Philip Rosenberg-Watt (@PhilRW) `__ +- `phjr (@phjr) `__ +- `pieterbrink123 (@pieterbrink123) `__ +- `pille (@pille) `__ +- `pixiandreas (@pixiandreas) `__ +- `Peter Kuehne (@pkuehne) `__ +- `Plácido Revilla (@placidorevilla) `__ +- `Marcus Kempe (@plopp) `__ +- `DK (@poldim) `__ +- `Iván Povedano (@pove) `__ +- `Peter Stuifzand (@pstuifzand) `__ +- `Peter Tatrai (@ptatrai) `__ +- `Leandro Puerari (@puerari) `__ +- `puuu (@puuu) `__ +- `Tommy Jonsson (@quazzie) `__ +- `Quinn Hosler (@quinnhosler) `__ +- `r-jordan (@r-jordan) `__ +- `Richard Kuhnt (@r15ch13) `__ +- `Pär Stålberg (@rabbadab) `__ +- `Florian Ragwitz (@rafl) `__ +- `rbaron (@rbaron) `__ +- `Robert Cambridge (@rcambrj) `__ +- `Ronald Dehuysser (@rdehuyss) `__ +- `Alex Reid (@reidprojects) `__ +- `rheinz (@rheinz) `__ +- `Richard Klingler (@richardklingler) `__ +- `richardweinberger (@richardweinberger) `__ +- `Rich Foley (@RichFoley) `__ +- `Richard Lewis (@richrd) `__ +- `Rico van Genugten (@ricovangenugten) `__ +- `rjmurph2241 (@rjmurph2241) `__ +- `rlowens (@rlowens) `__ +- `LMR (@rmooreID) `__ +- `Ryan Mounce (@rmounce) `__ +- `rnauber (@rnauber) `__ +- `Rob Deutsch (@rob-deutsch) `__ +- `Rob de Jonge (@robdejonge) `__ +- `Robin Smidsrød (@robinsmidsrod) `__ +- `RockBomber (@RockBomber) `__ +- `RoganDawes (@RoganDawes) `__ +- `Jérôme W. (@RomRider) `__ +- `Robbie Page (@rorpage) `__ +- `rradar (@rradar) `__ +- `rspaargaren (@rspaargaren) `__ +- `Rubén G. (@rubengargar) `__ +- `rudgr (@rudgr) `__ +- `ryanalden (@ryanalden) `__ +- `Ryan Nazaretian (@ryannazaretian) `__ +- `samnewman86 (@samnewman86) `__ +- `Sascha (@Scarbous) `__ +- `Nils Schulte (@Schnilz) `__ +- `Ville Skyttä (@scop) `__ +- `sekkr1 (@sekkr1) `__ +- `SenexCrenshaw (@SenexCrenshaw) `__ +- `Sergio (@sergio303) `__ +- `Sergio Mayoral Martínez (@sermayoral) `__ +- `sethcohn (@sethcohn) `__ +- `Emanuele Tessore (@setola) `__ +- `Abdelkader Boudih (@seuros) `__ +- `shaeed (@shaeed) `__ +- `shbatm (@shbatm) `__ +- `sherbang (@sherbang) `__ +- `Shish (@shish) `__ +- `SiliconAvatar (@SiliconAvatar) `__ +- `sillyfrog (@sillyfrog) `__ +- `Derek Hageman (@Sizurka) `__ +- `Stephen Tierney (@sjtrny) `__ +- `Niklas Wagner (@Skaronator) `__ +- `Philip Allgaier (@spacegaier) `__ +- `spattinson (@spattinson) `__ +- `spilin (@spilin) `__ +- `square99 (@square99) `__ +- `Paul Krischer (@SqyD) `__ +- `sredfern (@sredfern) `__ +- `srg74 (@srg74) `__ +- `Samuel Sieb (@ssieb) `__ +- `Steve Baxter (@stevebaxter) `__ +- `stubs12 (@stubs12) `__ +- `Jordan Vohwinkel (@sublime93) `__ +- `Marcel Feix (@Syndlex) `__ +- `Teemu Mikkonen (@T3m3z) `__ +- `Taigar2015 (@Taigar2015) `__ +- `Levente Tamas (@tamisoft) `__ +- `TBobsin (@TBobsin) `__ +- `Team Super Panda (@teamsuperpanda) `__ +- `teffcz (@teffcz) `__ +- `The Impaler (@the-impaler) `__ +- `Nejc (@thedexboy) `__ +- `Thomas Eckerstorfer (@TheEggi) `__ +- `Spencer Hachmeister (@TheHackmeister) `__ +- `thejonesyboy (@thejonesyboy) `__ +- `TheJulianJES (@TheJulianJES) `__ +- `Jozef Zuzelka (@TheKuko) `__ +- `Mateusz Soszyński (@TheLastGimbus) `__ +- `Andrew Quested (@thenameiwantedwastaken) `__ +- `Zixuan Wang (@TheNetAdmin) `__ +- `Florian Gareis (@TheZoker) `__ +- `Thomas Klingbeil (@thomasklingbeil) `__ +- `Andrew Thompson (@thompsa) `__ +- `thubot (@thubot) `__ +- `tiagofreire-pt (@tiagofreire-pt) `__ +- `Tijs-B (@Tijs-B) `__ +- `Tim P (@timpur) `__ +- `Tim Savage (@timsavage) `__ +- `Max Efremov (@Tmin10) `__ +- `Philipp Tölke (@toelke) `__ +- `Tom Brien (@TomBrien) `__ +- `TomFahey (@TomFahey) `__ +- `Tommy Kihlstrøm (@tomludd) `__ +- `tomlut (@tomlut) `__ +- `Tom Price (@tomtom5152) `__ +- `Torwag (@torwag) `__ +- `Felix Eckhofer (@tribut) `__ +- `Troon (@Troon) `__ +- `truglodite (@truglodite) `__ +- `Trevor North (@trvrnrth) `__ +- `Gediminas Šaltenis (@trylika) `__ +- `tubalainen (@tubalainen) `__ +- `Tuckie (@Tuckie) `__ +- `Alexey Vlasov (@turbulator) `__ +- `Seppel Hardt (@tuxBurner) `__ +- `tyomikh (@tyomikh) `__ +- `ukewea (@ukewea) `__ +- `Vc (@Valcob) `__ +- `Nad (@valordk) `__ +- `Víctor Ferrer García (@vicfergar) `__ +- `voibit (@voibit) `__ +- `Xuming Feng (@voicevon) `__ +- `vxider (@Vxider) `__ +- `warpzone (@warpzone) `__ +- `Wauter (@Wauter) `__ +- `webeling67 (@webeling67) `__ +- `WeekendWarrior1 (@WeekendWarrior1) `__ +- `Ian Wells (@wellsi) `__ +- `Werner Beroux (@wernight) `__ +- `wifwucite (@wifwucite) `__ +- `Wilmar den Ouden (@wilmardo) `__ +- `Emil Hesslow (@WizKid) `__ +- `WJCarpenter (@wjcarpenter) `__ +- `Artur 'Wodor' Wielogorski (@wodor) `__ +- `Rick van Hattem (@WoLpH) `__ +- `Wojtek Strzalka (@wstrzalka) `__ +- `wutr (@wutr) `__ +- `xheronimo (@xheronimo) `__ +- `Yaroslav (@Yarikx) `__ +- `Marcin Jaworski (@yawor) `__ +- `Pavel (@yekm) `__ +- `Atsuko Ito (@yottatsa) `__ +- `Nico B (@youknow0) `__ +- `YuanL.Lee (@yuanl) `__ +- `ZabojnikM (@ZabojnikM) `__ +- `San (@zhujunsan) `__ +- `Christian Zufferey (@zuzu59) `__ -*This page was last updated March 22, 2021.* +*This page was last updated May 4, 2021.* From e89fb9871dfd7d3e4c18d40b7bdf2c34956855ea Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Tue, 4 May 2021 11:32:11 +1200 Subject: [PATCH 08/10] Fix Spelling --- changelog/v1.17.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/v1.17.0.rst b/changelog/v1.17.0.rst index adcb076dc..23e9153fa 100644 --- a/changelog/v1.17.0.rst +++ b/changelog/v1.17.0.rst @@ -20,7 +20,7 @@ Changelog - Version 1.17.0 - 4th May 2021 So, ESPHome was acquired by Nabu Casa. That was big and unexpected, but awesome news for the project as now I have been hired -by Nabu Casa full-time to work on ESPHome. I know I said this is the last release, but hopefully now that it is literally +by Nabu Casa full-time to work on ESPHome. I know I said this in the last release, but hopefully now that it is literally my job, the releases will move to a (yet to be defined) schedule. A lot of fixes and updates to exisitng components in this release, and a couple of new integrations and features too. Check them out From e64dfeb7fd7e62d38778daad77acd1247d6a0d7e Mon Sep 17 00:00:00 2001 From: Philip Allgaier Date: Tue, 4 May 2021 09:01:14 +0200 Subject: [PATCH 09/10] Fixed typo in 1.17.0 changelogs (#1132) --- changelog/v1.17.0.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog/v1.17.0.rst b/changelog/v1.17.0.rst index 23e9153fa..0dc2679bc 100644 --- a/changelog/v1.17.0.rst +++ b/changelog/v1.17.0.rst @@ -23,7 +23,7 @@ So, ESPHome was acquired by Nabu Casa. That was big and unexpected, but awesome by Nabu Casa full-time to work on ESPHome. I know I said this in the last release, but hopefully now that it is literally my job, the releases will move to a (yet to be defined) schedule. -A lot of fixes and updates to exisitng components in this release, and a couple of new integrations and features too. Check them out +A lot of fixes and updates to existing components in this release, and a couple of new integrations and features too. Check them out if you have the hardware but could not use it before. Hopefully I can get some help and pointers from the Nabu Casa team to tidy up these release notes and make them all fancy and From 96b7d7545d413fe4e30432ce79b5e57b58b836fb Mon Sep 17 00:00:00 2001 From: Jesse Hills <3060199+jesserockz@users.noreply.github.com> Date: Wed, 5 May 2021 07:37:38 +1200 Subject: [PATCH 10/10] Add changelog image --- _static/changelog-1.17.0.png | Bin 0 -> 72744 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 _static/changelog-1.17.0.png diff --git a/_static/changelog-1.17.0.png b/_static/changelog-1.17.0.png new file mode 100644 index 0000000000000000000000000000000000000000..2210c28f4de18cec2f15e9ab61461af589dc9714 GIT binary patch literal 72744 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 literal 0 HcmV?d00001