diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 5a1d4723..c464cf1a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -25,7 +25,7 @@ jobs: graphviz \ python3-pip \ python3-setuptools - python3 -m pip install mkdocs mkdocs-github-admonitions-plugin mkdocs-get-deps pymdown-extensions + python3 -m pip install mkdocs mkdocs-github-admonitions-plugin mkdocs-get-deps pymdown-extensions mdx_truly_sane_lists doxygen mkdocs build bun install -g gh-pages diff --git a/MILESTONES.md b/MILESTONES.md index aa24537c..c5e88f8b 100644 --- a/MILESTONES.md +++ b/MILESTONES.md @@ -4,19 +4,25 @@ For past releases please check in [here](./docs/releases/). ## 0.1.3 - [x] Move all components to the revised codegen format +- [ ] Initial settings implementation - [ ] New getters and setters design (and updated schemas). -- [ ] Implement flex, grid, scroll & pack via codegen. - [ ] Tidy up the XML caching -- [ ] Tidy up the JS scripting interface. -- [ ] deb package +- [x] flatpak distribution +- [x] docs generation ## 0.1.5 - [x] Support for script modules -- [ ] Full support for getters and setters +- [ ] Tidy up the JS scripting interface. +- [ ] Complete support for getters and setters +- [x] Support basic policies via env flags & settings +- [ ] Implement flex, grid, scroll & pack via codegen. + +## 0.1.7 + - [x] Final implementation of the static xml builder (now external dependency) - [ ] Full infrastructure for benchmarking & tests implemented -- [x] Support basic policies via env flags +- [ ] deb package ## 0.2.x diff --git a/RELEASE.md b/RELEASE.md index d0428bc8..57b607d4 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -4,26 +4,37 @@ This second alpha release is still not usable in real-world scenarios, yet some The main objectives for this release are: -- To improve the build system moving it to a separate repo. -- To introduce a wider range of fltk widgets. +- To improve the build system, moving it to a separate repo. - Complete the revised code-generation of widgets - Better serialization/de-serialization of XML props & revised getters/setters +- To introduce a wider range of fltk widgets. +- Documentation efforts. ### What's new? This is what has been implemented so far (and some missing feature for context): - [ ] Improvements to the build system - - [ ] migration of distribution-related features to [external repo]() - [ ] fix linking to follow https://github.com/KaruroChori/vs-fltk/issues/63 - [ ] debian and arch packages are now supported - [ ] install script can be now be safely used - - [ ] New widgets & improvements - + - [ ] flex + - [ ] grid - [ ] Updated code-gen - + - [x] Use the new schema - [ ] Updated core features - - [x] Removed most of the globals + - [x] Removed most of the globals & reworked singletons - [x] Reworked `ui_tree` interface to be more generic and not only viable for xml trees. + - [x] Added guards to decide which features to compile `vs.fltk` with. + - [ ] Support for automatic search of files for components, based on a priority list. + - [ ] Linking external libraries and exposing symbols to `vs` +- [ ] Documentation! + - [x] Landing page for the project + - [x] `doxygen` for C++ code + - [x] `mkdocs` to distribute the main documentation + - [ ] Documenting: + - [ ] settings + - [ ] paths/virtual paths + - [ ] some basic information to use vs diff --git a/TODO.md b/TODO.md index 43f52f37..3c4e9d94 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1 @@ -- [ ] Restore vs_debug -- [ ] Allow http only withou libcurl via https://github.com/lazy-eggplant/libhttp - +- [ ] Allow http only without libcurl via https://github.com/lazy-eggplant/libhttp diff --git a/docs/full-specs/settings.md b/docs/full-specs/settings.md index b0913acf..6027e1bf 100644 --- a/docs/full-specs/settings.md +++ b/docs/full-specs/settings.md @@ -1,6 +1,5 @@ - - ## Order of evaluation for policies + Directives on policies are applied base on the following priority (highest to lowest) - built-in compiled profile (vs can be built with embedded policies) @@ -10,37 +9,48 @@ Directives on policies are applied base on the following priority (highest to lo - Any locally defined policy within the app or components. ## Structure of a settings profile + This is the tree structure of any settings XML file: - `vs-profile` - - `locale` - - `user`: dictionary of user data, mostly used for forms auto fill-in. - - `languages`: dictionary of supported languages. They are ordered by preference (lower number higher preference) and when ambiguous by order in the XML file. - - `theme`: base user theme. It supports some attributes: - - `src` the location of a theme xml file to be used as parent. - - `scheme` pick up a color scheme if internally defined (default allowed). - - `mode` determines if using dark, light, high contrast etc. or if this choice should be left to the OS if `inherit` (default). - - `initial-scene`: path for the scene to show up when starting `vs` - - `runtime` - - `logging` - - `parsing` - - `base-policy` same structure as one entry in the policies, but this is applied as a global override to fully shut of features of `vs`. - - `policies` - - `template` reusable entries, used to avoid copy and paste. Their content is expanded in `domain` and `app` extending from them. - - `name` unique name in the config file - - `extends` comma separated list of sources to copy from. - - `domain` - - `extends` comma separated list of sources to copy from. - - `app` - - `extends` comma separated list of sources to copy from. + - `locale` + - `user`: dictionary of user data, mostly used for forms auto fill-in. + - `languages`: dictionary of supported languages. They are ordered by preference (lower number higher preference) and when ambiguous by order in the XML file. + - `theme`: base user theme. It supports some attributes: + - `src` the location of a theme xml file to be used as parent. + - `scheme` pick up a color scheme if internally defined (default allowed). + - `mode` determines if using dark, light, high contrast etc. or if this choice should be left to the OS if `inherit` (default). + - `initial-scene`: path for the scene to show up when starting `vs` + - `runtime` + - `logging` + - `parsing` + - `base-policy` same structure as one entry in the policies, but this is applied as a global override to fully shut of features of `vs`. + - `policies` + - `template` reusable entries, used to avoid copy and paste. Their content is expanded in `domain` and `app` extending from them. + - `name` unique name in the config file + - `extends` comma separated list of sources to copy from. + - `domain` + - `extends` comma separated list of sources to copy from. + - `app` + - `extends` comma separated list of sources to copy from. ### User dictionary + Entries in the user dictionary are arbitrary and publicly exposed as `user://` virtual paths. Apps cannot mutate them, this is only possible via settings. -They are not a replacement for secrets! +They are not a replacement for secrets! User data should only include things like user's nickname, public email, daytime zone, etc. ### Language codes + Language codes are expressed as a pair `language`, `country`. Country is optional, which means any satisfying the language itself can be picked. -### Policy structure \ No newline at end of file +### Policy structure + +#### Flag entries + +Most entries are flags supporting one of three values: + +- `yes`: use the upstream value from the parent, but if that is `no` report a warning/error. +- `no`: revoke this permission. +- `inherit` (default): use the upstream value from the parent. diff --git a/mkdocs.yml b/mkdocs.yml index d2784078..d4d97735 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -11,6 +11,7 @@ markdown_extensions: - admonition - pymdownx.tilde - pymdownx.tasklist + - mdx_truly_sane_lists - sane_lists - smarty - toc: