Commit Graph

1104 Commits

Author SHA1 Message Date
Nariman Jelveh
90e7098cc7
Merge pull request #787 from 4nshuman/issue/zip-operation
Issue/zip operation
2024-10-19 15:45:39 -07:00
KernelDeimos
b5535ae3ca dev: add dev2 env 2024-10-19 18:22:09 -04:00
KernelDeimos
0fb4f73d76 chore: remove noisy logs 2024-10-19 17:31:46 -04:00
4nshuman
63b4da5be8 connected upload's inbuilt progress counter 2024-10-20 02:07:07 +05:30
4nshuman
fabc21ecf7 fixed sorting logic on directory list 2024-10-20 02:00:58 +05:30
4nshuman
a646b02e45 provide incremental directories to mkdir 2024-10-20 02:00:35 +05:30
jelveh
c29122c23f tweak: use different icons for system directories in the sidebar 2024-10-19 12:59:24 -07:00
4nshuman
4fdea7db66 offloaded write operations to Upload module 2024-10-20 00:06:30 +05:30
4nshuman
f32b1cfce8 added option to create parent directories for programmatic file drops 2024-10-20 00:05:40 +05:30
4nshuman
fc461c8735 added absolute file path processing 2024-10-20 00:04:36 +05:30
4nshuman
d39b7a8972 record unique directory list 2024-10-19 23:52:21 +05:30
jelveh
74baab49f4 tweak: improve welcome window footer link color 2024-10-19 10:35:56 -07:00
jelveh
564ff65363 feat: welcome screen to quickly explain what Puter is 2024-10-19 10:28:03 -07:00
KernelDeimos
480d996279 dev: proof-of-concept for fs postMessage relay
Adds a filesystem relay service to GUI-side which currently reports an
exmaple fsentry for /stat and /readdir. Added filesystem services for
both sides. Moved filesystem implementations from src/modules to src/lib
since they're being called by services now rather than modules.

This functionality is effectively disabled unless
src/puter-js/src/services/Filesystem.js is updated to use init_app_fs_()
when the environment is 'app'.
2024-10-19 03:46:47 -04:00
KernelDeimos
6e5d5c2021 dev: clone property descriptors in Context 2024-10-19 03:45:41 -04:00
KernelDeimos
c2a475f3c0 dev: lay the groundwork for client FS relay
Adds XDIncomingService to manage messages from another window. IPC now
registers with XDIncoming and reports whether it was handled, that way
messages intended to reach GUI can be reliably ignored.

On GUI-side, XDIncomingService will be used by FSRelayService (not yet
implemented) to handle requests for filesystem operations from another
window.

On App-side, XDIncomingService might be used by the PostMessageFS
client-side filesystem implementation terminal to listen for filesystem
events that were relayed by GUI (after a permission check) from their
original websocket source. Either that, or we'll open a filesystem
socket for each app using that app's token.

NoPuterYetService was added because IPC.js is loaded before
globalThis.puter exists, and was the easiest way to still allow IPC's
listener to be registered with XDIncomingService.

APIAccessService was added. This service currently holds auth_token and
api_token and does nothing else. FilesystemService listens to this to
maintain a websocket connection. APIAccessService will help to manage
the complexity of all further code dependent on being informed about
changes to the auth token or origin. Currently in puter.js these are
passed around to several modules which manage the same piece of state
information independantly.
2024-10-18 23:10:19 -04:00
KernelDeimos
bc5d09fe31 dev: hooks and sequencing functions for ServiceManager 2024-10-18 23:10:19 -04:00
jelveh
2f6f2b7d7c Set autoDedupe to true for creating new apps in Dev Center 2024-10-18 18:44:06 -07:00
KernelDeimos
143cfb5654 fix: 1954f8-related issue #2
mkdir operation was passing user instead if actor. I really think I
changed this already; getting a crazy deja-vu feeling about it. Maybe a
commit was lost somewhere along the road, but not sure.
2024-10-18 21:24:05 -04:00
jelveh
b1411cd622 Add dedupeName for to puter.apps and Dev Center 2024-10-18 18:02:37 -07:00
jelveh
8ed5db1734 Merge branch 'main' of https://github.com/heyputer/puter 2024-10-18 17:50:25 -07:00
jelveh
14fc963dd4 Show approval badges and lock in Dev Center 2024-10-18 17:48:14 -07:00
KernelDeimos
b9c157b28e tweak: start from 1 2024-10-18 20:48:09 -04:00
KernelDeimos
66e8b37f70 dev: add dedupe_name option for app creation 2024-10-18 20:42:41 -04:00
KernelDeimos
4ce2dccc76 dev: update app approved_for props visibility
Allows owner users to read the approved_for properties on their own apps
2024-10-18 20:12:19 -04:00
KernelDeimos
f5865daede fix: 1954f8-related issue
get-user-app-token was calling ll_mkdir with 'user' instead of 'actor'
2024-10-18 19:58:44 -04:00
KernelDeimos
1954f86680 fix(security): always use actor 2024-10-18 19:15:40 -04:00
KernelDeimos
94e15dbfa8 test: fix topics test and ServiceManager 2024-10-18 19:13:06 -04:00
jelveh
598a08ec45 Allow users to cancel a deploy operation before start 2024-10-18 16:07:01 -07:00
KernelDeimos
3c5d2af8c8 fix: small issue in Service.js 2024-10-18 15:53:40 -04:00
jelveh
29f5820129 Fix settings sidebar margin 2024-10-18 12:45:27 -07:00
KernelDeimos
fb1216d488 fix: prevent code from breaking just because it was bundled 2024-10-18 15:06:08 -04:00
KernelDeimos
7922314840 dev: add generic pub/sub system for use anywhere
Dispatching and listening to events is non-trivial. The apparent
triviality is in implementing a list of listeners and calling them. The
non-triviality is in the nature of what happens to a system when it has
multiple different interfaces to register listeners and publish events.

