Giter Site home page Giter Site logo

joshmarinacci / electronide Goto Github PK

View Code? Open in Web Editor NEW
245.0 245.0 50.0 6.35 MB

New web based Arduino IDE

License: BSD 3-Clause "New" or "Revised" License

CSS 1.83% JavaScript 98.13% Arduino 0.01% Haxe 0.01% Nix 0.01% ABAP 0.01% ActionScript 0.01% Assembly 0.01% AutoHotkey 0.01% Shell 0.01% C++ 0.01% Cirru 0.01% Clojure 0.01% CoffeeScript 0.01% ColdFusion 0.01% C# 0.01% D 0.01% Dart 0.01% Erlang 0.01% C 0.01%

electronide's Introduction

Electron IDE

New web based Arduino IDE, not affiliated with the official Arduino projects.

Very early stages. Just compilation and basic editing works right now, plus some library stuff. You must be comfortable with the command line right now. All paths are currently hard coded for Mac.

To try it out do:

  • have NodeJS and NPM installed
  • check out the code: git clone https://github.com/joshmarinacci/ElectronIDE
  • install all deps with cd ElectronIDE; npm install
  • run node electron
  • open your browser to http://localhost:54329/

A note on Linux

In theory Electron should just work on Linux since it's just javascript underneath. However, some users have reported that some Linux distros (certainly Debian-based) have an existing program called node that is actually an ancient packet radio program. Try running node --version to make sure you really have NodeJS 10.x and not that other program. Uninstall it if you do. NodeJS might also be run as nodejs instead of node. On Ubuntu 14.04 we have reports that the nodejs-legacy package can successfully run Electron, which is to say you have to install it AND nodejs, which allows running it as node and nodejs.

What's New?

Version 0.4b3 released

Electron has a brand new UI built with UIKit and AngularJS. Electron works as a .app bundle now on Mac. Other platforms should use commandline install. settings.js is no longer used. Instead you can use the settings dialog. There are probably tons of bugs due to the UI changes. Please file issues. I'll get to them ASAP.

Version 0.1 released

I'm happy to announce Electron v0.1. This release has a ton of fixes to the toolchain. It should support 3rd party libs properly, and has preliminary support for Linux. I've also made a bunch of small GUI tweaks and the first attempt at a serial console.

For this release please test compiling all of your sketches to see where it breaks. Undoubtedly we will have more libraries and compiler fixes to add. File issues on the github project:

https://github.com/joshmarinacci/ElectronIDE

Special thanks to friends of the show Sean McCarthy, HippyJake, and Dean Iverson for their patches.

Thanks, Josh

Want to help?

Don't worry. There's tons to do.

If you want to help on the Node side, you can work on

  • support proper software reset on Unos (setting DTR high?)
  • figure out how to extract documentation from Arduino library source directly (doxygen?) see #56 for further discussion
  • help with Windows integration with the embedded webkit from Atom.io (Atom-Shell)

If you want to help on the HTML side, you can work on

  • Pick better defaults for the Ace editor. Syntax highlighting, themes, search, etc.

If you want to help with metadata, you can add to the repo:

  • new boards to the database
  • more extensive board information: number of pins, voltage, diagrams,
  • new common libraries to the database
  • more extensive lib info, like alternate versions of AccelStepper for other platforms

And of course everyone must test test test.

Roadmap

  • v0.1 work on the build toolchain. work on linux. properly async. autoinstall libs recursively.
  • v0.2 switch to downloading platform toolchains on demand from git repos. support linux and windows fully.
  • v0.3 work on new gui: better filepicker, library picker, serial port auto-connect,
  • v0.4 support RFDuino, Teensyduino, Trinket, other alt-platforms.

Future features:

  • firmata console
  • code completion
  • measurement console

Architecture

There are three components:

  • The NodeJS side handles actually compiling and uploading sketches, as well as all on disk tasks like installing libraries and opening sketches.
  • The HTML side which is the GUI. The text editor is using Ace
  • A metadata repo containing lists of all known boards and libraries, in machine readable form (JSON files). repo

