Git Product home page Git Product logo

octolapse's Introduction

Octolapse

Octolapse is provided without warranties of any kind. By installing Octolapse, you agree to accept all liability for any damage caused directly or indirectly by Octolapse. Use caution and never leave your printer unattended.

What Octolapse Does

Octolapse is designed to make stabilized timelapses of your prints with as little hassle as possible, and it's extremely configurable. Now you can create a silky smooth timelapse without a custom camera mount, and no GCode customizations are required.

Octolapse moves the print bed and extruder into position before taking each snapshot, giving you a crisp image in every frame. Snapshots can be taken at each layer change, at specific height increments, after a period of time has elapsed, or when certain GCodes are detected.

Important: Octolapse requires OctoPrint v1.3.9 or higher, and some features require OctoPrint v1.3.10rc1 or above. You can check your OctoPrint version by looking in the lower left hand corner of your OctoPrint server home page.

Getting Started

Be sure to read the getting started guide on the Octolapse Wiki. This will save you a lot of hassle and allow you to unlock some of the best features of Octolapse.

Recent Changes

A lot has changed since the last release (v0.3.4). Over 18 months of development and over 600 commits went into this newest version. If you've had trouble installing or running Octolapse in the past, you just might want to try it again!

I have been focusing on 3 items for V0.4:

  1. Print Quality - This is my #1 concern, and a ton of effort has gone into reducing artifacts.
  2. Print Time - Lots of folks have complained about the print time impact of Octolapse, and this is a totally legitimate concern. This has been handled by adding new Smart triggers that minimize travel distance. In fact, the new Smart - Snap To Print trigger completely eliminates travel moves from the stabilization!
  3. Simplify Setup - Prior to V0.4, Octolapse was much more difficult to configure, especially for beginners. Incorrect setup leads to poor print quality as well as extreme frustration. This sad situation has been improved (but not completely solved) in several ways, including automatic slicer settings extraction and profile import/export/update functionality.

Highlights of V0.4

Python 3 and Octoprint 1.4.0 Support

Octolapse now runs on the newest versions of Python and is still backwards compatible with Python 2.7. Additionally, Octolapse runs on the newest version of OctoPrint.

Automatic Slicer Settings Detection

Octolapse can now extract all the required slicer settings directly from your GCode file. You no longer need to copy your slicer settings into Octolapse before every print. This is my favorite new feature!

Smart Triggers

The new smart triggers read your entire Gcode file before starting a print, giving them a lot more information to make better decisions. They automatically detect print features and prefer to take snapshots over infill, wipe towers, or interior perimeters, and they avoid taking snapshots (where possible) over exterior perimeters. They also try to start snapshots as close to the stabilization point as possible, reducing travel. This all adds up to improvements in quality and a reduction in print time. Plus, you will get to see a preview of your timelapse before your print starts. Octolapse will inform you of potential problems and will help you to fix them. If you don't like what you see, you can cancel the print and change your settings saving you time and effort.

Improved Interface

Thanks to UX advice from Derek73, the Octolapse tab has been greatly improved. Highlights include: a larger snapshot preview, shortcuts to the Octolapse settings pages, video and image file browsers, rendering progress, unfinished rendering recovery, new and improved informational panels, and a more intuitive design.

Import/Export/Download and Automatically Update Settings

Octolapse now has its own profile repository! Access a library of pre-configured profiles and download, customize, and share your settings with the world! You can export and import individual profiles or all of your Octolapse settings. If newer settings are available from the repository, Octolapse will notify you and can automatically update any of the pre-configured profiles.

Enhanced Rendering Capabilities

Now you can see detailed rendering progress and retry or alter renderings that never finished. I've added beta support for the H.265 codec (most Raspberry Pis don't have the memory for this though). I added new rendering overlay tokens, text outlining, and a default font for simplified setup.

Browse Videos and Image Archives

I've finally added native file browsers to Octolapse! Now you can download, sort, or delete timelapses, all without leaving the Octolapse tab. If you enable the new archive images feature, you can also download snapshot images or re-render them using different settings. I've even added the ability to upload images into Octolapse!

Better Camera Controls