This commit adds TopicsFeature, which allows any class extending
AdvancedBase to declare topics. A topic is a simple pub/sub channel.
TopicsFeature will manage the state of listeners so the class doesn't
need to. A GC-friendly mechanism for detaching listeners is also provided.
2024-10-17 22:56:00 -04:00
KernelDeimos
9b1f1817f5 dev: move service interface to trait 2024-10-17 22:56:00 -04:00
KernelDeimos
273a51fc53 dev: add ServiceManager
The ServiceManager will replace manual management of services within
initgui, and will also be used within puter.js. Eventually Puter's
backend might use this instead of the existing Container class, although
this will be a large change that needs to be done incrementally.

The difference between ServiceManager and Container is the logic behind
when initialization occurs. Rather than have all services initialized at
once when Container's init() method is called, services are initialized
as soon as their dependencies have been initialized.
2024-10-17 22:56:00 -04:00
jelveh
2a81825a6b Update default apps in the Launch menu 2024-10-17 16:14:24 -07:00
KernelDeimos
7980aafbd9 doc: add devlog from puter.js 2024-10-17 01:19:06 -04:00
ProgrammerIn-wonderland
f0b7214a07 working persistence 2024-10-15 18:30:08 -04:00
ProgrammerIn-wonderland
aae6fff340 adding locking to puter-save 2024-10-15 18:30:08 -04:00
ProgrammerIn-wonderland
f0bc10f1e8 WIP persistence 2024-10-15 18:30:08 -04:00
KernelDeimos
1ea6d270f8 dev: add endpoint for GUI to query app file access 2024-10-15 16:19:11 -04:00
KernelDeimos
fd7bd339ca dev: add Context to putility 2024-10-15 16:17:37 -04:00
KernelDeimos
149684de01 dev: allow emulator app to access user files 2024-10-14 15:46:19 -04:00
KernelDeimos
9e88096e7e clean: remove a console.log 2024-10-14 15:19:52 -04:00
KernelDeimos
e011df1a20 move: PuterAPIFilesystem 2024-10-14 15:19:18 -04:00
KernelDeimos
6d23369512 sync: add new page 2024-10-14 12:18:04 -04:00
KernelDeimos
3762037576 dev: oops 2024-10-12 00:01:33 -04:00
KernelDeimos
11fbcb27b0 dev: cache readdir 2024-10-11 23:51:38 -04:00
KernelDeimos
77f6bdcd6d dev: make puter.fs cache togglable 2024-10-11 18:39:58 -04:00
KernelDeimos
6ee7caaee1 dev: apply TTL cache for stat entries
Adds CachedFilesystem layer to client filesystem chain. Currently only
stat is implemented. The stat implementation will hold onto an entry for
3 seconds as per hardcoded configuration. Eventually, once invalidation
via websockets is working, this TTL should be extended.
2024-10-11 18:39:58 -04:00
KernelDeimos
fc9a371e09 dev: add more to NariMethodsFeature 2024-10-11 18:39:58 -04:00
KernelDeimos
43c5402b7c feat(putility): trait method override support
Support for trait method overrides will make it possible to use putility
traits with the decorator pattern while using a proxy class to avoid
redundant re-implementation of proxy methods.

