theophile
2a25733cd8
screws_tilt_adjust: Add get_status() method ( #5921 )
...
Signed-off-by: Christopher Meredith <chmeredith@gmail.com>
2022-12-17 11:39:25 -05:00
Andrew Mirsky
0c5c87d7c0
gcode_arcs: support XY, XZ and YZ planes
...
add G17, G18 and G19 commands to select arc planes
enhance G2/G3 to support arc moves in XY, XZ and YZ planes
Signed-off-by: Andrew Mirsky <andrew@mirsky.net>
2022-12-11 20:55:59 -05:00
Kevin O'Connor
e02b725602
docs: Note the release of v0.11.0
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-11-28 21:27:09 -05:00
Kevin O'Connor
817339a4ef
docs: Add a note about hardware independence to Features.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-11-28 21:14:11 -05:00
Kevin O'Connor
a9495d8e4f
docs: Updates to Features.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-11-28 20:59:31 -05:00
Kevin O'Connor
9727f00e50
docs: Minor update to safe_z_home change description in Config_Changes.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-11-22 18:57:15 -05:00
redstone99
14eec15267
safe_z_home: Fix final z hop to use relative z coordinates ( #5879 )
...
After a G28 z-axis homing, there is a final z hop.
It was hoping to height z_hop as an absolute z height rather than relative.
If the z-axis home leaves the head at a z height higher than z_hop,
e.g. because you were using a probe to do z homing,
this meant that it was z hopping in the negative z direction, which
could result in crashing the toolhead.
Signed-off-by: Joshua Redstone <redstone@gmail.com>
2022-11-22 18:55:43 -05:00
Yifei Ding
d17ef95a3c
mpu9250: add MPU6500 ( #5767 )
...
Signed-off-by: Yifei Ding <yifeiding@protonmail.com>
2022-11-19 09:58:24 -05:00
Kevin O'Connor
d2a1dcbbf3
docs: Update Contacts.md with improved github issue tracker description
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-11-15 16:54:19 -05:00
Kevin O'Connor
d46c95b758
docs: Add a note about fixing underlying bugs in CONTRIBUTING.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-10-25 11:53:55 -04:00
D4SK
a65e04aff7
docs: Add step rate benchmark for stm32h7
...
Signed-off-by: Konstantin Vogel <konstantin.vogel@gmx.net>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-10-21 20:33:28 -04:00
Kevin O'Connor
4b77f29c1b
atsamd: Add support CANbus on ATSAME5x chips
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-10-13 11:28:27 -04:00
Stefan Dej
b0ffb269d2
print_stats: add `SET_PRINT_STATS_INFO` G-Code for pass slicer variables to Klipper ( #5726 )
...
This adds a gcode command that can be used insight the slicer to pass the total layer count and current layer information.
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2022-10-05 15:02:28 -04:00
alchemyEngine
34870d3e2a
z_thermal_adjust: Add Z thermal adjuster module ( #4157 )
...
Use a frame-coupled temperature probe to compensate for thermal
expansion in real-time.
Signed-off by: Robert Pazdzior <robertp@norbital.com>
2022-09-25 12:39:14 -04:00
Kevin O'Connor
8cdb2278d7
docs: Add an example corexy homing macro to TMC_Drivers.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-09-14 17:49:25 -04:00
Kevin O'Connor
79be427757
docs: Reword sensorless homing high sensitivity test in TMC_Drivers.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-09-14 17:13:48 -04:00
Donna Whisnant
a530bf2421
docs: Add SDIO programming and split verification details to SDCard_Updates
...
Signed-off-by: Donna Whisnant <dewhisna@dewtronics.com>
2022-09-11 21:57:28 -04:00
dalegaard
9f8f3cd77d
fan: add enable_pin option ( #5732 )
...
Signed-off-by: Lasse Dalegaard <dalegaard@gmail.com>
2022-09-03 12:23:55 -04:00
jake-b
ae6c16422f
mcp4018: Add SET_DIGIPOT command to mcp4018 implementation ( #5737 )
...
Added a SET_DIGIPOT command to the mcp4018 implementation.
Previously the mcp4018 was read only, and set at the time of
configuration. This allows you to change the value during a
print, which is needed for some older printers that need to
lower the stepper current during preheating.
Signed-off-by: Jake Bordens <jake@allaboutjake.com>
2022-09-02 10:30:06 -04:00
Tircown
354915d2ad
kinematics: Add deltesian printers ( #5743 )
...
Initial push of the working deltesian kinematics after some successful tests.
Signed-off-by: Fabrice GALLET <tircown@gmail.com>
2022-09-01 15:56:31 -04:00
Dmitry Butyugin
5d9ff75d02
extruder_stepper: Support configuring pressure advance from config
...
Also added status report for extruder_stepper objects with the
current pressure advance parameters values.
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2022-09-01 14:53:12 -04:00
Kevin O'Connor
f7e29b276e
docs: Update koconnor donation links
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-08-24 21:02:43 -04:00
Nitram
6a91824486
delta: Added the possibility to get where the "cone shape" of the build volume starts from Macros ( #5662 )
...
Added the possibility to get where the "cone shape" of the build volume starts from Macros
Signed-off-by: Martin Malmqvist <Volcomosq@gmx.com>
2022-08-19 13:27:44 -04:00
Kevin O'Connor
dc012f8659
docs: Recommend allow-hotplug in CANBUS.md when using USB to canbus bridge
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-07-29 11:40:54 -04:00
Kevin O'Connor
2005d4dbf4
docs: Updates to CANBUS_protocol.md
...
Update the document with latest details.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-07-29 11:40:54 -04:00
Pedro Lamas
b725d971db
bed_screws: report status
...
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2022-07-28 20:43:19 -04:00
Pedro Lamas
c29e190696
docs: fixes typo on heater_bed
...
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2022-07-28 20:37:34 -04:00
Pedro Lamas
282d1113e4
manual_probe: report status
...
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2022-07-21 22:03:31 -04:00
Pedro Lamas
6be114d728
docs: fix rawparams example by truncating comments
...
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2022-07-19 12:48:16 -04:00
Kevin O'Connor
d91939c4bf
docs: Add BIGTREETECH to Sponsors.md file
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-07-16 23:17:30 -04:00
Kevin O'Connor
2f9fe49cb8
docs: Add a Sponsors.md file
...
Add a documentation page with information on how to support Klipper.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-07-16 10:48:10 -04:00
Kevin O'Connor
06022b305f
mkdocs-requirements: Force markdown==3.3.7
...
A new release of markdown (v3.4.1) breaks the website deployment
scripts. Force the existing version.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-07-16 10:43:53 -04:00
chestwood96
167736ad1c
respond: No forced spaces ( #5152 )
...
Signed-off-by: Adrian Joachim <adi.joachim12@gmail.com>
2022-06-30 13:56:35 -04:00
Kevin O'Connor
790ff4d8d7
usb_canbus: Initial support for USB to CAN bridge mode
...
Support a USB interface that shows up as a canbus adapter to linux.
Route both local and real canbus packets over that interface.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-27 10:50:23 -04:00
Eric Callahan
6ad6e39ad2
docs: add SET_DISPLAY_TEXT documentation
...
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
2022-06-27 10:09:02 -04:00
Yifei Ding
ae17b66a88
docs: remove FAQ ToC ( #5585 )
...
Signed-off-by: Yifei Ding <yifeiding@protonmail.com>
2022-06-27 09:58:48 -04:00
Kevin O'Connor
52a8afba43
docs: Note mcu types with i2c_speed support in Config_Reference.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-20 12:58:05 -04:00
Dmitry Butyugin
8804c1578d
docs: Added instructions how to configure I2C for MPU-9250
...
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2022-06-20 12:47:14 -04:00
Dmitry Butyugin
f2e27ae05e
docs: Updated accelerometer installation instructions for Python 3
...
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2022-06-20 12:47:14 -04:00
Kevin O'Connor
98a24172e7
docs: Add mpu9250 to Config_Reference.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-20 12:41:24 -04:00
Kevin O'Connor
46842026b9
docs: Wrap lines in Measuring_Resonances.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-20 12:41:24 -04:00
Kurt Haenen
f2a5800cea
configfile: Expose options awaiting to be saved ( #5270 )
...
Adds a save_config_pending_items to the status reported by
configfile reflecting the items and values that a future
SAVE_CONFIG would actually persist.
Signed-off-by: Kurt Haenen <kurt.haenen@gmail.com>
2022-06-20 12:10:57 -04:00
Kevin O'Connor
55d1c3728d
docs: Note that i2c is not noise resilient in Config_Reference.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 18:38:31 -04:00
bluesforte
f55b9d3e57
mpu9250: Adding support for MPU-9250 (and MPU-6050) accelerometer
...
Add support for mpu9250 accelerometer over I2C bus.
Signed-off-by: Harry Beyel <harry3b9@gmail.com>
2022-06-16 11:09:33 -04:00
Kevin O'Connor
b9e195f098
flash_usb: Use hexid "2e8a:0003" for rp2040 already in bootloader mode
...
Use a USB hex id to indicate that the device is already in bootloader
mode. This makes the rp2040 flashing code similar to the other
boards.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-16 10:59:11 -04:00
Kevin O'Connor
ea4f6d6a77
rp2040: Implement workaround for USB errata "rp2040-e5"
...
The rp2040 USB may not connect after a reset. Implementation the
recommended workaround.
Signed-off-by: Lasse Dalegaard <dalegaard@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-06-12 11:25:57 -04:00
Yifei Ding
9047702a00
mkdocs: Replace TOC in Translations
...
Signed-off-by: Yifei Ding<yifeiding@protonmail.com>
2022-06-03 19:14:13 -04:00
Stefan Dej
7c8cf7661b
docs: fix typo in Exclude_Object.md
...
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2022-06-03 18:11:35 -04:00
Frank Tackitt
638cd4d781
docs: add exclude_object documentation
...
Also include sample macros to add M486 compatibility.
Signed-off-by: Franklyn Tackitt <git@frank.af>
Co-authored-by: Troy Jacobson <troy.d.jacobson@gmail.com>
2022-06-03 14:12:04 -04:00
Pedro Lamas
c16eab212e
virtual_sdcard: Adds on_error_gcode
...
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2022-06-03 11:26:34 -04:00
Mikkel Schmidt
af38d708cb
adxl345: Support recording data from multiple ADXL345's in one run, and more. ( #5224 )
...
Add PROBE and CHIP to TEST_RESONANCES
Since it's possible to specify more than one chip
in TEST_RESONANCES the CHIP parameter has been
renamed to CHIPS
Signed-off-by: Mikkel Schmidt <mikkel.schmidt@gmail.com>
2022-05-23 19:56:58 -04:00
Kevin O'Connor
c7e0372c5d
docs: Line wrapping in G-Codes.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-23 15:50:43 -04:00
Kevin Nguyen
3081899883
docs: Documentation on screws_tilt_calculate MAX_DEVIATION parameter ( #5522 )
...
Signed-off-by: Kevin Nguyen <ngynkvn@gmail.com>
2022-05-23 15:49:59 -04:00
camerony
f1c6f76a51
docs: Update Config_Reference.md z_hop speed ( #5514 )
...
The default z-hop speed is actually 15 mm/s according to the code in safe_z_home.py
Signed-off-by: Cameron River <camerony@gmail.com>
2022-05-23 15:05:53 -04:00
th33xitus
bbb06a014b
docs: fix links to Config_Reference.md
...
Signed-off-by: Dominik Willner <th33xitus@gmail.com>
2022-05-18 12:05:28 -04:00
Kevin O'Connor
1c18265a62
docs: Minor wording update to Code_Overview.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-17 11:55:17 -04:00
Kevin O'Connor
e8dc44a0ca
docs: Update Code_Overview.md with more realistic task timing guidelines
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-17 11:46:38 -04:00
Kevin O'Connor
95676343db
docs: Updates to Installation.md document
...
Recommend users obtain an example config file prior to starting the
installation.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-17 11:36:36 -04:00
Kevin O'Connor
be4b8b17f2
docs: Minor CanBoot documentation fixes
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-10 11:55:06 -04:00
Eric Callahan
95d06c95e3
docs: add CanBoot documentation to bootloaders.md
...
Signed-off-by: Eric Callahan <arksine.code@gmail.com>
2022-05-10 11:48:06 -04:00
3-5-20
b44eee609a
docs: Update G-Codes.md ( #5487 )
...
Typo correction: my -> by
Signed-off-by: Oscar Cetnarowski <0.007954545@proton.me>
2022-05-09 22:20:06 -04:00
Kevin O'Connor
661f5b08c8
docs: Fix typo in Benchmarks.md
...
Reported by @kaidegit.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-06 14:54:50 -04:00
Kevin O'Connor
c4232bea2e
docs: Note pins used for stm32flash in Bootloaders.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-05-04 13:54:42 -04:00
Kevin O'Connor
722ad4a1d2
docs: Update Example_Configs.md to note that baud should be 250000
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-30 14:51:14 -04:00
Kevin O'Connor
e43fd4fab0
docs: Note to run DELTA_CALIBRATE before DELTA_ANALYZE in Delta_Calibrate.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-29 13:58:05 -04:00
Kevin O'Connor
1eb6afdbe5
docs: List only micro-controller names in benchmarks table in Features.md
...
There is concern that some users are interpreting the benchmark table
in Features.md as a list of "supported boards" or possibly
"recommended boards". This was not the intent.
Remove the board names from the list to make it more clear the intent
is only to describe the benchmarks.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-29 12:20:41 -04:00
Kevin O'Connor
07a90902a5
docs: Improve wording of screws_tilt_adjust in Config_Reference.md
...
Reported by @JamesH1978.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-23 21:22:02 -04:00
Kevin O'Connor
a02da85101
docs: Fix typo in query_adc section of G-Codes.md
...
Reported by @jakep82.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-21 19:20:46 -04:00
Kevin O'Connor
5f0885958d
neopixel: Support chains with a mix of color_order
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-18 10:16:10 -04:00
alstoepp
44567879f6
stm32: Add STM32F072 16KiB bootloader option ( #5404 )
...
Signed-off-by: Alexander Stöpperger <a.stoepperger@gmx-topmail.de>
2022-04-13 11:22:04 -04:00
Kevin O'Connor
4a8a76ead8
docs: Update temperature_fan PID documentation in Config_Reference.md
...
Reported by @dewi-ny-je.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-11 11:46:24 -04:00
Karl Bowden
5d82be2f5d
docs: Add link to linux mcu neopixels config docs ( #5402 )
...
The reference to the linux mcu was helpful to understand what a linux mcu was but didn't help with understanding the technical reasons why it's not supported.
Signed-off-by: Karl Bowden <karl@bearded.sexy>
2022-04-11 10:35:38 -04:00
Kevin O'Connor
4d4c8d8f94
docs: Add link to Moonraker in API_Server.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-09 19:32:38 -04:00
Kevin O'Connor
6e61e47a23
docs: Fix smarteffector link in G-Codes.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-09 19:13:30 -04:00
Kevin O'Connor
05330fd3e5
docs: Minor updates to SmartEffector docs
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-09 19:10:16 -04:00
Dmitry Butyugin
2060a6908f
smart_effector: Config and command reference
...
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2022-04-09 19:04:57 -04:00
cbc02009
f3b995227a
docster: Fix incorrect default value for max_freq
2022-04-09 16:31:23 -04:00
Kevin O'Connor
7c5b7191c3
docs: Update wording of "quality improvement" section of CONTRIBUTING.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-08 09:56:22 -04:00
Kevin O'Connor
5a409d5d31
docs: Provide more information on PID in Config_Reference.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-07 12:30:02 -04:00
Kevin O'Connor
647a1cd8ca
temperature_fan: Remove deprecated pid_integral_max option
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-07 12:10:48 -04:00
Kevin O'Connor
555ac58a3f
pca9632: Add support for configurable color_order
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-07 11:48:25 -04:00
Kevin O'Connor
f0700c0985
pca9632: Support using hardware I2C
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-07 11:43:52 -04:00
Yifei Ding
61792e3e31
_klipper3d: Specify mkdocs language config options
...
Signed-off-by: Yifei Ding <yifeiding@protonmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-06 19:04:48 -04:00
Yifei Ding
b35b6cb10b
_klipper3d: New language translation deployment
...
Signed-off-by: Yifei Ding <yifeiding@protonmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-06 19:04:48 -04:00
Kevin O'Connor
444d209cce
_klipper3d: Remove translation stubs
...
Support for language translations on the klipper3d.org site was
disabled in commit c067d4df
. Fully remove the support in this commit.
This is in preparation for an alternate implementation.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-06 19:04:48 -04:00
Kevin O'Connor
dc7b02f329
neopixel: Support arbitrary RGBW strings in color_order config
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-06 09:27:36 -04:00
Kevin O'Connor
92de6e91dc
docs: Note that "minutes" in screws_tilt_adjust means minutes of a clock face
...
Reported by @kubik369 and @Sineos.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-04-05 20:35:56 -04:00
Kevin O'Connor
e6bfc4c9aa
led: Support setting display_template parameters via SET_LED_TEMPLATE
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-31 13:08:12 -04:00
Kevin O'Connor
1ab3ac39e4
led: Support automated LED updates based on display_template results
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-31 13:08:12 -04:00
Kevin O'Connor
35ff49e546
docs: Note that neopixel doesn't work on "linux mcu"
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-31 13:08:12 -04:00
Kevin O'Connor
a7f69caa37
docs: Note change to neopixel/dotstar API status fields
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-31 13:08:12 -04:00
Kevin O'Connor
96795def9c
led: Add support for PWM controlled LEDs
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-31 13:08:12 -04:00
Kevin O'Connor
3340bb2ffd
docs: Add explicit Jinja2 prerequisite to mkdocs-requirements.txt
...
Avoid build failures by adding explicit Jinja2 version.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-29 20:40:48 -04:00
Kevin O'Connor
4d1c3478ab
angle: Add support for reading tle5012b chip registers (for debugging)
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-29 20:34:46 -04:00
Kevin O'Connor
1b08553a42
angle: Report tle5012b temperature
...
Export the tle5012b temperature readings when performing measurements.
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-29 20:34:46 -04:00
Kevin O'Connor
aec742ece4
angle: Initial support for angle sensor calibration
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-29 20:34:46 -04:00
Kevin O'Connor
74937326d3
sensor_angle: Add support for bulk querying of spi angle sensors
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-29 20:34:46 -04:00
Charles Pickering
7e654aed2f
docs: Fix config snippet for polar
...
Previously the section for stepper_bed was intertwined with printer. This commit makes it match (../config/example-polar.cfg).
Signed-off-by: Charles Pickering <me@charlespick.xyz>
2022-03-20 11:43:32 -04:00
Kevin O'Connor
b4b19b8fc1
docs: Add a link to Rotation_Distance.md in Example_Configs.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-17 21:50:33 -04:00
Kevin O'Connor
d7f8bf351f
docs: Fix section headers of [display] sections in Config_Reference.md
...
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-03-16 12:04:41 -04:00