Platform design:

The platform abstraction encompasses both the host operating system and the target platform. The target platform is larger than just a board. It is the architecture and surrounding details. Initally we have one platform: AVR.
With the Due we have two AVR and SAM, which is ARM based. Some Arduino derivatives are based on the AVR or ARM platforms, but have their own variations that we must account for. This may involve adding extra files, or modifying existing ones, or modifying the upload process. So, all of this needs to be accounted for in the ‘platform’ abstraction. that’s a tall order.

Since we probably won’t get it right the first time, the platform abstraction will be internal initially. It will not be in the arduino-data repo. updating the platforms will require updating the IDE.

A key feature of platforms is that they can be downloaded on demand, and only the parts needed for the target host are required. Eventually they will be fully versioned as well, but until we find definitive sources and version information, it will just come from static zips that I host.

The official Arduino IDE consists of the following parts:

  • exe, not needed for us
  • drivers, for now we assume that the user has installed drivers already. really only needed on Windows.
  • examples, we don’t include example code yet, so don’t worry about it.
  • hardware:
    • arduino: board defs, boot loaders, cores, variants. basically a bunch of hex files and C++ code
    • tools: the AVR toolchain
  • java: the core of the IDE. we don’t use it.
  • lib: support libs for the java IDE. don’t need.
  • libraries: source for the standard arduino libs. we do need theses
  • reference: copy of the web HTML docs. we aren’t doing docs yet, so don’t need it.
  • tools: a java based code mangler. I don’t think we need it.

This means we really just need the hardware dir and the libraries dir. Everything else can go. While there is some shared between platforms, (like the libraries dir) for now it will be just one big zip that gets downloaded.

electronide's People

Contributors

dan-lightsource avatar deanriverson avatar hippyjake avatar joshmarinacci avatar novasdream avatar pixnbits avatar wturyn avatar wxl 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  avatar  avatar  avatar  avatar  avatar

electronide's Issues

Linux Build Help

Hi there, new to Git projects. Probably made a stupid mistake but it's not building for me. Here is the output:

npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.
npm http GET https://registry.npmjs.org/serialport
npm http 304 https://registry.npmjs.org/serialport
npm http GET https://registry.npmjs.org/bindings
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/sf
npm http GET https://registry.npmjs.org/node-pre-gyp
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/nan
npm http 304 https://registry.npmjs.org/node-pre-gyp
npm http 304 https://registry.npmjs.org/optimist
npm http 200 https://registry.npmjs.org/bindings
npm http 304 https://registry.npmjs.org/nan
npm http GET https://registry.npmjs.org/bindings/-/bindings-1.1.1.tgz
npm http 200 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/async/-/async-0.1.18.tgz
npm http 200 https://registry.npmjs.org/sf
npm http GET https://registry.npmjs.org/sf/-/sf-0.1.6.tgz
npm http 200 https://registry.npmjs.org/bindings/-/bindings-1.1.1.tgz
npm http 200 https://registry.npmjs.org/async/-/async-0.1.18.tgz
npm http 200 https://registry.npmjs.org/sf/-/sf-0.1.6.tgz
npm http GET https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/wordwrap

[email protected] install /home/corky/Programming/Electron/ElectronIDE/node_modules/serialport
node-pre-gyp install --fallback-to-build

node-pre-gyp http GET https://node-serialport.s3.amazonaws.com/serialport/v1.4.0/Release/node-v11-linux-x64.tar.gz
node-pre-gyp http 200 https://node-serialport.s3.amazonaws.com/serialport/v1.4.0/Release/node-v11-linux-x64.tar.gz
[serialport] Success: "/home/corky/Programming/Electron/ElectronIDE/node_modules/serialport/build/serialport/v1.4.0/Release/node-v11-linux-x64/serialport.node" is installed
[email protected] node_modules/serialport
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
├── [email protected]
└── [email protected] ([email protected])

Here is my settings.js. I assumed you no longer have to change the path to metadata.repo:

//where your sketches live
exports.usersketches = "/home/corky/sketchbook/";

