From bf84dd000cc304b27c4fa57ab99c226b4e0ad40a Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Tue, 5 May 2026 15:43:52 +1000 Subject: [PATCH 01/11] Move documentation into src and make docs processing a single source of truth This lets openhab-website use the same script when it clones openhab-docs during its preprocessing and load the latest processing logic instead of duplicating it. Signed-off-by: Jimmy Tanagra --- .rubocop.yml | 37 ++++ .vuepress/add_placeholders.rb | 38 ---- appendix/contributing.md | 53 ----- appendix/help.md | 24 -- community/contributing.md | 7 - developers/extensionservices/index.md | 19 -- installation/designer.md | 7 - migrate-to-src.sh | 51 +++++ package.json | 2 +- prepare-docs.rb | 209 ------------------ scripts/lib/add_placeholders.rb | 38 ++++ .../lib/process_utils.rb | 90 ++++++-- scripts/prepare-docs.rb | 17 ++ .../administration}/bundles.md | 0 .../administration}/console.md | 0 .../administration}/images/new_json_file.png | Bin .../administration}/images/ttop.png | Bin .../administration}/images/ui_add_thing.png | Bin .../administration}/images/ui_edit_thing.png | Bin .../administration}/index.md | 0 .../administration}/jsondb.md | 0 .../administration}/logging.md | 0 .../administration}/runtime.md | 0 .../administration}/serial.md | 0 .../apps/images/download-for-windows.png | Bin .../apps/images/download-on-the-app-store.png | Bin {addons/uis => src}/apps/images/mainui.png | Bin .../uis => src}/apps/images/notifications.png | Bin .../uis => src}/apps/images/settings1.jpeg | Bin .../uis => src}/apps/images/settings2.jpeg | Bin {addons/uis => src}/apps/images/sidemenu.jpeg | Bin {addons/uis => src}/apps/images/sitemap.png | Bin {addons/uis => src}/apps/ios.md | 0 {addons/uis => src}/apps/windows.md | 0 {concepts => src/concepts}/audio.md | 0 .../concepts}/diagrams/event_interfaces.png | Bin .../diagrams/event_interfaces_source.xml | 0 .../concepts}/diagrams/status_transitions.png | Bin .../diagrams/status_transitions_source.txt | 0 {concepts => src/concepts}/discovery.md | 0 {concepts => src/concepts}/images/audio.png | Bin {concepts => src/concepts}/images/hli.png | Bin .../concepts}/images/rule-arrival.jpeg | Bin .../concepts}/images/rule-leaving.jpeg | Bin .../images/rule-openwindow-action.jpeg | Bin .../concepts}/images/rule-openwindow.jpeg | Bin .../concepts}/images/rule-scene.jpeg | Bin .../images/rule-sunrise-trigger.jpeg | Bin .../concepts}/images/rule-sunrise.jpeg | Bin .../concepts}/images/thing-devices-1.png | Bin {concepts => src/concepts}/index.md | 0 {concepts => src/concepts}/items.md | 0 {concepts => src/concepts}/profiles.md | 0 {concepts => src/concepts}/rules.md | 0 {concepts => src/concepts}/things.md | 0 .../concepts}/units-of-measurement.md | 0 .../configuration}/actions.md | 0 .../configuration}/addons.md | 0 .../configuration}/apitokens.md | 0 .../blockly-getItemAttributes.png | Bin .../configuration}/blockly/index.md | 0 .../blockly/rules-blockly-before-using.md | 0 .../blockly/rules-blockly-date-handling.md | 0 .../blockly/rules-blockly-ephemeris.md | 0 .../blockly/rules-blockly-http.md | 0 .../blockly/rules-blockly-items-things.md | 0 .../blockly/rules-blockly-logging.md | 0 .../blockly/rules-blockly-notifications.md | 0 .../blockly/rules-blockly-persistence.md | 0 .../blockly/rules-blockly-run-and-process.md | 0 .../blockly/rules-blockly-standard-ext.md | 0 .../rules-blockly-timers-and-delays.md | 0 .../blockly/rules-blockly-uom.md | 0 .../blockly/rules-blockly-value-storage.md | 0 .../rules-blockly-voice-and-multimedia.md | 0 .../configuration}/editors.md | 0 .../images/InstallAddonsThroughUi.gif | Bin .../images/apitoken_create_token.png | Bin .../images/apitoken_example.png | Bin .../configuration}/images/apitoken_login.png | Bin .../images/apitoken_overview_tokens.png | Bin .../configuration}/images/apitoken_token.png | Bin .../blockly-afterperiod-timer-example.png | Bin ...lockly-afterperiod-timer-options-block.png | Bin .../blockly-afterperiod-timer-options.png | Bin .../blockly/blockly-afterperiod-timer.png | Bin .../images/blockly/blockly-arrow.png | Bin .../images/blockly/blockly-bitwise-not.png | Bin .../blockly/blockly-bitwise-operators.png | Bin .../images/blockly/blockly-bitwise.png | Bin .../images/blockly/blockly-call-script.png | Bin .../images/blockly/blockly-cancel-timer.png | Bin .../images/blockly/blockly-collapsed.png | Bin .../blockly/blockly-color-create-rgb.png | Bin .../images/blockly/blockly-colors-blend.png | Bin .../images/blockly/blockly-colors-hsb.png | Bin .../blockly/blockly-colors-hsbof-example.png | Bin .../images/blockly/blockly-colors-hsbof.png | Bin .../blockly/blockly-colors-overview-small.png | Bin .../blockly/blockly-colors-overview.png | Bin .../images/blockly/blockly-colors-picker.png | Bin .../images/blockly/blockly-colors-random.png | Bin .../images/blockly/blockly-context-help.png | Bin .../blockly/blockly-context-number-string.gif | Bin .../images/blockly/blockly-contextmenu.png | Bin .../blockly/blockly-copy-of-tutorial.gif | Bin .../blockly/blockly-cross-rule-copy.png | Bin .../blockly-date-comparison-between.png | Bin .../blockly/blockly-date-comparison.png | Bin .../blockly/blockly-date-copy-of-overview.png | Bin .../blockly/blockly-date-difference.png | Bin .../images/blockly/blockly-date-get-now.png | Bin .../images/blockly/blockly-date-get.png | Bin .../blockly-date-handling-ephemeris-small.png | Bin .../blockly-date-handling-ephemeris.png | Bin ...lockly-date-handling-persistence-small.png | Bin .../blockly-date-handling-persistence.png | Bin .../blockly/blockly-date-handling1-small.png | Bin .../images/blockly/blockly-date-handling1.png | Bin .../blockly/blockly-date-handling2-small.png | Bin .../images/blockly/blockly-date-handling2.png | Bin .../images/blockly/blockly-date-help.png | Bin .../images/blockly/blockly-date-picker.png | Bin .../images/blockly/blockly-date-plus.png | Bin .../blockly-date-temporal1-example1.png | Bin .../blockly-date-temporal2-example1.png | Bin .../blockly-date-temporal2-example2.png | Bin .../blockly-date-temporal2-example3.png | Bin .../blockly/blockly-date-text-example.png | Bin .../images/blockly/blockly-date-today.png | Bin .../images/blockly/blockly-date-unit-of.png | Bin .../blockly-datetime-from-item-example.png | Bin .../blockly/blockly-datetime-from-item.png | Bin .../blockly/blockly-datetime-with-values.png | Bin .../images/blockly/blockly-edit-screen.png | Bin .../blockly/blockly-ephemeris-days-until.png | Bin .../blockly/blockly-ephemeris-get-name.png | Bin .../blockly/blockly-ephemeris-is-example.png | Bin .../images/blockly/blockly-ephemeris-is.png | Bin .../blockly/blockly-ephemeris-small.png | Bin .../images/blockly/blockly-ephemeris.png | Bin .../images/blockly/blockly-expanded.png | Bin .../blockly-get-date-string-without.png | Bin .../blockly/blockly-get-date-string.png | Bin .../images/blockly/blockly-get-now-offset.png | Bin .../images/blockly/blockly-get-things.png | Bin .../blockly/blockly-getItem-with-var.png | Bin .../images/blockly/blockly-getItem.png | Bin .../blockly/blockly-getItemAttributes-fix.png | Bin .../blockly-getItemAttributes-simple.png | Bin .../blockly/blockly-getItemAttributes.png | Bin .../blockly/blockly-getItemStateDoesntFit.png | Bin .../images/blockly/blockly-getMembers.png | Bin .../blockly/blockly-getMembersExample.png | Bin .../images/blockly/blockly-getStateOfItem.png | Bin .../blockly/blockly-getThingAttributes.png | Bin .../images/blockly/blockly-getThingStatus.png | Bin .../blockly/blockly-getitemswithtag.png | Bin .../blockly/blockly-http-delete-simple.png | Bin .../blockly/blockly-http-get-complex.png | Bin .../blockly/blockly-http-get-params.png | Bin .../blockly/blockly-http-get-simple.png | Bin .../blockly/blockly-http-overview-small.png | Bin .../images/blockly/blockly-http-overview.png | Bin .../blockly/blockly-http-post-complex.png | Bin .../blockly/blockly-http-post-simple.png | Bin .../blockly/blockly-http-put-simple.png | Bin .../images/blockly/blockly-http-toggles.png | Bin .../blockly/blockly-inline-script-example.png | Bin .../images/blockly/blockly-inline-script.png | Bin .../blockly/blockly-inputs-external.png | Bin .../images/blockly/blockly-inputs-inline.png | Bin .../images/blockly/blockly-item-example.png | Bin .../images/blockly/blockly-item-thing.png | Bin .../images/blockly/blockly-item.png | Bin .../blockly-items-and-things-small.png | Bin .../blockly/blockly-items-and-things.png | Bin .../blockly/blockly-javascript-dialog.png | Bin .../blockly-lists-concatenate-example.png | Bin .../blockly/blockly-lists-concatenate.png | Bin .../blockly-lists-dictionary-example.png | Bin ...lockly-lists-dictionary-getkey-example.png | Bin .../blockly-lists-dictionary-getkey.png | Bin ...lockly-lists-dictionary-overview-small.png | Bin .../blockly-lists-dictionary-overview.png | Bin .../blockly/blockly-lists-dictionary.png | Bin .../images/blockly/blockly-logging-log.png | Bin .../blockly-logging-overview-small.png | Bin .../blockly/blockly-logging-overview.png | Bin .../images/blockly/blockly-logging-print.png | Bin .../blockly/blockly-logic-undefined.png | Bin .../images/blockly/blockly-main-help.png | Bin .../images/blockly/blockly-map-for-each.png | Bin .../blockly/blockly-map-foreach-example.png | Bin .../blockly/blockly-math-parse-number.png | Bin ...ockly-math-quantity-operations-failure.png | Bin .../blockly-math-quantity-operations.png | Bin .../images/blockly/blockly-math-round.png | Bin .../blockly/blockly-metadata-change.png | Bin .../blockly/blockly-metadata-config-key.png | Bin .../blockly/blockly-metadata-expire.png | Bin .../images/blockly/blockly-metadata-loop.png | Bin .../images/blockly/blockly-metadata.png | Bin .../blockly-notification-action-generic.png | Bin .../blockly/blockly-notification-full.png | Bin .../blockly-notification-icon-title-block.png | Bin .../blockly-notification-icon-title.png | Bin .../blockly/blockly-notification-simple.png | Bin .../blockly/blockly-notification-to-log.png | Bin .../blockly/blockly-notification-to-user.png | Bin .../blockly-notifications-buttons-message.png | Bin .../blockly/blockly-notifications-buttons.png | Bin ...-notifications-call-page-action-mainui.png | Bin ...blockly-notifications-call-page-action.png | Bin .../blockly/blockly-notifications-hide.png | Bin .../blockly-notifications-media-block.png | Bin .../blockly/blockly-notifications-media.png | Bin ...ckly-notifications-oneclick-configured.png | Bin .../blockly-notifications-oneclick.png | Bin .../blockly/blockly-notifications-small.png | Bin .../images/blockly/blockly-notifications.png | Bin .../images/blockly/blockly-notifications1.png | Bin .../images/blockly/blockly-notifications2.png | Bin .../images/blockly/blockly-notifications3.png | Bin .../images/blockly/blockly-notifications4.png | Bin .../images/blockly/blockly-notifications5.png | Bin .../blockly/blockly-old-version-warning.png | Bin .../blockly/blockly-openhab-macos-share-1.png | Bin .../blockly/blockly-openhab-macos-share-2.png | Bin .../blockly-persistence-get-item-change.png | Bin ...ockly-persistence-get-previous-example.png | Bin .../blockly-persistence-get-previous.png | Bin .../blockly-persistence-get-previousValue.png | Bin ...ckly-persistence-get-statistical-value.png | Bin .../blockly-persistence-persist-states.png | Bin .../blockly/blockly-persistence-persist.png | Bin .../blockly/blockly-persistence-remove.png | Bin .../blockly-persistence-return-types.png | Bin .../blockly/blockly-persistence-small.png | Bin .../blockly/blockly-persistence-timescope.png | Bin .../blockly-persistence-updated-date.png | Bin .../images/blockly/blockly-persistence.png | Bin .../blockly/blockly-persistence_small.png | Bin .../blockly-play-audio-known-issue.png | Bin .../blockly-play-audio-with-volume.png | Bin .../images/blockly/blockly-play-audio.png | Bin .../images/blockly/blockly-play-stream.png | Bin .../images/blockly/blockly-plus-small.png | Bin .../images/blockly/blockly-plus.png | Bin .../images/blockly/blockly-print.png | Bin .../blockly-quantity-comparison-examples.png | Bin .../blockly-quantity-comparison-if.png | Bin .../blockly/blockly-quantity-comparison.png | Bin .../blockly-quantity-conversion-item.png | Bin .../blockly/blockly-quantity-conversion.png | Bin .../blockly/blockly-quantity-loop-var.png | Bin .../blockly-quantity-multiplication.png | Bin .../blockly-quantity-smart-computation.png | Bin .../blockly/blockly-quantity-temp-item.png | Bin .../blockly/blockly-quantity-with-unit.png | Bin .../images/blockly/blockly-quantity.png | Bin .../blockly-reschedule-timer-example1.png | Bin .../blockly-reschedule-timer-example2.png | Bin .../blockly/blockly-reschedule-timer.png | Bin .../blockly-retrieve-context-example.png | Bin .../blockly/blockly-retrieve-context.png | Bin .../blockly-retrieve-rule-context-info.png | Bin .../blockly/blockly-run-and-process-small.png | Bin .../blockly/blockly-run-and-process.png | Bin .../images/blockly/blockly-run-rule-uuid.png | Bin .../images/blockly/blockly-run-rule.png | Bin .../images/blockly/blockly-run-script-2.png | Bin .../images/blockly/blockly-run-script.png | Bin .../images/blockly/blockly-run-scriptfile.png | Bin .../images/blockly/blockly-say.png | Bin .../images/blockly/blockly-search.png | Bin .../images/blockly/blockly-sendCommand.png | Bin .../blockly/blockly-sendCommandExample1.png | Bin .../blockly/blockly-sendCommandExample2.png | Bin .../images/blockly/blockly-showcode.png | Bin .../images/blockly/blockly-simple-timer.png | Bin .../blockly/blockly-specialArrayHandling.png | Bin .../images/blockly/blockly-stop-stream.png | Bin .../images/blockly/blockly-temporal1.png | Bin .../images/blockly/blockly-temporal2.png | Bin .../blockly/blockly-text-crlf-example.png | Bin .../blockly/blockly-text-overview-small.png | Bin .../images/blockly/blockly-text-overview.png | Bin .../blockly/blockly-text-replace-example.png | Bin .../images/blockly/blockly-text-replace.png | Bin .../images/blockly/blockly-thing-object.png | Bin .../images/blockly/blockly-thing.png | Bin .../images/blockly/blockly-thingExample.png | Bin .../images/blockly/blockly-things-loop.png | Bin .../blockly/blockly-timer-comprehensive.png | Bin .../blockly-timer-context-examples.png | Bin .../blockly-timer-context-undefined.png | Bin .../images/blockly/blockly-timer-context.png | Bin .../blockly-timer-example-shared-1.png | Bin .../blockly/blockly-timer-is-active.png | Bin .../blockly/blockly-timer-is-running.png | Bin .../blockly/blockly-timer-shared-cancel.png | Bin .../images/blockly/blockly-timer-shared.png | Bin .../blockly/blockly-timer-terminated.png | Bin .../blockly-timers-and-delays-small.png | Bin .../blockly/blockly-timers-overview.png | Bin .../images/blockly/blockly-toolbox-1.png | Bin .../images/blockly/blockly-toolbox-2.png | Bin .../images/blockly/blockly-toolbox-3.png | Bin .../images/blockly/blockly-toolbox.png | Bin .../blockly/blockly-transform-example1.png | Bin .../blockly/blockly-transform-example2.png | Bin .../blockly/blockly-transform-example3.png | Bin .../blockly/blockly-transform-jsonpath.png | Bin .../images/blockly/blockly-transform-map.png | Bin .../blockly/blockly-transform-regex.png | Bin .../images/blockly/blockly-uom-example.png | Bin .../images/blockly/blockly-uom-small.png | Bin .../images/blockly/blockly-uom.png | Bin .../images/blockly/blockly-value-example1.png | Bin .../images/blockly/blockly-value-example2.png | Bin .../blockly/blockly-value-get-cache.png | Bin .../images/blockly/blockly-value-get.png | Bin .../blockly-value-is-defined-cache.png | Bin .../blockly/blockly-value-is-defined.png | Bin .../blockly/blockly-value-storage-cache.png | Bin .../blockly/blockly-value-storage-small.png | Bin .../images/blockly/blockly-value-storage.png | Bin .../blockly/blockly-value-store-cache.png | Bin .../images/blockly/blockly-value-store.png | Bin .../blockly-voice-and-multimedia-small.png | Bin .../blockly/blockly-voice-and-multimedia.png | Bin .../blockly/blockly-waitfor-example.png | Bin .../images/blockly/blockly-waitfor.png | Bin .../blockly-workspace-showblocks-small.png | Bin .../blockly/blockly-workspace-showblocks.png | Bin .../blockly-workspace-showcode-small.png | Bin .../blockly/blockly-workspace-showcode.png | Bin .../images/blockly/blockly-zoom.png | Bin .../blockly/blockly_typed_variables1.png | Bin .../blockly/blockly_typed_variables2.png | Bin .../blockly/blockly_typed_variables3.png | Bin .../blockly_typed_variables_examples.png | Bin .../blockly/blocky-choose-javascript.png | Bin .../built-with-blockly-badge-white-small.svg | 0 .../built-with-blockly-badge-white.svg | 0 .../images/blockly/uom_block_smart_input.png | Bin .../images/blockly/youtube-logo-small.png | Bin .../images/blockly/youtube-logo.png | Bin .../images/eclipseiotmarket_addons.png | Bin .../images/eclipseiotmarket_configuration.png | Bin .../images/eclipseiotmarket_listings.png | Bin .../configuration}/images/package_demo.jpg | Bin .../configuration}/images/package_expert.jpg | Bin .../configuration}/images/package_simple.jpg | Bin .../images/package_standard.jpg | Bin .../configuration}/images/paperui1.png | Bin .../configuration}/images/paperui2.png | Bin .../configuration}/images/paperui3.png | Bin .../configuration}/images/riemann-left.svg | 0 .../images/riemann-midpoint.svg | 0 .../configuration}/images/riemann-right.svg | 0 .../images/riemann-trapezoidal.svg | 0 .../configuration}/images/rule-play-audio.png | Bin .../configuration}/images/ruleengine.png | Bin .../images/smarthome-designer-05.png | Bin .../images/smarthome-designer-10.png | Bin .../images/smarthome-designer-15.png | Bin .../images/smarthome-designer-20.png | Bin .../configuration}/images/suggestions.png | Bin .../images/ui_rules_dsl_test_example.png | Bin .../ui_rules_dsl_test_example_action.png | Bin .../images/ui_rules_dsl_test_example_dsl.png | Bin .../configuration}/images/vscode_demo.gif | Bin .../images/vscode_extensiontab_icon.png | Bin {configuration => src/configuration}/index.md | 0 {configuration => src/configuration}/items.md | 0 .../configuration}/jsr223.md | 0 .../configuration}/migration/index.md | 0 .../configuration}/multimedia.md | 0 .../configuration}/persistence.md | 0 .../configuration}/restdocs.md | 0 .../configuration}/rules-dsl.md | 0 .../configuration}/services.md | 0 .../configuration}/things.md | 0 .../configuration}/transformations.md | 0 .../configuration}/websocket.md | 0 .../configuration}/yaml/index.md | 0 .../configuration}/yaml/items.md | 0 .../configuration}/yaml/pages.md | 0 .../configuration}/yaml/tags.md | 0 .../configuration}/yaml/things.md | 0 .../configuration}/yaml/widgets.md | 0 {developers => src/developer}/addons/addon.md | 0 .../developer}/addons/config-xml.md | 0 {developers => src/developer}/addons/faq.md | 0 {developers => src/developer}/addons/index.md | 0 {developers => src/developer}/audio/index.md | 0 .../developer}/bindings/images/concept.drawio | 0 .../developer}/bindings/images/concept.png | Bin .../images/thing_life_cycle_shutdown.png | Bin .../images/thing_life_cycle_startup.png | Bin .../developer}/bindings/images/things.png | Bin .../developer}/bindings/index.md | 0 .../developer}/bindings/semantic-tags.md | 0 .../developer}/bindings/thing-xml.md | 0 {developers => src/developer}/buildsystem.md | 0 {developers => src/developer}/contributing.md | 0 {developers => src/developer}/governance.md | 0 {developers => src/developer}/guidelines.md | 0 {developers => src/developer}/ide/eclipse.md | 0 .../ide/examples/vscode/launch.json | 0 .../ide/examples/vscode/settings.json | 0 .../developer}/ide/examples/vscode/tasks.json | 0 {developers => src/developer}/ide/generic.md | 0 .../developer}/ide/images/eclipse.jpg | Bin .../developer}/ide/images/generic_ide.pdn | Bin .../developer}/ide/images/generic_ide.png | Bin .../images/ide_debug_eclipse_1_bndtools.png | Bin .../images/ide_debug_eclipse_2_appbndrun.png | Bin .../ide/images/ide_debug_eclipse_3_remote.png | Bin .../images/ide_eclipse_debug_animation.gif | Bin .../images/ide_setup_eclipse_1_installer.png | Bin .../images/ide_setup_eclipse_2_advanced.png | Bin .../images/ide_setup_eclipse_3_select_ide.png | Bin .../images/ide_setup_eclipse_4_openhab.png | Bin .../images/ide_setup_eclipse_5_variables.png | Bin .../ide_setup_eclipse_6_tasks_finished.png | Bin .../ide/images/ide_setup_intellij_debug.png | Bin .../ide_setup_intellij_debug_attach.png | Bin ...ide_setup_intellij_debug_configuration.png | Bin .../ide_setup_intellij_import_module.png | Bin .../ide/images/ide_setup_vscode_folder.png | Bin .../images/ide_setup_vscode_folder_launch.png | Bin .../images/ide_setup_vscode_folder_tasks.png | Bin .../ide/images/ide_setup_vscode_launch.png | Bin .../ide/images/ide_setup_vscode_settings.png | Bin .../ide/images/ide_setup_vscode_tasks.png | Bin .../developer}/ide/images/intellij.jpg | Bin .../developer}/ide/images/vscode.jpg | Bin {developers => src/developer}/ide/intellij.md | 0 {developers => src/developer}/ide/karaf.md | 0 {developers => src/developer}/ide/vscode.md | 6 +- {developers => src/developer}/index.md | 0 .../developer}/ioservices/index.md | 0 .../developer}/module-types/index.md | 0 .../developer}/osgi/configadmin.md | 0 {developers => src/developer}/osgi/equinox.md | 0 .../developer}/osgi/eventadmin.md | 0 .../osgi/images/delayedcomponent.png | Bin .../developer}/osgi/images/edittarget.png | Bin .../developer}/osgi/images/event-admin.png | Bin .../osgi/images/immediatecomponent.png | Bin .../developer}/osgi/images/layeringosgi.png | Bin .../osgi/images/runconfiguration.png | Bin .../developer}/osgi/images/services.png | Bin .../developer}/osgi/images/states.png | Bin .../developer}/osgi/images/targetplatform.png | Bin {developers => src/developer}/osgi/osgi.md | 0 {developers => src/developer}/osgi/osgids.md | 0 .../developer}/persistence/index.md | 0 {developers => src/developer}/tests.md | 0 .../developer}/transformations/index.md | 0 {developers => src/developer}/utils/events.md | 0 {developers => src/developer}/utils/i18n.md | 0 {developers => src/developer}/utils/tools.md | 0 introduction.md => src/index.md | 0 {installation => src/installation}/armbian.md | 0 {installation => src/installation}/docker.md | 0 .../images/Accueil_Openhab_2.png | Bin .../installation}/images/Admin_CMD.jpg | Bin .../images/Home_OH_adminCreate.png | Bin .../installation}/images/Home_Openhab_3.png | Bin .../installation}/images/Home_Openhab_4.png | Bin .../installation}/images/JAVA_HOME.png | Bin .../installation}/images/Karaf_Windows.png | Bin .../installation}/images/SSH_Connection_1.jpg | Bin .../installation}/images/SSH_Connection_2.jpg | Bin .../installation}/images/SSH_Connection_3.jpg | Bin .../installation}/images/SSH_Connection_4.jpg | Bin .../installation}/images/Windows_Service.jpg | Bin .../images/Wrapper_Install_Windows.jpg | Bin .../images/Wrapper_Start_Windows.jpg | Bin .../images/Wrapper_Start_Windows.png | Bin .../installation}/images/armbian-step1.png | Bin .../installation}/images/armbian-step2.png | Bin .../installation}/images/armbian-step3.png | Bin .../installation}/images/armbian-step4.png | Bin .../installation}/images/armbian-step5.png | Bin .../installation}/images/boards1.png | Bin .../installation}/images/homebrew-openhab.svg | 0 .../installation}/images/openHAB_Folders.png | Bin .../images/openHABian-SSH-MotD.png | Bin .../images/openHABian-config.png | Bin .../images/openHABian-install-failed.png | Bin .../images/openHABian-install-log.png | Bin .../images/openHABian-menu-freshsetup.png | Bin .../installation}/images/pine64.png | Bin .../installation}/images/rpi2b.png | Bin {installation => src/installation}/index.md | 0 {installation => src/installation}/linux.md | 0 {installation => src/installation}/macos.md | 0 {installation => src/installation}/openbsd.md | 0 .../installation}/reverse-proxy.md | 0 .../installation}/security.md | 0 .../installation}/synology.md | 0 {installation => src/installation}/windows.md | 0 {mainui => src/mainui}/CONTRIBUTING.md | 0 {mainui => src/mainui}/about.md | 0 {mainui => src/mainui}/addons.md | 0 {mainui => src/mainui}/developer/index.md | 0 .../mainui}/developer/log-viewer.md | 0 {mainui => src/mainui}/developer/sidebar.md | 0 {mainui => src/mainui}/developer/widgets.md | 0 .../mainui}/images/about-top-section.png | Bin .../mainui}/images/addons-toolbar.png | Bin .../mainui}/images/bg-gray-setting.png | Bin .../mainui}/images/bg-white-setting.png | Bin .../mainui}/images/config-overview.png | Bin .../mainui}/images/cron-saturday.png | Bin {mainui => src/mainui}/images/cron-seven.png | Bin {mainui => src/mainui}/images/dark-mode.png | Bin .../mainui}/images/developer-widgets.png | Bin .../mainui}/images/dirty-indicator.png | Bin {mainui => src/mainui}/images/log-level.png | Bin .../mainui}/images/model-overview.png | Bin .../mainui}/images/navbar-style.png | Bin .../mainui}/images/notification.png | Bin .../mainui}/images/persistence-settings.png | Bin {mainui => src/mainui}/images/play-rule.png | Bin {mainui => src/mainui}/images/plus.png | Bin .../mainui}/images/rules-overview.png | Bin .../mainui}/images/rules-selection.png | Bin .../mainui}/images/saturday-rule-schedule.png | Bin {mainui => src/mainui}/images/scratchpad.png | Bin .../mainui}/images/settings-menu.png | Bin .../mainui}/images/settings-page.png | Bin .../mainui}/images/simple-nav-off.png | Bin .../mainui}/images/simple-nav-on.png | Bin .../mainui}/images/theme-selection.png | Bin .../mainui}/images/timer-trigger.png | Bin .../mainui}/images/webaudio-blockly.png | Bin {mainui => src/mainui}/index.md | 0 .../mainui}/settings/blockly-editor.md | 0 {mainui => src/mainui}/settings/index.md | 0 {mainui => src/mainui}/settings/items.md | 0 {mainui => src/mainui}/settings/model.md | 0 {mainui => src/mainui}/settings/pages.md | 0 .../mainui}/settings/persistence.md | 0 {mainui => src/mainui}/settings/rules.md | 0 {mainui => src/mainui}/settings/scenes.md | 0 {mainui => src/mainui}/settings/schedule.md | 0 .../mainui}/settings/script-editor.md | 0 {mainui => src/mainui}/settings/scripts.md | 0 {mainui => src/mainui}/settings/things.md | 0 .../mainui}/settings/transformations.md | 0 .../tutorial}/auto_overview.md | 0 .../tutorial}/custom_widgets.md | 0 .../tutorial}/first_steps.md | 0 .../images/Customize_location_card_form.png | Bin .../tutorial}/images/account_option.png | Bin .../tutorial}/images/add_hue_bridge.png | Bin .../tutorial}/images/add_members_change.png | Bin .../tutorial}/images/add_metadata_model.png | Bin .../tutorial}/images/add_separator.png | Bin .../tutorial}/images/admin_user.png | Bin .../tutorial}/images/administrator.png | Bin .../images/alarm-clock-rule-template.png | Bin .../tutorial}/images/all_lights_widget.png | Bin .../images/applying_custom_list_widget.png | Bin .../images/basic-rule-duplicate-2.png | Bin .../tutorial}/images/basic-rule-duplicate.png | Bin .../tutorial}/images/basic-rule-heading.png | Bin .../tutorial}/images/basic-rule-list.png | Bin .../images/basic-rule-stub-duplicate.png | Bin .../images/basic-rule-yaml-modified.png | Bin .../tutorial}/images/basic-rule-yaml.png | Bin .../tutorial}/images/blank_overview.png | Bin .../tutorial}/images/blockly-add-comment.jpg | Bin .../images/blockly-call-function.png | Bin .../images/blockly-command-light-on.png | Bin .../images/blockly-complete-condition.png | Bin .../tutorial}/images/blockly-condition.png | Bin .../tutorial}/images/blockly-create-timer.png | Bin .../tutorial}/images/blockly-equals.png | Bin .../tutorial}/images/blockly-full-example.png | Bin .../images/blockly-function-args.png | Bin .../images/blockly-function-if-condition.png | Bin .../images/blockly-function-if-tcomp1.png | Bin .../tutorial}/images/blockly-function-if.png | Bin .../images/blockly-function-return.png | Bin .../images/blockly-function-tcomp.png | Bin .../tutorial}/images/blockly-libraries.png | Bin .../tutorial}/images/blockly-log-motion.png | Bin .../tutorial}/images/blockly-read-comment.png | Bin .../tutorial}/images/blockly-timer-body.png | Bin .../images/blockly-trigger-dialog.png | Bin .../images/blockly-vars-from-items.png | Bin .../tutorial}/images/blockly-view-code.png | Bin .../tutorial}/images/calendar.png | Bin .../tutorial}/images/choose-action-type.png | Bin .../tutorial}/images/choose-action.png | Bin .../tutorial}/images/choose_binding.png | Bin .../images/choose_transformation.png | Bin .../tutorial}/images/chromecast_props_set.png | Bin .../tutorial}/images/chromecast_widget.png | Bin .../images/chromecast_widget_noprops.png | Bin .../tutorial}/images/column_options.png | Bin .../images/create_equipment_model.png | Bin .../images/create_equipment_model_added.png | Bin .../create_equipment_model_channels.png | Bin .../images/create_equipment_things_added.png | Bin .../create_equipment_things_channels.png | Bin .../create_equipment_things_location.png | Bin .../images/create_equipment_things_parent.png | Bin .../tutorial}/images/create_item.png | Bin .../tutorial}/images/create_link.png | Bin .../tutorial}/images/create_location.png | Bin .../tutorial}/images/create_user.png | Bin .../tutorial}/images/custom_widget_editor.png | Bin .../tutorial}/images/delete-button.png | Bin .../images/developer-sidebar-codetools.png | Bin .../images/developer-sidebar-create.png | Bin .../images/developer-sidebar-item-control.png | Bin .../images/developer-sidebar-pinned.png | Bin .../images/developer-sidebar-search.png | Bin .../images/developer-sidebar-stream.png | Bin .../images/developer-sidebar-thing.png | Bin .../tutorial}/images/developer-sidebar.png | Bin .../images/discovered_hue_things.png | Bin .../tutorial}/images/doc_plaintext.png | Bin .../images/duplicate-rule-button.png | Bin .../tutorial}/images/empty_things_menu.png | Bin .../tutorial}/images/equipment_card.png | Bin .../tutorial}/images/equipment_tab.png | Bin .../tutorial}/images/example_model.png | Bin .../tutorial}/images/expression_tester.png | Bin .../tutorial}/images/garage_list_widget.png | Bin .../tutorial}/images/habot_text.png | Bin .../tutorial}/images/hidden_points.png | Bin .../images/hue_bridge_config_error.png | Bin .../tutorial}/images/hue_bridge_offline.png | Bin .../tutorial}/images/hue_bridge_online.png | Bin .../tutorial}/images/hue_bulk_add.png | Bin .../tutorial}/images/hue_inbox.png | Bin .../tutorial}/images/hue_individual_add.png | Bin .../tutorial}/images/hue_things_added.png | Bin .../images/hue_things_discover_bridge.png | Bin .../tutorial}/images/initial_settings.png | Bin .../tutorial}/images/install_hue.png | Bin .../tutorial}/images/install_jsonpath.png | Bin .../tutorial}/images/install_zwave.png | Bin .../tutorial}/images/installed_hue.png | Bin .../tutorial}/images/installed_zwave.png | Bin .../tutorial}/images/installing_hue.png | Bin .../tutorial}/images/installing_zwave.png | Bin .../tutorial}/images/item-list-lookup.png | Bin .../tutorial}/images/item-tree-lookup.png | Bin .../tutorial}/images/kitchen_widget_props.png | Bin .../images/light_list_widget_form.png | Bin .../images/livingroom_card_equip.png | Bin .../tutorial}/images/locations_model.png | Bin .../tutorial}/images/locations_tab.png | Bin .../tutorial}/images/menu_icon.png | Bin .../tutorial}/images/minus-button.png | Bin .../tutorial}/images/mqtt_bridge_config.png | Bin .../tutorial}/images/mqtt_config_channel.png | Bin .../tutorial}/images/mqtt_generic_thing.png | Bin .../tutorial}/images/mqtt_temp_channel.png | Bin .../images/mqtt_temp_channel_created.png | Bin .../tutorial}/images/mqtt_things.png | Bin .../tutorial}/images/now_visible_points.png | Bin .../images/ontology_relationships.jpeg | Bin .../tutorial}/images/other_apps.png | Bin .../tutorial}/images/overview_edit_page.png | Bin .../tutorial}/images/overview_preview.png | Bin .../tutorial}/images/overview_row1_config.png | Bin .../images/overview_row_and_columns.png | Bin .../tutorial}/images/pause_and_play.png | Bin .../tutorial}/images/pencil_icon.png | Bin .../tutorial}/images/pick-item-dialog.png | Bin .../tutorial}/images/play-button.png | Bin .../tutorial}/images/properties_card.png | Bin .../tutorial}/images/properties_chart.png | Bin .../tutorial}/images/properties_tab.png | Bin .../tutorial}/images/regenerate_icon.svg | 0 .../tutorial}/images/regional_settings.png | Bin .../tutorial}/images/regular_user.png | Bin .../tutorial}/images/remove_from_model.png | Bin .../images/rule-action-command-on.png | Bin .../images/rule-add-action-dialog.png | Bin .../images/rule-condition-dialog.png | Bin .../images/rule-condition-number.png | Bin .../images/rule-condition-switch.png | Bin .../images/rule-create-from-template.png | Bin .../tutorial}/images/rule-template-badge.png | Bin .../tutorial}/images/rule-template-config.png | Bin .../tutorial}/images/rule-trigger-dialog.png | Bin .../tutorial}/images/rule-triggers-dialog.png | Bin .../images/rules-advanced-select-lang.png | Bin .../tutorial}/images/scene-blockly-rule.png | Bin .../tutorial}/images/scene-complete.png | Bin .../images/scene-configuration-empty.png | Bin .../tutorial}/images/scene-entry1.png | Bin .../tutorial}/images/scene-item-refresh.png | Bin .../tutorial}/images/scene-reorder-button.png | Bin .../tutorial}/images/scenes-list-of.png | Bin .../images/scenes-rule-heading-tags.png | Bin .../tutorial}/images/scenes-rule-heading.png | Bin .../images/scenes-rule-list-entry.png | Bin .../tutorial}/images/scenes.png | Bin .../tutorial}/images/select-button.png | Bin .../tutorial}/images/select_members.png | Bin .../tutorial}/images/separators.png | Bin .../tutorial}/images/shield.png | Bin .../tutorial}/images/start_model.png | Bin .../tutorial}/images/state_description.png | Bin .../tutorial}/images/units_settings.png | Bin .../tutorial}/images/wand_stars.png | Bin .../tutorial}/images/welcome_page.png | Bin .../tutorial}/images/wizard_addons.png | Bin .../tutorial}/images/wizard_geo.png | Bin .../tutorial}/images/wizard_location.png | Bin .../tutorial}/images/wizard_welcome.png | Bin .../tutorial}/images/zwave_add_controller.png | Bin .../tutorial}/images/zwave_port_config.png | Bin .../getting_started => src/tutorial}/index.md | 0 .../tutorial}/item_widgets.md | 0 .../getting_started => src/tutorial}/model.md | 0 .../tutorial}/pages_intro.md | 0 .../tutorial}/persistence.md | 0 .../tutorial}/rules_advanced.md | 0 .../tutorial}/rules_basic.md | 0 .../tutorial}/rules_blockly.md | 0 .../tutorial}/rules_introduction.md | 0 .../tutorial}/rules_overview.md | 0 .../tutorial}/rules_scenes.md | 0 .../tutorial}/things_advanced.md | 0 .../tutorial}/things_intermediate.md | 0 .../tutorial}/things_simple.md | 0 .../tutorial}/tips-and-tricks.md | 0 {ui => src/ui}/building-pages.md | 0 {ui => src/ui}/chart-pages.md | 0 {ui => src/ui}/css-pages-widgets.md | 0 {ui => src/ui}/developer-tools.md | 0 {ui => src/ui}/floorplan-pages.md | 0 {ui => src/ui}/images/add_from_model.png | Bin {ui => src/ui}/images/chart_example.png | Bin {ui => src/ui}/images/choose_layout.png | Bin {ui => src/ui}/images/configure-canvas.png | Bin {ui => src/ui}/images/configure-grid.png | Bin {ui => src/ui}/images/fixed-layout-sample.png | Bin {ui => src/ui}/images/floorplan_example.png | Bin {ui => src/ui}/images/homepage_example.png | Bin .../ui}/images/interactive-bulb-off.png | Bin {ui => src/ui}/images/interactive-bulb-on.png | Bin .../ui}/images/interactive-element-action.png | Bin .../interactive-element-add-openhab.png | Bin .../interactive-element-minimum-opacity.png | Bin ...ve-element-rollershutter-window-config.png | Bin ...teractive-element-rollershutter-window.png | Bin .../ui}/images/interactive-element-text.png | Bin .../ui}/images/interactive-elements-svg.png | Bin {ui => src/ui}/images/interactive-room.png | Bin {ui => src/ui}/images/interactive-style.png | Bin {ui => src/ui}/images/map_example.png | Bin {ui => src/ui}/images/responsive1.png | Bin {ui => src/ui}/images/responsive2.gif | Bin .../ui}/images/responsive_layout_example.png | Bin .../ui}/images/sitemap_demo_buttongrid.png | Bin .../ui}/images/sitemap_demo_colorpicker.png | Bin {ui => src/ui}/images/sitemap_demo_colors.png | Bin .../sitemap_demo_colortemperaturepicker.png | Bin {ui => src/ui}/images/sitemap_demo_frame.png | Bin .../ui}/images/sitemap_demo_fullexample.png | Bin {ui => src/ui}/images/sitemap_demo_group.png | Bin {ui => src/ui}/images/sitemap_demo_image.png | Bin {ui => src/ui}/images/sitemap_demo_input.png | Bin .../ui}/images/sitemap_demo_mapview.png | Bin .../ui}/images/sitemap_demo_selection.png | Bin .../ui}/images/sitemap_demo_setpoint.png | Bin {ui => src/ui}/images/sitemap_demo_slider.png | Bin .../ui}/images/sitemap_demo_switch1.png | Bin .../ui}/images/sitemap_demo_switch2.png | Bin {ui => src/ui}/images/sitemap_demo_text.png | Bin {ui => src/ui}/images/sitemap_demo_video.png | Bin .../ui}/images/sitemap_demo_webview.png | Bin {ui => src/ui}/images/tabbed_example.png | Bin .../images/widget_action_configuration.png | Bin {ui => src/ui}/images/widget_actions.png | Bin {ui => src/ui}/images/widget_config_sheet.png | Bin {ui => src/ui}/images/widget_context_menu.png | Bin {ui => src/ui}/index.md | 0 {ui => src/ui}/layout-pages-fixed.md | 0 {ui => src/ui}/layout-pages-responsive.md | 0 {ui => src/ui}/layout-pages.md | 0 {ui => src/ui}/map-pages.md | 0 {ui => src/ui}/personal-widgets.md | 0 {ui => src/ui}/sitemaps.md | 0 {ui => src/ui}/tabbed-pages.md | 0 .../ui}/widget-expressions-variables.md | 0 tutorials/index.html | 61 ----- 802 files changed, 222 insertions(+), 437 deletions(-) create mode 100644 .rubocop.yml delete mode 100644 .vuepress/add_placeholders.rb delete mode 100644 appendix/contributing.md delete mode 100644 appendix/help.md delete mode 100644 community/contributing.md delete mode 100644 developers/extensionservices/index.md delete mode 100644 installation/designer.md create mode 100644 migrate-to-src.sh delete mode 100644 prepare-docs.rb create mode 100644 scripts/lib/add_placeholders.rb rename .vuepress/process_file.rb => scripts/lib/process_utils.rb (73%) create mode 100644 scripts/prepare-docs.rb rename {administration => src/administration}/bundles.md (100%) rename {administration => src/administration}/console.md (100%) rename {administration => src/administration}/images/new_json_file.png (100%) rename {administration => src/administration}/images/ttop.png (100%) rename {administration => src/administration}/images/ui_add_thing.png (100%) rename {administration => src/administration}/images/ui_edit_thing.png (100%) rename {administration => src/administration}/index.md (100%) rename {administration => src/administration}/jsondb.md (100%) rename {administration => src/administration}/logging.md (100%) rename {administration => src/administration}/runtime.md (100%) rename {administration => src/administration}/serial.md (100%) rename {addons/uis => src}/apps/images/download-for-windows.png (100%) rename {addons/uis => src}/apps/images/download-on-the-app-store.png (100%) rename {addons/uis => src}/apps/images/mainui.png (100%) rename {addons/uis => src}/apps/images/notifications.png (100%) rename {addons/uis => src}/apps/images/settings1.jpeg (100%) rename {addons/uis => src}/apps/images/settings2.jpeg (100%) rename {addons/uis => src}/apps/images/sidemenu.jpeg (100%) rename {addons/uis => src}/apps/images/sitemap.png (100%) rename {addons/uis => src}/apps/ios.md (100%) rename {addons/uis => src}/apps/windows.md (100%) rename {concepts => src/concepts}/audio.md (100%) rename {concepts => src/concepts}/diagrams/event_interfaces.png (100%) rename {concepts => src/concepts}/diagrams/event_interfaces_source.xml (100%) rename {concepts => src/concepts}/diagrams/status_transitions.png (100%) rename {concepts => src/concepts}/diagrams/status_transitions_source.txt (100%) rename {concepts => src/concepts}/discovery.md (100%) rename {concepts => src/concepts}/images/audio.png (100%) rename {concepts => src/concepts}/images/hli.png (100%) rename {concepts => src/concepts}/images/rule-arrival.jpeg (100%) rename {concepts => src/concepts}/images/rule-leaving.jpeg (100%) rename {concepts => src/concepts}/images/rule-openwindow-action.jpeg (100%) rename {concepts => src/concepts}/images/rule-openwindow.jpeg (100%) rename {concepts => src/concepts}/images/rule-scene.jpeg (100%) rename {concepts => src/concepts}/images/rule-sunrise-trigger.jpeg (100%) rename {concepts => src/concepts}/images/rule-sunrise.jpeg (100%) rename {concepts => src/concepts}/images/thing-devices-1.png (100%) rename {concepts => src/concepts}/index.md (100%) rename {concepts => src/concepts}/items.md (100%) rename {concepts => src/concepts}/profiles.md (100%) rename {concepts => src/concepts}/rules.md (100%) rename {concepts => src/concepts}/things.md (100%) rename {concepts => src/concepts}/units-of-measurement.md (100%) rename {configuration => src/configuration}/actions.md (100%) rename {configuration => src/configuration}/addons.md (100%) rename {configuration => src/configuration}/apitokens.md (100%) rename {configuration => src/configuration}/blockly-getItemAttributes.png (100%) rename {configuration => src/configuration}/blockly/index.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-before-using.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-date-handling.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-ephemeris.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-http.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-items-things.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-logging.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-notifications.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-persistence.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-run-and-process.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-standard-ext.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-timers-and-delays.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-uom.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-value-storage.md (100%) rename {configuration => src/configuration}/blockly/rules-blockly-voice-and-multimedia.md (100%) rename {configuration => src/configuration}/editors.md (100%) rename {configuration => src/configuration}/images/InstallAddonsThroughUi.gif (100%) rename {configuration => src/configuration}/images/apitoken_create_token.png (100%) rename {configuration => src/configuration}/images/apitoken_example.png (100%) rename {configuration => src/configuration}/images/apitoken_login.png (100%) rename {configuration => src/configuration}/images/apitoken_overview_tokens.png (100%) rename {configuration => src/configuration}/images/apitoken_token.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-afterperiod-timer-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-afterperiod-timer-options-block.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-afterperiod-timer-options.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-afterperiod-timer.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-arrow.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-bitwise-not.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-bitwise-operators.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-bitwise.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-call-script.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-cancel-timer.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-collapsed.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-color-create-rgb.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-blend.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-hsb.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-hsbof-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-hsbof.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-overview-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-overview.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-picker.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-colors-random.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-context-help.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-context-number-string.gif (100%) rename {configuration => src/configuration}/images/blockly/blockly-contextmenu.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-copy-of-tutorial.gif (100%) rename {configuration => src/configuration}/images/blockly/blockly-cross-rule-copy.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-comparison-between.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-comparison.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-copy-of-overview.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-difference.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-get-now.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-get.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling-ephemeris-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling-ephemeris.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling-persistence-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling-persistence.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling1-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling2-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-handling2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-help.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-picker.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-plus.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-temporal1-example1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-temporal2-example1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-temporal2-example2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-temporal2-example3.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-text-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-today.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-date-unit-of.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-datetime-from-item-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-datetime-from-item.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-datetime-with-values.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-edit-screen.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-ephemeris-days-until.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-ephemeris-get-name.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-ephemeris-is-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-ephemeris-is.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-ephemeris-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-ephemeris.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-expanded.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-get-date-string-without.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-get-date-string.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-get-now-offset.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-get-things.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getItem-with-var.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getItem.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getItemAttributes-fix.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getItemAttributes-simple.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getItemAttributes.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getItemStateDoesntFit.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getMembers.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getMembersExample.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getStateOfItem.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getThingAttributes.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getThingStatus.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-getitemswithtag.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-delete-simple.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-get-complex.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-get-params.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-get-simple.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-overview-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-overview.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-post-complex.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-post-simple.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-put-simple.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-http-toggles.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-inline-script-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-inline-script.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-inputs-external.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-inputs-inline.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-item-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-item-thing.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-item.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-items-and-things-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-items-and-things.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-javascript-dialog.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-concatenate-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-concatenate.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-dictionary-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-dictionary-getkey-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-dictionary-getkey.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-dictionary-overview-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-dictionary-overview.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-lists-dictionary.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-logging-log.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-logging-overview-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-logging-overview.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-logging-print.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-logic-undefined.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-main-help.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-map-for-each.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-map-foreach-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-math-parse-number.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-math-quantity-operations-failure.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-math-quantity-operations.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-math-round.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-metadata-change.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-metadata-config-key.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-metadata-expire.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-metadata-loop.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-metadata.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notification-action-generic.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notification-full.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notification-icon-title-block.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notification-icon-title.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notification-simple.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notification-to-log.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notification-to-user.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-buttons-message.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-buttons.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-call-page-action-mainui.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-call-page-action.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-hide.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-media-block.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-media.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-oneclick-configured.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-oneclick.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications3.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications4.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-notifications5.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-old-version-warning.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-openhab-macos-share-1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-openhab-macos-share-2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-get-item-change.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-get-previous-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-get-previous.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-get-previousValue.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-get-statistical-value.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-persist-states.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-persist.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-remove.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-return-types.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-timescope.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence-updated-date.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-persistence_small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-play-audio-known-issue.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-play-audio-with-volume.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-play-audio.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-play-stream.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-plus-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-plus.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-print.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-comparison-examples.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-comparison-if.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-comparison.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-conversion-item.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-conversion.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-loop-var.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-multiplication.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-smart-computation.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-temp-item.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity-with-unit.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-quantity.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-reschedule-timer-example1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-reschedule-timer-example2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-reschedule-timer.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-retrieve-context-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-retrieve-context.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-retrieve-rule-context-info.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-run-and-process-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-run-and-process.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-run-rule-uuid.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-run-rule.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-run-script-2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-run-script.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-run-scriptfile.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-say.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-search.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-sendCommand.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-sendCommandExample1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-sendCommandExample2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-showcode.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-simple-timer.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-specialArrayHandling.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-stop-stream.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-temporal1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-temporal2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-text-crlf-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-text-overview-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-text-overview.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-text-replace-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-text-replace.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-thing-object.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-thing.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-thingExample.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-things-loop.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-comprehensive.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-context-examples.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-context-undefined.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-context.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-example-shared-1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-is-active.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-is-running.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-shared-cancel.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-shared.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timer-terminated.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timers-and-delays-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-timers-overview.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-toolbox-1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-toolbox-2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-toolbox-3.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-toolbox.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-transform-example1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-transform-example2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-transform-example3.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-transform-jsonpath.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-transform-map.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-transform-regex.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-uom-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-uom-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-uom.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-example1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-example2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-get-cache.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-get.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-is-defined-cache.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-is-defined.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-storage-cache.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-storage-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-storage.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-store-cache.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-value-store.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-voice-and-multimedia-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-voice-and-multimedia.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-waitfor-example.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-waitfor.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-workspace-showblocks-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-workspace-showblocks.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-workspace-showcode-small.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-workspace-showcode.png (100%) rename {configuration => src/configuration}/images/blockly/blockly-zoom.png (100%) rename {configuration => src/configuration}/images/blockly/blockly_typed_variables1.png (100%) rename {configuration => src/configuration}/images/blockly/blockly_typed_variables2.png (100%) rename {configuration => src/configuration}/images/blockly/blockly_typed_variables3.png (100%) rename {configuration => src/configuration}/images/blockly/blockly_typed_variables_examples.png (100%) rename {configuration => src/configuration}/images/blockly/blocky-choose-javascript.png (100%) rename {configuration => src/configuration}/images/blockly/built-with-blockly-badge-white-small.svg (100%) rename {configuration => src/configuration}/images/blockly/built-with-blockly-badge-white.svg (100%) rename {configuration => src/configuration}/images/blockly/uom_block_smart_input.png (100%) rename {configuration => src/configuration}/images/blockly/youtube-logo-small.png (100%) rename {configuration => src/configuration}/images/blockly/youtube-logo.png (100%) rename {configuration => src/configuration}/images/eclipseiotmarket_addons.png (100%) rename {configuration => src/configuration}/images/eclipseiotmarket_configuration.png (100%) rename {configuration => src/configuration}/images/eclipseiotmarket_listings.png (100%) rename {configuration => src/configuration}/images/package_demo.jpg (100%) rename {configuration => src/configuration}/images/package_expert.jpg (100%) rename {configuration => src/configuration}/images/package_simple.jpg (100%) rename {configuration => src/configuration}/images/package_standard.jpg (100%) rename {configuration => src/configuration}/images/paperui1.png (100%) rename {configuration => src/configuration}/images/paperui2.png (100%) rename {configuration => src/configuration}/images/paperui3.png (100%) rename {configuration => src/configuration}/images/riemann-left.svg (100%) rename {configuration => src/configuration}/images/riemann-midpoint.svg (100%) rename {configuration => src/configuration}/images/riemann-right.svg (100%) rename {configuration => src/configuration}/images/riemann-trapezoidal.svg (100%) rename {configuration => src/configuration}/images/rule-play-audio.png (100%) rename {configuration => src/configuration}/images/ruleengine.png (100%) rename {configuration => src/configuration}/images/smarthome-designer-05.png (100%) rename {configuration => src/configuration}/images/smarthome-designer-10.png (100%) rename {configuration => src/configuration}/images/smarthome-designer-15.png (100%) rename {configuration => src/configuration}/images/smarthome-designer-20.png (100%) rename {configuration => src/configuration}/images/suggestions.png (100%) rename {configuration => src/configuration}/images/ui_rules_dsl_test_example.png (100%) rename {configuration => src/configuration}/images/ui_rules_dsl_test_example_action.png (100%) rename {configuration => src/configuration}/images/ui_rules_dsl_test_example_dsl.png (100%) rename {configuration => src/configuration}/images/vscode_demo.gif (100%) rename {configuration => src/configuration}/images/vscode_extensiontab_icon.png (100%) rename {configuration => src/configuration}/index.md (100%) rename {configuration => src/configuration}/items.md (100%) rename {configuration => src/configuration}/jsr223.md (100%) rename {configuration => src/configuration}/migration/index.md (100%) rename {configuration => src/configuration}/multimedia.md (100%) rename {configuration => src/configuration}/persistence.md (100%) rename {configuration => src/configuration}/restdocs.md (100%) rename {configuration => src/configuration}/rules-dsl.md (100%) rename {configuration => src/configuration}/services.md (100%) rename {configuration => src/configuration}/things.md (100%) rename {configuration => src/configuration}/transformations.md (100%) rename {configuration => src/configuration}/websocket.md (100%) rename {configuration => src/configuration}/yaml/index.md (100%) rename {configuration => src/configuration}/yaml/items.md (100%) rename {configuration => src/configuration}/yaml/pages.md (100%) rename {configuration => src/configuration}/yaml/tags.md (100%) rename {configuration => src/configuration}/yaml/things.md (100%) rename {configuration => src/configuration}/yaml/widgets.md (100%) rename {developers => src/developer}/addons/addon.md (100%) rename {developers => src/developer}/addons/config-xml.md (100%) rename {developers => src/developer}/addons/faq.md (100%) rename {developers => src/developer}/addons/index.md (100%) rename {developers => src/developer}/audio/index.md (100%) rename {developers => src/developer}/bindings/images/concept.drawio (100%) rename {developers => src/developer}/bindings/images/concept.png (100%) rename {developers => src/developer}/bindings/images/thing_life_cycle_shutdown.png (100%) rename {developers => src/developer}/bindings/images/thing_life_cycle_startup.png (100%) rename {developers => src/developer}/bindings/images/things.png (100%) rename {developers => src/developer}/bindings/index.md (100%) rename {developers => src/developer}/bindings/semantic-tags.md (100%) rename {developers => src/developer}/bindings/thing-xml.md (100%) rename {developers => src/developer}/buildsystem.md (100%) rename {developers => src/developer}/contributing.md (100%) rename {developers => src/developer}/governance.md (100%) rename {developers => src/developer}/guidelines.md (100%) rename {developers => src/developer}/ide/eclipse.md (100%) rename {developers => src/developer}/ide/examples/vscode/launch.json (100%) rename {developers => src/developer}/ide/examples/vscode/settings.json (100%) rename {developers => src/developer}/ide/examples/vscode/tasks.json (100%) rename {developers => src/developer}/ide/generic.md (100%) rename {developers => src/developer}/ide/images/eclipse.jpg (100%) rename {developers => src/developer}/ide/images/generic_ide.pdn (100%) rename {developers => src/developer}/ide/images/generic_ide.png (100%) rename {developers => src/developer}/ide/images/ide_debug_eclipse_1_bndtools.png (100%) rename {developers => src/developer}/ide/images/ide_debug_eclipse_2_appbndrun.png (100%) rename {developers => src/developer}/ide/images/ide_debug_eclipse_3_remote.png (100%) rename {developers => src/developer}/ide/images/ide_eclipse_debug_animation.gif (100%) rename {developers => src/developer}/ide/images/ide_setup_eclipse_1_installer.png (100%) rename {developers => src/developer}/ide/images/ide_setup_eclipse_2_advanced.png (100%) rename {developers => src/developer}/ide/images/ide_setup_eclipse_3_select_ide.png (100%) rename {developers => src/developer}/ide/images/ide_setup_eclipse_4_openhab.png (100%) rename {developers => src/developer}/ide/images/ide_setup_eclipse_5_variables.png (100%) rename {developers => src/developer}/ide/images/ide_setup_eclipse_6_tasks_finished.png (100%) rename {developers => src/developer}/ide/images/ide_setup_intellij_debug.png (100%) rename {developers => src/developer}/ide/images/ide_setup_intellij_debug_attach.png (100%) rename {developers => src/developer}/ide/images/ide_setup_intellij_debug_configuration.png (100%) rename {developers => src/developer}/ide/images/ide_setup_intellij_import_module.png (100%) rename {developers => src/developer}/ide/images/ide_setup_vscode_folder.png (100%) rename {developers => src/developer}/ide/images/ide_setup_vscode_folder_launch.png (100%) rename {developers => src/developer}/ide/images/ide_setup_vscode_folder_tasks.png (100%) rename {developers => src/developer}/ide/images/ide_setup_vscode_launch.png (100%) rename {developers => src/developer}/ide/images/ide_setup_vscode_settings.png (100%) rename {developers => src/developer}/ide/images/ide_setup_vscode_tasks.png (100%) rename {developers => src/developer}/ide/images/intellij.jpg (100%) rename {developers => src/developer}/ide/images/vscode.jpg (100%) rename {developers => src/developer}/ide/intellij.md (100%) rename {developers => src/developer}/ide/karaf.md (100%) rename {developers => src/developer}/ide/vscode.md (93%) rename {developers => src/developer}/index.md (100%) rename {developers => src/developer}/ioservices/index.md (100%) rename {developers => src/developer}/module-types/index.md (100%) rename {developers => src/developer}/osgi/configadmin.md (100%) rename {developers => src/developer}/osgi/equinox.md (100%) rename {developers => src/developer}/osgi/eventadmin.md (100%) rename {developers => src/developer}/osgi/images/delayedcomponent.png (100%) rename {developers => src/developer}/osgi/images/edittarget.png (100%) rename {developers => src/developer}/osgi/images/event-admin.png (100%) rename {developers => src/developer}/osgi/images/immediatecomponent.png (100%) rename {developers => src/developer}/osgi/images/layeringosgi.png (100%) rename {developers => src/developer}/osgi/images/runconfiguration.png (100%) rename {developers => src/developer}/osgi/images/services.png (100%) rename {developers => src/developer}/osgi/images/states.png (100%) rename {developers => src/developer}/osgi/images/targetplatform.png (100%) rename {developers => src/developer}/osgi/osgi.md (100%) rename {developers => src/developer}/osgi/osgids.md (100%) rename {developers => src/developer}/persistence/index.md (100%) rename {developers => src/developer}/tests.md (100%) rename {developers => src/developer}/transformations/index.md (100%) rename {developers => src/developer}/utils/events.md (100%) rename {developers => src/developer}/utils/i18n.md (100%) rename {developers => src/developer}/utils/tools.md (100%) rename introduction.md => src/index.md (100%) rename {installation => src/installation}/armbian.md (100%) rename {installation => src/installation}/docker.md (100%) rename {installation => src/installation}/images/Accueil_Openhab_2.png (100%) rename {installation => src/installation}/images/Admin_CMD.jpg (100%) rename {installation => src/installation}/images/Home_OH_adminCreate.png (100%) rename {installation => src/installation}/images/Home_Openhab_3.png (100%) rename {installation => src/installation}/images/Home_Openhab_4.png (100%) rename {installation => src/installation}/images/JAVA_HOME.png (100%) rename {installation => src/installation}/images/Karaf_Windows.png (100%) rename {installation => src/installation}/images/SSH_Connection_1.jpg (100%) rename {installation => src/installation}/images/SSH_Connection_2.jpg (100%) rename {installation => src/installation}/images/SSH_Connection_3.jpg (100%) rename {installation => src/installation}/images/SSH_Connection_4.jpg (100%) rename {installation => src/installation}/images/Windows_Service.jpg (100%) rename {installation => src/installation}/images/Wrapper_Install_Windows.jpg (100%) rename {installation => src/installation}/images/Wrapper_Start_Windows.jpg (100%) rename {installation => src/installation}/images/Wrapper_Start_Windows.png (100%) rename {installation => src/installation}/images/armbian-step1.png (100%) rename {installation => src/installation}/images/armbian-step2.png (100%) rename {installation => src/installation}/images/armbian-step3.png (100%) rename {installation => src/installation}/images/armbian-step4.png (100%) rename {installation => src/installation}/images/armbian-step5.png (100%) rename {installation => src/installation}/images/boards1.png (100%) rename {installation => src/installation}/images/homebrew-openhab.svg (100%) rename {installation => src/installation}/images/openHAB_Folders.png (100%) rename {installation => src/installation}/images/openHABian-SSH-MotD.png (100%) rename {installation => src/installation}/images/openHABian-config.png (100%) rename {installation => src/installation}/images/openHABian-install-failed.png (100%) rename {installation => src/installation}/images/openHABian-install-log.png (100%) rename {installation => src/installation}/images/openHABian-menu-freshsetup.png (100%) rename {installation => src/installation}/images/pine64.png (100%) rename {installation => src/installation}/images/rpi2b.png (100%) rename {installation => src/installation}/index.md (100%) rename {installation => src/installation}/linux.md (100%) rename {installation => src/installation}/macos.md (100%) rename {installation => src/installation}/openbsd.md (100%) rename {installation => src/installation}/reverse-proxy.md (100%) rename {installation => src/installation}/security.md (100%) rename {installation => src/installation}/synology.md (100%) rename {installation => src/installation}/windows.md (100%) rename {mainui => src/mainui}/CONTRIBUTING.md (100%) rename {mainui => src/mainui}/about.md (100%) rename {mainui => src/mainui}/addons.md (100%) rename {mainui => src/mainui}/developer/index.md (100%) rename {mainui => src/mainui}/developer/log-viewer.md (100%) rename {mainui => src/mainui}/developer/sidebar.md (100%) rename {mainui => src/mainui}/developer/widgets.md (100%) rename {mainui => src/mainui}/images/about-top-section.png (100%) rename {mainui => src/mainui}/images/addons-toolbar.png (100%) rename {mainui => src/mainui}/images/bg-gray-setting.png (100%) rename {mainui => src/mainui}/images/bg-white-setting.png (100%) rename {mainui => src/mainui}/images/config-overview.png (100%) rename {mainui => src/mainui}/images/cron-saturday.png (100%) rename {mainui => src/mainui}/images/cron-seven.png (100%) rename {mainui => src/mainui}/images/dark-mode.png (100%) rename {mainui => src/mainui}/images/developer-widgets.png (100%) rename {mainui => src/mainui}/images/dirty-indicator.png (100%) rename {mainui => src/mainui}/images/log-level.png (100%) rename {mainui => src/mainui}/images/model-overview.png (100%) rename {mainui => src/mainui}/images/navbar-style.png (100%) rename {mainui => src/mainui}/images/notification.png (100%) rename {mainui => src/mainui}/images/persistence-settings.png (100%) rename {mainui => src/mainui}/images/play-rule.png (100%) rename {mainui => src/mainui}/images/plus.png (100%) rename {mainui => src/mainui}/images/rules-overview.png (100%) rename {mainui => src/mainui}/images/rules-selection.png (100%) rename {mainui => src/mainui}/images/saturday-rule-schedule.png (100%) rename {mainui => src/mainui}/images/scratchpad.png (100%) rename {mainui => src/mainui}/images/settings-menu.png (100%) rename {mainui => src/mainui}/images/settings-page.png (100%) rename {mainui => src/mainui}/images/simple-nav-off.png (100%) rename {mainui => src/mainui}/images/simple-nav-on.png (100%) rename {mainui => src/mainui}/images/theme-selection.png (100%) rename {mainui => src/mainui}/images/timer-trigger.png (100%) rename {mainui => src/mainui}/images/webaudio-blockly.png (100%) rename {mainui => src/mainui}/index.md (100%) rename {mainui => src/mainui}/settings/blockly-editor.md (100%) rename {mainui => src/mainui}/settings/index.md (100%) rename {mainui => src/mainui}/settings/items.md (100%) rename {mainui => src/mainui}/settings/model.md (100%) rename {mainui => src/mainui}/settings/pages.md (100%) rename {mainui => src/mainui}/settings/persistence.md (100%) rename {mainui => src/mainui}/settings/rules.md (100%) rename {mainui => src/mainui}/settings/scenes.md (100%) rename {mainui => src/mainui}/settings/schedule.md (100%) rename {mainui => src/mainui}/settings/script-editor.md (100%) rename {mainui => src/mainui}/settings/scripts.md (100%) rename {mainui => src/mainui}/settings/things.md (100%) rename {mainui => src/mainui}/settings/transformations.md (100%) rename {tutorials/getting_started => src/tutorial}/auto_overview.md (100%) rename {tutorials/getting_started => src/tutorial}/custom_widgets.md (100%) rename {tutorials/getting_started => src/tutorial}/first_steps.md (100%) rename {tutorials/getting_started => src/tutorial}/images/Customize_location_card_form.png (100%) rename {tutorials/getting_started => src/tutorial}/images/account_option.png (100%) rename {tutorials/getting_started => src/tutorial}/images/add_hue_bridge.png (100%) rename {tutorials/getting_started => src/tutorial}/images/add_members_change.png (100%) rename {tutorials/getting_started => src/tutorial}/images/add_metadata_model.png (100%) rename {tutorials/getting_started => src/tutorial}/images/add_separator.png (100%) rename {tutorials/getting_started => src/tutorial}/images/admin_user.png (100%) rename {tutorials/getting_started => src/tutorial}/images/administrator.png (100%) rename {tutorials/getting_started => src/tutorial}/images/alarm-clock-rule-template.png (100%) rename {tutorials/getting_started => src/tutorial}/images/all_lights_widget.png (100%) rename {tutorials/getting_started => src/tutorial}/images/applying_custom_list_widget.png (100%) rename {tutorials/getting_started => src/tutorial}/images/basic-rule-duplicate-2.png (100%) rename {tutorials/getting_started => src/tutorial}/images/basic-rule-duplicate.png (100%) rename {tutorials/getting_started => src/tutorial}/images/basic-rule-heading.png (100%) rename {tutorials/getting_started => src/tutorial}/images/basic-rule-list.png (100%) rename {tutorials/getting_started => src/tutorial}/images/basic-rule-stub-duplicate.png (100%) rename {tutorials/getting_started => src/tutorial}/images/basic-rule-yaml-modified.png (100%) rename {tutorials/getting_started => src/tutorial}/images/basic-rule-yaml.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blank_overview.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-add-comment.jpg (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-call-function.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-command-light-on.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-complete-condition.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-condition.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-create-timer.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-equals.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-full-example.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-function-args.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-function-if-condition.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-function-if-tcomp1.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-function-if.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-function-return.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-function-tcomp.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-libraries.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-log-motion.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-read-comment.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-timer-body.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-trigger-dialog.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-vars-from-items.png (100%) rename {tutorials/getting_started => src/tutorial}/images/blockly-view-code.png (100%) rename {tutorials/getting_started => src/tutorial}/images/calendar.png (100%) rename {tutorials/getting_started => src/tutorial}/images/choose-action-type.png (100%) rename {tutorials/getting_started => src/tutorial}/images/choose-action.png (100%) rename {tutorials/getting_started => src/tutorial}/images/choose_binding.png (100%) rename {tutorials/getting_started => src/tutorial}/images/choose_transformation.png (100%) rename {tutorials/getting_started => src/tutorial}/images/chromecast_props_set.png (100%) rename {tutorials/getting_started => src/tutorial}/images/chromecast_widget.png (100%) rename {tutorials/getting_started => src/tutorial}/images/chromecast_widget_noprops.png (100%) rename {tutorials/getting_started => src/tutorial}/images/column_options.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_equipment_model.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_equipment_model_added.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_equipment_model_channels.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_equipment_things_added.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_equipment_things_channels.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_equipment_things_location.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_equipment_things_parent.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_item.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_link.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_location.png (100%) rename {tutorials/getting_started => src/tutorial}/images/create_user.png (100%) rename {tutorials/getting_started => src/tutorial}/images/custom_widget_editor.png (100%) rename {tutorials/getting_started => src/tutorial}/images/delete-button.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar-codetools.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar-create.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar-item-control.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar-pinned.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar-search.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar-stream.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar-thing.png (100%) rename {tutorials/getting_started => src/tutorial}/images/developer-sidebar.png (100%) rename {tutorials/getting_started => src/tutorial}/images/discovered_hue_things.png (100%) rename {tutorials/getting_started => src/tutorial}/images/doc_plaintext.png (100%) rename {tutorials/getting_started => src/tutorial}/images/duplicate-rule-button.png (100%) rename {tutorials/getting_started => src/tutorial}/images/empty_things_menu.png (100%) rename {tutorials/getting_started => src/tutorial}/images/equipment_card.png (100%) rename {tutorials/getting_started => src/tutorial}/images/equipment_tab.png (100%) rename {tutorials/getting_started => src/tutorial}/images/example_model.png (100%) rename {tutorials/getting_started => src/tutorial}/images/expression_tester.png (100%) rename {tutorials/getting_started => src/tutorial}/images/garage_list_widget.png (100%) rename {tutorials/getting_started => src/tutorial}/images/habot_text.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hidden_points.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_bridge_config_error.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_bridge_offline.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_bridge_online.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_bulk_add.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_inbox.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_individual_add.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_things_added.png (100%) rename {tutorials/getting_started => src/tutorial}/images/hue_things_discover_bridge.png (100%) rename {tutorials/getting_started => src/tutorial}/images/initial_settings.png (100%) rename {tutorials/getting_started => src/tutorial}/images/install_hue.png (100%) rename {tutorials/getting_started => src/tutorial}/images/install_jsonpath.png (100%) rename {tutorials/getting_started => src/tutorial}/images/install_zwave.png (100%) rename {tutorials/getting_started => src/tutorial}/images/installed_hue.png (100%) rename {tutorials/getting_started => src/tutorial}/images/installed_zwave.png (100%) rename {tutorials/getting_started => src/tutorial}/images/installing_hue.png (100%) rename {tutorials/getting_started => src/tutorial}/images/installing_zwave.png (100%) rename {tutorials/getting_started => src/tutorial}/images/item-list-lookup.png (100%) rename {tutorials/getting_started => src/tutorial}/images/item-tree-lookup.png (100%) rename {tutorials/getting_started => src/tutorial}/images/kitchen_widget_props.png (100%) rename {tutorials/getting_started => src/tutorial}/images/light_list_widget_form.png (100%) rename {tutorials/getting_started => src/tutorial}/images/livingroom_card_equip.png (100%) rename {tutorials/getting_started => src/tutorial}/images/locations_model.png (100%) rename {tutorials/getting_started => src/tutorial}/images/locations_tab.png (100%) rename {tutorials/getting_started => src/tutorial}/images/menu_icon.png (100%) rename {tutorials/getting_started => src/tutorial}/images/minus-button.png (100%) rename {tutorials/getting_started => src/tutorial}/images/mqtt_bridge_config.png (100%) rename {tutorials/getting_started => src/tutorial}/images/mqtt_config_channel.png (100%) rename {tutorials/getting_started => src/tutorial}/images/mqtt_generic_thing.png (100%) rename {tutorials/getting_started => src/tutorial}/images/mqtt_temp_channel.png (100%) rename {tutorials/getting_started => src/tutorial}/images/mqtt_temp_channel_created.png (100%) rename {tutorials/getting_started => src/tutorial}/images/mqtt_things.png (100%) rename {tutorials/getting_started => src/tutorial}/images/now_visible_points.png (100%) rename {tutorials/getting_started => src/tutorial}/images/ontology_relationships.jpeg (100%) rename {tutorials/getting_started => src/tutorial}/images/other_apps.png (100%) rename {tutorials/getting_started => src/tutorial}/images/overview_edit_page.png (100%) rename {tutorials/getting_started => src/tutorial}/images/overview_preview.png (100%) rename {tutorials/getting_started => src/tutorial}/images/overview_row1_config.png (100%) rename {tutorials/getting_started => src/tutorial}/images/overview_row_and_columns.png (100%) rename {tutorials/getting_started => src/tutorial}/images/pause_and_play.png (100%) rename {tutorials/getting_started => src/tutorial}/images/pencil_icon.png (100%) rename {tutorials/getting_started => src/tutorial}/images/pick-item-dialog.png (100%) rename {tutorials/getting_started => src/tutorial}/images/play-button.png (100%) rename {tutorials/getting_started => src/tutorial}/images/properties_card.png (100%) rename {tutorials/getting_started => src/tutorial}/images/properties_chart.png (100%) rename {tutorials/getting_started => src/tutorial}/images/properties_tab.png (100%) rename {tutorials/getting_started => src/tutorial}/images/regenerate_icon.svg (100%) rename {tutorials/getting_started => src/tutorial}/images/regional_settings.png (100%) rename {tutorials/getting_started => src/tutorial}/images/regular_user.png (100%) rename {tutorials/getting_started => src/tutorial}/images/remove_from_model.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-action-command-on.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-add-action-dialog.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-condition-dialog.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-condition-number.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-condition-switch.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-create-from-template.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-template-badge.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-template-config.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-trigger-dialog.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rule-triggers-dialog.png (100%) rename {tutorials/getting_started => src/tutorial}/images/rules-advanced-select-lang.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scene-blockly-rule.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scene-complete.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scene-configuration-empty.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scene-entry1.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scene-item-refresh.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scene-reorder-button.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scenes-list-of.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scenes-rule-heading-tags.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scenes-rule-heading.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scenes-rule-list-entry.png (100%) rename {tutorials/getting_started => src/tutorial}/images/scenes.png (100%) rename {tutorials/getting_started => src/tutorial}/images/select-button.png (100%) rename {tutorials/getting_started => src/tutorial}/images/select_members.png (100%) rename {tutorials/getting_started => src/tutorial}/images/separators.png (100%) rename {tutorials/getting_started => src/tutorial}/images/shield.png (100%) rename {tutorials/getting_started => src/tutorial}/images/start_model.png (100%) rename {tutorials/getting_started => src/tutorial}/images/state_description.png (100%) rename {tutorials/getting_started => src/tutorial}/images/units_settings.png (100%) rename {tutorials/getting_started => src/tutorial}/images/wand_stars.png (100%) rename {tutorials/getting_started => src/tutorial}/images/welcome_page.png (100%) rename {tutorials/getting_started => src/tutorial}/images/wizard_addons.png (100%) rename {tutorials/getting_started => src/tutorial}/images/wizard_geo.png (100%) rename {tutorials/getting_started => src/tutorial}/images/wizard_location.png (100%) rename {tutorials/getting_started => src/tutorial}/images/wizard_welcome.png (100%) rename {tutorials/getting_started => src/tutorial}/images/zwave_add_controller.png (100%) rename {tutorials/getting_started => src/tutorial}/images/zwave_port_config.png (100%) rename {tutorials/getting_started => src/tutorial}/index.md (100%) rename {tutorials/getting_started => src/tutorial}/item_widgets.md (100%) rename {tutorials/getting_started => src/tutorial}/model.md (100%) rename {tutorials/getting_started => src/tutorial}/pages_intro.md (100%) rename {tutorials/getting_started => src/tutorial}/persistence.md (100%) rename {tutorials/getting_started => src/tutorial}/rules_advanced.md (100%) rename {tutorials/getting_started => src/tutorial}/rules_basic.md (100%) rename {tutorials/getting_started => src/tutorial}/rules_blockly.md (100%) rename {tutorials/getting_started => src/tutorial}/rules_introduction.md (100%) rename {tutorials/getting_started => src/tutorial}/rules_overview.md (100%) rename {tutorials/getting_started => src/tutorial}/rules_scenes.md (100%) rename {tutorials/getting_started => src/tutorial}/things_advanced.md (100%) rename {tutorials/getting_started => src/tutorial}/things_intermediate.md (100%) rename {tutorials/getting_started => src/tutorial}/things_simple.md (100%) rename {tutorials/getting_started => src/tutorial}/tips-and-tricks.md (100%) rename {ui => src/ui}/building-pages.md (100%) rename {ui => src/ui}/chart-pages.md (100%) rename {ui => src/ui}/css-pages-widgets.md (100%) rename {ui => src/ui}/developer-tools.md (100%) rename {ui => src/ui}/floorplan-pages.md (100%) rename {ui => src/ui}/images/add_from_model.png (100%) rename {ui => src/ui}/images/chart_example.png (100%) rename {ui => src/ui}/images/choose_layout.png (100%) rename {ui => src/ui}/images/configure-canvas.png (100%) rename {ui => src/ui}/images/configure-grid.png (100%) rename {ui => src/ui}/images/fixed-layout-sample.png (100%) rename {ui => src/ui}/images/floorplan_example.png (100%) rename {ui => src/ui}/images/homepage_example.png (100%) rename {ui => src/ui}/images/interactive-bulb-off.png (100%) rename {ui => src/ui}/images/interactive-bulb-on.png (100%) rename {ui => src/ui}/images/interactive-element-action.png (100%) rename {ui => src/ui}/images/interactive-element-add-openhab.png (100%) rename {ui => src/ui}/images/interactive-element-minimum-opacity.png (100%) rename {ui => src/ui}/images/interactive-element-rollershutter-window-config.png (100%) rename {ui => src/ui}/images/interactive-element-rollershutter-window.png (100%) rename {ui => src/ui}/images/interactive-element-text.png (100%) rename {ui => src/ui}/images/interactive-elements-svg.png (100%) rename {ui => src/ui}/images/interactive-room.png (100%) rename {ui => src/ui}/images/interactive-style.png (100%) rename {ui => src/ui}/images/map_example.png (100%) rename {ui => src/ui}/images/responsive1.png (100%) rename {ui => src/ui}/images/responsive2.gif (100%) rename {ui => src/ui}/images/responsive_layout_example.png (100%) rename {ui => src/ui}/images/sitemap_demo_buttongrid.png (100%) rename {ui => src/ui}/images/sitemap_demo_colorpicker.png (100%) rename {ui => src/ui}/images/sitemap_demo_colors.png (100%) rename {ui => src/ui}/images/sitemap_demo_colortemperaturepicker.png (100%) rename {ui => src/ui}/images/sitemap_demo_frame.png (100%) rename {ui => src/ui}/images/sitemap_demo_fullexample.png (100%) rename {ui => src/ui}/images/sitemap_demo_group.png (100%) rename {ui => src/ui}/images/sitemap_demo_image.png (100%) rename {ui => src/ui}/images/sitemap_demo_input.png (100%) rename {ui => src/ui}/images/sitemap_demo_mapview.png (100%) rename {ui => src/ui}/images/sitemap_demo_selection.png (100%) rename {ui => src/ui}/images/sitemap_demo_setpoint.png (100%) rename {ui => src/ui}/images/sitemap_demo_slider.png (100%) rename {ui => src/ui}/images/sitemap_demo_switch1.png (100%) rename {ui => src/ui}/images/sitemap_demo_switch2.png (100%) rename {ui => src/ui}/images/sitemap_demo_text.png (100%) rename {ui => src/ui}/images/sitemap_demo_video.png (100%) rename {ui => src/ui}/images/sitemap_demo_webview.png (100%) rename {ui => src/ui}/images/tabbed_example.png (100%) rename {ui => src/ui}/images/widget_action_configuration.png (100%) rename {ui => src/ui}/images/widget_actions.png (100%) rename {ui => src/ui}/images/widget_config_sheet.png (100%) rename {ui => src/ui}/images/widget_context_menu.png (100%) rename {ui => src/ui}/index.md (100%) rename {ui => src/ui}/layout-pages-fixed.md (100%) rename {ui => src/ui}/layout-pages-responsive.md (100%) rename {ui => src/ui}/layout-pages.md (100%) rename {ui => src/ui}/map-pages.md (100%) rename {ui => src/ui}/personal-widgets.md (100%) rename {ui => src/ui}/sitemaps.md (100%) rename {ui => src/ui}/tabbed-pages.md (100%) rename {ui => src/ui}/widget-expressions-variables.md (100%) delete mode 100644 tutorials/index.html diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000000..d5b6c4812d --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,37 @@ +AllCops: + TargetRubyVersion: 3.3 + NewCops: enable + +Style/GlobalVars: + Enabled: false + +Layout/LineLength: + Enabled: false + +Naming/FileName: + Enabled: false + +# Copied from https://github.com/instructure/rubocop-inst/blob/main/rubocop.yml +Metrics: + Enabled: false + +Style/Alias: + EnforcedStyle: prefer_alias_method # https://github.com/rubocop/ruby-style-guide/issues/821 +Style/EmptyElse: + EnforcedStyle: empty # explicit nil indicates programmer intent +Style/FormatStringToken: + EnforcedStyle: template +Style/HashSyntax: + EnforcedStyle: ruby19_no_mixed_keys +Style/PercentQLiterals: + EnforcedStyle: upper_case_q +Style/PerlBackrefs: + Enabled: false # Regexp.last_match(1) is far worse than $1 +Style/RescueStandardError: + EnforcedStyle: implicit +Style/StringLiterals: + EnforcedStyle: double_quotes +Style/StringLiteralsInInterpolation: + EnforcedStyle: double_quotes +Style/TernaryParentheses: + EnforcedStyle: require_parentheses_when_complex diff --git a/.vuepress/add_placeholders.rb b/.vuepress/add_placeholders.rb deleted file mode 100644 index 01734f3f06..0000000000 --- a/.vuepress/add_placeholders.rb +++ /dev/null @@ -1,38 +0,0 @@ -# This function will add placeholders for pages that are out of scope of the docs preview - -def add_placeholder_pages() - puts "➡️ Adding placeholder pages for preview" - [ - "addons/integrations/homekit", - "addons/integrations/openhabcloud", - "docs/apps/android.md", - "docs/apps/garmin", - "docs/apps/sailfishos", - "docs/configuration/habpanel", - "docs/configuration/iconsets/classic", - "docs/ui/components", - "docs/ui/habpanel", - "docs/ui/habpanel/habpanel.md", - "docs/ui/habot", - "docs/ui/basic", - "docs/ecosystem/alexa", - "docs/ecosystem/google-assistant", - "docs/ecosystem/ifttt", - "docs/installation/openhabian.md", - "docs/installation/openhabian-troubleshooting.md", - "docs/installation/openhabian-backup.md", - "docs/installation/openhabian-exim.md" - ].each { |path| - puts " ➡️ #{path}" - page = path - if (!(path =~ /\.md/)) then - FileUtils.mkdir_p(path) - page = path + "/readme.md" - end - File.open(page, "w+") { |f| - f.puts "# This content is unavailable" - f.puts "" - f.puts "This content is migrated from another repository, and is not included in this preview." - } - } -end diff --git a/appendix/contributing.md b/appendix/contributing.md deleted file mode 100644 index ce54e27d88..0000000000 --- a/appendix/contributing.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -layout: documentation -title: Contributing to openHAB ---- - -# Contributing to openHAB - -openHAB is a community effort and everyone can take part in that. -Be it by being an active developer, a one time bug reporter or by commenting on issues by others. -Please the following guidelines. - -## Reporting Issues - -Before reporting an issue, please check the [openHAB community forum](https://community.openhab.org) for solutions and help. -More people will see your issue when it is posted in the forum and community members may be able to help you find known solutions/workarounds. - -When no solution was found, use the table below to determine where your issue should be reported: - -| Issue | Where to report | -|--------------------------------------------------------------|--------------------------------------------------------------------| -| Problems and feature requests for openHAB add-ons | [openHAB-addons](https://github.com/openhab/openhab-addons/issues) | -| Issues related to the runtime environment, IDE and packaging | [openHAB-distro](https://github.com/openhab/openhab-distro/issues) | -| Issues related to the core openHAB bundles | [openHAB-core](https://github.com/kaikreuzer/openhab-core/issues) | - -But do not worry - if you are not clear, which category your issue belongs to - we will redirect you, if necessary. - -Please pay attention to the respective `CONTRIBUTING.md` file in all of these repositories. -They include further details on how to report an issue or file a pull request. - -## Community Guidelines - -We want to keep the openHAB community awesome, growing and collaborative. -We need your help to keep it that way. -To help with this we've come up with some general guidelines for the community as a whole: - -- **Be nice:** Be courteous, respectful and polite to fellow community members: no - regional, racial, gender, or other abuse will be tolerated. We like nice people - way better than mean ones! - -- **Encourage diversity and participation:** Make everyone in our community - feel welcome, regardless of their background and the extent of their - contributions, and do everything possible to encourage participation in - our community. - -- **Keep it legal:** Basically, don't get us in trouble. Share only content that - you own, do not share private or sensitive information, and don't break the - law. - -- **Stay on topic:** Make sure that you are posting to the correct channel - and avoid off-topic discussions. Remember when you update an issue or - respond to an email you are potentially sending to a large number of - people. Please consider this before you update. Also remember that - nobody likes spam. diff --git a/appendix/help.md b/appendix/help.md deleted file mode 100644 index 596c5b6f66..0000000000 --- a/appendix/help.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -layout: documentation -title: Finding Help and FAQs ---- - -# Finding Help - -openHAB is surrounding by an amazing community helping new users, discussing problems and providing tutorials and examples. -Join today and find answers for all details of openHAB: - -- [community.openhab.org](https://community.openhab.org) - -# FAQs - Frequently Asked Questions - -In the community forum you'll also find a list of recurring questions with short answers, commonly known as FAQs. -Check there before posting your own questions and feel free to add questions and answers: - -- [openHAB 2 FAQs at community.openhab.org](https://community.openhab.org/t/frequently-asked-questions/17727) - -::: tip Contribution Wanted -Please help us improve the documentation! -If you'd like to leave corrections, additions or comments for this article or any other part of this website, please drop a word at: -[Documentation Issue Tracker](https://github.com/openhab/openhab-docs/issues) or open a new PR. -::: diff --git a/community/contributing.md b/community/contributing.md deleted file mode 100644 index 150a470ef8..0000000000 --- a/community/contributing.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: redirected -sitemap: false -redirect_to: /appendix/contributing.html ---- - - diff --git a/developers/extensionservices/index.md b/developers/extensionservices/index.md deleted file mode 100644 index 4bfdc0745e..0000000000 --- a/developers/extensionservices/index.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -layout: developersguide -title: Extension service ---- - -# Extension service - -openHAB comes with an API that allows implementing a service that manages the installed extensions within a solution. -All that needs to be done is to register an OSGi service that implements `org.openhab.core.extension.ExtensionService`. -Such a service has to provide a list of available extensions and then can be called in order to install and uninstall them. - -What kind of implementation is chosen is completely up to the solution. -Suitable mechanisms might be Apache Felix FileInstall, Apache Karaf FeatureInstaller, etc. -For testing purposes, openHAB comes with a sample implementation in the bundle `org.openhab.core.extension.sample`. - -Installation and uninstallation requests are executed by a thread pool named "extensionService". -If an implementation does not support concurrent execution of such operations, the thread pool size should be set to 1. - -TODO diff --git a/installation/designer.md b/installation/designer.md deleted file mode 100644 index dab58589df..0000000000 --- a/installation/designer.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: redirected -sitemap: false -redirect_to: /configuration/editors.html ---- - - \ No newline at end of file diff --git a/migrate-to-src.sh b/migrate-to-src.sh new file mode 100644 index 0000000000..abf4d3bd18 --- /dev/null +++ b/migrate-to-src.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# This is a temporary script ('2026) used to migrate the documentation files to the new structure under the src directory. +# Once the migration is done and the files are moved into src/, this script can be removed. + + +# sanity check +if [ ! -d ".vuepress" ]; then + echo "This script should be run from the root of the documentation repository." + exit 1 +fi + +smart_move() { + local src="$1" + local dst="$2" + + if [ ! -d "$src" ]; then + echo "Skipping '$src': Not a directory." + return 1 + fi + + # Ensure dst exists + mkdir -p "$dst" + + if rsync -a --remove-source-files "$src/" "$dst/"; then + # Delete the remaining empty directory structure + # 'rm -rf' is safe here because rsync already moved the files + rm -rf "$src" + echo "Success: Moved $src to $dst" + else + echo "Error: rsync failed" + return 1 + fi +} + +mkdir -p src + +mv introduction.md src/index.md + +smart_move addons/uis/apps src/apps +smart_move tutorials/getting_started src/tutorial +smart_move developers src/developer + +for folder in administration concepts configuration installation mainui ui; do + smart_move "$folder" "src/$folder" +done + +# remove old files +rm -f src/installation/designer.md +rm -f src/configuration/transform.md +rm -rf src/developer/extensionservices +rm -rf community appendix tutorials \ No newline at end of file diff --git a/package.json b/package.json index 1f090eb704..fc7081df0b 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "index.js", "scripts": { "postinstall": "npm dedupe && npm prune", - "prepare-docs": "ruby prepare-docs.rb", + "prepare-docs": "ruby scripts/prepare-docs.rb", "build-only": "vuepress build .", "build-preview": "npm run prepare-docs && npm run build-only", "preserve-preview": "npm run build-preview", diff --git a/prepare-docs.rb b/prepare-docs.rb deleted file mode 100644 index 3126da8f56..0000000000 --- a/prepare-docs.rb +++ /dev/null @@ -1,209 +0,0 @@ -# frozen_string_literal: true - -require "fileutils" - -require_relative "./.vuepress/process_file.rb" -require_relative "./.vuepress/add_placeholders.rb" - -$verbose = false - -def verbose(message) - puts message if $verbose -end - -if Dir.exist?("docs") then - puts "➡️ Removing processed docs" - FileUtils.rm_rf("docs") -end -if Dir.exist?("addons/integrations") then - puts "➡️ Removing processed addons" - FileUtils.rm_rf("docs") -end - -puts "➡️ Migrating the introduction article" -process_file(".", "introduction.md", "docs", "https://github.com/openhab/openhab-docs/blob/main/introduction.md") -FileUtils.mv("docs/introduction.md", "docs/readme.md") - -# puts "➡️ Migrating common images" -# FileUtils.mkdir_p("docs/images") - -puts "➡️ Migrating logos" -FileUtils.cp_r("./images/addons", ".vuepress/public/logos") - -puts "➡️ Migrating the Concepts section" -Dir.glob("./concepts/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./concepts", file, "docs/concepts", "#{$docs_repo_root}/concepts/#{file}") -end -verbose " ➡️ images and diagrams" -FileUtils.cp_r("./concepts/images", "docs/concepts") -FileUtils.cp_r("./concepts/diagrams", "docs/concepts") - -puts "➡️ Migrating the Installation section" -Dir.glob("./installation/*.md") do |path| - file = File.basename(path) - next if file == "designer.md" - - verbose " ➡️ #{file}" - process_file("./installation", file, "docs/installation", - "#{$docs_repo_root}/installation/#{file}") -end -verbose " ➡️ images" -FileUtils.cp_r("./installation/images", "docs/installation") - -puts "➡️ Migrating the Tutorial section" -Dir.glob("./tutorials/getting_started/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./tutorials/getting_started", file, "docs/tutorial", - "#{$docs_repo_root}/tutorials/getting_started/#{file}") -end -verbose " ➡️ images" -FileUtils.cp_r("./tutorials/getting_started/images", "docs/tutorial") - -puts "➡️ Migrating the Configuration section" -Dir.glob("./configuration/*.md") do |path| - file = File.basename(path) - next if file == "transform.md" # Useless, copy the one from addons - - verbose " ➡️ #{file}" - process_file("./configuration", file, "docs/configuration", - "#{$docs_repo_root}/configuration/#{file}") -end -verbose " ➡️ images" -FileUtils.cp_r("./configuration/images", "docs/configuration") - -puts "➡️ Migrating the YAML Configuration section" -Dir.glob("./configuration/yaml/*.md") do |path| - file = File.basename(path) - - verbose " ➡️ #{file}" - process_file("./configuration/yaml", file, "docs/configuration/yaml", - "#{$docs_repo_root}/configuration/yaml/#{file}") -end - -puts "➡️ Migrating the Main UI section" -Dir.glob("./mainui/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./mainui", file, "docs/mainui", "#{$docs_repo_root}/mainui/#{file}") -end -%w[developer settings].each do |subsection| - Dir.glob("./mainui/#{subsection}/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{subsection}/#{file}" - process_file("./mainui/#{subsection}", file, "docs/mainui/#{subsection}", - "#{$docs_repo_root}/mainui/#{subsection}/#{file}") - end -end -verbose " ➡️ images" -FileUtils.cp_r("./mainui/images", "docs/mainui") - -puts "➡️ Migrating the Migration Tutorial section" -Dir.glob("./configuration/migration/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./configuration/migration", file, "docs/configuration/migration", - "#{$docs_repo_root}/configuration/migration/#{file}") -end -verbose " ➡️ images" -# FileUtils.cp_r("./configuration/migration/images", "docs/configuration/migration/") // no images placed yet - -puts "➡️ Migrating the Blockly Tutorial section" -Dir.glob("./configuration/blockly/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./configuration/blockly", file, "docs/configuration/blockly", - "#{$docs_repo_root}/configuration/blockly/#{file}") -end -verbose " ➡️ images" -# FileUtils.cp_r("./configuration/blockly/images", "docs/configuration/blockly/") // no images placed yet - -puts "➡️ Migrating the UI section" -Dir.glob("./ui/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./ui", file, "docs/ui", "#{$docs_repo_root}/ui/#{file}") -end -verbose " ➡️ images" -FileUtils.cp_r("./ui/images", "docs/ui") - -verbose " ➡️ habpanel" -FileUtils.mkdir_p("docs/ui/habpanel") -process_file("./_addons_uis/habpanel/doc", "habpanel.md", "docs/ui/habpanel", "") -verbose " ➡️ images" -if Dir.exist?("./_addons_uis/habpanel/doc/images") - FileUtils.cp_r("./_addons_uis/habpanel/doc/images", - "docs/ui/habpanel") -end - -verbose " ➡️ habot" -FileUtils.mkdir_p("docs/ui/habot") -process_file("./_addons_uis/habot", "readme.md", "docs/ui/habot", "") -verbose " ➡️ images" - -verbose " ➡️ components" -FileUtils.mkdir_p("docs/ui/components") -Dir.glob("./_addons_uis/org.openhab.ui/doc/components/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./_addons_uis/org.openhab.ui/doc/components", file, "docs/ui/components", "https://github.com/openhab/openhab-webui/blob/main/bundles/org.openhab.ui/doc/components/#{file}") -end -verbose " ➡️ images" -if Dir.exist?("./_addons_uis/org.openhab.ui/doc/components/images") - FileUtils.cp_r("./_addons_uis/org.openhab.ui/doc/components/images", - "docs/ui/components") -end - -puts "➡️ Migrating the Apps section" -Dir.glob("./addons/uis/apps/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./addons/uis/apps", file, "docs/apps", - "#{$docs_repo_root}/addons/uis/apps/#{file}") -end -verbose " ➡️ images" -FileUtils.cp_r("./addons/uis/apps/images", "docs/apps") - -puts "➡️ Migrating the Administration section" -Dir.glob("./administration/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./administration", file, "docs/administration", - "#{$docs_repo_root}/administration/#{file}") -end -verbose " ➡️ images" -FileUtils.cp_r("./administration/images", "docs/administration") - -puts "➡️ Migrating the Developer section" -Dir.glob("./developers/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{file}" - process_file("./developers", file, "docs/developer", "#{$docs_repo_root}/developer/#{file}") -end -%w[audio bindings ioservices legacy module-types osgi persistence transformations utils - ide].each do |subsection| - Dir.glob("./developers/#{subsection}/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{subsection}/#{file}" - process_file("./developers/#{subsection}", file, "docs/developer/#{subsection}", - "#{$docs_repo_root}/developer/#{subsection}/#{file}") - end -end - -verbose " ➡️ images" -FileUtils.cp_r("./developers/bindings/images", "docs/developer/bindings") -FileUtils.cp_r("./developers/osgi/images", "docs/developer/osgi") -FileUtils.cp_r("./developers/ide/images", "docs/developer/ide") - -["addons"].each do |subsection| - Dir.glob("./developers/#{subsection}/*.md") do |path| - file = File.basename(path) - verbose " ➡️ #{subsection}/#{file}" - process_file("./developers/#{subsection}", file, "docs/developer/#{subsection}", - "#{$docs_repo_root}/developer/#{subsection}/#{file}") - end -end - -add_placeholder_pages() diff --git a/scripts/lib/add_placeholders.rb b/scripts/lib/add_placeholders.rb new file mode 100644 index 0000000000..546e9c7cae --- /dev/null +++ b/scripts/lib/add_placeholders.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +# This function will add placeholders for pages that are out of scope of the docs preview + +def add_placeholder_pages + puts "➡️ Adding placeholder pages for preview" + [ + "docs/apps/android.md", + "docs/apps/garmin", + "docs/apps/sailfishos", + "docs/configuration/habpanel", + "docs/configuration/iconsets/classic", + "docs/ui/components", + "docs/ui/habpanel", + "docs/ui/habpanel/habpanel.md", + "docs/ui/habot", + "docs/ui/basic", + "docs/ecosystem/alexa", + "docs/ecosystem/google-assistant", + "docs/ecosystem/ifttt", + "docs/installation/openhabian.md", + "docs/installation/openhabian-troubleshooting.md", + "docs/installation/openhabian-backup.md", + "docs/installation/openhabian-exim.md" + ].each do |path| + puts " ➡️ #{path}" + page = path + unless path =~ /\.md/ + FileUtils.mkdir_p(path) + page = File.join(path, "readme.md") + end + File.open(page, "w+") do |f| + f.puts "# This content is unavailable" + f.puts "" + f.puts "This content is migrated from another repository, and is not included in this preview." + end + end +end diff --git a/.vuepress/process_file.rb b/scripts/lib/process_utils.rb similarity index 73% rename from .vuepress/process_file.rb rename to scripts/lib/process_utils.rb index 69e362760c..f0ecf55393 100644 --- a/.vuepress/process_file.rb +++ b/scripts/lib/process_utils.rb @@ -1,20 +1,24 @@ # frozen_string_literal: true require "fileutils" +require "pathname" + +ADDONS_REPO_BRANCH = "main" + +def verbose(message) + puts message if $verbose +end # This function converts a "source" file to something looking good in VuePress -def process_file(indir, file, outdir, source) +def process_markdown(indir, file, outdir, source) in_frontmatter = false frontmatter_processed = false has_source = false - has_logo = false - since_1x = false - obsolete_binding = false og_title = "openHAB" og_description = "a vendor and technology agnostic open source automation software for your home" unless File.exist?("#{indir}/#{file}") - verbose "process_file: IGNORING (NON-EXISTING): #{indir}/#{file}" + verbose "process_markdown: IGNORING (NON-EXISTING): #{indir}/#{file}" return end @@ -32,13 +36,11 @@ def process_file(indir, file, outdir, source) next if line =~ /no_toc/ has_source = true if in_frontmatter && line =~ /^source:/ - has_logo = true if in_frontmatter && line =~ /^logo:/ - since_1x = true if in_frontmatter && line =~ /^since: 1x/ og_title = line.gsub("title: ", "").gsub("\n", "") if in_frontmatter && line =~ /^title:/ if in_frontmatter && line =~ /^description:/ og_description = line.gsub("description: ", "").gsub("\n", "").gsub("[", "").gsub("]", "").gsub( - %r{\(http[:/\-0-9A-Za-z\.]+\)}, "" + %r{\(http[:/\-0-9A-Za-z.]+\)}, "" ) end @@ -61,15 +63,15 @@ def process_file(indir, file, outdir, source) source = "" if addon_type == "ui" puts " (add-on type is ui)" - source = "https://github.com/openhab/openhab-webui/blob/#{$addons_repo_branch}/bundles/org.openhab.ui.#{addon}/README.md" + source = "https://github.com/openhab/openhab-webui/blob/#{ADDONS_REPO_BRANCH}/bundles/org.openhab.ui.#{addon}/README.md" elsif addon == "zigbee" puts " (add-on is zigbee)" - source = "https://github.com/openhab/org.openhab.binding.zigbee/blob/#{$addons_repo_branch}/org.openhab.binding.zigbee/README.md" + source = "https://github.com/openhab/org.openhab.binding.zigbee/blob/#{ADDONS_REPO_BRANCH}/org.openhab.binding.zigbee/README.md" elsif addon == "zwave" && file !~ /things/ puts " (add-on is zwave)" - source = "https://github.com/openhab/org.openhab.binding.zwave/blob/#{$addons_repo_branch}/README.md" + source = "https://github.com/openhab/org.openhab.binding.zwave/blob/#{ADDONS_REPO_BRANCH}/README.md" elsif file !~ /things/ - source = "https://github.com/openhab/openhab-addons/blob/#{$addons_repo_branch}/bundles/org.openhab.#{addon_type}.#{addon}/README.md" + source = "https://github.com/openhab/openhab-addons/blob/#{ADDONS_REPO_BRANCH}/bundles/org.openhab.#{addon_type}.#{addon}/README.md" end out.puts "source: #{source}" if source != "" @@ -116,12 +118,12 @@ def process_file(indir, file, outdir, source) line = line.gsub(%r{]\((.*)/(.*)\)}, '](../thing.html?manufacturer=\1&file=\2)') if file == "zwave/doc/things.md" # Misc replaces (relative links, remove placeholder interpreted as custom tags) - line = line.gsub(%r{https?://docs\.openhab\.org/addons/uis/habpanel/readme\.html}, "/docs/configuration/habpanel.html") + line = line.gsub(%r{https?://docs\.openhab\.org/addons/uis/habpanel/readme\.html}, + "/docs/configuration/habpanel.html") line = line.gsub(%r{https?://docs\.openhab\.org/addons/uis/basic/readme\.html}, "/addons/ui/basic/") line = line.gsub(%r{https?://docs\.openhab\.org/addons/(.*)/(.*)/readme\.html}, '/addons/\1/\2/') line = line.gsub(%r{https?://docs\.openhab\.org/}, "/docs/") - line = line.gsub(%r{https?://openhab\.org/docs/}, "/docs/") - line = line.gsub(%r{https?://www\.openhab\.org/docs/}, "/docs/") + line = line.gsub(%r{https?://(?:www\.)?openhab\.org/docs/}, "/docs/") line = line.gsub("/addons/io/", "/addons/integrations/") line = line.gsub("{{base}}/", "./docs/") line = line.gsub("(images/", "(./images/") @@ -169,3 +171,61 @@ def process_file(indir, file, outdir, source) out.puts "" end end + +# +# Moves files recursively from src to dst, passing each .md file through process_markdown. +# +# @param src [String, Pathname] the source directory to copy from +# @param dst [String, Pathname] the destination directory to copy to +# @param source_root [String, nil] the GitHub URL prefix used for edit links +# @yield [Pathname] an optional block to filter which files to process (receives the Pathname of each file) +# @yieldreturn [Boolean] whether to process the file (true) or skip it (false) +# +def process_directory(src:, dst:, source_root: nil, &block) + source = Pathname(src) + destination = Pathname(dst) + pattern = source / "**" / "*" + + Pathname.glob(pattern).sort.each do |path| + next if block && !block.call(path) + + relative = path.relative_path_from(source) + output_path = destination.join(relative) + + if path.directory? + output_path.mkpath + next + end + output_dir = output_path.dirname + + source_path = if source_root + File.join(source_root, relative.to_s).tr("\\", "/") # Ensure URL uses forward slashes + end + + if path.extname.downcase == ".md" + verbose " ➡️ #{relative}" + # Pathname objects can usually be passed to methods expecting strings + process_markdown(path.dirname.to_s, path.basename.to_s, output_dir.to_s, source_path) + else + # Use join for the final destination file path + FileUtils.cp(path, output_dir.join(path.basename)) + end + end +end + +# Get a list of sub-addons to transform them into links +def get_subs_links(parent_addon_id, search_dir) + sub_addons = [] + Dir.glob("#{search_dir}/#{parent_addon_id}.*/**/readme.md") do |sub_readme| + sub_addon_id = File.dirname(sub_readme).split("/").last + verbose " ➡️ expanding list of sub-addons: #{sub_addon_id}" + File.open(sub_readme).each do |line| + if line =~ /^# / + sub_addons.push([sub_addon_id, line.gsub("# ", "").strip]) + break + end + end + end + + sub_addons +end diff --git a/scripts/prepare-docs.rb b/scripts/prepare-docs.rb new file mode 100644 index 0000000000..e4e6c627cf --- /dev/null +++ b/scripts/prepare-docs.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +require "fileutils" +require "pathname" + +require_relative "lib/process_utils" +require_relative "lib/add_placeholders" + +SRC_ROOT = File.join(__dir__, "src") +DST_ROOT = File.join(__dir__, "docs") + +FileUtils.rm_rf(DST_ROOT) + +puts "➡️ Deploying the main documentation pages" +process_directory src: SRC_ROOT, dst: DST_ROOT, source_root: "https://github.com/openhab/openhab-docs/blob/main/src" + +add_placeholder_pages diff --git a/administration/bundles.md b/src/administration/bundles.md similarity index 100% rename from administration/bundles.md rename to src/administration/bundles.md diff --git a/administration/console.md b/src/administration/console.md similarity index 100% rename from administration/console.md rename to src/administration/console.md diff --git a/administration/images/new_json_file.png b/src/administration/images/new_json_file.png similarity index 100% rename from administration/images/new_json_file.png rename to src/administration/images/new_json_file.png diff --git a/administration/images/ttop.png b/src/administration/images/ttop.png similarity index 100% rename from administration/images/ttop.png rename to src/administration/images/ttop.png diff --git a/administration/images/ui_add_thing.png b/src/administration/images/ui_add_thing.png similarity index 100% rename from administration/images/ui_add_thing.png rename to src/administration/images/ui_add_thing.png diff --git a/administration/images/ui_edit_thing.png b/src/administration/images/ui_edit_thing.png similarity index 100% rename from administration/images/ui_edit_thing.png rename to src/administration/images/ui_edit_thing.png diff --git a/administration/index.md b/src/administration/index.md similarity index 100% rename from administration/index.md rename to src/administration/index.md diff --git a/administration/jsondb.md b/src/administration/jsondb.md similarity index 100% rename from administration/jsondb.md rename to src/administration/jsondb.md diff --git a/administration/logging.md b/src/administration/logging.md similarity index 100% rename from administration/logging.md rename to src/administration/logging.md diff --git a/administration/runtime.md b/src/administration/runtime.md similarity index 100% rename from administration/runtime.md rename to src/administration/runtime.md diff --git a/administration/serial.md b/src/administration/serial.md similarity index 100% rename from administration/serial.md rename to src/administration/serial.md diff --git a/addons/uis/apps/images/download-for-windows.png b/src/apps/images/download-for-windows.png similarity index 100% rename from addons/uis/apps/images/download-for-windows.png rename to src/apps/images/download-for-windows.png diff --git a/addons/uis/apps/images/download-on-the-app-store.png b/src/apps/images/download-on-the-app-store.png similarity index 100% rename from addons/uis/apps/images/download-on-the-app-store.png rename to src/apps/images/download-on-the-app-store.png diff --git a/addons/uis/apps/images/mainui.png b/src/apps/images/mainui.png similarity index 100% rename from addons/uis/apps/images/mainui.png rename to src/apps/images/mainui.png diff --git a/addons/uis/apps/images/notifications.png b/src/apps/images/notifications.png similarity index 100% rename from addons/uis/apps/images/notifications.png rename to src/apps/images/notifications.png diff --git a/addons/uis/apps/images/settings1.jpeg b/src/apps/images/settings1.jpeg similarity index 100% rename from addons/uis/apps/images/settings1.jpeg rename to src/apps/images/settings1.jpeg diff --git a/addons/uis/apps/images/settings2.jpeg b/src/apps/images/settings2.jpeg similarity index 100% rename from addons/uis/apps/images/settings2.jpeg rename to src/apps/images/settings2.jpeg diff --git a/addons/uis/apps/images/sidemenu.jpeg b/src/apps/images/sidemenu.jpeg similarity index 100% rename from addons/uis/apps/images/sidemenu.jpeg rename to src/apps/images/sidemenu.jpeg diff --git a/addons/uis/apps/images/sitemap.png b/src/apps/images/sitemap.png similarity index 100% rename from addons/uis/apps/images/sitemap.png rename to src/apps/images/sitemap.png diff --git a/addons/uis/apps/ios.md b/src/apps/ios.md similarity index 100% rename from addons/uis/apps/ios.md rename to src/apps/ios.md diff --git a/addons/uis/apps/windows.md b/src/apps/windows.md similarity index 100% rename from addons/uis/apps/windows.md rename to src/apps/windows.md diff --git a/concepts/audio.md b/src/concepts/audio.md similarity index 100% rename from concepts/audio.md rename to src/concepts/audio.md diff --git a/concepts/diagrams/event_interfaces.png b/src/concepts/diagrams/event_interfaces.png similarity index 100% rename from concepts/diagrams/event_interfaces.png rename to src/concepts/diagrams/event_interfaces.png diff --git a/concepts/diagrams/event_interfaces_source.xml b/src/concepts/diagrams/event_interfaces_source.xml similarity index 100% rename from concepts/diagrams/event_interfaces_source.xml rename to src/concepts/diagrams/event_interfaces_source.xml diff --git a/concepts/diagrams/status_transitions.png b/src/concepts/diagrams/status_transitions.png similarity index 100% rename from concepts/diagrams/status_transitions.png rename to src/concepts/diagrams/status_transitions.png diff --git a/concepts/diagrams/status_transitions_source.txt b/src/concepts/diagrams/status_transitions_source.txt similarity index 100% rename from concepts/diagrams/status_transitions_source.txt rename to src/concepts/diagrams/status_transitions_source.txt diff --git a/concepts/discovery.md b/src/concepts/discovery.md similarity index 100% rename from concepts/discovery.md rename to src/concepts/discovery.md diff --git a/concepts/images/audio.png b/src/concepts/images/audio.png similarity index 100% rename from concepts/images/audio.png rename to src/concepts/images/audio.png diff --git a/concepts/images/hli.png b/src/concepts/images/hli.png similarity index 100% rename from concepts/images/hli.png rename to src/concepts/images/hli.png diff --git a/concepts/images/rule-arrival.jpeg b/src/concepts/images/rule-arrival.jpeg similarity index 100% rename from concepts/images/rule-arrival.jpeg rename to src/concepts/images/rule-arrival.jpeg diff --git a/concepts/images/rule-leaving.jpeg b/src/concepts/images/rule-leaving.jpeg similarity index 100% rename from concepts/images/rule-leaving.jpeg rename to src/concepts/images/rule-leaving.jpeg diff --git a/concepts/images/rule-openwindow-action.jpeg b/src/concepts/images/rule-openwindow-action.jpeg similarity index 100% rename from concepts/images/rule-openwindow-action.jpeg rename to src/concepts/images/rule-openwindow-action.jpeg diff --git a/concepts/images/rule-openwindow.jpeg b/src/concepts/images/rule-openwindow.jpeg similarity index 100% rename from concepts/images/rule-openwindow.jpeg rename to src/concepts/images/rule-openwindow.jpeg diff --git a/concepts/images/rule-scene.jpeg b/src/concepts/images/rule-scene.jpeg similarity index 100% rename from concepts/images/rule-scene.jpeg rename to src/concepts/images/rule-scene.jpeg diff --git a/concepts/images/rule-sunrise-trigger.jpeg b/src/concepts/images/rule-sunrise-trigger.jpeg similarity index 100% rename from concepts/images/rule-sunrise-trigger.jpeg rename to src/concepts/images/rule-sunrise-trigger.jpeg diff --git a/concepts/images/rule-sunrise.jpeg b/src/concepts/images/rule-sunrise.jpeg similarity index 100% rename from concepts/images/rule-sunrise.jpeg rename to src/concepts/images/rule-sunrise.jpeg diff --git a/concepts/images/thing-devices-1.png b/src/concepts/images/thing-devices-1.png similarity index 100% rename from concepts/images/thing-devices-1.png rename to src/concepts/images/thing-devices-1.png diff --git a/concepts/index.md b/src/concepts/index.md similarity index 100% rename from concepts/index.md rename to src/concepts/index.md diff --git a/concepts/items.md b/src/concepts/items.md similarity index 100% rename from concepts/items.md rename to src/concepts/items.md diff --git a/concepts/profiles.md b/src/concepts/profiles.md similarity index 100% rename from concepts/profiles.md rename to src/concepts/profiles.md diff --git a/concepts/rules.md b/src/concepts/rules.md similarity index 100% rename from concepts/rules.md rename to src/concepts/rules.md diff --git a/concepts/things.md b/src/concepts/things.md similarity index 100% rename from concepts/things.md rename to src/concepts/things.md diff --git a/concepts/units-of-measurement.md b/src/concepts/units-of-measurement.md similarity index 100% rename from concepts/units-of-measurement.md rename to src/concepts/units-of-measurement.md diff --git a/configuration/actions.md b/src/configuration/actions.md similarity index 100% rename from configuration/actions.md rename to src/configuration/actions.md diff --git a/configuration/addons.md b/src/configuration/addons.md similarity index 100% rename from configuration/addons.md rename to src/configuration/addons.md diff --git a/configuration/apitokens.md b/src/configuration/apitokens.md similarity index 100% rename from configuration/apitokens.md rename to src/configuration/apitokens.md diff --git a/configuration/blockly-getItemAttributes.png b/src/configuration/blockly-getItemAttributes.png similarity index 100% rename from configuration/blockly-getItemAttributes.png rename to src/configuration/blockly-getItemAttributes.png diff --git a/configuration/blockly/index.md b/src/configuration/blockly/index.md similarity index 100% rename from configuration/blockly/index.md rename to src/configuration/blockly/index.md diff --git a/configuration/blockly/rules-blockly-before-using.md b/src/configuration/blockly/rules-blockly-before-using.md similarity index 100% rename from configuration/blockly/rules-blockly-before-using.md rename to src/configuration/blockly/rules-blockly-before-using.md diff --git a/configuration/blockly/rules-blockly-date-handling.md b/src/configuration/blockly/rules-blockly-date-handling.md similarity index 100% rename from configuration/blockly/rules-blockly-date-handling.md rename to src/configuration/blockly/rules-blockly-date-handling.md diff --git a/configuration/blockly/rules-blockly-ephemeris.md b/src/configuration/blockly/rules-blockly-ephemeris.md similarity index 100% rename from configuration/blockly/rules-blockly-ephemeris.md rename to src/configuration/blockly/rules-blockly-ephemeris.md diff --git a/configuration/blockly/rules-blockly-http.md b/src/configuration/blockly/rules-blockly-http.md similarity index 100% rename from configuration/blockly/rules-blockly-http.md rename to src/configuration/blockly/rules-blockly-http.md diff --git a/configuration/blockly/rules-blockly-items-things.md b/src/configuration/blockly/rules-blockly-items-things.md similarity index 100% rename from configuration/blockly/rules-blockly-items-things.md rename to src/configuration/blockly/rules-blockly-items-things.md diff --git a/configuration/blockly/rules-blockly-logging.md b/src/configuration/blockly/rules-blockly-logging.md similarity index 100% rename from configuration/blockly/rules-blockly-logging.md rename to src/configuration/blockly/rules-blockly-logging.md diff --git a/configuration/blockly/rules-blockly-notifications.md b/src/configuration/blockly/rules-blockly-notifications.md similarity index 100% rename from configuration/blockly/rules-blockly-notifications.md rename to src/configuration/blockly/rules-blockly-notifications.md diff --git a/configuration/blockly/rules-blockly-persistence.md b/src/configuration/blockly/rules-blockly-persistence.md similarity index 100% rename from configuration/blockly/rules-blockly-persistence.md rename to src/configuration/blockly/rules-blockly-persistence.md diff --git a/configuration/blockly/rules-blockly-run-and-process.md b/src/configuration/blockly/rules-blockly-run-and-process.md similarity index 100% rename from configuration/blockly/rules-blockly-run-and-process.md rename to src/configuration/blockly/rules-blockly-run-and-process.md diff --git a/configuration/blockly/rules-blockly-standard-ext.md b/src/configuration/blockly/rules-blockly-standard-ext.md similarity index 100% rename from configuration/blockly/rules-blockly-standard-ext.md rename to src/configuration/blockly/rules-blockly-standard-ext.md diff --git a/configuration/blockly/rules-blockly-timers-and-delays.md b/src/configuration/blockly/rules-blockly-timers-and-delays.md similarity index 100% rename from configuration/blockly/rules-blockly-timers-and-delays.md rename to src/configuration/blockly/rules-blockly-timers-and-delays.md diff --git a/configuration/blockly/rules-blockly-uom.md b/src/configuration/blockly/rules-blockly-uom.md similarity index 100% rename from configuration/blockly/rules-blockly-uom.md rename to src/configuration/blockly/rules-blockly-uom.md diff --git a/configuration/blockly/rules-blockly-value-storage.md b/src/configuration/blockly/rules-blockly-value-storage.md similarity index 100% rename from configuration/blockly/rules-blockly-value-storage.md rename to src/configuration/blockly/rules-blockly-value-storage.md diff --git a/configuration/blockly/rules-blockly-voice-and-multimedia.md b/src/configuration/blockly/rules-blockly-voice-and-multimedia.md similarity index 100% rename from configuration/blockly/rules-blockly-voice-and-multimedia.md rename to src/configuration/blockly/rules-blockly-voice-and-multimedia.md diff --git a/configuration/editors.md b/src/configuration/editors.md similarity index 100% rename from configuration/editors.md rename to src/configuration/editors.md diff --git a/configuration/images/InstallAddonsThroughUi.gif b/src/configuration/images/InstallAddonsThroughUi.gif similarity index 100% rename from configuration/images/InstallAddonsThroughUi.gif rename to src/configuration/images/InstallAddonsThroughUi.gif diff --git a/configuration/images/apitoken_create_token.png b/src/configuration/images/apitoken_create_token.png similarity index 100% rename from configuration/images/apitoken_create_token.png rename to src/configuration/images/apitoken_create_token.png diff --git a/configuration/images/apitoken_example.png b/src/configuration/images/apitoken_example.png similarity index 100% rename from configuration/images/apitoken_example.png rename to src/configuration/images/apitoken_example.png diff --git a/configuration/images/apitoken_login.png b/src/configuration/images/apitoken_login.png similarity index 100% rename from configuration/images/apitoken_login.png rename to src/configuration/images/apitoken_login.png diff --git a/configuration/images/apitoken_overview_tokens.png b/src/configuration/images/apitoken_overview_tokens.png similarity index 100% rename from configuration/images/apitoken_overview_tokens.png rename to src/configuration/images/apitoken_overview_tokens.png diff --git a/configuration/images/apitoken_token.png b/src/configuration/images/apitoken_token.png similarity index 100% rename from configuration/images/apitoken_token.png rename to src/configuration/images/apitoken_token.png diff --git a/configuration/images/blockly/blockly-afterperiod-timer-example.png b/src/configuration/images/blockly/blockly-afterperiod-timer-example.png similarity index 100% rename from configuration/images/blockly/blockly-afterperiod-timer-example.png rename to src/configuration/images/blockly/blockly-afterperiod-timer-example.png diff --git a/configuration/images/blockly/blockly-afterperiod-timer-options-block.png b/src/configuration/images/blockly/blockly-afterperiod-timer-options-block.png similarity index 100% rename from configuration/images/blockly/blockly-afterperiod-timer-options-block.png rename to src/configuration/images/blockly/blockly-afterperiod-timer-options-block.png diff --git a/configuration/images/blockly/blockly-afterperiod-timer-options.png b/src/configuration/images/blockly/blockly-afterperiod-timer-options.png similarity index 100% rename from configuration/images/blockly/blockly-afterperiod-timer-options.png rename to src/configuration/images/blockly/blockly-afterperiod-timer-options.png diff --git a/configuration/images/blockly/blockly-afterperiod-timer.png b/src/configuration/images/blockly/blockly-afterperiod-timer.png similarity index 100% rename from configuration/images/blockly/blockly-afterperiod-timer.png rename to src/configuration/images/blockly/blockly-afterperiod-timer.png diff --git a/configuration/images/blockly/blockly-arrow.png b/src/configuration/images/blockly/blockly-arrow.png similarity index 100% rename from configuration/images/blockly/blockly-arrow.png rename to src/configuration/images/blockly/blockly-arrow.png diff --git a/configuration/images/blockly/blockly-bitwise-not.png b/src/configuration/images/blockly/blockly-bitwise-not.png similarity index 100% rename from configuration/images/blockly/blockly-bitwise-not.png rename to src/configuration/images/blockly/blockly-bitwise-not.png diff --git a/configuration/images/blockly/blockly-bitwise-operators.png b/src/configuration/images/blockly/blockly-bitwise-operators.png similarity index 100% rename from configuration/images/blockly/blockly-bitwise-operators.png rename to src/configuration/images/blockly/blockly-bitwise-operators.png diff --git a/configuration/images/blockly/blockly-bitwise.png b/src/configuration/images/blockly/blockly-bitwise.png similarity index 100% rename from configuration/images/blockly/blockly-bitwise.png rename to src/configuration/images/blockly/blockly-bitwise.png diff --git a/configuration/images/blockly/blockly-call-script.png b/src/configuration/images/blockly/blockly-call-script.png similarity index 100% rename from configuration/images/blockly/blockly-call-script.png rename to src/configuration/images/blockly/blockly-call-script.png diff --git a/configuration/images/blockly/blockly-cancel-timer.png b/src/configuration/images/blockly/blockly-cancel-timer.png similarity index 100% rename from configuration/images/blockly/blockly-cancel-timer.png rename to src/configuration/images/blockly/blockly-cancel-timer.png diff --git a/configuration/images/blockly/blockly-collapsed.png b/src/configuration/images/blockly/blockly-collapsed.png similarity index 100% rename from configuration/images/blockly/blockly-collapsed.png rename to src/configuration/images/blockly/blockly-collapsed.png diff --git a/configuration/images/blockly/blockly-color-create-rgb.png b/src/configuration/images/blockly/blockly-color-create-rgb.png similarity index 100% rename from configuration/images/blockly/blockly-color-create-rgb.png rename to src/configuration/images/blockly/blockly-color-create-rgb.png diff --git a/configuration/images/blockly/blockly-colors-blend.png b/src/configuration/images/blockly/blockly-colors-blend.png similarity index 100% rename from configuration/images/blockly/blockly-colors-blend.png rename to src/configuration/images/blockly/blockly-colors-blend.png diff --git a/configuration/images/blockly/blockly-colors-hsb.png b/src/configuration/images/blockly/blockly-colors-hsb.png similarity index 100% rename from configuration/images/blockly/blockly-colors-hsb.png rename to src/configuration/images/blockly/blockly-colors-hsb.png diff --git a/configuration/images/blockly/blockly-colors-hsbof-example.png b/src/configuration/images/blockly/blockly-colors-hsbof-example.png similarity index 100% rename from configuration/images/blockly/blockly-colors-hsbof-example.png rename to src/configuration/images/blockly/blockly-colors-hsbof-example.png diff --git a/configuration/images/blockly/blockly-colors-hsbof.png b/src/configuration/images/blockly/blockly-colors-hsbof.png similarity index 100% rename from configuration/images/blockly/blockly-colors-hsbof.png rename to src/configuration/images/blockly/blockly-colors-hsbof.png diff --git a/configuration/images/blockly/blockly-colors-overview-small.png b/src/configuration/images/blockly/blockly-colors-overview-small.png similarity index 100% rename from configuration/images/blockly/blockly-colors-overview-small.png rename to src/configuration/images/blockly/blockly-colors-overview-small.png diff --git a/configuration/images/blockly/blockly-colors-overview.png b/src/configuration/images/blockly/blockly-colors-overview.png similarity index 100% rename from configuration/images/blockly/blockly-colors-overview.png rename to src/configuration/images/blockly/blockly-colors-overview.png diff --git a/configuration/images/blockly/blockly-colors-picker.png b/src/configuration/images/blockly/blockly-colors-picker.png similarity index 100% rename from configuration/images/blockly/blockly-colors-picker.png rename to src/configuration/images/blockly/blockly-colors-picker.png diff --git a/configuration/images/blockly/blockly-colors-random.png b/src/configuration/images/blockly/blockly-colors-random.png similarity index 100% rename from configuration/images/blockly/blockly-colors-random.png rename to src/configuration/images/blockly/blockly-colors-random.png diff --git a/configuration/images/blockly/blockly-context-help.png b/src/configuration/images/blockly/blockly-context-help.png similarity index 100% rename from configuration/images/blockly/blockly-context-help.png rename to src/configuration/images/blockly/blockly-context-help.png diff --git a/configuration/images/blockly/blockly-context-number-string.gif b/src/configuration/images/blockly/blockly-context-number-string.gif similarity index 100% rename from configuration/images/blockly/blockly-context-number-string.gif rename to src/configuration/images/blockly/blockly-context-number-string.gif diff --git a/configuration/images/blockly/blockly-contextmenu.png b/src/configuration/images/blockly/blockly-contextmenu.png similarity index 100% rename from configuration/images/blockly/blockly-contextmenu.png rename to src/configuration/images/blockly/blockly-contextmenu.png diff --git a/configuration/images/blockly/blockly-copy-of-tutorial.gif b/src/configuration/images/blockly/blockly-copy-of-tutorial.gif similarity index 100% rename from configuration/images/blockly/blockly-copy-of-tutorial.gif rename to src/configuration/images/blockly/blockly-copy-of-tutorial.gif diff --git a/configuration/images/blockly/blockly-cross-rule-copy.png b/src/configuration/images/blockly/blockly-cross-rule-copy.png similarity index 100% rename from configuration/images/blockly/blockly-cross-rule-copy.png rename to src/configuration/images/blockly/blockly-cross-rule-copy.png diff --git a/configuration/images/blockly/blockly-date-comparison-between.png b/src/configuration/images/blockly/blockly-date-comparison-between.png similarity index 100% rename from configuration/images/blockly/blockly-date-comparison-between.png rename to src/configuration/images/blockly/blockly-date-comparison-between.png diff --git a/configuration/images/blockly/blockly-date-comparison.png b/src/configuration/images/blockly/blockly-date-comparison.png similarity index 100% rename from configuration/images/blockly/blockly-date-comparison.png rename to src/configuration/images/blockly/blockly-date-comparison.png diff --git a/configuration/images/blockly/blockly-date-copy-of-overview.png b/src/configuration/images/blockly/blockly-date-copy-of-overview.png similarity index 100% rename from configuration/images/blockly/blockly-date-copy-of-overview.png rename to src/configuration/images/blockly/blockly-date-copy-of-overview.png diff --git a/configuration/images/blockly/blockly-date-difference.png b/src/configuration/images/blockly/blockly-date-difference.png similarity index 100% rename from configuration/images/blockly/blockly-date-difference.png rename to src/configuration/images/blockly/blockly-date-difference.png diff --git a/configuration/images/blockly/blockly-date-get-now.png b/src/configuration/images/blockly/blockly-date-get-now.png similarity index 100% rename from configuration/images/blockly/blockly-date-get-now.png rename to src/configuration/images/blockly/blockly-date-get-now.png diff --git a/configuration/images/blockly/blockly-date-get.png b/src/configuration/images/blockly/blockly-date-get.png similarity index 100% rename from configuration/images/blockly/blockly-date-get.png rename to src/configuration/images/blockly/blockly-date-get.png diff --git a/configuration/images/blockly/blockly-date-handling-ephemeris-small.png b/src/configuration/images/blockly/blockly-date-handling-ephemeris-small.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling-ephemeris-small.png rename to src/configuration/images/blockly/blockly-date-handling-ephemeris-small.png diff --git a/configuration/images/blockly/blockly-date-handling-ephemeris.png b/src/configuration/images/blockly/blockly-date-handling-ephemeris.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling-ephemeris.png rename to src/configuration/images/blockly/blockly-date-handling-ephemeris.png diff --git a/configuration/images/blockly/blockly-date-handling-persistence-small.png b/src/configuration/images/blockly/blockly-date-handling-persistence-small.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling-persistence-small.png rename to src/configuration/images/blockly/blockly-date-handling-persistence-small.png diff --git a/configuration/images/blockly/blockly-date-handling-persistence.png b/src/configuration/images/blockly/blockly-date-handling-persistence.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling-persistence.png rename to src/configuration/images/blockly/blockly-date-handling-persistence.png diff --git a/configuration/images/blockly/blockly-date-handling1-small.png b/src/configuration/images/blockly/blockly-date-handling1-small.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling1-small.png rename to src/configuration/images/blockly/blockly-date-handling1-small.png diff --git a/configuration/images/blockly/blockly-date-handling1.png b/src/configuration/images/blockly/blockly-date-handling1.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling1.png rename to src/configuration/images/blockly/blockly-date-handling1.png diff --git a/configuration/images/blockly/blockly-date-handling2-small.png b/src/configuration/images/blockly/blockly-date-handling2-small.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling2-small.png rename to src/configuration/images/blockly/blockly-date-handling2-small.png diff --git a/configuration/images/blockly/blockly-date-handling2.png b/src/configuration/images/blockly/blockly-date-handling2.png similarity index 100% rename from configuration/images/blockly/blockly-date-handling2.png rename to src/configuration/images/blockly/blockly-date-handling2.png diff --git a/configuration/images/blockly/blockly-date-help.png b/src/configuration/images/blockly/blockly-date-help.png similarity index 100% rename from configuration/images/blockly/blockly-date-help.png rename to src/configuration/images/blockly/blockly-date-help.png diff --git a/configuration/images/blockly/blockly-date-picker.png b/src/configuration/images/blockly/blockly-date-picker.png similarity index 100% rename from configuration/images/blockly/blockly-date-picker.png rename to src/configuration/images/blockly/blockly-date-picker.png diff --git a/configuration/images/blockly/blockly-date-plus.png b/src/configuration/images/blockly/blockly-date-plus.png similarity index 100% rename from configuration/images/blockly/blockly-date-plus.png rename to src/configuration/images/blockly/blockly-date-plus.png diff --git a/configuration/images/blockly/blockly-date-temporal1-example1.png b/src/configuration/images/blockly/blockly-date-temporal1-example1.png similarity index 100% rename from configuration/images/blockly/blockly-date-temporal1-example1.png rename to src/configuration/images/blockly/blockly-date-temporal1-example1.png diff --git a/configuration/images/blockly/blockly-date-temporal2-example1.png b/src/configuration/images/blockly/blockly-date-temporal2-example1.png similarity index 100% rename from configuration/images/blockly/blockly-date-temporal2-example1.png rename to src/configuration/images/blockly/blockly-date-temporal2-example1.png diff --git a/configuration/images/blockly/blockly-date-temporal2-example2.png b/src/configuration/images/blockly/blockly-date-temporal2-example2.png similarity index 100% rename from configuration/images/blockly/blockly-date-temporal2-example2.png rename to src/configuration/images/blockly/blockly-date-temporal2-example2.png diff --git a/configuration/images/blockly/blockly-date-temporal2-example3.png b/src/configuration/images/blockly/blockly-date-temporal2-example3.png similarity index 100% rename from configuration/images/blockly/blockly-date-temporal2-example3.png rename to src/configuration/images/blockly/blockly-date-temporal2-example3.png diff --git a/configuration/images/blockly/blockly-date-text-example.png b/src/configuration/images/blockly/blockly-date-text-example.png similarity index 100% rename from configuration/images/blockly/blockly-date-text-example.png rename to src/configuration/images/blockly/blockly-date-text-example.png diff --git a/configuration/images/blockly/blockly-date-today.png b/src/configuration/images/blockly/blockly-date-today.png similarity index 100% rename from configuration/images/blockly/blockly-date-today.png rename to src/configuration/images/blockly/blockly-date-today.png diff --git a/configuration/images/blockly/blockly-date-unit-of.png b/src/configuration/images/blockly/blockly-date-unit-of.png similarity index 100% rename from configuration/images/blockly/blockly-date-unit-of.png rename to src/configuration/images/blockly/blockly-date-unit-of.png diff --git a/configuration/images/blockly/blockly-datetime-from-item-example.png b/src/configuration/images/blockly/blockly-datetime-from-item-example.png similarity index 100% rename from configuration/images/blockly/blockly-datetime-from-item-example.png rename to src/configuration/images/blockly/blockly-datetime-from-item-example.png diff --git a/configuration/images/blockly/blockly-datetime-from-item.png b/src/configuration/images/blockly/blockly-datetime-from-item.png similarity index 100% rename from configuration/images/blockly/blockly-datetime-from-item.png rename to src/configuration/images/blockly/blockly-datetime-from-item.png diff --git a/configuration/images/blockly/blockly-datetime-with-values.png b/src/configuration/images/blockly/blockly-datetime-with-values.png similarity index 100% rename from configuration/images/blockly/blockly-datetime-with-values.png rename to src/configuration/images/blockly/blockly-datetime-with-values.png diff --git a/configuration/images/blockly/blockly-edit-screen.png b/src/configuration/images/blockly/blockly-edit-screen.png similarity index 100% rename from configuration/images/blockly/blockly-edit-screen.png rename to src/configuration/images/blockly/blockly-edit-screen.png diff --git a/configuration/images/blockly/blockly-ephemeris-days-until.png b/src/configuration/images/blockly/blockly-ephemeris-days-until.png similarity index 100% rename from configuration/images/blockly/blockly-ephemeris-days-until.png rename to src/configuration/images/blockly/blockly-ephemeris-days-until.png diff --git a/configuration/images/blockly/blockly-ephemeris-get-name.png b/src/configuration/images/blockly/blockly-ephemeris-get-name.png similarity index 100% rename from configuration/images/blockly/blockly-ephemeris-get-name.png rename to src/configuration/images/blockly/blockly-ephemeris-get-name.png diff --git a/configuration/images/blockly/blockly-ephemeris-is-example.png b/src/configuration/images/blockly/blockly-ephemeris-is-example.png similarity index 100% rename from configuration/images/blockly/blockly-ephemeris-is-example.png rename to src/configuration/images/blockly/blockly-ephemeris-is-example.png diff --git a/configuration/images/blockly/blockly-ephemeris-is.png b/src/configuration/images/blockly/blockly-ephemeris-is.png similarity index 100% rename from configuration/images/blockly/blockly-ephemeris-is.png rename to src/configuration/images/blockly/blockly-ephemeris-is.png diff --git a/configuration/images/blockly/blockly-ephemeris-small.png b/src/configuration/images/blockly/blockly-ephemeris-small.png similarity index 100% rename from configuration/images/blockly/blockly-ephemeris-small.png rename to src/configuration/images/blockly/blockly-ephemeris-small.png diff --git a/configuration/images/blockly/blockly-ephemeris.png b/src/configuration/images/blockly/blockly-ephemeris.png similarity index 100% rename from configuration/images/blockly/blockly-ephemeris.png rename to src/configuration/images/blockly/blockly-ephemeris.png diff --git a/configuration/images/blockly/blockly-expanded.png b/src/configuration/images/blockly/blockly-expanded.png similarity index 100% rename from configuration/images/blockly/blockly-expanded.png rename to src/configuration/images/blockly/blockly-expanded.png diff --git a/configuration/images/blockly/blockly-get-date-string-without.png b/src/configuration/images/blockly/blockly-get-date-string-without.png similarity index 100% rename from configuration/images/blockly/blockly-get-date-string-without.png rename to src/configuration/images/blockly/blockly-get-date-string-without.png diff --git a/configuration/images/blockly/blockly-get-date-string.png b/src/configuration/images/blockly/blockly-get-date-string.png similarity index 100% rename from configuration/images/blockly/blockly-get-date-string.png rename to src/configuration/images/blockly/blockly-get-date-string.png diff --git a/configuration/images/blockly/blockly-get-now-offset.png b/src/configuration/images/blockly/blockly-get-now-offset.png similarity index 100% rename from configuration/images/blockly/blockly-get-now-offset.png rename to src/configuration/images/blockly/blockly-get-now-offset.png diff --git a/configuration/images/blockly/blockly-get-things.png b/src/configuration/images/blockly/blockly-get-things.png similarity index 100% rename from configuration/images/blockly/blockly-get-things.png rename to src/configuration/images/blockly/blockly-get-things.png diff --git a/configuration/images/blockly/blockly-getItem-with-var.png b/src/configuration/images/blockly/blockly-getItem-with-var.png similarity index 100% rename from configuration/images/blockly/blockly-getItem-with-var.png rename to src/configuration/images/blockly/blockly-getItem-with-var.png diff --git a/configuration/images/blockly/blockly-getItem.png b/src/configuration/images/blockly/blockly-getItem.png similarity index 100% rename from configuration/images/blockly/blockly-getItem.png rename to src/configuration/images/blockly/blockly-getItem.png diff --git a/configuration/images/blockly/blockly-getItemAttributes-fix.png b/src/configuration/images/blockly/blockly-getItemAttributes-fix.png similarity index 100% rename from configuration/images/blockly/blockly-getItemAttributes-fix.png rename to src/configuration/images/blockly/blockly-getItemAttributes-fix.png diff --git a/configuration/images/blockly/blockly-getItemAttributes-simple.png b/src/configuration/images/blockly/blockly-getItemAttributes-simple.png similarity index 100% rename from configuration/images/blockly/blockly-getItemAttributes-simple.png rename to src/configuration/images/blockly/blockly-getItemAttributes-simple.png diff --git a/configuration/images/blockly/blockly-getItemAttributes.png b/src/configuration/images/blockly/blockly-getItemAttributes.png similarity index 100% rename from configuration/images/blockly/blockly-getItemAttributes.png rename to src/configuration/images/blockly/blockly-getItemAttributes.png diff --git a/configuration/images/blockly/blockly-getItemStateDoesntFit.png b/src/configuration/images/blockly/blockly-getItemStateDoesntFit.png similarity index 100% rename from configuration/images/blockly/blockly-getItemStateDoesntFit.png rename to src/configuration/images/blockly/blockly-getItemStateDoesntFit.png diff --git a/configuration/images/blockly/blockly-getMembers.png b/src/configuration/images/blockly/blockly-getMembers.png similarity index 100% rename from configuration/images/blockly/blockly-getMembers.png rename to src/configuration/images/blockly/blockly-getMembers.png diff --git a/configuration/images/blockly/blockly-getMembersExample.png b/src/configuration/images/blockly/blockly-getMembersExample.png similarity index 100% rename from configuration/images/blockly/blockly-getMembersExample.png rename to src/configuration/images/blockly/blockly-getMembersExample.png diff --git a/configuration/images/blockly/blockly-getStateOfItem.png b/src/configuration/images/blockly/blockly-getStateOfItem.png similarity index 100% rename from configuration/images/blockly/blockly-getStateOfItem.png rename to src/configuration/images/blockly/blockly-getStateOfItem.png diff --git a/configuration/images/blockly/blockly-getThingAttributes.png b/src/configuration/images/blockly/blockly-getThingAttributes.png similarity index 100% rename from configuration/images/blockly/blockly-getThingAttributes.png rename to src/configuration/images/blockly/blockly-getThingAttributes.png diff --git a/configuration/images/blockly/blockly-getThingStatus.png b/src/configuration/images/blockly/blockly-getThingStatus.png similarity index 100% rename from configuration/images/blockly/blockly-getThingStatus.png rename to src/configuration/images/blockly/blockly-getThingStatus.png diff --git a/configuration/images/blockly/blockly-getitemswithtag.png b/src/configuration/images/blockly/blockly-getitemswithtag.png similarity index 100% rename from configuration/images/blockly/blockly-getitemswithtag.png rename to src/configuration/images/blockly/blockly-getitemswithtag.png diff --git a/configuration/images/blockly/blockly-http-delete-simple.png b/src/configuration/images/blockly/blockly-http-delete-simple.png similarity index 100% rename from configuration/images/blockly/blockly-http-delete-simple.png rename to src/configuration/images/blockly/blockly-http-delete-simple.png diff --git a/configuration/images/blockly/blockly-http-get-complex.png b/src/configuration/images/blockly/blockly-http-get-complex.png similarity index 100% rename from configuration/images/blockly/blockly-http-get-complex.png rename to src/configuration/images/blockly/blockly-http-get-complex.png diff --git a/configuration/images/blockly/blockly-http-get-params.png b/src/configuration/images/blockly/blockly-http-get-params.png similarity index 100% rename from configuration/images/blockly/blockly-http-get-params.png rename to src/configuration/images/blockly/blockly-http-get-params.png diff --git a/configuration/images/blockly/blockly-http-get-simple.png b/src/configuration/images/blockly/blockly-http-get-simple.png similarity index 100% rename from configuration/images/blockly/blockly-http-get-simple.png rename to src/configuration/images/blockly/blockly-http-get-simple.png diff --git a/configuration/images/blockly/blockly-http-overview-small.png b/src/configuration/images/blockly/blockly-http-overview-small.png similarity index 100% rename from configuration/images/blockly/blockly-http-overview-small.png rename to src/configuration/images/blockly/blockly-http-overview-small.png diff --git a/configuration/images/blockly/blockly-http-overview.png b/src/configuration/images/blockly/blockly-http-overview.png similarity index 100% rename from configuration/images/blockly/blockly-http-overview.png rename to src/configuration/images/blockly/blockly-http-overview.png diff --git a/configuration/images/blockly/blockly-http-post-complex.png b/src/configuration/images/blockly/blockly-http-post-complex.png similarity index 100% rename from configuration/images/blockly/blockly-http-post-complex.png rename to src/configuration/images/blockly/blockly-http-post-complex.png diff --git a/configuration/images/blockly/blockly-http-post-simple.png b/src/configuration/images/blockly/blockly-http-post-simple.png similarity index 100% rename from configuration/images/blockly/blockly-http-post-simple.png rename to src/configuration/images/blockly/blockly-http-post-simple.png diff --git a/configuration/images/blockly/blockly-http-put-simple.png b/src/configuration/images/blockly/blockly-http-put-simple.png similarity index 100% rename from configuration/images/blockly/blockly-http-put-simple.png rename to src/configuration/images/blockly/blockly-http-put-simple.png diff --git a/configuration/images/blockly/blockly-http-toggles.png b/src/configuration/images/blockly/blockly-http-toggles.png similarity index 100% rename from configuration/images/blockly/blockly-http-toggles.png rename to src/configuration/images/blockly/blockly-http-toggles.png diff --git a/configuration/images/blockly/blockly-inline-script-example.png b/src/configuration/images/blockly/blockly-inline-script-example.png similarity index 100% rename from configuration/images/blockly/blockly-inline-script-example.png rename to src/configuration/images/blockly/blockly-inline-script-example.png diff --git a/configuration/images/blockly/blockly-inline-script.png b/src/configuration/images/blockly/blockly-inline-script.png similarity index 100% rename from configuration/images/blockly/blockly-inline-script.png rename to src/configuration/images/blockly/blockly-inline-script.png diff --git a/configuration/images/blockly/blockly-inputs-external.png b/src/configuration/images/blockly/blockly-inputs-external.png similarity index 100% rename from configuration/images/blockly/blockly-inputs-external.png rename to src/configuration/images/blockly/blockly-inputs-external.png diff --git a/configuration/images/blockly/blockly-inputs-inline.png b/src/configuration/images/blockly/blockly-inputs-inline.png similarity index 100% rename from configuration/images/blockly/blockly-inputs-inline.png rename to src/configuration/images/blockly/blockly-inputs-inline.png diff --git a/configuration/images/blockly/blockly-item-example.png b/src/configuration/images/blockly/blockly-item-example.png similarity index 100% rename from configuration/images/blockly/blockly-item-example.png rename to src/configuration/images/blockly/blockly-item-example.png diff --git a/configuration/images/blockly/blockly-item-thing.png b/src/configuration/images/blockly/blockly-item-thing.png similarity index 100% rename from configuration/images/blockly/blockly-item-thing.png rename to src/configuration/images/blockly/blockly-item-thing.png diff --git a/configuration/images/blockly/blockly-item.png b/src/configuration/images/blockly/blockly-item.png similarity index 100% rename from configuration/images/blockly/blockly-item.png rename to src/configuration/images/blockly/blockly-item.png diff --git a/configuration/images/blockly/blockly-items-and-things-small.png b/src/configuration/images/blockly/blockly-items-and-things-small.png similarity index 100% rename from configuration/images/blockly/blockly-items-and-things-small.png rename to src/configuration/images/blockly/blockly-items-and-things-small.png diff --git a/configuration/images/blockly/blockly-items-and-things.png b/src/configuration/images/blockly/blockly-items-and-things.png similarity index 100% rename from configuration/images/blockly/blockly-items-and-things.png rename to src/configuration/images/blockly/blockly-items-and-things.png diff --git a/configuration/images/blockly/blockly-javascript-dialog.png b/src/configuration/images/blockly/blockly-javascript-dialog.png similarity index 100% rename from configuration/images/blockly/blockly-javascript-dialog.png rename to src/configuration/images/blockly/blockly-javascript-dialog.png diff --git a/configuration/images/blockly/blockly-lists-concatenate-example.png b/src/configuration/images/blockly/blockly-lists-concatenate-example.png similarity index 100% rename from configuration/images/blockly/blockly-lists-concatenate-example.png rename to src/configuration/images/blockly/blockly-lists-concatenate-example.png diff --git a/configuration/images/blockly/blockly-lists-concatenate.png b/src/configuration/images/blockly/blockly-lists-concatenate.png similarity index 100% rename from configuration/images/blockly/blockly-lists-concatenate.png rename to src/configuration/images/blockly/blockly-lists-concatenate.png diff --git a/configuration/images/blockly/blockly-lists-dictionary-example.png b/src/configuration/images/blockly/blockly-lists-dictionary-example.png similarity index 100% rename from configuration/images/blockly/blockly-lists-dictionary-example.png rename to src/configuration/images/blockly/blockly-lists-dictionary-example.png diff --git a/configuration/images/blockly/blockly-lists-dictionary-getkey-example.png b/src/configuration/images/blockly/blockly-lists-dictionary-getkey-example.png similarity index 100% rename from configuration/images/blockly/blockly-lists-dictionary-getkey-example.png rename to src/configuration/images/blockly/blockly-lists-dictionary-getkey-example.png diff --git a/configuration/images/blockly/blockly-lists-dictionary-getkey.png b/src/configuration/images/blockly/blockly-lists-dictionary-getkey.png similarity index 100% rename from configuration/images/blockly/blockly-lists-dictionary-getkey.png rename to src/configuration/images/blockly/blockly-lists-dictionary-getkey.png diff --git a/configuration/images/blockly/blockly-lists-dictionary-overview-small.png b/src/configuration/images/blockly/blockly-lists-dictionary-overview-small.png similarity index 100% rename from configuration/images/blockly/blockly-lists-dictionary-overview-small.png rename to src/configuration/images/blockly/blockly-lists-dictionary-overview-small.png diff --git a/configuration/images/blockly/blockly-lists-dictionary-overview.png b/src/configuration/images/blockly/blockly-lists-dictionary-overview.png similarity index 100% rename from configuration/images/blockly/blockly-lists-dictionary-overview.png rename to src/configuration/images/blockly/blockly-lists-dictionary-overview.png diff --git a/configuration/images/blockly/blockly-lists-dictionary.png b/src/configuration/images/blockly/blockly-lists-dictionary.png similarity index 100% rename from configuration/images/blockly/blockly-lists-dictionary.png rename to src/configuration/images/blockly/blockly-lists-dictionary.png diff --git a/configuration/images/blockly/blockly-logging-log.png b/src/configuration/images/blockly/blockly-logging-log.png similarity index 100% rename from configuration/images/blockly/blockly-logging-log.png rename to src/configuration/images/blockly/blockly-logging-log.png diff --git a/configuration/images/blockly/blockly-logging-overview-small.png b/src/configuration/images/blockly/blockly-logging-overview-small.png similarity index 100% rename from configuration/images/blockly/blockly-logging-overview-small.png rename to src/configuration/images/blockly/blockly-logging-overview-small.png diff --git a/configuration/images/blockly/blockly-logging-overview.png b/src/configuration/images/blockly/blockly-logging-overview.png similarity index 100% rename from configuration/images/blockly/blockly-logging-overview.png rename to src/configuration/images/blockly/blockly-logging-overview.png diff --git a/configuration/images/blockly/blockly-logging-print.png b/src/configuration/images/blockly/blockly-logging-print.png similarity index 100% rename from configuration/images/blockly/blockly-logging-print.png rename to src/configuration/images/blockly/blockly-logging-print.png diff --git a/configuration/images/blockly/blockly-logic-undefined.png b/src/configuration/images/blockly/blockly-logic-undefined.png similarity index 100% rename from configuration/images/blockly/blockly-logic-undefined.png rename to src/configuration/images/blockly/blockly-logic-undefined.png diff --git a/configuration/images/blockly/blockly-main-help.png b/src/configuration/images/blockly/blockly-main-help.png similarity index 100% rename from configuration/images/blockly/blockly-main-help.png rename to src/configuration/images/blockly/blockly-main-help.png diff --git a/configuration/images/blockly/blockly-map-for-each.png b/src/configuration/images/blockly/blockly-map-for-each.png similarity index 100% rename from configuration/images/blockly/blockly-map-for-each.png rename to src/configuration/images/blockly/blockly-map-for-each.png diff --git a/configuration/images/blockly/blockly-map-foreach-example.png b/src/configuration/images/blockly/blockly-map-foreach-example.png similarity index 100% rename from configuration/images/blockly/blockly-map-foreach-example.png rename to src/configuration/images/blockly/blockly-map-foreach-example.png diff --git a/configuration/images/blockly/blockly-math-parse-number.png b/src/configuration/images/blockly/blockly-math-parse-number.png similarity index 100% rename from configuration/images/blockly/blockly-math-parse-number.png rename to src/configuration/images/blockly/blockly-math-parse-number.png diff --git a/configuration/images/blockly/blockly-math-quantity-operations-failure.png b/src/configuration/images/blockly/blockly-math-quantity-operations-failure.png similarity index 100% rename from configuration/images/blockly/blockly-math-quantity-operations-failure.png rename to src/configuration/images/blockly/blockly-math-quantity-operations-failure.png diff --git a/configuration/images/blockly/blockly-math-quantity-operations.png b/src/configuration/images/blockly/blockly-math-quantity-operations.png similarity index 100% rename from configuration/images/blockly/blockly-math-quantity-operations.png rename to src/configuration/images/blockly/blockly-math-quantity-operations.png diff --git a/configuration/images/blockly/blockly-math-round.png b/src/configuration/images/blockly/blockly-math-round.png similarity index 100% rename from configuration/images/blockly/blockly-math-round.png rename to src/configuration/images/blockly/blockly-math-round.png diff --git a/configuration/images/blockly/blockly-metadata-change.png b/src/configuration/images/blockly/blockly-metadata-change.png similarity index 100% rename from configuration/images/blockly/blockly-metadata-change.png rename to src/configuration/images/blockly/blockly-metadata-change.png diff --git a/configuration/images/blockly/blockly-metadata-config-key.png b/src/configuration/images/blockly/blockly-metadata-config-key.png similarity index 100% rename from configuration/images/blockly/blockly-metadata-config-key.png rename to src/configuration/images/blockly/blockly-metadata-config-key.png diff --git a/configuration/images/blockly/blockly-metadata-expire.png b/src/configuration/images/blockly/blockly-metadata-expire.png similarity index 100% rename from configuration/images/blockly/blockly-metadata-expire.png rename to src/configuration/images/blockly/blockly-metadata-expire.png diff --git a/configuration/images/blockly/blockly-metadata-loop.png b/src/configuration/images/blockly/blockly-metadata-loop.png similarity index 100% rename from configuration/images/blockly/blockly-metadata-loop.png rename to src/configuration/images/blockly/blockly-metadata-loop.png diff --git a/configuration/images/blockly/blockly-metadata.png b/src/configuration/images/blockly/blockly-metadata.png similarity index 100% rename from configuration/images/blockly/blockly-metadata.png rename to src/configuration/images/blockly/blockly-metadata.png diff --git a/configuration/images/blockly/blockly-notification-action-generic.png b/src/configuration/images/blockly/blockly-notification-action-generic.png similarity index 100% rename from configuration/images/blockly/blockly-notification-action-generic.png rename to src/configuration/images/blockly/blockly-notification-action-generic.png diff --git a/configuration/images/blockly/blockly-notification-full.png b/src/configuration/images/blockly/blockly-notification-full.png similarity index 100% rename from configuration/images/blockly/blockly-notification-full.png rename to src/configuration/images/blockly/blockly-notification-full.png diff --git a/configuration/images/blockly/blockly-notification-icon-title-block.png b/src/configuration/images/blockly/blockly-notification-icon-title-block.png similarity index 100% rename from configuration/images/blockly/blockly-notification-icon-title-block.png rename to src/configuration/images/blockly/blockly-notification-icon-title-block.png diff --git a/configuration/images/blockly/blockly-notification-icon-title.png b/src/configuration/images/blockly/blockly-notification-icon-title.png similarity index 100% rename from configuration/images/blockly/blockly-notification-icon-title.png rename to src/configuration/images/blockly/blockly-notification-icon-title.png diff --git a/configuration/images/blockly/blockly-notification-simple.png b/src/configuration/images/blockly/blockly-notification-simple.png similarity index 100% rename from configuration/images/blockly/blockly-notification-simple.png rename to src/configuration/images/blockly/blockly-notification-simple.png diff --git a/configuration/images/blockly/blockly-notification-to-log.png b/src/configuration/images/blockly/blockly-notification-to-log.png similarity index 100% rename from configuration/images/blockly/blockly-notification-to-log.png rename to src/configuration/images/blockly/blockly-notification-to-log.png diff --git a/configuration/images/blockly/blockly-notification-to-user.png b/src/configuration/images/blockly/blockly-notification-to-user.png similarity index 100% rename from configuration/images/blockly/blockly-notification-to-user.png rename to src/configuration/images/blockly/blockly-notification-to-user.png diff --git a/configuration/images/blockly/blockly-notifications-buttons-message.png b/src/configuration/images/blockly/blockly-notifications-buttons-message.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-buttons-message.png rename to src/configuration/images/blockly/blockly-notifications-buttons-message.png diff --git a/configuration/images/blockly/blockly-notifications-buttons.png b/src/configuration/images/blockly/blockly-notifications-buttons.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-buttons.png rename to src/configuration/images/blockly/blockly-notifications-buttons.png diff --git a/configuration/images/blockly/blockly-notifications-call-page-action-mainui.png b/src/configuration/images/blockly/blockly-notifications-call-page-action-mainui.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-call-page-action-mainui.png rename to src/configuration/images/blockly/blockly-notifications-call-page-action-mainui.png diff --git a/configuration/images/blockly/blockly-notifications-call-page-action.png b/src/configuration/images/blockly/blockly-notifications-call-page-action.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-call-page-action.png rename to src/configuration/images/blockly/blockly-notifications-call-page-action.png diff --git a/configuration/images/blockly/blockly-notifications-hide.png b/src/configuration/images/blockly/blockly-notifications-hide.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-hide.png rename to src/configuration/images/blockly/blockly-notifications-hide.png diff --git a/configuration/images/blockly/blockly-notifications-media-block.png b/src/configuration/images/blockly/blockly-notifications-media-block.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-media-block.png rename to src/configuration/images/blockly/blockly-notifications-media-block.png diff --git a/configuration/images/blockly/blockly-notifications-media.png b/src/configuration/images/blockly/blockly-notifications-media.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-media.png rename to src/configuration/images/blockly/blockly-notifications-media.png diff --git a/configuration/images/blockly/blockly-notifications-oneclick-configured.png b/src/configuration/images/blockly/blockly-notifications-oneclick-configured.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-oneclick-configured.png rename to src/configuration/images/blockly/blockly-notifications-oneclick-configured.png diff --git a/configuration/images/blockly/blockly-notifications-oneclick.png b/src/configuration/images/blockly/blockly-notifications-oneclick.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-oneclick.png rename to src/configuration/images/blockly/blockly-notifications-oneclick.png diff --git a/configuration/images/blockly/blockly-notifications-small.png b/src/configuration/images/blockly/blockly-notifications-small.png similarity index 100% rename from configuration/images/blockly/blockly-notifications-small.png rename to src/configuration/images/blockly/blockly-notifications-small.png diff --git a/configuration/images/blockly/blockly-notifications.png b/src/configuration/images/blockly/blockly-notifications.png similarity index 100% rename from configuration/images/blockly/blockly-notifications.png rename to src/configuration/images/blockly/blockly-notifications.png diff --git a/configuration/images/blockly/blockly-notifications1.png b/src/configuration/images/blockly/blockly-notifications1.png similarity index 100% rename from configuration/images/blockly/blockly-notifications1.png rename to src/configuration/images/blockly/blockly-notifications1.png diff --git a/configuration/images/blockly/blockly-notifications2.png b/src/configuration/images/blockly/blockly-notifications2.png similarity index 100% rename from configuration/images/blockly/blockly-notifications2.png rename to src/configuration/images/blockly/blockly-notifications2.png diff --git a/configuration/images/blockly/blockly-notifications3.png b/src/configuration/images/blockly/blockly-notifications3.png similarity index 100% rename from configuration/images/blockly/blockly-notifications3.png rename to src/configuration/images/blockly/blockly-notifications3.png diff --git a/configuration/images/blockly/blockly-notifications4.png b/src/configuration/images/blockly/blockly-notifications4.png similarity index 100% rename from configuration/images/blockly/blockly-notifications4.png rename to src/configuration/images/blockly/blockly-notifications4.png diff --git a/configuration/images/blockly/blockly-notifications5.png b/src/configuration/images/blockly/blockly-notifications5.png similarity index 100% rename from configuration/images/blockly/blockly-notifications5.png rename to src/configuration/images/blockly/blockly-notifications5.png diff --git a/configuration/images/blockly/blockly-old-version-warning.png b/src/configuration/images/blockly/blockly-old-version-warning.png similarity index 100% rename from configuration/images/blockly/blockly-old-version-warning.png rename to src/configuration/images/blockly/blockly-old-version-warning.png diff --git a/configuration/images/blockly/blockly-openhab-macos-share-1.png b/src/configuration/images/blockly/blockly-openhab-macos-share-1.png similarity index 100% rename from configuration/images/blockly/blockly-openhab-macos-share-1.png rename to src/configuration/images/blockly/blockly-openhab-macos-share-1.png diff --git a/configuration/images/blockly/blockly-openhab-macos-share-2.png b/src/configuration/images/blockly/blockly-openhab-macos-share-2.png similarity index 100% rename from configuration/images/blockly/blockly-openhab-macos-share-2.png rename to src/configuration/images/blockly/blockly-openhab-macos-share-2.png diff --git a/configuration/images/blockly/blockly-persistence-get-item-change.png b/src/configuration/images/blockly/blockly-persistence-get-item-change.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-get-item-change.png rename to src/configuration/images/blockly/blockly-persistence-get-item-change.png diff --git a/configuration/images/blockly/blockly-persistence-get-previous-example.png b/src/configuration/images/blockly/blockly-persistence-get-previous-example.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-get-previous-example.png rename to src/configuration/images/blockly/blockly-persistence-get-previous-example.png diff --git a/configuration/images/blockly/blockly-persistence-get-previous.png b/src/configuration/images/blockly/blockly-persistence-get-previous.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-get-previous.png rename to src/configuration/images/blockly/blockly-persistence-get-previous.png diff --git a/configuration/images/blockly/blockly-persistence-get-previousValue.png b/src/configuration/images/blockly/blockly-persistence-get-previousValue.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-get-previousValue.png rename to src/configuration/images/blockly/blockly-persistence-get-previousValue.png diff --git a/configuration/images/blockly/blockly-persistence-get-statistical-value.png b/src/configuration/images/blockly/blockly-persistence-get-statistical-value.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-get-statistical-value.png rename to src/configuration/images/blockly/blockly-persistence-get-statistical-value.png diff --git a/configuration/images/blockly/blockly-persistence-persist-states.png b/src/configuration/images/blockly/blockly-persistence-persist-states.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-persist-states.png rename to src/configuration/images/blockly/blockly-persistence-persist-states.png diff --git a/configuration/images/blockly/blockly-persistence-persist.png b/src/configuration/images/blockly/blockly-persistence-persist.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-persist.png rename to src/configuration/images/blockly/blockly-persistence-persist.png diff --git a/configuration/images/blockly/blockly-persistence-remove.png b/src/configuration/images/blockly/blockly-persistence-remove.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-remove.png rename to src/configuration/images/blockly/blockly-persistence-remove.png diff --git a/configuration/images/blockly/blockly-persistence-return-types.png b/src/configuration/images/blockly/blockly-persistence-return-types.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-return-types.png rename to src/configuration/images/blockly/blockly-persistence-return-types.png diff --git a/configuration/images/blockly/blockly-persistence-small.png b/src/configuration/images/blockly/blockly-persistence-small.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-small.png rename to src/configuration/images/blockly/blockly-persistence-small.png diff --git a/configuration/images/blockly/blockly-persistence-timescope.png b/src/configuration/images/blockly/blockly-persistence-timescope.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-timescope.png rename to src/configuration/images/blockly/blockly-persistence-timescope.png diff --git a/configuration/images/blockly/blockly-persistence-updated-date.png b/src/configuration/images/blockly/blockly-persistence-updated-date.png similarity index 100% rename from configuration/images/blockly/blockly-persistence-updated-date.png rename to src/configuration/images/blockly/blockly-persistence-updated-date.png diff --git a/configuration/images/blockly/blockly-persistence.png b/src/configuration/images/blockly/blockly-persistence.png similarity index 100% rename from configuration/images/blockly/blockly-persistence.png rename to src/configuration/images/blockly/blockly-persistence.png diff --git a/configuration/images/blockly/blockly-persistence_small.png b/src/configuration/images/blockly/blockly-persistence_small.png similarity index 100% rename from configuration/images/blockly/blockly-persistence_small.png rename to src/configuration/images/blockly/blockly-persistence_small.png diff --git a/configuration/images/blockly/blockly-play-audio-known-issue.png b/src/configuration/images/blockly/blockly-play-audio-known-issue.png similarity index 100% rename from configuration/images/blockly/blockly-play-audio-known-issue.png rename to src/configuration/images/blockly/blockly-play-audio-known-issue.png diff --git a/configuration/images/blockly/blockly-play-audio-with-volume.png b/src/configuration/images/blockly/blockly-play-audio-with-volume.png similarity index 100% rename from configuration/images/blockly/blockly-play-audio-with-volume.png rename to src/configuration/images/blockly/blockly-play-audio-with-volume.png diff --git a/configuration/images/blockly/blockly-play-audio.png b/src/configuration/images/blockly/blockly-play-audio.png similarity index 100% rename from configuration/images/blockly/blockly-play-audio.png rename to src/configuration/images/blockly/blockly-play-audio.png diff --git a/configuration/images/blockly/blockly-play-stream.png b/src/configuration/images/blockly/blockly-play-stream.png similarity index 100% rename from configuration/images/blockly/blockly-play-stream.png rename to src/configuration/images/blockly/blockly-play-stream.png diff --git a/configuration/images/blockly/blockly-plus-small.png b/src/configuration/images/blockly/blockly-plus-small.png similarity index 100% rename from configuration/images/blockly/blockly-plus-small.png rename to src/configuration/images/blockly/blockly-plus-small.png diff --git a/configuration/images/blockly/blockly-plus.png b/src/configuration/images/blockly/blockly-plus.png similarity index 100% rename from configuration/images/blockly/blockly-plus.png rename to src/configuration/images/blockly/blockly-plus.png diff --git a/configuration/images/blockly/blockly-print.png b/src/configuration/images/blockly/blockly-print.png similarity index 100% rename from configuration/images/blockly/blockly-print.png rename to src/configuration/images/blockly/blockly-print.png diff --git a/configuration/images/blockly/blockly-quantity-comparison-examples.png b/src/configuration/images/blockly/blockly-quantity-comparison-examples.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-comparison-examples.png rename to src/configuration/images/blockly/blockly-quantity-comparison-examples.png diff --git a/configuration/images/blockly/blockly-quantity-comparison-if.png b/src/configuration/images/blockly/blockly-quantity-comparison-if.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-comparison-if.png rename to src/configuration/images/blockly/blockly-quantity-comparison-if.png diff --git a/configuration/images/blockly/blockly-quantity-comparison.png b/src/configuration/images/blockly/blockly-quantity-comparison.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-comparison.png rename to src/configuration/images/blockly/blockly-quantity-comparison.png diff --git a/configuration/images/blockly/blockly-quantity-conversion-item.png b/src/configuration/images/blockly/blockly-quantity-conversion-item.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-conversion-item.png rename to src/configuration/images/blockly/blockly-quantity-conversion-item.png diff --git a/configuration/images/blockly/blockly-quantity-conversion.png b/src/configuration/images/blockly/blockly-quantity-conversion.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-conversion.png rename to src/configuration/images/blockly/blockly-quantity-conversion.png diff --git a/configuration/images/blockly/blockly-quantity-loop-var.png b/src/configuration/images/blockly/blockly-quantity-loop-var.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-loop-var.png rename to src/configuration/images/blockly/blockly-quantity-loop-var.png diff --git a/configuration/images/blockly/blockly-quantity-multiplication.png b/src/configuration/images/blockly/blockly-quantity-multiplication.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-multiplication.png rename to src/configuration/images/blockly/blockly-quantity-multiplication.png diff --git a/configuration/images/blockly/blockly-quantity-smart-computation.png b/src/configuration/images/blockly/blockly-quantity-smart-computation.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-smart-computation.png rename to src/configuration/images/blockly/blockly-quantity-smart-computation.png diff --git a/configuration/images/blockly/blockly-quantity-temp-item.png b/src/configuration/images/blockly/blockly-quantity-temp-item.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-temp-item.png rename to src/configuration/images/blockly/blockly-quantity-temp-item.png diff --git a/configuration/images/blockly/blockly-quantity-with-unit.png b/src/configuration/images/blockly/blockly-quantity-with-unit.png similarity index 100% rename from configuration/images/blockly/blockly-quantity-with-unit.png rename to src/configuration/images/blockly/blockly-quantity-with-unit.png diff --git a/configuration/images/blockly/blockly-quantity.png b/src/configuration/images/blockly/blockly-quantity.png similarity index 100% rename from configuration/images/blockly/blockly-quantity.png rename to src/configuration/images/blockly/blockly-quantity.png diff --git a/configuration/images/blockly/blockly-reschedule-timer-example1.png b/src/configuration/images/blockly/blockly-reschedule-timer-example1.png similarity index 100% rename from configuration/images/blockly/blockly-reschedule-timer-example1.png rename to src/configuration/images/blockly/blockly-reschedule-timer-example1.png diff --git a/configuration/images/blockly/blockly-reschedule-timer-example2.png b/src/configuration/images/blockly/blockly-reschedule-timer-example2.png similarity index 100% rename from configuration/images/blockly/blockly-reschedule-timer-example2.png rename to src/configuration/images/blockly/blockly-reschedule-timer-example2.png diff --git a/configuration/images/blockly/blockly-reschedule-timer.png b/src/configuration/images/blockly/blockly-reschedule-timer.png similarity index 100% rename from configuration/images/blockly/blockly-reschedule-timer.png rename to src/configuration/images/blockly/blockly-reschedule-timer.png diff --git a/configuration/images/blockly/blockly-retrieve-context-example.png b/src/configuration/images/blockly/blockly-retrieve-context-example.png similarity index 100% rename from configuration/images/blockly/blockly-retrieve-context-example.png rename to src/configuration/images/blockly/blockly-retrieve-context-example.png diff --git a/configuration/images/blockly/blockly-retrieve-context.png b/src/configuration/images/blockly/blockly-retrieve-context.png similarity index 100% rename from configuration/images/blockly/blockly-retrieve-context.png rename to src/configuration/images/blockly/blockly-retrieve-context.png diff --git a/configuration/images/blockly/blockly-retrieve-rule-context-info.png b/src/configuration/images/blockly/blockly-retrieve-rule-context-info.png similarity index 100% rename from configuration/images/blockly/blockly-retrieve-rule-context-info.png rename to src/configuration/images/blockly/blockly-retrieve-rule-context-info.png diff --git a/configuration/images/blockly/blockly-run-and-process-small.png b/src/configuration/images/blockly/blockly-run-and-process-small.png similarity index 100% rename from configuration/images/blockly/blockly-run-and-process-small.png rename to src/configuration/images/blockly/blockly-run-and-process-small.png diff --git a/configuration/images/blockly/blockly-run-and-process.png b/src/configuration/images/blockly/blockly-run-and-process.png similarity index 100% rename from configuration/images/blockly/blockly-run-and-process.png rename to src/configuration/images/blockly/blockly-run-and-process.png diff --git a/configuration/images/blockly/blockly-run-rule-uuid.png b/src/configuration/images/blockly/blockly-run-rule-uuid.png similarity index 100% rename from configuration/images/blockly/blockly-run-rule-uuid.png rename to src/configuration/images/blockly/blockly-run-rule-uuid.png diff --git a/configuration/images/blockly/blockly-run-rule.png b/src/configuration/images/blockly/blockly-run-rule.png similarity index 100% rename from configuration/images/blockly/blockly-run-rule.png rename to src/configuration/images/blockly/blockly-run-rule.png diff --git a/configuration/images/blockly/blockly-run-script-2.png b/src/configuration/images/blockly/blockly-run-script-2.png similarity index 100% rename from configuration/images/blockly/blockly-run-script-2.png rename to src/configuration/images/blockly/blockly-run-script-2.png diff --git a/configuration/images/blockly/blockly-run-script.png b/src/configuration/images/blockly/blockly-run-script.png similarity index 100% rename from configuration/images/blockly/blockly-run-script.png rename to src/configuration/images/blockly/blockly-run-script.png diff --git a/configuration/images/blockly/blockly-run-scriptfile.png b/src/configuration/images/blockly/blockly-run-scriptfile.png similarity index 100% rename from configuration/images/blockly/blockly-run-scriptfile.png rename to src/configuration/images/blockly/blockly-run-scriptfile.png diff --git a/configuration/images/blockly/blockly-say.png b/src/configuration/images/blockly/blockly-say.png similarity index 100% rename from configuration/images/blockly/blockly-say.png rename to src/configuration/images/blockly/blockly-say.png diff --git a/configuration/images/blockly/blockly-search.png b/src/configuration/images/blockly/blockly-search.png similarity index 100% rename from configuration/images/blockly/blockly-search.png rename to src/configuration/images/blockly/blockly-search.png diff --git a/configuration/images/blockly/blockly-sendCommand.png b/src/configuration/images/blockly/blockly-sendCommand.png similarity index 100% rename from configuration/images/blockly/blockly-sendCommand.png rename to src/configuration/images/blockly/blockly-sendCommand.png diff --git a/configuration/images/blockly/blockly-sendCommandExample1.png b/src/configuration/images/blockly/blockly-sendCommandExample1.png similarity index 100% rename from configuration/images/blockly/blockly-sendCommandExample1.png rename to src/configuration/images/blockly/blockly-sendCommandExample1.png diff --git a/configuration/images/blockly/blockly-sendCommandExample2.png b/src/configuration/images/blockly/blockly-sendCommandExample2.png similarity index 100% rename from configuration/images/blockly/blockly-sendCommandExample2.png rename to src/configuration/images/blockly/blockly-sendCommandExample2.png diff --git a/configuration/images/blockly/blockly-showcode.png b/src/configuration/images/blockly/blockly-showcode.png similarity index 100% rename from configuration/images/blockly/blockly-showcode.png rename to src/configuration/images/blockly/blockly-showcode.png diff --git a/configuration/images/blockly/blockly-simple-timer.png b/src/configuration/images/blockly/blockly-simple-timer.png similarity index 100% rename from configuration/images/blockly/blockly-simple-timer.png rename to src/configuration/images/blockly/blockly-simple-timer.png diff --git a/configuration/images/blockly/blockly-specialArrayHandling.png b/src/configuration/images/blockly/blockly-specialArrayHandling.png similarity index 100% rename from configuration/images/blockly/blockly-specialArrayHandling.png rename to src/configuration/images/blockly/blockly-specialArrayHandling.png diff --git a/configuration/images/blockly/blockly-stop-stream.png b/src/configuration/images/blockly/blockly-stop-stream.png similarity index 100% rename from configuration/images/blockly/blockly-stop-stream.png rename to src/configuration/images/blockly/blockly-stop-stream.png diff --git a/configuration/images/blockly/blockly-temporal1.png b/src/configuration/images/blockly/blockly-temporal1.png similarity index 100% rename from configuration/images/blockly/blockly-temporal1.png rename to src/configuration/images/blockly/blockly-temporal1.png diff --git a/configuration/images/blockly/blockly-temporal2.png b/src/configuration/images/blockly/blockly-temporal2.png similarity index 100% rename from configuration/images/blockly/blockly-temporal2.png rename to src/configuration/images/blockly/blockly-temporal2.png diff --git a/configuration/images/blockly/blockly-text-crlf-example.png b/src/configuration/images/blockly/blockly-text-crlf-example.png similarity index 100% rename from configuration/images/blockly/blockly-text-crlf-example.png rename to src/configuration/images/blockly/blockly-text-crlf-example.png diff --git a/configuration/images/blockly/blockly-text-overview-small.png b/src/configuration/images/blockly/blockly-text-overview-small.png similarity index 100% rename from configuration/images/blockly/blockly-text-overview-small.png rename to src/configuration/images/blockly/blockly-text-overview-small.png diff --git a/configuration/images/blockly/blockly-text-overview.png b/src/configuration/images/blockly/blockly-text-overview.png similarity index 100% rename from configuration/images/blockly/blockly-text-overview.png rename to src/configuration/images/blockly/blockly-text-overview.png diff --git a/configuration/images/blockly/blockly-text-replace-example.png b/src/configuration/images/blockly/blockly-text-replace-example.png similarity index 100% rename from configuration/images/blockly/blockly-text-replace-example.png rename to src/configuration/images/blockly/blockly-text-replace-example.png diff --git a/configuration/images/blockly/blockly-text-replace.png b/src/configuration/images/blockly/blockly-text-replace.png similarity index 100% rename from configuration/images/blockly/blockly-text-replace.png rename to src/configuration/images/blockly/blockly-text-replace.png diff --git a/configuration/images/blockly/blockly-thing-object.png b/src/configuration/images/blockly/blockly-thing-object.png similarity index 100% rename from configuration/images/blockly/blockly-thing-object.png rename to src/configuration/images/blockly/blockly-thing-object.png diff --git a/configuration/images/blockly/blockly-thing.png b/src/configuration/images/blockly/blockly-thing.png similarity index 100% rename from configuration/images/blockly/blockly-thing.png rename to src/configuration/images/blockly/blockly-thing.png diff --git a/configuration/images/blockly/blockly-thingExample.png b/src/configuration/images/blockly/blockly-thingExample.png similarity index 100% rename from configuration/images/blockly/blockly-thingExample.png rename to src/configuration/images/blockly/blockly-thingExample.png diff --git a/configuration/images/blockly/blockly-things-loop.png b/src/configuration/images/blockly/blockly-things-loop.png similarity index 100% rename from configuration/images/blockly/blockly-things-loop.png rename to src/configuration/images/blockly/blockly-things-loop.png diff --git a/configuration/images/blockly/blockly-timer-comprehensive.png b/src/configuration/images/blockly/blockly-timer-comprehensive.png similarity index 100% rename from configuration/images/blockly/blockly-timer-comprehensive.png rename to src/configuration/images/blockly/blockly-timer-comprehensive.png diff --git a/configuration/images/blockly/blockly-timer-context-examples.png b/src/configuration/images/blockly/blockly-timer-context-examples.png similarity index 100% rename from configuration/images/blockly/blockly-timer-context-examples.png rename to src/configuration/images/blockly/blockly-timer-context-examples.png diff --git a/configuration/images/blockly/blockly-timer-context-undefined.png b/src/configuration/images/blockly/blockly-timer-context-undefined.png similarity index 100% rename from configuration/images/blockly/blockly-timer-context-undefined.png rename to src/configuration/images/blockly/blockly-timer-context-undefined.png diff --git a/configuration/images/blockly/blockly-timer-context.png b/src/configuration/images/blockly/blockly-timer-context.png similarity index 100% rename from configuration/images/blockly/blockly-timer-context.png rename to src/configuration/images/blockly/blockly-timer-context.png diff --git a/configuration/images/blockly/blockly-timer-example-shared-1.png b/src/configuration/images/blockly/blockly-timer-example-shared-1.png similarity index 100% rename from configuration/images/blockly/blockly-timer-example-shared-1.png rename to src/configuration/images/blockly/blockly-timer-example-shared-1.png diff --git a/configuration/images/blockly/blockly-timer-is-active.png b/src/configuration/images/blockly/blockly-timer-is-active.png similarity index 100% rename from configuration/images/blockly/blockly-timer-is-active.png rename to src/configuration/images/blockly/blockly-timer-is-active.png diff --git a/configuration/images/blockly/blockly-timer-is-running.png b/src/configuration/images/blockly/blockly-timer-is-running.png similarity index 100% rename from configuration/images/blockly/blockly-timer-is-running.png rename to src/configuration/images/blockly/blockly-timer-is-running.png diff --git a/configuration/images/blockly/blockly-timer-shared-cancel.png b/src/configuration/images/blockly/blockly-timer-shared-cancel.png similarity index 100% rename from configuration/images/blockly/blockly-timer-shared-cancel.png rename to src/configuration/images/blockly/blockly-timer-shared-cancel.png diff --git a/configuration/images/blockly/blockly-timer-shared.png b/src/configuration/images/blockly/blockly-timer-shared.png similarity index 100% rename from configuration/images/blockly/blockly-timer-shared.png rename to src/configuration/images/blockly/blockly-timer-shared.png diff --git a/configuration/images/blockly/blockly-timer-terminated.png b/src/configuration/images/blockly/blockly-timer-terminated.png similarity index 100% rename from configuration/images/blockly/blockly-timer-terminated.png rename to src/configuration/images/blockly/blockly-timer-terminated.png diff --git a/configuration/images/blockly/blockly-timers-and-delays-small.png b/src/configuration/images/blockly/blockly-timers-and-delays-small.png similarity index 100% rename from configuration/images/blockly/blockly-timers-and-delays-small.png rename to src/configuration/images/blockly/blockly-timers-and-delays-small.png diff --git a/configuration/images/blockly/blockly-timers-overview.png b/src/configuration/images/blockly/blockly-timers-overview.png similarity index 100% rename from configuration/images/blockly/blockly-timers-overview.png rename to src/configuration/images/blockly/blockly-timers-overview.png diff --git a/configuration/images/blockly/blockly-toolbox-1.png b/src/configuration/images/blockly/blockly-toolbox-1.png similarity index 100% rename from configuration/images/blockly/blockly-toolbox-1.png rename to src/configuration/images/blockly/blockly-toolbox-1.png diff --git a/configuration/images/blockly/blockly-toolbox-2.png b/src/configuration/images/blockly/blockly-toolbox-2.png similarity index 100% rename from configuration/images/blockly/blockly-toolbox-2.png rename to src/configuration/images/blockly/blockly-toolbox-2.png diff --git a/configuration/images/blockly/blockly-toolbox-3.png b/src/configuration/images/blockly/blockly-toolbox-3.png similarity index 100% rename from configuration/images/blockly/blockly-toolbox-3.png rename to src/configuration/images/blockly/blockly-toolbox-3.png diff --git a/configuration/images/blockly/blockly-toolbox.png b/src/configuration/images/blockly/blockly-toolbox.png similarity index 100% rename from configuration/images/blockly/blockly-toolbox.png rename to src/configuration/images/blockly/blockly-toolbox.png diff --git a/configuration/images/blockly/blockly-transform-example1.png b/src/configuration/images/blockly/blockly-transform-example1.png similarity index 100% rename from configuration/images/blockly/blockly-transform-example1.png rename to src/configuration/images/blockly/blockly-transform-example1.png diff --git a/configuration/images/blockly/blockly-transform-example2.png b/src/configuration/images/blockly/blockly-transform-example2.png similarity index 100% rename from configuration/images/blockly/blockly-transform-example2.png rename to src/configuration/images/blockly/blockly-transform-example2.png diff --git a/configuration/images/blockly/blockly-transform-example3.png b/src/configuration/images/blockly/blockly-transform-example3.png similarity index 100% rename from configuration/images/blockly/blockly-transform-example3.png rename to src/configuration/images/blockly/blockly-transform-example3.png diff --git a/configuration/images/blockly/blockly-transform-jsonpath.png b/src/configuration/images/blockly/blockly-transform-jsonpath.png similarity index 100% rename from configuration/images/blockly/blockly-transform-jsonpath.png rename to src/configuration/images/blockly/blockly-transform-jsonpath.png diff --git a/configuration/images/blockly/blockly-transform-map.png b/src/configuration/images/blockly/blockly-transform-map.png similarity index 100% rename from configuration/images/blockly/blockly-transform-map.png rename to src/configuration/images/blockly/blockly-transform-map.png diff --git a/configuration/images/blockly/blockly-transform-regex.png b/src/configuration/images/blockly/blockly-transform-regex.png similarity index 100% rename from configuration/images/blockly/blockly-transform-regex.png rename to src/configuration/images/blockly/blockly-transform-regex.png diff --git a/configuration/images/blockly/blockly-uom-example.png b/src/configuration/images/blockly/blockly-uom-example.png similarity index 100% rename from configuration/images/blockly/blockly-uom-example.png rename to src/configuration/images/blockly/blockly-uom-example.png diff --git a/configuration/images/blockly/blockly-uom-small.png b/src/configuration/images/blockly/blockly-uom-small.png similarity index 100% rename from configuration/images/blockly/blockly-uom-small.png rename to src/configuration/images/blockly/blockly-uom-small.png diff --git a/configuration/images/blockly/blockly-uom.png b/src/configuration/images/blockly/blockly-uom.png similarity index 100% rename from configuration/images/blockly/blockly-uom.png rename to src/configuration/images/blockly/blockly-uom.png diff --git a/configuration/images/blockly/blockly-value-example1.png b/src/configuration/images/blockly/blockly-value-example1.png similarity index 100% rename from configuration/images/blockly/blockly-value-example1.png rename to src/configuration/images/blockly/blockly-value-example1.png diff --git a/configuration/images/blockly/blockly-value-example2.png b/src/configuration/images/blockly/blockly-value-example2.png similarity index 100% rename from configuration/images/blockly/blockly-value-example2.png rename to src/configuration/images/blockly/blockly-value-example2.png diff --git a/configuration/images/blockly/blockly-value-get-cache.png b/src/configuration/images/blockly/blockly-value-get-cache.png similarity index 100% rename from configuration/images/blockly/blockly-value-get-cache.png rename to src/configuration/images/blockly/blockly-value-get-cache.png diff --git a/configuration/images/blockly/blockly-value-get.png b/src/configuration/images/blockly/blockly-value-get.png similarity index 100% rename from configuration/images/blockly/blockly-value-get.png rename to src/configuration/images/blockly/blockly-value-get.png diff --git a/configuration/images/blockly/blockly-value-is-defined-cache.png b/src/configuration/images/blockly/blockly-value-is-defined-cache.png similarity index 100% rename from configuration/images/blockly/blockly-value-is-defined-cache.png rename to src/configuration/images/blockly/blockly-value-is-defined-cache.png diff --git a/configuration/images/blockly/blockly-value-is-defined.png b/src/configuration/images/blockly/blockly-value-is-defined.png similarity index 100% rename from configuration/images/blockly/blockly-value-is-defined.png rename to src/configuration/images/blockly/blockly-value-is-defined.png diff --git a/configuration/images/blockly/blockly-value-storage-cache.png b/src/configuration/images/blockly/blockly-value-storage-cache.png similarity index 100% rename from configuration/images/blockly/blockly-value-storage-cache.png rename to src/configuration/images/blockly/blockly-value-storage-cache.png diff --git a/configuration/images/blockly/blockly-value-storage-small.png b/src/configuration/images/blockly/blockly-value-storage-small.png similarity index 100% rename from configuration/images/blockly/blockly-value-storage-small.png rename to src/configuration/images/blockly/blockly-value-storage-small.png diff --git a/configuration/images/blockly/blockly-value-storage.png b/src/configuration/images/blockly/blockly-value-storage.png similarity index 100% rename from configuration/images/blockly/blockly-value-storage.png rename to src/configuration/images/blockly/blockly-value-storage.png diff --git a/configuration/images/blockly/blockly-value-store-cache.png b/src/configuration/images/blockly/blockly-value-store-cache.png similarity index 100% rename from configuration/images/blockly/blockly-value-store-cache.png rename to src/configuration/images/blockly/blockly-value-store-cache.png diff --git a/configuration/images/blockly/blockly-value-store.png b/src/configuration/images/blockly/blockly-value-store.png similarity index 100% rename from configuration/images/blockly/blockly-value-store.png rename to src/configuration/images/blockly/blockly-value-store.png diff --git a/configuration/images/blockly/blockly-voice-and-multimedia-small.png b/src/configuration/images/blockly/blockly-voice-and-multimedia-small.png similarity index 100% rename from configuration/images/blockly/blockly-voice-and-multimedia-small.png rename to src/configuration/images/blockly/blockly-voice-and-multimedia-small.png diff --git a/configuration/images/blockly/blockly-voice-and-multimedia.png b/src/configuration/images/blockly/blockly-voice-and-multimedia.png similarity index 100% rename from configuration/images/blockly/blockly-voice-and-multimedia.png rename to src/configuration/images/blockly/blockly-voice-and-multimedia.png diff --git a/configuration/images/blockly/blockly-waitfor-example.png b/src/configuration/images/blockly/blockly-waitfor-example.png similarity index 100% rename from configuration/images/blockly/blockly-waitfor-example.png rename to src/configuration/images/blockly/blockly-waitfor-example.png diff --git a/configuration/images/blockly/blockly-waitfor.png b/src/configuration/images/blockly/blockly-waitfor.png similarity index 100% rename from configuration/images/blockly/blockly-waitfor.png rename to src/configuration/images/blockly/blockly-waitfor.png diff --git a/configuration/images/blockly/blockly-workspace-showblocks-small.png b/src/configuration/images/blockly/blockly-workspace-showblocks-small.png similarity index 100% rename from configuration/images/blockly/blockly-workspace-showblocks-small.png rename to src/configuration/images/blockly/blockly-workspace-showblocks-small.png diff --git a/configuration/images/blockly/blockly-workspace-showblocks.png b/src/configuration/images/blockly/blockly-workspace-showblocks.png similarity index 100% rename from configuration/images/blockly/blockly-workspace-showblocks.png rename to src/configuration/images/blockly/blockly-workspace-showblocks.png diff --git a/configuration/images/blockly/blockly-workspace-showcode-small.png b/src/configuration/images/blockly/blockly-workspace-showcode-small.png similarity index 100% rename from configuration/images/blockly/blockly-workspace-showcode-small.png rename to src/configuration/images/blockly/blockly-workspace-showcode-small.png diff --git a/configuration/images/blockly/blockly-workspace-showcode.png b/src/configuration/images/blockly/blockly-workspace-showcode.png similarity index 100% rename from configuration/images/blockly/blockly-workspace-showcode.png rename to src/configuration/images/blockly/blockly-workspace-showcode.png diff --git a/configuration/images/blockly/blockly-zoom.png b/src/configuration/images/blockly/blockly-zoom.png similarity index 100% rename from configuration/images/blockly/blockly-zoom.png rename to src/configuration/images/blockly/blockly-zoom.png diff --git a/configuration/images/blockly/blockly_typed_variables1.png b/src/configuration/images/blockly/blockly_typed_variables1.png similarity index 100% rename from configuration/images/blockly/blockly_typed_variables1.png rename to src/configuration/images/blockly/blockly_typed_variables1.png diff --git a/configuration/images/blockly/blockly_typed_variables2.png b/src/configuration/images/blockly/blockly_typed_variables2.png similarity index 100% rename from configuration/images/blockly/blockly_typed_variables2.png rename to src/configuration/images/blockly/blockly_typed_variables2.png diff --git a/configuration/images/blockly/blockly_typed_variables3.png b/src/configuration/images/blockly/blockly_typed_variables3.png similarity index 100% rename from configuration/images/blockly/blockly_typed_variables3.png rename to src/configuration/images/blockly/blockly_typed_variables3.png diff --git a/configuration/images/blockly/blockly_typed_variables_examples.png b/src/configuration/images/blockly/blockly_typed_variables_examples.png similarity index 100% rename from configuration/images/blockly/blockly_typed_variables_examples.png rename to src/configuration/images/blockly/blockly_typed_variables_examples.png diff --git a/configuration/images/blockly/blocky-choose-javascript.png b/src/configuration/images/blockly/blocky-choose-javascript.png similarity index 100% rename from configuration/images/blockly/blocky-choose-javascript.png rename to src/configuration/images/blockly/blocky-choose-javascript.png diff --git a/configuration/images/blockly/built-with-blockly-badge-white-small.svg b/src/configuration/images/blockly/built-with-blockly-badge-white-small.svg similarity index 100% rename from configuration/images/blockly/built-with-blockly-badge-white-small.svg rename to src/configuration/images/blockly/built-with-blockly-badge-white-small.svg diff --git a/configuration/images/blockly/built-with-blockly-badge-white.svg b/src/configuration/images/blockly/built-with-blockly-badge-white.svg similarity index 100% rename from configuration/images/blockly/built-with-blockly-badge-white.svg rename to src/configuration/images/blockly/built-with-blockly-badge-white.svg diff --git a/configuration/images/blockly/uom_block_smart_input.png b/src/configuration/images/blockly/uom_block_smart_input.png similarity index 100% rename from configuration/images/blockly/uom_block_smart_input.png rename to src/configuration/images/blockly/uom_block_smart_input.png diff --git a/configuration/images/blockly/youtube-logo-small.png b/src/configuration/images/blockly/youtube-logo-small.png similarity index 100% rename from configuration/images/blockly/youtube-logo-small.png rename to src/configuration/images/blockly/youtube-logo-small.png diff --git a/configuration/images/blockly/youtube-logo.png b/src/configuration/images/blockly/youtube-logo.png similarity index 100% rename from configuration/images/blockly/youtube-logo.png rename to src/configuration/images/blockly/youtube-logo.png diff --git a/configuration/images/eclipseiotmarket_addons.png b/src/configuration/images/eclipseiotmarket_addons.png similarity index 100% rename from configuration/images/eclipseiotmarket_addons.png rename to src/configuration/images/eclipseiotmarket_addons.png diff --git a/configuration/images/eclipseiotmarket_configuration.png b/src/configuration/images/eclipseiotmarket_configuration.png similarity index 100% rename from configuration/images/eclipseiotmarket_configuration.png rename to src/configuration/images/eclipseiotmarket_configuration.png diff --git a/configuration/images/eclipseiotmarket_listings.png b/src/configuration/images/eclipseiotmarket_listings.png similarity index 100% rename from configuration/images/eclipseiotmarket_listings.png rename to src/configuration/images/eclipseiotmarket_listings.png diff --git a/configuration/images/package_demo.jpg b/src/configuration/images/package_demo.jpg similarity index 100% rename from configuration/images/package_demo.jpg rename to src/configuration/images/package_demo.jpg diff --git a/configuration/images/package_expert.jpg b/src/configuration/images/package_expert.jpg similarity index 100% rename from configuration/images/package_expert.jpg rename to src/configuration/images/package_expert.jpg diff --git a/configuration/images/package_simple.jpg b/src/configuration/images/package_simple.jpg similarity index 100% rename from configuration/images/package_simple.jpg rename to src/configuration/images/package_simple.jpg diff --git a/configuration/images/package_standard.jpg b/src/configuration/images/package_standard.jpg similarity index 100% rename from configuration/images/package_standard.jpg rename to src/configuration/images/package_standard.jpg diff --git a/configuration/images/paperui1.png b/src/configuration/images/paperui1.png similarity index 100% rename from configuration/images/paperui1.png rename to src/configuration/images/paperui1.png diff --git a/configuration/images/paperui2.png b/src/configuration/images/paperui2.png similarity index 100% rename from configuration/images/paperui2.png rename to src/configuration/images/paperui2.png diff --git a/configuration/images/paperui3.png b/src/configuration/images/paperui3.png similarity index 100% rename from configuration/images/paperui3.png rename to src/configuration/images/paperui3.png diff --git a/configuration/images/riemann-left.svg b/src/configuration/images/riemann-left.svg similarity index 100% rename from configuration/images/riemann-left.svg rename to src/configuration/images/riemann-left.svg diff --git a/configuration/images/riemann-midpoint.svg b/src/configuration/images/riemann-midpoint.svg similarity index 100% rename from configuration/images/riemann-midpoint.svg rename to src/configuration/images/riemann-midpoint.svg diff --git a/configuration/images/riemann-right.svg b/src/configuration/images/riemann-right.svg similarity index 100% rename from configuration/images/riemann-right.svg rename to src/configuration/images/riemann-right.svg diff --git a/configuration/images/riemann-trapezoidal.svg b/src/configuration/images/riemann-trapezoidal.svg similarity index 100% rename from configuration/images/riemann-trapezoidal.svg rename to src/configuration/images/riemann-trapezoidal.svg diff --git a/configuration/images/rule-play-audio.png b/src/configuration/images/rule-play-audio.png similarity index 100% rename from configuration/images/rule-play-audio.png rename to src/configuration/images/rule-play-audio.png diff --git a/configuration/images/ruleengine.png b/src/configuration/images/ruleengine.png similarity index 100% rename from configuration/images/ruleengine.png rename to src/configuration/images/ruleengine.png diff --git a/configuration/images/smarthome-designer-05.png b/src/configuration/images/smarthome-designer-05.png similarity index 100% rename from configuration/images/smarthome-designer-05.png rename to src/configuration/images/smarthome-designer-05.png diff --git a/configuration/images/smarthome-designer-10.png b/src/configuration/images/smarthome-designer-10.png similarity index 100% rename from configuration/images/smarthome-designer-10.png rename to src/configuration/images/smarthome-designer-10.png diff --git a/configuration/images/smarthome-designer-15.png b/src/configuration/images/smarthome-designer-15.png similarity index 100% rename from configuration/images/smarthome-designer-15.png rename to src/configuration/images/smarthome-designer-15.png diff --git a/configuration/images/smarthome-designer-20.png b/src/configuration/images/smarthome-designer-20.png similarity index 100% rename from configuration/images/smarthome-designer-20.png rename to src/configuration/images/smarthome-designer-20.png diff --git a/configuration/images/suggestions.png b/src/configuration/images/suggestions.png similarity index 100% rename from configuration/images/suggestions.png rename to src/configuration/images/suggestions.png diff --git a/configuration/images/ui_rules_dsl_test_example.png b/src/configuration/images/ui_rules_dsl_test_example.png similarity index 100% rename from configuration/images/ui_rules_dsl_test_example.png rename to src/configuration/images/ui_rules_dsl_test_example.png diff --git a/configuration/images/ui_rules_dsl_test_example_action.png b/src/configuration/images/ui_rules_dsl_test_example_action.png similarity index 100% rename from configuration/images/ui_rules_dsl_test_example_action.png rename to src/configuration/images/ui_rules_dsl_test_example_action.png diff --git a/configuration/images/ui_rules_dsl_test_example_dsl.png b/src/configuration/images/ui_rules_dsl_test_example_dsl.png similarity index 100% rename from configuration/images/ui_rules_dsl_test_example_dsl.png rename to src/configuration/images/ui_rules_dsl_test_example_dsl.png diff --git a/configuration/images/vscode_demo.gif b/src/configuration/images/vscode_demo.gif similarity index 100% rename from configuration/images/vscode_demo.gif rename to src/configuration/images/vscode_demo.gif diff --git a/configuration/images/vscode_extensiontab_icon.png b/src/configuration/images/vscode_extensiontab_icon.png similarity index 100% rename from configuration/images/vscode_extensiontab_icon.png rename to src/configuration/images/vscode_extensiontab_icon.png diff --git a/configuration/index.md b/src/configuration/index.md similarity index 100% rename from configuration/index.md rename to src/configuration/index.md diff --git a/configuration/items.md b/src/configuration/items.md similarity index 100% rename from configuration/items.md rename to src/configuration/items.md diff --git a/configuration/jsr223.md b/src/configuration/jsr223.md similarity index 100% rename from configuration/jsr223.md rename to src/configuration/jsr223.md diff --git a/configuration/migration/index.md b/src/configuration/migration/index.md similarity index 100% rename from configuration/migration/index.md rename to src/configuration/migration/index.md diff --git a/configuration/multimedia.md b/src/configuration/multimedia.md similarity index 100% rename from configuration/multimedia.md rename to src/configuration/multimedia.md diff --git a/configuration/persistence.md b/src/configuration/persistence.md similarity index 100% rename from configuration/persistence.md rename to src/configuration/persistence.md diff --git a/configuration/restdocs.md b/src/configuration/restdocs.md similarity index 100% rename from configuration/restdocs.md rename to src/configuration/restdocs.md diff --git a/configuration/rules-dsl.md b/src/configuration/rules-dsl.md similarity index 100% rename from configuration/rules-dsl.md rename to src/configuration/rules-dsl.md diff --git a/configuration/services.md b/src/configuration/services.md similarity index 100% rename from configuration/services.md rename to src/configuration/services.md diff --git a/configuration/things.md b/src/configuration/things.md similarity index 100% rename from configuration/things.md rename to src/configuration/things.md diff --git a/configuration/transformations.md b/src/configuration/transformations.md similarity index 100% rename from configuration/transformations.md rename to src/configuration/transformations.md diff --git a/configuration/websocket.md b/src/configuration/websocket.md similarity index 100% rename from configuration/websocket.md rename to src/configuration/websocket.md diff --git a/configuration/yaml/index.md b/src/configuration/yaml/index.md similarity index 100% rename from configuration/yaml/index.md rename to src/configuration/yaml/index.md diff --git a/configuration/yaml/items.md b/src/configuration/yaml/items.md similarity index 100% rename from configuration/yaml/items.md rename to src/configuration/yaml/items.md diff --git a/configuration/yaml/pages.md b/src/configuration/yaml/pages.md similarity index 100% rename from configuration/yaml/pages.md rename to src/configuration/yaml/pages.md diff --git a/configuration/yaml/tags.md b/src/configuration/yaml/tags.md similarity index 100% rename from configuration/yaml/tags.md rename to src/configuration/yaml/tags.md diff --git a/configuration/yaml/things.md b/src/configuration/yaml/things.md similarity index 100% rename from configuration/yaml/things.md rename to src/configuration/yaml/things.md diff --git a/configuration/yaml/widgets.md b/src/configuration/yaml/widgets.md similarity index 100% rename from configuration/yaml/widgets.md rename to src/configuration/yaml/widgets.md diff --git a/developers/addons/addon.md b/src/developer/addons/addon.md similarity index 100% rename from developers/addons/addon.md rename to src/developer/addons/addon.md diff --git a/developers/addons/config-xml.md b/src/developer/addons/config-xml.md similarity index 100% rename from developers/addons/config-xml.md rename to src/developer/addons/config-xml.md diff --git a/developers/addons/faq.md b/src/developer/addons/faq.md similarity index 100% rename from developers/addons/faq.md rename to src/developer/addons/faq.md diff --git a/developers/addons/index.md b/src/developer/addons/index.md similarity index 100% rename from developers/addons/index.md rename to src/developer/addons/index.md diff --git a/developers/audio/index.md b/src/developer/audio/index.md similarity index 100% rename from developers/audio/index.md rename to src/developer/audio/index.md diff --git a/developers/bindings/images/concept.drawio b/src/developer/bindings/images/concept.drawio similarity index 100% rename from developers/bindings/images/concept.drawio rename to src/developer/bindings/images/concept.drawio diff --git a/developers/bindings/images/concept.png b/src/developer/bindings/images/concept.png similarity index 100% rename from developers/bindings/images/concept.png rename to src/developer/bindings/images/concept.png diff --git a/developers/bindings/images/thing_life_cycle_shutdown.png b/src/developer/bindings/images/thing_life_cycle_shutdown.png similarity index 100% rename from developers/bindings/images/thing_life_cycle_shutdown.png rename to src/developer/bindings/images/thing_life_cycle_shutdown.png diff --git a/developers/bindings/images/thing_life_cycle_startup.png b/src/developer/bindings/images/thing_life_cycle_startup.png similarity index 100% rename from developers/bindings/images/thing_life_cycle_startup.png rename to src/developer/bindings/images/thing_life_cycle_startup.png diff --git a/developers/bindings/images/things.png b/src/developer/bindings/images/things.png similarity index 100% rename from developers/bindings/images/things.png rename to src/developer/bindings/images/things.png diff --git a/developers/bindings/index.md b/src/developer/bindings/index.md similarity index 100% rename from developers/bindings/index.md rename to src/developer/bindings/index.md diff --git a/developers/bindings/semantic-tags.md b/src/developer/bindings/semantic-tags.md similarity index 100% rename from developers/bindings/semantic-tags.md rename to src/developer/bindings/semantic-tags.md diff --git a/developers/bindings/thing-xml.md b/src/developer/bindings/thing-xml.md similarity index 100% rename from developers/bindings/thing-xml.md rename to src/developer/bindings/thing-xml.md diff --git a/developers/buildsystem.md b/src/developer/buildsystem.md similarity index 100% rename from developers/buildsystem.md rename to src/developer/buildsystem.md diff --git a/developers/contributing.md b/src/developer/contributing.md similarity index 100% rename from developers/contributing.md rename to src/developer/contributing.md diff --git a/developers/governance.md b/src/developer/governance.md similarity index 100% rename from developers/governance.md rename to src/developer/governance.md diff --git a/developers/guidelines.md b/src/developer/guidelines.md similarity index 100% rename from developers/guidelines.md rename to src/developer/guidelines.md diff --git a/developers/ide/eclipse.md b/src/developer/ide/eclipse.md similarity index 100% rename from developers/ide/eclipse.md rename to src/developer/ide/eclipse.md diff --git a/developers/ide/examples/vscode/launch.json b/src/developer/ide/examples/vscode/launch.json similarity index 100% rename from developers/ide/examples/vscode/launch.json rename to src/developer/ide/examples/vscode/launch.json diff --git a/developers/ide/examples/vscode/settings.json b/src/developer/ide/examples/vscode/settings.json similarity index 100% rename from developers/ide/examples/vscode/settings.json rename to src/developer/ide/examples/vscode/settings.json diff --git a/developers/ide/examples/vscode/tasks.json b/src/developer/ide/examples/vscode/tasks.json similarity index 100% rename from developers/ide/examples/vscode/tasks.json rename to src/developer/ide/examples/vscode/tasks.json diff --git a/developers/ide/generic.md b/src/developer/ide/generic.md similarity index 100% rename from developers/ide/generic.md rename to src/developer/ide/generic.md diff --git a/developers/ide/images/eclipse.jpg b/src/developer/ide/images/eclipse.jpg similarity index 100% rename from developers/ide/images/eclipse.jpg rename to src/developer/ide/images/eclipse.jpg diff --git a/developers/ide/images/generic_ide.pdn b/src/developer/ide/images/generic_ide.pdn similarity index 100% rename from developers/ide/images/generic_ide.pdn rename to src/developer/ide/images/generic_ide.pdn diff --git a/developers/ide/images/generic_ide.png b/src/developer/ide/images/generic_ide.png similarity index 100% rename from developers/ide/images/generic_ide.png rename to src/developer/ide/images/generic_ide.png diff --git a/developers/ide/images/ide_debug_eclipse_1_bndtools.png b/src/developer/ide/images/ide_debug_eclipse_1_bndtools.png similarity index 100% rename from developers/ide/images/ide_debug_eclipse_1_bndtools.png rename to src/developer/ide/images/ide_debug_eclipse_1_bndtools.png diff --git a/developers/ide/images/ide_debug_eclipse_2_appbndrun.png b/src/developer/ide/images/ide_debug_eclipse_2_appbndrun.png similarity index 100% rename from developers/ide/images/ide_debug_eclipse_2_appbndrun.png rename to src/developer/ide/images/ide_debug_eclipse_2_appbndrun.png diff --git a/developers/ide/images/ide_debug_eclipse_3_remote.png b/src/developer/ide/images/ide_debug_eclipse_3_remote.png similarity index 100% rename from developers/ide/images/ide_debug_eclipse_3_remote.png rename to src/developer/ide/images/ide_debug_eclipse_3_remote.png diff --git a/developers/ide/images/ide_eclipse_debug_animation.gif b/src/developer/ide/images/ide_eclipse_debug_animation.gif similarity index 100% rename from developers/ide/images/ide_eclipse_debug_animation.gif rename to src/developer/ide/images/ide_eclipse_debug_animation.gif diff --git a/developers/ide/images/ide_setup_eclipse_1_installer.png b/src/developer/ide/images/ide_setup_eclipse_1_installer.png similarity index 100% rename from developers/ide/images/ide_setup_eclipse_1_installer.png rename to src/developer/ide/images/ide_setup_eclipse_1_installer.png diff --git a/developers/ide/images/ide_setup_eclipse_2_advanced.png b/src/developer/ide/images/ide_setup_eclipse_2_advanced.png similarity index 100% rename from developers/ide/images/ide_setup_eclipse_2_advanced.png rename to src/developer/ide/images/ide_setup_eclipse_2_advanced.png diff --git a/developers/ide/images/ide_setup_eclipse_3_select_ide.png b/src/developer/ide/images/ide_setup_eclipse_3_select_ide.png similarity index 100% rename from developers/ide/images/ide_setup_eclipse_3_select_ide.png rename to src/developer/ide/images/ide_setup_eclipse_3_select_ide.png diff --git a/developers/ide/images/ide_setup_eclipse_4_openhab.png b/src/developer/ide/images/ide_setup_eclipse_4_openhab.png similarity index 100% rename from developers/ide/images/ide_setup_eclipse_4_openhab.png rename to src/developer/ide/images/ide_setup_eclipse_4_openhab.png diff --git a/developers/ide/images/ide_setup_eclipse_5_variables.png b/src/developer/ide/images/ide_setup_eclipse_5_variables.png similarity index 100% rename from developers/ide/images/ide_setup_eclipse_5_variables.png rename to src/developer/ide/images/ide_setup_eclipse_5_variables.png diff --git a/developers/ide/images/ide_setup_eclipse_6_tasks_finished.png b/src/developer/ide/images/ide_setup_eclipse_6_tasks_finished.png similarity index 100% rename from developers/ide/images/ide_setup_eclipse_6_tasks_finished.png rename to src/developer/ide/images/ide_setup_eclipse_6_tasks_finished.png diff --git a/developers/ide/images/ide_setup_intellij_debug.png b/src/developer/ide/images/ide_setup_intellij_debug.png similarity index 100% rename from developers/ide/images/ide_setup_intellij_debug.png rename to src/developer/ide/images/ide_setup_intellij_debug.png diff --git a/developers/ide/images/ide_setup_intellij_debug_attach.png b/src/developer/ide/images/ide_setup_intellij_debug_attach.png similarity index 100% rename from developers/ide/images/ide_setup_intellij_debug_attach.png rename to src/developer/ide/images/ide_setup_intellij_debug_attach.png diff --git a/developers/ide/images/ide_setup_intellij_debug_configuration.png b/src/developer/ide/images/ide_setup_intellij_debug_configuration.png similarity index 100% rename from developers/ide/images/ide_setup_intellij_debug_configuration.png rename to src/developer/ide/images/ide_setup_intellij_debug_configuration.png diff --git a/developers/ide/images/ide_setup_intellij_import_module.png b/src/developer/ide/images/ide_setup_intellij_import_module.png similarity index 100% rename from developers/ide/images/ide_setup_intellij_import_module.png rename to src/developer/ide/images/ide_setup_intellij_import_module.png diff --git a/developers/ide/images/ide_setup_vscode_folder.png b/src/developer/ide/images/ide_setup_vscode_folder.png similarity index 100% rename from developers/ide/images/ide_setup_vscode_folder.png rename to src/developer/ide/images/ide_setup_vscode_folder.png diff --git a/developers/ide/images/ide_setup_vscode_folder_launch.png b/src/developer/ide/images/ide_setup_vscode_folder_launch.png similarity index 100% rename from developers/ide/images/ide_setup_vscode_folder_launch.png rename to src/developer/ide/images/ide_setup_vscode_folder_launch.png diff --git a/developers/ide/images/ide_setup_vscode_folder_tasks.png b/src/developer/ide/images/ide_setup_vscode_folder_tasks.png similarity index 100% rename from developers/ide/images/ide_setup_vscode_folder_tasks.png rename to src/developer/ide/images/ide_setup_vscode_folder_tasks.png diff --git a/developers/ide/images/ide_setup_vscode_launch.png b/src/developer/ide/images/ide_setup_vscode_launch.png similarity index 100% rename from developers/ide/images/ide_setup_vscode_launch.png rename to src/developer/ide/images/ide_setup_vscode_launch.png diff --git a/developers/ide/images/ide_setup_vscode_settings.png b/src/developer/ide/images/ide_setup_vscode_settings.png similarity index 100% rename from developers/ide/images/ide_setup_vscode_settings.png rename to src/developer/ide/images/ide_setup_vscode_settings.png diff --git a/developers/ide/images/ide_setup_vscode_tasks.png b/src/developer/ide/images/ide_setup_vscode_tasks.png similarity index 100% rename from developers/ide/images/ide_setup_vscode_tasks.png rename to src/developer/ide/images/ide_setup_vscode_tasks.png diff --git a/developers/ide/images/intellij.jpg b/src/developer/ide/images/intellij.jpg similarity index 100% rename from developers/ide/images/intellij.jpg rename to src/developer/ide/images/intellij.jpg diff --git a/developers/ide/images/vscode.jpg b/src/developer/ide/images/vscode.jpg similarity index 100% rename from developers/ide/images/vscode.jpg rename to src/developer/ide/images/vscode.jpg diff --git a/developers/ide/intellij.md b/src/developer/ide/intellij.md similarity index 100% rename from developers/ide/intellij.md rename to src/developer/ide/intellij.md diff --git a/developers/ide/karaf.md b/src/developer/ide/karaf.md similarity index 100% rename from developers/ide/karaf.md rename to src/developer/ide/karaf.md diff --git a/developers/ide/vscode.md b/src/developer/ide/vscode.md similarity index 93% rename from developers/ide/vscode.md rename to src/developer/ide/vscode.md index 9cb558b040..347d3e6f4f 100644 --- a/developers/ide/vscode.md +++ b/src/developer/ide/vscode.md @@ -29,7 +29,7 @@ The following steps will only need to be done once to setup both VSCode and your Either globally define the formatting options via ```Files->Preferences->Settings->Extensions->Java configuration``` (or in the global ```settings.json```). You can also define them local to a specific bundle by putting those lines in the ```.vscode/settings.json``` file in the bundle (similar to ```tasks.json```/```launch.json``` below). - Download [settings.json](https://raw.githubusercontent.com/openhab/openhab-docs/main/developers/ide/examples/vscode/settings.json) for the recommended settings (or simply wish to copy the URLs in the above image). + Download [settings.json](https://raw.githubusercontent.com/openhab/openhab-docs/main/src/developer/ide/examples/vscode/settings.json) for the recommended settings (or simply wish to copy the URLs in the above image). ## Steps for each Bundle @@ -47,7 +47,7 @@ The following steps will show you how to setup a specific bundle for development ![define .vscode](images/ide_setup_vscode_folder.png) -1. Download [tasks.json](https://raw.githubusercontent.com/openhab/openhab-docs/main/developers/ide/examples/vscode/tasks.json) to the .vscode directory (example: `%BASE%/openhab-addons/bundles/org.openhab.binding.russound/.vscode/tasks.json`) +1. Download [tasks.json](https://raw.githubusercontent.com/openhab/openhab-docs/main/src/developer/ide/examples/vscode/tasks.json) to the .vscode directory (example: `%BASE%/openhab-addons/bundles/org.openhab.binding.russound/.vscode/tasks.json`) ![define tasks.json](./images/ide_setup_vscode_folder_tasks.png) @@ -64,7 +64,7 @@ The following steps will show you how to setup a specific bundle for development 1. Start the openHAB instance with the debug option - `start.bat debug` from a console in the openHAB home directory. You should see the following line printed somewhere in the karaf console: `Listening for transport dt_socket at address: xxxx` (where xxxx should be 5005) -1. Download [launch.json](https://raw.githubusercontent.com/openhab/openhab-docs/main/developers/ide/examples/vscode/launch.json) to the .vscode directory (example: `%BASE%/openhab-addons/bundles/org.openhab.binding.russound/.vscode/launch.json`) +1. Download [launch.json](https://raw.githubusercontent.com/openhab/openhab-docs/main/src/developer/ide/examples/vscode/launch.json) to the .vscode directory (example: `%BASE%/openhab-addons/bundles/org.openhab.binding.russound/.vscode/launch.json`) ![define launch.json](./images/ide_setup_vscode_folder_launch.png) diff --git a/developers/index.md b/src/developer/index.md similarity index 100% rename from developers/index.md rename to src/developer/index.md diff --git a/developers/ioservices/index.md b/src/developer/ioservices/index.md similarity index 100% rename from developers/ioservices/index.md rename to src/developer/ioservices/index.md diff --git a/developers/module-types/index.md b/src/developer/module-types/index.md similarity index 100% rename from developers/module-types/index.md rename to src/developer/module-types/index.md diff --git a/developers/osgi/configadmin.md b/src/developer/osgi/configadmin.md similarity index 100% rename from developers/osgi/configadmin.md rename to src/developer/osgi/configadmin.md diff --git a/developers/osgi/equinox.md b/src/developer/osgi/equinox.md similarity index 100% rename from developers/osgi/equinox.md rename to src/developer/osgi/equinox.md diff --git a/developers/osgi/eventadmin.md b/src/developer/osgi/eventadmin.md similarity index 100% rename from developers/osgi/eventadmin.md rename to src/developer/osgi/eventadmin.md diff --git a/developers/osgi/images/delayedcomponent.png b/src/developer/osgi/images/delayedcomponent.png similarity index 100% rename from developers/osgi/images/delayedcomponent.png rename to src/developer/osgi/images/delayedcomponent.png diff --git a/developers/osgi/images/edittarget.png b/src/developer/osgi/images/edittarget.png similarity index 100% rename from developers/osgi/images/edittarget.png rename to src/developer/osgi/images/edittarget.png diff --git a/developers/osgi/images/event-admin.png b/src/developer/osgi/images/event-admin.png similarity index 100% rename from developers/osgi/images/event-admin.png rename to src/developer/osgi/images/event-admin.png diff --git a/developers/osgi/images/immediatecomponent.png b/src/developer/osgi/images/immediatecomponent.png similarity index 100% rename from developers/osgi/images/immediatecomponent.png rename to src/developer/osgi/images/immediatecomponent.png diff --git a/developers/osgi/images/layeringosgi.png b/src/developer/osgi/images/layeringosgi.png similarity index 100% rename from developers/osgi/images/layeringosgi.png rename to src/developer/osgi/images/layeringosgi.png diff --git a/developers/osgi/images/runconfiguration.png b/src/developer/osgi/images/runconfiguration.png similarity index 100% rename from developers/osgi/images/runconfiguration.png rename to src/developer/osgi/images/runconfiguration.png diff --git a/developers/osgi/images/services.png b/src/developer/osgi/images/services.png similarity index 100% rename from developers/osgi/images/services.png rename to src/developer/osgi/images/services.png diff --git a/developers/osgi/images/states.png b/src/developer/osgi/images/states.png similarity index 100% rename from developers/osgi/images/states.png rename to src/developer/osgi/images/states.png diff --git a/developers/osgi/images/targetplatform.png b/src/developer/osgi/images/targetplatform.png similarity index 100% rename from developers/osgi/images/targetplatform.png rename to src/developer/osgi/images/targetplatform.png diff --git a/developers/osgi/osgi.md b/src/developer/osgi/osgi.md similarity index 100% rename from developers/osgi/osgi.md rename to src/developer/osgi/osgi.md diff --git a/developers/osgi/osgids.md b/src/developer/osgi/osgids.md similarity index 100% rename from developers/osgi/osgids.md rename to src/developer/osgi/osgids.md diff --git a/developers/persistence/index.md b/src/developer/persistence/index.md similarity index 100% rename from developers/persistence/index.md rename to src/developer/persistence/index.md diff --git a/developers/tests.md b/src/developer/tests.md similarity index 100% rename from developers/tests.md rename to src/developer/tests.md diff --git a/developers/transformations/index.md b/src/developer/transformations/index.md similarity index 100% rename from developers/transformations/index.md rename to src/developer/transformations/index.md diff --git a/developers/utils/events.md b/src/developer/utils/events.md similarity index 100% rename from developers/utils/events.md rename to src/developer/utils/events.md diff --git a/developers/utils/i18n.md b/src/developer/utils/i18n.md similarity index 100% rename from developers/utils/i18n.md rename to src/developer/utils/i18n.md diff --git a/developers/utils/tools.md b/src/developer/utils/tools.md similarity index 100% rename from developers/utils/tools.md rename to src/developer/utils/tools.md diff --git a/introduction.md b/src/index.md similarity index 100% rename from introduction.md rename to src/index.md diff --git a/installation/armbian.md b/src/installation/armbian.md similarity index 100% rename from installation/armbian.md rename to src/installation/armbian.md diff --git a/installation/docker.md b/src/installation/docker.md similarity index 100% rename from installation/docker.md rename to src/installation/docker.md diff --git a/installation/images/Accueil_Openhab_2.png b/src/installation/images/Accueil_Openhab_2.png similarity index 100% rename from installation/images/Accueil_Openhab_2.png rename to src/installation/images/Accueil_Openhab_2.png diff --git a/installation/images/Admin_CMD.jpg b/src/installation/images/Admin_CMD.jpg similarity index 100% rename from installation/images/Admin_CMD.jpg rename to src/installation/images/Admin_CMD.jpg diff --git a/installation/images/Home_OH_adminCreate.png b/src/installation/images/Home_OH_adminCreate.png similarity index 100% rename from installation/images/Home_OH_adminCreate.png rename to src/installation/images/Home_OH_adminCreate.png diff --git a/installation/images/Home_Openhab_3.png b/src/installation/images/Home_Openhab_3.png similarity index 100% rename from installation/images/Home_Openhab_3.png rename to src/installation/images/Home_Openhab_3.png diff --git a/installation/images/Home_Openhab_4.png b/src/installation/images/Home_Openhab_4.png similarity index 100% rename from installation/images/Home_Openhab_4.png rename to src/installation/images/Home_Openhab_4.png diff --git a/installation/images/JAVA_HOME.png b/src/installation/images/JAVA_HOME.png similarity index 100% rename from installation/images/JAVA_HOME.png rename to src/installation/images/JAVA_HOME.png diff --git a/installation/images/Karaf_Windows.png b/src/installation/images/Karaf_Windows.png similarity index 100% rename from installation/images/Karaf_Windows.png rename to src/installation/images/Karaf_Windows.png diff --git a/installation/images/SSH_Connection_1.jpg b/src/installation/images/SSH_Connection_1.jpg similarity index 100% rename from installation/images/SSH_Connection_1.jpg rename to src/installation/images/SSH_Connection_1.jpg diff --git a/installation/images/SSH_Connection_2.jpg b/src/installation/images/SSH_Connection_2.jpg similarity index 100% rename from installation/images/SSH_Connection_2.jpg rename to src/installation/images/SSH_Connection_2.jpg diff --git a/installation/images/SSH_Connection_3.jpg b/src/installation/images/SSH_Connection_3.jpg similarity index 100% rename from installation/images/SSH_Connection_3.jpg rename to src/installation/images/SSH_Connection_3.jpg diff --git a/installation/images/SSH_Connection_4.jpg b/src/installation/images/SSH_Connection_4.jpg similarity index 100% rename from installation/images/SSH_Connection_4.jpg rename to src/installation/images/SSH_Connection_4.jpg diff --git a/installation/images/Windows_Service.jpg b/src/installation/images/Windows_Service.jpg similarity index 100% rename from installation/images/Windows_Service.jpg rename to src/installation/images/Windows_Service.jpg diff --git a/installation/images/Wrapper_Install_Windows.jpg b/src/installation/images/Wrapper_Install_Windows.jpg similarity index 100% rename from installation/images/Wrapper_Install_Windows.jpg rename to src/installation/images/Wrapper_Install_Windows.jpg diff --git a/installation/images/Wrapper_Start_Windows.jpg b/src/installation/images/Wrapper_Start_Windows.jpg similarity index 100% rename from installation/images/Wrapper_Start_Windows.jpg rename to src/installation/images/Wrapper_Start_Windows.jpg diff --git a/installation/images/Wrapper_Start_Windows.png b/src/installation/images/Wrapper_Start_Windows.png similarity index 100% rename from installation/images/Wrapper_Start_Windows.png rename to src/installation/images/Wrapper_Start_Windows.png diff --git a/installation/images/armbian-step1.png b/src/installation/images/armbian-step1.png similarity index 100% rename from installation/images/armbian-step1.png rename to src/installation/images/armbian-step1.png diff --git a/installation/images/armbian-step2.png b/src/installation/images/armbian-step2.png similarity index 100% rename from installation/images/armbian-step2.png rename to src/installation/images/armbian-step2.png diff --git a/installation/images/armbian-step3.png b/src/installation/images/armbian-step3.png similarity index 100% rename from installation/images/armbian-step3.png rename to src/installation/images/armbian-step3.png diff --git a/installation/images/armbian-step4.png b/src/installation/images/armbian-step4.png similarity index 100% rename from installation/images/armbian-step4.png rename to src/installation/images/armbian-step4.png diff --git a/installation/images/armbian-step5.png b/src/installation/images/armbian-step5.png similarity index 100% rename from installation/images/armbian-step5.png rename to src/installation/images/armbian-step5.png diff --git a/installation/images/boards1.png b/src/installation/images/boards1.png similarity index 100% rename from installation/images/boards1.png rename to src/installation/images/boards1.png diff --git a/installation/images/homebrew-openhab.svg b/src/installation/images/homebrew-openhab.svg similarity index 100% rename from installation/images/homebrew-openhab.svg rename to src/installation/images/homebrew-openhab.svg diff --git a/installation/images/openHAB_Folders.png b/src/installation/images/openHAB_Folders.png similarity index 100% rename from installation/images/openHAB_Folders.png rename to src/installation/images/openHAB_Folders.png diff --git a/installation/images/openHABian-SSH-MotD.png b/src/installation/images/openHABian-SSH-MotD.png similarity index 100% rename from installation/images/openHABian-SSH-MotD.png rename to src/installation/images/openHABian-SSH-MotD.png diff --git a/installation/images/openHABian-config.png b/src/installation/images/openHABian-config.png similarity index 100% rename from installation/images/openHABian-config.png rename to src/installation/images/openHABian-config.png diff --git a/installation/images/openHABian-install-failed.png b/src/installation/images/openHABian-install-failed.png similarity index 100% rename from installation/images/openHABian-install-failed.png rename to src/installation/images/openHABian-install-failed.png diff --git a/installation/images/openHABian-install-log.png b/src/installation/images/openHABian-install-log.png similarity index 100% rename from installation/images/openHABian-install-log.png rename to src/installation/images/openHABian-install-log.png diff --git a/installation/images/openHABian-menu-freshsetup.png b/src/installation/images/openHABian-menu-freshsetup.png similarity index 100% rename from installation/images/openHABian-menu-freshsetup.png rename to src/installation/images/openHABian-menu-freshsetup.png diff --git a/installation/images/pine64.png b/src/installation/images/pine64.png similarity index 100% rename from installation/images/pine64.png rename to src/installation/images/pine64.png diff --git a/installation/images/rpi2b.png b/src/installation/images/rpi2b.png similarity index 100% rename from installation/images/rpi2b.png rename to src/installation/images/rpi2b.png diff --git a/installation/index.md b/src/installation/index.md similarity index 100% rename from installation/index.md rename to src/installation/index.md diff --git a/installation/linux.md b/src/installation/linux.md similarity index 100% rename from installation/linux.md rename to src/installation/linux.md diff --git a/installation/macos.md b/src/installation/macos.md similarity index 100% rename from installation/macos.md rename to src/installation/macos.md diff --git a/installation/openbsd.md b/src/installation/openbsd.md similarity index 100% rename from installation/openbsd.md rename to src/installation/openbsd.md diff --git a/installation/reverse-proxy.md b/src/installation/reverse-proxy.md similarity index 100% rename from installation/reverse-proxy.md rename to src/installation/reverse-proxy.md diff --git a/installation/security.md b/src/installation/security.md similarity index 100% rename from installation/security.md rename to src/installation/security.md diff --git a/installation/synology.md b/src/installation/synology.md similarity index 100% rename from installation/synology.md rename to src/installation/synology.md diff --git a/installation/windows.md b/src/installation/windows.md similarity index 100% rename from installation/windows.md rename to src/installation/windows.md diff --git a/mainui/CONTRIBUTING.md b/src/mainui/CONTRIBUTING.md similarity index 100% rename from mainui/CONTRIBUTING.md rename to src/mainui/CONTRIBUTING.md diff --git a/mainui/about.md b/src/mainui/about.md similarity index 100% rename from mainui/about.md rename to src/mainui/about.md diff --git a/mainui/addons.md b/src/mainui/addons.md similarity index 100% rename from mainui/addons.md rename to src/mainui/addons.md diff --git a/mainui/developer/index.md b/src/mainui/developer/index.md similarity index 100% rename from mainui/developer/index.md rename to src/mainui/developer/index.md diff --git a/mainui/developer/log-viewer.md b/src/mainui/developer/log-viewer.md similarity index 100% rename from mainui/developer/log-viewer.md rename to src/mainui/developer/log-viewer.md diff --git a/mainui/developer/sidebar.md b/src/mainui/developer/sidebar.md similarity index 100% rename from mainui/developer/sidebar.md rename to src/mainui/developer/sidebar.md diff --git a/mainui/developer/widgets.md b/src/mainui/developer/widgets.md similarity index 100% rename from mainui/developer/widgets.md rename to src/mainui/developer/widgets.md diff --git a/mainui/images/about-top-section.png b/src/mainui/images/about-top-section.png similarity index 100% rename from mainui/images/about-top-section.png rename to src/mainui/images/about-top-section.png diff --git a/mainui/images/addons-toolbar.png b/src/mainui/images/addons-toolbar.png similarity index 100% rename from mainui/images/addons-toolbar.png rename to src/mainui/images/addons-toolbar.png diff --git a/mainui/images/bg-gray-setting.png b/src/mainui/images/bg-gray-setting.png similarity index 100% rename from mainui/images/bg-gray-setting.png rename to src/mainui/images/bg-gray-setting.png diff --git a/mainui/images/bg-white-setting.png b/src/mainui/images/bg-white-setting.png similarity index 100% rename from mainui/images/bg-white-setting.png rename to src/mainui/images/bg-white-setting.png diff --git a/mainui/images/config-overview.png b/src/mainui/images/config-overview.png similarity index 100% rename from mainui/images/config-overview.png rename to src/mainui/images/config-overview.png diff --git a/mainui/images/cron-saturday.png b/src/mainui/images/cron-saturday.png similarity index 100% rename from mainui/images/cron-saturday.png rename to src/mainui/images/cron-saturday.png diff --git a/mainui/images/cron-seven.png b/src/mainui/images/cron-seven.png similarity index 100% rename from mainui/images/cron-seven.png rename to src/mainui/images/cron-seven.png diff --git a/mainui/images/dark-mode.png b/src/mainui/images/dark-mode.png similarity index 100% rename from mainui/images/dark-mode.png rename to src/mainui/images/dark-mode.png diff --git a/mainui/images/developer-widgets.png b/src/mainui/images/developer-widgets.png similarity index 100% rename from mainui/images/developer-widgets.png rename to src/mainui/images/developer-widgets.png diff --git a/mainui/images/dirty-indicator.png b/src/mainui/images/dirty-indicator.png similarity index 100% rename from mainui/images/dirty-indicator.png rename to src/mainui/images/dirty-indicator.png diff --git a/mainui/images/log-level.png b/src/mainui/images/log-level.png similarity index 100% rename from mainui/images/log-level.png rename to src/mainui/images/log-level.png diff --git a/mainui/images/model-overview.png b/src/mainui/images/model-overview.png similarity index 100% rename from mainui/images/model-overview.png rename to src/mainui/images/model-overview.png diff --git a/mainui/images/navbar-style.png b/src/mainui/images/navbar-style.png similarity index 100% rename from mainui/images/navbar-style.png rename to src/mainui/images/navbar-style.png diff --git a/mainui/images/notification.png b/src/mainui/images/notification.png similarity index 100% rename from mainui/images/notification.png rename to src/mainui/images/notification.png diff --git a/mainui/images/persistence-settings.png b/src/mainui/images/persistence-settings.png similarity index 100% rename from mainui/images/persistence-settings.png rename to src/mainui/images/persistence-settings.png diff --git a/mainui/images/play-rule.png b/src/mainui/images/play-rule.png similarity index 100% rename from mainui/images/play-rule.png rename to src/mainui/images/play-rule.png diff --git a/mainui/images/plus.png b/src/mainui/images/plus.png similarity index 100% rename from mainui/images/plus.png rename to src/mainui/images/plus.png diff --git a/mainui/images/rules-overview.png b/src/mainui/images/rules-overview.png similarity index 100% rename from mainui/images/rules-overview.png rename to src/mainui/images/rules-overview.png diff --git a/mainui/images/rules-selection.png b/src/mainui/images/rules-selection.png similarity index 100% rename from mainui/images/rules-selection.png rename to src/mainui/images/rules-selection.png diff --git a/mainui/images/saturday-rule-schedule.png b/src/mainui/images/saturday-rule-schedule.png similarity index 100% rename from mainui/images/saturday-rule-schedule.png rename to src/mainui/images/saturday-rule-schedule.png diff --git a/mainui/images/scratchpad.png b/src/mainui/images/scratchpad.png similarity index 100% rename from mainui/images/scratchpad.png rename to src/mainui/images/scratchpad.png diff --git a/mainui/images/settings-menu.png b/src/mainui/images/settings-menu.png similarity index 100% rename from mainui/images/settings-menu.png rename to src/mainui/images/settings-menu.png diff --git a/mainui/images/settings-page.png b/src/mainui/images/settings-page.png similarity index 100% rename from mainui/images/settings-page.png rename to src/mainui/images/settings-page.png diff --git a/mainui/images/simple-nav-off.png b/src/mainui/images/simple-nav-off.png similarity index 100% rename from mainui/images/simple-nav-off.png rename to src/mainui/images/simple-nav-off.png diff --git a/mainui/images/simple-nav-on.png b/src/mainui/images/simple-nav-on.png similarity index 100% rename from mainui/images/simple-nav-on.png rename to src/mainui/images/simple-nav-on.png diff --git a/mainui/images/theme-selection.png b/src/mainui/images/theme-selection.png similarity index 100% rename from mainui/images/theme-selection.png rename to src/mainui/images/theme-selection.png diff --git a/mainui/images/timer-trigger.png b/src/mainui/images/timer-trigger.png similarity index 100% rename from mainui/images/timer-trigger.png rename to src/mainui/images/timer-trigger.png diff --git a/mainui/images/webaudio-blockly.png b/src/mainui/images/webaudio-blockly.png similarity index 100% rename from mainui/images/webaudio-blockly.png rename to src/mainui/images/webaudio-blockly.png diff --git a/mainui/index.md b/src/mainui/index.md similarity index 100% rename from mainui/index.md rename to src/mainui/index.md diff --git a/mainui/settings/blockly-editor.md b/src/mainui/settings/blockly-editor.md similarity index 100% rename from mainui/settings/blockly-editor.md rename to src/mainui/settings/blockly-editor.md diff --git a/mainui/settings/index.md b/src/mainui/settings/index.md similarity index 100% rename from mainui/settings/index.md rename to src/mainui/settings/index.md diff --git a/mainui/settings/items.md b/src/mainui/settings/items.md similarity index 100% rename from mainui/settings/items.md rename to src/mainui/settings/items.md diff --git a/mainui/settings/model.md b/src/mainui/settings/model.md similarity index 100% rename from mainui/settings/model.md rename to src/mainui/settings/model.md diff --git a/mainui/settings/pages.md b/src/mainui/settings/pages.md similarity index 100% rename from mainui/settings/pages.md rename to src/mainui/settings/pages.md diff --git a/mainui/settings/persistence.md b/src/mainui/settings/persistence.md similarity index 100% rename from mainui/settings/persistence.md rename to src/mainui/settings/persistence.md diff --git a/mainui/settings/rules.md b/src/mainui/settings/rules.md similarity index 100% rename from mainui/settings/rules.md rename to src/mainui/settings/rules.md diff --git a/mainui/settings/scenes.md b/src/mainui/settings/scenes.md similarity index 100% rename from mainui/settings/scenes.md rename to src/mainui/settings/scenes.md diff --git a/mainui/settings/schedule.md b/src/mainui/settings/schedule.md similarity index 100% rename from mainui/settings/schedule.md rename to src/mainui/settings/schedule.md diff --git a/mainui/settings/script-editor.md b/src/mainui/settings/script-editor.md similarity index 100% rename from mainui/settings/script-editor.md rename to src/mainui/settings/script-editor.md diff --git a/mainui/settings/scripts.md b/src/mainui/settings/scripts.md similarity index 100% rename from mainui/settings/scripts.md rename to src/mainui/settings/scripts.md diff --git a/mainui/settings/things.md b/src/mainui/settings/things.md similarity index 100% rename from mainui/settings/things.md rename to src/mainui/settings/things.md diff --git a/mainui/settings/transformations.md b/src/mainui/settings/transformations.md similarity index 100% rename from mainui/settings/transformations.md rename to src/mainui/settings/transformations.md diff --git a/tutorials/getting_started/auto_overview.md b/src/tutorial/auto_overview.md similarity index 100% rename from tutorials/getting_started/auto_overview.md rename to src/tutorial/auto_overview.md diff --git a/tutorials/getting_started/custom_widgets.md b/src/tutorial/custom_widgets.md similarity index 100% rename from tutorials/getting_started/custom_widgets.md rename to src/tutorial/custom_widgets.md diff --git a/tutorials/getting_started/first_steps.md b/src/tutorial/first_steps.md similarity index 100% rename from tutorials/getting_started/first_steps.md rename to src/tutorial/first_steps.md diff --git a/tutorials/getting_started/images/Customize_location_card_form.png b/src/tutorial/images/Customize_location_card_form.png similarity index 100% rename from tutorials/getting_started/images/Customize_location_card_form.png rename to src/tutorial/images/Customize_location_card_form.png diff --git a/tutorials/getting_started/images/account_option.png b/src/tutorial/images/account_option.png similarity index 100% rename from tutorials/getting_started/images/account_option.png rename to src/tutorial/images/account_option.png diff --git a/tutorials/getting_started/images/add_hue_bridge.png b/src/tutorial/images/add_hue_bridge.png similarity index 100% rename from tutorials/getting_started/images/add_hue_bridge.png rename to src/tutorial/images/add_hue_bridge.png diff --git a/tutorials/getting_started/images/add_members_change.png b/src/tutorial/images/add_members_change.png similarity index 100% rename from tutorials/getting_started/images/add_members_change.png rename to src/tutorial/images/add_members_change.png diff --git a/tutorials/getting_started/images/add_metadata_model.png b/src/tutorial/images/add_metadata_model.png similarity index 100% rename from tutorials/getting_started/images/add_metadata_model.png rename to src/tutorial/images/add_metadata_model.png diff --git a/tutorials/getting_started/images/add_separator.png b/src/tutorial/images/add_separator.png similarity index 100% rename from tutorials/getting_started/images/add_separator.png rename to src/tutorial/images/add_separator.png diff --git a/tutorials/getting_started/images/admin_user.png b/src/tutorial/images/admin_user.png similarity index 100% rename from tutorials/getting_started/images/admin_user.png rename to src/tutorial/images/admin_user.png diff --git a/tutorials/getting_started/images/administrator.png b/src/tutorial/images/administrator.png similarity index 100% rename from tutorials/getting_started/images/administrator.png rename to src/tutorial/images/administrator.png diff --git a/tutorials/getting_started/images/alarm-clock-rule-template.png b/src/tutorial/images/alarm-clock-rule-template.png similarity index 100% rename from tutorials/getting_started/images/alarm-clock-rule-template.png rename to src/tutorial/images/alarm-clock-rule-template.png diff --git a/tutorials/getting_started/images/all_lights_widget.png b/src/tutorial/images/all_lights_widget.png similarity index 100% rename from tutorials/getting_started/images/all_lights_widget.png rename to src/tutorial/images/all_lights_widget.png diff --git a/tutorials/getting_started/images/applying_custom_list_widget.png b/src/tutorial/images/applying_custom_list_widget.png similarity index 100% rename from tutorials/getting_started/images/applying_custom_list_widget.png rename to src/tutorial/images/applying_custom_list_widget.png diff --git a/tutorials/getting_started/images/basic-rule-duplicate-2.png b/src/tutorial/images/basic-rule-duplicate-2.png similarity index 100% rename from tutorials/getting_started/images/basic-rule-duplicate-2.png rename to src/tutorial/images/basic-rule-duplicate-2.png diff --git a/tutorials/getting_started/images/basic-rule-duplicate.png b/src/tutorial/images/basic-rule-duplicate.png similarity index 100% rename from tutorials/getting_started/images/basic-rule-duplicate.png rename to src/tutorial/images/basic-rule-duplicate.png diff --git a/tutorials/getting_started/images/basic-rule-heading.png b/src/tutorial/images/basic-rule-heading.png similarity index 100% rename from tutorials/getting_started/images/basic-rule-heading.png rename to src/tutorial/images/basic-rule-heading.png diff --git a/tutorials/getting_started/images/basic-rule-list.png b/src/tutorial/images/basic-rule-list.png similarity index 100% rename from tutorials/getting_started/images/basic-rule-list.png rename to src/tutorial/images/basic-rule-list.png diff --git a/tutorials/getting_started/images/basic-rule-stub-duplicate.png b/src/tutorial/images/basic-rule-stub-duplicate.png similarity index 100% rename from tutorials/getting_started/images/basic-rule-stub-duplicate.png rename to src/tutorial/images/basic-rule-stub-duplicate.png diff --git a/tutorials/getting_started/images/basic-rule-yaml-modified.png b/src/tutorial/images/basic-rule-yaml-modified.png similarity index 100% rename from tutorials/getting_started/images/basic-rule-yaml-modified.png rename to src/tutorial/images/basic-rule-yaml-modified.png diff --git a/tutorials/getting_started/images/basic-rule-yaml.png b/src/tutorial/images/basic-rule-yaml.png similarity index 100% rename from tutorials/getting_started/images/basic-rule-yaml.png rename to src/tutorial/images/basic-rule-yaml.png diff --git a/tutorials/getting_started/images/blank_overview.png b/src/tutorial/images/blank_overview.png similarity index 100% rename from tutorials/getting_started/images/blank_overview.png rename to src/tutorial/images/blank_overview.png diff --git a/tutorials/getting_started/images/blockly-add-comment.jpg b/src/tutorial/images/blockly-add-comment.jpg similarity index 100% rename from tutorials/getting_started/images/blockly-add-comment.jpg rename to src/tutorial/images/blockly-add-comment.jpg diff --git a/tutorials/getting_started/images/blockly-call-function.png b/src/tutorial/images/blockly-call-function.png similarity index 100% rename from tutorials/getting_started/images/blockly-call-function.png rename to src/tutorial/images/blockly-call-function.png diff --git a/tutorials/getting_started/images/blockly-command-light-on.png b/src/tutorial/images/blockly-command-light-on.png similarity index 100% rename from tutorials/getting_started/images/blockly-command-light-on.png rename to src/tutorial/images/blockly-command-light-on.png diff --git a/tutorials/getting_started/images/blockly-complete-condition.png b/src/tutorial/images/blockly-complete-condition.png similarity index 100% rename from tutorials/getting_started/images/blockly-complete-condition.png rename to src/tutorial/images/blockly-complete-condition.png diff --git a/tutorials/getting_started/images/blockly-condition.png b/src/tutorial/images/blockly-condition.png similarity index 100% rename from tutorials/getting_started/images/blockly-condition.png rename to src/tutorial/images/blockly-condition.png diff --git a/tutorials/getting_started/images/blockly-create-timer.png b/src/tutorial/images/blockly-create-timer.png similarity index 100% rename from tutorials/getting_started/images/blockly-create-timer.png rename to src/tutorial/images/blockly-create-timer.png diff --git a/tutorials/getting_started/images/blockly-equals.png b/src/tutorial/images/blockly-equals.png similarity index 100% rename from tutorials/getting_started/images/blockly-equals.png rename to src/tutorial/images/blockly-equals.png diff --git a/tutorials/getting_started/images/blockly-full-example.png b/src/tutorial/images/blockly-full-example.png similarity index 100% rename from tutorials/getting_started/images/blockly-full-example.png rename to src/tutorial/images/blockly-full-example.png diff --git a/tutorials/getting_started/images/blockly-function-args.png b/src/tutorial/images/blockly-function-args.png similarity index 100% rename from tutorials/getting_started/images/blockly-function-args.png rename to src/tutorial/images/blockly-function-args.png diff --git a/tutorials/getting_started/images/blockly-function-if-condition.png b/src/tutorial/images/blockly-function-if-condition.png similarity index 100% rename from tutorials/getting_started/images/blockly-function-if-condition.png rename to src/tutorial/images/blockly-function-if-condition.png diff --git a/tutorials/getting_started/images/blockly-function-if-tcomp1.png b/src/tutorial/images/blockly-function-if-tcomp1.png similarity index 100% rename from tutorials/getting_started/images/blockly-function-if-tcomp1.png rename to src/tutorial/images/blockly-function-if-tcomp1.png diff --git a/tutorials/getting_started/images/blockly-function-if.png b/src/tutorial/images/blockly-function-if.png similarity index 100% rename from tutorials/getting_started/images/blockly-function-if.png rename to src/tutorial/images/blockly-function-if.png diff --git a/tutorials/getting_started/images/blockly-function-return.png b/src/tutorial/images/blockly-function-return.png similarity index 100% rename from tutorials/getting_started/images/blockly-function-return.png rename to src/tutorial/images/blockly-function-return.png diff --git a/tutorials/getting_started/images/blockly-function-tcomp.png b/src/tutorial/images/blockly-function-tcomp.png similarity index 100% rename from tutorials/getting_started/images/blockly-function-tcomp.png rename to src/tutorial/images/blockly-function-tcomp.png diff --git a/tutorials/getting_started/images/blockly-libraries.png b/src/tutorial/images/blockly-libraries.png similarity index 100% rename from tutorials/getting_started/images/blockly-libraries.png rename to src/tutorial/images/blockly-libraries.png diff --git a/tutorials/getting_started/images/blockly-log-motion.png b/src/tutorial/images/blockly-log-motion.png similarity index 100% rename from tutorials/getting_started/images/blockly-log-motion.png rename to src/tutorial/images/blockly-log-motion.png diff --git a/tutorials/getting_started/images/blockly-read-comment.png b/src/tutorial/images/blockly-read-comment.png similarity index 100% rename from tutorials/getting_started/images/blockly-read-comment.png rename to src/tutorial/images/blockly-read-comment.png diff --git a/tutorials/getting_started/images/blockly-timer-body.png b/src/tutorial/images/blockly-timer-body.png similarity index 100% rename from tutorials/getting_started/images/blockly-timer-body.png rename to src/tutorial/images/blockly-timer-body.png diff --git a/tutorials/getting_started/images/blockly-trigger-dialog.png b/src/tutorial/images/blockly-trigger-dialog.png similarity index 100% rename from tutorials/getting_started/images/blockly-trigger-dialog.png rename to src/tutorial/images/blockly-trigger-dialog.png diff --git a/tutorials/getting_started/images/blockly-vars-from-items.png b/src/tutorial/images/blockly-vars-from-items.png similarity index 100% rename from tutorials/getting_started/images/blockly-vars-from-items.png rename to src/tutorial/images/blockly-vars-from-items.png diff --git a/tutorials/getting_started/images/blockly-view-code.png b/src/tutorial/images/blockly-view-code.png similarity index 100% rename from tutorials/getting_started/images/blockly-view-code.png rename to src/tutorial/images/blockly-view-code.png diff --git a/tutorials/getting_started/images/calendar.png b/src/tutorial/images/calendar.png similarity index 100% rename from tutorials/getting_started/images/calendar.png rename to src/tutorial/images/calendar.png diff --git a/tutorials/getting_started/images/choose-action-type.png b/src/tutorial/images/choose-action-type.png similarity index 100% rename from tutorials/getting_started/images/choose-action-type.png rename to src/tutorial/images/choose-action-type.png diff --git a/tutorials/getting_started/images/choose-action.png b/src/tutorial/images/choose-action.png similarity index 100% rename from tutorials/getting_started/images/choose-action.png rename to src/tutorial/images/choose-action.png diff --git a/tutorials/getting_started/images/choose_binding.png b/src/tutorial/images/choose_binding.png similarity index 100% rename from tutorials/getting_started/images/choose_binding.png rename to src/tutorial/images/choose_binding.png diff --git a/tutorials/getting_started/images/choose_transformation.png b/src/tutorial/images/choose_transformation.png similarity index 100% rename from tutorials/getting_started/images/choose_transformation.png rename to src/tutorial/images/choose_transformation.png diff --git a/tutorials/getting_started/images/chromecast_props_set.png b/src/tutorial/images/chromecast_props_set.png similarity index 100% rename from tutorials/getting_started/images/chromecast_props_set.png rename to src/tutorial/images/chromecast_props_set.png diff --git a/tutorials/getting_started/images/chromecast_widget.png b/src/tutorial/images/chromecast_widget.png similarity index 100% rename from tutorials/getting_started/images/chromecast_widget.png rename to src/tutorial/images/chromecast_widget.png diff --git a/tutorials/getting_started/images/chromecast_widget_noprops.png b/src/tutorial/images/chromecast_widget_noprops.png similarity index 100% rename from tutorials/getting_started/images/chromecast_widget_noprops.png rename to src/tutorial/images/chromecast_widget_noprops.png diff --git a/tutorials/getting_started/images/column_options.png b/src/tutorial/images/column_options.png similarity index 100% rename from tutorials/getting_started/images/column_options.png rename to src/tutorial/images/column_options.png diff --git a/tutorials/getting_started/images/create_equipment_model.png b/src/tutorial/images/create_equipment_model.png similarity index 100% rename from tutorials/getting_started/images/create_equipment_model.png rename to src/tutorial/images/create_equipment_model.png diff --git a/tutorials/getting_started/images/create_equipment_model_added.png b/src/tutorial/images/create_equipment_model_added.png similarity index 100% rename from tutorials/getting_started/images/create_equipment_model_added.png rename to src/tutorial/images/create_equipment_model_added.png diff --git a/tutorials/getting_started/images/create_equipment_model_channels.png b/src/tutorial/images/create_equipment_model_channels.png similarity index 100% rename from tutorials/getting_started/images/create_equipment_model_channels.png rename to src/tutorial/images/create_equipment_model_channels.png diff --git a/tutorials/getting_started/images/create_equipment_things_added.png b/src/tutorial/images/create_equipment_things_added.png similarity index 100% rename from tutorials/getting_started/images/create_equipment_things_added.png rename to src/tutorial/images/create_equipment_things_added.png diff --git a/tutorials/getting_started/images/create_equipment_things_channels.png b/src/tutorial/images/create_equipment_things_channels.png similarity index 100% rename from tutorials/getting_started/images/create_equipment_things_channels.png rename to src/tutorial/images/create_equipment_things_channels.png diff --git a/tutorials/getting_started/images/create_equipment_things_location.png b/src/tutorial/images/create_equipment_things_location.png similarity index 100% rename from tutorials/getting_started/images/create_equipment_things_location.png rename to src/tutorial/images/create_equipment_things_location.png diff --git a/tutorials/getting_started/images/create_equipment_things_parent.png b/src/tutorial/images/create_equipment_things_parent.png similarity index 100% rename from tutorials/getting_started/images/create_equipment_things_parent.png rename to src/tutorial/images/create_equipment_things_parent.png diff --git a/tutorials/getting_started/images/create_item.png b/src/tutorial/images/create_item.png similarity index 100% rename from tutorials/getting_started/images/create_item.png rename to src/tutorial/images/create_item.png diff --git a/tutorials/getting_started/images/create_link.png b/src/tutorial/images/create_link.png similarity index 100% rename from tutorials/getting_started/images/create_link.png rename to src/tutorial/images/create_link.png diff --git a/tutorials/getting_started/images/create_location.png b/src/tutorial/images/create_location.png similarity index 100% rename from tutorials/getting_started/images/create_location.png rename to src/tutorial/images/create_location.png diff --git a/tutorials/getting_started/images/create_user.png b/src/tutorial/images/create_user.png similarity index 100% rename from tutorials/getting_started/images/create_user.png rename to src/tutorial/images/create_user.png diff --git a/tutorials/getting_started/images/custom_widget_editor.png b/src/tutorial/images/custom_widget_editor.png similarity index 100% rename from tutorials/getting_started/images/custom_widget_editor.png rename to src/tutorial/images/custom_widget_editor.png diff --git a/tutorials/getting_started/images/delete-button.png b/src/tutorial/images/delete-button.png similarity index 100% rename from tutorials/getting_started/images/delete-button.png rename to src/tutorial/images/delete-button.png diff --git a/tutorials/getting_started/images/developer-sidebar-codetools.png b/src/tutorial/images/developer-sidebar-codetools.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar-codetools.png rename to src/tutorial/images/developer-sidebar-codetools.png diff --git a/tutorials/getting_started/images/developer-sidebar-create.png b/src/tutorial/images/developer-sidebar-create.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar-create.png rename to src/tutorial/images/developer-sidebar-create.png diff --git a/tutorials/getting_started/images/developer-sidebar-item-control.png b/src/tutorial/images/developer-sidebar-item-control.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar-item-control.png rename to src/tutorial/images/developer-sidebar-item-control.png diff --git a/tutorials/getting_started/images/developer-sidebar-pinned.png b/src/tutorial/images/developer-sidebar-pinned.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar-pinned.png rename to src/tutorial/images/developer-sidebar-pinned.png diff --git a/tutorials/getting_started/images/developer-sidebar-search.png b/src/tutorial/images/developer-sidebar-search.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar-search.png rename to src/tutorial/images/developer-sidebar-search.png diff --git a/tutorials/getting_started/images/developer-sidebar-stream.png b/src/tutorial/images/developer-sidebar-stream.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar-stream.png rename to src/tutorial/images/developer-sidebar-stream.png diff --git a/tutorials/getting_started/images/developer-sidebar-thing.png b/src/tutorial/images/developer-sidebar-thing.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar-thing.png rename to src/tutorial/images/developer-sidebar-thing.png diff --git a/tutorials/getting_started/images/developer-sidebar.png b/src/tutorial/images/developer-sidebar.png similarity index 100% rename from tutorials/getting_started/images/developer-sidebar.png rename to src/tutorial/images/developer-sidebar.png diff --git a/tutorials/getting_started/images/discovered_hue_things.png b/src/tutorial/images/discovered_hue_things.png similarity index 100% rename from tutorials/getting_started/images/discovered_hue_things.png rename to src/tutorial/images/discovered_hue_things.png diff --git a/tutorials/getting_started/images/doc_plaintext.png b/src/tutorial/images/doc_plaintext.png similarity index 100% rename from tutorials/getting_started/images/doc_plaintext.png rename to src/tutorial/images/doc_plaintext.png diff --git a/tutorials/getting_started/images/duplicate-rule-button.png b/src/tutorial/images/duplicate-rule-button.png similarity index 100% rename from tutorials/getting_started/images/duplicate-rule-button.png rename to src/tutorial/images/duplicate-rule-button.png diff --git a/tutorials/getting_started/images/empty_things_menu.png b/src/tutorial/images/empty_things_menu.png similarity index 100% rename from tutorials/getting_started/images/empty_things_menu.png rename to src/tutorial/images/empty_things_menu.png diff --git a/tutorials/getting_started/images/equipment_card.png b/src/tutorial/images/equipment_card.png similarity index 100% rename from tutorials/getting_started/images/equipment_card.png rename to src/tutorial/images/equipment_card.png diff --git a/tutorials/getting_started/images/equipment_tab.png b/src/tutorial/images/equipment_tab.png similarity index 100% rename from tutorials/getting_started/images/equipment_tab.png rename to src/tutorial/images/equipment_tab.png diff --git a/tutorials/getting_started/images/example_model.png b/src/tutorial/images/example_model.png similarity index 100% rename from tutorials/getting_started/images/example_model.png rename to src/tutorial/images/example_model.png diff --git a/tutorials/getting_started/images/expression_tester.png b/src/tutorial/images/expression_tester.png similarity index 100% rename from tutorials/getting_started/images/expression_tester.png rename to src/tutorial/images/expression_tester.png diff --git a/tutorials/getting_started/images/garage_list_widget.png b/src/tutorial/images/garage_list_widget.png similarity index 100% rename from tutorials/getting_started/images/garage_list_widget.png rename to src/tutorial/images/garage_list_widget.png diff --git a/tutorials/getting_started/images/habot_text.png b/src/tutorial/images/habot_text.png similarity index 100% rename from tutorials/getting_started/images/habot_text.png rename to src/tutorial/images/habot_text.png diff --git a/tutorials/getting_started/images/hidden_points.png b/src/tutorial/images/hidden_points.png similarity index 100% rename from tutorials/getting_started/images/hidden_points.png rename to src/tutorial/images/hidden_points.png diff --git a/tutorials/getting_started/images/hue_bridge_config_error.png b/src/tutorial/images/hue_bridge_config_error.png similarity index 100% rename from tutorials/getting_started/images/hue_bridge_config_error.png rename to src/tutorial/images/hue_bridge_config_error.png diff --git a/tutorials/getting_started/images/hue_bridge_offline.png b/src/tutorial/images/hue_bridge_offline.png similarity index 100% rename from tutorials/getting_started/images/hue_bridge_offline.png rename to src/tutorial/images/hue_bridge_offline.png diff --git a/tutorials/getting_started/images/hue_bridge_online.png b/src/tutorial/images/hue_bridge_online.png similarity index 100% rename from tutorials/getting_started/images/hue_bridge_online.png rename to src/tutorial/images/hue_bridge_online.png diff --git a/tutorials/getting_started/images/hue_bulk_add.png b/src/tutorial/images/hue_bulk_add.png similarity index 100% rename from tutorials/getting_started/images/hue_bulk_add.png rename to src/tutorial/images/hue_bulk_add.png diff --git a/tutorials/getting_started/images/hue_inbox.png b/src/tutorial/images/hue_inbox.png similarity index 100% rename from tutorials/getting_started/images/hue_inbox.png rename to src/tutorial/images/hue_inbox.png diff --git a/tutorials/getting_started/images/hue_individual_add.png b/src/tutorial/images/hue_individual_add.png similarity index 100% rename from tutorials/getting_started/images/hue_individual_add.png rename to src/tutorial/images/hue_individual_add.png diff --git a/tutorials/getting_started/images/hue_things_added.png b/src/tutorial/images/hue_things_added.png similarity index 100% rename from tutorials/getting_started/images/hue_things_added.png rename to src/tutorial/images/hue_things_added.png diff --git a/tutorials/getting_started/images/hue_things_discover_bridge.png b/src/tutorial/images/hue_things_discover_bridge.png similarity index 100% rename from tutorials/getting_started/images/hue_things_discover_bridge.png rename to src/tutorial/images/hue_things_discover_bridge.png diff --git a/tutorials/getting_started/images/initial_settings.png b/src/tutorial/images/initial_settings.png similarity index 100% rename from tutorials/getting_started/images/initial_settings.png rename to src/tutorial/images/initial_settings.png diff --git a/tutorials/getting_started/images/install_hue.png b/src/tutorial/images/install_hue.png similarity index 100% rename from tutorials/getting_started/images/install_hue.png rename to src/tutorial/images/install_hue.png diff --git a/tutorials/getting_started/images/install_jsonpath.png b/src/tutorial/images/install_jsonpath.png similarity index 100% rename from tutorials/getting_started/images/install_jsonpath.png rename to src/tutorial/images/install_jsonpath.png diff --git a/tutorials/getting_started/images/install_zwave.png b/src/tutorial/images/install_zwave.png similarity index 100% rename from tutorials/getting_started/images/install_zwave.png rename to src/tutorial/images/install_zwave.png diff --git a/tutorials/getting_started/images/installed_hue.png b/src/tutorial/images/installed_hue.png similarity index 100% rename from tutorials/getting_started/images/installed_hue.png rename to src/tutorial/images/installed_hue.png diff --git a/tutorials/getting_started/images/installed_zwave.png b/src/tutorial/images/installed_zwave.png similarity index 100% rename from tutorials/getting_started/images/installed_zwave.png rename to src/tutorial/images/installed_zwave.png diff --git a/tutorials/getting_started/images/installing_hue.png b/src/tutorial/images/installing_hue.png similarity index 100% rename from tutorials/getting_started/images/installing_hue.png rename to src/tutorial/images/installing_hue.png diff --git a/tutorials/getting_started/images/installing_zwave.png b/src/tutorial/images/installing_zwave.png similarity index 100% rename from tutorials/getting_started/images/installing_zwave.png rename to src/tutorial/images/installing_zwave.png diff --git a/tutorials/getting_started/images/item-list-lookup.png b/src/tutorial/images/item-list-lookup.png similarity index 100% rename from tutorials/getting_started/images/item-list-lookup.png rename to src/tutorial/images/item-list-lookup.png diff --git a/tutorials/getting_started/images/item-tree-lookup.png b/src/tutorial/images/item-tree-lookup.png similarity index 100% rename from tutorials/getting_started/images/item-tree-lookup.png rename to src/tutorial/images/item-tree-lookup.png diff --git a/tutorials/getting_started/images/kitchen_widget_props.png b/src/tutorial/images/kitchen_widget_props.png similarity index 100% rename from tutorials/getting_started/images/kitchen_widget_props.png rename to src/tutorial/images/kitchen_widget_props.png diff --git a/tutorials/getting_started/images/light_list_widget_form.png b/src/tutorial/images/light_list_widget_form.png similarity index 100% rename from tutorials/getting_started/images/light_list_widget_form.png rename to src/tutorial/images/light_list_widget_form.png diff --git a/tutorials/getting_started/images/livingroom_card_equip.png b/src/tutorial/images/livingroom_card_equip.png similarity index 100% rename from tutorials/getting_started/images/livingroom_card_equip.png rename to src/tutorial/images/livingroom_card_equip.png diff --git a/tutorials/getting_started/images/locations_model.png b/src/tutorial/images/locations_model.png similarity index 100% rename from tutorials/getting_started/images/locations_model.png rename to src/tutorial/images/locations_model.png diff --git a/tutorials/getting_started/images/locations_tab.png b/src/tutorial/images/locations_tab.png similarity index 100% rename from tutorials/getting_started/images/locations_tab.png rename to src/tutorial/images/locations_tab.png diff --git a/tutorials/getting_started/images/menu_icon.png b/src/tutorial/images/menu_icon.png similarity index 100% rename from tutorials/getting_started/images/menu_icon.png rename to src/tutorial/images/menu_icon.png diff --git a/tutorials/getting_started/images/minus-button.png b/src/tutorial/images/minus-button.png similarity index 100% rename from tutorials/getting_started/images/minus-button.png rename to src/tutorial/images/minus-button.png diff --git a/tutorials/getting_started/images/mqtt_bridge_config.png b/src/tutorial/images/mqtt_bridge_config.png similarity index 100% rename from tutorials/getting_started/images/mqtt_bridge_config.png rename to src/tutorial/images/mqtt_bridge_config.png diff --git a/tutorials/getting_started/images/mqtt_config_channel.png b/src/tutorial/images/mqtt_config_channel.png similarity index 100% rename from tutorials/getting_started/images/mqtt_config_channel.png rename to src/tutorial/images/mqtt_config_channel.png diff --git a/tutorials/getting_started/images/mqtt_generic_thing.png b/src/tutorial/images/mqtt_generic_thing.png similarity index 100% rename from tutorials/getting_started/images/mqtt_generic_thing.png rename to src/tutorial/images/mqtt_generic_thing.png diff --git a/tutorials/getting_started/images/mqtt_temp_channel.png b/src/tutorial/images/mqtt_temp_channel.png similarity index 100% rename from tutorials/getting_started/images/mqtt_temp_channel.png rename to src/tutorial/images/mqtt_temp_channel.png diff --git a/tutorials/getting_started/images/mqtt_temp_channel_created.png b/src/tutorial/images/mqtt_temp_channel_created.png similarity index 100% rename from tutorials/getting_started/images/mqtt_temp_channel_created.png rename to src/tutorial/images/mqtt_temp_channel_created.png diff --git a/tutorials/getting_started/images/mqtt_things.png b/src/tutorial/images/mqtt_things.png similarity index 100% rename from tutorials/getting_started/images/mqtt_things.png rename to src/tutorial/images/mqtt_things.png diff --git a/tutorials/getting_started/images/now_visible_points.png b/src/tutorial/images/now_visible_points.png similarity index 100% rename from tutorials/getting_started/images/now_visible_points.png rename to src/tutorial/images/now_visible_points.png diff --git a/tutorials/getting_started/images/ontology_relationships.jpeg b/src/tutorial/images/ontology_relationships.jpeg similarity index 100% rename from tutorials/getting_started/images/ontology_relationships.jpeg rename to src/tutorial/images/ontology_relationships.jpeg diff --git a/tutorials/getting_started/images/other_apps.png b/src/tutorial/images/other_apps.png similarity index 100% rename from tutorials/getting_started/images/other_apps.png rename to src/tutorial/images/other_apps.png diff --git a/tutorials/getting_started/images/overview_edit_page.png b/src/tutorial/images/overview_edit_page.png similarity index 100% rename from tutorials/getting_started/images/overview_edit_page.png rename to src/tutorial/images/overview_edit_page.png diff --git a/tutorials/getting_started/images/overview_preview.png b/src/tutorial/images/overview_preview.png similarity index 100% rename from tutorials/getting_started/images/overview_preview.png rename to src/tutorial/images/overview_preview.png diff --git a/tutorials/getting_started/images/overview_row1_config.png b/src/tutorial/images/overview_row1_config.png similarity index 100% rename from tutorials/getting_started/images/overview_row1_config.png rename to src/tutorial/images/overview_row1_config.png diff --git a/tutorials/getting_started/images/overview_row_and_columns.png b/src/tutorial/images/overview_row_and_columns.png similarity index 100% rename from tutorials/getting_started/images/overview_row_and_columns.png rename to src/tutorial/images/overview_row_and_columns.png diff --git a/tutorials/getting_started/images/pause_and_play.png b/src/tutorial/images/pause_and_play.png similarity index 100% rename from tutorials/getting_started/images/pause_and_play.png rename to src/tutorial/images/pause_and_play.png diff --git a/tutorials/getting_started/images/pencil_icon.png b/src/tutorial/images/pencil_icon.png similarity index 100% rename from tutorials/getting_started/images/pencil_icon.png rename to src/tutorial/images/pencil_icon.png diff --git a/tutorials/getting_started/images/pick-item-dialog.png b/src/tutorial/images/pick-item-dialog.png similarity index 100% rename from tutorials/getting_started/images/pick-item-dialog.png rename to src/tutorial/images/pick-item-dialog.png diff --git a/tutorials/getting_started/images/play-button.png b/src/tutorial/images/play-button.png similarity index 100% rename from tutorials/getting_started/images/play-button.png rename to src/tutorial/images/play-button.png diff --git a/tutorials/getting_started/images/properties_card.png b/src/tutorial/images/properties_card.png similarity index 100% rename from tutorials/getting_started/images/properties_card.png rename to src/tutorial/images/properties_card.png diff --git a/tutorials/getting_started/images/properties_chart.png b/src/tutorial/images/properties_chart.png similarity index 100% rename from tutorials/getting_started/images/properties_chart.png rename to src/tutorial/images/properties_chart.png diff --git a/tutorials/getting_started/images/properties_tab.png b/src/tutorial/images/properties_tab.png similarity index 100% rename from tutorials/getting_started/images/properties_tab.png rename to src/tutorial/images/properties_tab.png diff --git a/tutorials/getting_started/images/regenerate_icon.svg b/src/tutorial/images/regenerate_icon.svg similarity index 100% rename from tutorials/getting_started/images/regenerate_icon.svg rename to src/tutorial/images/regenerate_icon.svg diff --git a/tutorials/getting_started/images/regional_settings.png b/src/tutorial/images/regional_settings.png similarity index 100% rename from tutorials/getting_started/images/regional_settings.png rename to src/tutorial/images/regional_settings.png diff --git a/tutorials/getting_started/images/regular_user.png b/src/tutorial/images/regular_user.png similarity index 100% rename from tutorials/getting_started/images/regular_user.png rename to src/tutorial/images/regular_user.png diff --git a/tutorials/getting_started/images/remove_from_model.png b/src/tutorial/images/remove_from_model.png similarity index 100% rename from tutorials/getting_started/images/remove_from_model.png rename to src/tutorial/images/remove_from_model.png diff --git a/tutorials/getting_started/images/rule-action-command-on.png b/src/tutorial/images/rule-action-command-on.png similarity index 100% rename from tutorials/getting_started/images/rule-action-command-on.png rename to src/tutorial/images/rule-action-command-on.png diff --git a/tutorials/getting_started/images/rule-add-action-dialog.png b/src/tutorial/images/rule-add-action-dialog.png similarity index 100% rename from tutorials/getting_started/images/rule-add-action-dialog.png rename to src/tutorial/images/rule-add-action-dialog.png diff --git a/tutorials/getting_started/images/rule-condition-dialog.png b/src/tutorial/images/rule-condition-dialog.png similarity index 100% rename from tutorials/getting_started/images/rule-condition-dialog.png rename to src/tutorial/images/rule-condition-dialog.png diff --git a/tutorials/getting_started/images/rule-condition-number.png b/src/tutorial/images/rule-condition-number.png similarity index 100% rename from tutorials/getting_started/images/rule-condition-number.png rename to src/tutorial/images/rule-condition-number.png diff --git a/tutorials/getting_started/images/rule-condition-switch.png b/src/tutorial/images/rule-condition-switch.png similarity index 100% rename from tutorials/getting_started/images/rule-condition-switch.png rename to src/tutorial/images/rule-condition-switch.png diff --git a/tutorials/getting_started/images/rule-create-from-template.png b/src/tutorial/images/rule-create-from-template.png similarity index 100% rename from tutorials/getting_started/images/rule-create-from-template.png rename to src/tutorial/images/rule-create-from-template.png diff --git a/tutorials/getting_started/images/rule-template-badge.png b/src/tutorial/images/rule-template-badge.png similarity index 100% rename from tutorials/getting_started/images/rule-template-badge.png rename to src/tutorial/images/rule-template-badge.png diff --git a/tutorials/getting_started/images/rule-template-config.png b/src/tutorial/images/rule-template-config.png similarity index 100% rename from tutorials/getting_started/images/rule-template-config.png rename to src/tutorial/images/rule-template-config.png diff --git a/tutorials/getting_started/images/rule-trigger-dialog.png b/src/tutorial/images/rule-trigger-dialog.png similarity index 100% rename from tutorials/getting_started/images/rule-trigger-dialog.png rename to src/tutorial/images/rule-trigger-dialog.png diff --git a/tutorials/getting_started/images/rule-triggers-dialog.png b/src/tutorial/images/rule-triggers-dialog.png similarity index 100% rename from tutorials/getting_started/images/rule-triggers-dialog.png rename to src/tutorial/images/rule-triggers-dialog.png diff --git a/tutorials/getting_started/images/rules-advanced-select-lang.png b/src/tutorial/images/rules-advanced-select-lang.png similarity index 100% rename from tutorials/getting_started/images/rules-advanced-select-lang.png rename to src/tutorial/images/rules-advanced-select-lang.png diff --git a/tutorials/getting_started/images/scene-blockly-rule.png b/src/tutorial/images/scene-blockly-rule.png similarity index 100% rename from tutorials/getting_started/images/scene-blockly-rule.png rename to src/tutorial/images/scene-blockly-rule.png diff --git a/tutorials/getting_started/images/scene-complete.png b/src/tutorial/images/scene-complete.png similarity index 100% rename from tutorials/getting_started/images/scene-complete.png rename to src/tutorial/images/scene-complete.png diff --git a/tutorials/getting_started/images/scene-configuration-empty.png b/src/tutorial/images/scene-configuration-empty.png similarity index 100% rename from tutorials/getting_started/images/scene-configuration-empty.png rename to src/tutorial/images/scene-configuration-empty.png diff --git a/tutorials/getting_started/images/scene-entry1.png b/src/tutorial/images/scene-entry1.png similarity index 100% rename from tutorials/getting_started/images/scene-entry1.png rename to src/tutorial/images/scene-entry1.png diff --git a/tutorials/getting_started/images/scene-item-refresh.png b/src/tutorial/images/scene-item-refresh.png similarity index 100% rename from tutorials/getting_started/images/scene-item-refresh.png rename to src/tutorial/images/scene-item-refresh.png diff --git a/tutorials/getting_started/images/scene-reorder-button.png b/src/tutorial/images/scene-reorder-button.png similarity index 100% rename from tutorials/getting_started/images/scene-reorder-button.png rename to src/tutorial/images/scene-reorder-button.png diff --git a/tutorials/getting_started/images/scenes-list-of.png b/src/tutorial/images/scenes-list-of.png similarity index 100% rename from tutorials/getting_started/images/scenes-list-of.png rename to src/tutorial/images/scenes-list-of.png diff --git a/tutorials/getting_started/images/scenes-rule-heading-tags.png b/src/tutorial/images/scenes-rule-heading-tags.png similarity index 100% rename from tutorials/getting_started/images/scenes-rule-heading-tags.png rename to src/tutorial/images/scenes-rule-heading-tags.png diff --git a/tutorials/getting_started/images/scenes-rule-heading.png b/src/tutorial/images/scenes-rule-heading.png similarity index 100% rename from tutorials/getting_started/images/scenes-rule-heading.png rename to src/tutorial/images/scenes-rule-heading.png diff --git a/tutorials/getting_started/images/scenes-rule-list-entry.png b/src/tutorial/images/scenes-rule-list-entry.png similarity index 100% rename from tutorials/getting_started/images/scenes-rule-list-entry.png rename to src/tutorial/images/scenes-rule-list-entry.png diff --git a/tutorials/getting_started/images/scenes.png b/src/tutorial/images/scenes.png similarity index 100% rename from tutorials/getting_started/images/scenes.png rename to src/tutorial/images/scenes.png diff --git a/tutorials/getting_started/images/select-button.png b/src/tutorial/images/select-button.png similarity index 100% rename from tutorials/getting_started/images/select-button.png rename to src/tutorial/images/select-button.png diff --git a/tutorials/getting_started/images/select_members.png b/src/tutorial/images/select_members.png similarity index 100% rename from tutorials/getting_started/images/select_members.png rename to src/tutorial/images/select_members.png diff --git a/tutorials/getting_started/images/separators.png b/src/tutorial/images/separators.png similarity index 100% rename from tutorials/getting_started/images/separators.png rename to src/tutorial/images/separators.png diff --git a/tutorials/getting_started/images/shield.png b/src/tutorial/images/shield.png similarity index 100% rename from tutorials/getting_started/images/shield.png rename to src/tutorial/images/shield.png diff --git a/tutorials/getting_started/images/start_model.png b/src/tutorial/images/start_model.png similarity index 100% rename from tutorials/getting_started/images/start_model.png rename to src/tutorial/images/start_model.png diff --git a/tutorials/getting_started/images/state_description.png b/src/tutorial/images/state_description.png similarity index 100% rename from tutorials/getting_started/images/state_description.png rename to src/tutorial/images/state_description.png diff --git a/tutorials/getting_started/images/units_settings.png b/src/tutorial/images/units_settings.png similarity index 100% rename from tutorials/getting_started/images/units_settings.png rename to src/tutorial/images/units_settings.png diff --git a/tutorials/getting_started/images/wand_stars.png b/src/tutorial/images/wand_stars.png similarity index 100% rename from tutorials/getting_started/images/wand_stars.png rename to src/tutorial/images/wand_stars.png diff --git a/tutorials/getting_started/images/welcome_page.png b/src/tutorial/images/welcome_page.png similarity index 100% rename from tutorials/getting_started/images/welcome_page.png rename to src/tutorial/images/welcome_page.png diff --git a/tutorials/getting_started/images/wizard_addons.png b/src/tutorial/images/wizard_addons.png similarity index 100% rename from tutorials/getting_started/images/wizard_addons.png rename to src/tutorial/images/wizard_addons.png diff --git a/tutorials/getting_started/images/wizard_geo.png b/src/tutorial/images/wizard_geo.png similarity index 100% rename from tutorials/getting_started/images/wizard_geo.png rename to src/tutorial/images/wizard_geo.png diff --git a/tutorials/getting_started/images/wizard_location.png b/src/tutorial/images/wizard_location.png similarity index 100% rename from tutorials/getting_started/images/wizard_location.png rename to src/tutorial/images/wizard_location.png diff --git a/tutorials/getting_started/images/wizard_welcome.png b/src/tutorial/images/wizard_welcome.png similarity index 100% rename from tutorials/getting_started/images/wizard_welcome.png rename to src/tutorial/images/wizard_welcome.png diff --git a/tutorials/getting_started/images/zwave_add_controller.png b/src/tutorial/images/zwave_add_controller.png similarity index 100% rename from tutorials/getting_started/images/zwave_add_controller.png rename to src/tutorial/images/zwave_add_controller.png diff --git a/tutorials/getting_started/images/zwave_port_config.png b/src/tutorial/images/zwave_port_config.png similarity index 100% rename from tutorials/getting_started/images/zwave_port_config.png rename to src/tutorial/images/zwave_port_config.png diff --git a/tutorials/getting_started/index.md b/src/tutorial/index.md similarity index 100% rename from tutorials/getting_started/index.md rename to src/tutorial/index.md diff --git a/tutorials/getting_started/item_widgets.md b/src/tutorial/item_widgets.md similarity index 100% rename from tutorials/getting_started/item_widgets.md rename to src/tutorial/item_widgets.md diff --git a/tutorials/getting_started/model.md b/src/tutorial/model.md similarity index 100% rename from tutorials/getting_started/model.md rename to src/tutorial/model.md diff --git a/tutorials/getting_started/pages_intro.md b/src/tutorial/pages_intro.md similarity index 100% rename from tutorials/getting_started/pages_intro.md rename to src/tutorial/pages_intro.md diff --git a/tutorials/getting_started/persistence.md b/src/tutorial/persistence.md similarity index 100% rename from tutorials/getting_started/persistence.md rename to src/tutorial/persistence.md diff --git a/tutorials/getting_started/rules_advanced.md b/src/tutorial/rules_advanced.md similarity index 100% rename from tutorials/getting_started/rules_advanced.md rename to src/tutorial/rules_advanced.md diff --git a/tutorials/getting_started/rules_basic.md b/src/tutorial/rules_basic.md similarity index 100% rename from tutorials/getting_started/rules_basic.md rename to src/tutorial/rules_basic.md diff --git a/tutorials/getting_started/rules_blockly.md b/src/tutorial/rules_blockly.md similarity index 100% rename from tutorials/getting_started/rules_blockly.md rename to src/tutorial/rules_blockly.md diff --git a/tutorials/getting_started/rules_introduction.md b/src/tutorial/rules_introduction.md similarity index 100% rename from tutorials/getting_started/rules_introduction.md rename to src/tutorial/rules_introduction.md diff --git a/tutorials/getting_started/rules_overview.md b/src/tutorial/rules_overview.md similarity index 100% rename from tutorials/getting_started/rules_overview.md rename to src/tutorial/rules_overview.md diff --git a/tutorials/getting_started/rules_scenes.md b/src/tutorial/rules_scenes.md similarity index 100% rename from tutorials/getting_started/rules_scenes.md rename to src/tutorial/rules_scenes.md diff --git a/tutorials/getting_started/things_advanced.md b/src/tutorial/things_advanced.md similarity index 100% rename from tutorials/getting_started/things_advanced.md rename to src/tutorial/things_advanced.md diff --git a/tutorials/getting_started/things_intermediate.md b/src/tutorial/things_intermediate.md similarity index 100% rename from tutorials/getting_started/things_intermediate.md rename to src/tutorial/things_intermediate.md diff --git a/tutorials/getting_started/things_simple.md b/src/tutorial/things_simple.md similarity index 100% rename from tutorials/getting_started/things_simple.md rename to src/tutorial/things_simple.md diff --git a/tutorials/getting_started/tips-and-tricks.md b/src/tutorial/tips-and-tricks.md similarity index 100% rename from tutorials/getting_started/tips-and-tricks.md rename to src/tutorial/tips-and-tricks.md diff --git a/ui/building-pages.md b/src/ui/building-pages.md similarity index 100% rename from ui/building-pages.md rename to src/ui/building-pages.md diff --git a/ui/chart-pages.md b/src/ui/chart-pages.md similarity index 100% rename from ui/chart-pages.md rename to src/ui/chart-pages.md diff --git a/ui/css-pages-widgets.md b/src/ui/css-pages-widgets.md similarity index 100% rename from ui/css-pages-widgets.md rename to src/ui/css-pages-widgets.md diff --git a/ui/developer-tools.md b/src/ui/developer-tools.md similarity index 100% rename from ui/developer-tools.md rename to src/ui/developer-tools.md diff --git a/ui/floorplan-pages.md b/src/ui/floorplan-pages.md similarity index 100% rename from ui/floorplan-pages.md rename to src/ui/floorplan-pages.md diff --git a/ui/images/add_from_model.png b/src/ui/images/add_from_model.png similarity index 100% rename from ui/images/add_from_model.png rename to src/ui/images/add_from_model.png diff --git a/ui/images/chart_example.png b/src/ui/images/chart_example.png similarity index 100% rename from ui/images/chart_example.png rename to src/ui/images/chart_example.png diff --git a/ui/images/choose_layout.png b/src/ui/images/choose_layout.png similarity index 100% rename from ui/images/choose_layout.png rename to src/ui/images/choose_layout.png diff --git a/ui/images/configure-canvas.png b/src/ui/images/configure-canvas.png similarity index 100% rename from ui/images/configure-canvas.png rename to src/ui/images/configure-canvas.png diff --git a/ui/images/configure-grid.png b/src/ui/images/configure-grid.png similarity index 100% rename from ui/images/configure-grid.png rename to src/ui/images/configure-grid.png diff --git a/ui/images/fixed-layout-sample.png b/src/ui/images/fixed-layout-sample.png similarity index 100% rename from ui/images/fixed-layout-sample.png rename to src/ui/images/fixed-layout-sample.png diff --git a/ui/images/floorplan_example.png b/src/ui/images/floorplan_example.png similarity index 100% rename from ui/images/floorplan_example.png rename to src/ui/images/floorplan_example.png diff --git a/ui/images/homepage_example.png b/src/ui/images/homepage_example.png similarity index 100% rename from ui/images/homepage_example.png rename to src/ui/images/homepage_example.png diff --git a/ui/images/interactive-bulb-off.png b/src/ui/images/interactive-bulb-off.png similarity index 100% rename from ui/images/interactive-bulb-off.png rename to src/ui/images/interactive-bulb-off.png diff --git a/ui/images/interactive-bulb-on.png b/src/ui/images/interactive-bulb-on.png similarity index 100% rename from ui/images/interactive-bulb-on.png rename to src/ui/images/interactive-bulb-on.png diff --git a/ui/images/interactive-element-action.png b/src/ui/images/interactive-element-action.png similarity index 100% rename from ui/images/interactive-element-action.png rename to src/ui/images/interactive-element-action.png diff --git a/ui/images/interactive-element-add-openhab.png b/src/ui/images/interactive-element-add-openhab.png similarity index 100% rename from ui/images/interactive-element-add-openhab.png rename to src/ui/images/interactive-element-add-openhab.png diff --git a/ui/images/interactive-element-minimum-opacity.png b/src/ui/images/interactive-element-minimum-opacity.png similarity index 100% rename from ui/images/interactive-element-minimum-opacity.png rename to src/ui/images/interactive-element-minimum-opacity.png diff --git a/ui/images/interactive-element-rollershutter-window-config.png b/src/ui/images/interactive-element-rollershutter-window-config.png similarity index 100% rename from ui/images/interactive-element-rollershutter-window-config.png rename to src/ui/images/interactive-element-rollershutter-window-config.png diff --git a/ui/images/interactive-element-rollershutter-window.png b/src/ui/images/interactive-element-rollershutter-window.png similarity index 100% rename from ui/images/interactive-element-rollershutter-window.png rename to src/ui/images/interactive-element-rollershutter-window.png diff --git a/ui/images/interactive-element-text.png b/src/ui/images/interactive-element-text.png similarity index 100% rename from ui/images/interactive-element-text.png rename to src/ui/images/interactive-element-text.png diff --git a/ui/images/interactive-elements-svg.png b/src/ui/images/interactive-elements-svg.png similarity index 100% rename from ui/images/interactive-elements-svg.png rename to src/ui/images/interactive-elements-svg.png diff --git a/ui/images/interactive-room.png b/src/ui/images/interactive-room.png similarity index 100% rename from ui/images/interactive-room.png rename to src/ui/images/interactive-room.png diff --git a/ui/images/interactive-style.png b/src/ui/images/interactive-style.png similarity index 100% rename from ui/images/interactive-style.png rename to src/ui/images/interactive-style.png diff --git a/ui/images/map_example.png b/src/ui/images/map_example.png similarity index 100% rename from ui/images/map_example.png rename to src/ui/images/map_example.png diff --git a/ui/images/responsive1.png b/src/ui/images/responsive1.png similarity index 100% rename from ui/images/responsive1.png rename to src/ui/images/responsive1.png diff --git a/ui/images/responsive2.gif b/src/ui/images/responsive2.gif similarity index 100% rename from ui/images/responsive2.gif rename to src/ui/images/responsive2.gif diff --git a/ui/images/responsive_layout_example.png b/src/ui/images/responsive_layout_example.png similarity index 100% rename from ui/images/responsive_layout_example.png rename to src/ui/images/responsive_layout_example.png diff --git a/ui/images/sitemap_demo_buttongrid.png b/src/ui/images/sitemap_demo_buttongrid.png similarity index 100% rename from ui/images/sitemap_demo_buttongrid.png rename to src/ui/images/sitemap_demo_buttongrid.png diff --git a/ui/images/sitemap_demo_colorpicker.png b/src/ui/images/sitemap_demo_colorpicker.png similarity index 100% rename from ui/images/sitemap_demo_colorpicker.png rename to src/ui/images/sitemap_demo_colorpicker.png diff --git a/ui/images/sitemap_demo_colors.png b/src/ui/images/sitemap_demo_colors.png similarity index 100% rename from ui/images/sitemap_demo_colors.png rename to src/ui/images/sitemap_demo_colors.png diff --git a/ui/images/sitemap_demo_colortemperaturepicker.png b/src/ui/images/sitemap_demo_colortemperaturepicker.png similarity index 100% rename from ui/images/sitemap_demo_colortemperaturepicker.png rename to src/ui/images/sitemap_demo_colortemperaturepicker.png diff --git a/ui/images/sitemap_demo_frame.png b/src/ui/images/sitemap_demo_frame.png similarity index 100% rename from ui/images/sitemap_demo_frame.png rename to src/ui/images/sitemap_demo_frame.png diff --git a/ui/images/sitemap_demo_fullexample.png b/src/ui/images/sitemap_demo_fullexample.png similarity index 100% rename from ui/images/sitemap_demo_fullexample.png rename to src/ui/images/sitemap_demo_fullexample.png diff --git a/ui/images/sitemap_demo_group.png b/src/ui/images/sitemap_demo_group.png similarity index 100% rename from ui/images/sitemap_demo_group.png rename to src/ui/images/sitemap_demo_group.png diff --git a/ui/images/sitemap_demo_image.png b/src/ui/images/sitemap_demo_image.png similarity index 100% rename from ui/images/sitemap_demo_image.png rename to src/ui/images/sitemap_demo_image.png diff --git a/ui/images/sitemap_demo_input.png b/src/ui/images/sitemap_demo_input.png similarity index 100% rename from ui/images/sitemap_demo_input.png rename to src/ui/images/sitemap_demo_input.png diff --git a/ui/images/sitemap_demo_mapview.png b/src/ui/images/sitemap_demo_mapview.png similarity index 100% rename from ui/images/sitemap_demo_mapview.png rename to src/ui/images/sitemap_demo_mapview.png diff --git a/ui/images/sitemap_demo_selection.png b/src/ui/images/sitemap_demo_selection.png similarity index 100% rename from ui/images/sitemap_demo_selection.png rename to src/ui/images/sitemap_demo_selection.png diff --git a/ui/images/sitemap_demo_setpoint.png b/src/ui/images/sitemap_demo_setpoint.png similarity index 100% rename from ui/images/sitemap_demo_setpoint.png rename to src/ui/images/sitemap_demo_setpoint.png diff --git a/ui/images/sitemap_demo_slider.png b/src/ui/images/sitemap_demo_slider.png similarity index 100% rename from ui/images/sitemap_demo_slider.png rename to src/ui/images/sitemap_demo_slider.png diff --git a/ui/images/sitemap_demo_switch1.png b/src/ui/images/sitemap_demo_switch1.png similarity index 100% rename from ui/images/sitemap_demo_switch1.png rename to src/ui/images/sitemap_demo_switch1.png diff --git a/ui/images/sitemap_demo_switch2.png b/src/ui/images/sitemap_demo_switch2.png similarity index 100% rename from ui/images/sitemap_demo_switch2.png rename to src/ui/images/sitemap_demo_switch2.png diff --git a/ui/images/sitemap_demo_text.png b/src/ui/images/sitemap_demo_text.png similarity index 100% rename from ui/images/sitemap_demo_text.png rename to src/ui/images/sitemap_demo_text.png diff --git a/ui/images/sitemap_demo_video.png b/src/ui/images/sitemap_demo_video.png similarity index 100% rename from ui/images/sitemap_demo_video.png rename to src/ui/images/sitemap_demo_video.png diff --git a/ui/images/sitemap_demo_webview.png b/src/ui/images/sitemap_demo_webview.png similarity index 100% rename from ui/images/sitemap_demo_webview.png rename to src/ui/images/sitemap_demo_webview.png diff --git a/ui/images/tabbed_example.png b/src/ui/images/tabbed_example.png similarity index 100% rename from ui/images/tabbed_example.png rename to src/ui/images/tabbed_example.png diff --git a/ui/images/widget_action_configuration.png b/src/ui/images/widget_action_configuration.png similarity index 100% rename from ui/images/widget_action_configuration.png rename to src/ui/images/widget_action_configuration.png diff --git a/ui/images/widget_actions.png b/src/ui/images/widget_actions.png similarity index 100% rename from ui/images/widget_actions.png rename to src/ui/images/widget_actions.png diff --git a/ui/images/widget_config_sheet.png b/src/ui/images/widget_config_sheet.png similarity index 100% rename from ui/images/widget_config_sheet.png rename to src/ui/images/widget_config_sheet.png diff --git a/ui/images/widget_context_menu.png b/src/ui/images/widget_context_menu.png similarity index 100% rename from ui/images/widget_context_menu.png rename to src/ui/images/widget_context_menu.png diff --git a/ui/index.md b/src/ui/index.md similarity index 100% rename from ui/index.md rename to src/ui/index.md diff --git a/ui/layout-pages-fixed.md b/src/ui/layout-pages-fixed.md similarity index 100% rename from ui/layout-pages-fixed.md rename to src/ui/layout-pages-fixed.md diff --git a/ui/layout-pages-responsive.md b/src/ui/layout-pages-responsive.md similarity index 100% rename from ui/layout-pages-responsive.md rename to src/ui/layout-pages-responsive.md diff --git a/ui/layout-pages.md b/src/ui/layout-pages.md similarity index 100% rename from ui/layout-pages.md rename to src/ui/layout-pages.md diff --git a/ui/map-pages.md b/src/ui/map-pages.md similarity index 100% rename from ui/map-pages.md rename to src/ui/map-pages.md diff --git a/ui/personal-widgets.md b/src/ui/personal-widgets.md similarity index 100% rename from ui/personal-widgets.md rename to src/ui/personal-widgets.md diff --git a/ui/sitemaps.md b/src/ui/sitemaps.md similarity index 100% rename from ui/sitemaps.md rename to src/ui/sitemaps.md diff --git a/ui/tabbed-pages.md b/src/ui/tabbed-pages.md similarity index 100% rename from ui/tabbed-pages.md rename to src/ui/tabbed-pages.md diff --git a/ui/widget-expressions-variables.md b/src/ui/widget-expressions-variables.md similarity index 100% rename from ui/widget-expressions-variables.md rename to src/ui/widget-expressions-variables.md diff --git a/tutorials/index.html b/tutorials/index.html deleted file mode 100644 index 8d48070359..0000000000 --- a/tutorials/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -layout: raw -title: Tutorials ---- - -
-

Tutorials

-

Choose one of the options below to learn more about openHAB, either by following along a tutorial or by looking at a few examples.

-

openHAB empowers you to do (nearly) everything in your smart home. Start small, reach high!

- - -

Community

-

Feel free to check out the numerous tutorials and examples provided by many users in the openHAB community forum! There are new posts every week and show special aspects or bring in new ideas that the Getting Started Tutorial does not cover.

-

Here are just a selected few of the existing tutorials and examples:

- -

Contribute your own examples! Check out the "About" article and do not hesitate to contact one of the moderators for questions and help to get you going.

-
From 615e1f8d75d02356132b6a897f4f644e704fe6d2 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Fri, 8 May 2026 22:37:00 +1000 Subject: [PATCH 02/11] ensure dir exists in add_placeholders Signed-off-by: Jimmy Tanagra --- scripts/lib/add_placeholders.rb | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/scripts/lib/add_placeholders.rb b/scripts/lib/add_placeholders.rb index 546e9c7cae..246ccc8d54 100644 --- a/scripts/lib/add_placeholders.rb +++ b/scripts/lib/add_placeholders.rb @@ -1,10 +1,13 @@ # frozen_string_literal: true +require "pathname" + # This function will add placeholders for pages that are out of scope of the docs preview def add_placeholder_pages puts "➡️ Adding placeholder pages for preview" - [ + + pages = [ "docs/apps/android.md", "docs/apps/garmin", "docs/apps/sailfishos", @@ -22,17 +25,22 @@ def add_placeholder_pages "docs/installation/openhabian-troubleshooting.md", "docs/installation/openhabian-backup.md", "docs/installation/openhabian-exim.md" - ].each do |path| + ].map { |p| Pathname.new(p) } + + # Using a standard loop for better clarity and explicit logic at a glance + pages.each do |path| puts " ➡️ #{path}" - page = path - unless path =~ /\.md/ - FileUtils.mkdir_p(path) - page = File.join(path, "readme.md") - end - File.open(page, "w+") do |f| - f.puts "# This content is unavailable" - f.puts "" - f.puts "This content is migrated from another repository, and is not included in this preview." - end + + # Determine if we are writing a specific .md file or a folder's readme + target_file = (path.extname == ".md") ? path : path.join("readme.md") + + # Ensure the parent directory exists + target_file.dirname.mkpath + + target_file.write <<~MARKDOWN + # This content is unavailable + + This content is migrated from another repository and is not included in this preview. + MARKDOWN end end From dbfe74204e5318b78bcadce27563f5524c0005a6 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Fri, 8 May 2026 22:56:24 +1000 Subject: [PATCH 03/11] fix path Signed-off-by: Jimmy Tanagra --- scripts/prepare-docs.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/prepare-docs.rb b/scripts/prepare-docs.rb index e4e6c627cf..7eacac5409 100644 --- a/scripts/prepare-docs.rb +++ b/scripts/prepare-docs.rb @@ -6,8 +6,8 @@ require_relative "lib/process_utils" require_relative "lib/add_placeholders" -SRC_ROOT = File.join(__dir__, "src") -DST_ROOT = File.join(__dir__, "docs") +SRC_ROOT = "src" +DST_ROOT = "docs" FileUtils.rm_rf(DST_ROOT) From d8db01ba978c81bc380e9c0d020c43be66295b63 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Fri, 8 May 2026 22:58:27 +1000 Subject: [PATCH 04/11] make netlify use pre-compiled ruby Signed-off-by: Jimmy Tanagra --- netlify.toml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/netlify.toml b/netlify.toml index f0ad9e5208..44f67ab09c 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,3 +1,7 @@ +[build.environment] + MISE_RUBY_COMPILE = "false" + [[redirects]] from = "/" - to = "/docs" \ No newline at end of file + to = "/docs" + From b12f9c0e79ac805933939382a898b39bca6cb22a Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Fri, 8 May 2026 23:09:49 +1000 Subject: [PATCH 05/11] add missing paths Signed-off-by: Jimmy Tanagra --- scripts/lib/add_placeholders.rb | 2 ++ scripts/prepare-docs.rb | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/lib/add_placeholders.rb b/scripts/lib/add_placeholders.rb index 246ccc8d54..64563cb728 100644 --- a/scripts/lib/add_placeholders.rb +++ b/scripts/lib/add_placeholders.rb @@ -8,6 +8,8 @@ def add_placeholder_pages puts "➡️ Adding placeholder pages for preview" pages = [ + "addons/integrations/homekit", + "addons/integrations/openhabcloud", "docs/apps/android.md", "docs/apps/garmin", "docs/apps/sailfishos", diff --git a/scripts/prepare-docs.rb b/scripts/prepare-docs.rb index 7eacac5409..341c3a8c76 100644 --- a/scripts/prepare-docs.rb +++ b/scripts/prepare-docs.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true require "fileutils" -require "pathname" require_relative "lib/process_utils" require_relative "lib/add_placeholders" From a00e9ecd28741626504e4a628bac589b4ba87500 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Fri, 8 May 2026 23:11:56 +1000 Subject: [PATCH 06/11] upgrade ruby to 3.3.11 Signed-off-by: Jimmy Tanagra --- .ruby-version | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.ruby-version b/.ruby-version index 4772543317..b9b3b0de0a 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -3.3.2 +3.3.11 diff --git a/README.md b/README.md index b5ed5d4f9a..f7ae523a37 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ It is possible to build a preview version of the documentation on your local mac The following software is required: - [`NodeJS = 16.20.1`](https://nodejs.org/en) -- [`Ruby >= 3.3.2`](https://www.ruby-lang.org/en/) +- [`Ruby >= 3.3.11`](https://www.ruby-lang.org/en/) We recommend to use [Node Version Manager](https://github.com/nvm-sh/nvm) as well as [Ruby Version Manager](https://rvm.io/) to easily allow using multiple versions of NodeJS and Ruby for multiple projects. If you don't do that, you can simply start by only installing the above mentioned versions. @@ -89,7 +89,7 @@ If `nvm` and/or `rvm` complain about the required versions not being installed, ```shell script nvm install 16.20.1 -rvm install ruby-3.3.2 +rvm install ruby-3.3.11 ``` Next, you can build & serve the documentation preview: From 97c8739a553b2ebcf43bda171f38faf262160f07 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Sat, 9 May 2026 17:57:27 +1000 Subject: [PATCH 07/11] adapt process_markdown addon detection Signed-off-by: Jimmy Tanagra --- scripts/lib/process_utils.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/lib/process_utils.rb b/scripts/lib/process_utils.rb index f0ecf55393..d545743c9a 100644 --- a/scripts/lib/process_utils.rb +++ b/scripts/lib/process_utils.rb @@ -59,7 +59,7 @@ def process_markdown(indir, file, outdir, source) outdir_parts[1] = "io" if outdir_parts[1] == "integrations" if outdir_parts[0] == "addons" addon_type = outdir_parts[1] - addon = file.split("/")[0] + addon = outdir_parts[2] source = "" if addon_type == "ui" puts " (add-on type is ui)" @@ -80,7 +80,7 @@ def process_markdown(indir, file, outdir, source) out.puts "prev: ../#{addon.split(".")[0]}/" if addon.include?(".") # Prev link to the main binding doc for zwave/doc/things.md - out.puts "prev: ../" if file == "zwave/doc/things.md" + out.puts "prev: ../" if addon == "zwave" && outdir.end_with?("/doc") && file == "things.md" end end From e336515d436f667a4944030aef3d50490f688193 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Sat, 9 May 2026 17:57:55 +1000 Subject: [PATCH 08/11] update openhabian fetching target directory Signed-off-by: Jimmy Tanagra --- .github/workflows/fetch_docs_openhabian.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fetch_docs_openhabian.yml b/.github/workflows/fetch_docs_openhabian.yml index f83e4f59d4..e4374d3220 100644 --- a/.github/workflows/fetch_docs_openhabian.yml +++ b/.github/workflows/fetch_docs_openhabian.yml @@ -13,7 +13,7 @@ jobs: with: base_source_repository: openhabian base_source_ref: ${{ github.event.client_payload.ref }} - base_folder: installation + base_folder: src/installation doc_base_name: openhabian has_images: true is_self_contained: false From 67ef150ac9765c4409da6edb1102569d1c969e31 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Sun, 10 May 2026 13:14:56 +1000 Subject: [PATCH 09/11] fix file/path checks in process_markdown Signed-off-by: Jimmy Tanagra --- scripts/lib/process_utils.rb | 155 +++++++++++++++++++++-------------- 1 file changed, 95 insertions(+), 60 deletions(-) diff --git a/scripts/lib/process_utils.rb b/scripts/lib/process_utils.rb index d545743c9a..891810541c 100644 --- a/scripts/lib/process_utils.rb +++ b/scripts/lib/process_utils.rb @@ -17,14 +17,18 @@ def process_markdown(indir, file, outdir, source) og_title = "openHAB" og_description = "a vendor and technology agnostic open source automation software for your home" - unless File.exist?("#{indir}/#{file}") - verbose "process_markdown: IGNORING (NON-EXISTING): #{indir}/#{file}" + input_path = Pathname.new(indir) / file + output_path = Pathname.new(outdir) / file + input_path_str = input_path.to_s + + unless input_path.exist? + verbose "process_markdown: IGNORING (NON-EXISTING): #{input_path}" return end - FileUtils.mkdir_p(outdir) - File.open("#{outdir}/#{file}", "w+") do |out| - File.open("#{indir}/#{file}").each do |line| + output_path.dirname.mkpath + output_path.open("w") do |out| + input_path.each_line.with_index(1) do |line, line_number| next if line =~ /^layout: documentation/ next if line =~ /^layout: tutorial/ next if line =~ /^layout: developers/ @@ -67,10 +71,10 @@ def process_markdown(indir, file, outdir, source) elsif addon == "zigbee" puts " (add-on is zigbee)" source = "https://github.com/openhab/org.openhab.binding.zigbee/blob/#{ADDONS_REPO_BRANCH}/org.openhab.binding.zigbee/README.md" - elsif addon == "zwave" && file !~ /things/ + elsif addon == "zwave" && input_path_str !~ /things/ puts " (add-on is zwave)" source = "https://github.com/openhab/org.openhab.binding.zwave/blob/#{ADDONS_REPO_BRANCH}/README.md" - elsif file !~ /things/ + elsif input_path_str !~ /things/ source = "https://github.com/openhab/openhab-addons/blob/#{ADDONS_REPO_BRANCH}/bundles/org.openhab.#{addon_type}.#{addon}/README.md" end @@ -80,7 +84,7 @@ def process_markdown(indir, file, outdir, source) out.puts "prev: ../#{addon.split(".")[0]}/" if addon.include?(".") # Prev link to the main binding doc for zwave/doc/things.md - out.puts "prev: ../" if addon == "zwave" && outdir.end_with?("/doc") && file == "things.md" + out.puts "prev: ../" if addon == "zwave" && outdir.end_with?("/doc") && input_path.basename.to_s == "things.md" end end @@ -97,71 +101,87 @@ def process_markdown(indir, file, outdir, source) end # Remove collapsibles in Linux install document and replace them by regular headings - next if line =~ /include collapsible/ && file =~ /linux/ + next if line =~ /include collapsible/ && input_path_str =~ /linux/ - line = "##### #{line}" if line =~ /^Apt Based Systems/ && file =~ /linux/ - line = "##### #{line}" if line =~ /^Yum or Dnf Based Systems/ && file =~ /linux/ - line = "##### #{line}" if line =~ /^Systems based on/ && file =~ /linux/ + line = "##### #{line}" if line =~ /^Apt Based Systems/ && input_path_str =~ /linux/ + line = "##### #{line}" if line =~ /^Yum or Dnf Based Systems/ && input_path_str =~ /linux/ + line = "##### #{line}" if line =~ /^Systems based on/ && input_path_str =~ /linux/ # Expand comments with a list of links # (https://github.com/eclipse/smarthome/issues/5571) if line =~ // - sub_addons = get_subs_links(file.split("/")[0], indir) + parent_addon = input_path.dirname.basename.to_s + sub_addons = get_subs_links(parent_addon, indir) out.puts - sub_addons.each do |sub| - out.puts "- [#{sub[1]}](../#{sub[0]}/)" + sub_addons.each do |name, title| + out.puts "- [#{title}](../#{name}/)" end out.puts end + # Log replacements so we know which files need to be fixed in the source + log_replace = lambda do |pattern, replacement| + column = line.index(pattern) + next if line.gsub!(pattern, replacement).nil? + + from = UI.colorize(pattern.inspect, :red) + to = UI.colorize(replacement, :green) + # Build a clickable link in supported terminals + location = UI.colorize("#{input_path}:#{line_number}:#{column + 1}", :cyan) + puts " (replacing #{from} -> #{to} in #{location})" + end + # Replace links to generated docs in ZWave's things.md by links to the internal viewer - line = line.gsub(%r{]\((.*)/(.*)\)}, '](../thing.html?manufacturer=\1&file=\2)') if file == "zwave/doc/things.md" + line.gsub!(%r{]\((.*)/(.*)\)}, '](../thing.html?manufacturer=\1&file=\2)') if input_path.fnmatch?("*/zwave/doc/things.md") # Misc replaces (relative links, remove placeholder interpreted as custom tags) - line = line.gsub(%r{https?://docs\.openhab\.org/addons/uis/habpanel/readme\.html}, - "/docs/configuration/habpanel.html") - line = line.gsub(%r{https?://docs\.openhab\.org/addons/uis/basic/readme\.html}, "/addons/ui/basic/") - line = line.gsub(%r{https?://docs\.openhab\.org/addons/(.*)/(.*)/readme\.html}, '/addons/\1/\2/') - line = line.gsub(%r{https?://docs\.openhab\.org/}, "/docs/") - line = line.gsub(%r{https?://(?:www\.)?openhab\.org/docs/}, "/docs/") - line = line.gsub("/addons/io/", "/addons/integrations/") - line = line.gsub("{{base}}/", "./docs/") - line = line.gsub("(images/", "(./images/") - line = line.gsub("src=\"images/", "src=\"./images/") - line = line.gsub("]:images/", "]:./images/") - line = line.gsub("](doc/", "](./doc/") - line = line.gsub("(diagrams/", "(./diagrams/") - line = line.gsub("./docs/tutorials/beginner/", "/docs/tutorial/") - line = line.gsub("./docs/", "/docs/") - line = line.gsub("", '\') - line = line.gsub("", '\') - line = line.gsub("(?(?!`)", '\') - line = line.gsub("", '\') - line = line.gsub("", "``") if file =~ /amazonechocontrol/ - line = line.gsub("", "<SerialNumber>") if file =~ /airvisualnode/ - line = line.gsub("", "<version>") if file =~ /caldav/ - line = line.gsub("by ", "by ``") if file =~ /ipx8001/ - line = line.gsub("
", "
") - line = line.gsub("':'", "`:`") if file =~ /lametrictime/ - line = line.gsub("", "``") if file =~ /milight/ - line = line.gsub("", "``") if file =~ /milight/ - line = line.gsub("", "``") if file =~ /milight/ - line = line.gsub("", "``") if file =~ /milight/ - line = line.gsub("", "``") if file =~ /milight/ - line = line.gsub("", "``") if file =~ /milight/ - line = line.gsub("[](", "[here](") if file =~ /powermax1/ - line = line.gsub("", "<n>") if file =~ /rfxcom/ - line = line.gsub(" ", " <value> ") if file =~ /zibase/ - line = line.gsub("", "<username>") if file =~ /zoneminder/ - line = line.gsub("", "<password>") if file =~ /zoneminder/ - line = line.gsub("", "<yourzmip>") if file =~ /zoneminder/ - line = line.gsub(" ", " <chatId> ") if file =~ /telegram/ - line = line.gsub(" ", " <token> ") if file =~ /telegram/ - line = line.gsub("", '\') - line = line.gsub('src="images/', 'src="./images/') if outdir =~ /apps/ - line = line.gsub("](/images/", "](./images/") if outdir =~ /google-assistant/ - - line = line.gsub(/\{:(style|target).*\}/, "") # Jekyll inline attributes syntax not supported + + # Normal replacements, no logging needed + line.gsub!("{{base}}/", "./docs/") + line.gsub!("](doc/", "](./doc/") + line.gsub!("(images/", "(./images/") + line.gsub!("src=\"images/", "src=\"./images/") + line.gsub!("]:images/", "]:./images/") + line.gsub!("
", "
") + line.gsub!("(diagrams/", "(./diagrams/") + line.gsub!("./docs/", "/docs/") + line.gsub!(%r{https?://(?:www\.)?openhab\.org/docs/}, "/docs/") + + # Log these replacements as they indicate issues in the source that should be fixed + log_replace.call(%r{https?://docs\.openhab\.org/addons/uis/habpanel/readme\.html}, "/docs/configuration/habpanel.html") + log_replace.call(%r{https?://docs\.openhab\.org/addons/uis/basic/readme\.html}, "/addons/ui/basic/") + log_replace.call(%r{https?://docs\.openhab\.org/addons/(.*)/(.*)/readme\.html}, '/addons/\1/\2/') + log_replace.call(%r{https?://docs\.openhab\.org/}, "/docs/") + log_replace.call("/addons/io/", "/addons/integrations/") + log_replace.call("./docs/tutorials/beginner/", "/docs/tutorial/") + log_replace.call("", '\') + log_replace.call("", '\') + log_replace.call("(?(?!`)", '\') + # line = line.gsub("", '\') # fixed in source + # line = line.gsub("", "``") if file =~ /amazonechocontrol/ # already fixed in source - also misspelling fixed + # line = line.gsub("", "<SerialNumber>") if file =~ /airvisualnode/ # already fixed in source + # line = line.gsub("", "<version>") if file =~ /caldav/ # binding no longer exists + # replace.call("by ", "by ``") if file =~ /ipx8001/ # binding no longer exists + log_replace.call("':'", "`:`") if input_path_str =~ /lametrictime/ + log_replace.call("", "``") if input_path_str =~ /milight/ + log_replace.call("", "``") if input_path_str =~ /milight/ + log_replace.call("", "``") if input_path_str =~ /milight/ + log_replace.call("", "``") if input_path_str =~ /milight/ + log_replace.call("", "``") if input_path_str =~ /milight/ + log_replace.call("", "``") if input_path_str =~ /milight/ + log_replace.call("[](", "[here](") if input_path_str =~ /powermax1/ + log_replace.call("", "<n>") if input_path_str =~ /rfxcom/ + log_replace.call(" ", " <value> ") if input_path_str =~ /zibase/ + log_replace.call("", "<username>") if input_path_str =~ /zoneminder/ + log_replace.call("", "<password>") if input_path_str =~ /zoneminder/ + log_replace.call("", "<yourzmip>") if input_path_str =~ /zoneminder/ + log_replace.call(" ", " <chatId> ") if input_path_str =~ /telegram/ + log_replace.call(" ", " <token> ") if input_path_str =~ /telegram/ + log_replace.call("", '\') + log_replace.call('src="images/', 'src="./images/') if output_path.to_s =~ /apps/ + log_replace.call("](/images/", "](./images/") if output_path.to_s =~ /google-assistant/ + + log_replace.call(/\{:(style|target).*\}/, "") # Jekyll inline attributes syntax not supported out.puts line end @@ -229,3 +249,18 @@ def get_subs_links(parent_addon_id, search_dir) sub_addons end + +# +# Simple utility to colorize terminal output for better visibility +# +module UI + COLORS = { + red: 31, green: 32, yellow: 33, blue: 34, + magenta: 35, cyan: 36, white: 37 + } + + def self.colorize(text, color_name) + color_code = COLORS.fetch(color_name, 37) # Default to white + "\e[#{color_code}m#{text}\e[0m" + end +end From 239935a823eec0d18bcfa7b7dabb82a0a0cfda0b Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Sun, 10 May 2026 14:05:58 +1000 Subject: [PATCH 10/11] fix `` replacement Signed-off-by: Jimmy Tanagra --- scripts/lib/process_utils.rb | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/scripts/lib/process_utils.rb b/scripts/lib/process_utils.rb index 891810541c..9f3258862f 100644 --- a/scripts/lib/process_utils.rb +++ b/scripts/lib/process_utils.rb @@ -110,13 +110,12 @@ def process_markdown(indir, file, outdir, source) # Expand comments with a list of links # (https://github.com/eclipse/smarthome/issues/5571) if line =~ // - parent_addon = input_path.dirname.basename.to_s - sub_addons = get_subs_links(parent_addon, indir) - out.puts + addon_path = input_path.dirname + sub_addons = get_sub_addons(addon_path) sub_addons.each do |name, title| out.puts "- [#{title}](../#{name}/)" end - out.puts + next end # Log replacements so we know which files need to be fixed in the source @@ -234,17 +233,17 @@ def process_directory(src:, dst:, source_root: nil, &block) end # Get a list of sub-addons to transform them into links -def get_subs_links(parent_addon_id, search_dir) +def get_sub_addons(parent_addon_path) sub_addons = [] - Dir.glob("#{search_dir}/#{parent_addon_id}.*/**/readme.md") do |sub_readme| - sub_addon_id = File.dirname(sub_readme).split("/").last - verbose " ➡️ expanding list of sub-addons: #{sub_addon_id}" - File.open(sub_readme).each do |line| - if line =~ /^# / - sub_addons.push([sub_addon_id, line.gsub("# ", "").strip]) - break - end - end + parent_addon_name = parent_addon_path.basename + parent_addon_path.dirname.glob("#{parent_addon_name}.*/readme.md") do |sub_readme| + sub_addon_id = sub_readme.dirname.basename.to_s + header_line = sub_readme.each_line.find { |line| line.start_with?("# ") } + next unless header_line + + title = header_line.delete_prefix("# ").strip + verbose " ➡️ expanding list of sub-addons: #{sub_addon_id}: #{title}" + sub_addons << [sub_addon_id, title] end sub_addons From fd57d314b7b0c3d24a97afcbdf2ad98d2be05de3 Mon Sep 17 00:00:00 2001 From: Jimmy Tanagra Date: Sun, 10 May 2026 21:52:25 +1000 Subject: [PATCH 11/11] migrate vscode source urls Signed-off-by: Jimmy Tanagra --- migrate-to-src.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migrate-to-src.sh b/migrate-to-src.sh index abf4d3bd18..acedacb04e 100644 --- a/migrate-to-src.sh +++ b/migrate-to-src.sh @@ -40,6 +40,8 @@ smart_move addons/uis/apps src/apps smart_move tutorials/getting_started src/tutorial smart_move developers src/developer +sed -i 's|openhab-docs/main/developers/ide/|openhab-docs/main/src/developer/ide/|g' src/developer/ide/vscode.md + for folder in administration concepts configuration installation mainui ui; do smart_move "$folder" "src/$folder" done