From f20bf6f7bb8c0bfc1ea3e168987c16c72a46e176 Mon Sep 17 00:00:00 2001 From: Bo Kamphues Date: Thu, 17 Dec 2020 12:40:49 +0100 Subject: [PATCH 1/3] Formatting --- env/includes/settings/tk-multi-workfiles2.yml | 721 +++++++++--------- 1 file changed, 362 insertions(+), 359 deletions(-) diff --git a/env/includes/settings/tk-multi-workfiles2.yml b/env/includes/settings/tk-multi-workfiles2.yml index f6ffc7b0a..2b0e9310a 100644 --- a/env/includes/settings/tk-multi-workfiles2.yml +++ b/env/includes/settings/tk-multi-workfiles2.yml @@ -11,7 +11,7 @@ ################################################################################ includes: -- ../app_locations.yml + - ../app_locations.yml ################################################################################ @@ -31,104 +31,106 @@ includes: settings.tk-multi-workfiles2: &settings_tk-multi-workfiles2 entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" # launches at startup. settings.tk-multi-workfiles2.launch_at_startup: launch_at_startup: true entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" ################################################################################ # ---- 3dsmaxplus -settings.tk-multi-workfiles2.3dsmaxplus.asset_step: &settings_tk-multi-workfiles2_3dsmaxplus_asset_step +settings.tk-multi-workfiles2.3dsmaxplus.asset_step: + &settings_tk-multi-workfiles2_3dsmaxplus_asset_step template_publish: max_asset_publish template_publish_area: asset_publish_area_max template_work: max_asset_work template_work_area: asset_work_area_max entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" -settings.tk-multi-workfiles2.3dsmaxplus.shot_step: &settings_tk-multi-workfiles2_3dsmaxplus_shot_step +settings.tk-multi-workfiles2.3dsmaxplus.shot_step: + &settings_tk-multi-workfiles2_3dsmaxplus_shot_step template_publish: max_shot_publish template_publish_area: shot_publish_area_max template_work: max_shot_work template_work_area: shot_work_area_max entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" ################################################################################ @@ -153,10 +155,10 @@ settings.tk-multi-workfiles2.3dsmax.shot_step: settings.tk-multi-workfiles2.hiero: entities: - - caption: Projects - entity_type: Project - filters: [] - hierarchy: [name] + - caption: Projects + entity_type: Project + filters: [] + hierarchy: [name] show_my_tasks: false template_publish: hiero_project_publish template_publish_area: hiero_project_publish_area @@ -174,25 +176,26 @@ settings.tk-multi-workfiles2.houdini.asset_step: template_publish_area: asset_publish_area_houdini template_work: houdini_asset_work template_work_area: asset_work_area_houdini + my_tasks_filters: entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" # shot_step @@ -202,25 +205,25 @@ settings.tk-multi-workfiles2.houdini.shot_step: template_work: houdini_shot_work template_work_area: shot_work_area_houdini entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - location: '@apps.tk-multi-workfiles2.location' + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + location: "@apps.tk-multi-workfiles2.location" ################################################################################ @@ -233,24 +236,24 @@ settings.tk-multi-workfiles2.maya.asset_step: template_work: maya_asset_work template_work_area: asset_work_area_maya entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" # shot_step @@ -260,25 +263,25 @@ settings.tk-multi-workfiles2.maya.shot_step: template_work: maya_shot_work template_work_area: shot_work_area_maya entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - location: '@apps.tk-multi-workfiles2.location' + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + location: "@apps.tk-multi-workfiles2.location" ################################################################################ @@ -291,24 +294,24 @@ settings.tk-multi-workfiles2.nuke.asset_step: template_work: nuke_asset_work template_work_area: asset_work_area_nuke entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" # shot_step @@ -318,24 +321,24 @@ settings.tk-multi-workfiles2.nuke.shot_step: template_work: nuke_shot_work template_work_area: shot_work_area_nuke entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" ################################################################################ @@ -349,24 +352,24 @@ settings.tk-multi-workfiles2.photoshop.asset_step: template_work: photoshop_asset_work template_work_area: asset_work_area_photoshop entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" # shot_step @@ -376,24 +379,24 @@ settings.tk-multi-workfiles2.photoshop.shot_step: template_work: photoshop_shot_work template_work_area: shot_work_area_photoshop entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" ################################################################################ @@ -403,24 +406,24 @@ settings.tk-multi-workfiles2.photoshop.shot_step: # project settings.tk-multi-workfiles2.aftereffects: entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] hook_scene_operation: "{engine}/tk-multi-workfiles2/basic/scene_operation.py" location: "@apps.tk-multi-workfiles2.location" @@ -431,24 +434,24 @@ settings.tk-multi-workfiles2.aftereffects.asset_step: template_work: aftereffects_asset_work template_work_area: asset_work_area_aftereffects entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] hook_scene_operation: "{engine}/tk-multi-workfiles2/basic/scene_operation.py" location: "@apps.tk-multi-workfiles2.location" @@ -459,24 +462,24 @@ settings.tk-multi-workfiles2.aftereffects.shot_step: template_work: aftereffects_shot_work template_work_area: shot_work_area_aftereffects entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] hook_scene_operation: "{engine}/tk-multi-workfiles2/basic/scene_operation.py" location: "@apps.tk-multi-workfiles2.location" @@ -490,24 +493,24 @@ settings.tk-multi-workfiles2.motionbuilder.asset_step: template_work: mobu_asset_work template_work_area: asset_work_area_mobu entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" settings.tk-multi-workfiles2.motionbuilder.shot_step: @@ -516,24 +519,24 @@ settings.tk-multi-workfiles2.motionbuilder.shot_step: template_work: mobu_shot_work template_work_area: shot_work_area_mobu entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] - - caption: Shots - entity_type: Shot - filters: - hierarchy: [sg_sequence, code] - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] + - caption: Shots + entity_type: Shot + filters: + hierarchy: [sg_sequence, code] + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] location: "@apps.tk-multi-workfiles2.location" ################################################################################ @@ -543,20 +546,20 @@ settings.tk-multi-workfiles2.motionbuilder.shot_step: # project settings.tk-multi-workfiles2.alias: entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] my_tasks_filters: - filter_operator: any filters: - - [task_assignees.Group.users, is, '{context.user}'] - - [task_assignees, is, '{context.user}'] + - [task_assignees.Group.users, is, "{context.user}"] + - [task_assignees, is, "{context.user}"] custom_actions_hook: "{engine}/tk-multi-workfiles2/basic/custom_actions.py" hook_scene_operation: "{engine}/tk-multi-workfiles2/basic/scene_operation.py" location: "@apps.tk-multi-workfiles2.location" @@ -568,20 +571,20 @@ settings.tk-multi-workfiles2.alias.asset_step: template_work: alias_asset_work template_work_area: asset_work_area_alias entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] my_tasks_filters: - filter_operator: any filters: - - [task_assignees.Group.users, is, '{context.user}'] - - [task_assignees, is, '{context.user}'] + - [task_assignees.Group.users, is, "{context.user}"] + - [task_assignees, is, "{context.user}"] custom_actions_hook: "{engine}/tk-multi-workfiles2/basic/custom_actions.py" hook_scene_operation: "{engine}/tk-multi-workfiles2/basic/scene_operation.py" location: "@apps.tk-multi-workfiles2.location" @@ -593,20 +596,20 @@ settings.tk-multi-workfiles2.alias.asset_step: # project settings.tk-multi-workfiles2.vred: entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] my_tasks_filters: - filter_operator: any filters: - - [task_assignees.Group.users, is, '{context.user}'] - - [task_assignees, is, '{context.user}'] + - [task_assignees.Group.users, is, "{context.user}"] + - [task_assignees, is, "{context.user}"] hook_scene_operation: "{engine}/tk-multi-workfiles2/basic/scene_operation.py" location: "@apps.tk-multi-workfiles2.location" @@ -617,19 +620,19 @@ settings.tk-multi-workfiles2.vred.asset_step: template_work: vred_asset_work template_work_area: asset_work_area_vred entities: - - caption: Assets - entity_type: Asset - hierarchy: [sg_asset_type, code] - filters: - sub_hierarchy: - entity_type: Task - filters: - link_field: entity - hierarchy: [step] + - caption: Assets + entity_type: Asset + hierarchy: [sg_asset_type, code] + filters: + sub_hierarchy: + entity_type: Task + filters: + link_field: entity + hierarchy: [step] my_tasks_filters: - filter_operator: any filters: - - [task_assignees.Group.users, is, '{context.user}'] - - [task_assignees, is, '{context.user}'] + - [task_assignees.Group.users, is, "{context.user}"] + - [task_assignees, is, "{context.user}"] hook_scene_operation: "{engine}/tk-multi-workfiles2/basic/scene_operation.py" location: "@apps.tk-multi-workfiles2.location" From 08acbc3aa222dc1083e1e146773cc840de70209c Mon Sep 17 00:00:00 2001 From: Bo Kamphues Date: Thu, 17 Dec 2020 12:44:02 +0100 Subject: [PATCH 2/3] Formatting --- env/includes/settings/tk-desktop2.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/env/includes/settings/tk-desktop2.yml b/env/includes/settings/tk-desktop2.yml index 73392a516..edc0ee880 100644 --- a/env/includes/settings/tk-desktop2.yml +++ b/env/includes/settings/tk-desktop2.yml @@ -12,10 +12,10 @@ ################################################################################ includes: -- ../app_locations.yml -- ../engine_locations.yml -- ./tk-multi-launchapp.yml -- ./tk-multi-publish2.yml + - ../app_locations.yml + - ../engine_locations.yml + - ./tk-multi-launchapp.yml + - ./tk-multi-publish2.yml ################################################################################ @@ -24,7 +24,6 @@ settings.tk-desktop2.site: apps: location: "@engines.tk-desktop2.location" - # project settings.tk-desktop2.all: apps: From 178da0ea0f85c43d465e48a432910428d5d218a9 Mon Sep 17 00:00:00 2001 From: Bo Kamphues Date: Mon, 11 Jan 2021 11:40:16 +0100 Subject: [PATCH 3/3] Updated Arnold app --- env/includes/app_locations.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/env/includes/app_locations.yml b/env/includes/app_locations.yml index 31dfa9838..7a3d8ffc3 100644 --- a/env/includes/app_locations.yml +++ b/env/includes/app_locations.yml @@ -188,7 +188,7 @@ apps.tk-houdini-arnold.location: type: github_release organization: nfa-vfxim repository: tk-houdini-arnold - version: 0.1.2 + version: 0.2.1 # ---- Nuke apps