From 53154504579385acc33af1d97e50000c20554076 Mon Sep 17 00:00:00 2001 From: clragon Date: Sun, 26 Jan 2025 21:15:07 +0000 Subject: [PATCH 1/8] [UI] Add version indicator in footer --- app/logical/git_helper.rb | 4 ++++ app/views/static/_footer.html.erb | 1 + 2 files changed, 5 insertions(+) diff --git a/app/logical/git_helper.rb b/app/logical/git_helper.rb index c59e496b9..4de133bd1 100644 --- a/app/logical/git_helper.rb +++ b/app/logical/git_helper.rb @@ -11,6 +11,10 @@ module GitHelper end end + def self.hash + @hash + end + def self.short_hash @hash[0..8] end diff --git a/app/views/static/_footer.html.erb b/app/views/static/_footer.html.erb index 0654485b4..5821cb374 100644 --- a/app/views/static/_footer.html.erb +++ b/app/views/static/_footer.html.erb @@ -16,5 +16,6 @@ <%= link_to "Keyboard Shortcuts", keyboard_shortcuts_path %> <% end %> <%= link_to disable_mobile_mode? ? "Mobile mode: OFF": "Mobile mode: ON", disable_mobile_mode_path, :rel => "nofollow" %> + <%= link_to "##{GitHelper.short_hash}", GitHelper.commit_url(GitHelper.hash) %> From 13bdc2dfe01b3c18f41e904919457886dfc9d1d8 Mon Sep 17 00:00:00 2001 From: Cinder Date: Sun, 26 Jan 2025 07:28:02 -0800 Subject: [PATCH 2/8] [Posts] Add a confirmation dialogue to the tag script "apply all" button (#857) --- app/javascript/src/javascripts/post_mode_menu.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/javascript/src/javascripts/post_mode_menu.js b/app/javascript/src/javascripts/post_mode_menu.js index 1908c4de1..a94151fdf 100644 --- a/app/javascript/src/javascripts/post_mode_menu.js +++ b/app/javascript/src/javascripts/post_mode_menu.js @@ -107,7 +107,9 @@ PostModeMenu.initialize_tag_script_field = function () { PostModeMenu.tag_script_apply_all = function (event) { event.preventDefault(); - $("article.thumbnail").trigger("click"); + const posts = $("article.thumbnail"); + if (!confirm(`Apply the tag script to ${posts.length} posts?`)) return; + posts.trigger("click"); }; PostModeMenu.update_sets_menu = function () { From 48396ea171d1446ad48bb20426401b354160bb1e Mon Sep 17 00:00:00 2001 From: Cinder Date: Sun, 26 Jan 2025 07:37:42 -0800 Subject: [PATCH 3/8] [Blacklist] Fix a bug that caused videos not to get paused when blacklisted (#858) --- app/javascript/src/javascripts/blacklists.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/javascript/src/javascripts/blacklists.js b/app/javascript/src/javascripts/blacklists.js index 6195b73a5..f2a8488ea 100644 --- a/app/javascript/src/javascripts/blacklists.js +++ b/app/javascript/src/javascripts/blacklists.js @@ -1,6 +1,7 @@ import Filter from "./models/Filter"; import PostCache from "./models/PostCache"; import Utility from "./utility"; +import Page from "./utility/page"; import LStorage from "./utility/storage"; let Blacklist = {}; @@ -235,7 +236,7 @@ $(() => { // Pause videos when blacklisting // This seems extraordinarily uncommon, so it's here // just for feature parity with the old blacklist. - if ($("#c-posts #a-show").length > 0) return; + if (!Page.matches("posts", "show")) return; let container = $("#image-container[data-file-ext='webm']").on("blk:hide", () => { const video = container.find("video"); if (!video.length) return; From 90edfec0a9633af4f8aabdbb345319ef6904d496 Mon Sep 17 00:00:00 2001 From: Cinder Date: Mon, 27 Jan 2025 07:07:11 -0800 Subject: [PATCH 4/8] [Posts] Add a wiki excerpt to the search page (#861) --- app/controllers/posts_controller.rb | 15 +++- app/javascript/packs/application.js | 2 + app/javascript/src/javascripts/post_search.js | 24 +++++ .../src/javascripts/utility/storage.js | 3 + .../src/styles/specific/post_index.scss | 88 +++++++++++++++++++ .../posts/partials/index/_posts.html.erb | 10 ++- 6 files changed, 140 insertions(+), 2 deletions(-) diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index f93529d00..843ee2dec 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -15,9 +15,22 @@ class PostsController < ApplicationController else @post_set = PostSets::Post.new(tag_query, params[:page], limit: params[:limit], random: params[:random]) @posts = PostsDecorator.decorate_collection(@post_set.posts) + + @query = tag_query.nil? ? [] : tag_query.strip.split(/ /, 2).compact_blank + if @query.length == 1 + @wiki_page = WikiPage.titled(@query[0]) + @wiki_text = @wiki_page.present? ? @wiki_page.body : "" + if @wiki_text.present? + @wiki_text = @wiki_text + .gsub(/thumb #\d+ ?/, "") + .strip + .truncate(512) + end + end + respond_with(@posts) do |format| format.json do - render json: @post_set.api_posts, root: 'posts' + render json: @post_set.api_posts, root: "posts" end format.atom end diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js index b04f50f6d..b5a0cb670 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.js @@ -34,6 +34,8 @@ importAll(require.context('../src/javascripts', true, /\.js(\.erb)?$/)); require.context("../../../public/images", true) +export { default as LStorage } from "../src/javascripts/utility/storage.js"; + export { default as Autocomplete } from '../src/javascripts/autocomplete.js.erb'; export { default as Blacklist } from '../src/javascripts/blacklists.js'; export { default as Blip } from '../src/javascripts/blips.js'; diff --git a/app/javascript/src/javascripts/post_search.js b/app/javascript/src/javascripts/post_search.js index cf98a1274..5b2505d20 100644 --- a/app/javascript/src/javascripts/post_search.js +++ b/app/javascript/src/javascripts/post_search.js @@ -1,9 +1,15 @@ +import LStorage from "./utility/storage"; + const PostSearch = {}; PostSearch.init = function () { $(".post-search").each((index, element) => { PostSearch.initialize_input($(element)); }); + + $(".wiki-excerpt").each((index, element) => { + PostSearch.initialize_wiki_preview($(element)); + }); }; PostSearch.initialize_input = function ($form) { @@ -27,6 +33,24 @@ PostSearch.initialize_input = function ($form) { $textarea.trigger("input"); }; +PostSearch.initialize_wiki_preview = function ($preview) { + let visible = LStorage.Posts.WikiExcerpt; + if (visible) + $preview.removeClass("hidden"); + console.log("init", visible); + + $($preview.find("a.wiki-excerpt-toggle")).on("click", (event) => { + event.preventDefault(); + + visible = !visible; + $preview.toggleClass("hidden", !visible); + LStorage.Posts.WikiExcerpt = visible; + console.log("state", visible); + + return false; + }); +}; + $(() => { PostSearch.init(); }); diff --git a/app/javascript/src/javascripts/utility/storage.js b/app/javascript/src/javascripts/utility/storage.js index 48be54ff9..f796134d4 100644 --- a/app/javascript/src/javascripts/utility/storage.js +++ b/app/javascript/src/javascripts/utility/storage.js @@ -82,6 +82,9 @@ LStorage.Posts = { /** @returns {number} ID of the user's selected set */ Set: ["set", 0], + + /** @returns {boolean} True if the wiki excerpt should be visible */ + WikiExcerpt: ["e6.posts.wiki", true], }; StorageUtils.bootstrapMany(LStorage.Posts); diff --git a/app/javascript/src/styles/specific/post_index.scss b/app/javascript/src/styles/specific/post_index.scss index 07bcec91e..497115070 100644 --- a/app/javascript/src/styles/specific/post_index.scss +++ b/app/javascript/src/styles/specific/post_index.scss @@ -26,6 +26,94 @@ #edit-dialog textarea { margin-bottom: 0.25em; } + + // Actual content area: + // posts and pagination + .post-index-gallery { + display: flex; + flex-flow: column; + gap: 1em; + + .wiki-excerpt { + display: flex; + flex-flow: column; + position: relative; + padding: 1em 1em 0; + gap: 0.5em; + + background: var(--color-section); + max-width: 60em; + + .wiki-excerpt-toggle { + position: absolute; + top: 0; + right: 0; + padding: 1em; + outline: none; + + transition: transform 0.25s; + + &::after { + @include font-awesome-icon; + content: unicode("f0d8"); + } + } + + .styled-dtext { + background: linear-gradient(to top, var(--color-section), var(--color-text)); + -webkit-background-clip: text; + background-clip: text; + color: transparent; + max-height: 10em; + overflow: hidden; + + transition: max-height 0.25s; + + // Disable links + pointer-events: none; + cursor: unset; + + a { + color: unset; + text-decoration: underline; + &::after { content: none; } + } + } + + .wiki-excerpt-readmore { + display: flex; + justify-content: center; + align-items: center; + + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 3em; + + // Makes the button appear in the middle of the animation + transition: visibility 0s 0.125s; + + span { + padding: 0.5em 1em; + background: var(--color-section); + border-radius: 6px; + } + } + + &.hidden{ + .wiki-excerpt-toggle { transform: rotate(-90deg); } + .styled-dtext { + max-height: 0; + } + .wiki-excerpt-readmore { visibility: hidden; } + } + } + + .paginator { + padding: 1em 0; + } + } } // 3. Sidebar diff --git a/app/views/posts/partials/index/_posts.html.erb b/app/views/posts/partials/index/_posts.html.erb index aa1d23826..ef5aa5225 100644 --- a/app/views/posts/partials/index/_posts.html.erb +++ b/app/views/posts/partials/index/_posts.html.erb @@ -1,4 +1,12 @@ -
+
+ <% if @wiki_text.present? %> + + <% end %>
<% if @posts.empty? %> <%= render "posts/blank" %> From cecefcc258e2af8cdf421c58079fc7a2f72a205f Mon Sep 17 00:00:00 2001 From: Cinder Date: Wed, 29 Jan 2025 12:54:18 -0800 Subject: [PATCH 5/8] [Favorites] Add the missing methods (#866) --- app/logical/post_sets/favorites.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/logical/post_sets/favorites.rb b/app/logical/post_sets/favorites.rb index 877ee1a22..617aae9d3 100644 --- a/app/logical/post_sets/favorites.rb +++ b/app/logical/post_sets/favorites.rb @@ -28,10 +28,22 @@ module PostSets end end + def has_explicit? + !CurrentUser.safe_mode? + end + def hidden_posts @hidden_posts ||= posts.reject(&:visible?) end + def login_blocked_posts + @login_blocked_posts ||= posts.select(&:loginblocked?) + end + + def safe_posts + @safe_posts ||= posts.select { |p| p.safeblocked? && !p.deleteblocked? } + end + def api_posts result = posts fill_children(result) From 8628351bc5aa9cc8cb04ec19c890230ce2e8d032 Mon Sep 17 00:00:00 2001 From: Cinder Date: Wed, 29 Jan 2025 13:25:39 -0800 Subject: [PATCH 6/8] [UI] Minor fixes to the navbar (#867) * Fix the incorrect layered icons in the nav menu on low-resolution screens * Move the wiki and help buttons higher up in the menu * Prevent the buttons in the mobile menu from breaking into a new line * Prevent the secondary nav buttons from expanding the menu vertically * Fix the navbar height to avoid having it shift around * Rework the mobile menu offsets * Add back the forum update notification --- app/javascript/src/javascripts/navigation.js | 4 +- .../src/styles/common/navigation.scss | 98 ++++++++++++++++--- app/views/layouts/_nav.html.erb | 9 +- app/views/static/subscribestar.html.erb | 2 +- 4 files changed, 90 insertions(+), 23 deletions(-) diff --git a/app/javascript/src/javascripts/navigation.js b/app/javascript/src/javascripts/navigation.js index d2f2fe5d3..3d5fd84ad 100644 --- a/app/javascript/src/javascripts/navigation.js +++ b/app/javascript/src/javascripts/navigation.js @@ -1,8 +1,8 @@ const Navigation = {}; Navigation.init = function () { - const wrapper = $("body"); - $("#nav-toggle").on("click", (event) => { + const wrapper = $("html"); + $("#nav-toggle, .nav-offset-left, .nav-offset-bottom").on("click", (event) => { event.preventDefault(); wrapper.toggleClass("nav-toggled"); diff --git a/app/javascript/src/styles/common/navigation.scss b/app/javascript/src/styles/common/navigation.scss index 4c9acdfde..3a732f95d 100644 --- a/app/javascript/src/styles/common/navigation.scss +++ b/app/javascript/src/styles/common/navigation.scss @@ -2,14 +2,11 @@ nav.navigation { display: grid; grid-template-areas: "logo logo controls"; grid-template-columns: min-content auto; - grid-template-rows: min-content auto min-content min-content; + grid-template-rows: min-content min-content min-content min-content auto; width: 100%; // otherwise narrow when fixed z-index: 20; // otherwise post labels layered above - pointer-events: none; // allow clicking through offset - & > menu { pointer-events: auto; } - /* Top bar, always visible */ .nav-logo { @@ -20,6 +17,9 @@ nav.navigation { a.nav-logo-link { display: flex; + // Height: 3.75rem + // - padding 0.25 * 2 = 0.5 + // - image 3.25 height: 3.25rem; width: 3.25rem; margin: 0.25rem; @@ -43,6 +43,12 @@ nav.navigation { padding-right: 0.5em; background-color: themed("color-background"); + // Height: 3.75rem + // - wrapper padding 0.875 * 2 = 1.75 + // - link padding 0.25 * 2 = 0.5 + // - font size 1.5 + padding: 0.875rem; + & > a { display: flex; gap: 0.25em; @@ -59,10 +65,16 @@ nav.navigation { } /* Prevent toggled menus from being too wide */ - .nav-offset { - grid-area: offset; - pointer-events: none; + .nav-offset-left { + grid-area: offleft; display: none; // flex + background: #00000050; + } + + .nav-offset-bottom { + grid-area: offbott; + display: none; // flex + background: #00000050; } /* Toggled menus, hidden by default */ @@ -81,6 +93,9 @@ nav.navigation { border-bottom: 1px solid themed("color-foreground"); padding: 0.5em; + // "Comments" is usually the longest and might wrap + white-space: nowrap; + i { width: 1.5rem; color: themed("color-link-active"); @@ -89,6 +104,22 @@ nav.navigation { } &.current a { background-color: themed("color-foreground"); } + &.forum-updated { + position: relative; + + &::after { + content: ""; + width: 6px; + height: 6px; + border-radius: 3px; + + background: var(--palette-text-red); + + position: absolute; + right: 0.2em; + top: 1em; + } + } } } @@ -99,6 +130,11 @@ nav.navigation { background-color: themed("color-foreground"); font-size: 1.35em; + height: 440px; + + // Prevent the tools / help buttons from being pushed + // way too low on pages with a lot of secondary links + overflow: scroll; li { padding: 0; @@ -116,6 +152,11 @@ nav.navigation { form input[type="text"] { width: 100%; box-sizing: border-box; + + // Reduced font size to make the search + // box less claustrophobic + font-size: 1em; + padding: 0.25em 0.5em; } } } @@ -195,6 +236,13 @@ nav.navigation { margin: -0.5em 0; } } + + // Hack to put the wiki/help links before discord/sstar on mobile + // but still have "more" at the end on desktop + &#nav-more { + grid-row: 1; + grid-column: 3; + } } } } @@ -208,26 +256,30 @@ body[data-th-sheader="true"] nav.navigation { // Mobile toggle -body.nav-toggled { - padding-top: 4rem; +html.nav-toggled { + + height: 100%; + overflow: hidden; + + body { padding-top: 3.75rem; } nav.navigation { grid-template-areas: "logo logo controls" - "offset primary secondary " - "offset tools tools " - "offset help help "; + "offleft primary secondary " + "offleft tools tools " + "offleft help help " + "offbott offbott offbott "; grid-template-columns: auto minmax(auto, 180px) minmax(auto, 180px); position: fixed; top: 0; height: 100vh; - max-height: 800px; max-width: 100vw; // prevent bug when page overflows viewport // Allow scrolling when the menu is too long overflow-y: scroll; - .nav-primary, .nav-secondary, .nav-offset { + .nav-primary, .nav-secondary, .nav-offset-left, .nav-offset-bottom { display: flex; } .nav-tools, .nav-help { @@ -241,7 +293,7 @@ body.nav-toggled { // Desktop -nav.navigation, body.nav-toggled nav.navigation { +nav.navigation, html.nav-toggled nav.navigation { @include window-larger-than(800px) { grid-template-areas: "logo primary help tools " @@ -261,7 +313,7 @@ nav.navigation, body.nav-toggled nav.navigation { a.nav-logo-link { margin: 0.25rem 0.5rem 0 0; } } - .nav-offset, .nav-controls { display: none; } + .nav-offset-left, .nav-offset-bottom, .nav-controls { display: none; } .nav-primary { display: flex; @@ -281,12 +333,17 @@ nav.navigation, body.nav-toggled nav.navigation { padding: 0 0.75em; i { display: none; } } + + &.forum-updated::after { + top: 0.2em; + } } } .nav-secondary { display: flex; flex-flow: row; + height: unset; padding: 0 0.25em; font-size: 1.05em; @@ -348,6 +405,12 @@ nav.navigation, body.nav-toggled nav.navigation { } .nav-tools { + + // Otherwise help gets layered above it + // When the viewport is narrow (but not mobile) + z-index: 1; + background: var(--color-background); + li { a { i { color: themed("color-link"); } @@ -377,5 +440,8 @@ body.c-static.a-home { nav.navigation, menu.nav-logo, menu.nav-secondary { background: unset; } + menu.nav-tools { + background: var(--bg-color); + } } } diff --git a/app/views/layouts/_nav.html.erb b/app/views/layouts/_nav.html.erb index 7db448f12..e259b36d6 100644 --- a/app/views/layouts/_nav.html.erb +++ b/app/views/layouts/_nav.html.erb @@ -7,7 +7,8 @@ <%= render "layouts/main_links" %> - + + "> <%= yield :secondary_links %> @@ -41,12 +42,12 @@ "> + <%= nav_link_to("Wiki", wiki_pages_path(title: "help:home"), class: "nav-help-wiki") %> + <%= nav_link_to("Help", help_pages_path, class: "nav-help-help") %> <% if !CurrentUser.is_anonymous? %> <%= custom_image_nav_link_to("Discord", "discord.com.png", discord_get_path, class: "nav-help-discord") %> <% end %> - <%= custom_image_nav_link_to("Subscribestar", "subscribestar.adult.png", subscribestar_path, class: "nav-help-subscribestar") %> - <%= nav_link_to("Wiki", wiki_pages_path(title: "help:home"), class: "nav-help-wiki") %> - <%= nav_link_to("Help", help_pages_path, class: "nav-help-help") %> + <%= custom_image_nav_link_to("SubscribeStar", "subscribestar.adult.png", subscribestar_path, class: "nav-help-subscribestar") %> <%= nav_link_to("More", site_map_path, class: "nav-help-map") %> diff --git a/app/views/static/subscribestar.html.erb b/app/views/static/subscribestar.html.erb index 40975b8c7..d8fd2603d 100644 --- a/app/views/static/subscribestar.html.erb +++ b/app/views/static/subscribestar.html.erb @@ -8,5 +8,5 @@
<% content_for(:page_title) do %> - Subscribestar + SubscribeStar <% end %> From 51fe187fbb031302269f34bf4f14f38cd07695f1 Mon Sep 17 00:00:00 2001 From: Cinder Date: Wed, 29 Jan 2025 13:37:11 -0800 Subject: [PATCH 7/8] [Posts] Posts searchbar and layout fixes (#868) * Remove the strange search button styles on the posts/show page * Remove debug console output * Tweak the searchbar styles to be consistent across the pages --- app/javascript/src/javascripts/post_search.js | 16 +++++++++------- .../src/styles/common/post_search.scss | 19 +++++++++++++------ .../src/styles/common/z_responsive.scss | 16 ---------------- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/app/javascript/src/javascripts/post_search.js b/app/javascript/src/javascripts/post_search.js index 5b2505d20..78cb1a5ea 100644 --- a/app/javascript/src/javascripts/post_search.js +++ b/app/javascript/src/javascripts/post_search.js @@ -19,25 +19,28 @@ PostSearch.initialize_input = function ($form) { // Adjust the number of rows based on input length $textarea - .on("input", () => { - $textarea.css("height", 0); - $textarea.css("height", element.scrollHeight + "px"); - }) + .on("input", recalculateInputHeight) .on("keypress", function (event) { if (event.which !== 13 || event.shiftKey) return; event.preventDefault(); $textarea.closest("form").submit(); }); + $(window).on("resize", recalculateInputHeight); + // Reset default height - $textarea.trigger("input"); + recalculateInputHeight(); + + function recalculateInputHeight () { + $textarea.css("height", 0); + $textarea.css("height", element.scrollHeight + "px"); + } }; PostSearch.initialize_wiki_preview = function ($preview) { let visible = LStorage.Posts.WikiExcerpt; if (visible) $preview.removeClass("hidden"); - console.log("init", visible); $($preview.find("a.wiki-excerpt-toggle")).on("click", (event) => { event.preventDefault(); @@ -45,7 +48,6 @@ PostSearch.initialize_wiki_preview = function ($preview) { visible = !visible; $preview.toggleClass("hidden", !visible); LStorage.Posts.WikiExcerpt = visible; - console.log("state", visible); return false; }); diff --git a/app/javascript/src/styles/common/post_search.scss b/app/javascript/src/styles/common/post_search.scss index 48555aa85..68ce953d4 100644 --- a/app/javascript/src/styles/common/post_search.scss +++ b/app/javascript/src/styles/common/post_search.scss @@ -14,7 +14,9 @@ // Override default texarea styles font-family: Verdana, sans-serif; - font-size: 1.05em; + font-size: 1rem; + line-height: 1rem; + padding: 0.5rem 0 0.5rem 0.5rem; // Remove old styles from z_responsive vertical-align: unset; @@ -28,11 +30,9 @@ // Disable manual resizing resize: none; - flex: 1; - padding: 0.5em; - border-radius: 3px 0 0 3px; box-sizing: border-box; + flex: 1; &:focus, &:focus + button[type="submit"] { background: #FFC; } } @@ -43,13 +43,20 @@ font-size: unset; max-width: unset; - font-size: 1em; - padding: 0.5em; + font-size: 1rem; + line-height: 1rem; + padding: 0.5rem; border-radius: 0 3px 3px 0; background: white; span { display: none; } } + + @include window-larger-than(800px) { + textarea, button[type="submit"] { + font-size: 0.85rem; + } + } } } diff --git a/app/javascript/src/styles/common/z_responsive.scss b/app/javascript/src/styles/common/z_responsive.scss index e960794be..df89c65fe 100644 --- a/app/javascript/src/styles/common/z_responsive.scss +++ b/app/javascript/src/styles/common/z_responsive.scss @@ -67,22 +67,6 @@ } } - div#page aside#sidebar { - padding: 5px; - - input#tags { - width: 80%; - } - - button[type=submit] { - font-size: 1.2em; - background-color: #EEE; - height: 42px; - padding: 2px 10px; - border: 1px solid rgb(197, 197, 197); - } - } - div#page { > div /* div#c-$controller */ From 882daa8e3df3d5dd7d6ba77bd722c7e97eac61c8 Mon Sep 17 00:00:00 2001 From: Cinder Date: Thu, 30 Jan 2025 07:44:40 -0800 Subject: [PATCH 8/8] [CI] Upgrade to actions/upload-artifact@4 (#871) --- .github/workflows/checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 0a6827a00..821341f77 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -68,7 +68,7 @@ jobs: run: $DOCKER_RUN tests - name: Upload Test Results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: test-results