Use of the pattern described above will occur in the implementation of
client-side filesystem caching.
2024-10-11 18:39:58 -04:00
KernelDeimos
c12ae2a923 dev: prepare puter.js fs for decorator pattern
- de-coupled xhr callback passing from the interface of the underlying
  filesystem implementation.
- This makes the interface to delegate calls more suitable for use with
  the decorator pattern.
- The decorator pattern will be used to manage the complexity of the
  caching layer by separating the concerns of different caching methods.
2024-10-11 18:39:58 -04:00
ProgrammerIn-wonderland
4f8304ec15 switch ne2k_pci to virtio 2024-10-11 18:14:38 -04:00
ProgrammerIn-wonderland
d9805c0cab delete prompt-path 2024-10-11 17:06:32 -04:00
ProgrammerIn-wonderland
fb41d2a51c change PWD to not use prompt-path and fix unicode issues 2024-10-11 17:06:32 -04:00
KernelDeimos
010282edf2 fix: don't display all apps for extensionless files
This hides database entries with empty types from the list of suggested
apps for files that have no extension. These entries should also be
removed from the database and the bug causing them should be fixed in
dev center.
2024-10-11 14:51:52 -04:00
KernelDeimos
38dcb60d3f fix: creating app shortcut in self-hosted
For some reason ll_write has an undefined `actor` when clicking "Add
Shortcut to Desktop" from Dev Center. This should be investigated
further.
2024-10-11 14:50:35 -04:00
Nariman Jelveh
3157186f4f close #798 2024-10-10 17:40:17 -07:00
KernelDeimos
d4b96a17c8 dev: add RWLock to putility 2024-10-10 18:47:07 -04:00
KernelDeimos
37e7b6ad70 fix: disable thumbnails for AppData uploads 2024-10-10 15:03:22 -04:00
KernelDeimos
823ab28448 test: update test invocation 2024-10-10 03:19:28 -04:00
ProgrammerIn-wonderland
979bd06d70 9p automounting 2024-10-09 20:36:03 -04:00
ProgrammerIn-wonderland
b145e30a90 feat: v86 9p server support 2024-10-09 20:36:03 -04:00
Nariman Jelveh
d449367db5 Update loading.svg 2024-10-09 10:04:09 -07:00
Nariman Jelveh
9890e3a8be close #771 2024-10-08 19:51:57 -07:00
Nariman Jelveh
d0940ccd21 close #776 2024-10-08 18:59:14 -07:00
KernelDeimos
7f1b870d30 feat: support readdir for directory symlinks 2024-10-08 18:31:39 -04:00
KernelDeimos
c2a9506b48 fix: thumbnail service updates 2024-10-08 01:41:18 -04:00
ProgrammerIn-wonderland
ed0a83ca9d dev: update v86, switch twisp to epoxy-server with twisp feature 2024-10-07 22:04:41 -04:00
4nshuman
822d850513 purge JSZip 2024-10-06 21:25:46 +05:30
4nshuman
e252567c88 Added progress dialog details 2024-10-06 21:19:42 +05:30
4nshuman
f0f8e454f9 added Promises to handle multiple file creation and closing progress dialog 2024-10-06 20:27:12 +05:30
4nshuman
a09dd29416 added empty directory check and file creation 2024-10-06 20:25:40 +05:30
4nshuman
e992e4d5d4 unzipped directory creation 2024-10-06 20:25:10 +05:30
4nshuman
2a82579eb8 added unzip error handler 2024-10-06 20:23:10 +05:30
4nshuman
a79cc040e8 implemented fflate unzip operation 2024-10-06 20:22:50 +05:30
4nshuman
e5f0f46633 added blob to uInt8Array conversion 2024-10-06 20:22:07 +05:30
4nshuman
9a2e701683 eleminate JSZip invocation 2024-10-06 20:21:29 +05:30
4nshuman
00f2dbdcf0 added window hide delay config 2024-10-06 20:18:30 +05:30
4nshuman
b9d7a1d2a1 added zip support for empty directories 2024-10-06 17:33:30 +05:30
4nshuman
b9b8229099 fixed comments phrasing 2024-10-06 16:19:46 +05:30
4nshuman
5b477c2cac fixed module name 2024-10-06 16:10:40 +05:30
4nshuman
09d10cb29b rectified progress window for unzip operation 2024-10-06 16:03:09 +05:30
4nshuman
f6541fc793 convention implemented definition header 2024-10-06 16:01:18 +05:30
4nshuman
deb8c4e13b added status message terms 2024-10-06 16:00:01 +05:30
4nshuman
a93236118f redirected unzip to helper method 2024-10-06 15:32:31 +05:30
4nshuman
a9bebdd7f0 fixed typo 2024-10-06 15:26:26 +05:30
4nshuman
dfe71d5965 modified zipping operationand integrated fflate 2024-10-05 23:47:22 +05:30
4nshuman
f05f7454e9 added helper method to convert binary large object to uInt8Array for zipping operations 2024-10-05 23:45:54 +05:30
4nshuman
582c411c00 added fflate min js to the library 2024-10-05 23:44:04 +05:30
4nshuman
f3625ed907 added terms for status message on zip operation 2024-10-05 23:43:43 +05:30
4nshuman
4c7b75ed67 added fflate on static asset and libPath 2024-10-05 23:43:15 +05:30
4nshuman
1929aaf5ef added fflate on libPath on puter-gui 2024-10-05 23:42:43 +05:30
4nshuman
01aaa07e87 added zip progress counter configurations 2024-10-05 23:41:45 +05:30
KernelDeimos
c135649551 move: notes.md 2024-10-03 18:20:51 -04:00
KernelDeimos
196531d118 dev: update handling of duplicate emails 2024-10-03 17:04:47 -04:00
KernelDeimos
822f3b8c45 dev: add notes and some updates to email logic 2024-10-03 14:54:40 -04:00
KernelDeimos
2c3065a70f test: register test for CleanEmailService 2024-10-02 21:30:14 -04:00
KernelDeimos
054b9c2864 dev: add service for cleaning email addresses 2024-10-02 17:51:43 -04:00
KernelDeimos
9db55fc5f7 fix: remove redundant openai model fallback 2024-10-02 15:14:46 -04:00
KernelDeimos
29fd595cf9 dev: rootfs-v0.2.0 2024-10-02 15:13:57 -04:00
KernelDeimos
9985996686 fix: app pseudonym in wrong conditional block 2024-09-30 20:38:25 -04:00
KernelDeimos
4febd81169 dev: app pseudonyms 2024-09-30 19:35:34 -04:00
KernelDeimos
8bc4122bea tweak: change phoenix help text when launched with -c 2024-09-30 19:16:10 -04:00
KernelDeimos
5ed8823a16 tidy: remove a console log 2024-09-30 18:11:25 -04:00
KernelDeimos
5317adf8a4 feat: allow passing cli args via url 2024-09-30 18:09:28 -04:00
KernelDeimos
b6c0cb6abc feat: add -c flag for phoenix 2024-09-30 16:50:18 -04:00
KernelDeimos
6e1ed7ab04 dev: update emu load indicator 2024-09-30 16:50:03 -04:00
KernelDeimos
04c05a5bb8 fix: properly add owner object to fsentries 2024-09-27 16:30:13 -04:00
KernelDeimos
a70d0dd088 fix: add progress bar fix 2024-09-27 15:08:19 -04:00
KernelDeimos
eab2721f89 dev: use streaming decompression 2024-09-26 18:49:29 -04:00
KernelDeimos
545ac0097f tweak: ascii tux (important) 2024-09-26 18:28:13 -04:00
KernelDeimos
45cd3b79bb tweak: disable grace period by default 2024-09-26 15:47:47 -04:00
KernelDeimos
259877b677 fix: allow ETX to propagate to bash 2024-09-26 15:47:35 -04:00
KernelDeimos
08601ae2af feat: progress indicator for emulator 2024-09-25 23:47:10 -04:00
KernelDeimos
d0535cf10b dev: add wasm bench 2024-09-25 21:45:03 -04:00
KernelDeimos
fff8993200 fix: error deleting entry from My Websites window
This could not be tested locally due to another but only affecting
self-hosted installations. This will be tested in staging in the
meantime while the other bug is being fixed.
2024-09-23 17:55:54 -04:00
KernelDeimos
b1b725a2eb tweak: image from CDN (for real this time) 2024-09-23 15:07:26 -04:00
KernelDeimos
68c4274dc3 tweak: image from CDN 2024-09-23 14:54:01 -04:00
Nariman Jelveh
288411c377 Update style.css 2024-09-22 15:46:48 -07:00
KernelDeimos
27b66254e3 dev: compress default image with brotli 2024-09-22 17:49:00 -04:00
Nariman Jelveh
3ce8da37eb close #772 2024-09-22 12:40:38 -07:00
KernelDeimos
07d3592d88 tweak: don't auto-start puter-linux for now 2024-09-21 15:39:19 -04:00
Nariman Jelveh
bd91839551 Don't allow background processes to change the browser's URL 2024-09-19 17:41:37 -07:00
KernelDeimos
4311b482fd fix: second half of connectToInstance 2024-09-18 21:02:51 -04:00
KernelDeimos
cb324cc125 fix: error in process.handle_connection 2024-09-18 20:55:00 -04:00
KernelDeimos
f4dd195245 dev: fix previous commit 2024-09-18 17:04:48 -04:00
KernelDeimos
afc0ac8548 dev: attempt to fix process select issue 2024-09-18 17:01:02 -04:00
KernelDeimos
439653458e fix: quick patch to avoid columnify error 2024-09-18 16:22:26 -04:00
KernelDeimos
0456893789 dev: add emulator prod deployment 2024-09-18 16:21:07 -04:00
KernelDeimos
f2acd83b72 fix: upsert subdomain check to insert only 2024-09-18 16:21:07 -04:00
KernelDeimos
8aed3d9454 dev: prep for network build 2024-09-18 16:21:07 -04:00
KernelDeimos
25817bf6a2 dev: add puter-linux app to db migrations 2024-09-18 16:21:07 -04:00
KernelDeimos
4589ed95be dev: handle pty close
Return to phoenix shell when a pty stream is closed by twisp.