Octolapse already included the ability to control camera settings like focus, exposure, and white balance. In the new version, Octolapse detects your camera's capabilities and renders a control page dynamically. Octolapse even has enhanced custom control pages for some cameras (like the Raspberry Pi cameras and many Logitech models). You can now watch your image change in real time as you adjust the settings. You can even stabilize your extruder to make adjusting the focus a snap! Requires mjpg-streamer. Not compatible with Octoprint Anywhere or The Spaghetti Detective.

Integrated Help System

Octolapse now provides documentation for every single setting, and it's all built-in. Get your questions answered quickly by clicking on the help links (blue question marks). Many error popups now also have a help button explaining what the problem is and how to fix it. I've also added versioneer, including a link within the Octolapse tab that points directly to the release notes or commit specific to the version you have installed.

Help With Common Print Start Issues
Help for Common Print Start Issues
Automatic Detection of Print Quality Issues, With Help
Automatic Detection of Print Quality Issues, With Help
Integrated Help Links in the Octolapse Tab
Integrated Help Links on the Octolapse Tab
Integrated Help Links Within the Octolapse Profiles
Integrated Help Links Within Each Profile

Improved Camera Scripts and Tests

Before and After snapshot Gcode scripts allow you to run custom Gcode before and/or after every snapshot. A new After Print Ends script is now available. All bash/bat scripts now have test buttons, making it much easier to test your custom scripts.

Additional Camera Scripts and Tests
Additional Camera Scripts and Tests

New @OCTOLAPSE Commands

Now you can use Gcode to tell Octolapse when to take snapshots. You can prevent Octolapse from taking snapshots within your start/end Gcode with the new @OCTOLAPSE STOP-SNAPSHOTS and @OCTOLAPSE START-SNAPSHOTS commands. You can also use the new @OCTOLAPSE TAKE-SNAPSHOT command to trigger a snapshot when using one of the GCode triggers.

Alpha Support for Multi-Material/Multi-Extruder Printers

Octolapse now supports per-extruder/material slicer settings and offsets. It's even compatible with the Automatic Slicer Settings Detection feature. This is an Alpha feature, so it is probably a bit rough since I don't actually own a multi-extruder printer.

Better Logging

I've added a custom module based logging system that should help with debugging. You can also clear and download logs right from your Logging profile. Exceptions are now logged automatically. This enhancement is really for me, but I thought I'd mention it here.

More Efficient Parsing and Processing

In order to make the new Smart triggers as fast as possible and to reduce the CPU load, I've created a new GCode parser and position processor entirely in C++. This has increased performance by several orders of magnitude, especially when using the new Smart triggers.

Faster Snapshots

Octolapse now captures snapshots more quickly and performs all image manipulations on a background thread. This reduces print time and improves quality.

G2/G3 (Arc) Support

Octolapse now supports Arc commands. Now you can use the Arc Welder plugin with Octolapse.

Support Octolapse Development

Please consider supporting my work by becoming a patron, a Github Sponsor, or by sending me beer money via PayPal. Almost all of the donations go towards offsetting the cost of development, which is substantial. Plus it always makes my day! If you cannot afford to leave a tip or just don't want to, that is fine too! Octolapse is free and open source after all.

More Octolapses




History of Octolapse

I got the idea for Octolapse when I attempted to manually make a stabilized timelapse by hand-editing my GCode files. To accomplish this I used the excellent and simple GCode System Commands plugin. The timelapse worked great, but it required a lot of effort which I didn't want to put in every time. I received several requests for instructions on how to create a stabilized timelapse, so I decided to give plugin development a go. At that time I had never written any OctoPrint plugins (or programmed Python or Knockout or anything open source), but figured I could contribute something good to the community.

On Jauary 20, 2018, I released the alpha version of Octolapse, and on March 24, 2018, I released the plugin on the OctoPrint Plugin Repository. Octolapse grew up pretty quickly, and on November 15, 2018, I released V0.3.4. Over a year and a half and 640+ commits later, I finally completed V0.4.0, which is a major rewrite of the software and includes all of the features discussed above. It took a long time to get here.

