Code Monkey home page Code Monkey logo

codebox's People

Contributors

aarono avatar cmorisse avatar colinprieto avatar cprietorod avatar henje avatar invokr avatar jancborchardt avatar lachlan avatar marksort avatar peterjosling avatar poulter7 avatar saiqulhaq avatar samypesse avatar steve384 avatar yuukanoo 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

codebox's Issues

Add webhook for user activities

The idea is a post request to a specify url every time user write something (with debounce of 5min) with data like that in json :

{
    "userId": "Aaron",
    "activity": [
        {... data for write event like you want ...}
    ]
}

Support editing buffers (unsaved files)

This goes along with #52 , it would be a plus to be able to edit buffers that aren't necessarily persisted to disk. I use "temporary" buffers in my code editor pretty often.

Use operative transforms (Improve code/sync reliability)

We really should use operative transforms and kill codefire code editing should not be blocked because of the network and work offline. Right now we block all editing with the slightest network issue/instability and also typing "too fast" won't break the system.

Operative transforms are more stable. I'm looking into to ShareJS (http://sharejs.org/) , it's matured a bit. And we can probably do most of things we need to do with it.

Lets explore this improvement. I think it would greatly improve the usability and we could maybe get it done in a day or two. We don't need to rebuild the protocol which is good.

Use standard save pattern

I think we're doing a mistake by having an autosave enabled by default.

Autosave makes sense in Excel or Word like documents, because the person is writing in them for a long time and they want to keep most of their work.

We should not autosave files for the code editor, saving files is like a "micro"-commit in the developers mind. We do it all the time and it's not an issue.

Plus it can cause issues if the person has their server started in debug mode, (flask, node ...) and is refreshing the server everytime a file in the folder is saved.

Autosave is legacy in my opinion, unless the whole codebox server crashes (which is unlikely), codebox isn't destroying codefire's buffers.

I think it's important to give the programmer control and there is no practical advantage to autosave, but there are practical annoyances.

Tell me what you think @SamyPesse

Error : execution system is down with 500 users online

Error: options.host is required to create an Agent.
at Object._getAgent (/usr/lib/node_modules/dynobox/node_modules/loadfire/node_modules/http-proxy/lib/node-http-proxy.js:346:11)
at setupProxy (/usr/lib/node_modules/dynobox/node_modules/loadfire/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js:81:36)
at new exports.HttpProxy (/usr/lib/node_modules/dynobox/node_modules/loadfire/node_modules/http-proxy/lib/node-http-proxy/http-proxy.js:86:3)
at GroupBalancer.handle (/usr/lib/node_modules/dynobox/node_modules/loadfire/lib/groupbalancer.js:95:25)
at _fulfilled (/usr/lib/node_modules/dynobox/node_modules/q/q.js:703:54)
at Promise.then.self.promiseDispatch.done (/usr/lib/node_modules/dynobox/node_modules/q/q.js:732:30)
at Promise.promise.promiseDispatch (/usr/lib/node_modules/dynobox/node_modules/q/q.js:669:13)
at Promise.then.self.promiseDispatch.threw (/usr/lib/node_modules/dynobox/node_modules/q/q.js:726:14)
at flush (/usr/lib/node_modules/dynobox/node_modules/q/q.js:106:17)
at process.startup.processNextTick.process._tickCallback (node.js:245:9)
ERROR: Loadfire does not know how to handle that request

Client error when opening a file named "package.json"

Here's the stacktrace :

