diff options
Diffstat (limited to 'docs/DESIGN.md')
-rw-r--r-- | docs/DESIGN.md | 97 |
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. |