phcode-dev / phoenix Goto Github PK
View Code? Open in Web Editor NEWPhoenix is a modern open-source Code Editor for the web, built for the browser.
Home Page: https://phcode.io
License: GNU Affero General Public License v3.0
Phoenix is a modern open-source Code Editor for the web, built for the browser.
Home Page: https://phcode.io
License: GNU Affero General Public License v3.0
eslint must run before a push is initialed.
We have removed this feature as part of node upgrade in the below pull requests.
PWA support for chrome was added in #101
The install UI should be inline with brackets ux.
The following console error was noted.
The require configs are optional. Create an empty requirejs-config.json
file {}
in each extension folder to fix the error.
Similar to #109
Remove brackets user analytics health data extension. We might want to consider some other way to obtain phoenix feature usage information for improving phoenix.
Currently, we integrate with codacy for static analysis. Evaluate options:
Php tooling extension was removed as it was breaking builds due to possible private deps. As we are not targeting PHP as a primary dev env right now, removing the PHP extension.
Deprecate JavaScriptCodeHints extension based on node.
Phoenix will have a virtual in browser fs API compatible with nodeJS FS APIs. Currently, this is implemented with filer lib with indexedDB as the data storage backend. We will be adding support for the latest native file system access API in filer via #3 which will add local file access to phoenix leveraging the latest browser tech(Some limitations present, fs watch not supported in the browser yet). This issue tracks all tasks related to VFS creation in phoenix.
We have removed node deps for brackets runtime launch.
This is a limitation of FS Access APIS.
To track: WICG/file-system-access#89
Browser does not have nodejs env. We have to create remove node dep from brackets to port to the browser while maintaining the feature compatibility.
We have nuked git submodules and old npm-based third-party dependencies. we should be able to update our third-party deps dynamically and without much effort. Investigate ways to do this.
part of #5
As phoenix is web-only, removing platform specific menu impls.
Add support for ES6 Modules in all of the core code.
Reinstate browser native server functionality for live view.
We can simulate a web server in the browser using a mix of service workers and file system emulation layer pioneered by Mozilla bramble.
Related reading: https://humphd.github.io/browser-shell/
https://github.com/humphd/nohost
We should integrate with html5 app cache to improve our offline experience.
Raised issue with filer to evaluate using it as our fs backend.
filerjs/filer#786
As phoenix is designed to work from a static web page, we will be using native browser-based update mechanisms.
Filer seems to have a good testing framework. Does it suit to run brackets tests: https://github.com/filerjs/filer/blob/develop/CONTRIBUTING.md
It is used for the experimental multi-browser live preview feature. But the multi-browser feature will not work anyway within browsers with the current web tech.
A possible option is to have a backend server from core.ai to proxy the requests(either at core.ai or phoenix agent locally installed(defeating the purpose of a true web app)), but it might be less instant
, need to evaluate alternatives.
Bracket Debug test that pass and fail are listed here
Default project is the project loaded if phoenix can't find any other projects in scope.
Large folders like node modules copy will result in a large number of copy errors. This is likely due to file descriptor overflows in the os. Similarly, rename with drag and drop of large node modules folder errors out in phoenix.
TODO:
Extensions removed:
Build tools removed:
submodule to module notes:
Notes
Language server support is essential for the future of phcode.dev. Language servers brings in code auto completion and advanced code assistance features inside phoenix. Almost all implementations currently in existence require node and the few that work in the browser(ts language server) run only in vscode.dev.
We should find a way to browserify popular language servers in pure browser-based environments. This will help web-based code editors like us and others to provide advanced IDE-like features in the browser.
While this is fairly possible if we have a node engine(Eg. in native windows/mac/Linux) builds, We will hit a roadblock if we have to deploy a code editor in the browser or mobile devices like android or ios.
The best case is to be able to run language servers in the browser. As browser environments are readily available in mobile platforms as well as desktops/servers, this will help develop a universal language server component that can work in any device with a browser environment.
Phoenix should support the following language servers out of the box as a pure browser client:
Firefox does not support js initiated clipboard paste other than via extensions. Ctrl-c, Ctrl-V works though.
As we are using deprecated node version 6.17, we need to remove old npm-based deps to enable node to upgrade. The deps in the third-party folder are tested and functional, so we will be keeping a copy in the source.
Reinstating functionality is done in #10
We should fix the above workflows to get image previews.
Brackets currently have redundant dep management which is creating unnecessary build complexity. We need to address this. More details can be found here: adobe/brackets#12006 . This is preventing the upgrade of several dependencies to the latest version.
The server is integrated as a file directly into src/nohost-sw.js
. This is as the server had issues when we copied it to the third-party folder.
Related to no-host server integration: #18
We should:
Reinstate functionality removed as part of browser migration.
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.