Octolapse is my "thank you" to all of the makers out there who have contributed time and effort to this hobby. I hope that Octolapse can spread information about the 3D printing hobby by attracting a few new users.

Report Problems and Suggest Improvements

If you think you have found a bug in Octolapse, please see this guide for reporting issues. Maybe you have an idea for a cool new feature? Find out how to let me know about your idea here.

License

View the Octolapse license.


Copyright (C) 2023 Brad Hochgesang - [email protected]

octolapse's People

Contributors

adam6806 avatar formerlurker avatar matt-lethargic avatar mattaster avatar moredread avatar mox46 avatar ninjamojo avatar philipp avatar polymetric avatar shadowen avatar skorokithakis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

octolapse's Issues

Snapshot/Timelapse prevew popup won't close

The popup doesn't always close. Somehow it seems to affect the settings popups too (probably a selector hitting two dialogs). Need to recreate the popup each time it opens and make sure the selectors are specific.

Info Logging Review

It's possible that some of the logging options aren't doing exactly what they say. I built them to reduce the amount of logging information I was getting while debugging, and my late night debug fest code is not necessarilly the best code there is.

Printing from SD

Octolapse does not currently work when printing from the SD card. I don't think this is possible at the moment, but if anyone has any ideas create an issue and submit it. I"m going to mark this as don't fix, but will leave it up for a while in case anyone has a suggestion.

Plugin can't detect home GCode

Hi,

I wanted to get started with OctoLapse so I downloaded and configured everything. I started a print in test mode and noticed the plugin never seemed to detect the homing (It was still waiting for coordinates).

I am using a Wanhao Duplicator i3 v2 modded with a RAMPS 1.4. I use Slic3r (Prusa Edition) to slice. The home command is G28.

Here are the first few lines of GCode:

M107
M190 S60 ; set bed temperature and wait for it to be reached
M104 S210 ; set temperature
G21        ;metric values
G90        ;absolute positioning
M82        ;set extruder to absolute mode
M107       ;start with the fan off
G28 X0 Y0  ;move X/Y to min endstops
G28 Z0     ;move Z to min endstops
G1 Z15.0 F80 ;move the platform down 15mm
G92 E0                  ;zero the extruded length
G1 F80
;Put printing message on LCD screen
M117 Printing...

; Filament gcode

M109 S210 ; set temperature and wait for it to be reached
G21 ; set units to millimeters
G90 ; use absolute coordinates
M82 ; use absolute distances for extrusion
G92 E0
G1 E-2.50000 F2400.00000