Pipes in phoenix with commands from the emulator do not appear to be
working properly, but something in there is working.
2024-09-18 16:21:07 -04:00
KernelDeimos
404fbaa4cb dev: add terminal multiplexing
This involves establishing the protocol through which phoenix instances
run a command on the emulator. The pty is able to communicate with the
terminal in both directions. This commit adds logs to be removed later.

There are a few things left that this commit does not address:
- handling close of delegate process
- handling sigint from phoenix to delegate process
- closing the connection to twisp
2024-09-18 16:21:07 -04:00
KernelDeimos
bc83e90e33 tweak: use virtualization-optimized kernel 2024-09-18 16:21:07 -04:00
KernelDeimos
e3d4a5f3b3 dev: multi-instance many-to-many app-to-app comms
I'll elaborate here because the commit name is confusing. Any time an
app gets a connection to another app, either because it launched that
app (or was launched by that app) or requested a connection to that app,
the ID the app gets to represent the app it's communicating with is now
a pseudo app id rather than the app instance ID. This accomplishes two
things:

1. It's more secure. There are multiple places where GUI assumes that
   knowing an app's instance ID means you can do things as that app.
2. Between the same two apps, there may now be more than one connection.
   This is useful for situations like Phoenix shell talking to the
   emulator in multiple separate instances to pipe commands. (this is
   coming later)
