module("manipulation"); // Ensure that an extended Array prototype doesn't break jQuery Array.prototype.arrayProtoFn = function(arg) { throw("arrayProtoFn should not be called"); }; var bareObj = function(value) { return value; }; var functionReturningObj = function(value) { return (function() { return value; }); }; test("text()", function() { expect(2); var expected = "This link has class=\"blog\": Simon Willison's Weblog"; equals( jQuery('#sap').text(), expected, 'Check for merged text of more then one element.' ); // Check serialization of text values equals( jQuery(document.createTextNode("foo")).text(), "foo", "Text node was retreived from .text()." ); }); var testText = function(valueObj) { expect(4); var val = valueObj("<div><b>Hello</b> cruel world!</div>"); equals( jQuery("#foo").text(val)[0].innerHTML.replace(/>/g, ">"), "<div><b>Hello</b> cruel world!</div>", "Check escaped text" ); // using contents will get comments regular, text, and comment nodes var j = jQuery("#nonnodes").contents(); j.text(valueObj("hi!")); equals( jQuery(j[0]).text(), "hi!", "Check node,textnode,comment with text()" ); equals( j[1].nodeValue, " there ", "Check node,textnode,comment with text()" ); // Blackberry 4.6 doesn't maintain comments in the DOM equals( jQuery("#nonnodes")[0].childNodes.length < 3 ? 8 : j[2].nodeType, 8, "Check node,textnode,comment with text()" ); } test("text(String)", function() { testText(bareObj) }); test("text(Function)", function() { testText(functionReturningObj); }); test("text(Function) with incoming value", function() { expect(2); var old = "This link has class=\"blog\": Simon Willison's Weblog"; jQuery('#sap').text(function(i, val) { equals( val, old, "Make sure the incoming value is correct." ); return "foobar"; }); equals( jQuery("#sap").text(), "foobar", 'Check for merged text of more then one element.' ); QUnit.reset(); }); var testWrap = function(val) { expect(19); var defaultText = 'Try them out:' var result = jQuery('#first').wrap(val( '<div class="red"><span></span></div>' )).text(); equals( defaultText, result, 'Check for wrapping of on-the-fly html' ); ok( jQuery('#first').parent().parent().is('.red'), 'Check if wrapper has class "red"' ); QUnit.reset(); var defaultText = 'Try them out:' var result = jQuery('#first').wrap(val( document.getElementById('empty') )).parent(); ok( result.is('ol'), 'Check for element wrapping' ); equals( result.text(), defaultText, 'Check for element wrapping' ); QUnit.reset(); jQuery('#check1').click(function() { var checkbox = this; ok( checkbox.checked, "Checkbox's state is erased after wrap() action, see #769" ); jQuery(checkbox).wrap(val( '<div id="c1" style="display:none;"></div>' )); ok( checkbox.checked, "Checkbox's state is erased after wrap() action, see #769" ); }).click(); // using contents will get comments regular, text, and comment nodes var j = jQuery("#nonnodes").contents(); j.wrap(val( "<i></i>" )); // Blackberry 4.6 doesn't maintain comments in the DOM equals( jQuery("#nonnodes > i").length, jQuery("#nonnodes")[0].childNodes.length, "Check node,textnode,comment wraps ok" ); equals( jQuery("#nonnodes > i").text(), j.text(), "Check node,textnode,comment wraps doesn't hurt text" ); // Try wrapping a disconnected node var cacheLength = 0; for (var i in jQuery.cache) { cacheLength++; } j = jQuery("<label/>").wrap(val( "<li/>" )); equals( j[0].nodeName.toUpperCase(), "LABEL", "Element is a label" ); equals( j[0].parentNode.nodeName.toUpperCase(), "LI", "Element has been wrapped" ); for (i in jQuery.cache) { cacheLength--; } equals(cacheLength, 0, "No memory leak in jQuery.cache (bug #7165)"); // Wrap an element containing a text node j = jQuery("<span/>").wrap("<div>test</div>"); equals( j[0].previousSibling.nodeType, 3, "Make sure the previous node is a text element" ); equals( j[0].parentNode.nodeName.toUpperCase(), "DIV", "And that we're in the div element." ); // Try to wrap an element with multiple elements (should fail) j = jQuery("<div><span></span></div>").children().wrap("<p></p><div></div>"); equals( j[0].parentNode.parentNode.childNodes.length, 1, "There should only be one element wrapping." ); equals( j.length, 1, "There should only be one element (no cloning)." ); equals( j[0].parentNode.nodeName.toUpperCase(), "P", "The span should be in the paragraph." ); // Wrap an element with a jQuery set j = jQuery("<span/>").wrap(jQuery("<div></div>")); equals( j[0].parentNode.nodeName.toLowerCase(), "div", "Wrapping works." ); // Wrap an element with a jQuery set and event result = jQuery("<div></div>").click(function(){ ok(true, "Event triggered."); }); j = jQuery("<span/>").wrap(result); equals( j[0].parentNode.nodeName.toLowerCase(), "div", "Wrapping works." ); j.parent().trigger("click"); } test("wrap(String|Element)", function() { testWrap(bareObj); }); test("wrap(Function)", function() { testWrap(functionReturningObj); }) var testWrapAll = function(val) { expect(8); var prev = jQuery("#firstp")[0].previousSibling; var p = jQuery("#firstp,#first")[0].parentNode; var result = jQuery('#firstp,#first').wrapAll(val( '<div class="red"><div class="tmp"></div></div>' )); equals( result.parent().length, 1, 'Check for wrapping of on-the-fly html' ); ok( jQuery('#first').parent().parent().is('.red'), 'Check if wrapper has class "red"' ); ok( jQuery('#firstp').parent().parent().is('.red'), 'Check if wrapper has class "red"' ); equals( jQuery("#first").parent().parent()[0].previousSibling, prev, "Correct Previous Sibling" ); equals( jQuery("#first").parent().parent()[0].parentNode, p, "Correct Parent" ); QUnit.reset(); var prev = jQuery("#firstp")[0].previousSibling; var p = jQuery("#first")[0].parentNode; var result = jQuery('#firstp,#first').wrapAll(val( document.getElementById('empty') )); equals( jQuery("#first").parent()[0], jQuery("#firstp").parent()[0], "Same Parent" ); equals( jQuery("#first").parent()[0].previousSibling, prev, "Correct Previous Sibling" ); equals( jQuery("#first").parent()[0].parentNode, p, "Correct Parent" ); } test("wrapAll(String|Element)", function() { testWrapAll(bareObj); }); var testWrapInner = function(val) { expect(11); var num = jQuery("#first").children().length; var result = jQuery('#first').wrapInner(val('<div class="red"><div id="tmp"></div></div>')); equals( jQuery("#first").children().length, 1, "Only one child" ); ok( jQuery("#first").children().is(".red"), "Verify Right Element" ); equals( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" ); QUnit.reset(); var num = jQuery("#first").html("foo<div>test</div><div>test2</div>").children().length; var result = jQuery('#first').wrapInner(val('<div class="red"><div id="tmp"></div></div>')); equals( jQuery("#first").children().length, 1, "Only one child" ); ok( jQuery("#first").children().is(".red"), "Verify Right Element" ); equals( jQuery("#first").children().children().children().length, num, "Verify Elements Intact" ); QUnit.reset(); var num = jQuery("#first").children().length; var result = jQuery('#first').wrapInner(val(document.getElementById('empty'))); equals( jQuery("#first").children().length, 1, "Only one child" ); ok( jQuery("#first").children().is("#empty"), "Verify Right Element" ); equals( jQuery("#first").children().children().length, num, "Verify Elements Intact" ); var div = jQuery("<div/>"); div.wrapInner(val("<span></span>")); equals(div.children().length, 1, "The contents were wrapped."); equals(div.children()[0].nodeName.toLowerCase(), "span", "A span was inserted."); } test("wrapInner(String|Element)", function() { testWrapInner(bareObj); }); test("wrapInner(Function)", function() { testWrapInner(functionReturningObj) }); test("unwrap()", function() { expect(9); jQuery("body").append(' <div id="unwrap" style="display: none;"> <div id="unwrap1"> <span class="unwrap">a</span> <span class="unwrap">b</span> </div> <div id="unwrap2"> <span class="unwrap">c</span> <span class="unwrap">d</span> </div> <div id="unwrap3"> <b><span class="unwrap unwrap3">e</span></b> <b><span class="unwrap unwrap3">f</span></b> </div> </div>'); var abcd = jQuery('#unwrap1 > span, #unwrap2 > span').get(), abcdef = jQuery('#unwrap span').get(); equals( jQuery('#unwrap1 span').add('#unwrap2 span:first').unwrap().length, 3, 'make #unwrap1 and #unwrap2 go away' ); same( jQuery('#unwrap > span').get(), abcd, 'all four spans should still exist' ); same( jQuery('#unwrap3 span').unwrap().get(), jQuery('#unwrap3 > span').get(), 'make all b in #unwrap3 go away' ); same( jQuery('#unwrap3 span').unwrap().get(), jQuery('#unwrap > span.unwrap3').get(), 'make #unwrap3 go away' ); same( jQuery('#unwrap').children().get(), abcdef, '#unwrap only contains 6 child spans' ); same( jQuery('#unwrap > span').unwrap().get(), jQuery('body > span.unwrap').get(), 'make the 6 spans become children of body' ); same( jQuery('body > span.unwrap').unwrap().get(), jQuery('body > span.unwrap').get(), 'can\'t unwrap children of body' ); same( jQuery('body > span.unwrap').unwrap().get(), abcdef, 'can\'t unwrap children of body' ); same( jQuery('body > span.unwrap').get(), abcdef, 'body contains 6 .unwrap child spans' ); jQuery('body > span.unwrap').remove(); }); var testAppend = function(valueObj) { expect(37); var defaultText = 'Try them out:' var result = jQuery('#first').append(valueObj('<b>buga</b>')); equals( result.text(), defaultText + 'buga', 'Check if text appending works' ); equals( jQuery('#select3').append(valueObj('<option value="appendTest">Append Test</option>')).find('option:last-child').attr('value'), 'appendTest', 'Appending html options to select element'); QUnit.reset(); var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:"; jQuery('#sap').append(valueObj(document.getElementById('first'))); equals( jQuery('#sap').text(), expected, "Check for appending of element" ); QUnit.reset(); expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo"; jQuery('#sap').append(valueObj([document.getElementById('first'), document.getElementById('yahoo')])); equals( jQuery('#sap').text(), expected, "Check for appending of array of elements" ); QUnit.reset(); expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:"; jQuery('#sap').append(valueObj(jQuery("#yahoo, #first"))); equals( jQuery('#sap').text(), expected, "Check for appending of jQuery object" ); QUnit.reset(); jQuery("#sap").append(valueObj( 5 )); ok( jQuery("#sap")[0].innerHTML.match( /5$/ ), "Check for appending a number" ); QUnit.reset(); jQuery("#sap").append(valueObj( " text with spaces " )); ok( jQuery("#sap")[0].innerHTML.match(/ text with spaces $/), "Check for appending text with spaces" ); QUnit.reset(); ok( jQuery("#sap").append(valueObj( [] )), "Check for appending an empty array." ); ok( jQuery("#sap").append(valueObj( "" )), "Check for appending an empty string." ); ok( jQuery("#sap").append(valueObj( document.getElementsByTagName("foo") )), "Check for appending an empty nodelist." ); QUnit.reset(); jQuery("form").append(valueObj('<input name="radiotest" type="radio" checked="checked" />')); jQuery("form input[name=radiotest]").each(function(){ ok( jQuery(this).is(':checked'), "Append checked radio"); }).remove(); QUnit.reset(); jQuery("form").append(valueObj('<input name="radiotest" type="radio" checked = \'checked\' />')); jQuery("form input[name=radiotest]").each(function(){ ok( jQuery(this).is(':checked'), "Append alternately formated checked radio"); }).remove(); QUnit.reset(); jQuery("form").append(valueObj('<input name="radiotest" type="radio" checked />')); jQuery("form input[name=radiotest]").each(function(){ ok( jQuery(this).is(':checked'), "Append HTML5-formated checked radio"); }).remove(); QUnit.reset(); jQuery("#sap").append(valueObj( document.getElementById('form') )); equals( jQuery("#sap>form").size(), 1, "Check for appending a form" ); // Bug #910 QUnit.reset(); var pass = true; try { var body = jQuery("#iframe")[0].contentWindow.document.body; pass = false; jQuery( body ).append(valueObj( "<div>test</div>" )); pass = true; } catch(e) {} ok( pass, "Test for appending a DOM node to the contents of an IFrame" ); QUnit.reset(); jQuery('<fieldset/>').appendTo('#form').append(valueObj( '<legend id="legend">test</legend>' )); t( 'Append legend', '#legend', ['legend'] ); QUnit.reset(); jQuery('#select1').append(valueObj( '<OPTION>Test</OPTION>' )); equals( jQuery('#select1 option:last').text(), "Test", "Appending <OPTION> (all caps)" ); jQuery('#table').append(valueObj( '<colgroup></colgroup>' )); ok( jQuery('#table colgroup').length, "Append colgroup" ); jQuery('#table colgroup').append(valueObj( '<col/>' )); ok( jQuery('#table colgroup col').length, "Append col" ); QUnit.reset(); jQuery('#table').append(valueObj( '<caption></caption>' )); ok( jQuery('#table caption').length, "Append caption" ); QUnit.reset(); jQuery('form:last') .append(valueObj( '<select id="appendSelect1"></select>' )) .append(valueObj( '<select id="appendSelect2"><option>Test</option></select>' )); t( "Append Select", "#appendSelect1, #appendSelect2", ["appendSelect1", "appendSelect2"] ); equals( "Two nodes", jQuery('<div />').append("Two", " nodes").text(), "Appending two text nodes (#4011)" ); // using contents will get comments regular, text, and comment nodes var j = jQuery("#nonnodes").contents(); var d = jQuery("<div/>").appendTo("#nonnodes").append(j); equals( jQuery("#nonnodes").length, 1, "Check node,textnode,comment append moved leaving just the div" ); ok( d.contents().length >= 2, "Check node,textnode,comment append works" ); d.contents().appendTo("#nonnodes"); d.remove(); ok( jQuery("#nonnodes").contents().length >= 2, "Check node,textnode,comment append cleanup worked" ); } test("append(String|Element|Array<Element>|jQuery)", function() { testAppend(bareObj); }); test("append(Function)", function() { testAppend(functionReturningObj); }); test("append(Function) with incoming value", function() { expect(12); var defaultText = 'Try them out:', old = jQuery("#first").html(); var result = jQuery('#first').append(function(i, val){ equals( val, old, "Make sure the incoming value is correct." ); return '<b>buga</b>'; }); equals( result.text(), defaultText + 'buga', 'Check if text appending works' ); var select = jQuery('#select3'); old = select.html(); equals( select.append(function(i, val){ equals( val, old, "Make sure the incoming value is correct." ); return '<option value="appendTest">Append Test</option>'; }).find('option:last-child').attr('value'), 'appendTest', 'Appending html options to select element'); QUnit.reset(); var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:"; old = jQuery("#sap").html(); jQuery('#sap').append(function(i, val){ equals( val, old, "Make sure the incoming value is correct." ); return document.getElementById('first'); }); equals( jQuery('#sap').text(), expected, "Check for appending of element" ); QUnit.reset(); expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo"; old = jQuery("#sap").html(); jQuery('#sap').append(function(i, val){ equals( val, old, "Make sure the incoming value is correct." ); return [document.getElementById('first'), document.getElementById('yahoo')]; }); equals( jQuery('#sap').text(), expected, "Check for appending of array of elements" ); QUnit.reset(); expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:"; old = jQuery("#sap").html(); jQuery('#sap').append(function(i, val){ equals( val, old, "Make sure the incoming value is correct." ); return jQuery("#yahoo, #first"); }); equals( jQuery('#sap').text(), expected, "Check for appending of jQuery object" ); QUnit.reset(); old = jQuery("#sap").html(); jQuery("#sap").append(function(i, val){ equals( val, old, "Make sure the incoming value is correct." ); return 5; }); ok( jQuery("#sap")[0].innerHTML.match( /5$/ ), "Check for appending a number" ); QUnit.reset(); }); test("append the same fragment with events (Bug #6997, 5566)", function () { expect(4 + (document.fireEvent ? 1 : 0)); stop(1000); var element; // This patch modified the way that cloning occurs in IE; we need to make sure that // native event handlers on the original object don't get disturbed when they are // modified on the clone if (!jQuery.support.noCloneEvent && document.fireEvent) { element = jQuery("div:first").click(function () { ok(true, "Event exists on original after being unbound on clone"); jQuery(this).unbind('click'); }); element.clone(true).unbind('click')[0].fireEvent('onclick'); element[0].fireEvent('onclick'); } element = jQuery("<a class='test6997'></a>").click(function () { ok(true, "Append second element events work"); }); jQuery("#listWithTabIndex li").append(element) .find('a.test6997').eq(1).click(); element = jQuery("<li class='test6997'></li>").click(function () { ok(true, "Before second element events work"); start(); }); jQuery("#listWithTabIndex li").before(element); jQuery("#listWithTabIndex li.test6997").eq(1).click(); element = jQuery("<select><option>Foo</option><option selected>Bar</option></select>"); equals( element.clone().find("option:selected").val(), element.find("option:selected").val(), "Selected option cloned correctly" ); element = jQuery("<input type='checkbox'>").attr('checked', 'checked'); equals( element.clone().is(":checked"), element.is(":checked"), "Checked input cloned correctly" ); }); test("appendTo(String|Element|Array<Element>|jQuery)", function() { expect(16); var defaultText = 'Try them out:' jQuery('<b>buga</b>').appendTo('#first'); equals( jQuery("#first").text(), defaultText + 'buga', 'Check if text appending works' ); equals( jQuery('<option value="appendTest">Append Test</option>').appendTo('#select3').parent().find('option:last-child').attr('value'), 'appendTest', 'Appending html options to select element'); QUnit.reset(); var l = jQuery("#first").children().length + 2; jQuery("<strong>test</strong>"); jQuery("<strong>test</strong>"); jQuery([ jQuery("<strong>test</strong>")[0], jQuery("<strong>test</strong>")[0] ]) .appendTo("#first"); equals( jQuery("#first").children().length, l, "Make sure the elements were inserted." ); equals( jQuery("#first").children().last()[0].nodeName.toLowerCase(), "strong", "Verify the last element." ); QUnit.reset(); var expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:"; jQuery(document.getElementById('first')).appendTo('#sap'); equals( jQuery('#sap').text(), expected, "Check for appending of element" ); QUnit.reset(); expected = "This link has class=\"blog\": Simon Willison's WeblogTry them out:Yahoo"; jQuery([document.getElementById('first'), document.getElementById('yahoo')]).appendTo('#sap'); equals( jQuery('#sap').text(), expected, "Check for appending of array of elements" ); QUnit.reset(); ok( jQuery(document.createElement("script")).appendTo("body").length, "Make sure a disconnected script can be appended." ); QUnit.reset(); expected = "This link has class=\"blog\": Simon Willison's WeblogYahooTry them out:"; jQuery("#yahoo, #first").appendTo('#sap'); equals( jQuery('#sap').text(), expected, "Check for appending of jQuery object" ); QUnit.reset(); jQuery('#select1').appendTo('#foo'); t( 'Append select', '#foo select', ['select1'] ); QUnit.reset(); var div = jQuery("<div/>").click(function(){ ok(true, "Running a cloned click."); }); div.appendTo("#main, #moretests"); jQuery("#main div:last").click(); jQuery("#moretests div:last").click(); QUnit.reset(); var div = jQuery("<div/>").appendTo("#main, #moretests"); equals( div.length, 2, "appendTo returns the inserted elements" ); div.addClass("test"); ok( jQuery("#main div:last").hasClass("test"), "appendTo element was modified after the insertion" ); ok( jQuery("#moretests div:last").hasClass("test"), "appendTo element was modified after the insertion" ); QUnit.reset(); div = jQuery("<div/>"); jQuery("<span>a</span><b>b</b>").filter("span").appendTo( div ); equals( div.children().length, 1, "Make sure the right number of children were inserted." ); div = jQuery("#moretests div"); var num = jQuery("#main div").length; div.remove().appendTo("#main"); equals( jQuery("#main div").length, num, "Make sure all the removed divs were inserted." ); QUnit.reset(); }); var testPrepend = function(val) { expect(5); var defaultText = 'Try them out:' var result = jQuery('#first').prepend(val( '<b>buga</b>' )); equals( result.text(), 'buga' + defaultText, 'Check if text prepending works' ); equals( jQuery('#select3').prepend(val( '<option value="prependTest">Prepend Test</option>' )).find('option:first-child').attr('value'), 'prependTest', 'Prepending html options to select element'); QUnit.reset(); var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog"; jQuery('#sap').prepend(val( document.getElementById('first') )); equals( jQuery('#sap').text(), expected, "Check for prepending of element" ); QUnit.reset(); expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog"; jQuery('#sap').prepend(val( [document.getElementById('first'), document.getElementById('yahoo')] )); equals( jQuery('#sap').text(), expected, "Check for prepending of array of elements" ); QUnit.reset(); expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog"; jQuery('#sap').prepend(val( jQuery("#yahoo, #first") )); equals( jQuery('#sap').text(), expected, "Check for prepending of jQuery object" ); }; test("prepend(String|Element|Array<Element>|jQuery)", function() { testPrepend(bareObj); }); test("prepend(Function)", function() { testPrepend(functionReturningObj); }); test("prepend(Function) with incoming value", function() { expect(10); var defaultText = 'Try them out:', old = jQuery('#first').html(); var result = jQuery('#first').prepend(function(i, val) { equals( val, old, "Make sure the incoming value is correct." ); return '<b>buga</b>'; }); equals( result.text(), 'buga' + defaultText, 'Check if text prepending works' ); old = jQuery("#select3").html(); equals( jQuery('#select3').prepend(function(i, val) { equals( val, old, "Make sure the incoming value is correct." ); return '<option value="prependTest">Prepend Test</option>'; }).find('option:first-child').attr('value'), 'prependTest', 'Prepending html options to select element'); QUnit.reset(); var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog"; old = jQuery('#sap').html(); jQuery('#sap').prepend(function(i, val) { equals( val, old, "Make sure the incoming value is correct." ); return document.getElementById('first'); }); equals( jQuery('#sap').text(), expected, "Check for prepending of element" ); QUnit.reset(); expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog"; old = jQuery('#sap').html(); jQuery('#sap').prepend(function(i, val) { equals( val, old, "Make sure the incoming value is correct." ); return [document.getElementById('first'), document.getElementById('yahoo')]; }); equals( jQuery('#sap').text(), expected, "Check for prepending of array of elements" ); QUnit.reset(); expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog"; old = jQuery('#sap').html(); jQuery('#sap').prepend(function(i, val) { equals( val, old, "Make sure the incoming value is correct." ); return jQuery("#yahoo, #first"); }); equals( jQuery('#sap').text(), expected, "Check for prepending of jQuery object" ); }); test("prependTo(String|Element|Array<Element>|jQuery)", function() { expect(6); var defaultText = 'Try them out:' jQuery('<b>buga</b>').prependTo('#first'); equals( jQuery('#first').text(), 'buga' + defaultText, 'Check if text prepending works' ); equals( jQuery('<option value="prependTest">Prepend Test</option>').prependTo('#select3').parent().find('option:first-child').attr('value'), 'prependTest', 'Prepending html options to select element'); QUnit.reset(); var expected = "Try them out:This link has class=\"blog\": Simon Willison's Weblog"; jQuery(document.getElementById('first')).prependTo('#sap'); equals( jQuery('#sap').text(), expected, "Check for prepending of element" ); QUnit.reset(); expected = "Try them out:YahooThis link has class=\"blog\": Simon Willison's Weblog"; jQuery([document.getElementById('first'), document.getElementById('yahoo')]).prependTo('#sap'); equals( jQuery('#sap').text(), expected, "Check for prepending of array of elements" ); QUnit.reset(); expected = "YahooTry them out:This link has class=\"blog\": Simon Willison's Weblog"; jQuery("#yahoo, #first").prependTo('#sap'); equals( jQuery('#sap').text(), expected, "Check for prepending of jQuery object" ); QUnit.reset(); jQuery('<select id="prependSelect1"></select>').prependTo('form:last'); jQuery('<select id="prependSelect2"><option>Test</option></select>').prependTo('form:last'); t( "Prepend Select", "#prependSelect2, #prependSelect1", ["prependSelect2", "prependSelect1"] ); }); var testBefore = function(val) { expect(6); var expected = 'This is a normal link: bugaYahoo'; jQuery('#yahoo').before(val( '<b>buga</b>' )); equals( jQuery('#en').text(), expected, 'Insert String before' ); QUnit.reset(); expected = "This is a normal link: Try them out:Yahoo"; jQuery('#yahoo').before(val( document.getElementById('first') )); equals( jQuery('#en').text(), expected, "Insert element before" ); QUnit.reset(); expected = "This is a normal link: Try them out:diveintomarkYahoo"; jQuery('#yahoo').before(val( [document.getElementById('first'), document.getElementById('mark')] )); equals( jQuery('#en').text(), expected, "Insert array of elements before" ); QUnit.reset(); expected = "This is a normal link: diveintomarkTry them out:Yahoo"; jQuery('#yahoo').before(val( jQuery("#mark, #first") )); equals( jQuery('#en').text(), expected, "Insert jQuery before" ); var set = jQuery("<div/>").before("<span>test</span>"); equals( set[0].nodeName.toLowerCase(), "span", "Insert the element before the disconnected node." ); equals( set.length, 2, "Insert the element before the disconnected node." ); } test("before(String|Element|Array<Element>|jQuery)", function() { testBefore(bareObj); }); test("before(Function)", function() { testBefore(functionReturningObj); }) test("insertBefore(String|Element|Array<Element>|jQuery)", function() { expect(4); var expected = 'This is a normal link: bugaYahoo'; jQuery('<b>buga</b>').insertBefore('#yahoo'); equals( jQuery('#en').text(), expected, 'Insert String before' ); QUnit.reset(); expected = "This is a normal link: Try them out:Yahoo"; jQuery(document.getElementById('first')).insertBefore('#yahoo'); equals( jQuery('#en').text(), expected, "Insert element before" ); QUnit.reset(); expected = "This is a normal link: Try them out:diveintomarkYahoo"; jQuery([document.getElementById('first'), document.getElementById('mark')]).insertBefore('#yahoo'); equals( jQuery('#en').text(), expected, "Insert array of elements before" ); QUnit.reset(); expected = "This is a normal link: diveintomarkTry them out:Yahoo"; jQuery("#mark, #first").insertBefore('#yahoo'); equals( jQuery('#en').text(), expected, "Insert jQuery before" ); }); var testAfter = function(val) { expect(6); var expected = 'This is a normal link: Yahoobuga'; jQuery('#yahoo').after(val( '<b>buga</b>' )); equals( jQuery('#en').text(), expected, 'Insert String after' ); QUnit.reset(); expected = "This is a normal link: YahooTry them out:"; jQuery('#yahoo').after(val( document.getElementById('first') )); equals( jQuery('#en').text(), expected, "Insert element after" ); QUnit.reset(); expected = "This is a normal link: YahooTry them out:diveintomark"; jQuery('#yahoo').after(val( [document.getElementById('first'), document.getElementById('mark')] )); equals( jQuery('#en').text(), expected, "Insert array of elements after" ); QUnit.reset(); expected = "This is a normal link: YahoodiveintomarkTry them out:"; jQuery('#yahoo').after(val( jQuery("#mark, #first") )); equals( jQuery('#en').text(), expected, "Insert jQuery after" ); var set = jQuery("<div/>").after("<span>test</span>"); equals( set[1].nodeName.toLowerCase(), "span", "Insert the element after the disconnected node." ); equals( set.length, 2, "Insert the element after the disconnected node." ); }; test("after(String|Element|Array<Element>|jQuery)", function() { testAfter(bareObj); }); test("after(Function)", function() { testAfter(functionReturningObj); }) test("insertAfter(String|Element|Array<Element>|jQuery)", function() { expect(4); var expected = 'This is a normal link: Yahoobuga'; jQuery('<b>buga</b>').insertAfter('#yahoo'); equals( jQuery('#en').text(), expected, 'Insert String after' ); QUnit.reset(); expected = "This is a normal link: YahooTry them out:"; jQuery(document.getElementById('first')).insertAfter('#yahoo'); equals( jQuery('#en').text(), expected, "Insert element after" ); QUnit.reset(); expected = "This is a normal link: YahooTry them out:diveintomark"; jQuery([document.getElementById('first'), document.getElementById('mark')]).insertAfter dependabot/npm_and_yarn/stable31/cypress-13.17.0 dependabot/npm_and_yarn/stable31/cypress-axe-1.6.0 dependabot/npm_and_yarn/stable31/cypress-if-1.13.2 dependabot/npm_and_yarn/stable31/cypress-split-1.24.11 dependabot/npm_and_yarn/stable31/cypress-split-1.24.14 dependabot/npm_and_yarn/stable31/cypress-split-1.24.15 dependabot/npm_and_yarn/stable31/cypress-split-1.24.17 dependabot/npm_and_yarn/stable31/cypress-split-1.24.18 dependabot/npm_and_yarn/stable31/cypress-split-1.24.9 dependabot/npm_and_yarn/stable31/dockerode-4.0.4 dependabot/npm_and_yarn/stable31/dockerode-4.0.6 dependabot/npm_and_yarn/stable31/dockerode-4.0.7 dependabot/npm_and_yarn/stable31/dompurify-3.2.5 dependabot/npm_and_yarn/stable31/dompurify-3.2.6 dependabot/npm_and_yarn/stable31/focus-trap-7.6.4 dependabot/npm_and_yarn/stable31/focus-trap-7.6.5 dependabot/npm_and_yarn/stable31/jasmine-core-2.99.1 dependabot/npm_and_yarn/stable31/jquery-ui-1.14.1 dependabot/npm_and_yarn/stable31/jsdoc-4.0.4 dependabot/npm_and_yarn/stable31/karma-coverage-2.2.1 dependabot/npm_and_yarn/stable31/libphonenumber-js-1.11.19 dependabot/npm_and_yarn/stable31/libphonenumber-js-1.11.20 dependabot/npm_and_yarn/stable31/libphonenumber-js-1.12.7 dependabot/npm_and_yarn/stable31/libphonenumber-js-1.12.8 dependabot/npm_and_yarn/stable31/libphonenumber-js-1.12.9 dependabot/npm_and_yarn/stable31/marked-15.0.11 dependabot/npm_and_yarn/stable31/marked-15.0.12 dependabot/npm_and_yarn/stable31/marked-15.0.6 dependabot/npm_and_yarn/stable31/marked-15.0.7 dependabot/npm_and_yarn/stable31/marked-15.0.8 dependabot/npm_and_yarn/stable31/marked-15.0.9 dependabot/npm_and_yarn/stable31/mime-4.0.7 dependabot/npm_and_yarn/stable31/moment-timezone-0.5.47 dependabot/npm_and_yarn/stable31/moment-timezone-0.5.48 dependabot/npm_and_yarn/stable31/moment-timezone-0.6.0 dependabot/npm_and_yarn/stable31/nextcloud/auth-2.5.1 dependabot/npm_and_yarn/stable31/nextcloud/cypress-1.0.0-beta.14 dependabot/npm_and_yarn/stable31/nextcloud/cypress-1.0.0-beta.15 dependabot/npm_and_yarn/stable31/nextcloud/dialogs-6.2.0 dependabot/npm_and_yarn/stable31/nextcloud/dialogs-6.3.0 dependabot/npm_and_yarn/stable31/nextcloud/dialogs-6.3.1 dependabot/npm_and_yarn/stable31/nextcloud/eslint-config-8.4.2 dependabot/npm_and_yarn/stable31/nextcloud/event-bus-3.3.2 dependabot/npm_and_yarn/stable31/nextcloud/files-3.10.2 dependabot/npm_and_yarn/stable31/nextcloud/l10n-3.3.0 dependabot/npm_and_yarn/stable31/nextcloud/moment-1.3.4 dependabot/npm_and_yarn/stable31/nextcloud/stylelint-config-3.1.0 dependabot/npm_and_yarn/stable31/nextcloud/upload-1.10.0 dependabot/npm_and_yarn/stable31/nextcloud/vue-8.26.0 dependabot/npm_and_yarn/stable31/nextcloud/vue-8.26.1 dependabot/npm_and_yarn/stable31/nextcloud/vue-8.27.0 dependabot/npm_and_yarn/stable31/p-limit-6.2.0 dependabot/npm_and_yarn/stable31/pinia-2.3.1 dependabot/npm_and_yarn/stable31/puppeteer-24.10.0 dependabot/npm_and_yarn/stable31/puppeteer-24.10.1 dependabot/npm_and_yarn/stable31/puppeteer-24.10.2 dependabot/npm_and_yarn/stable31/puppeteer-24.7.2 dependabot/npm_and_yarn/stable31/puppeteer-24.8.0 dependabot/npm_and_yarn/stable31/puppeteer-24.8.2 dependabot/npm_and_yarn/stable31/puppeteer-24.9.0 dependabot/npm_and_yarn/stable31/query-string-9.1.1 dependabot/npm_and_yarn/stable31/query-string-9.1.2 dependabot/npm_and_yarn/stable31/query-string-9.2.0 dependabot/npm_and_yarn/stable31/query-string-9.2.1 dependabot/npm_and_yarn/stable31/sass-1.81.1 dependabot/npm_and_yarn/stable31/sass-1.87.0 dependabot/npm_and_yarn/stable31/sass-1.88.0 dependabot/npm_and_yarn/stable31/sass-1.89.0 dependabot/npm_and_yarn/stable31/sass-1.89.1 dependabot/npm_and_yarn/stable31/sass-1.89.2 dependabot/npm_and_yarn/stable31/sass-loader-16.0.4 dependabot/npm_and_yarn/stable31/sass-loader-16.0.5 dependabot/npm_and_yarn/stable31/stylelint-16.18.0 dependabot/npm_and_yarn/stable31/stylelint-16.20.0 dependabot/npm_and_yarn/stable31/stylelint-16.21.0 dependabot/npm_and_yarn/stable31/tar-fs-2.1.3 dependabot/npm_and_yarn/stable31/testing-library/cypress-10.0.3 dependabot/npm_and_yarn/stable31/testing-library/jest-dom-6.6.3 dependabot/npm_and_yarn/stable31/testing-library/user-event-14.6.1 dependabot/npm_and_yarn/stable31/ts-loader-9.5.2 dependabot/npm_and_yarn/stable31/types/dockerode-3.3.34 dependabot/npm_and_yarn/stable31/types/dockerode-3.3.35 dependabot/npm_and_yarn/stable31/types/dockerode-3.3.37 dependabot/npm_and_yarn/stable31/types/dockerode-3.3.38 dependabot/npm_and_yarn/stable31/types/dockerode-3.3.39 dependabot/npm_and_yarn/stable31/types/dockerode-3.3.40 dependabot/npm_and_yarn/stable31/vitest/coverage-v8-2.1.9 dependabot/npm_and_yarn/stable31/vue/tsconfig-0.6.0 dependabot/npm_and_yarn/stable31/vueuse/components-11.3.0 dependabot/npm_and_yarn/stable31/vueuse/integrations-11.3.0 dependabot/npm_and_yarn/stable31/wait-on-8.0.2 dependabot/npm_and_yarn/stable31/wait-on-8.0.3 dependabot/npm_and_yarn/stable31/webpack-5.99.6 dependabot/npm_and_yarn/stable31/webpack-5.99.7 dependabot/npm_and_yarn/stable31/webpack-5.99.8 dependabot/npm_and_yarn/stable31/webpack-5.99.9 dependabot/npm_and_yarn/stable31/zip.js/zip.js-2.7.57 dependabot/npm_and_yarn/stable31/zip.js/zip.js-2.7.60 dependabot/npm_and_yarn/stable31/zip.js/zip.js-2.7.61 dependabot/npm_and_yarn/stable31/zip.js/zip.js-2.7.62 dependabot/npm_and_yarn/stylelint-16.17.0 dependabot/npm_and_yarn/stylelint-16.18.0 dependabot/npm_and_yarn/stylelint-16.19.1 dependabot/npm_and_yarn/tar-fs-2.1.3 dependabot/npm_and_yarn/testing-library/cypress-10.0.3 dependabot/npm_and_yarn/testing-library/jest-dom-6.6.3 dependabot/npm_and_yarn/testing-library/user-event-14.6.1 dependabot/npm_and_yarn/testing-library/vue-8.1.0 dependabot/npm_and_yarn/tmp-0.2.4 dependabot/npm_and_yarn/ts-loader-9.5.2 dependabot/npm_and_yarn/tslib-2.7.0 dependabot/npm_and_yarn/types/dockerode-3.3.32 dependabot/npm_and_yarn/types/dockerode-3.3.37 dependabot/npm_and_yarn/types/dockerode-3.3.38 dependabot/npm_and_yarn/types/dockerode-3.3.42 dependabot/npm_and_yarn/typescript-5.6.2 dependabot/npm_and_yarn/typescript-5.8.2 dependabot/npm_and_yarn/typescript-5.8.3 dependabot/npm_and_yarn/undici-5.29.0 dependabot/npm_and_yarn/vite-6.2.5 dependabot/npm_and_yarn/vite-6.3.4 dependabot/npm_and_yarn/vitejs/plugin-vue2-2.3.3 dependabot/npm_and_yarn/vitest-3.0.4 dependabot/npm_and_yarn/vitest-3.0.8 dependabot/npm_and_yarn/vitest-3.0.9 dependabot/npm_and_yarn/vitest-3.1.2 dependabot/npm_and_yarn/vitest-3.1.3 dependabot/npm_and_yarn/vitest-3.1.4 dependabot/npm_and_yarn/vitest/coverage-v8-2.1.1 dependabot/npm_and_yarn/vitest/coverage-v8-2.1.5 dependabot/npm_and_yarn/vitest/coverage-v8-2.1.8 dependabot/npm_and_yarn/vitest/coverage-v8-3.0.7 dependabot/npm_and_yarn/vitest/coverage-v8-3.1.3 dependabot/npm_and_yarn/vitest/coverage-v8-3.2.2 dependabot/npm_and_yarn/vitest/coverage-v8-3.2.3 dependabot/npm_and_yarn/vitest/coverage-v8-3.2.4 dependabot/npm_and_yarn/vue-cropperjs-5.0.0 dependabot/npm_and_yarn/vue-loader-16.8.3 dependabot/npm_and_yarn/vue-loader-17.4.2 dependabot/npm_and_yarn/vue-material-design-icons-5.3.1 dependabot/npm_and_yarn/vue-router-4.5.0 dependabot/npm_and_yarn/vue/tsconfig-0.6.0 dependabot/npm_and_yarn/vue/tsconfig-0.7.0 dependabot/npm_and_yarn/vueuse/components-11.1.0 dependabot/npm_and_yarn/vueuse/components-11.3.0 dependabot/npm_and_yarn/vueuse/components-12.8.2 dependabot/npm_and_yarn/vueuse/core-11.3.0 dependabot/npm_and_yarn/vueuse/core-12.5.0 dependabot/npm_and_yarn/vueuse/core-13.1.0 dependabot/npm_and_yarn/vueuse/integrations-11.1.0 dependabot/npm_and_yarn/vueuse/integrations-11.3.0 dependabot/npm_and_yarn/vueuse/integrations-12.7.0 dependabot/npm_and_yarn/vueuse/integrations-13.0.0 dependabot/npm_and_yarn/vuex-4.1.0 dependabot/npm_and_yarn/wait-on-8.0.0 dependabot/npm_and_yarn/wait-on-8.0.1 dependabot/npm_and_yarn/wait-on-8.0.3 dependabot/npm_and_yarn/wait-on-8.0.4 dependabot/npm_and_yarn/webdav-5.7.1 dependabot/npm_and_yarn/webdav-5.8.0 dependabot/npm_and_yarn/webpack-5.98.0 dependabot/npm_and_yarn/webpack-5.99.5 dependabot/npm_and_yarn/webpack-5.99.6 dependabot/npm_and_yarn/webpack-5.99.7 dependabot/npm_and_yarn/webpack-5.99.8 dependabot/npm_and_yarn/webpack-5.99.9 dependabot/npm_and_yarn/webpack-cli-6.0.1 dependabot/npm_and_yarn/workbox-webpack-plugin-7.3.0 dependabot/npm_and_yarn/zip.js/zip.js-2.7.53 dependabot/npm_and_yarn/zip.js/zip.js-2.7.54 dependabot/npm_and_yarn/zip.js/zip.js-2.7.57 dependabot/npm_and_yarn/zip.js/zip.js-2.7.61 dependabot/npm_and_yarn/zip.js/zip.js-2.7.62 dependabot/npm_and_yarn/zip.js/zip.js-2.7.71 dependabotjulia/bump-nextcloud-upload dependaniel/aws-sdk-for-28 dependaniel/aws-sdk-for-29 deps/noid/bump-3rdparty-hash depskjnldsv/vue dept-remove-csrf-dependency-from-request detect-inadvertent-config-overlaps direct-access-shared-calendar do-not-show-password-dialog-when-user-can-not-validate-password docs/53002/calendar-search docs/53002/calendar-search-impl docs/caldav/getCalendarsForUserCount docs/http/cors-attribute dont-check-share-folder-remote dont-double-scan-storage ehn/sharing-sidebar-hide-search-labels encoding-wrapper-metadata encryption-no-header-size-error encryption-version-version enh/30551/weather-status-support-more-codes enh/49868/add-display-override enh/49868/adjust-display-mode enh/add-cloud-id-chars enh/add-details-to-code-integrity-check enh/add-first-login-timestamp enh/add-info-to-ldap-test-user-settings enh/add-rich-object-formatter enh/add-user-creation-date enh/apply-rector-set-to-apps enh/displayname-group-search enh/do-not-enforce-cache-for-cli enh/favorite-search enh/identityproof/key_storage enh/improve-transfer-ownership-logging enh/issue-48528-disable-imip-messages enh/issues-563-calendar-import-export enh/ldap-add-test-settings-command enh/ldap-clearer-errors enh/ldap/more-error-output enh/limit-ldap-user-count enh/make-tag-event-webhook-compatible enh/more-task-types enh/no-issue/better-error-for-login-csrf enh/no-issues/share-entry-link enh/noid/add-types-to-issue-templates enh/noid/allow-configure-config.owner enh/noid/allow-disable-pwas enh/noid/appconfig-get-fast-keys enh/noid/async-process-run enh/noid/avatar-chinese enh/noid/clean-migration-check-appconfig enh/noid/default-config-based-on-system-conf enh/noid/disable-bulk-upload enh/noid/disable-user-unmount enh/noid/ensure-correctly-handling-special-characters enh/noid/fix-docs-ci enh/noid/fix-personal-settings-layout enh/noid/fix-properties-files enh/noid/gs.federation.auto_accept_shares enh/noid/navigationentryevent enh/noid/nullable-range enh/noid/return-default-value-from-lexicon enh/noid/returns-formated-app-values-2 enh/noid/signed-request enh/noid/taskpro-agency-audio-chat enh/noid/taskpro-audio-chat enh/noid/taskprocessing-commands-task-errors enh/noid/taskprocessing-include-error-msg-in-tasks enh/noid/taskprocessing-lazy-config enh/noid/taskprocessing-task-add-cleanup-flag enh/noid/test-ci enh/noid/testing-namespace enh/noid/update-o.c.u-wording enh/noid/user-preferences enh/noid/workflow-contextchat-filesaccesscontrol-warning enh/opcache-checks enh/repair-mimetype-job enh/share-sidebar enh/test-mtime-after-move enh/trashbin-scan-command enh/users-configured-quota-value enh/xss-protection-check enhancement/passwordless-login-token enhancements/files-sharing-tests ensure-cloud-key ensureTemplateFolder ernolf/configurable_sharetoken_length ext-store-check-update-filter extra_sensitive_values extract-caldav-sharing-plugin feat-setupcheck-php-sapi-fpm-max-children feat/26668/notifications-for-shared-calendars-2 feat/31420/bidi-backend-support feat/42647/hide-app-password-note-without-2fa feat/45085/validate-config-values feat/46528/ask-confirm-extension-change feat/47176/show-share-expiry feat/52635/toggle-for-trusted-server-sharing feat/54114/reportSlowPropfinds feat/54115/emitPreloadCollectionEvent feat/add-account-menu-outline feat/add-addressbook-list-command feat/add-config-for-share-perm feat/add-configurable-ipv6-subnet feat/add-datetime-qbmapper-support feat/add-directory-check-workflowengine feat/add-encryption-integration-tests feat/add-mount-change-log feat/add-preload-script feat/add-proofread-tasktype feat/add-query-param-to-force-language feat/add-rector-config feat/add-search-everywhere-button feat/add-subscription-via-occ feat/add-user-enabled-apps-ocs feat/add-wcf-cap feat/add_log_scan_command feat/ai-guest-restriction feat/allow-account-local-search feat/allow-enum-entity feat/allow-getter-setter-decl-fors feat/allow-oauth-grant-bypass feat/allow-to-configure-default-view feat/app-icon-opacity feat/ask-deletion feat/auto-accept-trusted-server feat/auto-sync-desktop-version feat/cache-routes feat/caldav/migrate-to-sabre-sharing-plugin feat/caption-cant-upload feat/cardav-example-contact feat/certificatemanager/default-bundle-path-option feat/check-enterprise feat/cleanup-oc-util feat/cleanup-oc-util-methods feat/clipboard-fallback feat/contacts-menu/js-hook-action feat/context-chat-ocp feat/conversion-adjusting feat/core/features-api feat/core/install-without-admin-user feat/core/pwa-hide-header feat/cors-on-webdav feat/cron/before-after-events feat/cypress-setup feat/dark-mode-variables feat/database/primary-replica-split-stable28 feat/database/query-result-fetch-associative-fetch-num feat/dav-pagination feat/dav-trashbin-backend feat/dav/absence-get-set-commands feat/dav/calendar-obj-event-webhooks feat/dav/calendar-object-admin-audit-log feat/dav/public-share-chunked-upload feat/declarative-settings/typed-abstraction feat/delete-separator feat/disable-share-deletion feat/dispatcher/log-raw-response-data feat/drop-compile-commits-rebase feat/edit-share-token feat/empty-trash feat/event-builder-invitation-emails feat/example-event feat/expose-nc-groups-to-system-addressbook-contacts feat/federated-calendar-sharing feat/file-conversion-provider feat/file-conversion-provider-front feat/file-drop-recursive feat/file-list-actions feat/files-bulk-tagging feat/files-bulk-tagging-followup feat/files-home-view feat/files-row-height feat/files-shortcuts feat/files-shortcuts-2 feat/files/chunked-upload-config-capabilities feat/files/resumable-uploads feat/files_sharing/co-owner feat/files_trashbin/allow-preventing-trash-permanently feat/getByAncestorInStorage feat/hint-hidden feat/http/request-header-attribute feat/ignore-warning-files feat/image-size-metadata feat/imailaddressvalidator feat/issue-3786-allow-shared-calendars feat/issue-563-calendar-export feat/issue-563-calendar-import feat/issue-994-two-factor-api feat/larger_ipv6_range feat/lexicon/moving-out-from-unstable feat/log-client-side-req-id feat/log-large-assets feat/log/log-session-id feat/logger-allow-psr-loglevel feat/mail-provider-settings feat/make-setup-check-trait-public feat/make-tasks-types-toggleable feat/material-icons-outline feat/maxschmi-49902 feat/meeting-proposals feat/migrate-files_external-vue feat/mime-column feat/mime-names feat/mimes-names feat/mountmanager/emit-events feat/namespace-group-route feat/nfo feat/no-issue/add-logging-preview-generation feat/no-issue/show-remote-shares-as-internal-config feat/no-two-factor-required-attribute feat/node-dist feat/noid/add-bulk-activity feat/noid/add-busy-status feat/noid/add-busy-status-capability feat/noid/add-command-to-list-all-routes feat/noid/add-fake-summary-provider feat/noid/allow-specifying-related-object feat/noid/cache-user-keys feat/noid/check-integrity-all-apps feat/noid/files-external-lexicon feat/noid/get-value-type-from-lexicon feat/noid/happy-birthday feat/noid/info-xml-spdx-license-ids feat/noid/internal-lint-request-event feat/noid/lexicon-appconfig-controller feat/noid/lexicon-configurable-default-value feat/noid/lexicon-events feat/noid/lexicon-migrate-keys feat/noid/lexicon-store-on-get-as-default feat/noid/link-to-calendar-event feat/noid/list-addressbook-shares feat/noid/log-query-parameters feat/noid/occ-list-delete-calendar-subscription feat/noid/preset-config feat/noid/preset-on-share-password feat/noid/priority-notifications feat/noid/profile-data-api feat/noid/ratelimit-header feat/noid/show-nice-label-when-searching-in-root feat/noid/store-lexicon-default feat/noid/support-email-mentions feat/notifications/preload-many feat/occ-files-cleanup-help feat/occ/command-events feat/ocp-sanitize-filenames feat/ocp/attendee-availability-api feat/ocp/meetings-api-requirements feat/openapi/merged-spec feat/oracle-setup-cypres feat/order-action feat/package-node-npm-engines-update feat/pagination-cardav feat/photo-cache-avif feat/photo-cache-webp feat/php-setup-file-upload feat/postgres-13-17 feat/preset/custom-share-token feat/preset/load-apps-on-preset feat/preset/profile-visibility+presetmanager feat/profile-app feat/psalm/error-deprecations feat/public-log-level feat/reduce_available_languages_set feat/repair-step-deduplicate-mounts feat/requestheader/indirect-parameter feat/restore-to-original-dir feat/restrict-tag-creation feat/rich-profile-biography feat/router-list-routs-cmd feat/row_format_check feat/s3/sse-c feat/sanitize-filenames-command feat/search-by-parent-id feat/search-in-files feat/search-in-files--small feat/search-while-filtering feat/sensitive-declarative-settings feat/settings/advanced-deploy-options feat/settings/app_api/daemon-selection feat/settings/app_api_apps_management feat/settings/too-much-caching-setup-check feat/setup feat/setup-check-logging feat/setup-checks feat/setupcheck-task-pickup-speed feat/share-grid-view feat/sharing-title feat/shipped/app_api feat/show-gs-users-like-internal feat/show-hide-ext feat/show-time-diff-user feat/switch-from-settype-to-casts feat/sync-truncation feat/sync-truncation2 feat/sync-truncation3 feat/systemtags-bulk-create-list feat/systemtags-missing-attrs feat/systemtags-public feat/tags-colors feat/tags-colors-2 feat/talk-9679/threads feat/task/analyze-image feat/taskprocessing/TextToImageSingle feat/template-field-extraction-improvements feat/test-app-routes feat/trashbin-hierarchy feat/unified_search/online_providers feat/use-php84-lazy-objects feat/user-folder feat/user-get-quota-bytes feat/verbose-cron feat/vue-material-icons-outline feat/workflow-auto-update-cypress.yml feat/workflow-auto-update-node.yml feat/workflow-auto-update-npm-audit-fix.yml feat/workflow-auto-update-pr-feedback.yml feat/workflow-auto-update-reuse.yml feat/workflow-generator feat/zip-folder-plugin feat/zst feature/23308/create-new-favorite-dashboard-widget feature/51791/add-bsky-option-to-accounts feature/53428-autoCreateCollectionOnUpload feature/add-allowed-view-extensions-config feature/add-profile-to-occ feature/files-list-occ-command feature/hide-external-shares-excluded-groups feature/highlight-active-menu feature/noid/config-lexicon feature/noid/wrapped-appconfig feature/settings-design-improvements fetch-mount-memory fetch-mount-memory-30 fetch-mount-memory-30-squash fieat/profile-pronounces file-info-key-location-27 filePointerCheck filecache-chunking files-cache-node files-external-optional-dependencies files-external-setup-path filesVersionsFuncRefact files_external-scan-unscanned fileutils-files-by-user fix-44318-remote-share-not-listed fix-button-alignment-for-email-templates-in-outlook fix-clearing-unified-search-when-modal-is-closed fix-copying-or-moving-from-shared-groupfolders fix-dav-properties-column-type fix-endless-spinner-on-file-entries-after-triggering-an-action-on-stable30 fix-enforce-theme-for-public-links fix-federated-group-shares-when-no-longer-found-in-remote-server fix-federated-sharing-bug fix-files-external-smbclient-deprecated-binaryfinder fix-format fix-jobs-app-disable fix-json-decoding-groups-excluded-from-share fix-nc-env-inclusion fix-order-metadata-deletion fix-papercut-23486-weather-status-locale fix-putcsv-default fix-remove-auto-guessing-for-preview-semaphore fix-running-files-external-s3-tests-in-stable30-ci fix-setupcheck-filelocking fix-setupcheck-webfinger-400 fix-setupchecks-normalizeUrl-url-filter fix-sharing-expiration-notify fix-show-original-owner fix-theming-for-disabled-accounts fix-theming-for-disabled-users fix-updater-secret fix-user-collaborators-returned-when-searching-for-mail-collaborators fix/29-template-layout fix/30-oc-files fix/30-template-layout fix/32bit-pack fix/32bit-support fix/43260 fix/44288/catch-filesmetadatanotfound-exception fix/44492/settings-remove-user-manager fix/45717/hide-last-modified-for-shipped-apps fix/45884/accept-notification fix/45982/hide-move-action fix/46920/respect-no-download fix/47275/driverException fix/47658/upgrade-version-3100005 fix/48012/fix-share-email-send-mail-share fix/48415/do-not-rename-main-share-link fix/48437/dont-exclude-user fix/48829/visual-feedback-4-encryption-toggle fix/48860/stop-silent-expiry-date-addition-on-link-shares fix/48993 fix/49431-automatically-disable-sab fix/49473/task-url fix/49584-background-worker-interval-fixes fix/49584-background-worker-remove-interval fix/49638/update-prefs-indexes fix/49673-less-confusing-unified-search-folder-picker fix/49728/adapt-search-filters-correctly fix/49887/early-check-for-overwritten-home fix/49909/workflow-vue-compat fix/49954/add-send-mail-toggle fix/50177/movy-copy-e2e-tests fix/50215/hideCreateTemplateFolder fix/50363/correct-system-tags-i18n fix/50512/send-password-2-owner fix/50788/pass-hide-download-on-save fix/51022/simpler-request-before-upgrade fix/51022/simpler-request-pre-upgrade fix/51226/show-remote-shares-as-external fix/51226/show-remote-shares-as-external-2 fix/51506/mdast-util-gfm-autolink-literal-override fix/51833/add-retries-to-s3-client fix/51875/allow-keyboard-input-4-share-expiration-on-chrome fix/52060/manage-download-on-federated-reshare fix/52131/ignore-missing-themes-31 fix/52278/remove-unused-etag-check fix/52590/available-account-groups fix/52617/fix-group-admin-delegation fix/52794/share-advanced-settings fix/52795/consistent-share-save-behavior fix/53363/available-groups fix/53674-webdav-paginate-missing-collection-type fix/54080/using-userconfig-to-set-lang fix/78296/nextcloud-vue fix/788/add-password-confirmation-required-to-user-storage-create fix/788/add-password-required-to-external-storages fix/AppStore--remove-unneeded-warning fix/FileList-render fix/IMimeTypeDetector-types fix/PasswordConfirmationMiddleware-empty-header fix/PublicShareUtils fix/account-manager fix/account-mgmnt-settings fix/account-property-validation fix/activity-log-for-favorites-in-dav fix/add-autoload.php-for-tests fix/add-calendar-object-index fix/add-function-type-for-mimetype-sanitizer fix/add-getappversions-replacement fix/add-password-confirmation-to-save-global-creds fix/addUniqueMountpointIndex fix/adjust-default-color-background-plain-to-new-background fix/admin-tag-color-prevent fix/ai-settings fix/align-avatar-visibility fix/allconfig-use-search-case-insensitive fix/allow-255-filenames fix/allow-download-with-hide-download-flag fix/allow-enforcing-windows-support fix/allow-quota-wrapper-check fix/alter-invite-attachment-filename-and-type fix/app-discover fix/app-discover-section-media fix/app-icon-aria fix/app-store-groups fix/app-store-markdown fix/app-store-reactivity fix/app-store-remove-force-enable fix/appconfig/sensitive-keys-external-jwt-private-key fix/appframework/csrf-request-checks fix/apps/wrong-missing-casts fix/appstore-regressions fix/auth-token-uniq-constraint-violation-handling fix/auth/authtoken-activity-update-in-transaction fix/auth/logout-redirect-url fix/auto-reload-tags fix/avoid-crashing-versions-listener-on-non-existing-file fix/avoid-invalid-share-on-transfer-ownership fix/background-image fix/backgroundjobs/adjust-intervals-time-sensitivities fix/backport-gridview-29 fix/baseresponse/xml-element-value-string-cast fix/better-drag-n-drop fix/bring-back-hide-downlaod fix/bring-back-zip-event fix/broken-event-notifications fix/cache-hit-getFirstNodeById fix/cache-ldap-configuration-prefixes fix/cachebuster-stable30 fix/caldav/event-organizer-interaction fix/caldav/event-reader-duration fix/caldav/no-invitations-to-circles fix/caldav/use-direct-route-event-activity fix/carddav/create-sab-concurrently fix/cast-node-names-to-string fix/catch-exception-in-encrypt-all fix/catch-exception-in-encryption-listener fix/clarify-app-manager-methods fix/clean-up-group-shares fix/cleanup-blurhash-images fix/cleanup-dependencyanalyser fix/cleanup-dicontainer fix/cleanup-getinstallpath fix/cleanup-loadapp-calls fix/cleanup-servercontainer fix/cleanup-template-functions fix/cleanup-test-legacy-autoloader fix/cleanup-updater-class fix/cleanup-user-backends fix/cloud-id-input fix/code-sign-test fix/codeowner-nc-backend fix/collaboration/deduplicate-email-shares fix/colum-sizes-outline-icon fix/comment/children-count-integer fix/comments-outlined-icons fix/comments/activity-rich-subject-parameters fix/composer/autoload-dev-deps fix/conditional-federation-placeholders fix/config/additional-configs fix/config/return-user-config-deleted fix/contactsmenu/padding fix/contactsmigratortest fix/conversion-extension fix/convert-log fix/convert-rotate-to-timedjob fix/convert-schedulednotifications-to-timedjob fix/convert-type fix/core-cachebuster fix/core-session-logout-logging fix/core/password-from-env-nc-pass fix/core/preview-generation fix/create-missing-replacement-indexes fix/credential-passwordless-auth fix/cron-strict-cookie fix/cron/log-long-running-jobs-stable26 fix/cron/no-constructor-without-args fix/csrf-token-ignore-twofactor fix/current-user-principal fix/cy-selectors-for-files-trashbin fix/dashboard--performance-and-refactoring fix/dashboard/dont-load-hidden-widgets-initially fix/dashboard/skip-hidden-widgets fix/datadirectory-protection-setupcheck fix/dav-add-strict-type-declarations fix/dav-cast-content-lenght-to-int fix/dav-cast-params-to-string fix/dav-csrf fix/dav-harden-stream-handling fix/dav-nickname-master fix/dav-nickname-stable31 fix/dav-sorting fix/dav-wrong-return-type fix/dav/abort-incomplete-caldav-changes-sync fix/dav/absence-status-too-long fix/dav/addressbook-permissions-principal fix/dav/carddav-new-card-check-addressbook-early fix/dav/carddav-read-card-memory-usage fix/dav/create-sab-in-transaction fix/dav/create-sab-install fix/dav/first-login-listener fix/dav/image-export-plugin-fallback fix/dav/limit-sync-token-created-at-updates-stable28 fix/dav/limit-sync-token-created-at-updates-stable29 fix/dav/orphan-cleanup-job fix/dav/publicremote-share-token-pattern fix/dav/remove-object-properties-expensive fix/dav/update-rooms-resources-background-job fix/dav/use-iuser-displayname fix/dav/view-only-check fix/db-adapter-insert-if-not-exists-atomic fix/declarative-settings-priority fix/default-contact fix/default-contact-error-verbosity fix/defaultshareprovider/filter-reshares-correctly fix/delete-legacy-autoloader fix/deprecate-oc-template-and-cleanup fix/deprecation-comment fix/deps/php-seclin fix/destination-drop-check fix/disable-reminder-invalid-nodes fix/do-not-cache-routes-on-debug-mode fix/do-not-remind fix/do-not-throw-from-countusers fix/do-not-update-userkey-when-masterkey-is-used fix/docblock-color fix/docs fix/download-action fix/download-invalid-share fix/download-non-files-view fix/download-perms fix/drop-file-preview fix/drop-v-html fix/duplicated-conflict-resolution fix/dyslexia-font-not-loading fix/edit-locally-labels fix/emit_hooks_on_copy fix/empty-file-0byte-stable30 fix/encode-guest-file-request fix/encoding-wrapper-scanner fix/encoding-wrapper-scanner-stable30 fix/encrypt-decrypt-password fix/encryption-events fix/encryption-text fix/encryption/web-ui-bogus fix/entity/strict-types fix/eslint-warning fix/eslint-warnings fix/etag-constraint-search-query fix/external-storage-controller-cast-id fix/external-storage-int fix/fail-safe-files-actions fix/fav-sort-nav fix/federated-share-opening fix/federated-users fix/federatedfilesharing/dialog-callback fix/federatedfilesharing/group-cleanup fix/federation-certificate-store fix/file-conversion-missing-extension fix/file-drop fix/file-list-filters-reset fix/file-name-validator-case-sensitivity fix/file-request-enforced fix/file-type-filter-state fix/file_reference_invalidate_rename fix/files--handle-empty-view-with-error fix/files--list-header-button-title fix/files-actions-menu-position fix/files-actions-subcomponent fix/files-add-move-info fix/files-batch-actions fix/files-better-search-icon fix/files-duplicated-nodes fix/files-external-notify-mount-id-stable28 fix/files-external-workflow fix/files-failed-node fix/files-header-empty-view fix/files-header-submenu fix/files-hidden-summary fix/files-mtime fix/files-navigation-quota-total fix/files-new-folder fix/files-page-title fix/files-plural fix/files-position-navigation fix/files-proper-loading-icon fix/files-public-share fix/files-reload fix/files-rename fix/files-rename-esc fix/files-rename-folder fix/files-rename-store fix/files-renaming fix/files-scroll-perf fix/files-sharing-download fix/files-sharing-file-drop-folder fix/files-sharing-label fix/files-show-details-when-no-action fix/files-summary fix/files-trash-download fix/files-trashbin-files-integration fix/files-version-creation fix/files-versions fix/files-versions-author fix/files-versions-listeners fix/files-wording fix/files/activity-rich-object-strings fix/files/delete-display-no-trashbin fix/files/favorites-widget-folder-preview fix/files/preview-service-worker-registration fix/files/reactivity-inject fix/files/sort-after-view-change fix/files_external-cred-dialog fix/files_external/definition-parameter fix/files_external/forbidden-exception fix/files_external/hidden-password-fields fix/files_external/smb-case-insensitive-path-building fix/files_external_scan fix/files_sharing--global-search-in-select fix/files_sharing/advanced-settings-delete-share-button fix/files_sharing/cleanup-error-messages fix/files_sharing/disable-editing fix/files_sharing/filter-own-reshared-shares fix/files_sharing/harden-api fix/files_sharing/hide-own-reshares fix/files_sharing/ocm-permissions fix/files_sharing/sharing-entry-link-override-expiration-date fix/files_versions/previews fix/filesreport-cast-fileId-to-int fix/filter-empty-email fix/filter-for-components-explicitly fix/fix-32bits-phpunit fix/fix-admin-audit-event-listening fix/fix-admin-audit-listener fix/fix-admin-audit-paths fix/fix-appmanager-cleanappid fix/fix-copy-to-mountpoint-root fix/fix-cypress-note-to-recipient fix/fix-default-share-folder-for-group-shares fix/fix-di-when-casing-is-wrong fix/fix-disabled-user-list-for-saml-subadmin fix/fix-disabled-user-list-for-subadmins fix/fix-email-setupcheck-with-null-smtpmode fix/fix-email-share-transfer-accross-storages fix/fix-encryption-manager-injection fix/fix-incorrect-query-in-federatedshareprovider fix/fix-int-casting fix/fix-ldap-setupcheck-crash fix/fix-loginflow-v1 fix/fix-movie-preview-construct fix/fix-php-error-on-upgrade fix/fix-psalm-taint-errors fix/fix-psalm-taint-errors-2 fix/fix-public-download-activity fix/fix-server-tests fix/fix-share-creation-error-messages fix/fix-storage-interface-check fix/fix-warning-lazy-ghost-application fix/flaky-cypress fix/flaky-live-photos fix/forbidden-files-insensitive fix/forward-user-login-if-no-session fix/get-managers-as-subadmin fix/get-version-of-core fix/gracefully-parse-trusted-certificates fix/grid-view-actions fix/group-admin-new-user fix/handle-errors-in-migrate-key-format fix/harden-account-properties fix/harden-admin-settings fix/harden-template-functions fix/harden-thumbnail-endpoint fix/harmonize-ldap-function-logging fix/headers-lifecycle fix/highcontras-scrollbar fix/http/jsonresponse-data-type fix/http/template-valid-status-codes fix/icons-header-meu fix/ignore-shares-in-encrypt-all fix/imip-test-expects-integer fix/improve-error-output-of-sso-test fix/improve-init-profiling fix/improve-ldap-avatar-handling fix/index-systemtags fix/insecure-crypto-env fix/install-app-before-enable fix/install-dbport-unused fix/installation-wording fix/invalid-app-config fix/invalid-copied-share-link fix/invalid-mtime fix/invitations-named-parameter fix/issue-12387-delete-invitations fix/issue-13862 fix/issue-23666 fix/issue-3021-return-no-content-instead-of-error fix/issue-34720 fix/issue-47879-property-serialization fix/issue-48079-windows-time-zones fix/issue-48528-disable-itip-and-imip-messages fix/issue-48528-disable-itip-and-imip-messages-2 fix/issue-48732-exdate-rdate-property-instances fix/issue-49756-translations fix/issue-50054-resource-invite-regression fix/issue-50104-system-address-book-ui-settings fix/issue-50748-calendar-object-move fix/issue-50748-card-object-move fix/issue-6838-use-old-event-information-when-new-is-missing fix/issue-7194-fifth-not-fifty fix/issue-8458-imip-improvements-2 fix/istorage/return-types fix/iurlgenerator/url-regex-markdown-parenthesis fix/jquery-ui fix/l10n-placeholder fix/l10n-plain-string fix/l10n-us-english fix/ldap-avoid-false-positive-mapping fix/ldap/cache-ttl-jitter fix/ldap/lower-case-emails fix/legacy-file-drop fix/legacy-filepicker fix/legacy-oc-filepicker fix/legacyView fix/less-useless-toasts fix/less-words fix/line-height-calc fix/link-share-conflict-modal fix/load-more-than-5-items-in-folder-filter fix/loading-account-menu fix/lock-session-during-cookie-renew fix/log-failure-from-file-events fix/log-login-flow-state-token-errors fix/log-memcache-log-path-hash fix/login-chain-24 fix/login-error-state fix/login-origin fix/loginflow fix/lookup-server fix/lookup-server-connector fix/lookup-server-connector-v2 fix/low-res-for-blurhash fix/lower-email-case fix/lus-background-job fix/mailer-binaryfinder-fallback fix/make-router-reactive fix/map-sharee-information fix/master-template-layout fix/middle-click fix/migrate-dav-to-events fix/migrate-encryption-away-from-hooks fix/mime fix/mime-fallback-public fix/mime-int fix/missing-import fix/mkcol-quota-exceeded-response fix/move-away-from-oc-app fix/move-email-logic-local-user-backend fix/move-storage-constructor-to-specific-interface fix/multi-select fix/mysql-removed-auth fix/nav-quota-new-design fix/newUser-provisioning_api fix/no-account-filter-public-share fix/no-issue/enforced-props-checks fix/no-issue/file-request-disable-when-no-public-upload fix/no-issue/link-sharing-defaults fix/no-issue/no-reshare-perms-4-email-shares fix/no-issue/prevent-create-delete-perms-on-file-shares fix/no-issue/proper-share-sorting fix/no-issue/show-file-drop-permissions-correctly fix/no-issue/use-password-default-sharing-details fix/no-issues/add-encryption-available-config fix/node-version fix/node-vibrant fix/noid-add-status-and-set-attendee-status fix/noid-adjust-variables-for-translations fix/noid-catch-listener-erros-instead-of-failing fix/noid-check-for-properties-before-processing fix/noid-fix-user-create-quota fix/noid-improve-calendar-accuracy-performace fix/noid-reset-password fix/noid-retrieve-all-authors-at-the-same-time fix/noid/accept-informational-tests-as-success fix/noid/actions-boundaries fix/noid/allows-some-char-from-federationid fix/noid/appconfig-setmixed-on-typed fix/noid/broken-password-reset-form fix/noid/broken-taskprocessing-api fix/noid/calendar-enabled fix/noid/check-file-before-download fix/noid/clean-config-code fix/noid/contactsmenu-ab-enabled fix/noid/content-header-height fix/noid/count-disabled-correct fix/noid/debug-objectstorage-s3 fix/noid/deleted-circles-share fix/noid/deprecation-correct-case fix/noid/discover-unique-ocmprovider fix/noid/empty-path-for-files-versions fix/noid/encrypted-propagation-test fix/noid/ensure-userid-attr-present fix/noid/expose-calendar-enabled fix/noid/fed-share-on-local-reshare fix/noid/federation-really-surely-init-token fix/noid/fifty-fifth fix/noid/files-page-heading-theming-name fix/noid/files-version-sidebar-item-style fix/noid/filter-cancelled-events fix/noid/fix-itipbroker-messages fix/noid/fix-try-login fix/noid/fix-unified-search-provider-id fix/noid/flaky-sso-tests fix/noid/get-fedid-from-cloudfed-provider fix/noid/get-preview-force-mimetype fix/noid/ignore-missing-memberships-on-reshare-verification fix/noid/ignore-missing-owner fix/noid/ignore-null-appinfo fix/noid/ignore-unavailable-token fix/noid/in-folder-search fix/noid/init-navigation-data-too-soon fix/noid/krb-fallback fix/noid/ldap-displayname-cached fix/noid/ldap-n-counted-mapped-users fix/noid/ldap-no-connection-reason fix/noid/ldap-remnants-as-disabled-global fix/noid/ldap-setopt-for-disabling-certcheck fix/noid/lexicon-update-lazy-status fix/noid/log-false-user fix/noid/make-s3-connect-timeout-option-configurable fix/noid/mark-searchkeys-as-internal fix/noid/metadata-on-fresh-setup fix/noid/no-emails-for-user-shares fix/noid/no-lazy-loading-on-isBypassListed fix/noid/note-to-recipient-test fix/noid/null-safe-metadata fix/noid/oracle-test-failure fix/noid/path-hash-prep-statement fix/noid/refresh-filesize-on-conflict-24 fix/noid/remote-account-activity-translation fix/noid/rename-remote-user-to-guest-user fix/noid/return-verified-email fix/noid/revert-api-breaking-return-type fix/noid/rich-editor-mixin fix/noid/run-kerberos-tests-on-ubuntu-latest fix/noid/set-ext-pwd-as-sensitive fix/noid/statetoken-concurrency fix/noid/stuck-ffmpeg fix/noid/task-processing-file-content-stream fix/noid/taskprocessing-appapi fix/noid/test-samba-with-self-hosted fix/noid/textprocessing-list-types fix/noid/textprocessing-schedule-taskprocessing-provider fix/noid/thudnerbird-addon-useragent fix/noid/transfer-ownership-select fix/noid/try-latest-buildjet-cache fix/noid/update-codeowners-nfebe fix/noid/wfe-empty-group-in-check fix/noid/wfe-set-inital-value fix/noid/windows-font-family fix/noid/wipe-local-storage fix/note-icon-color fix/note-to-recipient fix/null-label fix/oauth2/owncloud-migration fix/oauth2/retain-legacy-oc-client-support fix/oc/inheritdoc fix/occ/config-fileowner-suppress-errors fix/ocm-host fix/ocm-public-key-is-optional fix/ocmdiscoveryservice/cache-errors fix/only-show-reshare-if-there-is fix/openapi/array-syntax fix/openapi/outdated-specs fix/oracle-db-connection fix/oracle-db-connection-29 fix/oracle-insert-id fix/overide-itip-broker fix/ownership-transfer-source-user-files fix/pass-hide-download-in-update-request fix/password-field-sharing fix/password-validation fix/path-length fix/people-translation fix/perf/cache-avilable-taskt-types fix/perf/cache-taskprocessing-json-parse fix/pick-folder-smart-picker fix/picker-tag-color fix/preview-check fix/product-name-capability fix/profile-visibility fix/pronouns-tests fix/pronouns-translation fix/proper-download-check fix/proper-preview-icon fix/properly-fail-on-invalid-json fix/provisionApi-status-codes fix/provisioning_api/password-change-hint-translation fix/proxy-app-screenshot fix/psalm/enabled-find-unused-baseline-entry fix/psalm/throws-annotations fix/psalm/update-baseline fix/public-copy-move-stable-28 fix/public-displayname-owner fix/public-get fix/public-owner-scope fix/public-share-expiration fix/public-share-router fix/public-upload-notification-default fix/qbmapper/find-entities-return-type fix/querybuilder/oracle-indentifier-length fix/querybuilder/output-columns-aliases fix/quota-exceptions fix/quota-view-files fix/rate-limit-share-creation fix/read-only-share-download fix/reasons-to-use fix/recently_active_pgsql fix/recommended-apps fix/rector-use-statements fix/redirect-openfile-param fix/refactor-imip fix/refactor-user-access-to-file-list fix/refresh-convert-list fix/release-gen-changelog fix/reminder-node-access fix/remove-app.php-loading fix/remove-broken-versions-routes fix/remove-needless-console-log fix/remove-redundant-check-server fix/remove-references-to-deprected-storage-interface fix/remove-share-hint-exception-wrapping fix/rename-trashbin fix/reply-message fix/request-reviews fix/requesttoken fix/require-update-if-mtime-is-null fix/reset-phone-number fix/reset-property fix/resiliant-user-removal fix/resolve_public_rate_limit fix/restore-sucess fix/retry-delete-if-locked fix/revive-lowercase-email fix/rich-object-strings/better-exception-messages fix/richobjectstrings/validator-string-key-value-error fix/rtl-regession fix/s3-verify-peer-setting fix/s3-versions fix/s3/empty-sse-c-key fix/s3configtrait/proxy-false fix/sabre-dav-itip-broker fix/sass fix/scrolling-file-list fix/search-cast fix/search-tags-lowercase fix/session-cron fix/session/failed-clear-cookies fix/session/log-ephemeral-session-close fix/session/log-likely-lost-session-conditions fix/session/log-regenerate-id fix/session/log-session-id fix/session/log-session-start-error fix/session/permanent-token-app-password fix/session/session-passphraze-handling fix/session/transactional-remember-me-renewal fix/settings--disable-discover-when-app-store-is-disabled fix/settings-command fix/settings-l10n fix/settings-share-folder fix/settings/admin/ai/textprocessing fix/settings/email-change-restriction fix/settings/ex-apps-search fix/settings/mail-server-settings-form fix/settings/read-only-apps-root fix/settings/userid-dependency-injection fix/setupmanager/home-root-providers-register-mounts fix/share-allow-delete-perms-4-files fix/share-api-create--permissions fix/share-expiry-translation fix/share-label fix/share-notifications fix/share-sidebar-bugs fix/share-status fix/sharing-entry-link fix/sharing-error-catch fix/sharing-exp-date fix/sharing-password-submit-create fix/sharing-restore-on-failure fix/sharing-sidebar-tab-default fix/shipped-app-version fix/show-better-mtime fix/show-deleted-team-shares fix/show-share-recipient-in-mail fix/show-templates-folder-default fix/sidebar-favorites fix/simplify-login-box fix/size-update-appdata fix/smarter-loadmore-unified-search fix/stable27 fix/stable28-uploader fix/stable28/webcal-subscription-jobs-middleware fix/stable29-header-title fix/stable29/numerical-userid-file-item-display fix/stable29/webcal-subscription-jobs-middleware fix/stable29_share-api-create--permissions fix/stable30/create-download-attribute-if-missing fix/stable30/rename-trashbin fix/stable30/share-types-references fix/storage-local/get-source-path-spl-file-info fix/storage-settings fix/storage/get-directory-content-return-type fix/storage/get-owner-false fix/storage/method-docs-inheritance fix/strict-types fix/subadmin-user-groups fix/systemtags-heighh-align fix/tag-fileid-check fix/tags-events fix/tags-icon fix/tags-search-case fix/tags/boolean-user-has-tags fix/task-cleanup-delay fix/task-processing-api-controller/dont-use-plus fix/taskprocessing-api-get-file-contents fix/taskprocessing-better-errors fix/taskprocessing-cache fix/taskprocessing-manager/php-notice fix/taskprocessingcontroller-errorhandling fix/tasktypes-translations fix/team-resource-deduplication fix/template-field-title fix/template-name-overflow fix/template-return-type fix/template-vue3-main fix/template/implement-itemplate fix/tests/migrations fix/texttotextchatwithtools-translator-notes fix/themes-layout fix/theming-migration fix/theming/default-theme-selection fix/ticket_9672007/share_mail fix/timedjob-execution-time fix/tp-validation fix/twitter-fediverse fix/two-factor-request-token fix/type-error-filter-mount fix/typo-recommended-apps fix/undefined-application-key fix/undefined-response fix/unified-search-bar fix/unified-search-ctrl-f fix/unified-search-empty-sections fix/unified-search-filter-reset-on-load-more fix/unified-search-size fix/unique-vcategory fix/unnecessary-template-fields-request fix/update-notification fix/update-notification-respect-config fix/update-share-entry-quick-select fix/updateall fix/updatenotification-legacy-toast fix/updatenotification/applist-error-handling fix/upload-file-drop-info fix/use-also-default-text fix/use-invokeprivate-for-test fix/user-login-with-cookie-e2ee fix/user-manager/limit-enabled-users-counting-seen fix/user_status/harden-api fix/users-gid fix/usertrait/backend-initialization fix/validation-defaults fix/version-channel fix/versions/wrong-toast fix/view-in-folder-conditions fix/view-local-close fix/view-only-preview fix/view/catch-mkdir-exception-non-existent-parents fix/wait-for-toast fix/weather_status/search-address-offline-errors fix/webauthn fix/webcal-subscription-jobs-middleware fix/webpack-nonce fix/wrong-image-type fixFilesRemindersJoins fixHardcodedVersionsFolder fixHeaderStyleSettings fixIncParam30 fixKeyExFileExt fixPhp83Deprecation fixWrongTranslation followup/39574/ocm-provider-without-beautiful-urls followup/47329/add-all-types-to-handling followup/48086/fix-more-activity-providers followup/53896/adjust-interface forbid-moving-subfolder-24 fox/noid/extended-auth-on-webdav fullFilePreviews fwdport/48445/master getMountsForFileId-non-sparse guzzleHandler gw-codeowners-public-api handle-missing-share-providers-when-promoting-reshares hasTableTaskprocessingTasks home-folder-readonly icewind-smb-3.7 ignore-write-test-unlink-err info-file-more-encryption-checks info-file-permissions info-storage-command instance-quota introduce-publish-classification-levels isNumericMtime issue-563-calendar-import-a issue_45523_actionmenu_in_multiple_actions_menu_bar joblist-build-error-log jr-quota-exceeded-admin-log jr/enh/updates/options-buttons-web-ui jr/meta/issue-template-bugs-closed-link jtr-auth-pw-max-length-config-sample jtr-chore-log-getEntries-cleanup jtr-chore-mbstring-func-overload jtr-ci-flakey-cypress-note-test jtr-docs-dispatcher-return jtr-feat-occ-default-help-docs-link jtr-feat-setupchecks-limit-type jtr-files-detection-refactor-finfo jtr-fix-403-design jtr-fix-dnspin-port-logging jtr-fix-files-reminders-disabled jtr-httpclient-compression jtr-locale-personal-info jtr-maint-refresh-part-1 jtr-oc-appframework-app-cleanup jtr-perf-checks-connectivity-https-proto jtr-profile-email-pages jtr-refactor-auth-pubKeyTokPro jtr-refactor-files-external-oauth1 jtr-refactor-pub-app jtr-refactor-remote-php jtr-remove-always-populate-raw-post-data jtr-settings-memory-limit-details jtr/chore-bug-report-logs jtr/desc-and-help-plus-minor-fixes-files-scan jtr/dns-noisy-dns-get-record jtr/fix-25162 jtr/fix-40666-fallback-copy jtr/fix-45671 jtr/fix-46609-delegation-add-group-overlap jtr/fix-appframework-server-proto jtr/fix-hash-hkdf-valueerror jtr/fix-ipv6-zone-ids-link-local jtr/fix-sharing-update-hints jtr/fix-streamer-zip64 jtr/fix-testSearchGroups jtr/fix-tests/mysql-phpunit-health jtr/fix-updater-cleanup-job-logging jtr/fix-wipe-missing-token-handling jtr/occ-maintenance-mode-desc jtr/preview-thumb-robustness jtr/router-light-refactoring jtr/setup-checks-heading jtr/setup-checks-heading-redo jtr/test-binaryfinder jtr/typo-accessibility-config-sample kerberos-saved-ticket kerberos-saved-ticket-27 ldap-queries leftybournes/feat/guests_creation_simplification leftybournes/fix/app-sorting leftybournes/fix/files_trashbin_dont_restore_full leftybournes/fix/files_trashbin_retention leftybournes/fix/object_storage_large_uploads leftybournes/fix/sftp_scan_infinite_loop leftybournes/fix/syslog location-provider lockThreadsOlderThan120d log-event-recursion logger-app-versions login-less-custom-bundle man/backport/45237/stable27 master master-IB#1156402 memcache-commands merge-token-updates metadata-storage-id mgallien/fix/retry_cache_operations_on_deadlock mixedSetTTL mount-cache-without-fs-access mount-move-checks mountpoint-get-numeric-storage-id-cache mountpoint-mkdir-quota move-from-encryption-no-opt moveOCPClasses moveStrictTyping multi-object-store mysqlNativePassCi nested-jail-root new-julius newfolder-race-improvements nickv-debug-reactions-test nickv/1214 nickv/1452 no-issue-use-correct-exceptions-in-share-class no-shared-direct-download noissue-refactor-share-class normlize-less notfound-debug-mounts notfound-debug-mounts-30 obj-delete-not-found obj-delete-not-found-20 object-store-filename object-store-move-db object-store-move-fixes object-store-orphan object-store-trash-move objectstore-touch-double-cache oc-wnd-migrate oc-wnd-migrate-25 occ-as-root occ-external-dependencies occ-upgrade-reminder occ-upgrade-wording oci-ci-faststart oci-string-length-empty ocs-use