Also, I noticed that "View as larger image" and the button to its upper right corner are not working. What are they supposed to do? I know my camera is working as configured (both your plugin and the Octoprint timelapse plugin confirm the camera works.

Add Test Mode to Debug Settings

Print in Test Mode

Add an option within the debug settings to allow the user to test their camera settings on their actual GCode file, without extruding any filament or heating up the bed/nozzle. This will also make debugging faster.

Requires that we strip off all commands that move the extruder in any way, and that we completely suppress any commands that heat up the bed or nozzle, or switch tools. All of these commands should be sent to our position tracker BEFORE being stripped or suppressed.

unable to create stabilization profile with all disabled

Attempting to create a new stabilization profile that has both X and Y stabilization options set to 'Disabled' silently fails.

Workaround: You CAN create it with either set to another value, then edit them later to get the desired "just take the picture wherever you are" setting.

Silent failure when no webcam selected

When running without OctoPrint or OctoLapse webcam configured (properly), you may get some of the following errors:

2018-02-23 12:08:54,313 Traceback (most recent call last):
  File "/home/wesley/workspace/OctoPrint/src/octoprint/plugins/Octolapse/octoprint_octolapse/__init__.py", line 299, in CopyOctoprintDefaultSettings
    o = urlparse(snapshotUrl)
  File "/usr/lib/python2.7/urlparse.py", line 143, in urlparse
    tuple = urlsplit(url, scheme, allow_fragments)
  File "/usr/lib/python2.7/urlparse.py", line 182, in urlsplit
    i = url.find(':')
AttributeError: 'NoneType' object has no attribute 'find'
2018-02-23 12:22:57,992 Printer event received:PrinterStateChanged.
2018-02-23 12:22:57,993 Printer event received:PrintStarted.
2018-02-23 12:22:57,993 State Change:PrintStarted.
2018-02-23 12:22:57,994 Traceback (most recent call last):
  File "/home/wesley/workspace/OctoPrint/src/octoprint/plugins/Octolapse/octoprint_octolapse/__init__.py", line 437, in on_event
    self.OnPrintStart(origin)
  File "/home/wesley/workspace/OctoPrint/src/octoprint/plugins/Octolapse/octoprint_octolapse/__init__.py", line 481, in OnPrintStart
    result = self.StartTimelapse()
  File "/home/wesley/workspace/OctoPrint/src/octoprint/plugins/Octolapse/octoprint_octolapse/__init__.py", line 507, in StartTimelapse
    if(not os.path.isfile(ffmpegPath)):
  File "/home/wesley/workspace/OctoPrint/octoprint_venv/lib/python2.7/genericpath.py", line 37, in isfile
    st = os.stat(path)
TypeError: coercing to Unicode: need string or buffer, NoneType found

Nothing is displayed on screen at all, so you should probably display some sort of warning...

Allow ZHop to be disabled

Since some folks may have z-hop disabled completely, I'm going to allow ZHop = 0, which means IsZHop is always true, so the zhop snapshot restrictions will not have any affect.

It might be reasonable to add an option to enable/disable zhop in the snapshot settings too, so that users who don't want zhop aren't forced to use it for snapshot travels.

Time lapse comparison

I did my first real print and it worked quite well. The only issue that I ran into was that the camera lags behind a bit because of the limitations of the Pi, so I increased the time to wait for the photo to 1 second. I also created a "on z change" time lapse for comparison. Both look pretty bad image quality wise because my enclosure isn't lit very well and thus the ISO value needs to be pretty high, but your plugin does a really good job of moving the head to the exact same spot without much overhead.

Comparison.zip

G92 Command Requires Testing

When I started Octolapse, I was not aware this command existed. It took some substantial modification to support G92. This command has now been implemented, but not well tested. In fact, I'm not sure if I completely understand the expected behavior of this command in all cases, so my implementation is most likely incorrect. I've tested a lot of GCode that included G92 for extruder position, but not X,Y,Z, so beware.

Printer Profile - Monoprice Maker Select v2/Wanhao Duplicator i3'

I would like to acquire a general use printer profile for the Monoprice Maker Select v2/Wanhao Duplicator i3. A good clean description would be a plus!

If you have one, please consider posting your printer profile. You can either post the settings manually, take screen shots of your configuration, or export your settings.json file which can be downloaded within the Octolapse settings screen.

Thanks!

Create a current settings summary knockout template for the main tab.

Show all currently selected profiles in a knockout template. Keep it short and sweet so it doesn't take up too much space. Depending on what it ends up looking like it could go under the current status template on the Octolapse tab, or it could be integrated into the same area as the current tab controls.

A bonus feature would be a profile summary for each selected profile (printer, stabilization, etc..). This could be as simple as a tooltip, or it could be a popup dialog.

Add Post-Roll and Pre-Roll

Add Pre and Post-Roll to rendering options and ffmpeg rendering. Pre and Post-Roll should be in seconds and be calculated based on the framerate.

Implement 'No Pause' timelapses

Using the new job_on_hold feature, eliminate the need to pause the print at all, improving the look of the UI and slightly reducing any delay between the the snapshot start routine and the initial retract/lift.

ZHop Detection Flawed

I've discovered a problem with the ZHop detection. When I implemented 'Undo' for the position and extruder classes, The ZHop detection used to have start-hopped-end type state tracking, but that became unnecessary when I switched to storing the states in a list. I have replaced the position.IsZHop code to now only report on the current state, and the Triggers simply check the previous IsZhop state (since we won't actually execute the gcode that triggers the snapshot until after we take the snapshot) to see if it's time to trigger.

I've tested in the virtual printer, but have not tested live.

Default Axis Mode (relative/absolute/require explicit)

