Giter Site home page Giter Site logo

heyputer / puter Goto Github PK

View Code? Open in Web Editor NEW
16.9K 90.0 1.0K 10.21 MB

🌐 The Internet OS! Free, Open-Source, and Self-Hostable.

Home Page: https://puter.com

License: GNU Affero General Public License v3.0

JavaScript 96.16% CSS 2.68% HTML 1.01% Dockerfile 0.04% TypeScript 0.10% Shell 0.01%
desktop desktop-environment osjs web-desktop webtop cloud-os web-os javascript cloud os

puter's People

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

puter's Issues

`SyntaxError: Unexpected token '?'` after `npm start`

Hi
When I start puter with $ npm start obtain this error:

"$ npm start

[email protected] start
nodemon --exec "node dev-server.js"

[nodemon] 3.1.0
[nodemon] to restart at any time, enter rs
[nodemon] watching path(s): .
[nodemon] watching extensions: js,json,mjs,jsx,svg,css
[nodemon] starting node dev-server.js
/home/seby/puter/dev-server.js:9
const env = argv[2] ?? "dev";
^

SyntaxError: Unexpected token '?'
at wrapSafe (internal/modules/cjs/loader.js:915:16)
at Module._compile (internal/modules/cjs/loader.js:963:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
at Module.load (internal/modules/cjs/loader.js:863:32)
at Function.Module._load (internal/modules/cjs/loader.js:708:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting..."

This is a closed source project

Oh boy, where do I even start with this? A mockery of open source? No, that's too kind, this is more like open source crucifixion. The epitome of all things profane in the world of code, you've managed to make a farce of the one thing that separates us from the corporate, money-grabbing monopolists.

Your "open source" client for a closed service? That's a joke. I mean, are you trying to be funny? Because if it's humor you're going for, you might want to consider a career in stand-up comedy. You'll do less damage there.

Why did you even bother with the pretense of open source? Open source implies freedom, transparency, honesty - none of which I'm seeing here, buddy. It's like you're selling canned air for people to breathe.

In my four-and-a-half decades, I've seen some imbecilic abominations but, this... this is a new high in lows. Do you even understand what open source is? Do you? Because this, my dear friend, is a slap in the face to every developer who spends countless hours working on real open source projects.

How about trying to contribute something worthwhile to the community instead of writing a glorified API wrapper and slapping the open source label on it like it's some kind of badge of honor. It doesn't make your client less problematic, it just makes you look even more idiotic.

Oh, and on a side note: if you want to show off your programming skills, how about you release something that isn't a textbook example of how not to write software? You're making it cry.

So, in conclusion: clean up your act, learn what open source actually means, and start respecting the ethos of the community you're pretending to be part of. And for heaven's sake, please, take a C language course or two. It's just becoming embarrassing now.

Consider enabling PWA installation

It would be great if puter.com worked as a PWA. I tried installing it on my phone but the home screen icon simply opened the site in my default browser.

As a PWA, the address bar and other browser controls would be hidden, giving more space to work.

Have `npm start` comment on its own errors

When running npm start, there are errors that can happen based on the environment. For example, a version of node that we don't support or packages missing because npm install wasn't run. While we should state this in the README.md file, I think it would also be very helpful if the error messages for common first-time errors that we know about are more friendly then Syntax Error: Unexpected token '?'

Git & Github support in vscode

Hey guys, do you have road map to support git and github support in code? It will be really great feature for everybody using puter for development.

Btw, I really love the work you guys done.

The capture image button of the Camera is not working properly

I tried to capture images several times using the Camera application but the capture button is not working properly. I click multiple times, and then suddenly an image is captured. I don't know which click is working.
Another problem is that the captured image is not saved anywhere.

Help! I can't deploy to Cyclic

Hi! I have been trying to deploy to Cyclic for about 3 hours now. (I use Cyclic because I'm broke and I can't afford paid site hosting) I'm a bit of a beginner so sorry if I've made any stupid mistakes. I started by building it with npm run build. I then created index.html outside of the /dist directory. For the index.html file I used the provided code in the production tutorial. I then tried to deploy it to Cyclic, but it gave me some error about the package.json file saying that nodemon is for development only, not production. I set the root path and the output path just to /. I have even tried changing them both, but it hasn't helped. I've been playing around with the package.json file for a while now trying to get it to work. Here is the current package.json file:
{ "name": "puter.com", "version": "1.0.0", "author": "Puter Technologies Inc.", "license": "AGPL-3.0-only", "description": "Desktop environment in the browser!", "homepage": "https://puter.com", "directories": { "lib": "lib" }, "devDependencies": { "chalk": "^4.1.0", "clean-css": "^5.3.2", "html-entities": "^2.3.3", "webpack": "^5.88.2", "express": "^4.18.2", "nodemon": "^2.0.22", "uglify-js": "^3.17.4", "webpack-cli": "^5.1.1" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node --exec \"node dev-server.js\" ", "build": "node ./build.js" }, "nodemonConfig": { "ext": "js, json, mjs, jsx, svg, css", "ignore": [ "./dist/", "./node_modules/" ] } }

Here is a screenshot of the current error:
image

I'm new to Github, sorry if I formated the code wrong

I was reading the Cyclic docs, and it says that the failed to run error comes from the package.json not being in the build folder, but if the build folder is /, and the package.json is in that directory, why can't it run?

Note: Changing it back to nodemon in the start script allows it to work in the terminal, but not Cyclic.

Help would be appreciated. Thanks!

Delay Progress Window Display for Quick Move/Copy Operations

In the current implementation, whenever a user initiates a move or copy operation for files or folders, a progress window appears immediately. This behavior, while informative for lengthy operations, can be unnecessarily intrusive for operations that are completed within a short time frame (< 2 seconds). To enhance the user experience, the progress window's appearance should be delayed, showing up only if the operation exceeds 2 seconds.

Expected Behavior:

  • The progress window for move/copy operations should not immediately pop up after the operation is initiated.
  • If the operation is completed within 2 seconds, the progress window should not be displayed at all, to avoid disrupting the user's workflow.
  • The progress window should only appear for operations that take longer than the specified threshold of 2 seconds.
  • If and once the progress window is triggered for any move/copy operation, it should stay visible for at least 2 seconds, regardless of how quickly the operation actually completes.

Can't deploy to App Center

Whenever I click "Upload Your App," it takes me to the Dev Center, but never shows UI or anything for uploading an app. Could I have a little help, please?

Add "Show Password" Toggle Feature to Login Form

Currently, when users input their password on the login form, the characters are masked, and there's no option to view the entered password. This can lead to increased login failures due to typographical errors, especially on mobile devices or for users with accessibility needs.

Integrate a toggle button (typically an eye icon) within the password input field. Clicking the toggle should switch the input type between "password" and "text", allowing users to temporarily see their password in plaintext. Ensure the default state is to hide the password, preserving security and privacy.

Here's facebook's implementation:

Screen.Recording.2024-03-02.at.11.32.04.PM.mov

Running on any online notebook server ?

Hi, guys i try run this on Colab or Hugging face or ... in all of them i can install and run puter correctly and can find open ports and IP
but i cant connect to them. why ?

Implement Keyboard Shortcuts for Permanent File Deletion

When a user selects a file(s) and presses the appropriate keyboard shortcut, the system should prompt the user to confirm the permanent deletion of the selected file(s). Upon confirmation, the file(s) would be permanently deleted from the user's filesystem, bypassing the trash.

Puter on subfolders

Currently, when you try to run puter on a subfolder, it redirects to the index after opening/closing applications. Puter works fine until you reload the page. I tried setting the gui_origin to my subfolder, but it seems to still redirect.

Docker deployment

Thank you for open sourcing this project!
In my eyes, this is a perfect fit for Docker deployment, used perhaps as a way to manage/access devices at a remote site.
Is Docker on the roadmap?

Is there any API documentation for the backend?

I would like to build my API server for this front end. It would be helpful if you make the backend open-source as well. I just need the API requests payload's JSON format and the response JSON structure. By the way awesome project man hats off

Implement Undo and Redo

Users should be able to undo/redo their last action(s). These actions are the minimum we need to support:

  • copy
  • move
  • delete
  • rename
  • New File/New Folder
  • Upload (?)

Additionally, we need keyboard shortcuts (e.g., Ctrl/Cmd+Z for undo and Ctrl/Cmd+Y or Ctrl/Cmd+Shift+Z for redo).

Option to Disable Auto-Arrange for Desktop Items

The current behavior of Puter automatically arranges items on the desktop in a predefined grid pattern. While this ensures a neat and organized appearance, it limits users' ability to personalize their workspace by placing items freely. Implementing an option to disable auto-arrange would allow users to customize their desktop layout to better suit their preferences and workflows.

Expected Behavior:

  • Toggle Auto-Arrange: Users should have the option to enable or disable the auto-arrange feature. When disabled, users can place desktop items anywhere on the desktop without being snapped to the grid.
  • Manual Arrange Mode: With auto-arrange disabled, users can manually position items on the desktop. The system should remember the positions of these items across sessions.
  • Context Menu Option: The ability to toggle auto-arrange on and off should be easily accessible through the desktop context menu (right-click menu), under a "Sort By", "View" or "Arrange Icons" submenu.
  • Persisting Custom Layouts: The desktop environment should persist user-defined item positions, ensuring that the custom layout is maintained after logging out, or refreshing the browser. Puter.js's puter.kv module could be used for this (docs)

Event Handling Issues in Blurred iframes

When an app window is blurred some essential events are not sent to its iframe. For example, if Dev Center is not in focus and a local item is dragged over the Drop Area, the Drop Area is not activated because the drag event is simply not sent to the iframe.

Another example would be that when an iframe is not focused and a mouse is over it scrolling, the scrollbars in the iframe don't react. This is again because the blurred iframe is not receiving any of the native events (probably because of pointer-event: none). The default behavior in many desktop environments is that the blurred app still reacts to many of these events.

Creation of account fails when using Firefox 123

I followed the instructions to install puter locally. I then pointed Firefox at locahost:4000 and got a log in dialog that offered to create an account. Fillied in the username, etc. and hit the button but it simply reopened the dialog. In Vivalid it works.

Add Security Policy to the Repository

We need a SECURITY.md file in the root of this repository, outlining:

  • How and where to report security vulnerabilities.
  • The process we will follow after a vulnerability report is received.
  • Any responsible disclosure policies.

This will guide users and contributors to report security concerns responsibly.

Disallow Uploading Files Directly to Trash

Currently, users are able to upload files directly into the Trash folder. This behavior is counterintuitive, as the Trash is typically used for storing files intended to be deleted, not for receiving new uploads. Allowing uploads directly to Trash can lead to confusion and potential data loss, as users may not realize files have been uploaded to Trash and could permanently delete them.

The Trash folder should not accept any uploads directly from the user interface or via drag-and-drop actions. Attempting to upload files to the Trash should fail with a warning message alert indicating that uploads to Trash are not allowed.

Implement 'Show Hidden Files' Feature for Desktop and File Explorer

In traditional desktop environments, users have the option to view hidden files, which are often system files or user preferences that are not displayed by default to prevent accidental modifications. This functionality is crucial for advanced users who need to access or modify these files for configuration purposes.

Expected Behavior:

  • Toggle Visibility: Users should have the option in both the desktop environment and the file explorer to toggle the visibility of hidden files. This could be implemented as an option in a context menu or as a toggle button/icon within the file explorer.
  • Indicator of Status: When hidden files are shown, there should be a clear indication in the UI that hidden files are being displayed. This could be a UI change, a message, or an icon change (e.g. decrease opacity).
  • Persistence of User Preference: The user's choice to show or hide hidden files should persist across sessions until explicitly changed again by the user. Puter.js's puter.kv module could be used for this (docs)
  • Visibility in Desktop and File Explorer: The setting to show hidden files should apply universally across the desktop environment and within the file explorer, ensuring a consistent user experience.

API documentation

Great project! Do you plan to release API docs for api.puter.com ?

Mobile Port?

Using some basic CSS and a little bit of Javascript, could you make the interface adapt to mobile devices? This would just require some small tweaks to the code, but would improve the OS a lot.

Windows Host Doesn't Work

I've attempted to build on LTS and current node version in two different Windows 11 machines. The app starts, but the browser shows a connection error.

image

Replace broken in move action

The old file is not getting replaced properly. The old file icon is still visible.

Screen.Recording.2024-03-11.at.12.45.41.AM.mov

Uploading is not working.

As title says. When I upload something. it either hangs at 100% or just halfway and never uploads. And yes I made an account.

Is server having problems? Or uploading not completely implemented yet?

Thanks

Automatic Adjustment of Puter Windows to Stay Within Viewport on Browser Resize

Users often adjust the size of their browser window for various reasons, such as multitasking or changing display settings. Currently, in Puter, resizing the browser can lead to open windows moving out of the viewport, making them inaccessible or partially hidden. This issue can disrupt the user's workflow and requires manual adjustment to bring these windows back into view. Implementing an automatic adjustment feature that ensures all windows remain within the viewport during and after a browser resize would improve usability and UX.

Expected Behavior:

  • Automatic Re-positioning: When the browser window is resized, any Puter window (or windows) that ends up partially or fully outside of the viewport should automatically be re-positioned to ensure it remains visible within the new viewport dimensions.
  • Intelligent Placement: The adjustment should not merely bring the window back into view but should do so intelligently to minimize disruption. For instance, if only a small portion of the window is out of view, the system should adjust it minimally to make it fully visible again.
  • Respect User Layout: While ensuring window visibility, the system should strive to maintain the user's original layout as much as possible, avoiding drastic changes that could disorient the user.
  • Notification/Option to Revert: Optionally, after an automatic adjustment, a subtle notification could be provided to inform the user of the change, with an option to undo the adjustment if desired.

Improve submenu navigation: Implement grace period for mouse movement

Currently, when users hover over a context menu item that has a submenu, the submenu opens as expected. However, if the user's mouse cursor leaves the active menu item even for a brief moment, the submenu immediately closes. This behavior creates a usability issue, as it requires users to maintain hover over the active item while navigating to the submenu. Users naturally tend to move their mouse diagonally towards the submenu, often momentarily leaving the active item's hover area, which results in the submenu closing prematurely.

Current state: This is how the mouse should be moved for the submenu not to close:

298311673-5ff948d8-7225-456f-849b-47a1d5df80ed

To address this issue, it would be beneficial to introduce a grace period that allows the submenu to remain open for a short duration after the mouse leaves the active item. This grace period would provide a more forgiving navigation experience, accommodating natural mouse movement patterns without penalizing slight deviations.

298311704-72b3b015-f45d-46f7-a4fc-4a28b135ef34

Network And Docment Need !

This is a very interesting project , but i think something import is need .

  1. Internet socket support. It 'can run a plugin on your pc , than i can connect network by using websocket with the desktop's plugin or something that on another server .
  2. Development Docment need ! Just tell me how to create a api server like (api.puter.com) and something other !

Log-in Not Working Due to CORS

Attempting to log into an existing Puter account throws a CORS error:

jquery-3.6.1.min.js:2 Access to XMLHttpRequest at 'https://puter.com/login' from origin 'http://localhost:4000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

We fixed this for /signup and I'm assuming the same fix would work for /login

Idea for an API

Some kind of API for apps like allowing you to make a command line tool.

Why does my local deployment communicate with https://puter.com

Hi everyone,

What is the reason my local reployment wants to establish a websocket with puter.com?

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://puter.com/socket.io/?auth_token=XYZ. (Reason: CORS request did not succeed). Status code: (null).

Firefox can’t establish a connection to the server at wss://puter.com/socket.io/?auth_token=XYZ&transport=websocket&sid=xgBTosy78HgA20tOAK-2. bundle.min.js:126:17426

Is there a way to host the service fully locally, i.e. on a machine without access to the Internet?

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.