From bbfe6b3314c034dd03962c06cd957540cca8a95b Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Fri, 28 Oct 2022 15:37:33 +0200 Subject: [proxy] document packages --- src/hydrilla/locales/en_US/LC_MESSAGES/messages.po | 112 ++++++------- src/hydrilla/proxy/self_doc/packages.html.jinja | 180 ++++++++++++++++++++- .../proxy/web_ui/templates/import.html.jinja | 5 +- .../proxy/web_ui/templates/index.html.jinja | 8 +- .../web_ui/templates/items/libraries.html.jinja | 5 +- .../web_ui/templates/items/packages.html.jinja | 5 +- .../web_ui/templates/repos/show_single.html.jinja | 1 + 7 files changed, 252 insertions(+), 64 deletions(-) diff --git a/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po b/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po index 7f22ea3..cca1d01 100644 --- a/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po +++ b/src/hydrilla/locales/en_US/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: hydrilla 2.0\n" "Report-Msgid-Bugs-To: koszko@koszko.org\n" -"POT-Creation-Date: 2022-10-28 11:58+0200\n" +"POT-Creation-Date: 2022-10-28 14:42+0200\n" "PO-Revision-Date: 2022-02-12 00:00+0000\n" "Last-Translator: Wojtek Kosior \n" "Language: en_US\n" @@ -362,7 +362,7 @@ msgstr "Import items" #: src/hydrilla/proxy/web_ui/templates/import.html.jinja:43 msgid "web_ui.import.heading_import_from_file" -msgstr "From file" +msgstr "From ZIP file" #: src/hydrilla/proxy/web_ui/templates/import.html.jinja:49 msgid "web_ui.err.uploaded_file_not_zip" @@ -380,55 +380,55 @@ msgstr "Select file" msgid "web_ui.import.install_from_file_button" msgstr "Import from selected file" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:75 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:76 msgid "web_ui.import.heading_import_ad_hoc" msgstr "Ad hoc" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:78 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:81 msgid "web_ui.err.invalid_ad_hoc_package" msgstr "The ad hoc package being imported contains errors." -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:84 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:87 msgid "web_ui.import.identifier_field_label" msgstr "Identifier" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:86 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:89 msgid "web_ui.err.invalid_ad_hoc_identifier" msgstr "Chosen identifier is not valid." -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:90 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:93 msgid "web_ui.import.long_name_field_label" msgstr "Long name (optional)" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:93 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:96 msgid "web_ui.import.version_field_label" msgstr "Version (optional)" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:95 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:98 msgid "web_ui.err.invalid_ad_hoc_version" msgstr "Chosen version is not valid." -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:99 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:102 msgid "web_ui.import.description_field_label" msgstr "Description (optional)" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:102 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:105 msgid "web_ui.import.patterns_field_label" msgstr "URL patterns (each on its own line)" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:106 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:109 msgid "web_ui.err.invalid_ad_hoc_patterns" msgstr "Chosen patterns are not valid." -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:110 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:113 msgid "web_ui.import.script_text_field_label" msgstr "JavaScript to execute on pages that match one of the patterns" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:113 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:116 msgid "web_ui.import.lic_text_field_label" msgstr "Package license text (optional)" -#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:118 +#: src/hydrilla/proxy/web_ui/templates/import.html.jinja:121 msgid "web_ui.import.install_ad_hoc_button" msgstr "Add new package" @@ -483,169 +483,169 @@ msgstr "Global options" msgid "web_ui.home.mapping_usage_mode_label" msgstr "Package usage mode" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:79 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:81 msgid "web_ui.home.packages_are_used_when_enabled" msgstr "" "Hektilo is currently configured to only use packages that were explicitly" " enabled." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:82 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:84 msgid "web_ui.home.user_gets_asked_whether_to_enable_package" msgstr "" "Hektilo is currently configured to ask whenever a package is found that " "could be used for the current site." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:86 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:88 msgid "web_ui.home.packages_are_used_automatically" msgstr "" "Hektilo is currently configured to automatically use packages that are " "available for the current site." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:93 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:95 msgid "web_ui.home.use_enabled_button" msgstr "Use when enabled" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:96 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:98 msgid "web_ui.home.use_question_button" msgstr "Ask whether to use" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:99 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:101 msgid "web_ui.home.use_auto_button" msgstr "Use automatically" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:106 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:108 msgid "web_ui.home.script_blocking_mode_label" msgstr "Default scripts treatment" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:114 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:116 msgid "web_ui.home.scripts_are_allowed_by_default" msgstr "" "By default Haketilo currently allows JavaScript sent by websites to the " "browser to execute." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:117 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:119 msgid "web_ui.home.scripts_are_blocked_by_default" msgstr "" "By default Haketilo currently blocks JavaScript sent by websites to the " "browser from executing." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:121 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:123 msgid "web_ui.home.allow_scripts_button" msgstr "Allow scripts" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:122 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:124 msgid "web_ui.home.block_scripts_button" msgstr "Block scripts" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:133 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:135 msgid "web_ui.home.advanced_features_label" msgstr "Advanced features" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:141 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:143 msgid "web_ui.home.user_is_advanced_user" msgstr "Interface features for advanced users are currently enabled." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:144 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:146 msgid "web_ui.home.user_is_simple_user" msgstr "Interface features for advanced users are currently disabled." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:151 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:153 msgid "web_ui.home.user_make_advanced_button" msgstr "Enable" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:154 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:156 msgid "web_ui.home.user_make_simple_button" msgstr "Disable" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:162 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:164 msgid "web_ui.home.orphans_label" msgstr "Orphans" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:168 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:170 msgid "web_ui.home.orphans_to_delete_{mappings}" msgstr "Haketilo is holding some unused packages that can be removed ({mappings})." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:172 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:174 msgid "web_ui.home.orphans_to_delete_exist" msgstr "Haketilo is holding some unused libraries that can be removed." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:176 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:178 msgid "web_ui.home.orphans_to_delete_{mappings}_{resources}" msgstr "" "Haketilo is holding some unused items that can be removed (packages: " "{mappings}; libraries: {resources})." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:185 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:187 msgid "web_ui.home.prune_orphans_button" msgstr "Prune orphans" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:196 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:198 msgid "web_ui.home.popup_settings_label" msgstr "Popup settings" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:212 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:214 msgid "web_ui.home.configure_popup_settings_on_pages_with" msgstr "Configure popup settings on pages with" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:218 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:220 msgid "web_ui.home.popup_settings_jsallowed_button" msgstr "JS allowed" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:219 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:221 msgid "web_ui.home.popup_settings_jsblocked_button" msgstr "JS blocked" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:220 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:222 msgid "web_ui.home.popup_settings_payloadon_button" msgstr "Payload used" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:270 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:272 msgid "web_ui.home.popup_no_button" msgstr "Disable popup" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:273 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:275 msgid "web_ui.home.popup_yes_button" msgstr "Enable popup" -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:283 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:285 msgid "web_ui.home.jsallowed_popup_yes" msgstr "" "Haketilo currently makes it possible to open its popup window on pages " "where native JS has been allowed to execute. This is a convenience that " "comes at a price of greater risk of user fingerprinting." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:285 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:287 msgid "web_ui.home.jsallowed_popup_no" msgstr "" "Haketilo currently does not make it possible to open its popup window on " "pages with their native JS allowed. This setting is less convenient but " "decreases the risk of user fingerprinting." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:291 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:293 msgid "web_ui.home.jsblocked_popup_yes" msgstr "" "Haketilo currently makes it possible to open its popup window on pages " "where native JS has been blocked from executing." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:293 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:295 msgid "web_ui.home.jsblocked_popup_no" msgstr "" "Haketilo currently does not make it possible to open its popup window on " "pages where native JS has been blocked from executing." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:299 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:301 msgid "web_ui.home.payloadon_popup_yes" msgstr "" "Haketilo currently makes it possible to open its popup window on pages " "where payload is used." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:301 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:303 msgid "web_ui.home.payloadon_popup_no" msgstr "" "Haketilo currently does not make it possible to open its popup window on " "pages where payload is used." -#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:306 +#: src/hydrilla/proxy/web_ui/templates/index.html.jinja:308 msgid "web_ui.home.popup_can_be_opened_by" msgstr "" "When enabled on given page, popup dialog can be opened by typing big " @@ -732,7 +732,7 @@ msgstr "Uninstall" msgid "web_ui.libraries.title" msgstr "Libraries" -#: src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja:39 +#: src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja:40 msgid "web_ui.libraries.heading" msgstr "Available libraries" @@ -1016,11 +1016,11 @@ msgstr "Currently active version is '{}'." msgid "web_ui.packages.title" msgstr "Packages" -#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:39 +#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:40 msgid "web_ui.packages.heading" msgstr "Available packages" -#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:73 +#: src/hydrilla/proxy/web_ui/templates/items/packages.html.jinja:76 msgid "web_ui.packages.enabled_version_{}" msgstr "enabled version {}" @@ -1243,15 +1243,15 @@ msgstr "packages: {mappings}; libraries: {resources}" msgid "web_ui.repos.item_count_{mappings}" msgstr "packages: {mappings}" -#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:170 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:171 msgid "web_ui.repos.single.actions_label" msgstr "Actions" -#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:172 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:173 msgid "web_ui.repos.single.remove_button" msgstr "Remove repository" -#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:173 +#: src/hydrilla/proxy/web_ui/templates/repos/show_single.html.jinja:174 msgid "web_ui.repos.single.refresh_button" msgstr "Refresh" diff --git a/src/hydrilla/proxy/self_doc/packages.html.jinja b/src/hydrilla/proxy/self_doc/packages.html.jinja index a9bedc5..c27c161 100644 --- a/src/hydrilla/proxy/self_doc/packages.html.jinja +++ b/src/hydrilla/proxy/self_doc/packages.html.jinja @@ -27,15 +27,189 @@ code in a proprietary work, I am not going to enforce this in court. {% call section() %} {% call paragraph() %} - blah blah + Users can modify web pages by creating, installing and enabling + packages. + A package associates {{ doc_page_link('URL patterns', 'url_patterns') }} + with payloads (i.e. sets of scripts) that can be injected to pages. + For instance, if an enabled package associates pattern + https://example.com/*** with a script that adds a big + "Hello world!" text to the page, this package shall cause "Hello world!" + to appear on pages under example.com. {% endcall %} {% endcall %} {% call section() %} - {{ medium_heading('blah blah') }} + {{ medium_heading('Packages and libraries') }} {% call paragraph() %} - more blah blah... + To make mapping custom JavaScript applications and their dependencies to + web pages more manageable, Haketilo defines its own concept of "packages" + and "libraries". + {% endcall %} + + {% call unordered_list() %} + {% call list_entry() %} + package - Also called mapping. + It associates URL patterns with libraries. + {% endcall %} + {% call list_entry() %} + library - Sometimes also referred to as + resource. + Defines a set of scripts that can be injected together into a page. + It can also name other libraries as its dependencies. + When injecting scripts of a given library into some page, Haketilo will + first inject scripts of all libraries depended on. + {% endcall %} + {% endcall %} + + {% call paragraph() %} + It's ultimately a package that provides concrete functionality to the end + user and that can be enabled or disabled. + For this reason, a casual user does not even need to be aware of the + existence of libraries. + Haketilo UI advanced interface features need to be enabled on the + {{ hkt_link('settings page', 'home.home') }} for installed libraries to be + viewable. + {% endcall %} + {% endcall %} + + {% call section() %} + {{ medium_heading('Installing') }} + + {% call paragraph() %} + Useful packages prepared by others can be installed from Hydrilla + repositories. The repositories can be configured + {{ hkt_link('through Haketilo user interface', 'repos.repos') }} and as of + Haketilo 3.0-beta1 need to be manually "refreshed" for new packages from + them to be shown in Haketilo. + Available packages viewable on the + {{ hkt_link('packages listing page', 'items.packages') }} are not + immediately installed. + This only happens after they are explicitly enabled or automatically + enabled (if the user configured Haketilo to do this). + {% endcall %} + + {% call paragraph() %} + For convenience, users can also create simple packages + {{ hkt_link('directly in Haketilo UI', 'import.items_import') }}. + A simple form can be used to quickly define a standalone script payload + for a set of URL patterns. As of Haketilo 3.0 only simple (i.e. + single-library) payloads can be created this way. + {% endcall %} + + {% call paragraph() %} + It is also possible to import packages from files. + For this, a directory of serveable mappings and reasources - as produced + by Hydrilla builder and used by Hydrilla server - has to be put into a ZIP + archive. + It can then be uploaded to Haketilo via its + {{ hkt_link('import page', 'import.items_import') }}. + {% endcall %} + {% endcall %} + + {% call section() %} + {{ medium_heading('Uninstalling') }} + + {% call paragraph() %} + Haketilo tracks dependencies between packages and libraries and + automatically determines which of them are no longer needed. + These are called orphans and if present, can be + removed from the {{ hkt_link('settings page', 'home.home') }}. + A version of package or library that is not being used but is still + available from an active repository is not considered an orphan. It + automatically becomes one when the repository either stops advertising it + as available or gets removed by the user from + {{ hkt_link('the repositories list', 'repos.repos') }}. + {% endcall %} + + {% call paragraph() %} + When advanced UI features are enabled, it is additionally possible to + manually uninstall any single package that is not in use at a given + moment. + {% endcall %} + {% endcall %} + + {% call section() %} + {{ medium_heading('Package contents') }} + + {% call paragraph() %} + Each package has an identifier (built from a + restricted set of characters), a long name, a + description, a version + and almost always a list of license files and a + set of URL patterns mapped to libraries. + In addition there might also be other pieces of information such as + required permissions. + {% endcall %} + {% endcall %} + + {% call section() %} + {{ medium_heading('Enabling/disabling') }} + + {% call paragraph() %} + The user can put package in any of 3 possible states. + It can be either enabled, + disabled or + not configured. + {% endcall %} + + {% call paragraph() %} + An enabled package always has its payloads injected on pages matched by + their patterns (unless some more specific pattern takes precedence on the + given page as described on the + {{ doc_page_link('policy selection page', 'policy_selection') }}). + {% endcall %} + + {% call paragraph() %} + A disabled package is always ignored. + It has to be manually re-enabled for Haketilo to take it into account + again. + {% endcall %} + + {% call paragraph() %} + Finally, a package that is neither explicitly enabled nor disabled can be + treated differently depending on user's choice on the + {{ hkt_link('settings page', 'home.home') }}. + It is possible to have Haketilo + {% endcall %} + + {% call unordered_list() %} + {% call list_entry() %} + automatically inject such packages' payloads on mathing pages, + {% endcall %} + {% call list_entry() %} + prompt the user on matching pages asking whether the package should be + enabled or + {% endcall %} + {% call list_entry() %} + completely ignore non-configured packages. + {% endcall %} + {% endcall %} + {% endcall %} + + {% call section() %} + {{ medium_heading('Handling multiple versions') }} + + {% call paragraph() %} + It is possible to have many versions of the same package or library + installed. + When this is the case, Haketilo by default uses the newest versions it + can. + Additionally, if certain package is enabled, its page also allows the user + to configure its pinning. + A package can be + {% endcall %} + + {% call unordered_list() %} + {% call list_entry() %} + pinned to use a particular version, + {% endcall %} + {% call list_entry() %} + pinned to use the best version from a particular repository or + {% endcall %} + {% call list_entry() %} + not pinned at all (best version overall is used). + {% endcall %} {% endcall %} {% endcall %} {% endblock main %} diff --git a/src/hydrilla/proxy/web_ui/templates/import.html.jinja b/src/hydrilla/proxy/web_ui/templates/import.html.jinja index afeb5a2..34f1b66 100644 --- a/src/hydrilla/proxy/web_ui/templates/import.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/import.html.jinja @@ -72,7 +72,10 @@ code in a proprietary work, I am not going to enforce this in court.
-

