Git Product home page Git Product logo

cloudpebble's Introduction

CloudPebble

CloudPebble is a web-based IDE for Pebble development. Email [email protected] for questions or support.

Getting Started

The easiest way to get a fully-functional copy of CloudPebble is using Docker and Docker Compose. Instructions can be found in the https://github.com/pebble/cloudpebble-composed repo.

To locally override the configuration, you can create a file at cloudpebble/settings_local.py and set the appropriate values there. Setting environment variables also works.

Note that you won't be able to set up integration with certain Pebble systems (e.g. Pebble SSO). This shouldn't usually matter; whenever these are used, an alternative route is provided and should be invoked in its absence.

Contributing

Fork the repo, create a branch, do your work, and make a pull request. Multiple commits are fine, provided they make logical sense. Please avoid commits that fix typos in prior commits.

If a change is a significant amount of work, it would probably be worth creating an issue to discuss it first. Pull requests are not automatically accepted (though they usually are).

cloudpebble's People

Contributors

amandacameron avatar cjwilliams avatar contre avatar cpfair avatar deviavir avatar ehershey avatar evinugur avatar gotling avatar hansott avatar hexxeh avatar katharine avatar lochotzke avatar math-foo avatar matthewtole avatar meiguro avatar pafcu avatar spacerat avatar thepaulv avatar thunsaker avatar torivon avatar xoneco 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  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

cloudpebble's Issues

Support pushing builds to Pebble appstore

Now that the CloudPebble authentication system has been replaced with the Pebble SSO, I would like to see the ability to push (successful) builds of apps to the Pebble appstore. This would require:

  1. Associating a CloudPebble project with a PAS item.
  2. Pebble providing an API for creating a new release of an app.
  3. CloudPebble having an area to enter release notes.

Add HTML editor

Many projects need HTML config file, so I think it should be included in the project (and imported/exported to GitHub when possible.)
It can be base for many improvements like auto-generation of config files(maybe with JS and C part as well), hosting the config file on Pebble server, or embed it into the JS file.
I'm guess there should be some good open source editor that is in similar enough environment to be easier to integrate.

Add History of IP

I'm using two-three internal networks, so I have to switch IP often depending on where I am. (also useful when developing with more than one phone)
Simplest is to change the input field in a way that browser will remember the IP, and let me select it (for example 192.168.1.5 or 172.20.1.7)
More advance manner for switching network is to select automatically according to current network IP that the commuter is using.
It's also possible to offer default IP of 127.0.0.1 if mobile device is recognized. (if there is no IP in history).
Note that downloading PBW from compile page using phone browser, can be faster than sending it from the computer.

Improve autocomplete to include user-defined entries

The current autocomplete lists are hardcoded and manually maintained.

It would be nice if the user's code – functions, structs, types, variables, etc. – could be made available too. Ideally local variables would also be displayed, respecting scoping rules.

Enable branch support for Github

I'd love a way to manage branches from within CloudPebble so I can work on a specific branch of a github project and not worry about having to create separate projects every time to work on master. Thank you!

Make available memory clearer

While CloudPebble does report memory consumption (and always has), this information is not given any context. The pebble build tool output in the build log is somewhat enlightening, but is hidden.

The UI should be updated to present some context to the "size" figure given – especially in relation to the 24 kB total. Perhaps a tiny bar chart/progress thing inline with the text would be nice.

Template appmessage doesn't work as expected

Hi,

I wanted to create a simple appmessage project and I started with the appmessage template.
Compilation went well but at runtime the message is not sent to the phone.
If I add logs in the error callback, I got :
out_failed_handler APP_MSG_SEND_TIMEOUT

After if I trigger the sendMessage method in a click handler (and not in the init methot), the message is not sent and I don't have any logs even in my out_failed_handler.

If I comment :
dict_write_cstring(iter, MESSAGE_KEY, "Hi Phone, I'm a Pebble!");

the message is sent and I get the js logs !