All current branches of Octolapse assume that the extruder is in relative mode by default. This does not appear to be true for many (all?) printers. For the time being I'll set the extruder to absolute by default.

Do any printers have relative mode as the default for the extruder? If so, I'll have to add another setting to the printer profile.

Create missing tests for test_position.py

While attempting to get Octolapse working for the Anet A8, I stumbled on some new facts:

  1. Some gcode does not specify relative/absolute extruder.
  2. Some printers extrude well above the build plate to prime.

I was aware of item 2, but I didn't realize what affect it would have on the layer trigger.

To solve these problems some new settings were added to the printer profile (* is the default):

xyz_axis_default_mode - ('relative','absolute','require-explicit' *) Note that if this setting is 'require-explicit' and we haven't seen the proper gcodes(g90/g91), we might not be able to track the axes positions.

extruder_axis_default_mode - ('relative','absolute','require-explicit' *) This affects lots of things. Note that if this setting is 'require-explicit' and we haven't seen the proper gcodes(m82/m83), we might not be able to track the extruder position.

priming_height - when 0 disabled. when > 0 layer/height detection should not work until there is an
actual extrusion BELOW the priming_height. This affects position.py layer and height calculation

g90_influences_extruder - ('true','false','use-octoprint-settings'*) This was added for consistency. Previously we were always using the octoprint setting. This way it's easy for users to see that octolapse cares about this setting, and it can be easily changed without exiting the plugin settings. This affects position.py (g90/g91 command).

Tests need to be written for each possible option for each of the three new settings. This could be done by setting the appropriate settings you want to test, creating a Position object, and sending gcode commands via the .update function. The position states are stored in a member called Positions (array of Pos objects, effectively a circular queue of length 5). This is where you can find which layer/height we are on, the axes positions, etc..

Printer Profile - Anet A8 - Compatibility check

I've gotten word that some strange things are going on for at least one user who attempted to use Octolapse with an Anet A8. The specific complaint was a 'jittery axis' that went away when the plugin was uninstalled.

There could very well be some gcode issues if I've never come across the commands used, or if some commands aren't parsing due to unknown parameters. It's probably not a profile issue, but the end result of testing/fixing an Anet A8 should also be a default printer profile.