//where your personal libraries live. new libs will not go here
exports.userlibs = "/home/corky/sketchbook/Libraries";

// root of the regular Arduino IDE app
exports.root = "/usr/share/arduino/arduino";

//where new libs will be downlaoded to
exports.repos = "/home/corky/sketchbook/projects/junkrepos";

// ==============
// you shouldn't need to modify anything below this line
//template for new sketches
exports.sketchtemplate = "sketchtemplate.ino";

//path to the metadata repo
exports.datapath = "node_modules/arduinodata/libraries";
exports.boardpath = "node_modules/arduinodata/boards";

Sorry for the long post, I didn't want to cut out the successes in the build just in case they were important.

Tools tab selection not displaying correctly

Using Chromium 37.0.2062.120 on Ubuntu 14.04, clicking on each of the tools tabs (Console, Docs, Debug) shows the relevant panel but does not update the tab selection so it always looks like Console is selected.

Build a Serial Console

We need a serial console. It should show a live connection to the board, both output and a line for input. It should have settable serial port options (like baud rate) but some form of auto detection. It should disconnect and automatically reconnect before and after flashing. It should preserve the scroll back history across invocations until the user presses a clear button.

Multiple files open issue

When you open multiple files you have a issue about losse file modifications on change between files.

Link error messages to line numbers

When a compile error appears in the console it has a line number. Clicking on this error should jump you to the proper line in the source code.

boards?

Hey Josh,

Wondering if it would be better to make the other project an actual NPM module that you could just include? This seems it would make the process of getting going much more straight forward.

BTW, in boards.js it looks like there is a directory there hard coded to your machine.

Thanks for you work on this, it is looking pretty good so far, excited to help.

Error: Cannot find module 'serialport'

Hi,

I try to run ElectronIDE in Ubuntu 14.04 but I get "Error: Cannot find module 'serialport'". Thanks :)

dani@BigBoy:~/ElectronIDE$ nodejs electron
inside of the master controller
node version = { http_parser: '1.0',
node: '0.10.25',
v8: '3.14.5.9',
ares: '1.10.0',
uv: '0.10.23',
zlib: '1.2.8',
modules: '11',
openssl: '1.0.1f' }
os = linux
LOADING SETTINGS /home/dani/ElectronIDE/settings.json
ext settings = { theme: 'dark', anonymous_tracking: 'false' }
settings { datapath: '/home/dani/ElectronIDE/node_modules/arduinodata/libraries',
boardpath: '/home/dani/ElectronIDE/node_modules/arduinodata/boards',
sketchtemplate: 'sketchtemplate.ino' }
settings { datapath: '/home/dani/ElectronIDE/node_modules/arduinodata/libraries',
boardpath: '/home/dani/ElectronIDE/node_modules/arduinodata/boards',
sketchtemplate: 'sketchtemplate.ino',
theme: 'dark',
anonymous_tracking: 'false' }
about to load the serial port
error loading serial port
{ [Error: Cannot find module 'serialport'] code: 'MODULE_NOT_FOUND' }
Error: Cannot find module 'serialport'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (/home/dani/ElectronIDE/master.js:9:10)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)

module.js:340
throw err;
^
Error: Cannot find module 'serialport'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (/home/dani/ElectronIDE/serial.js:1:80)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
dani@BigBoy:~/ElectronIDE$

Fails to report error uploading hex to device

If ElectronIDE fails to upload a sketch to the Arduino device, it does not give a warning. On the contrary, it says:

uploaded
okay