But in the js logs e.payload[0] prints undefined (e.payload.status prints 1)
(e.payload[1] prints undefine as e.payload.message does, normal because I have commented the sending)

Any idea ?

I'm on android 4.4.2 with pebble beta 11

Working with two instance of one project can cause loss of code updates

Writing about issue #16 reminded me this problem
If I keep two windows, one for compile log and one for code, occasionally (especially after returning from something else) I may go to source code in the tab I used for compiling, change something and lose all changes I did on the other window. (that I may have closed already because I had too many)
Maybe when switching into another file, a check if it was changed can be added to cover for change within another instance, so latest save will be loaded.
Another option is to save buffer of several last saves to allow selecting restore. (rescue the user from himself)
Recently someone complained on losing couple of hours of work, maybe it was for a similar reason.

Integrate Pebble Autoconfig

I am part of the Pebble Autoconfig team and we have created a project to help developers add configuration to their apps. We think it would be helpful to have it integrated in CloudPebble.

It uses jinja2 for generating code and html.

Would it be possible?

Forum post
Project

Prototype for all functions and coloring variables

Currently only Pebble functions are identified in the IDE. The general supported C function are not included. Will be nice to have them.
Also, classic smart editor feature of coloring reserved word is working nicely. Will be nice to have locally declared identifiers recognized (color/autocomplete), maybe start with what's declared in H files.
Can be good to have some color options as well.

Remove the UserVoice thing

The UserVoice tab at the bottom is not particularly friendly and is rather frustrating to actually use. Replace it with some sort of link here.

Requiring a GitHub account shouldn't be a problem for such feedback/reports – it's a developer tool anyway.

Simply.js simulator

We can relatively easily simulate simply.js apps without actually installing anything. It follows that we should do this.

(Dear observers: implementing this does not imply anything about a simulator for the native C SDK, which remains a challenging problem.)

Allow configuration screens in Simply.js apps

Currently our invocation of Simply.js does not behave brilliantly in tandem with custom configuration screens – but there is no particular reason for this to be true. We should provide the tools to build your own.

Improved 'Your projects' view

  1. Have the grid of projects sortable by at least name, edit date and build date.
  2. Be able to manage (i.e. delete) projects from this view.
  3. Move the Create and Import buttons to the top of the page

References to places in code should be linked

There are a number of places, mostly in logging output, where filenames and line numbers appear in the output. These should be clickable to jump to the relevant code.

Interesting problem: doing so must close the log view, thus clearing it and cancelling further inbound messages until it's reopened. Do we care?

Support multiple JavaScript files

It would be nice if we could support multiple JavaScript files and recombine them into something useful.

We should consider what the most useful way to go about this is – it may be enough to just concatenate everything, or we might have to do something clever.

Sync appinfo.json with GitHub

When you configure a project to automatically pull and build from a GitHub repository, it only updates the source files. It would be nice if it could also update the appinfo.json file (configured under 'Settings' in CloudPebble).

Improve developer connection support

Analytics indicate that a massive 23% of install attempts fail because the phone either doesn't respond or drops the connection. For comparison, 2% fail because the watch rejected it; 75% succeed.

Figure out how we can improve these figures.

Duplicate project support

If I want to use an existing project as a template for another one, I currently have to

i) save the current project as a ZIP file
ii) import that zip file into a new project
iii) go to the project settings and change the watch-face name (or whatever)

It would be easier to just use an existing project as a template for a new project (like you can currently pick Minimal as a template).

Improve crash reporting

When we have a crash in Pebble program we would like to have some clue by finding what line in the code is relevant to the crash.

CloudPebble should use two-space tabs