{{ _('web_ui.import.heading_import_ad_hoc') }}

+

+ {{ _('web_ui.import.heading_import_ad_hoc') }} + {{ hkt_doc_link('packages') }} +

{% if invalid_ad_hoc_package is defined %} {{ error_note(_('web_ui.err.invalid_ad_hoc_package')) }} diff --git a/src/hydrilla/proxy/web_ui/templates/index.html.jinja b/src/hydrilla/proxy/web_ui/templates/index.html.jinja index 36d9941..93b834a 100644 --- a/src/hydrilla/proxy/web_ui/templates/index.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/index.html.jinja @@ -67,7 +67,9 @@ code in a proprietary work, I am not going to enforce this in court. {{ _('web_ui.home.heading.options') }} - {{ label(_('web_ui.home.mapping_usage_mode_label')) }} + {% call label(_('web_ui.home.mapping_usage_mode_label')) %} + {{ hkt_doc_link('packages') }} + {% endcall %} {% set use_enabled_but_classes = ['green-button'] %} {% set use_auto_but_classes = ['green-button'] %} @@ -103,7 +105,9 @@ code in a proprietary work, I am not going to enforce this in court.
- {{ label(_('web_ui.home.script_blocking_mode_label')) }} + {% call label(_('web_ui.home.script_blocking_mode_label')) %} + {{ hkt_doc_link('script_blocking') }} + {% endcall %} {% set allow_but_classes = ['red-button'] %} {% set block_but_classes = ['blue-button'] %} diff --git a/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja b/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja index 0996b8b..d94d51c 100644 --- a/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja +++ b/src/hydrilla/proxy/web_ui/templates/items/libraries.html.jinja @@ -36,7 +36,10 @@ code in a proprietary work, I am not going to enforce this in court. {% endblock %} {% block main %} -

{{ _('web_ui.libraries.heading') }}

+

+ {{ _('web_ui.libraries.heading') }} + {{ hkt_doc_link('packages') }} +