Error in Deferred callbacks (file: undefined line: undefined) : ReferenceError :  taht is not defined ReferenceError: taht is not defined
    at http://localhost:8000/static/addons/editor/views/tab.js?bust=1383631025340&version=0.0.8:68:17
    at Class.extend._call (http://localhost:8000/static/application.js:22937:93)
    at Class.extend.reject (http://localhost:8000/static/application.js:22923:43)
    at http://localhost:8000/static/application.js:33904:31
    at Class.extend._call (http://localhost:8000/static/application.js:22937:93)
    at Class.extend.reject (http://localhost:8000/static/application.js:22923:43)
    at null.<anonymous> (http://localhost:8000/static/application.js:23028:19)
    at Class.extend.triggerEvents (http://localhost:8000/static/application.js:13578:67)
    at Class.extend.triggerOnly (http://localhost:8000/static/application.js:13561:30)
    at null.<anonymous> (http://localhost:8000/static/application.js:13571:34) 
ReferenceError {stack: "ReferenceError: taht is not defined↵    at http://…://localhost:8000/static/application.js:13571:34)"}
 application.js:22947
Class.extend._call application.js:22947
Class.extend.reject application.js:22923
(anonymous function) application.js:33904
Class.extend._call application.js:22937
Class.extend.reject application.js:22923
(anonymous function) application.js:23028
Class.extend.triggerEvents application.js:13578
Class.extend.triggerOnly application.js:13561
(anonymous function) application.js:13571
_.each._.forEach application.js:12259
Class.extend.trigger application.js:13568
xhr.$.ajax._.extend.error application.js:23008
fire application.js:16544
self.fireWith application.js:16656
done application.js:21023
(anonymous function)

This only seems to occur with a file at the root called "package.json".

I haven't looked into this at all, but it looks like a typo + a mixup with file loading and plugin loading (wild guess).

Users list never empty

If a user join the codebox, He will stay in the collaborators list until the codebox restart.

Rename of directory: error

Error: Content-Type should be multipart
at Object.module.exports as handle
at next (/Users/samypesse/Desktop/Projects/codebox/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at Object.handle (/Users/samypesse/Desktop/Projects/codebox/lib/cb.server/main.js:68:20)
at next (/Users/samypesse/Desktop/Projects/codebox/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at Object.staticMiddleware as handle
at next (/Users/samypesse/Desktop/Projects/codebox/node_modules/express/node_modules/connect/lib/proto.js:190:15)
at app.use.workspace.getUser.then.fail.res.user (/Users/samypesse/Desktop/Projects/codebox/lib/cb.server/main.js:45:17)
at _fulfilled (/Users/samypesse/Desktop/Projects/codebox/node_modules/q/q.js:703:54)
at Promise.then.self.promiseDispatch.done (/Users/samypesse/Desktop/Projects/codebox/node_modules/q/q.js:732:30)
at Promise.promise.promiseDispatch (/Users/samypesse/Desktop/Projects/codebox/node_modules/q/q.js:669:13)

setImmediate only available in newer versions of NodeJS

setImmediate is only available on newer version of javascript and thus node. Since we're running node v0.8.8, this is causing an issue.

Here is a log dump :

[log][addons] Install dependencies for /home/codebox/.codebox-addons/heroku
[log][events] log : { type: 'log',
  section: 'addons',
  content:
   [ 'Install dependencies for',
     '/home/codebox/.codebox-addons/heroku' ] }
[error][addons] Error  setImmediate is not defined
[log][events] log : { type: 'error',
  section: 'addons',
  content: [ 'Error ', 'setImmediate is not defined' ] }
ReferenceError: setImmediate is not defined
    at exec (/opt/codebox/core/cb.addons/addon.js:31:5)
    at Addon.installDependencies (/opt/codebox/core/cb.addons/addon.js:152:16)
    at copyDefaultsAddons.then.then.then.then.then.register.addons.list (/opt/codebox/core/cb.addons/main.js:160:22)
    at _.map._.collect (/opt/codebox/node_modules/underscore/underscore.js:99:42)
    at _.each._.forEach (/opt/codebox/node_modules/underscore/underscore.js:86:24)
    at Function._.map._.collect (/opt/codebox/node_modules/underscore/underscore.js:98:5)
    at runAddonsOperation (/opt/codebox/core/cb.addons/main.js:63:28)
    at _fulfilled (/opt/codebox/node_modules/q/q.js:703:54)
    at Promise.then.self.promiseDispatch.done (/opt/codebox/node_modules/q/q.js:732:30)
    at Promise.promise.promiseDispatch (/opt/codebox/node_modules/q/q.js:669:13)

Search for files crash

TypeError: Function.prototype.apply: Arguments list has wrong type
17:40:43 web.1 | at /Users/samypesse/Desktop/Projects/codebox/lib/cb.search/search.js:18:29
17:40:43 web.1 | at Array.forEach (native)
17:40:43 web.1 | at resultReducer (/Users/samypesse/Desktop/Projects/codebox/lib/cb.search/search.js:10:22)
17:40:43 web.1 | at Array.reduce (native)
17:40:43 web.1 | at normalizeResults (/Users/samypesse/Desktop/Projects/codebox/lib/cb.search/search.js:25:20)
17:40:43 web.1 | at onExit (/Users/samypesse/Desktop/Projects/codebox/lib/cb.search/search.js:49:26)
17:40:43 web.1 | at ChildProcess.module.exports.exec (/Users/samypesse/Desktop/Projects/codebox/lib/cb.search/c9_search.js:86:17)
17:40:43 web.1 | at ChildProcess.EventEmitter.emit (events.js:91:17)
17:40:43 web.1 | at Process._handle.onexit (child_process.js:674:10)
17:40:43 web.1 | exited with code 1
17:40:43 system | sending SIGTERM to all processes

CodeMirror file editor

Very simple to do using filesync module and new files manager (check markdown-previewer example).

Reconnect terminals

Either we should reconnect terminals by opening an entirely new shell.

And/or

We should do this in socket.io-stream. And support some simple reconnection cases (but it'll be general to streams not specific to terminals).

Auth & Users

Base of permission system is already there. Need auth system for users. (Cookie based).

This could also be put in Loadfire for the first version

Ace/Doks Autocomplete

This is pretty easy. I've already got a working branch of ace with this working (updated).

Add method /git/commits

Add a method which lis the commits non-synced in the format (standard for FriendCode) :

{
    committer_email: "[email protected]",
    committer_name: "Samy Pessé"
    timestamp: 1378413057,
    sha: "1c94eff866ba11010b7fdf0df8726240729cc21b",
    message: "change version",
}

Tab focus/editor select

When opening a new file, all it's contents are already selected. That probably isn't desired (the cursor should be at the start of the file).

When switching a tab, one has to click inside the editor to start coding which isn't very practical/necessary. Changing tab should automatically set the focus to the editor inside that tab

Terminal resize issues

Not super urgent.

Sometimes the size of the HTML terminal is not in sync with the size of the pty.

And so it shows a strange behavior

Sane behavior when closing a tab

Either we should have some capped history of which tabs the user was visiting or we should set the active tab as the tab to the left (just before the closed tab).

Currently it jumps to the very first tab in the list all the time which is kind of awkward and damages the usability.

Use operative transforms

We really should use operative transforms and kill codefire code editing should not be blocked because of the network and work offline. Right now we block all editing with the slightest network issue/instability.

Operative transforms are more stable. I'm looking into to ShareJS (http://sharejs.org/) , it's matured a bit. And we can probably do most of things we need to do with it.

Lets explore this

Reflect tab dragging effects immediately

When dragging a tab, remove it from it's current position when it leaves the tab bar zone, and also insert it before dropping so it gives a "preview" effect.

This would be nice for the tab bar, not essential

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.