Todo: Acquire some sliced gcode (preferable from a default profile for the Anet A8, provided by the MFG, but I'm not sure if they supply one). Run tests in the virtual printer and see if there are any problems.

Trigger Position Restrictions

Add a feature to restrict snapshot positions to certain areas for each trigger. The fences can be either rectangular or circular. Not sure if this would be useful for Gcode Triggers, but I'll put it there anyway to be consistent.

The user should be able to add as many position restrictions as they want. If a snapshot would normally trigger, but the axes are not in the proper place, the trigger will be put into a waiting state until a movement puts it inside one of these 'fences'.

A good bonus feature would be to add another drop down to each restriction that says something like 'allow' and 'prevent'.

This is in-process

Add units to number input fields

Especially the printer configuration page has many number input fields like retraction length that need a unit to make sense. The Octoprint printer configuration page has input boxes with units, so I assume these could be used here?

Floating Point Math

I've noticed some areas where floating point math may cause problems, but I have not resolved or located all of them. They could prevent proper extruder monitoring/zhop detection in some cases and result in missed/late snapshots. It might also cause octolapse to output some position detection errors to the logs while taking snapshots.

Improve temp snapshot cleaning

Currently this is handled in render.py, but it needs to be moved to snapshot.py because it belongs there logically.

Need to add options to only clean the most recent temp snapshots.
Need to add a menu option to clean all temp snapshots, even those from other prints.
Consider adding some additional cleaning options (clean all before print maybe?)

Test mode misses some commands

Occationally I've noticed that my plugin might miss the first few GCodes sent to the printer. This has only ever affected me while using the debugger, but I think it's possible that it could happen during a test print. This can have the effect of letting commands that should be suppressed/rewritten slip past my routines and make it to the printer. In the worst case these commands could heat up your bed or extruder. When using test mode make sure you keep an eye on your printer's fans, temperature, and extruder motor and ALWAYS unload your filament to be safe.

There are probably some additional commands that should be suppressed/rewritten for test mode that are not included. If you find any let me know.

Plugin doesn't activate

I have installed the plugin and followed the instructions, but I must have missed something because I can't get it to work. I restarted Octoprint and enabled the plugin, changed some printer settings and enabled test mode. When starting a print, the printer still heats up and doesn't pause between layers. The printer is a Prusa MK2s.

plugin_octolapse.log

10mm_calibration_cube.zip

settings.zip

Prusa MK2/MK2S/MK3 - Firmware 3.0.12

If you are using an Original Prusa printer, there is a possible issue in the firmware 3.0.12 (linear advance update) that causes lock-ups and, in the very worst case, out of order gcode execution when using Octolapse. I don't recommend using octoprint whith linear advance enabled for the time being.

I've been albe to work around this bug by by avoiding the Linear Advance profile within Slic3r prusa edition. I'm not sure if it's necessary, but I also changed the custom filament gcode found in Filament Settings->Custom G-Code to: M900 K0

I've heard that this bug has been fixed for the Mk3 in the latest release candidate firmware. See the release notes.

Sometimes fails to capture any snapshots

Sometimes Octolapse fails to capture any snapshots. After completing the print, the following error appears:

Octolapse has failed to render a timelapse. Reason:No frames were captured.

I have attached a log file where Octolapse properly captures snapshots until the print is cancelled and restarted. During the second print, no snapshots are captured.
plugin_octolapse_fail2.log

I have not been able to determine the conditions where Octolapse captures snapshots properly and when it does not. If I can help by performing any tests, please let me know.

Support non-cartesian printers

These are not currently supported. I hope to include support for these at some point, but I don't own one to test on currently.

Make GCode parsing case-insensitive

Some places in the code are still case-sensitive. I know the parsing front-end is mostly proof against this, but some of the internals will crash if provided a lowercase GCode (one of the tests is failing because of this :( ).

Low priority unless a user-affecting issue is discovered.

The original NIST GCode standard requires gcode interpreters to be case-insensitive, except for characters in comments. However, not all 3D printer firmwares conform to this and some recognise uppercase command letters and parameters only.

Priming throws off layer tracking

Priming is sometimes done quite high off of the build plate (Anet A8, probably many others). I am used to priming being done on the bed (Prusa Mk2/Mk3), which doesn't cause much of a problem.

A long while back I had a setting for a minimum height that needed to be reached before any snapshots could occur, but it wouldn't have solved this problem since the gcode I've seen homes, raises up, extrudes, then goes back down to print. What is needed is a printer setting called 'Priming Height". Any extrusion done on or above this height would be ignored by any layer detection that's going on.

Rendering frames off by one in pre-post roll

For some reason I was starting with frame 1, but it should be frame 0. Also need to add an error when only a single frame is taken (can't render with only a single frame really!)

Position Restrictions Indicator

Add an indicator on the snapshot profile add/edit page to show if any position restrictions are available. Currently these are stored within the advanced settings, and could easily be overlooked if one is reviewing settings before a print.

The indicator must be outside of the advanced area for each trigger, and plainly visible when any of the triggers are enabled.

Support Inverted Axis

These have not been tested. I was made aware of them while writing this plugin. It's possible these printers could work, but things will be a bit wonky for sure. I imagine the 'Front Left' stabilization preset could end up actually taking snapshots in the back right.

I don't think it would be too hard to fix this, or to add a settings to the printer profiles.

Fix All Tests

After a major rewrite I got lazy and didn't update my tests, now most of them are completely broken. Fix all these tests and keep them up to date, especially since the code is starting to stabilize.

Fix broken BetaDevelopment build

The most recent merge broke the build. Looks like several small issues regarding ')'s at the end of functions that were previously nested within ()s.

Test Center Orign Printer

Some printers have their origin's in the middle of the build plate. This is another thing I learned while writing this plugin. I'm pretty sure these will work if the settings are correct, but I don't have one to test it out.

Download settings.json

Add a button to download the settings.json file for debug/testing purposes. This should probably go in the debug tab.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.