Chats #2286
Closed
eugenijm
wants to merge 0 commits from
gitlab-mr-iid-1019 into develop
pull from: gitlab-mr-iid-1019
merge into: pleroma:develop
pleroma:develop
pleroma:setttingssync
pleroma:fix-bio-18
pleroma:gitlab-mr-iid-2202
pleroma:misc-fixes
pleroma:gitlab-mr-iid-2201
pleroma:gitlab-mr-iid-2200
pleroma:2.10.x
pleroma:gitlab-mr-iid-2198
pleroma:gitlab-mr-iid-2199
pleroma:master
pleroma:gitlab-mr-iid-2197
pleroma:gitlab-mr-iid-2195
pleroma:gitlab-mr-iid-2164
pleroma:gitlab-mr-iid-2193
pleroma:weblate
pleroma:gitlab-mr-iid-2196
pleroma:gitlab-mr-iid-2194
pleroma:gitlab-mr-iid-2177
pleroma:renovate/msw-2.x
pleroma:gitlab-mr-iid-2192
pleroma:gitlab-mr-iid-2191
pleroma:gitlab-mr-iid-2190
pleroma:gitlab-mr-iid-2189
pleroma:gitlab-mr-iid-2188
pleroma:gitlab-mr-iid-2187
pleroma:gitlab-mr-iid-2181
pleroma:gitlab-mr-iid-2182
pleroma:gitlab-mr-iid-2179
pleroma:gitlab-mr-iid-2186
pleroma:gitlab-mr-iid-2180
pleroma:gitlab-mr-iid-2185
pleroma:gitlab-mr-iid-2059
pleroma:gitlab-mr-iid-2176
pleroma:gitlab-mr-iid-2184
pleroma:renovate/vitejs-plugin-vue-jsx-5.x
pleroma:gitlab-mr-iid-2178
pleroma:gitlab-mr-iid-2175
pleroma:gitlab-mr-iid-2161
pleroma:renovate/vitest-monorepo
pleroma:gitlab-mr-iid-2174
pleroma:gitlab-mr-iid-2173
pleroma:gitlab-mr-iid-2172
pleroma:gitlab-mr-iid-2171
pleroma:gitlab-mr-iid-2170
pleroma:gitlab-mr-iid-2162
pleroma:gitlab-mr-iid-2169
pleroma:gitlab-mr-iid-2168
pleroma:gitlab-mr-iid-2167
pleroma:gitlab-mr-iid-2153
pleroma:gitlab-mr-iid-2166
pleroma:gitlab-mr-iid-2165
pleroma:gitlab-mr-iid-2160
pleroma:gitlab-mr-iid-2155
pleroma:gitlab-mr-iid-2159
pleroma:gitlab-mr-iid-2154
pleroma:gitlab-mr-iid-2163
pleroma:gitlab-mr-iid-2158
pleroma:gitlab-mr-iid-2157
pleroma:release/2.9.x
pleroma:gitlab-mr-iid-2151
pleroma:gitlab-mr-iid-2156
pleroma:fix-kazv
pleroma:gitlab-mr-iid-2183
pleroma:renovate/vitejs-plugin-vue-6.x
pleroma:gitlab-mr-iid-2152
pleroma:suggest-remove
pleroma:shigusegubu
pleroma:from/develop/tusooa/sw-cache-assets
pleroma:gitlab-mr-iid-2149
pleroma:gitlab-mr-iid-2150
pleroma:gitlab-mr-iid-1981
pleroma:gitlab-mr-iid-2148
pleroma:gitlab-mr-iid-1966
pleroma:gitlab-mr-iid-2147
pleroma:gitlab-mr-iid-2146
pleroma:settings-sync
pleroma:gitlab-mr-iid-2104
pleroma:gitlab-mr-iid-2145
pleroma:gitlab-mr-iid-2144
pleroma:gitlab-mr-iid-2141
pleroma:gitlab-mr-iid-2143
pleroma:gitlab-mr-iid-2142
pleroma:gitlab-mr-iid-1999
pleroma:gitlab-mr-iid-2140
pleroma:gitlab-mr-iid-2139
pleroma:gitlab-mr-iid-2138
pleroma:gitlab-mr-iid-2137
pleroma:gitlab-mr-iid-2136
pleroma:gitlab-mr-iid-2132
pleroma:gitlab-mr-iid-2135
pleroma:gitlab-mr-iid-2134
pleroma:gitlab-mr-iid-2061
pleroma:gitlab-mr-iid-2133
pleroma:gitlab-mr-iid-2131
pleroma:gitlab-mr-iid-2130
pleroma:gitlab-mr-iid-2129
pleroma:gitlab-mr-iid-2128
pleroma:gitlab-mr-iid-2127
pleroma:gitlab-mr-iid-2088
pleroma:gitlab-mr-iid-2122
pleroma:gitlab-mr-iid-2126
pleroma:release/2.8.x
pleroma:gitlab-mr-iid-2125
pleroma:gitlab-mr-iid-2121
pleroma:gitlab-mr-iid-2124
pleroma:gitlab-mr-iid-2123
pleroma:gitlab-mr-iid-2119
pleroma:gitlab-mr-iid-2120
pleroma:gitlab-mr-iid-2087
pleroma:gitlab-mr-iid-2118
pleroma:gitlab-mr-iid-2117
pleroma:gitlab-mr-iid-2116
pleroma:gitlab-mr-iid-2023
pleroma:gitlab-mr-iid-2080
pleroma:gitlab-mr-iid-2115
pleroma:gitlab-mr-iid-2114
pleroma:gitlab-mr-iid-2113
pleroma:gitlab-mr-iid-2112
pleroma:gitlab-mr-iid-2111
pleroma:gitlab-mr-iid-2110
pleroma:gitlab-mr-iid-2109
pleroma:gitlab-mr-iid-2108
pleroma:gitlab-mr-iid-2107
pleroma:gitlab-mr-iid-2106
pleroma:gitlab-mr-iid-2105
pleroma:gitlab-mr-iid-2103
pleroma:gitlab-mr-iid-2102
pleroma:gitlab-mr-iid-2101
pleroma:gitlab-mr-iid-2100
pleroma:gitlab-mr-iid-2099
pleroma:gitlab-mr-iid-2098
pleroma:gitlab-mr-iid-2097
pleroma:gitlab-mr-iid-2096
pleroma:real-vote-counts
pleroma:gitlab-mr-iid-2095
pleroma:gitlab-mr-iid-2069
pleroma:gitlab-mr-iid-2094
pleroma:gitlab-mr-iid-2093
pleroma:gitlab-mr-iid-2091
pleroma:gitlab-mr-iid-2092
pleroma:gitlab-mr-iid-2090
pleroma:gitlab-mr-iid-2089
pleroma:gitlab-mr-iid-2086
pleroma:gitlab-mr-iid-2077
pleroma:gitlab-mr-iid-2085
pleroma:gitlab-mr-iid-2081
pleroma:gitlab-mr-iid-2084
pleroma:gitlab-mr-iid-2083
pleroma:gitlab-mr-iid-2082
pleroma:gitlab-mr-iid-2078
pleroma:gitlab-mr-iid-2079
pleroma:gitlab-mr-iid-2076
pleroma:gitlab-mr-iid-2075
pleroma:gitlab-mr-iid-2066
pleroma:gitlab-mr-iid-2074
pleroma:gitlab-mr-iid-2073
pleroma:gitlab-mr-iid-2072
pleroma:gitlab-mr-iid-2071
pleroma:gitlab-mr-iid-2070
pleroma:gitlab-mr-iid-2068
pleroma:gitlab-mr-iid-2067
pleroma:gitlab-mr-iid-2065
pleroma:gitlab-mr-iid-2046
pleroma:gitlab-mr-iid-2057
pleroma:gitlab-mr-iid-2064
pleroma:gitlab-mr-iid-2056
pleroma:gitlab-mr-iid-2063
pleroma:gitlab-mr-iid-1437
pleroma:gitlab-mr-iid-2052
pleroma:gitlab-mr-iid-2062
pleroma:gitlab-mr-iid-2060
pleroma:audio-viz
pleroma:gitlab-mr-iid-2058
pleroma:gitlab-mr-iid-2051
pleroma:gitlab-mr-iid-2055
pleroma:gitlab-mr-iid-2054
pleroma:gitlab-mr-iid-2053
pleroma:gitlab-mr-iid-2040
pleroma:gitlab-mr-iid-2047
pleroma:gitlab-mr-iid-2050
pleroma:gitlab-mr-iid-2049
pleroma:gitlab-mr-iid-2048
pleroma:gitlab-mr-iid-2045
pleroma:gitlab-mr-iid-2044
pleroma:gitlab-mr-iid-2043
pleroma:gitlab-mr-iid-2036
pleroma:gitlab-mr-iid-2033
pleroma:gitlab-mr-iid-2042
pleroma:gitlab-mr-iid-2041
pleroma:gitlab-mr-iid-2039
pleroma:gitlab-mr-iid-2038
pleroma:gitlab-mr-iid-2037
pleroma:gitlab-mr-iid-2035
pleroma:gitlab-mr-iid-2034
pleroma:gitlab-mr-iid-2032
pleroma:gitlab-mr-iid-2008
pleroma:gitlab-mr-iid-2031
pleroma:gitlab-mr-iid-2030
pleroma:gitlab-mr-iid-1807
pleroma:gitlab-mr-iid-2029
pleroma:gitlab-mr-iid-2025
pleroma:gitlab-mr-iid-2028
pleroma:gitlab-mr-iid-2027
pleroma:gitlab-mr-iid-2026
pleroma:gitlab-mr-iid-2024
pleroma:gitlab-mr-iid-2022
pleroma:gitlab-mr-iid-2021
pleroma:gitlab-mr-iid-2020
pleroma:gitlab-mr-iid-2019
pleroma:gitlab-mr-iid-2018
pleroma:gitlab-mr-iid-2017
pleroma:gitlab-mr-iid-2011
pleroma:gitlab-mr-iid-2010
pleroma:gitlab-mr-iid-2016
pleroma:gitlab-mr-iid-2013
pleroma:gitlab-mr-iid-2015
pleroma:gitlab-mr-iid-2014
pleroma:gitlab-mr-iid-2012
pleroma:gitlab-mr-iid-2009
pleroma:gitlab-mr-iid-2007
pleroma:gitlab-mr-iid-2006
pleroma:gitlab-mr-iid-2005
pleroma:gitlab-mr-iid-2004
pleroma:gitlab-mr-iid-1998
pleroma:gitlab-mr-iid-2003
pleroma:gitlab-mr-iid-2002
pleroma:gitlab-mr-iid-2001
pleroma:gitlab-mr-iid-2000
pleroma:gitlab-mr-iid-1997
pleroma:gitlab-mr-iid-1985
pleroma:gitlab-mr-iid-1996
pleroma:gitlab-mr-iid-1994
pleroma:gitlab-mr-iid-1995
pleroma:gitlab-mr-iid-1855
pleroma:gitlab-mr-iid-1903
pleroma:gitlab-mr-iid-1993
pleroma:gitlab-mr-iid-1992
pleroma:gitlab-mr-iid-1991
pleroma:gitlab-mr-iid-1990
pleroma:gitlab-mr-iid-1989
pleroma:gitlab-mr-iid-1988
pleroma:gitlab-mr-iid-1987
pleroma:gitlab-mr-iid-1986
pleroma:gitlab-mr-iid-1984
pleroma:gitlab-mr-iid-1983
pleroma:gitlab-mr-iid-1982
pleroma:gitlab-mr-iid-1980
pleroma:gitlab-mr-iid-1979
pleroma:gitlab-mr-iid-1899
pleroma:gitlab-mr-iid-1968
pleroma:gitlab-mr-iid-1978
pleroma:gitlab-mr-iid-1977
pleroma:gitlab-mr-iid-1975
pleroma:gitlab-mr-iid-1976
pleroma:gitlab-mr-iid-1972
pleroma:gitlab-mr-iid-1971
pleroma:gitlab-mr-iid-1974
pleroma:gitlab-mr-iid-1973
pleroma:gitlab-mr-iid-1897
pleroma:gitlab-mr-iid-1901
pleroma:gitlab-mr-iid-1970
pleroma:gitlab-mr-iid-1969
pleroma:gitlab-mr-iid-1967
pleroma:gitlab-mr-iid-1965
pleroma:gitlab-mr-iid-1947
pleroma:gitlab-mr-iid-1962
pleroma:gitlab-mr-iid-1964
pleroma:gitlab-mr-iid-1963
pleroma:gitlab-mr-iid-1961
pleroma:gitlab-mr-iid-1960
pleroma:gitlab-mr-iid-1959
pleroma:gitlab-mr-iid-1799
pleroma:tusooa/1222-in-reply-to
pleroma:gitlab-mr-iid-1749
pleroma:gitlab-mr-iid-1569
pleroma:gitlab-mr-iid-1956
pleroma:gitlab-mr-iid-1958
pleroma:gitlab-mr-iid-1957
pleroma:gitlab-mr-iid-1955
pleroma:gitlab-mr-iid-1703
pleroma:gitlab-mr-iid-1954
pleroma:gitlab-mr-iid-1951
pleroma:gitlab-mr-iid-1953
pleroma:gitlab-mr-iid-1952
pleroma:gitlab-mr-iid-1950
pleroma:gitlab-mr-iid-1949
pleroma:gitlab-mr-iid-1948
pleroma:gitlab-mr-iid-1945
pleroma:gitlab-mr-iid-1939
pleroma:gitlab-mr-iid-1940
pleroma:gitlab-mr-iid-1936
pleroma:gitlab-mr-iid-1946
pleroma:gitlab-mr-iid-1944
pleroma:gitlab-mr-iid-1891
pleroma:gitlab-mr-iid-1943
pleroma:gitlab-mr-iid-1942
pleroma:gitlab-mr-iid-1941
pleroma:separate-admin-build
pleroma:gitlab-mr-iid-1938
pleroma:gitlab-mr-iid-1935
pleroma:gitlab-mr-iid-1937
pleroma:gitlab-mr-iid-1929
pleroma:gitlab-mr-iid-1934
pleroma:gitlab-mr-iid-1933
pleroma:release/2.7.x
pleroma:gitlab-mr-iid-1930
pleroma:gitlab-mr-iid-1900
pleroma:gitlab-mr-iid-1894
pleroma:gitlab-mr-iid-1932
pleroma:gitlab-mr-iid-1931
pleroma:gitlab-mr-iid-1928
pleroma:gitlab-mr-iid-1927
pleroma:gitlab-mr-iid-1926
pleroma:gitlab-mr-iid-1925
pleroma:appearance-tab
pleroma:gitlab-mr-iid-1924
pleroma:gitlab-mr-iid-1923
pleroma:gitlab-mr-iid-1920
pleroma:cherry-pick-631c2532
pleroma:gitlab-mr-iid-1922
pleroma:gitlab-mr-iid-1921
pleroma:gitlab-mr-iid-1915
pleroma:gitlab-mr-iid-1919
pleroma:gitlab-mr-iid-1916
pleroma:gitlab-mr-iid-1918
pleroma:gitlab-mr-iid-1917
pleroma:gitlab-mr-iid-1914
pleroma:gitlab-mr-iid-1904
pleroma:gitlab-mr-iid-1910
pleroma:gitlab-mr-iid-1885
pleroma:gitlab-mr-iid-1913
pleroma:gitlab-mr-iid-1911
pleroma:gitlab-mr-iid-1912
pleroma:gitlab-mr-iid-1909
pleroma:gitlab-mr-iid-1908
pleroma:gitlab-mr-iid-1907
pleroma:gitlab-mr-iid-1893
pleroma:gitlab-mr-iid-1906
pleroma:gitlab-mr-iid-1905
pleroma:gitlab-mr-iid-1892
pleroma:gitlab-mr-iid-1902
pleroma:gitlab-mr-iid-1898
pleroma:gitlab-mr-iid-1896
pleroma:gitlab-mr-iid-1895
pleroma:gitlab-mr-iid-1662
pleroma:gitlab-mr-iid-1888
pleroma:gitlab-mr-iid-1878
pleroma:gitlab-mr-iid-1890
pleroma:gitlab-mr-iid-1831
pleroma:gitlab-mr-iid-1829
pleroma:gitlab-mr-iid-1886
pleroma:gitlab-mr-iid-1889
pleroma:gitlab-mr-iid-1856
pleroma:gitlab-mr-iid-1887
pleroma:gitlab-mr-iid-1851
pleroma:gitlab-mr-iid-1884
pleroma:gitlab-mr-iid-1881
pleroma:gitlab-mr-iid-1883
pleroma:gitlab-mr-iid-1882
pleroma:1289-button-text
pleroma:gitlab-mr-iid-1880
pleroma:gitlab-mr-iid-1879
pleroma:gitlab-mr-iid-1873
pleroma:gitlab-mr-iid-1805
pleroma:gitlab-mr-iid-1877
pleroma:gitlab-mr-iid-1872
pleroma:gitlab-mr-iid-1870
pleroma:gitlab-mr-iid-1876
pleroma:gitlab-mr-iid-1875
pleroma:gitlab-mr-iid-1874
pleroma:release/2.6.x
pleroma:gitlab-mr-iid-1863
pleroma:gitlab-mr-iid-1871
pleroma:tusooa/poll-kbd-accessibility
pleroma:gitlab-mr-iid-1869
pleroma:gitlab-mr-iid-1868
pleroma:gitlab-mr-iid-1867
pleroma:gitlab-mr-iid-1866
pleroma:gitlab-mr-iid-1865
pleroma:gitlab-mr-iid-1864
pleroma:gitlab-mr-iid-1862
pleroma:gitlab-mr-iid-1861
pleroma:gitlab-mr-iid-1860
pleroma:gitlab-mr-iid-1859
pleroma:gitlab-mr-iid-1858
pleroma:gitlab-mr-iid-1857
pleroma:gitlab-mr-iid-1854
pleroma:gitlab-mr-iid-1852
pleroma:gitlab-mr-iid-1853
pleroma:gitlab-mr-iid-1834
pleroma:gitlab-mr-iid-1850
pleroma:gitlab-mr-iid-1849
pleroma:gitlab-mr-iid-1848
pleroma:gitlab-mr-iid-1846
pleroma:gitlab-mr-iid-1847
pleroma:gitlab-mr-iid-1842
pleroma:gitlab-mr-iid-1845
pleroma:gitlab-mr-iid-1663
pleroma:gitlab-mr-iid-1844
pleroma:gitlab-mr-iid-1843
pleroma:gitlab-mr-iid-1841
pleroma:gitlab-mr-iid-1840
pleroma:gitlab-mr-iid-1833
pleroma:gitlab-mr-iid-1839
pleroma:gitlab-mr-iid-1838
pleroma:gitlab-mr-iid-1837
pleroma:gitlab-mr-iid-1836
pleroma:gitlab-mr-iid-1835
pleroma:gitlab-mr-iid-1832
pleroma:gitlab-mr-iid-1800
pleroma:gitlab-mr-iid-1830
pleroma:gitlab-mr-iid-1828
pleroma:gitlab-mr-iid-1827
pleroma:gitlab-mr-iid-1826
pleroma:gitlab-mr-iid-1825
pleroma:gitlab-mr-iid-1812
pleroma:gitlab-mr-iid-1824
pleroma:gitlab-mr-iid-1823
pleroma:gitlab-mr-iid-1822
pleroma:gitlab-mr-iid-1821
pleroma:gitlab-mr-iid-1820
pleroma:gitlab-mr-iid-1819
pleroma:gitlab-mr-iid-1740
pleroma:gitlab-mr-iid-1818
pleroma:gitlab-mr-iid-1817
pleroma:gitlab-mr-iid-1816
pleroma:gitlab-mr-iid-1815
pleroma:gitlab-mr-iid-1750
pleroma:gitlab-mr-iid-1814
pleroma:gitlab-mr-iid-1813
pleroma:gitlab-mr-iid-1811
pleroma:gitlab-mr-iid-1810
pleroma:gitlab-mr-iid-1809
pleroma:gitlab-mr-iid-1808
pleroma:gitlab-mr-iid-1803
pleroma:gitlab-mr-iid-1806
pleroma:gitlab-mr-iid-1804
pleroma:gitlab-mr-iid-1784
pleroma:gitlab-mr-iid-1796
pleroma:gitlab-mr-iid-1802
pleroma:gitlab-mr-iid-1798
pleroma:gitlab-mr-iid-1792
pleroma:gitlab-mr-iid-1801
pleroma:gitlab-mr-iid-1732
pleroma:gitlab-mr-iid-1797
pleroma:gitlab-mr-iid-1795
pleroma:gitlab-mr-iid-1794
pleroma:tusooa/focus-styling
pleroma:gitlab-mr-iid-1793
pleroma:gitlab-mr-iid-1791
pleroma:gitlab-mr-iid-1743
pleroma:gitlab-mr-iid-1790
pleroma:gitlab-mr-iid-1789
pleroma:gitlab-mr-iid-1788
pleroma:gitlab-mr-iid-1787
pleroma:gitlab-mr-iid-1786
pleroma:gitlab-mr-iid-1776
pleroma:gitlab-mr-iid-1778
pleroma:gitlab-mr-iid-1785
pleroma:gitlab-mr-iid-1780
pleroma:gitlab-mr-iid-1783
pleroma:gitlab-mr-iid-1782
pleroma:gitlab-mr-iid-1665
pleroma:gitlab-mr-iid-1781
pleroma:gitlab-mr-iid-1779
pleroma:tusooa/multilang
pleroma:gitlab-mr-iid-1775
pleroma:gitlab-mr-iid-1694
pleroma:gitlab-mr-iid-1745
pleroma:gitlab-mr-iid-1777
pleroma:gitlab-mr-iid-1432
pleroma:gitlab-mr-iid-1431
pleroma:gitlab-mr-iid-1774
pleroma:gitlab-mr-iid-1771
pleroma:gitlab-mr-iid-1773
pleroma:gitlab-mr-iid-1772
pleroma:gitlab-mr-iid-1765
pleroma:gitlab-mr-iid-1770
pleroma:gitlab-mr-iid-1769
pleroma:gitlab-mr-iid-1768
pleroma:gitlab-mr-iid-1767
pleroma:gitlab-mr-iid-1766
pleroma:gitlab-mr-iid-1764
pleroma:gitlab-mr-iid-1763
pleroma:gitlab-mr-iid-1762
pleroma:fix/emoji-reaction-picked
pleroma:gitlab-mr-iid-1761
pleroma:gitlab-mr-iid-1752
pleroma:gitlab-mr-iid-1760
pleroma:gitlab-mr-iid-1759
pleroma:gitlab-mr-iid-1758
pleroma:gitlab-mr-iid-1757
pleroma:gitlab-mr-iid-1756
pleroma:gitlab-mr-iid-1755
pleroma:gitlab-mr-iid-1754
pleroma:gitlab-mr-iid-1753
pleroma:gitlab-mr-iid-1751
pleroma:gitlab-mr-iid-1748
pleroma:gitlab-mr-iid-1747
pleroma:gitlab-mr-iid-1746
pleroma:gitlab-mr-iid-1744
pleroma:gitlab-mr-iid-1742
pleroma:gitlab-mr-iid-1741
pleroma:gitlab-mr-iid-1717
pleroma:gitlab-mr-iid-1737
pleroma:gitlab-mr-iid-1739
pleroma:gitlab-mr-iid-1738
pleroma:gitlab-mr-iid-1736
pleroma:gitlab-mr-iid-1735
pleroma:gitlab-mr-iid-1734
pleroma:gitlab-mr-iid-1733
pleroma:gitlab-mr-iid-1731
pleroma:gitlab-mr-iid-1730
pleroma:gitlab-mr-iid-1728
pleroma:gitlab-mr-iid-1724
pleroma:gitlab-mr-iid-1725
pleroma:gitlab-mr-iid-1729
pleroma:gitlab-mr-iid-1727
pleroma:gitlab-mr-iid-1726
pleroma:gitlab-mr-iid-1723
pleroma:gitlab-mr-iid-1722
pleroma:gitlab-mr-iid-1721
pleroma:gitlab-mr-iid-1720
pleroma:gitlab-mr-iid-1719
pleroma:gitlab-mr-iid-1718
pleroma:gitlab-mr-iid-1716
pleroma:gitlab-mr-iid-1715
pleroma:gitlab-mr-iid-1714
pleroma:gitlab-mr-iid-1713
pleroma:gitlab-mr-iid-1698
pleroma:gitlab-mr-iid-1568
pleroma:gitlab-mr-iid-1711
pleroma:gitlab-mr-iid-1712
pleroma:gitlab-mr-iid-1710
pleroma:gitlab-mr-iid-1676
pleroma:gitlab-mr-iid-1709
pleroma:gitlab-mr-iid-1701
pleroma:gitlab-mr-iid-1612
pleroma:gitlab-mr-iid-1708
pleroma:gitlab-mr-iid-1707
pleroma:gitlab-mr-iid-1706
pleroma:gitlab-mr-iid-1704
pleroma:gitlab-mr-iid-1705
pleroma:gitlab-mr-iid-1702
pleroma:gitlab-mr-iid-1700
pleroma:gitlab-mr-iid-1699
pleroma:gitlab-mr-iid-1666
pleroma:gitlab-mr-iid-1697
pleroma:gitlab-mr-iid-1696
pleroma:gitlab-mr-iid-1684
pleroma:gitlab-mr-iid-1664
pleroma:gitlab-mr-iid-1695
pleroma:gitlab-mr-iid-1693
pleroma:gitlab-mr-iid-1690
pleroma:gitlab-mr-iid-1691
pleroma:gitlab-mr-iid-1692
pleroma:gitlab-mr-iid-1682
pleroma:gitlab-mr-iid-1677
pleroma:gitlab-mr-iid-1689
pleroma:gitlab-mr-iid-1688
pleroma:gitlab-mr-iid-1466
pleroma:gitlab-mr-iid-1687
pleroma:gitlab-mr-iid-1686
pleroma:gitlab-mr-iid-1685
pleroma:gitlab-mr-iid-1680
pleroma:gitlab-mr-iid-1651
pleroma:gitlab-mr-iid-1683
pleroma:gitlab-mr-iid-1679
pleroma:gitlab-mr-iid-1681
pleroma:gitlab-mr-iid-1678
pleroma:gitlab-mr-iid-1673
pleroma:gitlab-mr-iid-1675
pleroma:gitlab-mr-iid-1648
pleroma:gitlab-mr-iid-1605
pleroma:gitlab-mr-iid-1674
pleroma:gitlab-mr-iid-1672
pleroma:gitlab-mr-iid-1671
pleroma:gitlab-mr-iid-1654
pleroma:gitlab-mr-iid-1670
pleroma:gitlab-mr-iid-1669
pleroma:gitlab-mr-iid-1668
pleroma:gitlab-mr-iid-1655
pleroma:gitlab-mr-iid-1667
pleroma:gitlab-mr-iid-1661
pleroma:gitlab-mr-iid-1660
pleroma:gitlab-mr-iid-1656
pleroma:gitlab-mr-iid-1659
pleroma:gitlab-mr-iid-1658
pleroma:gitlab-mr-iid-1657
pleroma:gitlab-mr-iid-1636
pleroma:gitlab-mr-iid-1559
pleroma:gitlab-mr-iid-1628
pleroma:gitlab-mr-iid-1653
pleroma:gitlab-mr-iid-1652
pleroma:gitlab-mr-iid-1627
pleroma:gitlab-mr-iid-1650
pleroma:gitlab-mr-iid-1649
pleroma:gitlab-mr-iid-1644
pleroma:gitlab-mr-iid-1604
pleroma:gitlab-mr-iid-1485
pleroma:gitlab-mr-iid-1647
pleroma:gitlab-mr-iid-1646
pleroma:gitlab-mr-iid-1645
pleroma:gitlab-mr-iid-1643
pleroma:gitlab-mr-iid-1642
pleroma:gitlab-mr-iid-1583
pleroma:gitlab-mr-iid-1639
pleroma:gitlab-mr-iid-1408
pleroma:gitlab-mr-iid-1641
pleroma:gitlab-mr-iid-1640
pleroma:gitlab-mr-iid-1638
pleroma:gitlab-mr-iid-1637
pleroma:gitlab-mr-iid-1633
pleroma:gitlab-mr-iid-1611
pleroma:gitlab-mr-iid-1600
pleroma:gitlab-mr-iid-1635
pleroma:gitlab-mr-iid-1634
pleroma:gitlab-mr-iid-1630
pleroma:gitlab-mr-iid-1592
pleroma:gitlab-mr-iid-1632
pleroma:gitlab-mr-iid-1631
pleroma:gitlab-mr-iid-1629
pleroma:gitlab-mr-iid-1620
pleroma:gitlab-mr-iid-1626
pleroma:gitlab-mr-iid-1622
pleroma:gitlab-mr-iid-1625
pleroma:gitlab-mr-iid-1624
pleroma:gitlab-mr-iid-1623
pleroma:gitlab-mr-iid-1621
pleroma:gitlab-mr-iid-1616
pleroma:gitlab-mr-iid-1619
pleroma:gitlab-mr-iid-1537
pleroma:gitlab-mr-iid-1618
pleroma:gitlab-mr-iid-1617
pleroma:gitlab-mr-iid-1586
pleroma:gitlab-mr-iid-1425
pleroma:gitlab-mr-iid-1614
pleroma:gitlab-mr-iid-1615
pleroma:gitlab-mr-iid-1613
pleroma:gitlab-mr-iid-1607
pleroma:gitlab-mr-iid-1610
pleroma:gitlab-mr-iid-1609
pleroma:gitlab-mr-iid-1608
pleroma:gitlab-mr-iid-1550
pleroma:gitlab-mr-iid-1606
pleroma:gitlab-mr-iid-1601
pleroma:gitlab-mr-iid-1533
pleroma:gitlab-mr-iid-1603
pleroma:gitlab-mr-iid-1602
pleroma:gitlab-mr-iid-1599
pleroma:gitlab-mr-iid-1575
pleroma:gitlab-mr-iid-1593
pleroma:gitlab-mr-iid-1598
pleroma:gitlab-mr-iid-1597
pleroma:gitlab-mr-iid-1596
pleroma:gitlab-mr-iid-1557
pleroma:gitlab-mr-iid-1595
pleroma:gitlab-mr-iid-1594
pleroma:gitlab-mr-iid-1573
pleroma:gitlab-mr-iid-1571
pleroma:gitlab-mr-iid-1591
pleroma:gitlab-mr-iid-1590
pleroma:gitlab-mr-iid-1582
pleroma:gitlab-mr-iid-1567
pleroma:gitlab-mr-iid-1589
pleroma:gitlab-mr-iid-1588
pleroma:gitlab-mr-iid-1587
pleroma:gitlab-mr-iid-1581
pleroma:gitlab-mr-iid-1322
pleroma:gitlab-mr-iid-1585
pleroma:gitlab-mr-iid-1584
pleroma:gitlab-mr-iid-1578
pleroma:gitlab-mr-iid-1580
pleroma:gitlab-mr-iid-1579
pleroma:gitlab-mr-iid-1560
pleroma:gitlab-mr-iid-1577
pleroma:gitlab-mr-iid-1576
pleroma:gitlab-mr-iid-1540
pleroma:gitlab-mr-iid-1564
pleroma:gitlab-mr-iid-1574
pleroma:gitlab-mr-iid-1570
pleroma:gitlab-mr-iid-1572
pleroma:gitlab-mr-iid-1566
pleroma:gitlab-mr-iid-1497
pleroma:gitlab-mr-iid-1565
pleroma:gitlab-mr-iid-1563
pleroma:gitlab-mr-iid-1562
pleroma:gitlab-mr-iid-1529
pleroma:gitlab-mr-iid-1561
pleroma:gitlab-mr-iid-1553
pleroma:gitlab-mr-iid-1548
pleroma:gitlab-mr-iid-1554
pleroma:gitlab-mr-iid-1498
pleroma:gitlab-mr-iid-1558
pleroma:gitlab-mr-iid-1546
pleroma:gitlab-mr-base-iid-1585
pleroma:gitlab-mr-iid-1556
pleroma:gitlab-mr-iid-1555
pleroma:gitlab-mr-iid-1551
pleroma:gitlab-mr-iid-1549
pleroma:gitlab-mr-iid-1410
pleroma:gitlab-mr-iid-1552
pleroma:gitlab-mr-iid-1492
pleroma:gitlab-mr-iid-1531
pleroma:gitlab-mr-iid-1547
pleroma:gitlab-mr-iid-1530
pleroma:gitlab-mr-iid-1495
pleroma:gitlab-mr-iid-1545
pleroma:gitlab-mr-iid-1544
pleroma:gitlab-mr-iid-1543
pleroma:gitlab-mr-iid-1487
pleroma:gitlab-mr-iid-1542
pleroma:gitlab-mr-iid-1419
pleroma:gitlab-mr-iid-1541
pleroma:gitlab-mr-iid-1539
pleroma:gitlab-mr-iid-1538
pleroma:gitlab-mr-iid-1536
pleroma:gitlab-mr-iid-1535
pleroma:gitlab-mr-iid-1534
pleroma:gitlab-mr-iid-1503
pleroma:gitlab-mr-iid-1532
pleroma:gitlab-mr-iid-1528
pleroma:gitlab-mr-iid-1526
pleroma:gitlab-mr-iid-1527
pleroma:gitlab-mr-iid-1525
pleroma:gitlab-mr-iid-1522
pleroma:gitlab-mr-iid-1524
pleroma:gitlab-mr-iid-1523
pleroma:gitlab-mr-iid-1521
pleroma:gitlab-mr-iid-1520
pleroma:gitlab-mr-iid-1517
pleroma:gitlab-mr-iid-1501
pleroma:gitlab-mr-iid-1519
pleroma:gitlab-mr-iid-1414
pleroma:gitlab-mr-iid-1494
pleroma:gitlab-mr-iid-1518
pleroma:gitlab-mr-iid-1516
pleroma:gitlab-mr-iid-1515
pleroma:gitlab-mr-iid-1514
pleroma:gitlab-mr-iid-1513
pleroma:gitlab-mr-iid-1512
pleroma:gitlab-mr-iid-1511
pleroma:gitlab-mr-iid-1510
pleroma:gitlab-mr-iid-1509
pleroma:gitlab-mr-iid-1507
pleroma:gitlab-mr-iid-1508
pleroma:gitlab-mr-iid-1506
pleroma:gitlab-mr-iid-1505
pleroma:gitlab-mr-iid-1504
pleroma:gitlab-mr-iid-1502
pleroma:gitlab-mr-iid-1496
pleroma:gitlab-mr-iid-1491
pleroma:gitlab-mr-iid-1490
pleroma:gitlab-mr-iid-1385
pleroma:gitlab-mr-iid-1500
pleroma:gitlab-mr-base-iid-1500
pleroma:gitlab-mr-iid-1499
pleroma:gitlab-mr-base-iid-1499
pleroma:gitlab-mr-iid-1453
pleroma:gitlab-mr-iid-1493
pleroma:gitlab-mr-iid-1488
pleroma:gitlab-mr-iid-1489
pleroma:gitlab-mr-iid-1486
pleroma:gitlab-mr-iid-1484
pleroma:gitlab-mr-iid-1483
pleroma:gitlab-mr-iid-1482
pleroma:gitlab-mr-iid-1481
pleroma:gitlab-mr-iid-1480
pleroma:gitlab-mr-iid-1475
pleroma:gitlab-mr-iid-1479
pleroma:gitlab-mr-iid-1478
pleroma:gitlab-mr-iid-1477
pleroma:gitlab-mr-iid-1476
pleroma:gitlab-mr-iid-1473
pleroma:gitlab-mr-iid-1471
pleroma:gitlab-mr-iid-1468
pleroma:gitlab-mr-iid-1469
pleroma:gitlab-mr-iid-1474
pleroma:gitlab-mr-iid-1472
pleroma:gitlab-mr-iid-1470
pleroma:gitlab-mr-iid-1467
pleroma:gitlab-mr-iid-1465
pleroma:gitlab-mr-iid-1464
pleroma:gitlab-mr-iid-1462
pleroma:gitlab-mr-iid-1438
pleroma:gitlab-mr-iid-1463
pleroma:gitlab-mr-iid-1461
pleroma:gitlab-mr-iid-1460
pleroma:gitlab-mr-iid-1459
pleroma:gitlab-mr-iid-1458
pleroma:gitlab-mr-iid-1457
pleroma:gitlab-mr-iid-1403
pleroma:gitlab-mr-iid-1456
pleroma:gitlab-mr-iid-1455
pleroma:gitlab-mr-iid-1454
pleroma:gitlab-mr-iid-1452
pleroma:gitlab-mr-iid-1451
pleroma:gitlab-mr-iid-1449
pleroma:gitlab-mr-iid-1450
pleroma:gitlab-mr-iid-1448
pleroma:gitlab-mr-iid-1447
pleroma:gitlab-mr-iid-1446
pleroma:gitlab-mr-iid-1445
pleroma:gitlab-mr-iid-1443
pleroma:gitlab-mr-iid-1444
pleroma:gitlab-mr-iid-1440
pleroma:gitlab-mr-iid-1407
pleroma:gitlab-mr-iid-1442
pleroma:gitlab-mr-iid-1441
pleroma:gitlab-mr-iid-1439
pleroma:gitlab-mr-iid-1436
pleroma:gitlab-mr-iid-1435
pleroma:gitlab-mr-iid-1434
pleroma:gitlab-mr-iid-1433
pleroma:gitlab-mr-iid-1430
pleroma:gitlab-mr-iid-1399
pleroma:gitlab-mr-iid-1429
pleroma:gitlab-mr-iid-1428
pleroma:gitlab-mr-iid-1424
pleroma:gitlab-mr-iid-1427
pleroma:gitlab-mr-iid-1394
pleroma:gitlab-mr-iid-1426
pleroma:gitlab-mr-iid-1421
pleroma:gitlab-mr-iid-1423
pleroma:gitlab-mr-iid-1422
pleroma:gitlab-mr-iid-1420
pleroma:add-comptability-redirects
pleroma:gitlab-mr-iid-1418
pleroma:gitlab-mr-iid-1417
pleroma:gitlab-mr-iid-1416
pleroma:gitlab-mr-iid-1415
pleroma:gitlab-mr-iid-1413
pleroma:gitlab-mr-iid-1397
pleroma:gitlab-mr-iid-1412
pleroma:gitlab-mr-iid-1388
pleroma:gitlab-mr-iid-1392
pleroma:gitlab-mr-iid-1411
pleroma:gitlab-mr-iid-1409
pleroma:gitlab-mr-iid-1406
pleroma:gitlab-mr-iid-1405
pleroma:gitlab-mr-iid-1404
pleroma:gitlab-mr-iid-1263
pleroma:gitlab-mr-iid-1401
pleroma:gitlab-mr-iid-1395
pleroma:gitlab-mr-iid-1393
pleroma:gitlab-mr-iid-1402
pleroma:gitlab-mr-iid-1400
pleroma:gitlab-mr-iid-1398
pleroma:gitlab-mr-iid-1396
pleroma:mentions-clean
pleroma:webpack5
pleroma:gitlab-mr-iid-1207
pleroma:gitlab-mr-iid-1391
pleroma:experiment-still-emoji
pleroma:gitlab-mr-iid-1390
pleroma:gitlab-mr-iid-1389
pleroma:gitlab-mr-iid-1379
pleroma:gitlab-mr-iid-1373
pleroma:gitlab-mr-iid-1382
pleroma:gitlab-mr-iid-1380
pleroma:gitlab-mr-iid-1387
pleroma:gitlab-mr-iid-1378
pleroma:gitlab-mr-iid-1386
pleroma:gitlab-mr-iid-1384
pleroma:gitlab-mr-iid-1383
pleroma:gitlab-mr-iid-1381
pleroma:vue3compat-tabswitcher
pleroma:gitlab-mr-iid-1365
pleroma:gitlab-mr-iid-1364
pleroma:gitlab-mr-iid-1377
pleroma:gitlab-mr-iid-1376
pleroma:gitlab-mr-iid-1375
pleroma:gitlab-mr-iid-1374
pleroma:vue3
pleroma:gitlab-mr-iid-1372
pleroma:gitlab-mr-iid-1326
pleroma:gitlab-mr-iid-1371
pleroma:gitlab-mr-iid-1370
pleroma:gitlab-mr-iid-1369
pleroma:gitlab-mr-iid-1368
pleroma:feat/lists
pleroma:gitlab-mr-iid-1367
pleroma:gitlab-mr-iid-1366
pleroma:rc/2.3.0
pleroma:gitlab-mr-iid-1355
pleroma:gitlab-mr-iid-1363
pleroma:gitlab-mr-iid-1362
pleroma:gitlab-mr-iid-1352
pleroma:gitlab-mr-iid-1361
pleroma:gitlab-mr-iid-1360
pleroma:gitlab-mr-iid-1359
pleroma:gitlab-mr-iid-1358
pleroma:gitlab-mr-iid-1357
pleroma:gitlab-mr-iid-1356
pleroma:gitlab-mr-iid-1354
pleroma:gitlab-mr-iid-1353
pleroma:fix/private-mode-error-handling
pleroma:gitlab-mr-iid-1339
pleroma:gitlab-mr-iid-1351
pleroma:gitlab-mr-iid-1350
pleroma:gitlab-mr-iid-1348
pleroma:gitlab-mr-iid-1349
pleroma:gitlab-mr-iid-1347
pleroma:gitlab-mr-iid-1346
pleroma:gitlab-mr-iid-1345
pleroma:gitlab-mr-iid-1336
pleroma:gitlab-mr-iid-1344
pleroma:gitlab-mr-iid-1343
pleroma:gitlab-mr-iid-1341
pleroma:gitlab-mr-iid-1342
pleroma:gitlab-mr-iid-1340
pleroma:gitlab-mr-iid-1338
pleroma:gitlab-mr-iid-1257
pleroma:gitlab-mr-iid-1337
pleroma:gitlab-mr-iid-1327
pleroma:gitlab-mr-iid-1335
pleroma:gitlab-mr-iid-1334
pleroma:gitlab-mr-iid-1333
pleroma:gitlab-mr-iid-1301
pleroma:gitlab-mr-iid-1302
pleroma:gitlab-mr-iid-1329
pleroma:gitlab-mr-iid-1332
pleroma:gitlab-mr-iid-1331
pleroma:gitlab-mr-iid-1330
pleroma:gitlab-mr-iid-1328
pleroma:gitlab-mr-iid-1325
pleroma:gitlab-mr-iid-1324
pleroma:gitlab-mr-iid-1323
pleroma:gitlab-mr-iid-1305
pleroma:gitlab-mr-iid-1321
pleroma:gitlab-mr-iid-1320
pleroma:gitlab-mr-iid-1319
pleroma:gitlab-mr-iid-1318
pleroma:gitlab-mr-iid-1317
pleroma:gitlab-mr-iid-1316
pleroma:gitlab-mr-iid-1044
pleroma:gitlab-mr-iid-1315
pleroma:gitlab-mr-iid-1309
pleroma:gitlab-mr-iid-1314
pleroma:gitlab-mr-iid-1300
pleroma:gitlab-mr-iid-1313
pleroma:gitlab-mr-iid-1303
pleroma:gitlab-mr-iid-1312
pleroma:gitlab-mr-iid-1311
pleroma:gitlab-mr-iid-1310
pleroma:gitlab-mr-iid-1308
pleroma:gitlab-mr-iid-1307
pleroma:gitlab-mr-iid-1306
pleroma:gitlab-mr-iid-1298
pleroma:gitlab-mr-iid-1299
pleroma:gitlab-mr-iid-1304
pleroma:gitlab-mr-iid-1294
pleroma:gitlab-mr-iid-1293
pleroma:gitlab-mr-iid-1297
pleroma:gitlab-mr-iid-1296
pleroma:gitlab-mr-iid-1269
pleroma:gitlab-mr-iid-1295
pleroma:gitlab-mr-iid-1289
pleroma:gitlab-mr-iid-1292
pleroma:gitlab-mr-iid-1287
pleroma:gitlab-mr-iid-1291
pleroma:gitlab-mr-iid-1290
pleroma:gitlab-mr-iid-1288
pleroma:gitlab-mr-iid-1286
pleroma:gitlab-mr-iid-1283
pleroma:gitlab-mr-iid-1285
pleroma:gitlab-mr-iid-1284
pleroma:gitlab-mr-iid-1282
pleroma:gitlab-mr-iid-1281
pleroma:gitlab-mr-iid-1280
pleroma:gitlab-mr-iid-1279
pleroma:feat/favicon-badge
pleroma:gitlab-mr-iid-1273
pleroma:gitlab-mr-iid-1278
pleroma:gitlab-mr-iid-1277
pleroma:gitlab-mr-iid-1249
pleroma:experimental-3-column
pleroma:gitlab-mr-iid-1275
pleroma:gitlab-mr-iid-1276
pleroma:gitlab-mr-iid-1274
pleroma:gitlab-mr-iid-1272
pleroma:gitlab-mr-iid-1271
pleroma:gitlab-mr-iid-1270
pleroma:gitlab-mr-iid-1228
pleroma:gitlab-mr-iid-1267
pleroma:gitlab-mr-iid-1264
pleroma:gitlab-mr-iid-1268
pleroma:gitlab-mr-iid-1265
pleroma:gitlab-mr-iid-1266
pleroma:gitlab-mr-iid-1260
pleroma:gitlab-mr-iid-1262
pleroma:gitlab-mr-iid-1261
pleroma:gitlab-mr-iid-1259
pleroma:gitlab-mr-iid-1258
pleroma:gitlab-mr-iid-1256
pleroma:gitlab-mr-iid-1255
pleroma:gitlab-mr-iid-1254
pleroma:gitlab-mr-iid-1253
pleroma:gitlab-mr-iid-1252
pleroma:gitlab-mr-iid-1251
pleroma:gitlab-mr-iid-1250
pleroma:gitlab-mr-iid-1248
pleroma:gitlab-mr-iid-1247
pleroma:gitlab-mr-iid-1246
pleroma:gitlab-mr-iid-1243
pleroma:gitlab-mr-iid-1232
pleroma:gitlab-mr-iid-1245
pleroma:fix/tos-panel-rendering
pleroma:gitlab-mr-iid-1244
pleroma:gitlab-mr-iid-1227
pleroma:gitlab-mr-iid-1238
pleroma:gitlab-mr-iid-1242
pleroma:gitlab-mr-iid-1241
pleroma:gitlab-mr-iid-1240
pleroma:gitlab-mr-iid-1239
pleroma:gitlab-mr-iid-1229
pleroma:gitlab-mr-iid-1237
pleroma:gitlab-mr-iid-1236
pleroma:gitlab-mr-iid-1235
pleroma:gitlab-mr-iid-1043
pleroma:gitlab-mr-iid-1233
pleroma:gitlab-mr-iid-1234
pleroma:gitlab-mr-iid-1230
pleroma:gitlab-mr-iid-1231
pleroma:gitlab-mr-iid-1226
pleroma:feat/video-poster
pleroma:gitlab-mr-iid-1224
pleroma:gitlab-mr-iid-1225
pleroma:gitlab-mr-iid-1222
pleroma:feat/user-popovers
pleroma:gitlab-mr-iid-1209
pleroma:gitlab-mr-iid-1223
pleroma:gitlab-mr-iid-1221
pleroma:gitlab-mr-iid-1218
pleroma:gitlab-mr-iid-1220
pleroma:gitlab-mr-iid-1219
pleroma:gitlab-mr-iid-1217
pleroma:gitlab-mr-iid-1216
pleroma:gitlab-mr-iid-1215
pleroma:gitlab-mr-iid-1179
pleroma:gitlab-mr-iid-1214
pleroma:gitlab-mr-iid-1213
pleroma:gitlab-mr-iid-1208
pleroma:gitlab-mr-iid-1212
pleroma:gitlab-mr-iid-1211
pleroma:gitlab-mr-iid-1210
pleroma:gitlab-mr-iid-1205
pleroma:gitlab-mr-iid-1206
pleroma:gitlab-mr-iid-1172
pleroma:gitlab-mr-iid-1201
pleroma:gitlab-mr-iid-1204
pleroma:gitlab-mr-iid-1203
pleroma:gitlab-mr-iid-1202
pleroma:gitlab-mr-iid-1200
pleroma:gitlab-mr-iid-1186
pleroma:gitlab-mr-iid-1190
pleroma:fix/aggregate-notification-settings
pleroma:gitlab-mr-iid-1199
pleroma:gitlab-mr-iid-1198
pleroma:chore/mfa-improvements
pleroma:gitlab-mr-iid-1193
pleroma:gitlab-mr-iid-1197
pleroma:gitlab-mr-iid-1196
pleroma:gitlab-mr-iid-1195
pleroma:gitlab-mr-iid-1194
pleroma:gitlab-mr-iid-1192
pleroma:gitlab-mr-iid-1124
pleroma:gitlab-mr-iid-1191
pleroma:gitlab-mr-iid-1189
pleroma:gitlab-mr-iid-1188
pleroma:gitlab-mr-iid-1183
pleroma:fix-chrome69-dungeon-master
pleroma:gitlab-mr-iid-1184
pleroma:gitlab-mr-iid-1187
pleroma:gitlab-mr-iid-1185
pleroma:gitlab-mr-iid-1182
pleroma:gitlab-mr-iid-1181
pleroma:gitlab-mr-iid-1180
pleroma:gitlab-mr-iid-1174
pleroma:gitlab-mr-iid-1178
pleroma:gitlab-mr-iid-1177
pleroma:gitlab-mr-iid-1176
pleroma:gitlab-mr-iid-1175
pleroma:gitlab-mr-iid-1156
pleroma:gitlab-mr-iid-1173
pleroma:gitlab-mr-iid-1169
pleroma:gitlab-mr-iid-1171
pleroma:gitlab-mr-iid-1161
pleroma:gitlab-mr-iid-1170
pleroma:gitlab-mr-iid-1159
pleroma:gitlab-mr-iid-1164
pleroma:gitlab-mr-iid-1168
pleroma:gitlab-mr-iid-903
pleroma:gitlab-mr-iid-1154
pleroma:gitlab-mr-iid-1166
pleroma:gitlab-mr-iid-1167
pleroma:gitlab-mr-iid-1165
pleroma:gitlab-mr-iid-1163
pleroma:redux
pleroma:gitlab-mr-iid-1162
pleroma:gitlab-mr-iid-1160
pleroma:gitlab-mr-iid-1158
pleroma:gitlab-mr-iid-1157
pleroma:gitlab-mr-iid-1155
pleroma:gitlab-mr-iid-1084
pleroma:gitlab-mr-iid-997
pleroma:gitlab-mr-iid-1150
pleroma:gitlab-mr-iid-1152
pleroma:gitlab-mr-iid-1153
pleroma:gitlab-mr-iid-1142
pleroma:gitlab-mr-iid-1151
pleroma:gitlab-mr-iid-1076
pleroma:gitlab-mr-iid-1146
pleroma:gitlab-mr-iid-1149
pleroma:gitlab-mr-iid-1004
pleroma:gitlab-mr-iid-1147
pleroma:gitlab-mr-iid-1148
pleroma:gitlab-mr-iid-1145
pleroma:gitlab-mr-iid-1144
pleroma:gitlab-mr-iid-986
pleroma:gitlab-mr-iid-1139
pleroma:localforage-experiments
pleroma:gitlab-mr-iid-1143
pleroma:gitlab-mr-iid-1140
pleroma:gitlab-mr-iid-1141
pleroma:gitlab-mr-iid-1121
pleroma:gitlab-mr-iid-1137
pleroma:gitlab-mr-iid-1138
pleroma:gitlab-mr-iid-1136
pleroma:gitlab-mr-iid-1135
pleroma:gitlab-mr-iid-1103
pleroma:gitlab-mr-iid-1134
pleroma:gitlab-mr-iid-1118
pleroma:gitlab-mr-iid-1133
pleroma:gitlab-mr-iid-1120
pleroma:gitlab-mr-iid-1132
pleroma:gitlab-mr-iid-1131
pleroma:gitlab-mr-iid-1130
pleroma:fix/move-and-reaction-types-fixes-changes
pleroma:gitlab-mr-iid-1069
pleroma:gitlab-mr-iid-1129
pleroma:gitlab-mr-iid-1128
pleroma:gitlab-mr-iid-1127
pleroma:gitlab-mr-iid-1126
pleroma:gitlab-mr-iid-1125
pleroma:gitlab-mr-iid-1123
pleroma:gitlab-mr-iid-1122
pleroma:gitlab-mr-iid-1119
pleroma:gitlab-mr-iid-1115
pleroma:gitlab-mr-iid-1117
pleroma:gitlab-mr-iid-1116
pleroma:gitlab-mr-iid-1106
pleroma:gitlab-mr-iid-1114
pleroma:gitlab-mr-iid-1109
pleroma:gitlab-mr-iid-1113
pleroma:gitlab-mr-iid-1112
pleroma:gitlab-mr-iid-1111
pleroma:gitlab-mr-iid-1110
pleroma:gitlab-mr-iid-1108
pleroma:gitlab-mr-iid-1107
pleroma:gitlab-mr-iid-1105
pleroma:rc/2.0.5
pleroma:gitlab-mr-iid-1104
pleroma:gitlab-mr-iid-1102
pleroma:gitlab-mr-iid-1091
pleroma:gitlab-mr-iid-1085
pleroma:gitlab-mr-iid-1101
pleroma:gitlab-mr-iid-1100
pleroma:gitlab-mr-iid-1072
pleroma:gitlab-mr-iid-1098
pleroma:gitlab-mr-iid-1099
pleroma:gitlab-mr-iid-1097
pleroma:gitlab-mr-iid-1095
pleroma:gitlab-mr-iid-1096
pleroma:gitlab-mr-iid-1094
pleroma:gitlab-mr-iid-1093
pleroma:gitlab-mr-iid-1092
pleroma:gitlab-mr-iid-1090
pleroma:gitlab-mr-iid-1089
pleroma:gitlab-mr-iid-1088
pleroma:gitlab-mr-iid-1087
pleroma:gitlab-mr-iid-1086
pleroma:gitlab-mr-iid-1083
pleroma:gitlab-mr-iid-1082
pleroma:gitlab-mr-iid-1081
pleroma:gitlab-mr-iid-1080
pleroma:gitlab-mr-iid-1079
pleroma:gitlab-mr-iid-1078
pleroma:gitlab-mr-iid-1077
pleroma:gitlab-mr-iid-1074
pleroma:gitlab-mr-iid-1075
pleroma:gitlab-mr-iid-1070
pleroma:gitlab-mr-iid-1066
pleroma:gitlab-mr-iid-1073
pleroma:gitlab-mr-iid-1071
pleroma:gitlab-mr-iid-1068
pleroma:gitlab-mr-iid-1067
pleroma:test-shm
pleroma:gitlab-mr-iid-1037
pleroma:feat/virtual-with-popover
pleroma:gitlab-mr-iid-1063
pleroma:gitlab-mr-iid-1065
pleroma:gitlab-mr-iid-1064
pleroma:gitlab-mr-iid-1038
pleroma:gitlab-mr-iid-1051
pleroma:gitlab-mr-iid-1059
pleroma:gitlab-mr-iid-1058
pleroma:gitlab-mr-iid-1062
pleroma:gitlab-mr-iid-1011
pleroma:gitlab-mr-iid-1061
pleroma:gitlab-mr-iid-1057
pleroma:gitlab-mr-iid-1060
pleroma:gitlab-mr-iid-1056
pleroma:gitlab-mr-iid-1055
pleroma:gitlab-mr-iid-1054
pleroma:fix/pinned-statuses-not-showing-on-bottom-of-tl
pleroma:gitlab-mr-iid-1053
pleroma:gitlab-mr-iid-1052
pleroma:gitlab-mr-iid-1049
pleroma:gitlab-mr-iid-1050
pleroma:gitlab-mr-iid-879
pleroma:gitlab-mr-iid-1048
pleroma:gitlab-mr-iid-1047
pleroma:gitlab-mr-iid-1046
pleroma:gitlab-mr-iid-1045
pleroma:feat/virtual-scrolling-timeline
pleroma:gitlab-mr-iid-1028
pleroma:gitlab-mr-iid-1042
pleroma:gitlab-mr-iid-1041
pleroma:gitlab-mr-iid-1040
pleroma:gitlab-mr-iid-1039
pleroma:gitlab-mr-iid-1026
pleroma:gitlab-mr-iid-1036
pleroma:gitlab-mr-iid-1012
pleroma:gitlab-mr-iid-1025
pleroma:gitlab-mr-iid-976
pleroma:gitlab-mr-iid-1006
pleroma:718
pleroma:gitlab-mr-iid-1014
pleroma:gitlab-mr-iid-1035
pleroma:gitlab-mr-iid-1022
pleroma:gitlab-mr-iid-931
pleroma:gitlab-mr-iid-989
pleroma:gitlab-mr-iid-1031
pleroma:gitlab-mr-iid-1016
pleroma:gitlab-mr-iid-1034
pleroma:gitlab-mr-iid-1033
pleroma:gitlab-mr-iid-1032
pleroma:gitlab-mr-iid-1029
pleroma:gitlab-mr-iid-1030
pleroma:gitlab-mr-iid-1018
pleroma:gitlab-mr-iid-1027
pleroma:gitlab-mr-iid-1020
pleroma:gitlab-mr-iid-1024
pleroma:gitlab-mr-iid-1023
pleroma:gitlab-mr-iid-1021
pleroma:gitlab-mr-iid-1017
pleroma:gitlab-mr-iid-1015
pleroma:gitlab-mr-iid-1013
pleroma:gitlab-mr-iid-1010
pleroma:testing-ci-fixes
pleroma:gitlab-mr-iid-1002
pleroma:gitlab-mr-iid-1008
pleroma:gitlab-mr-iid-1009
pleroma:ci-fixes
pleroma:gitlab-mr-iid-1007
pleroma:gitlab-mr-iid-1005
pleroma:gitlab-mr-iid-1003
pleroma:gitlab-mr-iid-999
pleroma:gitlab-mr-iid-1001
pleroma:gitlab-mr-iid-1000
pleroma:gitlab-mr-iid-995
pleroma:gitlab-mr-iid-998
pleroma:gitlab-mr-iid-977
pleroma:gitlab-mr-iid-994
pleroma:gitlab-mr-iid-996
pleroma:gitlab-mr-iid-993
pleroma:gitlab-mr-iid-992
pleroma:gitlab-mr-iid-991
pleroma:gitlab-mr-iid-990
pleroma:gitlab-mr-iid-988
pleroma:gitlab-mr-iid-985
pleroma:gitlab-mr-iid-987
pleroma:gitlab-mr-iid-969
pleroma:gitlab-mr-iid-984
pleroma:gitlab-mr-iid-983
pleroma:gitlab-mr-iid-982
pleroma:gitlab-mr-iid-980
pleroma:gitlab-mr-iid-981
pleroma:gitlab-mr-iid-979
pleroma:gitlab-mr-iid-960
pleroma:gitlab-mr-iid-921
pleroma:gitlab-mr-iid-863
pleroma:gitlab-mr-iid-978
pleroma:gitlab-mr-iid-975
pleroma:gitlab-mr-iid-830
pleroma:gitlab-mr-iid-974
pleroma:gitlab-mr-iid-972
pleroma:gitlab-mr-iid-973
pleroma:gitlab-mr-iid-958
pleroma:gitlab-mr-iid-948
pleroma:gitlab-mr-iid-971
pleroma:gitlab-mr-iid-956
pleroma:gitlab-mr-iid-970
pleroma:gitlab-mr-iid-968
pleroma:gitlab-mr-iid-967
pleroma:gitlab-mr-iid-966
pleroma:gitlab-mr-iid-965
pleroma:gitlab-mr-iid-964
pleroma:gitlab-mr-iid-954
pleroma:feature/desktop-about-page
pleroma:gitlab-mr-iid-963
pleroma:gitlab-mr-iid-962
pleroma:gitlab-mr-iid-961
pleroma:gitlab-mr-iid-959
pleroma:feature/nav-iconography
pleroma:feature/sensitive-blur
pleroma:gitlab-mr-iid-957
pleroma:gitlab-mr-iid-947
pleroma:emoji-mastoapi
pleroma:gitlab-mr-iid-895
pleroma:gitlab-mr-iid-951
pleroma:gitlab-mr-iid-886
pleroma:gitlab-mr-iid-955
pleroma:gitlab-mr-iid-945
pleroma:gitlab-mr-iid-941
pleroma:gitlab-mr-iid-953
pleroma:gitlab-mr-iid-952
pleroma:gitlab-mr-iid-949
pleroma:gitlab-mr-iid-950
pleroma:gitlab-mr-iid-943
pleroma:gitlab-mr-iid-946
pleroma:gitlab-mr-iid-932
pleroma:gitlab-mr-iid-930
pleroma:gitlab-mr-iid-934
pleroma:gitlab-mr-iid-944
pleroma:gitlab-mr-iid-942
pleroma:gitlab-mr-iid-940
pleroma:gitlab-mr-iid-935
pleroma:gitlab-mr-iid-939
pleroma:gitlab-mr-iid-938
pleroma:gitlab-mr-iid-937
pleroma:gitlab-mr-iid-929
pleroma:gitlab-mr-iid-936
pleroma:gitlab-mr-iid-838
pleroma:gitlab-mr-iid-718
pleroma:gitlab-mr-iid-933
pleroma:gitlab-mr-iid-927
pleroma:gitlab-mr-iid-924
pleroma:gitlab-mr-iid-928
pleroma:gitlab-mr-iid-925
pleroma:gitlab-mr-iid-926
pleroma:gitlab-mr-iid-923
pleroma:gitlab-mr-iid-922
pleroma:gitlab-mr-iid-919
pleroma:gitlab-mr-iid-920
pleroma:gitlab-mr-iid-914
pleroma:gitlab-mr-iid-897
pleroma:gitlab-mr-iid-918
pleroma:gitlab-mr-iid-917
pleroma:gitlab-mr-iid-908
pleroma:gitlab-mr-iid-916
pleroma:gitlab-mr-iid-915
pleroma:gitlab-mr-iid-913
pleroma:gitlab-mr-iid-912
pleroma:gitlab-mr-iid-911
pleroma:gitlab-mr-iid-910
pleroma:gitlab-mr-iid-909
pleroma:gitlab-mr-iid-907
pleroma:gitlab-mr-iid-906
pleroma:gitlab-mr-iid-905
pleroma:gitlab-mr-iid-899
pleroma:gitlab-mr-iid-902
pleroma:gitlab-mr-iid-904
pleroma:gitlab-mr-iid-901
pleroma:gitlab-mr-iid-900
pleroma:gitlab-mr-iid-898
pleroma:gitlab-mr-iid-884
pleroma:gitlab-mr-iid-890
pleroma:gitlab-mr-iid-812
pleroma:gitlab-mr-iid-896
pleroma:gitlab-mr-iid-894
pleroma:gitlab-mr-iid-876
pleroma:gitlab-mr-iid-893
pleroma:gitlab-mr-iid-885
pleroma:gitlab-mr-iid-892
pleroma:gitlab-mr-iid-891
pleroma:gitlab-mr-iid-889
pleroma:gitlab-mr-iid-888
pleroma:gitlab-mr-iid-887
pleroma:gitlab-mr-iid-852
pleroma:gitlab-mr-iid-862
pleroma:gitlab-mr-iid-881
pleroma:gitlab-mr-iid-883
pleroma:gitlab-mr-iid-882
pleroma:gitlab-mr-iid-832
pleroma:gitlab-mr-iid-771
pleroma:gitlab-mr-iid-880
pleroma:gitlab-mr-iid-856
pleroma:gitlab-mr-iid-844
pleroma:gitlab-mr-iid-878
pleroma:gitlab-mr-iid-877
pleroma:gitlab-mr-iid-858
pleroma:gitlab-mr-iid-854
pleroma:gitlab-mr-iid-875
pleroma:gitlab-mr-iid-871
pleroma:gitlab-mr-iid-874
pleroma:gitlab-mr-iid-864
pleroma:gitlab-mr-iid-873
pleroma:gitlab-mr-iid-872
pleroma:gitlab-mr-iid-868
pleroma:gitlab-mr-iid-870
pleroma:gitlab-mr-iid-869
pleroma:gitlab-mr-iid-867
pleroma:gitlab-mr-iid-865
pleroma:gitlab-mr-iid-866
pleroma:gitlab-mr-iid-861
pleroma:gitlab-mr-iid-859
pleroma:gitlab-mr-iid-860
pleroma:skip-thread-containment
pleroma:gitlab-mr-iid-851
pleroma:gitlab-mr-iid-857
pleroma:gitlab-mr-iid-855
pleroma:gitlab-mr-iid-847
pleroma:gitlab-mr-iid-853
pleroma:gitlab-mr-iid-850
pleroma:gitlab-mr-iid-848
pleroma:gitlab-mr-iid-849
pleroma:gitlab-mr-iid-846
pleroma:gitlab-mr-iid-845
pleroma:gitlab-mr-iid-843
pleroma:gitlab-mr-iid-835
pleroma:gitlab-mr-iid-829
pleroma:feature/polls-attempt-2
pleroma:gitlab-mr-iid-826
pleroma:gitlab-mr-iid-824
pleroma:gitlab-mr-iid-842
pleroma:gitlab-mr-iid-841
pleroma:gitlab-mr-iid-839
pleroma:gitlab-mr-iid-840
pleroma:gitlab-mr-iid-833
pleroma:gitlab-mr-base-iid-851
pleroma:gitlab-mr-iid-834
pleroma:gitlab-mr-iid-831
pleroma:gitlab-mr-iid-806
pleroma:gitlab-mr-iid-828
pleroma:gitlab-mr-iid-556
pleroma:gitlab-mr-iid-827
pleroma:gitlab-mr-iid-805
pleroma:gitlab-mr-iid-825
pleroma:gitlab-mr-iid-815
pleroma:gitlab-mr-iid-803
pleroma:gitlab-mr-iid-823
pleroma:gitlab-mr-iid-821
pleroma:gitlab-mr-iid-822
pleroma:gitlab-mr-iid-820
pleroma:gitlab-mr-iid-819
pleroma:gitlab-mr-iid-818
pleroma:gitlab-mr-iid-817
pleroma:gitlab-mr-iid-811
pleroma:gitlab-mr-iid-813
pleroma:gitlab-mr-iid-816
pleroma:gitlab-mr-iid-810
pleroma:gitlab-mr-iid-814
pleroma:gitlab-mr-iid-809
pleroma:gitlab-mr-iid-808
pleroma:gitlab-mr-iid-807
pleroma:gitlab-mr-iid-804
pleroma:gitlab-mr-iid-801
pleroma:gitlab-mr-iid-802
pleroma:gitlab-mr-iid-800
pleroma:gitlab-mr-iid-795
pleroma:gitlab-mr-iid-734
pleroma:gitlab-mr-iid-797
pleroma:gitlab-mr-iid-789
pleroma:gitlab-mr-iid-799
pleroma:gitlab-mr-iid-798
pleroma:gitlab-mr-iid-796
pleroma:gitlab-mr-iid-792
pleroma:gitlab-mr-iid-770
pleroma:gitlab-mr-iid-794
pleroma:gitlab-mr-iid-793
pleroma:gitlab-mr-iid-791
pleroma:gitlab-mr-iid-790
pleroma:gitlab-mr-iid-724
pleroma:gitlab-mr-iid-788
pleroma:gitlab-mr-iid-767
pleroma:gitlab-mr-iid-787
pleroma:gitlab-mr-iid-786
pleroma:gitlab-mr-iid-785
pleroma:gitlab-mr-iid-781
pleroma:gitlab-mr-iid-784
pleroma:gitlab-mr-iid-783
pleroma:gitlab-mr-iid-782
pleroma:gitlab-mr-iid-695
pleroma:gitlab-mr-iid-780
pleroma:gitlab-mr-iid-779
pleroma:gitlab-mr-iid-778
pleroma:gitlab-mr-iid-777
pleroma:gitlab-mr-iid-776
pleroma:gitlab-mr-iid-768
pleroma:gitlab-mr-iid-769
pleroma:gitlab-mr-iid-775
pleroma:gitlab-mr-iid-717
pleroma:gitlab-mr-iid-740
pleroma:gitlab-mr-iid-774
pleroma:gitlab-mr-iid-682
pleroma:gitlab-mr-iid-773
pleroma:gitlab-mr-iid-772
pleroma:gitlab-mr-iid-754
pleroma:gitlab-mr-iid-761
pleroma:gitlab-mr-iid-763
pleroma:gitlab-mr-iid-766
pleroma:gitlab-mr-iid-765
pleroma:gitlab-mr-iid-764
pleroma:gitlab-mr-iid-762
pleroma:gitlab-mr-iid-760
pleroma:gitlab-mr-iid-759
pleroma:gitlab-mr-iid-733
pleroma:gitlab-mr-iid-758
pleroma:gitlab-mr-iid-757
pleroma:gitlab-mr-iid-727
pleroma:gitlab-mr-iid-751
pleroma:gitlab-mr-iid-739
pleroma:gitlab-mr-iid-756
pleroma:gitlab-mr-iid-607
pleroma:gitlab-mr-iid-645
pleroma:gitlab-mr-iid-694
pleroma:gitlab-mr-iid-752
pleroma:gitlab-mr-iid-755
pleroma:gitlab-mr-iid-725
pleroma:gitlab-mr-iid-753
pleroma:gitlab-mr-iid-737
pleroma:gitlab-mr-iid-744
pleroma:gitlab-mr-iid-750
pleroma:gitlab-mr-iid-749
pleroma:gitlab-mr-iid-741
pleroma:gitlab-mr-iid-678
pleroma:gitlab-mr-iid-748
pleroma:gitlab-mr-iid-747
pleroma:gitlab-mr-iid-746
pleroma:gitlab-mr-iid-745
pleroma:gitlab-mr-iid-742
pleroma:gitlab-mr-iid-738
pleroma:gitlab-mr-iid-736
pleroma:gitlab-mr-iid-735
pleroma:gitlab-mr-iid-731
pleroma:gitlab-mr-iid-732
pleroma:gitlab-mr-iid-729
pleroma:gitlab-mr-iid-728
pleroma:gitlab-mr-iid-730
pleroma:gitlab-mr-iid-726
pleroma:gitlab-mr-iid-595
pleroma:gitlab-mr-iid-703
pleroma:gitlab-mr-iid-723
pleroma:gitlab-mr-iid-722
pleroma:gitlab-mr-iid-721
pleroma:gitlab-mr-iid-720
pleroma:gitlab-mr-iid-719
pleroma:gitlab-mr-iid-633
pleroma:gitlab-mr-iid-708
pleroma:gitlab-mr-iid-714
pleroma:gitlab-mr-iid-713
pleroma:gitlab-mr-iid-674
pleroma:gitlab-mr-iid-716
pleroma:gitlab-mr-iid-715
pleroma:gitlab-mr-iid-707
pleroma:gitlab-mr-iid-669
pleroma:gitlab-mr-iid-667
pleroma:gitlab-mr-iid-649
pleroma:gitlab-mr-iid-712
pleroma:gitlab-mr-iid-706
pleroma:gitlab-mr-iid-711
pleroma:gitlab-mr-iid-710
pleroma:gitlab-mr-iid-709
pleroma:gitlab-mr-iid-647
pleroma:gitlab-mr-iid-650
pleroma:gitlab-mr-iid-662
pleroma:gitlab-mr-iid-557
pleroma:gitlab-mr-iid-686
pleroma:gitlab-mr-iid-611
pleroma:gitlab-mr-iid-705
pleroma:gitlab-mr-iid-704
pleroma:gitlab-mr-iid-702
pleroma:gitlab-mr-iid-701
pleroma:gitlab-mr-iid-700
pleroma:gitlab-mr-iid-697
pleroma:gitlab-mr-iid-699
pleroma:gitlab-mr-iid-698
pleroma:gitlab-mr-iid-585
pleroma:gitlab-mr-iid-664
pleroma:gitlab-mr-iid-623
pleroma:gitlab-mr-iid-696
pleroma:gitlab-mr-iid-693
pleroma:gitlab-mr-iid-692
pleroma:gitlab-mr-iid-690
pleroma:gitlab-mr-iid-691
pleroma:gitlab-mr-iid-689
pleroma:gitlab-mr-iid-688
pleroma:gitlab-mr-iid-659
pleroma:gitlab-mr-iid-687
pleroma:gitlab-mr-iid-685
pleroma:gitlab-mr-iid-684
pleroma:gitlab-mr-iid-677
pleroma:gitlab-mr-iid-683
pleroma:gitlab-mr-iid-655
pleroma:gitlab-mr-iid-671
pleroma:fix/login-local
pleroma:gitlab-mr-iid-681
pleroma:gitlab-mr-iid-680
pleroma:gitlab-mr-iid-679
pleroma:gitlab-mr-iid-676
pleroma:gitlab-mr-iid-675
pleroma:gitlab-mr-iid-673
pleroma:gitlab-mr-iid-602
pleroma:gitlab-mr-iid-672
pleroma:gitlab-mr-iid-665
pleroma:feature/mobile-improvements-2
pleroma:gitlab-mr-iid-628
pleroma:gitlab-mr-iid-670
pleroma:gitlab-mr-iid-666
pleroma:gitlab-mr-iid-661
pleroma:gitlab-mr-iid-668
pleroma:gitlab-mr-iid-663
pleroma:mastoapi/is-local-post
pleroma:gitlab-mr-iid-660
pleroma:gitlab-mr-iid-651
pleroma:gitlab-mr-iid-658
pleroma:gitlab-mr-iid-657
pleroma:gitlab-mr-iid-656
pleroma:gitlab-mr-base-iid-657
pleroma:gitlab-mr-base-iid-672
pleroma:gitlab-mr-iid-629
pleroma:gitlab-mr-iid-654
pleroma:gitlab-mr-iid-653
pleroma:gitlab-mr-iid-652
pleroma:gitlab-mr-iid-648
pleroma:gitlab-mr-iid-646
pleroma:gitlab-mr-iid-641
pleroma:gitlab-mr-base-iid-648
pleroma:gitlab-mr-base-iid-653
pleroma:gitlab-mr-base-iid-654
pleroma:gitlab-mr-base-iid-656
pleroma:gitlab-mr-iid-644
pleroma:gitlab-mr-iid-642
pleroma:gitlab-mr-iid-643
pleroma:gitlab-mr-iid-640
pleroma:gitlab-mr-iid-639
pleroma:gitlab-mr-iid-635
pleroma:deploy-ci
pleroma:gitlab-mr-iid-638
pleroma:gitlab-mr-iid-637
pleroma:gitlab-mr-iid-636
pleroma:gitlab-mr-iid-634
pleroma:gitlab-mr-iid-632
pleroma:gitlab-mr-iid-631
pleroma:gitlab-mr-iid-627
pleroma:gitlab-mr-iid-630
pleroma:feature/improve-status-header-and-spacing
pleroma:gitlab-mr-iid-617
pleroma:gitlab-mr-iid-621
pleroma:gitlab-mr-iid-615
pleroma:gitlab-mr-iid-622
pleroma:gitlab-mr-iid-625
pleroma:gitlab-mr-iid-626
pleroma:gitlab-mr-iid-619
pleroma:gitlab-mr-iid-616
pleroma:gitlab-mr-iid-624
pleroma:gitlab-mr-iid-604
pleroma:gitlab-mr-iid-579
pleroma:gitlab-mr-iid-572
pleroma:gitlab-mr-iid-620
pleroma:gitlab-mr-iid-589
pleroma:gitlab-mr-iid-618
pleroma:gitlab-mr-iid-606
pleroma:gitlab-mr-iid-614
pleroma:gitlab-mr-iid-613
pleroma:gitlab-mr-iid-608
pleroma:gitlab-mr-iid-612
pleroma:gitlab-mr-iid-610
pleroma:gitlab-mr-iid-609
pleroma:gitlab-mr-iid-578
pleroma:gitlab-mr-iid-605
pleroma:gitlab-mr-iid-603
pleroma:gitlab-mr-iid-601
pleroma:gitlab-mr-iid-600
pleroma:gitlab-mr-iid-565
pleroma:gitlab-mr-iid-599
pleroma:gitlab-mr-iid-596
pleroma:gitlab-mr-iid-598
pleroma:gitlab-mr-iid-597
pleroma:gitlab-mr-iid-593
pleroma:feature/image-description-authoring
pleroma:gitlab-mr-iid-594
pleroma:gitlab-mr-iid-592
pleroma:gitlab-mr-iid-591
pleroma:gitlab-mr-iid-590
pleroma:gitlab-mr-iid-547
pleroma:gitlab-mr-iid-588
pleroma:gitlab-mr-iid-561
pleroma:gitlab-mr-iid-587
pleroma:gitlab-mr-iid-586
pleroma:gitlab-mr-iid-584
pleroma:gitlab-mr-iid-583
pleroma:gitlab-mr-iid-582
pleroma:gitlab-mr-iid-581
pleroma:gitlab-mr-iid-580
pleroma:gitlab-mr-iid-577
pleroma:gitlab-mr-iid-576
pleroma:gitlab-mr-iid-575
pleroma:gitlab-mr-iid-574
pleroma:gitlab-mr-iid-573
pleroma:gitlab-mr-iid-569
pleroma:gitlab-mr-iid-571
pleroma:gitlab-mr-iid-563
pleroma:gitlab-mr-iid-570
pleroma:gitlab-mr-iid-568
pleroma:gitlab-mr-iid-567
pleroma:gitlab-mr-iid-566
pleroma:gitlab-mr-iid-564
pleroma:gitlab-mr-iid-562
pleroma:gitlab-mr-iid-559
pleroma:gitlab-mr-iid-560
pleroma:gitlab-mr-iid-540
pleroma:gitlab-mr-iid-558
pleroma:gitlab-mr-iid-554
pleroma:gitlab-mr-iid-555
pleroma:gitlab-mr-iid-550
pleroma:gitlab-mr-iid-553
pleroma:gitlab-mr-iid-552
pleroma:gitlab-mr-iid-551
pleroma:gitlab-mr-iid-548
pleroma:gitlab-mr-iid-549
pleroma:gitlab-mr-iid-539
pleroma:gitlab-mr-iid-543
pleroma:gitlab-mr-iid-519
pleroma:gitlab-mr-iid-515
pleroma:gitlab-mr-iid-546
pleroma:gitlab-mr-iid-538
pleroma:gitlab-mr-iid-545
pleroma:gitlab-mr-iid-542
pleroma:gitlab-mr-iid-541
pleroma:gitlab-mr-iid-537
pleroma:gitlab-mr-iid-530
pleroma:gitlab-mr-iid-536
pleroma:gitlab-mr-iid-535
pleroma:gitlab-mr-iid-534
pleroma:gitlab-mr-iid-533
pleroma:gitlab-mr-iid-532
pleroma:gitlab-mr-iid-531
pleroma:gitlab-mr-iid-529
pleroma:gitlab-mr-iid-528
pleroma:gitlab-mr-iid-526
pleroma:gitlab-mr-iid-525
pleroma:gitlab-mr-iid-522
pleroma:gitlab-mr-iid-524
pleroma:gitlab-mr-iid-517
pleroma:gitlab-mr-iid-506
pleroma:gitlab-mr-iid-523
pleroma:gitlab-mr-iid-510
pleroma:gitlab-mr-iid-521
pleroma:gitlab-mr-iid-520
pleroma:gitlab-mr-iid-518
pleroma:gitlab-mr-iid-516
pleroma:gitlab-mr-iid-511
pleroma:gitlab-mr-iid-513
pleroma:gitlab-mr-iid-514
pleroma:gitlab-mr-iid-512
pleroma:gitlab-mr-iid-509
pleroma:gitlab-mr-iid-508
pleroma:gitlab-mr-iid-507
pleroma:gitlab-mr-iid-505
pleroma:fix/make-inline-video-playing-instance-configurable-default-true
pleroma:gitlab-mr-iid-504
pleroma:gitlab-mr-iid-503
pleroma:gitlab-mr-iid-502
pleroma:gitlab-mr-iid-501
pleroma:gitlab-mr-iid-468
pleroma:gitlab-mr-iid-500
pleroma:gitlab-mr-iid-499
pleroma:gitlab-mr-iid-498
pleroma:gitlab-mr-iid-497
pleroma:gitlab-mr-iid-496
pleroma:gitlab-mr-iid-495
pleroma:gitlab-mr-iid-494
pleroma:gitlab-mr-iid-493
pleroma:gitlab-mr-iid-492
pleroma:gitlab-mr-iid-491
pleroma:gitlab-mr-iid-488
pleroma:gitlab-mr-iid-490
pleroma:gitlab-mr-iid-489
pleroma:gitlab-mr-iid-487
pleroma:gitlab-mr-iid-486
pleroma:gitlab-mr-iid-485
pleroma:gitlab-mr-iid-484
pleroma:gitlab-mr-iid-481
pleroma:gitlab-mr-iid-483
pleroma:gitlab-mr-iid-482
pleroma:gitlab-mr-iid-479
pleroma:gitlab-mr-iid-480
pleroma:gitlab-mr-iid-478
pleroma:gitlab-mr-iid-472
pleroma:gitlab-mr-iid-458
pleroma:gitlab-mr-iid-477
pleroma:gitlab-mr-iid-476
pleroma:gitlab-mr-iid-475
pleroma:gitlab-mr-iid-474
pleroma:gitlab-mr-iid-469
pleroma:gitlab-mr-iid-473
pleroma:gitlab-mr-iid-470
pleroma:gitlab-mr-iid-471
pleroma:gitlab-mr-iid-462
pleroma:gitlab-mr-iid-459
pleroma:gitlab-mr-iid-467
pleroma:gitlab-mr-iid-466
pleroma:gitlab-mr-iid-465
pleroma:gitlab-mr-iid-464
pleroma:gitlab-mr-iid-463
pleroma:gitlab-mr-iid-461
pleroma:gitlab-mr-iid-460
pleroma:gitlab-mr-iid-457
pleroma:gitlab-mr-iid-452
pleroma:gitlab-mr-iid-454
pleroma:gitlab-mr-iid-456
pleroma:gitlab-mr-iid-455
pleroma:gitlab-mr-iid-451
pleroma:gitlab-mr-iid-453
pleroma:gitlab-mr-iid-450
pleroma:gitlab-mr-iid-447
pleroma:gitlab-mr-iid-441
pleroma:gitlab-mr-iid-449
pleroma:gitlab-mr-iid-448
pleroma:gitlab-mr-iid-446
pleroma:gitlab-mr-iid-445
pleroma:gitlab-mr-iid-444
pleroma:gitlab-mr-iid-443
pleroma:gitlab-mr-iid-442
pleroma:gitlab-mr-iid-440
pleroma:gitlab-mr-iid-439
pleroma:gitlab-mr-iid-438
pleroma:gitlab-mr-iid-433
pleroma:gitlab-mr-iid-437
pleroma:gitlab-mr-iid-435
pleroma:gitlab-mr-iid-436
pleroma:gitlab-mr-iid-430
pleroma:gitlab-mr-iid-434
pleroma:gitlab-mr-iid-432
pleroma:gitlab-mr-iid-431
pleroma:gitlab-mr-iid-429
pleroma:gitlab-mr-iid-427
pleroma:gitlab-mr-iid-423
pleroma:gitlab-mr-iid-392
pleroma:gitlab-mr-iid-428
pleroma:gitlab-mr-iid-424
pleroma:gitlab-mr-iid-426
pleroma:gitlab-mr-iid-425
pleroma:gitlab-mr-iid-422
pleroma:gitlab-mr-iid-396
pleroma:gitlab-mr-iid-421
pleroma:gitlab-mr-iid-389
pleroma:gitlab-mr-iid-420
pleroma:gitlab-mr-iid-419
pleroma:gitlab-mr-iid-417
pleroma:gitlab-mr-iid-418
pleroma:gitlab-mr-iid-405
pleroma:gitlab-mr-iid-403
pleroma:gitlab-mr-iid-416
pleroma:gitlab-mr-iid-414
pleroma:gitlab-mr-iid-415
pleroma:gitlab-mr-iid-404
pleroma:gitlab-mr-iid-413
pleroma:gitlab-mr-iid-412
pleroma:gitlab-mr-iid-408
pleroma:gitlab-mr-iid-411
pleroma:gitlab-mr-iid-410
pleroma:gitlab-mr-iid-407
pleroma:gitlab-mr-iid-377
pleroma:gitlab-mr-iid-409
pleroma:gitlab-mr-iid-406
pleroma:push-fixes
pleroma:layout-overhaul
pleroma:gitlab-mr-iid-399
pleroma:gitlab-mr-iid-402
pleroma:gitlab-mr-iid-401
pleroma:gitlab-mr-iid-400
pleroma:gitlab-mr-iid-398
pleroma:gitlab-mr-iid-397
pleroma:gitlab-mr-iid-395
pleroma:gitlab-mr-iid-394
pleroma:gitlab-mr-iid-393
pleroma:gitlab-mr-iid-391
pleroma:gitlab-mr-iid-390
pleroma:gitlab-mr-iid-388
pleroma:gitlab-mr-iid-386
pleroma:gitlab-mr-iid-385
pleroma:gitlab-mr-iid-387
pleroma:gitlab-mr-iid-384
pleroma:gitlab-mr-iid-382
pleroma:gitlab-mr-iid-381
pleroma:fixV2toV1
pleroma:gitlab-mr-iid-380
pleroma:gitlab-mr-iid-353
pleroma:gitlab-mr-iid-383
pleroma:gitlab-mr-iid-379
pleroma:gitlab-mr-iid-378
pleroma:gitlab-mr-iid-376
pleroma:gitlab-mr-iid-375
pleroma:gitlab-mr-iid-374
pleroma:gitlab-mr-iid-373
pleroma:gitlab-mr-iid-367
pleroma:gitlab-mr-iid-372
pleroma:gitlab-mr-iid-371
pleroma:gitlab-mr-iid-370
pleroma:gitlab-mr-iid-369
pleroma:gitlab-mr-iid-368
pleroma:gitlab-mr-iid-366
pleroma:gitlab-mr-iid-365
pleroma:gitlab-mr-iid-364
pleroma:gitlab-mr-iid-363
pleroma:gitlab-mr-iid-362
pleroma:gitlab-mr-iid-361
pleroma:gitlab-mr-iid-360
pleroma:gitlab-mr-iid-359
pleroma:gitlab-mr-iid-358
pleroma:gitlab-mr-iid-357
pleroma:gitlab-mr-iid-355
pleroma:gitlab-mr-iid-336
pleroma:gitlab-mr-iid-356
pleroma:gitlab-mr-iid-354
pleroma:gitlab-mr-iid-352
pleroma:gitlab-mr-iid-351
pleroma:gitlab-mr-iid-350
pleroma:gitlab-mr-iid-349
pleroma:gitlab-mr-iid-348
pleroma:gitlab-mr-iid-347
pleroma:gitlab-mr-iid-343
pleroma:gitlab-mr-iid-337
pleroma:gitlab-mr-iid-346
pleroma:gitlab-mr-iid-345
pleroma:gitlab-mr-iid-344
pleroma:gitlab-mr-iid-342
pleroma:gitlab-mr-iid-341
pleroma:gitlab-mr-iid-340
pleroma:gitlab-mr-iid-333
pleroma:gitlab-mr-iid-339
pleroma:gitlab-mr-iid-338
pleroma:gitlab-mr-iid-331
pleroma:gitlab-mr-iid-335
pleroma:gitlab-mr-iid-334
pleroma:gitlab-mr-iid-330
pleroma:gitlab-mr-iid-329
pleroma:gitlab-mr-iid-328
pleroma:gitlab-mr-iid-327
pleroma:gitlab-mr-iid-326
pleroma:gitlab-mr-iid-325
pleroma:gitlab-mr-iid-324
pleroma:gitlab-mr-iid-323
pleroma:gitlab-mr-iid-322
pleroma:gitlab-mr-iid-321
pleroma:gitlab-mr-iid-320
pleroma:gitlab-mr-iid-319
pleroma:gitlab-mr-iid-318
pleroma:gitlab-mr-iid-316
pleroma:gitlab-mr-iid-312
pleroma:gitlab-mr-iid-317
pleroma:gitlab-mr-iid-315
pleroma:gitlab-mr-iid-306
pleroma:gitlab-mr-iid-314
pleroma:gitlab-mr-iid-313
pleroma:gitlab-mr-iid-294
pleroma:gitlab-mr-iid-311
pleroma:gitlab-mr-iid-310
pleroma:gitlab-mr-iid-307
pleroma:gitlab-mr-iid-308
pleroma:gitlab-mr-iid-309
pleroma:gitlab-mr-iid-293
pleroma:gitlab-mr-iid-302
pleroma:gitlab-mr-iid-285
pleroma:gitlab-mr-iid-305
pleroma:gitlab-mr-iid-303
pleroma:gitlab-mr-iid-304
pleroma:gitlab-mr-iid-301
pleroma:gitlab-mr-iid-300
pleroma:gitlab-mr-iid-299
pleroma:gitlab-mr-iid-298
pleroma:gitlab-mr-iid-297
pleroma:gitlab-mr-iid-296
pleroma:gitlab-mr-iid-295
pleroma:gitlab-mr-iid-289
pleroma:gitlab-mr-iid-292
pleroma:gitlab-mr-iid-290
pleroma:gitlab-mr-iid-291
pleroma:gitlab-mr-iid-288
pleroma:gitlab-mr-iid-287
pleroma:gitlab-mr-iid-286
pleroma:gitlab-mr-iid-284
pleroma:gitlab-mr-iid-283
pleroma:gitlab-mr-iid-282
pleroma:gitlab-mr-iid-281
pleroma:gitlab-mr-iid-280
pleroma:gitlab-mr-iid-279
pleroma:gitlab-mr-iid-278
pleroma:gitlab-mr-iid-256
pleroma:gitlab-mr-iid-276
pleroma:gitlab-mr-iid-277
pleroma:gitlab-mr-iid-275
pleroma:gitlab-mr-iid-274
pleroma:gitlab-mr-iid-269
pleroma:gitlab-mr-iid-273
pleroma:gitlab-mr-iid-272
pleroma:gitlab-mr-iid-271
pleroma:gitlab-mr-iid-270
pleroma:gitlab-mr-iid-268
pleroma:gitlab-mr-iid-267
pleroma:gitlab-mr-iid-266
pleroma:gitlab-mr-iid-265
pleroma:gitlab-mr-iid-258
pleroma:gitlab-mr-iid-264
pleroma:gitlab-mr-iid-263
pleroma:gitlab-mr-iid-252
pleroma:gitlab-mr-iid-253
pleroma:gitlab-mr-iid-261
pleroma:gitlab-mr-iid-260
pleroma:gitlab-mr-iid-259
pleroma:gitlab-mr-iid-257
pleroma:gitlab-mr-iid-262
pleroma:gitlab-mr-iid-234
pleroma:gitlab-mr-iid-254
pleroma:gitlab-mr-iid-255
pleroma:gitlab-mr-iid-251
pleroma:gitlab-mr-iid-250
pleroma:gitlab-mr-iid-249
pleroma:gitlab-mr-iid-248
pleroma:gitlab-mr-iid-247
pleroma:gitlab-mr-iid-246
pleroma:gitlab-mr-iid-245
pleroma:gitlab-mr-iid-244
pleroma:gitlab-mr-iid-243
pleroma:gitlab-mr-iid-242
pleroma:gitlab-mr-iid-216
pleroma:gitlab-mr-iid-241
pleroma:gitlab-mr-iid-240
pleroma:gitlab-mr-iid-239
pleroma:gitlab-mr-iid-238
pleroma:gitlab-mr-iid-237
pleroma:gitlab-mr-iid-236
pleroma:gitlab-mr-iid-235
pleroma:gitlab-mr-iid-233
pleroma:gitlab-mr-iid-232
pleroma:gitlab-mr-iid-231
pleroma:gitlab-mr-iid-230
pleroma:gitlab-mr-iid-227
pleroma:gitlab-mr-iid-226
pleroma:gitlab-mr-iid-225
pleroma:gitlab-mr-iid-224
pleroma:gitlab-mr-iid-223
pleroma:gitlab-mr-iid-217
pleroma:gitlab-mr-iid-221
pleroma:gitlab-mr-iid-220
pleroma:gitlab-mr-iid-219
pleroma:gitlab-mr-iid-218
pleroma:gitlab-mr-iid-215
pleroma:gitlab-mr-iid-214
pleroma:gitlab-mr-iid-213
pleroma:gitlab-mr-iid-229
pleroma:gitlab-mr-iid-212
pleroma:gitlab-mr-iid-193
pleroma:gitlab-mr-iid-211
pleroma:gitlab-mr-iid-210
pleroma:gitlab-mr-iid-208
pleroma:gitlab-mr-iid-209
pleroma:gitlab-mr-iid-207
pleroma:gitlab-mr-iid-206
pleroma:gitlab-mr-iid-202
pleroma:gitlab-mr-iid-205
pleroma:gitlab-mr-iid-204
pleroma:gitlab-mr-iid-203
pleroma:gitlab-mr-iid-172
pleroma:gitlab-mr-iid-201
pleroma:gitlab-mr-iid-200
pleroma:gitlab-mr-iid-199
pleroma:gitlab-mr-iid-198
pleroma:gitlab-mr-iid-197
pleroma:gitlab-mr-iid-169
pleroma:gitlab-mr-iid-196
pleroma:gitlab-mr-iid-195
pleroma:gitlab-mr-iid-194
pleroma:gitlab-mr-iid-192
pleroma:gitlab-mr-iid-191
pleroma:gitlab-mr-iid-190
pleroma:gitlab-mr-iid-189
pleroma:gitlab-mr-iid-188
pleroma:gitlab-mr-iid-187
pleroma:gitlab-mr-iid-186
pleroma:gitlab-mr-iid-185
pleroma:gitlab-mr-iid-184
pleroma:gitlab-mr-iid-183
pleroma:gitlab-mr-iid-181
pleroma:gitlab-mr-iid-182
pleroma:gitlab-mr-iid-180
pleroma:gitlab-mr-iid-179
pleroma:gitlab-mr-iid-178
pleroma:gitlab-mr-iid-177
pleroma:gitlab-mr-iid-176
pleroma:gitlab-mr-iid-175
pleroma:gitlab-mr-iid-171
pleroma:gitlab-mr-iid-173
pleroma:gitlab-mr-iid-174
pleroma:gitlab-mr-iid-170
pleroma:feature/groups
pleroma:gitlab-mr-iid-162
pleroma:gitlab-mr-iid-168
pleroma:gitlab-mr-iid-167
pleroma:gitlab-mr-iid-166
pleroma:gitlab-mr-iid-165
pleroma:gitlab-mr-iid-164
pleroma:gitlab-mr-iid-163
pleroma:gitlab-mr-iid-161
pleroma:gitlab-mr-iid-160
pleroma:gitlab-mr-iid-159
pleroma:gitlab-mr-iid-158
pleroma:gitlab-mr-iid-157
pleroma:gitlab-mr-iid-146
pleroma:gitlab-mr-iid-156
pleroma:gitlab-mr-iid-155
pleroma:gitlab-mr-iid-154
pleroma:gitlab-mr-iid-153
pleroma:gitlab-mr-iid-151
pleroma:gitlab-mr-iid-150
pleroma:gitlab-mr-iid-152
pleroma:gitlab-mr-iid-149
pleroma:gitlab-mr-iid-148
pleroma:gitlab-mr-iid-147
pleroma:gitlab-mr-iid-145
pleroma:gitlab-mr-iid-144
pleroma:gitlab-mr-iid-143
pleroma:gitlab-mr-iid-142
pleroma:gitlab-mr-iid-141
pleroma:gitlab-mr-iid-140
pleroma:gitlab-mr-iid-139
pleroma:gitlab-mr-iid-137
pleroma:gitlab-mr-iid-138
pleroma:gitlab-mr-iid-136
pleroma:gitlab-mr-iid-133
pleroma:gitlab-mr-iid-134
pleroma:gitlab-mr-iid-132
pleroma:gitlab-mr-iid-131
pleroma:gitlab-mr-iid-130
pleroma:gitlab-mr-iid-129
pleroma:gitlab-mr-iid-128
pleroma:gitlab-mr-iid-127
pleroma:gitlab-mr-iid-126
pleroma:gitlab-mr-iid-125
pleroma:gitlab-mr-iid-124
pleroma:gitlab-mr-iid-123
pleroma:gitlab-mr-iid-122
pleroma:gitlab-mr-iid-121
pleroma:gitlab-mr-iid-112
pleroma:gitlab-mr-iid-65
pleroma:gitlab-mr-iid-54
pleroma:gitlab-mr-iid-52
pleroma:gitlab-mr-iid-48
pleroma:gitlab-mr-iid-33
pleroma:gitlab-mr-iid-17
pleroma:gitlab-mr-iid-10
No reviewers
Labels
Clear labels
Instance Admin Dashboard
Improved Mobile Experience
Improved instance customization and QoL options
https://git.pleroma.social/pleroma/pleroma-fe/-/snippets/7746
Denotes a disruption to IT services and the associated issues require immediate attention
BE Request
Backlog
Better behavior
Blocked by deps
Bug
Code Review
Discussion
Doing
Feature Request / Enhancement
In the shining bright future maybe
It's complicated
MS Edge
Mememoon (or other niche browsers)
Missing API
Missing feature
Missing l10n/i18n
NL1
Instance Admin Dashboard
NL2
Improved Mobile Experience
NL4
Improved instance customization and QoL options
Need to verify on develop
RELEASE BLOCKER
Reassign or Close
Refactor
Regression
Safari
To Do
User story
Waiting on godot
accessibility
https://git.pleroma.social/pleroma/pleroma-fe/-/snippets/7746
better documentation
chore
confirmed
easy ticket
incident
Denotes a disruption to IT services and the associated issues require immediate attention
l10n update
mastoapi
mobile
needs design
needs-info
needs-review
stupid
No labels
BE Request
Backlog
Better behavior
Blocked by deps
Bug
Code Review
Discussion
Doing
Feature Request / Enhancement
In the shining bright future maybe
It's complicated
MS Edge
Mememoon (or other niche browsers)
Missing API
Missing feature
Missing l10n/i18n
NL1
NL2
NL4
Need to verify on develop
RELEASE BLOCKER
Reassign or Close
Refactor
Regression
Safari
To Do
User story
Waiting on godot
accessibility
better documentation
chore
confirmed
easy ticket
incident
l10n update
mastoapi
mobile
needs design
needs-info
needs-review
stupid
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
8 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set.
Reference
pleroma/pleroma-fe!2286
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "gitlab-mr-iid-1019"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #201
Timeline
Starting a new chat
The chat view
Misc
cc @feld @hj @kaniini @lambadalambda @shpuld ready for feedback / review
creating a new DM does not seem to work for me, it always just switches to the last DM conversation i had instead of making a new one.
Oh, I thought that would be the desired behavior since that's how twitter DM UI works too (if the DM with the selected user already exists, it redirects to it). I will change it to always starting a new conversation then.
starting new blank convesation with same user sounds confusing, even if you delete old one....
no, i mean, it goes to the last dm conversation i had, with a different user.
Sorry, got it, sounds like a bug. This might be due to BE not being new enough. This feature relies on the recipient filter that was added to BE in
7888803ffe. So if the BE doesn't have this filter yet, the FE gets the latest conversation regardless of the passed recipients. Edit: for extra safety added sanity check to make it ignore such BE response.what's up with this change?
probably better to use mapState, see src/components/status/status.js:315
i'm not sure about this, it could be annoying on mobile because it automatically brings up keyboard reducing screen space even if you don't intend to search
is it necessary to clean DMs every time? I feel like a proper GC might be better instead.
so is it conversationPage or conversationPageNew?
;;;;;;;;
also, theme support?
can we use existing component styles and not make new ones?
??
can you please at least commend what those slices do or intend to do?
mapStateforcurrentUserbranch looks pointless
$eventpart, i think it's essentially same as@click="toggleMenu"what's up with
h4?can you problably move whole browser-specific thing into a separate method?
an image is not necessarily a photo
i'd much prefer if we used standard tools (i.e.
getLocalizedDateor something) instead of trying to localize dates ourselves, it's gonna end up badlycan you name it differently, like
initializeDirectConversationsStreaming?do you even need to fetch that every time? or at all?
overall it feels like instead of adding direct conversations into pleroma-fe it adds an entire different application that supports direct conversations to pleroma-fe. It's incredibly difficult to review and will be even harder to maintain. Code Reuse is nowhere to be found.
Here's a list of what needs to be done
PostContentcomponent and reuse it between status and direct conversation statussome testing:
Backend treats public thread that contains a DM as a direct conversation, should probably only start at direct conversation. cc @lambadalambda
FE should probably properly show that some posts are in fact public
Hmm, it doesn't bring up keyboard for me when I test it on mobile. Looks like it was intentionally made impossible to do so so as not to annoy users
it's in the link preview card
Will do that. What about displaying attachments in TL and direct conversation? There is a common issue with layouts that needs to be kept scrolled to the bottom: to avoid layout "jumping" when new images get downloaded, FE should either know the dimensions in advance or use fixed height. Since the dimensions are missing unless a custom BE upload filter is used, I used fixed height. Is this something we want to unify with TL too?
Re: using sticky-panel-header for other timelines, does it mean removing or doing something about the space between the top bar and the sidebar / TL? Right now, there is an asymmetry when the sticky header is used: screenshot. If we keep it at the same level, then the TL content would appear on top of the background image. So we can either remove the space or replace it with something that would be on top of the TL content and the background image.
Re: posting form, which style should attachments have, the one that is in direct conversations (attachments are inside the form), or the one used in the main posting form (attachments are outside the form)?
Also, I had to change textarea to div with contenteditable to make it work properly with the mobile layout. With textarea, there was white space appearing at the bottom of the form in iOS Safari (screenshot). I tried different approaches to get rid of it, but switching to contenteditable with some minor global layout adjustments was the only thing that worked. Should we use div contenteditable for the main posting form too? (pros: makes possible to display emojis inside input, cons: less convenient API for autocomplete)
Doesn't look like it requires theming tbh. This is for the close icon that appears on top of the attachment:
Without it, if we have a globally scrollable chat layout (with sticky header and input area), the transparent background wrapper is moving along with the scroll: scroll-bg.
Not necessary, removing that.
last time i did that it did bring up keyboard, at least on Android/Firefox. And it was VERY picky about focus, too, like even small blur event will make keyboard disappear, iirc even just switching to another field.
anyway, needs ux testing.
the entirety of it?
also, if i understand,
toggleMenudoesn't actually toggles any menu, it just shows "Delete" underneath a post, probably should be more liketoggleActionsor something? Not to mention if that's how i understood it it doesn't really matter preventing display of it on links and whatnot.Yes, the more unifying between TL and DC the better, IIRC TL attachments component is already quite fine-tuned to the extreme to handle dynamic aspects ratios while using fixed heights.
yeah, the asymmetry looks ugly and we have to find a way around it (i'm thinking about css masks but not necessary, we could make timeline itself scrollable instead of page which also sorta in-line with potential multi-column setup), imo it should be removed for now and re-added separately for all panels, it's a sorta requirement for upcoming navigation overhaul https://shigusegubu.club/notice/9pC2lOupzsfX97M2dc (no issue made for it yet)
I would really appreciate if you just used PostStatusForm with minimal changes in it right now. There's no need to follow some sort of design mockup right now, it's more important to make it consistent across the application.
again, just use textarea for now.
looks like it's mostly because you position the entire thing absolutely or something like that
On a second thought, maybe it's unlikely that BE would need to provide a different URL, so let's just use
location.origin.replace(/(http)(s)?:\/\//, 'ws$2://')to get the streaming URL then?re: right click, I'd think most users don't expect it to work on web and I think it doesn't work on most tablets? The idea to open it on left click was basically taken from the new twitter DM UI thinking that this is what most users will learn to expect over time
the early return part is for the scenario when you click on link / link preview and it shows the "Delete" at the same time
i guess if all it does is show actions then left click is fine, right click is also used on web (see: youtube) for mobiles it's long tap usually. Problem is that with name
toggleMenuyou'd think it toggles (context) menu, but it does not.As long as actions doesn't make whole thing jump i don't see the big need for early returns
just use existing instance url info like here #2279/diffs
on the other hand probably worth waiting for that MR to be merged and use
ParsedWSfrom there?Fedilab also shows the same back end issue in production
Sure, will use
ParsedWSonce it's mergedAll done. Would it be okay to make a separate MR for the extracted
StatusContent? I think having it merged first would make it easier to proceed with this MR and the review.Changed it to be scrollable inside the TL screenshot so that there is no asymmetry and it's easier to unify with other TLs
Alright, switched to
PostStatusFormChanged it to start at the top
Should be better now: fixed scroll blinking and DC TL being reset
Added a tiny visibility indicator: screenshot
Returned the old DM links
Most likely this was because it was unread and reading it refreshed the
updated_attimestamp on BE, so basically a BE issue (made a MR with the fix).Updated the Redmond themes: screenshot
Switched to
PostStatusFormas you suggested so that we can unify how multiple uploads are handled3, 5, 6, 14, 16, 15, 17: fixed
resolved since the TL is now scrollable screenshot
made it more precise with
closest('.link-preview-card, .attachments')Some more testing of updated version:
exclude_visibilities[]=directwhich makes whole page broken.DocumenttoFilehandle: messageunless it's "You:"Nickname user@handle
user handle should probably use linkFaint tho.
And now the big one.
The whole thing is a UX mess. When we roll out this feature users will be greeted with 100+ unread "direct conversations" with 80% of them not even being "direct" at all, just regular threads or even messages incorrectly treated as DMs in the past when they were just FO. And to make matters worse - one could reply to a public post with a DM and it would mark entire thread as a DC, and no amount of BE or FE tweak will fix it - it's part of the protocol and our legacy. The only real solution that I see to that is to make direct messages exist on a separate plane - name them APType=DirectMessages2 internally or whatever - make it incompatible with traditional posts, give them extra features (like ability to delete thread/other person's messages), impose bigger restrictions (can't reply to a public post with a DM2, can't reply to a DM2 with a public post, can't favorite a DM2).
As of now, i really don't know how to fix it otherwise or what to do with whatever done. Initially I thought it's probably gonna be good, but testing it again gives me nothing but a headache and flashbacks from March when I told @feld @lambadalambda and others that this thing is a bad idea.
Direct conversations should probably be called just "Conversations" and there should be some sort of onboarding explaining why the fuck the whole thing is a mess, what purpose it serves and how to use it. As it is stands right now, I would only allow it as an experimental opt-in feature.
It reminds me of MacOS in a way - it's pretty, yeah, but limiting and clunky to the point where I'd rather use something else.
another bug:

this causes horizontal scroll to appear
what's up with
'avatar-compact': false?what's up with this global scope pollution?
??
what's up with this fallback?
what's up with this indentation?
https://kazupon.github.io/vue-i18n/guide/pluralization.html
should be an error maybe?
directConversations.forEach?const?why?
instead of
Altit should beIncomingandOutgoingalso both of them should have their own Text and Link definitions
I.e. you may want make iOS-style white-on-blue/black-on-grey messages but shared "text" for both incoming and outgoing won't let you.
should probably use
Borderinstead ofFg, it's confusing otherwise.doesn't seem to be used anymore
i get a feeling this might pollute
defaultState, should probably use clone -{ ...defaultState }not critical but makes me nervous
I don't see stuff in
status_content.jsremoved fromstatus.jsweird
i feel like this is misleading and confusing since two post forms are so identical you sorta expect them to behave the same, but this pulls the rug under user by submitting on enter.
ideally it should be customizable globally and there should be a hint text "Enter will send post" or "Shift-Enter will post"
maybe just
placeholder?instead of hiding notice, Direct Conversation should have its own notice that will show whom message will be sent to.
Ideally it should also have a control to manually specify
tofield and display whom post will be directed to.subjectandnoSubjectsounds weird, probablydisableSubject?same applies to other
noSmthreplyToDirectConversationIdto be consistent with
replyToas i mentioned before - why tho? really, really, WHY
again, it's pretty useful for DMs as well.
????
this is a bit overwhelming tbh
the idea was to separate DMs from other posts visually, but since we're returning the old DM links there is no need for this anymore, so removing it
For a 1-1 DC, the recipient is in the placeholder, for multi-user DC, they're in the header / member list: screenshot. We can also add a greeting message, e.g., "This is the beginning of your conversation with ..." when the user starts a new DC. Edit: added a notice for multi-user DMs (probably makes sense to remember it being dismissed separately since it's a new feature, will do that next)
changed it to
IncomingBorder/OutgoingBorderIs anything else missing for this to be merged?
yes, it needs more testing, more review, opt-in (unless implemented) and overall discussion about the whole mess of conversations in pleroma/pleroma-meta#21
added transparency support
Noticed a bug that repeats of posts with NSFW content does not mark attachments as NSFW.
removing that for extra safety
should be fixed now, tested in chrome/safari/firefox
removing this change for now, customization would be nice, yeah, but probably in the next iteration then
reverted
submitDisabledchangesplays strangely with the chat layout for some reason when you click on the picker, not sure why but will try to figure out
8 and 9, should be fixed now (tested on safari, chrome, firefox). Re: loading issue, similarly to bookmarks, I added the
http-link-headerpackage to usenextIdfrom the link header so that FE doesn't depend on internal BE ordering.To prevent it from jumping, switched to a popover screenshot
1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15: fixed
That was to avoid repeating the handle when it's the message from the same user. Maybe we could arrange message corners to make it more clear: screenshot?
Hmm, not sure I understand this one. In original posts, avatars don't animate for me unless they are gifs and when they are gifs, they animate all the time regardless of hovering. Could you elaborate on this?
Also, added the experimental opt-in (Settings -> Experimental Features -> Direct Conversations).
11: It's been merged now pleroma/pleroma#5458.
4, 12, 13, 16, 17: fixed
Check out this option:
use
StillImagefor avatars.I'm saying move nickname out of the bubble:
All done
I need to test this branch to see how it differs from what I have been running, but the New DM functionality is terrible if the account you want to start a new message to cannot be reliably found with our search. It requires the user remember they can (hopefully) navigate to the user's profile (if they have a link or post in the timeline to help! because again, search is bad) and then hit the DM button.
So... yeah. Side effect of our search being barely usable right now for finding accounts.
This is fixed now
should be hidden when direct conversations are turned off
also should probably in the menu but not as important rn
@eugenijm @shpuld @lambadalambda I think this just needs one small fix to hide dm button in user profile (it's always shown), but otherwise should be ok to merge this and fix any issues that arise later.
Direct conversations are off by default and hidden rather deep in settings. This should allow to test and improve the API/backend side of things easier, on top of that there's some nice refactoring in there that separates status from its contents which would help refactoring notifications to make them lighter.
Great, will merge it in my branch and test it a bit.
Update: Works nicely.
This overflows when markdown code blocks are used
i'd prefer to fix problems not related to conversations themselves first, so that we could merge it to take advantage of refactoring done in this MR, and then fix conversation-related issues separately, keeping conversations off by default as an experimental feature until feature stabilizes and becomes more usable as well
Some problems I found when testing:
I'm going to ease this MR a bit by separating the status -> statuscontent refactor into a smaller MR
i'm not sure about send-on-enter, it seems a bit confusing to have different approaches to same thing. On top of that, some people voiced that they want send-on-enter in main input too.
Don't really want to say it, but it's probably better be an option to control input forms separately? Not sure if that or actual full-blown hotkey system, which was also asked about I believe but hasn't really been a necessity yet.
Updated the MR to make it use the new Chat API instead of Conversations, renamed Direct Conversations to Chats
I installed both on the test instances, overall it works, but there's some weirdness. Sending a message blocks the input field and I can't send another one without refreshing
It also only inserts the message after the notification arrives, i think. I guess it somehow doesn't correctly use the 200 OK from the message post.
there also seems to be some ordering issue
Ah, fixed the message sending, inserting and, the ordering issue .
One more thing, I find it quite hard to see which part of the conversation is supposed to be me and which is the other one. I think the other side of the chat should have a little avatar attached
while it's super common to not have any indication, right side for your posts is pretty standard in most chat applications I've used, it would be necessary to add names or avatars later for group chats so might as well do it now already for consistent UI
Can confirm that the issues i reported are fixed
all the ones i use (conversation, riot, line) have some kind of indication, usually one small avatar image above the first of a chain of messages.
counterexamples that are not famous for foss tier ui: whatsapp and telegram
still let's add the information
I can say that iMessages hide avatars for both sides in 1-on-1s and Skype hides avatars for outgoing messages.
I would prefer avatars on incoming messages on by default and off for outgoing, probably make it configurable but it's not important right now
vote yes for 'no avatars or names on outgoing messages', vote big no for making incoming message sender info into an option, we need those avatars for group chats later anyway so don't bother making 2 different implementations, and especially don't add to the clutter in our options
my vote is also for 'incoming: yes, outgoing: no', with no options.
I quite like the way it's done in LINE, very unobtrusive
Skype is mostly the same but also adds the name on top with a smaller fainter font, which is maybe not that useful for 1on1 chats but borderline must for group chats later
lucky cute dogs
added avatars for incoming messages
much nicer now
some UI nitpicks based on that screenshot, the avatar isn't lined up well, lining up with the bottom of the message looks weird. either top or slightly off from top (to make it look centered on 1-line messages but not on longer ones) would be better
also now it looks a bit strange with the recipient avatar in the upper right corner, maybe the avatar could be together with the name in the center, right before it
avatar should be aligned with top line of first message i'd say.
avatar in titlebar... weh. I don't think it's required at all for 1-on-1s at all, but should be a thing for group chats in the future. Probably should be on the left side of title, either next to it or on the far left side. Right side is ok i guess? That's the place where menu would normally be tho...
After trying it out some more, here are a few things that don't seem right:
It's already fun to use, though :)
One more:
For comparison, the screenshots with the avatar and the nickname in the title:
With regards to the avatar and message alignment, we can line up 1) the top of avatar with the top of the first line 2) the middle of the avatar with the middle of the first line 3) the top of the avatar with the the top of the message bubble / cloud
already mentioned above
wym?
avatar and nick name should be on the left side, i just realized that's how titlebar titles work in every other place in the UI.
for message alignment - top of avatar aligned with top of the bubble.
this :)
yeah, the left alignment looks much nicer
oh. right. emojis are added at API layer not in the component, forgot.
Added last_message to the chat list, attachments, custom emoji, message loading on scroll up, unread count indicator (hid chat messages from the notification box), fixed the chats reordering
Current version is pretty nice, but I found a new problem:
attachments look great!
oh, fixed it
I experienced some weirdness with attachments, sometimes the whole post doesn't show up. It seems to happen mainly with remote attachments.
also, chat messages can be posted now without content, if there's an attachment
fixed it in the last update, remote attachments work now
nice, removed the client error when the attachment is without content
tested, works :)
tested, works :)
A few more things:
last_messagedoesn't change without refreshOh, and if the last message is just an attachment, it won't display any text in the chat list
Updated pleroma-fe to develop plus this branch today (with also updating the backend) and I got this… I wish there would be an actual error (backend usually provides an error message).
Also tried it in a brand new session, same result.
maybe stupid question, but do you run the remake-remodel-dms backend branch?
Nah, develop plus some of my MRs…
Fixed those in the last update.
last_messageis kept updated, the chat list is kept sorted byupdated_at, the info about the attachment file type (image, video, etc) is shown in the chat list.well, than you don't have the chat endpoints
tested a bit, I feel like the chat stuff is in good hands, but a few small things:
something awkward about the ellipsis button I feel. especially on mobile you need a tap to show the button (not super intuitive), then tap the button, then you get the option to delete, then a confirmation if you wanted to delete, that's 4 taps for one action. I'll try to figure out some design for it
the avatar/name on top looks like it's not really aligned to anything at all. not sure why the centered was changed, but I think I'll try out some things with it
does not behave well with on screen keyboard, see how I have to manually scroll to bottom multiple times: https://shpposter.club/media/7c8eda01e9ce9133f3b166efb18b9ca14f0148d245314009810969baa0b6974f.mp4
oh it also lets you upload multiple images but only 1 will post
also, what's the small (i) button in the top corner for?
I thought we could use it in the future to link it to a potential chat control page where the user could mute or delete the chat (although we can also use the avatar/name in the header for this purpose). I guess it would be better to remove it for now until we need something like this to avoid confusion
fixed!
the on screen keyboard behavior should be better now (also disabled autofocus on mobile that brings the keyboard) (edit: will try to make it so that OSK stays in the same position after message send instead of disappearing)
testing the latest release, working quite well! With a activated notification streaming, the chat is even in real time :)
ignoreAlso, can you change the sending behavior so that
and somehow the time got doubled here
fixed
done
i protest!! put it back!!
ctrl enter to send chat messages is awkward as hell, I expect enter to send a message like 99% of chat applications
that's a personal preference and context-sensitive.
post form is nearly identical to other post forms, i'd expect it to behave the same way as well.
either
a) add "Enter sends, use shift-enter to add newlines" hint somewhere
b) add option to configure it
c) both
also what's up with missing polls button in form?
it's really not the same at all, the form doesn't make the difference, but the context does.
chat messages are not statuses, they don't have polls
some bugs with the enter-to-send: ctrl-enter should still send too, and it shouldn't send when you hit it to insert an emoji
seems like there's some reactivity issue with the user here
image tag needs
key=..to make entire tag rerender, maybe?polls are fairly useful in group chats tho.
that's a feature request for the future then
probably noticed already, but the emoji autocomplete goes off-screen
fixed ctrl-enter and the emoji insertion
For streaming, i added a new
user:pleroma_chatstream, but the mssage also comes through inuser. The incoming payload on a new chat message has the eventpleroma:chat_update, the payload is the updated chat, the message is in thelast_messagefield. Please use this to add chat messages and don't add them from notifications anymore.This is live on dontbulling.me
A few more observations:
/messagesdoesn't seem to usesince_id. While this doesn't hurt much because chat messages are so small, it is a waste of bandwidth and server time.this one is not an event, it's a possible value for
stream, likeuserorpublicnewlines in normal posts broke
fixed
done
When you have a chat open but not focused (that is, you're on a different tab), you will never see the number rise in the title because the focused chat will immediately send a 'read' as soon as it receives a message. It should only do that when it's in focus or becoming in focus.
Fixed (added focus tracking)
I guess it would be handy to track idle status too (mouse movements / keystrokes) so that we don't mark new messages as read when the user is most likely away from the keyboard despite having a focused chat tab, will add this
fixed
The chat breaks (only showing max 1 message) when the message is not a number. Both the chat id and the chat message ids are strings and should be treated as such. The chat message ids are sortable.
https://originalpatchou.li/ is running with chat message ids like 9vhjDjbSBxzScg77Ro
Also on that branch, any message can be deleted, not just your own.
finally
And one more thing, refreshing a chat (like https://dontbulling.me/users/lain/chats/9u6Qw542D2VvvcSOQq) or going there directly won't actually show any messages
I don't understand why this is necessary. The string ids are already sortable.
Messages incoming via stream don't update the open chat properly anymore
Troubleshooting this, looks like FE is getting the previous message in
pleroma:chat_updateinstead of the last one. (since the previous message is already in the store, the chat isn't updated). E.g., when the user sends 1, 2, 3, then receiver gets 1 when 2 is sent and 2 when 3 is sent.ah, i'm checking!
There is huge issues with this kind of tracking:
Right now we have an explicit read button for notifications and I think it's very good.
Thank you, found the problem and fixed it.
This is fixed now, when investigating I found that the connection was closing randomly on some messages and FE wasn't handling the WS connection loss properly. I fixed the WS connection loss handling, however, the somewhat random and infrequent connection loss on new messages seem to remain. Made a video to illustrate it (as soon as the connection is closed, the new one is created instead and we do the clean up and re-pull as per #2286) (this happens on the receiver's side)
the related error in the logs
fixed the emoji autocomplete going off-screen
a backend bug that should be fixed now
Still good that you wrote the code to reestablish, thank you!
I don't think it makes sense to keep track of unread posts in currently focused conversation, you can only have one. I don't think most IM applications do anything like this either. I think it's only important to check if the tab is focused
the title bar change when unfocused is working very unreliable, more than half of the times when I leave the tab, I don't get any change in the title bar to tell me there's new messages
Noticed a similar issue with the unread value in the
pleroma:chat_updatepayload: theunreadvalue doesn't include the new unread message (right now this is not noticeable on FE because it re-fetches the chat on a new message but it would prob. be better to remove that extra fetch and use thepleroma:chat_updatepayload instead). (BE version:e46aecda55b20c0d48463fb2a5c0040d4fc34e97, also confirmed it happens on dontbulling.me too)Thank you for reporting this, this has been fixed, the unread count is accurate now
Still happens on the latest
remake-remodel-dmsbranch (the unread doesn't contain the updated value): video (in the video, I disabled the chat re-refetch on a new message so that we always display the unread count received frompleroma:chat_update: the left user sends "1", the receiver gets it but the unread count is still 0, then the WS connection drops on the second message and we restore the counter on reconnect).This is a bit strange, since the unread count is recalculated in the chat view. It looks like the db query gets a different unread count when streaming out the
pleroma:chat_updateevent, that doesn't include the newly created message.I suspect this might be related to the fact that
Pipeline.common_pipeline/2runs in a transaction, and then inside the transaction we are spawning an async process inStream.do_stream, and onside the DB transaction, the db query calculates a different unread count.I tried to verify this locally by removing the transaction wrapper in the
Pipeline.common_pipelinecall and it fixed the issue for me.By the way, I updated this branch so that it uses the unread value received from
pleroma:chat_update(instead of re-fetching the chat on a new message), so the issue should be more visible now.ah, that makes sense. mhhh i'll have to see what the best way to fix this is.
Updated the BE branch, it works now!
Not sure how much of an issue this is but I've noticed that the connection loss still happens sometimes during the
pleroma:chat_mentionnotification render, and it probably has the similar cause: that is, the connection drops when the notification stream out happens before the transaction is commited and the chat_message_reference becomes avaialbe (in the NotificationView, which is called inside the streamer, we're getting the chat message from the DB querygit.pleroma.social/pleroma/pleroma/-@f3ea6ee2c8/lib/pleroma/web/mastodon_api/views/notification_view.ex (L142)).The error in the log shows the chat message reference is nil and therefore it couldn't find the view template to match this pattern
Made a video to illustrate this: video
ah, that's streamed out too soon, too... thanks for all the reports!
This does not check for presence of the chat feature before displaying the options, right? That is given out in https://dontbulling.me/api/v1/instance.
Added the feature check
Does it also hide the 'message' button in the user card?
nice catch, added this too
should be fixed now
ok, let's not do the idle tracking
the title bar update should be better now
Tests are failing
fixed
For some reason, the "..." icon for deleting stuff became the download icon.
whoops, fixed
Image-only posts have useless empty space at the top.
fixed
one more thing, there are no 'sensitive' images here, can you remove the checkbox?
Very minor issue: the images don't fully respect the cropping setting: for tall images it works like it should, but for wide images it always leaves empty space on bottom and top instead of covering the entire area even if you've allowed it to crop them.
Also, the 'don't mark as read when tab is not focused' thing still doesn't work correctly. it counts up for a little while but then drops to zero again.
done
should be fixed now (tested on firefox, chrome, safari)
Looks like it works the same way with the TL layout on the latest develop (the "Don't crop the attachment in thumbnails" is unchecked) and we're reusing it for the chat layout.
Also, there is an issue with adjusting the image height dynamically: since the chat needs to be kept scrolled to the bottom, not knowing the dimensions of the image ahead of time might lead to the layout "jumping" as the image loads.
One way to fix this would be to provide the image dimensions along with the attachment in the BE API. That way, the FE could use the fixed image height and avoid the layout jumping as the image loads.
why no sensitive images support tho? seems useful even in direct conversations
might come later, but for now it's not in the current backend.
Functionality-wise, this seems to be pretty much done and works well. Could use a final code review before it goes in.
Chats have a followers-only warning that should not exist
fixed
Huh you're right, maybe it was broken recently in develop. yeah we don't want dynamic sizing on TL nor in chats for the jumping effect, I'm too familiar with this.
should be in a named class
I don't understand this
needs class and should prefer flex to float
i don't entirely understand why it's exclusive to chats...
this seems to be for the ellipsis-button? the name should reflect that I think
so we are removing old chats completely?
i don't think
store.statewould ever be empty here, neither does this code run more than once?seems awfully precise, but I don't see this class being used anywhere
can we avoid all of this and just use plain CSS instead?
i.e. set/unset classnames?
why not const
there's lots of very arbitrary looking pixel values all around this file, I think it would be better to stick to certain round em values. I always get worried when I see mix of 3px, 4px, 5px, 7px for different things
if you're using global store it probably makes sense to call it "setPageFocused" and do it elsewhere?
a lot of redundancy here..
confusing
what does this do, exactly? Why
document.hiddeninstead of that state you stored earlier?why do you need to do something in JS on hover? what is a sequence?
nit: posted? not send?
this entire section is confusing, what is going on? could naming be even more confusing?
this class seems to not be used anymore
could move these to the class
avoid single-character variables?
avoid style manipulation?
these two blocks of code do exactly the same thing, only difference is in which element they use
any advantage for using a 'Set' over just a const array with the .includes method?
can we keep magic numbers in constants?
quite a lot of unnecessary
lets, some initialized some notwhy timeout, yet alone so big?
???????
unnecessary
please try to keep indentation/nesting level to minimum
shouldn't webpack/whatever we use autoprefix all that? what about
-moz?is there a reason why this stuff is in 'users' module? question applies to the rest of the chat stuff in the file
you don't need to use
@mediaoutside the main selector, you can do it like so:at least i think it does
why
formtag selectoragain, with nesting levels
selector outside
.chat-viewdidn't you define one in App.scss?
documentation??
wait, we already have UserAvatar
could use some tests for the file
please include root element class as a root selector
so is it 1 or 0?
you mean
.emoji?shouldn't all this stuff be handled by
status-content?hypothetically, set is O(1), while array is O(n) for searching. realistically it doesn't matter at small amounts.
still,
.has()is shorter than.includes()is this truly necessary? maybe update popover instead?
i wonder how well this works with DST...
i doubt this will work with
ja_easyis this necessary?we are in new chat already, aren't we?
title has html, html title has... screen_name?
i think a lot of these if branches could be rearranged in a more readable way
why does both of this and the above apply for "top"?
todo what?
so read button doesn't reset the chat counter or...?
why "poster"?
how many resizes you need?
pls use click instead of mousedown/touchstart
wouldn't it be better to just have header "Incoming" and there standard text, link, border? Look how buttons are done
sounds like a perfect case to use a
.reduce()insteadadd
chatBglayer intoLAYERSwith value'underlay',likewise add
chatMessagelayer with value'chatBg'use them here
why?
use variable maybe?
This is to make the mobile on-screen keyboard stay at the same position instead of disappearing after a message send (click makes it disappear). Native mobile chat apps work the way, so many users most likely expect this behavior. Useful for quickly sending a chain of short messages. Should we keep it that way or change it to a click? (Sorry, should have documented this part)
dunno about touchstart but mousedown should definitely change into "click", i expect buttons to react when mouse hasbeen pressed and depressed, this way you can prevent accidental misclicks, too.
it was empty when running the router test, just added the mocked state to the test instead
double checked that it's not necessary, removing
good point, removed it
not necessary, removing that
The read button in the notification panel doesn't mark all the chats as read. Should it? Wasn't sure about that since BE doesn't mark them as read either.
removed redundant calls
as long as it works as well as before in chats (really nice functionality on my phone)
I'll need to double check if regular status posting has changed much outside of chat
it looks like the 'last_message' is trying to use faint text color (as evidenced by the hashtag being darker) but the rest is still normal looking
could be a rendering bug, firefox sometimes... flickers or uses incorrect opacity for text for whatever reason, at least i've seen it on nightly quite often.
when i hit "read" in notifications i expect all notifications to be marked as read, it's pretty simple, no?
I'll move the changes from popover to separate MR where I'll use them to fix something else, less code to review here then
Regular status posting is wonky in this branch, it posts and immediately pops up the error that you can't post an empty status with no files
ahhh! I thought this was a problem on my end the whole time.
most likely related to mousedown thing...
the double send issue should be fixed now
added the docs to describe the scroll positioning
Just to clarify, chat messages are not displayed in the notifications panel and are not included in the notification panel unread counter, hence two different counters (the unread chat count displays the data from
GET /api/v1/pleroma/chats)removing the focus state, not necessary for the chat
returned that old chats
confirmed it adds the autoprefix
refactored this part
The reason for setting the fixed height is the mobile browser panel can sometimes hide or overlap the posting form. I tried different approaches here but setting the fixed height appeared to be the most reliable one
right, so an object would work the same way
yeah this is a misunderstanding, the "read" should not mark chats as read, as you don't see chat notifications in the notification column, they are separate. the way it already works in practice is really nice 👍
I investigated, the problem seems to be using "--faintText" instead of "--faint"
thanks, changed it to "--faint"
good point, added the incoming and outgoing headers
ah, that was unnecessary, removed it
refactored this part
thanks, confirmed it works inside the selector
Renamed sequence to messageChain for better clarity, it's an uninterrupted chain of messages made by the same user.
A message chain has one user avatar, aligned with the first message of the chain. When "play-on-hover GIFs" is enabled, we want to animate the avatar when the chain is hovered, so JS is used to pass this state to the first message in the chain.
IIRC StillImage relies purely on CSS to do hover, why do you need JS here then?
For this effect: video
The avatar near the first message of the chain is animated when any message belonging to the chain is hovered.
AFAIK, we could do this with CSS if the chain was wrapped in a parent element, but then it would have bring more complexity to the layout.
renamed to sendMessage
refactored it so that const is preferred when no rebinding is happening
good point, renamed to send
could you please leave a comment about that in the code? Not sure about usability but we'll have to wait and see
sure, left the comment
done
refactored this part
Updated this, should be more readable now
we position the panel or picker above the input when
placementis set totop(the chat form) orwhen
placementis set toauto(default) and the element doesn't have enough space at the bottom.updated it to use more descriptive naming and added a comment
unnecessary, removing that
refactored this, not necessary anymore
thanks, updated the branch!
oh, right, removing that
Chat navigation feels nicer w/o fade but I wasn't sure about modifying the existing behavior for other routes
removed the additional state,
document.hiddenseem to be enough for this use caseah, right, this isn't very clear in this context, maybe
request?you're right, removed that in favor of
status-contentreplaced by
status-contenttooreduced the nesting in scss
Changed
fgtoborderinchatMessageIncomingBorder, seem to be working fine with all the themes. Removed the extra colors in the redmond themes as they are not necessary anymore.changed it to flex
Refactored the counters style so that they reuse the existing
badgeandbadge-notifications. There are a few small differences between the new message counter that is displayed inside the "jump-to-the-bottom" button and the chat counter in the nav panel, so I created the corresponding.unread-message-countand.unread-chat-count.i'm not sure what poster is supposed to be in the beginning, is it like
postHandlermaybe?tried running locally with updated backend (recent develop), didn't work all that well
backend log
FE managed to create a new chat but trying to send messages freezes the submit form - there's no error handling.
Added the error handling for chat creation and message sending (the recent develop works fine for me though).
Removed in favor of UserAvatar
kind of, the function is either
status_poster.postStatusorchat.sendMessage. Both work the same way: make an API request, add a message or status to the store, return the result back to the form.postHanldersounds goodReplaced px by em, with the exception of a few places where they rely on other elements having px (the user avatar width, the top bar, and also border radius and shadows)
This is for the mobile chat app to make the mobile top address bar and the bottom bar not to go away on scroll up / down. Is this also a desirable behavior for the mobile timeline?ah, nvm, sure, classnames would be better
edit: done
if you insist so much on using
inconvenientEnter to send, make sure Ctrl-enter adds newline in such mode, right now it also sendspanel shadow isn't applied to chat panel
upload button being disabled isn't visible, only cursor gives away that it's disabled.
added the tests for chat service
fixed
removed unused state
fixed
ok, newline on ctrl+enter seems to be used in other chats too (whatsapp, telegram, discord, slack, twitter DMs), so I guess it's also an expected behavior the same way send on enter is. cc @shpuld (re: #2286)
can you make both ctrl+enter and shift+enter do a newline? I see that other chats also do that.
yup, added the newline on ctrl+enter behavior in the last commit
I thought it's weird when ctrl-enter doesn't send alongside just enter, shift-enter is the safe way to add newlines. however if it's common in other software to use ctrl-enter for newlines, then I'm not against it
ok, marking this as resolved
Sorry in advance if overexplaning. On the BE, the message timestamp is represented by
NaiveDateTimewhich doesn't contain the timezone info: https://hexdocs.pm/elixir/NaiveDateTime.html from the docsWhen the given message timestamp doesn't exists in the client's timezone, JS adds/subtracts an hour.
E.g., when DST starts and the clocks are turned forward, the client skips an hour
however, when DST ends and the clocks are turned backward, we might get an unusual artifact in the UI when the displayed time in hours and minutes of a more recent message is less than that of an older one. E.g.,
this doesn't affect the actual order of messages, ofc, since they are sorted by ids.
As for the date separator, it's inserted before the first message that has the date greater than the previous one. So, with respect to the message list, it's inserted as expected, e.g., in this example, it will be displayed this way:
the order and the date separator position are correct, the only issue is the overlap in the displayed hours and minutes between messages created during the "unreal" for the client hour and the messages created in the next hour.
thanks, seems fine then.
why do you need computedStyle tho? why not offsetHeight or such?
thanks, I haven't tried offsetHeight, seem to be working great on mobile and desktop. edit: confirmed it works on ios and android mobile browsers and doesn't cause the overlap between the posting form and browser bars
@hj @shpuld anything left to do here?
final round of review and maybe dogfood it a bit more. i think i'll merge it into sgsgb branch.
i've been using this branch for a month now, works well
yeah, I've been putting off the 2k+ re-review but I'll start today
found a new minor bug with the layout:
UX problem: there's currently absolutely no indication if message reached target instance or not, i.e. sending chat messages to mastodon seem to work like normal, but I imagine mastosoc never processed the message and probably errored out. Can anything be done about it? @lambadalambda
inserting newline via Ctrl-Enter doesn't scroll/resize the textbox
Fixed
my vote is to remove the fade for everything to be honest, it just looks tacky and slow
adding info about that to https://git.pleroma.social/pleroma/pleroma-meta/-/issues/41
is it possible to, say, error out when trying to send user a chat message if remote server rejects message for now?
sadly it isn't, because AP messages are always acknowledged by the receiving server as the actual processing happens asynchronously, so unknown messages are just silently ignored.
Fixed
ok, removed the fade on route change completely
I don't think we need to force the chat list to be full height with pixel perfect heights, I think a min height of something like 25em would work well, not too awkward on mobile or desktop even when empty. we're not afraid of showing background image :)
there doesn't seem to be any placeholder when the chats list is empty? would be a good idea to add a simple faint text like
this seems like a good change but I wonder if existing code is relying on the old behavior?
really, the code is looking pretty good :) this is very close to being merged imo
avoid setting styles directly and instead use classes?
same here
again, not liking the direct styles
low-hanging characters are cut off
apart from direct styles, code looks good
testing-wise seems ok too, apart from that line cutoff
i would probably add a
single-linemodifier to status-content that usestext-overflowand prohibits multilineAh, I haven't considered it. Yeah, for extra safety it's better to keep the existing behavior and changing it is probably outside the scope of the MR since it might affect the other parts
In this case, we're passing
popoverMarginStyleto the Popover'smarginprop that uses it for calculating the popover positionFixed
Added the placeholder
Thanks for the suggestion, added it
this suggestion fixes the bottom corners of the chat list being sharp when they shouldn't

Now that chats are no longer direct conversations, would it be a good idea to add the "Message" button back to the user profile card for quicker access instead of having it in the account menu under the ellipsis button? I've noticed that twitter has the DM button more easily accessible. Might be easier to discover for the new users
Tested, tested, tested and continues to work well. Any final change requests? Otherwise i'd say it's time to hit hat button.
congrats for sticking and finishing with such a long task @eugenijm !! and sorry for the process being so difficult
thanks for the all the feedback and reviews @hj @shpuld @lambadalambda!
Pull request closed