Commit Graph

1104 Commits

Author SHA1 Message Date
KernelDeimos
3f6900f26b dev: add get() and post() to extension API 2024-11-01 14:41:29 -04:00
KernelDeimos
14d45a27ed feat: add extension API for modules
Allows modules to register a listener to the 'install' event without
creating a Module class. This changes how external modules are
installed.

External modules are now referred to as "extensions"; this commit does
not update the term but does use 'extension' as the name of the global.
2024-10-31 18:08:27 -04:00
KernelDeimos
9a0c5b4f74 dev: support no-response endpoints in Collector
The no_response option is added to Collector::post. If an endpoint
returns an empty response, this option must be set to avoid a JSON parse
error.
2024-10-30 18:52:47 -04:00
jelveh
dc478382fb tweak: don't break if contact_us is not found 2024-10-29 23:44:54 -07:00
jelveh
fc5e15f2a6 feat: first extension that implements a custom user options menu 2024-10-29 22:55:26 -07:00
jelveh
b018571a86 feat: add support for extensions 2024-10-29 18:37:32 -07:00
KernelDeimos
14f477a633 fix: Collector bug on undefined body 2024-10-29 18:56:11 -04:00
KernelDeimos
b9625945ae dev: expose save account and email confirm 2024-10-29 18:56:11 -04:00
KernelDeimos
463c96c69a fix: hyphenize_confirm_code bug 2024-10-29 18:56:11 -04:00
KernelDeimos
38adb5741b fix: app close issue in phoenix 2024-10-29 16:19:58 -04:00
KernelDeimos
b30de5bf78 fix: reading JSON string from service_usage_monthly
This was hilariously difficult to debug. This isn't the first time an
issue like this occurred; this happens because of a deviation between
mysql and sqlite, where a JSON-typed column in mysql will return as a
native object in queries, whereas a JSON-typed column in sqlite is a
string column and will therefore return as an un-parsed JSON string in
queries.
2024-10-29 13:18:53 -04:00
KernelDeimos
7ba16d1c21 fix: recently broke counting service sql 2024-10-28 19:14:15 -04:00
KernelDeimos
f1087953b5 fix: ignore invalid entries from service_usage_monthly 2024-10-28 19:09:17 -04:00
KernelDeimos
193da63304 fix: service usage screen
This fixes service monthly usage counts as shown in Settings.
2024-10-28 18:47:40 -04:00
KernelDeimos
c0b109d4d2 dev: add get_proxy_object to util/context 2024-10-28 15:11:26 -04:00
KernelDeimos
3649dff9aa dev: add module lib installation to useapi 2024-10-28 15:11:26 -04:00
jelveh
3d85edf537 Update UIWindow.js 2024-10-27 21:33:08 -07:00
jelveh
54ae69b7b7 feat: add an 'Upload' button at the bottom of OpenFilePicker 2024-10-27 21:32:39 -07:00
jelveh
cd8a080d72 tweak: user-friendly badges for apps in Dev Center 2024-10-27 21:09:18 -07:00
jelveh
af511c05e3 feat: Allow apps to toggle credentialless via Dev Center 2024-10-27 14:44:06 -07:00
KernelDeimos
4dc1e01682 fix: continue work on blocked_email_domains (2) 2024-10-27 15:46:21 -04:00
jelveh
161be7fe6b remove 'About' from taskbar apps 2024-10-26 09:56:57 -07:00
KernelDeimos
515051dabf fix: continue work on blocked_email_domains 2024-10-26 03:28:45 -04:00
KernelDeimos
c22a69ffb1 fix: errors thrown by launch_app
Fixes errors that were noticed being thrown by launch_app, specifically
in the branch of logic when launch_app is called NOT via ExecService.
This branch of logic was added to fix an issue where notepad wasn't
prompting to save unsaved changes on close because data-appusessdk was
not properly set to true. The fix still worked, despite throwing these
errors, because setting data-appUsesSDK to true is the first thing it
does. However, broadcast messages to apps launched with launch_app NOT
via ExecService would have been broken.
2024-10-26 03:07:02 -04:00
jelveh
a9bbcf908d Update style.css 2024-10-25 11:36:50 -07:00
KernelDeimos
f3a9e784a3 dev: add can iterate check 2024-10-25 14:27:42 -04:00
KernelDeimos
b98c5a349e dev: make anti-csrf more convenient 2024-10-24 23:11:07 -04:00
KernelDeimos
f55b7ac0b8 dev: ensure existing app tokens don't break (for now) 2024-10-24 19:54:29 -04:00
KernelDeimos
6b8fbda14c dev: allow app tokens to identify user sessions 2024-10-24 19:51:54 -04:00
KernelDeimos
bc51d4bd52 fix: notepad save issue 2024-10-24 02:28:19 -04:00
KernelDeimos
87f7fc0265 tweak: clarify blocked domain message 2024-10-24 00:57:21 -04:00
KernelDeimos
955b087297 feat: add config for blocked email domains 2024-10-24 00:38:40 -04:00
KernelDeimos
988039eade dev: src prop for images 2024-10-23 22:59:18 -04:00
KernelDeimos
25e9ed8227 dev: make el() yet more convenient 2024-10-23 01:08:16 -04:00
KernelDeimos
5965ab5de0 dev: allow UIElement to be used as settings tab 2024-10-22 23:55:42 -04:00
KernelDeimos
0bb80d2933 doc: add todo regarding /whoami 2024-10-22 21:54:48 -04:00
KernelDeimos
37bb98b965 dev(gui): add UIElement 2024-10-22 21:54:48 -04:00
jelveh
37aa2b1d06 tweak: improve the usage bar visibility 2024-10-22 17:39:38 -07:00
jelveh
4e8c7455aa tweak: Move clock settings to the 'Personalization' tab of 'Settings' 2024-10-22 17:18:16 -07:00
jelveh
6f702c3927 Going to /settings will open the Settings in full page mode 2024-10-22 16:46:06 -07:00
KernelDeimos
c6bc42f551 fix: height 100% on flexer and step view 2024-10-22 18:10:16 -04:00
KernelDeimos
368c20cf57 dev: updates and URL collector 2024-10-21 22:57:25 -04:00
KernelDeimos
12e0cecf02 fix: wait no 2024-10-21 18:12:08 -04:00
KernelDeimos
c8f913d710 fix: phoenix incorrect lookup order 2024-10-21 18:07:45 -04:00
ProgrammerIn-wonderland
891e799e5e WIP symlink, net_device virtio, move fixes, upload binary fixes 2024-10-21 17:04:57 -04:00
jelveh
13248a99bf feat: add support for fadeIn effect for UIWindow 2024-10-21 07:48:06 -07:00
jelveh
920a2f2427 tweak: make backdrop darker to increase focus on active window 2024-10-20 20:15:19 -07:00
KernelDeimos
60fdce9052 sync: put app-center in the taskbar 2024-10-20 20:30:35 -04:00
KernelDeimos
8b1a935c93 sync: developer is in /dist now 2024-10-20 20:30:11 -04:00
KernelDeimos
e0b9072129 fix: issue with service scripts that use TestView 2024-10-19 21:17:57 -04:00
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