Two-space tabs is apparently the Pebble standard, and we should be consistent with it (even though I don't happen to like it…).

Unfortunately, this is actually non-trivial – in particular, CodeMirror does not handle backspacing space-tabs nicely; we'd probably want to improve that behaviour first.

An easy first step, at least visually, is to set the tab width to 2. That could mask the problem, though, which might actually be a step back.

Support running 2.0 apps directly on the watch

Under SDK 2.0, it is possible to communicate with the watch using WebSockets via the phone's Developer Mode.

We should use this to install apps, display live logs, and take screenshots!

[Errno 2] No such file or directory

I made a new project, added some files and coded a little bit. When I hit "Build", I got following error.
zrzut ekranu 2014-03-28 16 12 32
I had this error a while ago too and to work around it I exported my (previous) project and imported it as a new one. This time it also worked.

I think that this is connected with the fact I have more then 1 file. Previously it wasn't happening until I add more files.

Exported projects with jshint enabled will not build

Exported projects with jshint enabled won't build because the jshintrc file isn't exported. Either the jshintrc file needs to be included in exports, or jshint should always be disabled for exported builds. Probably the former.

(caused by #6).

Simply.js project code disappeared

I was converting my JS app with C frontend to Simply.js. I had the code just about done and suddenly I could not load the IDE. I have tried in several browsers all with the same result.
I click on app.js, it does the loading animation and then stays blank.
The settings and compilation pages load correctly, and my other projects' files do open in the IDE.

Image dithering

We should do something useful with non-b/w images.

This is also PBL-1095, because filing bugs in a bug tracker the developer can't see is effective.

Can't push to Github repository where im collaborator

I am trying to communicate with a public repo where I'm only collaborator with full access, so not the owner. CloudPebble has the following behaviour:

  • Push new commit ends with Error: no error
  • Pull new commit ends with Error: No GitHub repo defined.
  • Github settings I saved are not persisted, they disappear when I reload the website.

Is this an issue with CloudPebble or Github?

Include all the SDK examples

There is a facility for including SDK examples. In SDK 1 I included two; in SDK 2 there are none.

Now that we actually have import functionality we should include all of them.

(from: @sarfata)

Request TRI-COLOR LED emulator

Can you make like a emulator to code and try the new LED notification from Pebble Steel so we can test it , for the people that don't have a Pebble Steel but yes a simple Pebble . ?

CloudPebble should integrate SDK documentation

It would be really nice to see CloudPebble show inline documentation, for some value of 'inline'. This will take work in parsing both the user's current document and the documentation itself, and figuring out the UI to display it.

(cc: @cjwilliams)

Provide mobile-friendly rendition of the "compile" pane for users with unusual network topology

Some people are unable to connect their computer directly to their phone as a result of their network topology or other restrictions. We could just put the QR code back (it's actually still in there; it's just hidden…), but that still doesn't help iOS developers due to the restrictions on side-loading JavaScript.

Instead, we could provide the option to log in from a mobile device and get a mobile friendly layout that allows them to install/log/screenshot on 'localhost', as seen from the app. This does work now, but is difficult to actually use in practice.

Note that some users of potentially questionable sanity actually write code on their phones, so we have to handle that use case too.

Fresh vagrant CloudPebble fails to compile SDK 2 project due to missing websocket import

When using a fresh VM using vagrant up, compilation of a fresh SDK 2 project fails.

Steps to reproduce:

  1. git clone
  2. vagrant up
  3. In browser, create new account
  4. In browser, create new SDK 2 project
  5. Create a basic main.c
  6. Compile

What should happen:

  1. Success

What actually happens:

[DEBUG ] [Analytics] header: [...] category: install action: firstTime label: 2.0-BETA4 value: 0 [DEBUG ] [Analytics] header: [...] category: install action: import label: fail: missing import: No module named websocket value: 0 Traceback (most recent call last): File "/home/vagrant/sdk2/bin/../tools/pebble.py", line 14, in <module> import websocket ImportError: No module named websocket

simply.js support

Have some support for simply.js in CloudPebble.

Would require:

  • Button to create SimplyJS projects
  • Modifying the UI (we only need JS files; no resources or C files)
  • Multiple JS files (optional?)
  • Modifying the build process to hardcode a URL

Alexey wants this.

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.