aboutsummaryrefslogtreecommitdiffstats
path: root/docs/architecture.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/architecture.md')
-rw-r--r--docs/architecture.md14
1 files changed, 7 insertions, 7 deletions
diff --git a/docs/architecture.md b/docs/architecture.md
index 6467b6f..0122809 100644
--- a/docs/architecture.md
+++ b/docs/architecture.md
@@ -6,9 +6,9 @@ title: Architecture
6 6
7Sophie is designed to 7Sophie is designed to
8 8
9* display _services_, i.e., web pages, most of which are messaging web applications, 9- display _services_, i.e., web pages, most of which are messaging web applications,
10* allow the user to quickly switch between services and save resources by displaying multiple services in the same desktop applications, 10- allow the user to quickly switch between services and save resources by displaying multiple services in the same desktop applications,
11* provide integrations for services, e.g., to manage unread message counts and notification in a single place. 11- provide integrations for services, e.g., to manage unread message counts and notification in a single place.
12 12
13Integrations for services are provided by pluggable _recipes_ to allow adding support for new services easily. 13Integrations for services are provided by pluggable _recipes_ to allow adding support for new services easily.
14A recipe may come directly from Sophie, a third party (under AGPLv3 licensing), or be created by the user themselves. 14A recipe may come directly from Sophie, a third party (under AGPLv3 licensing), or be created by the user themselves.
@@ -21,9 +21,9 @@ Sophie is built on the [Electron](https://www.electronjs.org/) application frame
21 21
22Electron makes two facilities readily available to display foreign web pages: 22Electron makes two facilities readily available to display foreign web pages:
23 23
24* The easier solution that mimics the HTML `<iframe>` tag is [`<webview>`](https://www.electronjs.org/docs/latest/api/webview-tag/). 24- The easier solution that mimics the HTML `<iframe>` tag is [`<webview>`](https://www.electronjs.org/docs/latest/api/webview-tag/).
25 However, it is deprecated and has some [critical bugs](https://github.com/electron/electron/issues/25469) when loading content with modern web security headers. 25 However, it is deprecated and has some [critical bugs](https://github.com/electron/electron/issues/25469) when loading content with modern web security headers.
26* The new solution is the [`BrowserView`](https://www.electronjs.org/docs/latest/api/browser-view/), which is the approach taken by Sophie. 26- The new solution is the [`BrowserView`](https://www.electronjs.org/docs/latest/api/browser-view/), which is the approach taken by Sophie.
27 The `BrowserView` is an overlay over the main browser window, so _Sophie will not be able render UI elements over foreign web pages_. 27 The `BrowserView` is an overlay over the main browser window, so _Sophie will not be able render UI elements over foreign web pages_.
28 While this is somewhat limiting, it allows us to take advantage of modern Electron APIs and coding practices. 28 While this is somewhat limiting, it allows us to take advantage of modern Electron APIs and coding practices.
29 29
@@ -31,10 +31,10 @@ Electron makes two facilities readily available to display foreign web pages:
31 31
32An Electron application is split into a _main process_ and a number of _renderer processes_: 32An Electron application is split into a _main process_ and a number of _renderer processes_:
33 33
34* The main process has access to NodeJS APIs for direct file system access. 34- The main process has access to NodeJS APIs for direct file system access.
35 It is also the only process that can manipulate browser windows and `BrowserView` instances. 35 It is also the only process that can manipulate browser windows and `BrowserView` instances.
36 Therefore, most of Sophie's logic must be implemented in the main process. 36 Therefore, most of Sophie's logic must be implemented in the main process.
37* The renderer processes are sandboxed processes responsible for rendering and executing web pages, both local and foreign. 37- The renderer processes are sandboxed processes responsible for rendering and executing web pages, both local and foreign.
38 In turn, they are split into an _isolated world_ and a _main world_. 38 In turn, they are split into an _isolated world_ and a _main world_.
39 The isolated world (world id 999) can use [IPC](https://www.electronjs.org/docs/latest/api/ipc-renderer/) to communicate with the main process. 39 The isolated world (world id 999) can use [IPC](https://www.electronjs.org/docs/latest/api/ipc-renderer/) to communicate with the main process.
40 The only way to expose APIs to the main world is through the [`contextBridge`](https://www.electronjs.org/docs/latest/api/context-bridge). 40 The only way to expose APIs to the main world is through the [`contextBridge`](https://www.electronjs.org/docs/latest/api/context-bridge).