radio: public read-only tracker for Opa (NL/EN toggle, bigger type and tap targets)
Deploy production / deploy (push) Successful in 1m22s

Visitors see frequencies, banks, nets, ISS passes and the log without logging in; every
write stays owner-only (actions check the owner, hooks refuse non-GET). The public payload
drops reminder switches, log notes and inactive nets, and the page no longer shows the
observer coordinates (only "Gouda"). Dutch/English toggle (?lang, cookie, Accept-Language,
NL fallback). Larger fonts, high-contrast labels and 44px+ controls for phones and tablets;
radio listed as public (no lock) and in the sitemap; banks CSV public.
This commit is contained in:
stan committed 2026-10-27 09:23:28 +00:00
1 parent e1e2bee590
commit 96d7333fe9
16 files changed
+1061 -420

No files matched your search

+6 -5
View File
@@ -51,12 +51,13 @@ describe('owner gate', () => {
expect(isOwnerWritePath('/trackers/cargill')).toBe(true);
expect(isOwnerWritePath('/trackers/cargill/glossary/ester')).toBe(true);
});
it('gates the whole radio tracker, reads, writes and the CSV export', () => {
expect(isOwnerOnlyPath('/trackers/radio')).toBe(true);
expect(isOwnerOnlyPath('/trackers/radio/__data.json')).toBe(true);
expect(isOwnerOnlyPath('/trackers/radio/banks.csv')).toBe(true);
expect(isOwnerOnlyPath('/trackers/radiox')).toBe(false);
it('shows the radio tracker to everyone but keeps every write mine', () => {
expect(isOwnerOnlyPath('/trackers/radio')).toBe(false);
expect(isOwnerOnlyPath('/trackers/radio/__data.json')).toBe(false);
expect(isOwnerOnlyPath('/trackers/radio/banks.csv')).toBe(false);
expect(isOwnerWritePath('/trackers/radio')).toBe(true);
expect(isOwnerWritePath('/trackers/radio/__data.json')).toBe(true);
expect(isOwnerWritePath('/trackers/radiox')).toBe(false);
});
it('only lets the owner write in owner areas', () => {
expect(isOwnerWritePath('/trackers/books/12')).toBe(true);