Commit Graph

1307 Commits

Author SHA1 Message Date
KernelDeimos
59fa600f2b dev: edge rate limit for email share 2024-11-16 20:04:23 -05:00
KernelDeimos
e0128aa88c fix: prevent permission cycles 2024-11-15 18:47:47 -05:00
jelveh
e482b00a30 fix: launchApp on explorer supports ~ now 2024-11-15 15:38:59 -08:00
jelveh
8fefd4a61f feat: allow launchApp to open explorer at a specific path 2024-11-15 15:29:23 -08:00
jelveh
cdd1a8c4e3 feat: Require email confirmation before sharing 2024-11-15 12:07:48 -08:00
Eric Dubé
98bd10c82b Revert "added a chime playback"
This reverts commit 2eaf1080d6.
2024-11-15 13:41:31 -05:00
Eric Dubé
5fd11cc607 Revert "added event listener to play chime on the first click"
This reverts commit 4885a76a75.
2024-11-15 13:41:31 -05:00
Eric Dubé
fa5d731641 Revert "."
This reverts commit 1919cb3d99.
2024-11-15 13:41:31 -05:00
Eric Dubé
f8ac0dbdb7 Revert "play chime only once"
This reverts commit edeb79d92c.
2024-11-15 13:41:31 -05:00
KernelDeimos
08779ac455 dev: make share feature flag reflect user state 2024-11-15 13:40:24 -05:00
KernelDeimos
14b962b459 dev: add function-flag feature flag type 2024-11-15 13:34:56 -05:00
4nshuman
edeb79d92c play chime only once 2024-11-15 12:43:17 -05:00
4nshuman
1919cb3d99 . 2024-11-15 12:43:17 -05:00
4nshuman
4885a76a75 added event listener to play chime on the first click 2024-11-15 12:43:17 -05:00
4nshuman
2eaf1080d6 added a chime playback 2024-11-15 12:43:17 -05:00
KernelDeimos
69bfa60199 fix: only allow UserActorType for ShareService 2024-11-15 12:09:31 -05:00
jelveh
045259cefb feat: show unread notification count in the browser tab's title 2024-11-14 17:19:21 -08:00
KernelDeimos
b1ffb8eca1 fix: new sessions miss notifications 2024-11-14 19:26:15 -05:00
jelveh
d0f16c8105 fix: don't allow sharing with recipient just shared with 2024-11-14 15:38:26 -08:00
KernelDeimos
085d808817 fix: add username to comments 2024-11-14 18:09:46 -05:00
jelveh
d91435db57 Merge branch 'main' of https://github.com/heyputer/puter 2024-11-14 14:45:43 -08:00
jelveh
cf4b6aa1c2 feat: in Share window, display access level next to recipient 2024-11-14 14:45:35 -08:00
KernelDeimos
db79a72daa feat(backend): add comments for fsentries 2024-11-14 17:45:20 -05:00
jelveh
0cbe0139d7 feat: when sharing, users can choose between 'viewer' and 'editor' for permissions 2024-11-14 14:08:49 -08:00
jelveh
a6650ee2d8 feat: handle notif.ack in desktop 2024-11-14 12:52:15 -08:00
KernelDeimos
9e303a2f7c fix: occasional db error from notics 2024-11-14 15:18:28 -05:00
KernelDeimos
00e0fb350a dev: add notif.ack message 2024-11-14 15:18:28 -05:00
KernelDeimos
3f3f4e6cb9 fix: un-awked notif check in wrong place 2024-11-14 15:18:28 -05:00
jelveh
9d40ad9b4e Update UIWindow.js 2024-11-14 09:55:39 -08:00
jelveh
9d7987fae5 fix: disabled sortable on sharing section in the sidebar 2024-11-14 09:37:06 -08:00
KernelDeimos
665471f9f0 fix: add mixxing context to BroadcastService 2024-11-13 23:25:44 -05:00
KernelDeimos
22dd42ef7f fix: attempt at fixing broadcast 2024-11-13 23:13:45 -05:00
KernelDeimos
cd22425a3d fix: replace ll_readshares with better approach
Recursively checking for files with 'see' permission? What was I
thinking? This replaces the disasterously awful approach of scanning a
user's entire file tree to find shares, with an approach which instead
selects on the permissions table and extracts file UUIDs from
permissions.
2024-11-13 22:44:54 -05:00
KernelDeimos
34836e374f fix: only add enabled_logs when not empty 2024-11-13 22:15:09 -05:00
KernelDeimos
caf8d2a055 dev: track ll_readshares depth 2024-11-13 21:14:56 -05:00
KernelDeimos
249dc06201 fix: don't check share permission anymore 2024-11-13 20:39:58 -05:00
jelveh
94b10c78b7 tweak: sharing style 2024-11-13 17:30:03 -08:00
jelveh
b5bb95e2d7 feat: add error handling to the share flow 2024-11-13 15:59:29 -08:00
jelveh
9a311058ef tweak: disable sidebar_items polling 2024-11-13 15:45:02 -08:00
jelveh
599c7ad0a1 Update UIElement.js 2024-11-13 14:43:30 -08:00
jelveh
622205ae51 tweak: enable sharing 2024-11-13 13:49:17 -08:00
KernelDeimos
27cc07e985 fix: files shared array in notification 2024-11-13 15:02:10 -05:00
KernelDeimos
89aab03905 tweak: enable share 2024-11-13 13:15:22 -05:00
KernelDeimos
8f59c2614d tweak: put groups manager behind a flag 2024-11-13 12:54:54 -05:00
KernelDeimos
5725bd8c66 fix: report path for broken files as /-void/ 2024-11-13 12:11:48 -05:00
jelveh
7ca0a02fa4 tweak: safe data URI strings for icons in search 2024-11-12 20:45:53 -08:00
jelveh
55d2af189e feat: search 2024-11-12 20:20:43 -08:00
KernelDeimos
b589512c9d feat: search endpoint 2024-11-12 17:58:43 -05:00
jelveh
ac3317aea9 fix: issue with popover closing when clicked 2024-11-12 13:27:29 -08:00
jelveh
1adfe5c709 feat: the socialLink UI component 2024-11-12 12:40:14 -08:00
jelveh
45ecce4653 Update style.css 2024-11-11 20:49:49 -08:00
jelveh
a70cb49a30 tweak: style improvement 2024-11-11 17:31:43 -08:00
jelveh
27c01c9bd9 feat: Reaload App option in the window title bar context menu 2024-11-11 11:46:28 -08:00
KernelDeimos
a08e9758fe fix: groups manager location 2024-11-11 14:40:50 -05:00
jelveh
a9679910c6 Update style.css 2024-11-10 10:46:13 -08:00
KernelDeimos
402ffb0fd1 fix: don't show kvstore in usages 2024-11-10 13:33:41 -05:00
KernelDeimos
4f9d9a54ef fix: add missing id for task_manager menu item 2024-11-10 12:46:42 -05:00
Nariman Jelveh
6c44032293
fix: Update security.txt canonical URL 2024-11-10 08:55:51 -08:00
KernelDeimos
fc0cb2dde4 tweak: usage endpoint 2024-11-09 17:41:16 -05:00
KernelDeimos
85020109b3 dev: add virtual groups for computed permissions 2024-11-09 17:40:47 -05:00
KernelDeimos
a324c91560 dev: add quick window to see what groups a user is in
I need this for development/debugging purposes. I figure I may as well
start developing the system dialog we'll eventually have to create
rather than make a temporary debugging element. This window could
eventually become a full-featured group manager, and can easily be moved
to a settings tab.
2024-11-09 15:57:28 -05:00
KernelDeimos
59984bb930 dev: recursive log toggle for puter.js 2024-11-09 15:14:37 -05:00
KernelDeimos
6f5f11da09 dev: allow other backend services to set gui_params 2024-11-08 16:04:55 -05:00
jelveh
e8f67da9a3 fix: update apps cache by reading from primary db 2024-11-08 10:56:00 -08:00
KernelDeimos
164d5ef167 test: update TestKernel 2024-11-08 12:13:30 -05:00
KernelDeimos
28adcf533f feat(ai): add xAI grok-beta 2024-11-07 15:01:13 -05:00
KernelDeimos
d613c5fc83 log: when app is launched 2024-11-07 14:27:02 -05:00
KernelDeimos
5caa2c0e3a fix: logging in AppConnection 2024-11-07 14:26:30 -05:00
KernelDeimos
5d416e2316 refactor: simplify module constructors
This was a really small refactor - about 30mins - that moves the concern
of common constructor args for modules outside of each individual call.