This is true for example if avrdude is not found (see issue #41).
Desired behaviour is to detect failure of avrdude and report error, preferably in different colour. (Currently seems to use pink for a lot of messages - maybe use of red shades could be reserved for errors and change the normal messages to a more neutral colour.)

duplicate libs causes compile error

If you compile a sketch which uses a lib that another lib also uses, then the lib will get included twice, causing compile errors. ex:

including wire and adafruit_motorshield will fail to compile, because adafruit_motorshield also depends on wire.

Duplicate libs should be stripped before compiling.

support sketches with spaces

Under linux avr-g++ fails when passed a sketch with spaces in the name.

/home/sam/ElectronIDE/downloads/platforms/1.0.5/linux/hardware/tools/avr/bin/avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DARDUINO=105 -DUSB_VID=0x2341 -DUSB_PID=0x0043 -I/home/sam/ElectronIDE/downloads/platforms/1.0.5/linux/hardware/arduino/cores/arduino -I/home/sam/ElectronIDE/downloads/platforms/1.0.5/linux/hardware/arduino/variants/standard -I/home/sam/ownCloud/Electronics/sketchbook/Simple Onboard Blinker build/tmp/Simple Onboard Blinker.cpp -o build/out/Simple Onboard Blinker.cpp.o
avr-g++: Onboard: No such file or directory
avr-g++: Blinker: No such file or directory
avr-g++: build/tmp/Simple: No such file or directory
avr-g++: Onboard: No such file or directory
avr-g++: Blinker.cpp: No such file or directory
avr-g++: Onboard: No such file or directory
avr-g++: Blinker.cpp.o: No such file or directory
avr-g++: no input files

save sketches

Right now there is no way to actually save sketches. You can compile them, but your changes aren't saved to disk in the sketch folder.

Firmata support

implement firmata panel. button to install firmata, button to connect, discover all pins

Missing tar dependency

Cloning and running npm install then attempting to start (on a clean OS X machine with latest node) produced an error about being unable to find the tar module:

$ node electron.js                                          

module.js:340
    throw err;
          ^
Error: Cannot find module 'tar'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/Users/apiper/Development/github/ElectronIDE/platform.js:4:11)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)

Simply npm installing tar worked, so I guess this is just a package.json dependency issue.

npm install fails on Ubuntu 14.04

Running npm install gives the following warnings and errors:

npm WARN package.json [email protected] No repository field.
...

[email protected] install /home/brian/src/arduino/ElectronIDE/node_modules/serialport
node-pre-gyp install --fallback-to-build

npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read
/usr/share/doc/nodejs/README.Debian

npm ERR! weird error 1
npm ERR! not ok code 0

nodejs electron then fails.

settings file overwrites

"git pull" will reset your settings file.

recommend renaming to settings.js.example in the repo that would be copied to make the install specific one.

accessing local port throuht distant nodejs ?

Hi

(I didn't have tested it yet since I still didn't got my arduino :( ) But I would like to know if this would be possible ?

I mean run the nodejs and electronide on a server and plug the arduino on the local machine.
I don't think this is possible but it would be awesome.

edit: after some light research it seem there are jvs lib for accessing serial port.

Streamline the installation process

Hi, to make the installation smooth:

Remove the dependency on Arduino IDE.
Remove the dependency on arduino-data.

If you really need the latter, package it as a node module that you can pull in through npm.

Also make sure the defaults in settings.js are not set to your home directory. Set them to something that does not need to be adjusted. 🚣

And thanks a lot! 👍

show error for missing arduino ide

If the regular Arduino IDE with the compilers can't be found for some reason then compiling won't work. Currently it just writes in the console 'error undefined'. Instead it should show a human understandable error that will let the person know how to fix it.

Create more files in Sketch

If you try create another file using / will create another folder.

When you try delete you will receive a error.

old user libs

I'm not sure what exact end-game for this feature is, but it currently doesn't work at all.

this patch for libraries.js makes it work, if you add a file for each lib you need to use in node_modules/arduinodata/libraries with "oldlib" as the source.

@@ -10,7 +10,7 @@ var libs = null;
  
  function isInstalled() {
      //console.log('checking if',this.id,'is installed');
 -    if(this.source == 'ide') return true;
 +    if(this.source == 'ide' || this.source == 'oldlib') return true;
      if(fs.existsSync(settings.repos+'/'+this.id)) return true;
      return false;
  }
 @@ -31,6 +31,22 @@ function getIncludePaths(platform) {
          });
          return paths;
      }
 +    if(this.source == 'oldlib') {
 +        var path = settings.userlibs+'/'+this.location;
 +        //console.log("files = ",fs.readdirSync(path));
 +        var paths = [];
 +        paths.push(path);
 +        fs.readdirSync(path).forEach(function(filename) {
 +            if(fs.statSync(path+'/'+filename).isDirectory()) {
 +                if(filename != 'examples') {
 +                    //console.log("found a subdir of files. use it",filename);
 +                    paths.push(path+'/'+filename);
 +                }
 +            }
 +        });
 +        return paths;
 +  }
 +
      if(this.path) {
          return [settings.repos+'/'+this.id+'/'+this.path];
      }

