A user can raise their diagnostics level to Részletes (DEBUG) or Teljes (TRACE) for 24 hours from a new Settings tab, after a consent box that says what is recorded, that the server keeps it and for how long (the instance's own retention), and that it lapses. Alap is the base and needs no consent. - users.diagnostics_level/_until (migration 0087), written only by PUT /api/me/diagnostics, which computes the expiry itself; the demo account cannot raise it. /api/me reports the level in force. - The server logs an elevated user's requests at that level and stores every line of them (logs.LevelGate on the stdout handler and the sink; the root is lowered only while an elevation is active). Teljes adds the redacted query string to the request line. - POST /api/diagnostics/events stores the browser's log as source=web rows: account from the session, body capped while streaming, events/attrs capped, re-redacted, events under the consented level dropped, timestamps clamped, 30 batches a minute, 409 once the level lapsed. - lib/diagnostics.ts applies the level to the tab and streams only what happens after consent, in batches, never its own request lines, with a keepalive flush on pagehide; stops on lapse (its own timer), on withdrawal and on 409. - Detail hooks at DEBUG: which control was clicked (test id, icon, app copy in English — never user text, input values or a link's query), visibility/bfcache/resize, filter changes (lib/filterLog.ts; typed search only at TRACE), player events (lib/mediaLog.ts; media errors are warnings at every level). Offline/online at the base level. - "Saját napló" viewer: live, newest first, level groups with counts, search, row details, copy the filtered events as JSON lines, clear. - Privacy policy and Terms exist in Hungarian and English (a contract test holds both languages to the same sections); the policy now describes the server logs and diagnostic logging, self-service deletion and password sign-in. Fixed on the way: - A sync auth dependency ran logs.set_user on a copied context, so the account never reached a handler's own log lines (measured); a per-request mutable scope carries it now. - The Settings tab rail left a phone no room (clipped labels, buttons over text): below `sm` it is a scrolling row above the content. - PUT /api/me/preferences took a bare dict body; it is a Pydantic model now.
149 lines
6.2 KiB
TypeScript
149 lines
6.2 KiB
TypeScript
import { useTranslation } from "react-i18next";
|
|
|
|
import LegalLayout, { ContactEmail, H2, LegalLink } from "./LegalLayout";
|
|
import { useHungarian } from "./useHungarian";
|
|
|
|
export default function Terms() {
|
|
const { t } = useTranslation();
|
|
const hu = useHungarian();
|
|
return (
|
|
<LegalLayout title={t("common.termsOfService")}>{hu ? <TermsHu /> : <TermsEn />}</LegalLayout>
|
|
);
|
|
}
|
|
|
|
export function TermsEn() {
|
|
return (
|
|
<>
|
|
<p>
|
|
Siftlode is a personal, non-commercial project operated by an individual in Hungary. It
|
|
provides a filterable view of your own YouTube subscriptions. By accessing or using
|
|
Siftlode, you agree to these Terms. If you do not agree, do not use the service.
|
|
</p>
|
|
|
|
<H2 id="service">The service</H2>
|
|
<p>
|
|
Siftlode is offered on an invite-only basis, free of charge, and "as is", without warranties
|
|
of any kind. It is a hobby project: features may change, and the service may be slowed,
|
|
interrupted, or discontinued at any time without notice.
|
|
</p>
|
|
|
|
<H2 id="account">Your account & acceptable use</H2>
|
|
<p>
|
|
You sign in with your Google account or with an email address and password, and may only
|
|
access Siftlode with an email that has been admitted. You agree to use the service lawfully,
|
|
not to abuse, disrupt, probe, or overload it, and not to attempt to access other users'
|
|
data. We may suspend or revoke access at our discretion, for example in case of misuse.
|
|
</p>
|
|
|
|
<H2 id="third-party">Third-party services</H2>
|
|
<p>
|
|
Siftlode uses YouTube API Services. By using Siftlode you agree to be bound by the{" "}
|
|
<LegalLink href="https://www.youtube.com/t/terms">YouTube Terms of Service</LegalLink>. Your
|
|
data is handled as described in our{" "}
|
|
<a href="/privacy" className="text-accent hover:underline">
|
|
Privacy Policy
|
|
</a>{" "}
|
|
and, for Google data, the{" "}
|
|
<LegalLink href="https://policies.google.com/privacy">Google Privacy Policy</LegalLink>.
|
|
</p>
|
|
|
|
<H2 id="liability">No warranty & limitation of liability</H2>
|
|
<p>
|
|
To the maximum extent permitted by law, the service is provided without warranty, and the
|
|
operator is not liable for any indirect, incidental, or consequential damages, or for any
|
|
loss of data, arising from your use of Siftlode. Your sole remedy if you are dissatisfied is
|
|
to stop using the service and revoke its access to your account.
|
|
</p>
|
|
|
|
<H2 id="law">Governing law</H2>
|
|
<p>
|
|
These Terms are governed by the laws of Hungary and applicable European Union law, without
|
|
regard to conflict-of-law rules.
|
|
</p>
|
|
|
|
<H2 id="changes">Changes</H2>
|
|
<p>
|
|
We may update these Terms; the "Last updated" date above reflects the latest version.
|
|
Continued use after a change constitutes acceptance.
|
|
</p>
|
|
|
|
<H2 id="contact">Contact</H2>
|
|
<p>
|
|
Questions: contact <ContactEmail />.
|
|
</p>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export function TermsHu() {
|
|
return (
|
|
<>
|
|
<p>
|
|
A Siftlode egy magánszemély által üzemeltetett, nem kereskedelmi célú személyes projekt
|
|
Magyarországon. A saját YouTube-feliratkozásaid szűrhető nézetét nyújtja. A Siftlode
|
|
elérésével vagy használatával elfogadod ezeket a feltételeket. Ha nem fogadod el őket, ne
|
|
használd a szolgáltatást.
|
|
</p>
|
|
|
|
<H2 id="service">A szolgáltatás</H2>
|
|
<p>
|
|
A Siftlode csak meghívással, ingyenesen és „ahogy van” alapon érhető el, mindenféle
|
|
szavatosság nélkül. Hobbiprojekt: a funkciói változhatnak, és a szolgáltatás bármikor,
|
|
előzetes értesítés nélkül lelassulhat, szünetelhet vagy megszűnhet.
|
|
</p>
|
|
|
|
<H2 id="account">A fiókod és az elfogadható használat</H2>
|
|
<p>
|
|
Google-fiókkal vagy e-mail-címmel és jelszóval jelentkezel be, és csak beengedett
|
|
e-mail-címmel használhatod a Siftlode-ot. Vállalod, hogy a szolgáltatást jogszerűen
|
|
használod, nem éled vissza, nem zavarod meg, nem próbálod ki a gyenge pontjait és nem
|
|
terheled túl, és nem próbálsz más felhasználók adataihoz hozzáférni. A hozzáférést saját
|
|
belátásunk szerint felfüggeszthetjük vagy visszavonhatjuk, például visszaélés esetén.
|
|
</p>
|
|
|
|
<H2 id="third-party">Harmadik fél szolgáltatásai</H2>
|
|
<p>
|
|
A Siftlode a YouTube API szolgáltatásait használja. A Siftlode használatával elfogadod a{" "}
|
|
<LegalLink href="https://www.youtube.com/t/terms">
|
|
YouTube Általános Szerződési Feltételeit
|
|
</LegalLink>
|
|
. Az adataidat az{" "}
|
|
<a href="/privacy" className="text-accent hover:underline">
|
|
Adatvédelmi irányelvekben
|
|
</a>{" "}
|
|
leírtak szerint kezeljük, a Google-adatokra pedig a{" "}
|
|
<LegalLink href="https://policies.google.com/privacy">
|
|
Google Adatvédelmi irányelvei
|
|
</LegalLink>{" "}
|
|
is vonatkoznak.
|
|
</p>
|
|
|
|
<H2 id="liability">Szavatosság kizárása és a felelősség korlátozása</H2>
|
|
<p>
|
|
A jogszabályok által megengedett legteljesebb mértékben a szolgáltatás szavatosság nélkül
|
|
érhető el, és az üzemeltető nem felel a Siftlode használatából eredő közvetett, járulékos
|
|
vagy következményes károkért, sem adatvesztésért. Ha elégedetlen vagy, az egyetlen
|
|
lehetőséged, hogy abbahagyod a szolgáltatás használatát, és visszavonod a hozzáférését a
|
|
fiókodhoz.
|
|
</p>
|
|
|
|
<H2 id="law">Irányadó jog</H2>
|
|
<p>
|
|
Ezekre a feltételekre Magyarország jogszabályai és az alkalmazandó európai uniós jog
|
|
irányadók, a kollíziós szabályok figyelmen kívül hagyásával.
|
|
</p>
|
|
|
|
<H2 id="changes">Változások</H2>
|
|
<p>
|
|
Ezeket a feltételeket módosíthatjuk; a fenti „Utoljára frissítve” dátum a legfrissebb
|
|
változatot jelzi. Ha a változás után is használod a szolgáltatást, azzal elfogadod.
|
|
</p>
|
|
|
|
<H2 id="contact">Kapcsolat</H2>
|
|
<p>
|
|
Kérdés esetén: <ContactEmail />.
|
|
</p>
|
|
</>
|
|
);
|
|
}
|