diff options
Diffstat (limited to 'docs/architecture.md')
-rw-r--r-- | docs/architecture.md | 14 |
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 | ||
7 | Sophie is designed to | 7 | Sophie 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 | ||
13 | Integrations for services are provided by pluggable _recipes_ to allow adding support for new services easily. | 13 | Integrations for services are provided by pluggable _recipes_ to allow adding support for new services easily. |
14 | A recipe may come directly from Sophie, a third party (under AGPLv3 licensing), or be created by the user themselves. | 14 | A 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 | ||
22 | Electron makes two facilities readily available to display foreign web pages: | 22 | Electron 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 | ||
32 | An Electron application is split into a _main process_ and a number of _renderer processes_: | 32 | An 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). |