Serial console not working on Ubuntu

The serial port window is populated with what looks like dummy text, e.g. "activate left sensor". Opening port and sending data does not seem to work on Ubuntu 14.04 with USB serial port. The port is detected correctly by Electron but attempts to use it in the console window fail.

Linux avrdude path

Under Linux, the avrdude binary is in different path:
arduino-1.0.5/hardware/tools/avrdude

Running sketch causes in console:
got new path /dev/ttyACM0
running /home/vip/bin/arduino-1.0.5/hardware/tools/avr/bin/avrdude -C/home/vip/bin/arduino-1.0.5/hardware/tools/avr/etc/avrdude.conf -v -v -v -patmega32u4 -cavr109 -P/dev/ttyACM0 -b57600 -D -Uflash:w:build/out/Blink.hex:i
sh: 1: /home/vip/bin/arduino-1.0.5/hardware/tools/avr/bin/avrdude: not found

Serial port and board not remembered between sessions

On Ubuntu 14.04 (not tested on other OS), port and board default to NONE and asdf each time a connection is made to ElectronIDE from Chromium browser. It would be desirable to remember the last selected in some form of persistent storage.

Board search fails

The select board type pull-down list shows three boards plus "More...". The "More..." option opens a search window which has a search box and a done button. Pressing "Done" seems to do nothing. Typing in to the search field seems to do nothing. Is this feature implemented yet? I see several board types described by json files in the board folder (node_modules/arduinodata/boards) but am unable to use any within the IDE.

Board Select

The auto-board select from port is good, but maybe it should be the advanced method. I'd imagine most people getting started with Arduino will know their board's model name more than they'll know the serial ports on their compy.

Here's a thought: instead of selecting the port (retain that in an advanced view), by default we have the user select their board and list the ports that are detected to have that board type attached.

We probably need the vendor and product IDs for all/most/common boards before moving to this enhancement, though.

Need documentation for Electron installation on Windows

Installing Electron on Windows is a real test of determination and luck. I presume someone has recently done a successful clean install so it would be great if they would document the process to help out those of us dealing with it for the first time. At the moment I have a page full of error messages and am not inclined to delve deeper into finding and installing old Microsoft development tool components so will just stick to using Electron on Mac OS.

Electron uses node-gyp, which depends on Python 2.7 and Visual Studio 2010. Setting up Python on Windows 7 is not difficult, but node-gyp depends on an old Visual C++ component (VCBuild.exe) that has subsequently been replaced by Microsoft in later versions (MSBuild.exe). The node-gyp wiki spells out a four part remove/install process including Visual Studio 2010, Windows SDK 7.1, then a Visual Studio 2010 service pack, then a Visual C++ compiler update for the Windows SDK 7.1 you just installed. Oh, and the Microsoft web site says that you need to register Visual Studio to use it longer than 30 days.

There's some discussion on StackOverflow that Visual Studio 2013 can be used instead, but it isn't clear whether that simplifies the process or not.

I realize Windows is a very unfriendly platform for open development, but wow...

what documentation to add and how to add it

the README says one of the wishlist items is:

figure out how to extract documentation from Arduino library source directly (doxygen?)

unfortunately the Arduino libraries are poorly documented, especially in relation to the actual reference. since there's no relationship between the two, clearly they don't use documentation generators (e.g. doxygen). sadly, none of this seems to be under public version control.