A Context object is now used for common constructor arguments. Some of
the values on this object - such as APIOrigin and authToken - are
following values on the instance of the Puter class. This means that for
some modules it is already possible to eliminate the setAuthToken and
setAPIOrigin listeners (out of scope for this commit). Any which remain
could eventually be replaced with a listener on the Context object
itself.

This commit also moves the initSubmodules method to the top of the class
so that it's easier for new devs to find, in case they're looking into
an issue on a specific module rather than the Puter class itself.
2024-11-07 13:29:18 -05:00
jelveh
1a6d648a6e fix: persist clock visibility change 2024-11-05 18:31:03 -08:00
KernelDeimos
ba2eb716f5 dev: add prefix logger 2024-11-05 15:57:55 -05:00
KernelDeimos
da0022abf0 feat: add puter.auth.whoami() 2024-11-05 15:49:51 -05:00
KernelDeimos
755736edee feat: add puter.log 2024-11-05 15:31:44 -05:00
KernelDeimos
e71fe11e32 dev: add toggle logging, and fix issues in logger 2024-11-05 15:31:17 -05:00
KernelDeimos
b0cbcdf743 dev: add logger to putility 2024-11-05 15:03:21 -05:00
KernelDeimos
fe8d6af1b5 sync: update claude model (take 2) 2024-11-04 22:46:57 -05:00
KernelDeimos
52a54d2248 sync: update claude model 2024-11-04 22:28:34 -05:00
jelveh
9263cbaedd Merge branch 'main' of https://github.com/heyputer/puter 2024-11-04 17:33:13 -08:00
jelveh
9590bbdad1 fix: don't access metadata.credentialless if it doesn't exist 2024-11-04 17:33:08 -08:00
KernelDeimos
16b9f09e66 fix: reinitialize settings tabs for DOM events 2024-11-04 19:25:04 -05:00
KernelDeimos
856688f884 dev: add database and config access for extensions 2024-11-04 16:42:42 -05:00
jelveh
c44b9ab8d5 fix: use correct cursor when hovering over sidebar items 2024-11-04 10:08:11 -08:00
jelveh
79cff7ba29 Update style.css 2024-11-04 09:33:48 -08:00
jelveh
4e7979b50e Update style.css 2024-11-03 20:57:53 -08:00
jelveh
1056231004 feat: collapsible sidebar menu in Dev Center 2024-11-03 20:50:46 -08:00
jelveh
06d5dd763d tweak: dev center table visible when overflowing 2024-11-03 20:13:35 -08:00
jelveh
666912a8a3 revert style update 2024-11-03 17:20:09 -08:00
jelveh
452e3383e8 Update style.css 2024-11-03 17:18:12 -08:00
jelveh
05950b0fc3 tweak: automatically update sidebar_items every 2 seconds 2024-11-03 17:13:24 -08:00
jelveh
2e122c2cab Update style.css 2024-11-03 16:16:00 -08:00
jelveh
ff30de1d69 feat: customize the order of Explorer sidebar items 2024-11-03 16:00:39 -08:00
jelveh
121043d312 fix: issue with context menu divider item stealing the event from previous item 2024-11-02 18:54:30 -07:00
jelveh
0315cb3337 fix: issue with non-scrollable window body and document Context Menu 2024-11-02 17:51:07 -07:00
KernelDeimos
05573dad51 tweak: load mods from extensions directory 2024-11-01 19:29:16 -04:00
KernelDeimos
f836ac30a9 fix: temporary fix because .on can't call ensure_service 2024-11-01 18:21:05 -04:00
KernelDeimos
84989367a7 dev: hook extensions into service event bus 2024-11-01 17:42:12 -04:00
KernelDeimos
58f34b948a dev: simplify module/extension setup 2024-11-01 16:13:00 -04:00
KernelDeimos
7569e8a703 tweak: endpoints are authorized by default 2024-11-01 15:43:40 -04:00
KernelDeimos
4b6c70fa5e dev: expose more core definitions to extensions 2024-11-01 15:43:27 -04:00
KernelDeimos
a614145250 dev: run npm install after copying extensions 2024-11-01 15:26:39 -04:00
KernelDeimos
d958c01111 dev: add support for single-file extensions 2024-11-01 14:42:42 -04:00
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