Skip to content

Commit c6a9e2a

Browse files
committed
Update quotes with additional posts
1 parent bccea4f commit c6a9e2a

2 files changed

Lines changed: 60 additions & 4 deletions

File tree

src/components/QuoteTicker.astro

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* Infinite horizontally scrolling ticker using CSS animation.
44
* Two copies of the content sit side-by-side and translate continuously.
55
* Hover pause is pure CSS (:hover) to avoid JS-induced animation jumps.
6-
* JS handles: touch pause with 10s resume, and per-card colors.
6+
* JS handles: touch pause, per-card colors, and reshuffling on each cycle.
77
*/
88
interface Props {
99
direction?: 'left' | 'right';
@@ -38,8 +38,8 @@ const actualDuration = Math.round(jitter);
3838
* SPDX-License-Identifier: Apache-2.0
3939
*/
4040
(function() {
41-
if (window.__tickerV4) return;
42-
window.__tickerV4 = true;
41+
if (window.__tickerV5) return;
42+
window.__tickerV5 = true;
4343

4444
var TOUCH_PAUSE_MS = 10000;
4545
var PALETTE = [
@@ -52,6 +52,16 @@ const actualDuration = Math.round(jitter);
5252
else window.addEventListener('load', fn);
5353
}
5454

55+
// Fisher-Yates shuffle for DOM children
56+
function shuffleChildren(container) {
57+
var children = Array.from(container.children);
58+
for (var i = children.length - 1; i > 0; i--) {
59+
var j = Math.floor(Math.random() * (i + 1));
60+
container.appendChild(children[j]);
61+
children.splice(j, 1, children[i]);
62+
}
63+
}
64+
5565
ready(function() {
5666
// Assign per-card colors
5767
document.querySelectorAll('.ticker-card').forEach(function(card) {
@@ -67,19 +77,29 @@ const actualDuration = Math.round(jitter);
6777
card.style.setProperty('--tc-s', p.s + '%');
6878
});
6979

70-
// Touch-only pause (mouse hover is handled by pure CSS)
7180
document.querySelectorAll('.ticker').forEach(function(el) {
7281
var track = el.querySelector('.ticker-track');
7382
if (!track) return;
83+
var halves = track.querySelectorAll('.ticker-half');
7484
var touchTimer = null;
7585

86+
// Touch-only pause (mouse hover is handled by pure CSS)
7687
el.addEventListener('touchstart', function() {
7788
track.style.animationPlayState = 'paused';
7889
if (touchTimer) clearTimeout(touchTimer);
7990
touchTimer = setTimeout(function() {
8091
track.style.animationPlayState = '';
8192
}, TOUCH_PAUSE_MS);
8293
}, {passive: true});
94+
95+
// Reshuffle both halves when the animation completes one full cycle.
96+
// The shuffle happens at the exact loop point where the two halves
97+
// are visually identical, so the reorder is invisible to the user.
98+
track.addEventListener('animationiteration', function() {
99+
for (var i = 0; i < halves.length; i++) {
100+
shuffleChildren(halves[i]);
101+
}
102+
});
83103
});
84104
});
85105
})();

src/data/quotes/organizations.yaml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,39 @@
4040
- quote: "Changes would impose barriers to entry for individual developers, small teams and volunteer projects by imposing fees, identity checks and terms that may not align with the principles of an open ecosystem."
4141
source: "Infosecurity Magazine"
4242
url: "https://www.infosecurity-magazine.com/news/google-android-dev-verification/"
43+
- quote: "Google's developer verification policy creates a centralized database, controlled by a single corporation, containing the real-world identity of every person who writes software for Android."
44+
source: "Brave"
45+
url: "https://brave.com/blog/keep-android-open/"
46+
- quote: "Developers who build privacy-first browsers, encrypted messaging apps, VPNs, Tor-based software or tools for journalists and activists would be required to upload government ID to Google. These developers are unlikely to trust Google and might stop developing for Android."
47+
source: "Brave"
48+
url: "https://brave.com/blog/keep-android-open/"
49+
- quote: "A policy that forces every Android developer to hand their identity to Google, regardless of whether they use Google's services, makes Android a less-open and less-private platform."
50+
source: "Brave"
51+
url: "https://brave.com/blog/keep-android-open/"
52+
- quote: "This is a profound change, one that shatters the entire premise of the Android ecosystem, long regarded as the antithesis of the closed Apple ecosystem."
53+
source: "AdGuard"
54+
url: "https://adguard.com/en/blog/google-android-app-verification-requirement-petition.html"
55+
- quote: "For developers building tools specifically designed to protect user privacy, being forced to surrender their own personal data as a precondition for distribution is deeply contradictory."
56+
source: "AdGuard"
57+
url: "https://adguard.com/en/blog/google-android-app-verification-requirement-petition.html"
58+
- quote: "Verification just confirms who's behind the app, it doesn't guarantee clean code or rule out malicious behavior."
59+
source: "AdGuard"
60+
url: "https://adguard.com/en/blog/google-android-app-verification-requirement-petition.html"
61+
- quote: "Ultimately, Google's plan will stop you from owning your Android phone."
62+
source: "Tuta"
63+
url: "https://tuta.com/blog/google-wants-to-kill-android-freedom"
64+
- quote: "While Android used to be praised for its freedom and independence, it will become a closed shop just like Apple."
65+
source: "Tuta"
66+
url: "https://tuta.com/blog/google-wants-to-kill-android-freedom"
67+
- quote: "Google will cut off independent developers to Android if they do not register with Google first. This will kill independent platforms like F-Droid and severely impede FLOSS devs from creating apps for Android."
68+
source: "KDE"
69+
url: "https://discuss.kde.org/t/kde-supports-the-keep-android-open-campaign/44777"
70+
- quote: "Unilaterally consolidating power to approve software into the hands of a single unaccountable corporation is a threat to digital sovereignty everywhere."
71+
source: "Nextcloud"
72+
url: "https://nextcloud.com/blog/open-letter-android-developer-verification-program/"
73+
- quote: "A centralized global registration system for Android will inevitably chill this work. Those communities are likely to drop out of developing for Android altogether."
74+
source: "Electronic Frontier Foundation"
75+
url: "https://www.eff.org/deeplinks/2025/11/application-gatekeeping-ever-expanding-pathway-internet-censorship"
76+
- quote: "We are running out of time until Google becomes the gate-keeper of all users devices."
77+
source: "F-Droid"
78+
url: "https://f-droid.org/en/2026/02/24/open-letter-opposing-developer-verification.html"

0 commit comments

Comments
 (0)