aboutsummaryrefslogtreecommitdiff
path: root/docs/DESIGN.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/DESIGN.md')
-rw-r--r--docs/DESIGN.md97
1 files changed, 27 insertions, 70 deletions
diff --git a/docs/DESIGN.md b/docs/DESIGN.md
index 4d13ed6..58aa149 100644
--- a/docs/DESIGN.md
+++ b/docs/DESIGN.md
@@ -1,13 +1,28 @@
-# smolbote Design Document
+# smolbote
-### Version 1.0
+The aim of smolbote is to be a lightweight and fast, to the point web browser.
+
+## Principles
+
+### Simple is good.
+'without unnecessary additions'. Do one thing and do it well.
+
+### User-centric is user-friendly.
+Software is there to serve the user, not the other way around.
+
+### Code correctness is truth.
+Use up-to-date standards and compilers.
+
+## Version 1.0
+
+### Browser
* Profiles
- Application-level profile manager
- - System-level and user-level profile config, with per-profile overrides [todo]
* Configuration
- - Default system-level config and user-level overrides [todo]
-* Cookies
- - Filter list similar to the URL filter list [todo]
+ - Default configuration and user overrides
+ - Auto-generating settings dialog
+
+### Main Window
* Tabs
- Moving tabs between windows [todo]
- Tab context menu [todo]
@@ -15,70 +30,12 @@
- Search [todo]
- Zoom [todo]
- Print [todo]
-* Navigation toolbar
+* Navigation bar
- Back and Forward history [todo]
+* Address bar
-## Overall design of smolbote
-
-The aim of smolbote is to be a lightweight and fast, to the point web browser.
-
-### How smolbote works [TODO]
-
-0. Launch
-1. Check for other instance, unless otherwise specified
- - If other instance is found, pass the parameters to it and quit
- - Else, create a new instance
-2. Create application object
- - Read configuration
- _ Create profiles
-3. Pass parameters to application object
- - Create main window if there isn't one
- - open URLs
-
-### main() and smolmain() [TODO]
-
-The main() function should contain all code to start up, check for another
-running instance, and if necessary pass the parameters to the other instance.
-
-The smolmain() function should contain code to create a new instance based on
-the parameters passed.
-
-IPC should be done with QLocalSocket.
-
-### Dockable windows
-
-### Folder structure
-
-- data/ - Any resource files (defaults, icons, etc)
-- docs/ - Where all the documentation lives
-- src/ - Source code
-- test/ - Testing grounds
-- tools/ - Hooks, qbs helpers, updater
-
-### Libraries used
-All 3rd-party libraries should be placed in src/3rd-party/library-name, together
-with their corresponding license file. The license file should start with the
-library name and repository location.
-
-- tinytoml
-
-## Components
-Components should, when possible, be split off into self-contained static
-libraries. This is to reduce recompile times.
-
-### Navigation
-Includes the Address bar (URLLineEdit).
-
-### Bookmarks [TODO]
-
-- [TODO] Bookmark location should be read from profile, with a default in the config
-- [TODO] Split off xbel implementation into a library
-- [TODO] BookmarksLibrary API
-
-### History
-
-History is managed by QtWebEngine.
-
-### Cookies
+### WebEngine
+* UrlRequestInterceptor
+ - Support for AdBlock-style lists
+* Cookie Filter
-Cookies are managed by QtWebEngine.