so we could pull off the website (oh yay, html parsing), but this kind of begs the question about what documentation we need. i think one of the goals with Electron is not to just be a great IDE, but to be more friendly to the first time Arduino user. think kids. how do we make it easy?? should we just pull the examples? they're easily found in the libraries. lots learn by example (here's an example for EEPROM). but maybe that's not enough. maybe we need both? neither? what about the actual language reference? i beg you to think about this and leave your thoughts here so we can move forward.

Result on linux

💩
$ npm install
npm WARN package.json [email protected] No repository field.
npm WARN package.json [email protected] No repository field.

$ node electron
inside of the libraries

fs.js:659
return binding.readdir(pathModule._makeLong(path));
^
Error: ENOENT, no such file or directory '/home/jake/sketchbook/projects/arduino-data/libraries'
at Object.fs.readdirSync (fs.js:659:18)
at Object.exports.loadLibraries (/home/jake/Documents/node/ElectronIDE/libraries.js:75:8)
at Object. (/home/jake/Documents/node/ElectronIDE/compile.js:4:35)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (/home/jake/Documents/node/ElectronIDE/electron.js:7:15)

My settings.js

//where your sketches live
exports.usersketches = "/home/jake/sketchbook/";

//where your personal libraries live. new libs will *not* go here
exports.userlibs = "/home/jake/sketchbook/Libraries";

// root of the regular Arduino IDE app
exports.root = "/usr/share/arduino/arduino";
//template for new sketches
exports.sketchtemplate = "sketchtemplate.ino";

//where new libs will be downlaoded to
exports.repos = "/home/jake/sketchbook/projects/junkrepos";

//path to the metadata repo
exports.datapath = "/home/jake/sketchbook/projects/arduino-data/libraries";

Not finding avrdude on linux (Ubuntu 14.04)

Having followed the README instructions to install ElectronIDE on Ubuntu14.04 I have a working copy but clicking on the run button fails to load hex to board. ElectronIDE attempts to access avrdude at:

$HOME/ElectronIDE/downloads/platforms/1.0.5/linux/hardware/tools/avr/bin/avrdude

but it is actually downloaded to:

$HOME/ElectronIDE/downloads/platforms/1.0.5/linux/hardware/tools/avrdude

Leonardo uploads

Leonardo boards and derivatives require a special serial handshake. We must implement this.

Add a preferences dialog

The prefs should be persistent across runs of the app. It should include:

  • dark/light them for the GUI and editor
  • font size for the editor (font choice?)
  • verbose compiler output
  • sketchbook location

Sketches can't be organized in sub-folders

My sketches folder doesn't just contain individual sketches, but also contains sub-folders that themselves contain sketches. This lets me organize sketches in groups, e.g. all my LED sketches go in a special sub-folder. However, Electron doesn't allow me to traverse those sub-folders through the navigation bar on the left side of the main page. It shows my top-level sub-folders but if I click on any of them I get an error message ("Error: EISDIR, illegal operation on a directory").

serial port tricks for Leonardo

the README mentions this and I have no idea what exactly it refers to, but having a Leonardo board, I'd be happy to help if you could elaborate a bit. 🔧

Tracking System

It would be nice to have a way to see what boards people are using, and detect errors. The system should:

  • be opt in. If you don't ask to turn it on then nothing is tracked.
  • track where in the world you are
  • track what boards you are using.
  • record compiler and upload errors
  • record the most popular libraries.

There should be a public webpage where you can see a map of the world and reports on the most popular boards, libs, etc.

linux path support

On linux it appears you must have arduino-core installed. Then you will get the avr compilers. They are not in the usual Arduino path structure, however. They will be installed in the regular /usr/bin/ directory. Also, the avrdude.conf path is slightly different. We should detect if on linux and use alternate paths.

https://packages.debian.org/sid/all/arduino-core/filelist

Manual Library Install

There should be a way to manually install libraries that aren't included in the arduino-data project.

Rename sketch

Currently there is no way to rename a sketch. It also gives you a random name instead of asking you for a name when you create a new sketch.

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.