codeboxide / codebox Goto Github PK
View Code? Open in Web Editor NEWOpen source cloud & desktop IDE
Home Page: https://www.codebox.io
License: Apache License 2.0
Open source cloud & desktop IDE
Home Page: https://www.codebox.io
License: Apache License 2.0
Add list of collaborators to /collaborators
And add number of collaborators to /status
RPC method git/commits_pending returns some "random" commits and not juste the commits non-synced.
ENTER
key to submit (OK) the dialog (now it exists)If I start my codebox using option "-d" the terminal will still be in the codebox source code directory.
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 ...}
]
}
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.
Whenever a symbolic link points to a missing file, watchr
fails with ENOENT
this is caused because the file the symbolic link is pointing to is missing.
This is an issue with watchr
, but still we don't want to crash the entire app because of it.
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.
Limit results for search like 'p'
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
This is most likely a regression introduced by watchr changes in #50
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
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).
Need for a command (an event) in shell api to signal that the client side terminal resize.
For example :
PUT /test/hello.txt
will create the directory test and the file hello.txt
There is no reference to files created but still empty in /git/diff_working.
Same for directories
If a user join the codebox, He will stay in the collaborators list until the codebox restart.
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
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)
You can still see network activity in the console ...
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
Very simple to do using filesync module and new files manager (check markdown-previewer example).
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).
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
This is pretty easy. I've already got a working branch of ace with this working (updated).
Add a simple method for uploading file in the classic way (similar as https://github.com/FriendCode/friendcode-web/blob/master/friendcode_web/views/api/files/upload.py)
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",
}
Would be nice, so that tabs never overflow into the tab view
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
If pushing to https with no username and no password, it should give an error and the user should be able to configure in its settings an username and password.
Add "mtime" to /status which contain the timestamp of the last modification in the codebox.
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
Socket.io is not connected at first boot of VM (egenerate a lot of connexion error event)
Use the same norm as Gittle for infos returned from Codebox for GIT.
ENOENT,mkdir'/home/friendcode/tmp/addon113109-8-1093jik
Need for an option to define the temporary directory to use for addons installation.
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.
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
Add a "run" method which open a terminal with an heroku-like execution system.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.