2024-09-18 16:21:07 -04:00
KernelDeimos
62634b0afe feat: add connectToInstance method to puter.ui 2024-09-18 16:21:07 -04:00
KernelDeimos
e2cb6194bb dev: add startup apps, start emulator by default 2024-09-18 16:21:07 -04:00
KernelDeimos
e1ec84877a dev: resize handling 2024-09-18 16:21:07 -04:00
KernelDeimos
db3e0b5ce8 fix: simplify callback listener and fix async bug 2024-09-18 16:21:07 -04:00
KernelDeimos
21383eec3c dev: get basic PTY integration working 2024-09-18 16:21:07 -04:00
KernelDeimos
28adc4e5d5 dev: add emulator page 2024-09-18 16:21:07 -04:00
KernelDeimos
2c0b8428c5 dev: add emulator image build 2024-09-18 16:21:07 -04:00
KernelDeimos
33de98107f fix: email change on account with unverified email
Changing the email address on an account that did not already have a
confirmed email would result in the email_confirmed column never being
set. This commit fixes that.

Additionally, an SQL statement using the unconfirmed email to identify a
row was changed so it now uses the user ID instead, which is safer.

Resolves: 759
2024-09-10 14:04:32 -04:00
KernelDeimos
6bdcae769d fix: double-echo in phoenix 2024-09-04 23:56:23 -04:00
KernelDeimos
a33d721e21 fix phoenix WINSZ handling 2024-09-04 23:56:23 -04:00
KernelDeimos
4910838ab1 fix: webpack error reporting + unintentional whitespace changes 2024-09-03 14:44:51 -04:00
Nariman Jelveh
57c2d72e21 Update UIWindow.js 2024-09-03 14:24:58 -04:00