diff --git a/electron/usage-ping.test.ts b/electron/usage-ping.test.ts index 9daa1b900..7b7358b43 100644 --- a/electron/usage-ping.test.ts +++ b/electron/usage-ping.test.ts @@ -1,8 +1,9 @@ -import { mkdtempSync, rmSync } from "node:fs"; +import { mkdtempSync, rmSync, statSync, writeFileSync } from "node:fs"; import os from "node:os"; import path from "node:path"; import { afterEach, describe, expect, it } from "vitest"; import { + installWeekFrom, loadUsagePingState, periodKeys, planUsagePing, @@ -25,7 +26,13 @@ function tmp(): string { return dir; } -const fresh: UsagePingState = { enabled: true, day: null, week: null, month: null }; +const fresh: UsagePingState = { + enabled: true, + day: null, + week: null, + month: null, + installWeek: null, +}; const facts: UsagePingFacts = { version: "2.0.0", os: "win32", @@ -95,7 +102,9 @@ describe("sendUsagePing", () => { await sendUsagePing(dir, facts, {}, new Date("2026-10-15T09:00:00Z"), ok); expect(bodies).toHaveLength(2); expect(bodies[0].distinct_id).not.toBe(bodies[1].distinct_id); - expect(bodies[0].properties).toEqual({ + const { install_week, ...rest } = bodies[0].properties as Record; + expect(install_week).toMatch(/^\d{4}-W\d{2}$/); + expect(rest).toEqual({ $process_person_profile: false, $geoip_disable: true, version: "2.0.0", @@ -106,6 +115,12 @@ describe("sendUsagePing", () => { first_this_week: true, first_this_month: true, }); + // Nothing ID-like rides along: no UUID, no hash, no long opaque token. + for (const body of bodies) + for (const value of Object.values(body.properties as Record)) + expect(String(value)).not.toMatch( + /[0-9a-f]{8}-[0-9a-f]{4}|[0-9a-f]{16,}|[A-Za-z0-9+/=]{24,}/i, + ); }); it("keeps the checkbox off when it is unticked while a ping is in flight", async () => { @@ -117,3 +132,67 @@ describe("sendUsagePing", () => { expect(loadUsagePingState(dir)).toMatchObject({ enabled: false, day: "2026-10-14" }); }); }); + +describe("install week", () => { + it("dates the install by the userData directory's birthtime, never its mtime", () => { + expect(installWeekFrom({ birthtimeMs: Date.parse("2025-05-07T12:00:00Z") })).toBe("2025-W19"); + // Filesystems that record no birthtime report 0; mtime would move, so no fallback. + const mtimeMs = Date.parse("2025-05-07T12:00:00Z"); + for (const birthtimeMs of [0, Number.NaN]) { + const stats = { birthtimeMs, mtimeMs }; + expect(installWeekFrom(stats)).toBe("unknown"); + } + // Positive but past the last representable Date. + expect(installWeekFrom({ birthtimeMs: 8.64e15 + 1 })).toBe("unknown"); + expect(installWeekFrom({ birthtimeMs: Number.POSITIVE_INFINITY })).toBe("unknown"); + // Representable, but a five-digit year the loader would reject. + expect(installWeekFrom({ birthtimeMs: Date.UTC(10000, 0, 5) })).toBe("unknown"); + expect(installWeekFrom(null)).toBe("unknown"); + }); + + const sent = async (dir: string, now: Date) => { + let properties: Record = {}; + await sendUsagePing(dir, facts, {}, now, async (_url, init) => { + properties = JSON.parse(String(init.body)).properties; + return { ok: true }; + }); + return properties.install_week; + }; + + it("gives a fresh install the current week, then keeps it on later pings", async () => { + const dir = tmp(); + // From the directory, not the clock, so a UTC Monday between the two cannot flake. + const thisWeek = installWeekFrom(statSync(dir)); + expect(await sent(dir, new Date())).toBe(thisWeek); + expect(loadUsagePingState(dir).installWeek).toBe(thisWeek); + expect(await sent(dir, new Date(Date.now() + 40 * 86_400_000))).toBe(thisWeek); + }); + + it('keeps the week an existing install already has, "unknown" included', async () => { + for (const installWeek of ["2025-W19", "unknown"]) { + const dir = tmp(); + const state = { ...fresh, ...periodKeys(new Date("2026-10-13T09:00:00Z")), installWeek }; + writeFileSync(path.join(dir, "usage-ping.json"), JSON.stringify(state)); + expect(await sent(dir, wednesday)).toBe(installWeek); + expect(loadUsagePingState(dir).installWeek).toBe(installWeek); + } + }); + + it("re-derives a stored week that is not a valid ISO week", async () => { + for (const installWeek of ["2026-W54", "2026-W00", "abc", "2026-W4"]) { + const dir = tmp(); + writeFileSync(path.join(dir, "usage-ping.json"), JSON.stringify({ ...fresh, installWeek })); + expect(loadUsagePingState(dir).installWeek).toBeNull(); + } + const dir = tmp(); + writeFileSync( + path.join(dir, "usage-ping.json"), + JSON.stringify({ ...fresh, installWeek: "2026-W53" }), + ); + expect(loadUsagePingState(dir).installWeek).toBe("2026-W53"); + }); + + it('sends "unknown" when the directory cannot be dated', async () => { + expect(await sent(path.join(tmp(), "gone"), wednesday)).toBe("unknown"); + }); +}); diff --git a/electron/usage-ping.ts b/electron/usage-ping.ts index 9f231a942..0f406efa6 100644 --- a/electron/usage-ping.ts +++ b/electron/usage-ping.ts @@ -5,12 +5,14 @@ // PostHog builds no person from it. Weekly and monthly actives are counted the way Brave // counts them, without an ID: the app remembers locally when it last pinged and says // whether this is its first ping of the week and of the month, so WAU and MAU are plain -// counts of those flags. GeoIP is off on every event, and the PostHog project discards IP -// addresses. The website FAQ ("Does OpenScreen work offline?") lists this payload; keep it -// in step. +// counts of those flags. To measure retention without an ID either, each ping also carries +// the ISO week the app was installed: a cohort shared by every install of that week, never +// finer than a week, and not an identifier. GeoIP is off on every event, and the PostHog +// project discards IP addresses. The website FAQ ("Does OpenScreen work offline?") and the +// privacy policy list this payload; keep them in step. import { randomUUID } from "node:crypto"; -import { readFileSync, writeFileSync } from "node:fs"; +import { readFileSync, statSync, writeFileSync } from "node:fs"; import path from "node:path"; import type { InstallChannel } from "./install-channel"; @@ -27,6 +29,8 @@ export interface UsagePingState { day: string | null; week: string | null; month: string | null; + /** ISO week of the installation, or "unknown" when it could not be dated. */ + installWeek: string | null; } export interface UsagePingFacts { @@ -39,7 +43,13 @@ export interface UsagePingFacts { surface: "app" | "mcp"; } -const DEFAULT_STATE: UsagePingState = { enabled: true, day: null, week: null, month: null }; +const DEFAULT_STATE: UsagePingState = { + enabled: true, + day: null, + week: null, + month: null, + installWeek: null, +}; /** An environment flag counts as set unless it is empty, "0" or "false": `CI=false` is off. */ const isSet = (value: string | undefined) => @@ -65,6 +75,31 @@ export function periodKeys(now: Date): { day: string; week: string; month: strin }; } +/** "2026-W44" (weeks 01 to 53) or "unknown"; anything else is re-derived. */ +const INSTALL_WEEK = /^(\d{4}-W(0[1-9]|[1-4]\d|5[0-3])|unknown)$/; + +/** The install week, dated by when the userData directory was created. Electron creates it + * on first launch, so a fresh install gets the current week, and an install older than + * this field, even one that never pinged, gets its real one. Where the filesystem records + * no birthtime (0), the week is "unknown": mtime moves whenever the folder changes, and the + * week is kept for good once sent. */ +export function installWeekFrom(stats: { birthtimeMs: number } | null): string { + const date = new Date(stats?.birthtimeMs ?? 0); + // Beyond ±8.64e15 ms a Date is invalid, and toISOString would throw outside any try. + if (!(date.getTime() > 0)) return "unknown"; + // A week the loader would reject (year 10000 and on) would be re-derived on every ping. + const { week } = periodKeys(date); + return INSTALL_WEEK.test(week) ? week : "unknown"; +} + +function statOrNull(dir: string) { + try { + return statSync(dir); + } catch { + return null; + } +} + /** The ping to send now, or null. Pure, so the whole matrix pins from any platform. */ export function planUsagePing( state: UsagePingState, @@ -95,6 +130,10 @@ export function loadUsagePingState(userData: string): UsagePingState { day: text(raw.day), week: text(raw.week), month: text(raw.month), + installWeek: + typeof raw.installWeek === "string" && INSTALL_WEEK.test(raw.installWeek) + ? raw.installWeek + : null, }; } catch { return { ...DEFAULT_STATE }; @@ -127,6 +166,8 @@ export async function sendUsagePing( const state = loadUsagePingState(userData); const plan = planUsagePing(state, facts.channel, env, now); if (!plan) return; + // Kept once known, "unknown" included, so an install never changes cohort. + const installWeek = state.installWeek ?? installWeekFrom(statOrNull(userData)); try { const response = await fetchImpl(CAPTURE_URL, { method: "POST", @@ -145,13 +186,18 @@ export async function sendUsagePing( surface: facts.surface, first_this_week: plan.firstThisWeek, first_this_month: plan.firstThisMonth, + install_week: installWeek, }, }), signal: AbortSignal.timeout(15_000), }); // Re-read rather than reuse `state`: the tray checkbox may have changed while this ran. if (response.ok) - saveUsagePingState(userData, { ...loadUsagePingState(userData), ...plan.keys }); + saveUsagePingState(userData, { + ...loadUsagePingState(userData), + ...plan.keys, + installWeek, + }); } catch { // Offline, blocked or timed out: the next attempt tries again. } diff --git a/website/docs/faq.md b/website/docs/faq.md index d5894ce8e..e73ab453d 100644 --- a/website/docs/faq.md +++ b/website/docs/faq.md @@ -36,7 +36,7 @@ OpenScreen is a free, MIT-licensed screen recorder and video editor for Windows, - **github.com, once per language.** On a machine with a GPU, the first English or French transcription also downloads the model that re-times each word: about 110 MB for English, 350 MB for French. - **github.com and api.github.com.** Builds that update themselves check for a new release a minute after launch, then every six hours, and when you ask. They download it in the background and show an update button; nothing is installed until you click it. - **fonts.googleapis.com, only for a font added in 1.x.** A custom annotation font added in an earlier version is still fetched at launch, though 2.x no longer draws it. -- **PostHog, once a day.** An anonymous count of active installs, sent to PostHog's EU servers. It holds the app version, the operating system, the processor architecture, how the app was installed, whether it was used directly or through its MCP server by an AI agent, and whether it is the first count of the week and of the month. That is all: no installation identifier (each count gets a new random ID), no IP address kept, nothing about your recordings. Untick **Send Anonymous Usage Count** in the tray menu to turn it off, or set `DO_NOT_TRACK=1`. +- **PostHog, once a day.** An anonymous count of active installs, sent to PostHog's EU servers. It holds the app version, the operating system, the processor architecture, how the app was installed, whether it was used directly or through its MCP server by an AI agent, whether it is the first count of the week and of the month, and the week the app was installed. That is all: no installation identifier (each count gets a new random ID), no IP address kept, nothing about your recordings. Untick **Send Anonymous Usage Count** in the tray menu to turn it off, or set `DO_NOT_TRACK=1`. - **Your AI provider, only if you connect one.** Chat editing sends your messages and the project data it reads, such as the timeline and transcript. Caption translation sends the caption text. Both stay off until you connect a provider. See [AI editing](./ai-editing.md). ## Does OpenScreen collect analytics or crash reports? @@ -44,7 +44,7 @@ OpenScreen is a free, MIT-licensed screen recorder and video editor for Windows, **One anonymous daily count, nothing else.** The app contains no analytics or crash-reporting SDK, and nothing records what you do in it. - Once a day, the app reports that one installation was active. [Does OpenScreen work offline?](#does-openscreen-work-offline) lists exactly what that count holds and how to turn it off. -- The count carries no installation identifier: each one gets a new random ID, and nothing else in it is specific to your computer. +- The count carries no installation identifier: each one gets a new random ID, and nothing else in it is specific to your computer. The install week it carries, such as `2026-W44`, is the week of installation, the same for everyone who installed that week, not an identifier. - AI provider keys are stored encrypted with Electron's `safeStorage`. If encryption is unavailable, the key is not saved. ## Is OpenScreen safe to install? diff --git a/website/i18n/de/docusaurus-plugin-content-docs/current/faq.md b/website/i18n/de/docusaurus-plugin-content-docs/current/faq.md index 8781c949a..268e81e37 100644 --- a/website/i18n/de/docusaurus-plugin-content-docs/current/faq.md +++ b/website/i18n/de/docusaurus-plugin-content-docs/current/faq.md @@ -36,7 +36,7 @@ OpenScreen ist ein kostenloser Bildschirmrekorder und Videoeditor unter MIT-Lize - **github.com, einmal pro Sprache.** Auf einem Rechner mit GPU lädt die erste englische oder französische Transkription zusätzlich das Modell herunter, das jedes Wort neu zeitlich ausrichtet: etwa 110 MB für Englisch, 350 MB für Französisch. - **github.com und api.github.com.** Builds, die sich selbst aktualisieren, suchen eine Minute nach dem Start, dann alle sechs Stunden und auf deine Anfrage nach einer neuen Version. Sie laden sie im Hintergrund herunter und zeigen eine Update-Schaltfläche; installiert wird erst, wenn du darauf klickst. - **fonts.googleapis.com, nur für eine in 1.x hinzugefügte Schrift.** Eine eigene Schrift für Annotationen, die in einer früheren Version hinzugefügt wurde, wird beim Start weiterhin geladen, obwohl 2.x sie nicht mehr zeichnet. -- **PostHog, einmal täglich.** Eine anonyme Zählung aktiver Installationen, gesendet an die EU-Server von PostHog. Sie enthält die App-Version, das Betriebssystem, die Prozessorarchitektur, die Art der Installation, ob die App direkt oder über ihren MCP-Server von einem KI-Agenten genutzt wurde, und ob es die erste Zählung der Woche und des Monats ist. Mehr nicht: keine Installationskennung (jede Zählung erhält eine neue Zufalls-ID), keine gespeicherte IP-Adresse, nichts über deine Aufnahmen. Entferne im Menü des Symbols im Infobereich das Häkchen bei **Anonyme Nutzungszählung senden**, um sie abzuschalten, oder setze `DO_NOT_TRACK=1`. +- **PostHog, einmal täglich.** Eine anonyme Zählung aktiver Installationen, gesendet an die EU-Server von PostHog. Sie enthält die App-Version, das Betriebssystem, die Prozessorarchitektur, die Art der Installation, ob die App direkt oder über ihren MCP-Server von einem KI-Agenten genutzt wurde, ob es die erste Zählung der Woche und des Monats ist und in welcher Woche die App installiert wurde. Mehr nicht: keine Installationskennung (jede Zählung erhält eine neue Zufalls-ID), keine gespeicherte IP-Adresse, nichts über deine Aufnahmen. Entferne im Menü des Symbols im Infobereich das Häkchen bei **Anonyme Nutzungszählung senden**, um sie abzuschalten, oder setze `DO_NOT_TRACK=1`. - **Dein KI-Anbieter, nur wenn du einen verbindest.** Die Chat-Bearbeitung sendet deine Nachrichten und die Projektdaten, die sie liest, etwa Zeitleiste und Transkript. Die Untertitelübersetzung sendet den Untertiteltext. Beides bleibt aus, bis du einen Anbieter verbindest. Siehe [KI-Bearbeitung](./ai-editing.md). ## Sammelt OpenScreen Analysedaten oder Absturzberichte? {#does-openscreen-collect-analytics-or-crash-reports} @@ -44,7 +44,7 @@ OpenScreen ist ein kostenloser Bildschirmrekorder und Videoeditor unter MIT-Lize **Eine anonyme tägliche Zählung, sonst nichts.** Die App enthält kein SDK für Analysen oder Absturzberichte, und nichts zeichnet auf, was du in ihr tust. - Einmal täglich meldet die App, dass eine Installation aktiv war. [Funktioniert OpenScreen offline?](#does-openscreen-work-offline) listet genau auf, was diese Zählung enthält und wie du sie abschaltest. -- Die Zählung trägt keine Installationskennung: Jede erhält eine neue Zufalls-ID, und nichts anderes darin ist spezifisch für deinen Computer. +- Die Zählung trägt keine Installationskennung: Jede erhält eine neue Zufalls-ID, und nichts anderes darin ist spezifisch für deinen Computer. Die Installationswoche darin, etwa `2026-W44`, ist die Woche der Installation, für alle gleich, die in dieser Woche installiert haben, und keine Kennung. - API-Schlüssel für KI-Anbieter werden verschlüsselt mit Electrons `safeStorage` gespeichert. Ist keine Verschlüsselung verfügbar, wird der Schlüssel nicht gespeichert. ## Ist die Installation von OpenScreen sicher? {#is-openscreen-safe-to-install} diff --git a/website/i18n/de/docusaurus-plugin-content-pages/privacy.mdx b/website/i18n/de/docusaurus-plugin-content-pages/privacy.mdx index 9ac0a7431..f18cf14d4 100644 --- a/website/i18n/de/docusaurus-plugin-content-pages/privacy.mdx +++ b/website/i18n/de/docusaurus-plugin-content-pages/privacy.mdx @@ -5,7 +5,7 @@ description: "Was die Desktop-App, die Website, der MCP-Server und das Agent-Plu # Datenschutzerklärung -Zuletzt aktualisiert: 19. Oktober 2026. +Zuletzt aktualisiert: 4. November 2026. OpenScreen ist ein kostenloser Open-Source-Bildschirmrekorder und Videoeditor. Es hat kein Konto und keine eigenen Server: Deine Aufnahmen, Projekte und Transkripte werden auf deinem Computer gespeichert, und keine Funktion lädt eine Aufnahme hoch. Diese Seite listet alles auf, was deinen Rechner tatsächlich verlässt, von der Desktop-App, dieser Website, dem MCP-Server und dem Agent-Plugin, einschließlich der Projektdaten, die die KI-Funktionen an den Anbieter senden, den du wählst. @@ -22,9 +22,10 @@ Höchstens einmal täglich meldet die App an PostHog, auf dessen EU-Servern, das - die App-Version, das Betriebssystem und die Prozessorarchitektur; - wie die App installiert wurde (Installer, Microsoft Store, AppImage, Flatpak und so weiter); - ob die App direkt oder über ihren MCP-Server von einem KI-Agenten genutzt wurde; -- ob es die erste Zählung der Installation in der Woche und im Monat ist. +- ob es die erste Zählung der Installation in der Woche und im Monat ist; +- die Woche, in der die App installiert wurde, etwa `2026-W44`, oder `unknown`, wenn sie sich nicht bestimmen lässt. Jede Installation aus dieser Woche sendet denselben Wert: Es ist die Woche der Installation, keine Kennung. -Sonst enthält sie nichts: keine Installationskennung (jede Zählung erhält eine neue Zufalls-ID), keinen Namen, keine Dateinamen, nichts über deine Aufnahmen. Die Standortbestimmung ist abgeschaltet, und das PostHog-Projekt ist so eingestellt, dass IP-Adressen verworfen werden. Der Zweck ist zu wissen, wie viele Menschen OpenScreen nutzen und auf welchen Systemen; das ist das berechtigte Interesse des Projekts. +Sonst enthält sie nichts: keine Installationskennung (jede Zählung erhält eine neue Zufalls-ID), keinen Namen, keine Dateinamen, nichts über deine Aufnahmen. Die Standortbestimmung ist abgeschaltet, und das PostHog-Projekt ist so eingestellt, dass IP-Adressen verworfen werden. Der Zweck ist zu wissen, wie viele Menschen OpenScreen nutzen, auf welchen Systemen und wie viele es Wochen nach der Installation noch nutzen; das ist das berechtigte Interesse des Projekts. Um sie abzuschalten, entferne im Menü des Symbols im Infobereich das Häkchen bei **Anonyme Nutzungszählung senden**, oder setze die Umgebungsvariable `DO_NOT_TRACK=1`. Entwicklungs-Builds und CI-Läufe senden sie nie. diff --git a/website/i18n/es/docusaurus-plugin-content-docs/current/faq.md b/website/i18n/es/docusaurus-plugin-content-docs/current/faq.md index b6301d94b..41f932619 100644 --- a/website/i18n/es/docusaurus-plugin-content-docs/current/faq.md +++ b/website/i18n/es/docusaurus-plugin-content-docs/current/faq.md @@ -36,7 +36,7 @@ OpenScreen es un grabador de pantalla y editor de video gratis, con licencia MIT - **github.com, una vez por idioma.** En un equipo con GPU, la primera transcripción en inglés o en francés también descarga el modelo que vuelve a sincronizar cada palabra: unos 110 MB para el inglés, 350 MB para el francés. - **github.com y api.github.com.** Las compilaciones que se actualizan solas buscan una nueva versión un minuto después de abrirse, luego cada seis horas, y cuando tú lo pides. La descargan en segundo plano y muestran un botón de actualización; no se instala nada hasta que haces clic en él. - **fonts.googleapis.com, solo para una fuente añadida en 1.x.** Una fuente personalizada para anotaciones añadida en una versión anterior se sigue descargando al iniciar, aunque la 2.x ya no la dibuja. -- **PostHog, una vez al día.** Un recuento anónimo de instalaciones activas, enviado a los servidores de PostHog en la UE. Contiene la versión de la app, el sistema operativo, la arquitectura del procesador, cómo se instaló la app, si se usó directamente o a través de su servidor MCP por un agente de IA, y si es el primer recuento de la semana y del mes. Nada más: ningún identificador de instalación (cada recuento recibe un ID aleatorio nuevo), ninguna dirección IP conservada, nada sobre tus grabaciones. Desmarca **Enviar recuento de uso anónimo** en el menú de la bandeja para desactivarlo, o define `DO_NOT_TRACK=1`. +- **PostHog, una vez al día.** Un recuento anónimo de instalaciones activas, enviado a los servidores de PostHog en la UE. Contiene la versión de la app, el sistema operativo, la arquitectura del procesador, cómo se instaló la app, si se usó directamente o a través de su servidor MCP por un agente de IA, si es el primer recuento de la semana y del mes, y la semana en que se instaló la app. Nada más: ningún identificador de instalación (cada recuento recibe un ID aleatorio nuevo), ninguna dirección IP conservada, nada sobre tus grabaciones. Desmarca **Enviar recuento de uso anónimo** en el menú de la bandeja para desactivarlo, o define `DO_NOT_TRACK=1`. - **Tu proveedor de IA, solo si conectas uno.** La edición por chat envía tus mensajes y los datos del proyecto que lee, como la línea de tiempo y la transcripción. La traducción de subtítulos envía el texto de los subtítulos. Ambas permanecen desactivadas hasta que conectas un proveedor. Consulta [Edición con IA](./ai-editing.md). ## ¿OpenScreen recopila analíticas o informes de fallos? {#does-openscreen-collect-analytics-or-crash-reports} @@ -44,7 +44,7 @@ OpenScreen es un grabador de pantalla y editor de video gratis, con licencia MIT **Un recuento diario anónimo, nada más.** La app no contiene ningún SDK de analíticas ni de informes de fallos, y nada registra lo que haces en ella. - Una vez al día, la app informa de que una instalación estuvo activa. [¿OpenScreen funciona sin conexión?](#does-openscreen-work-offline) detalla exactamente qué contiene ese recuento y cómo desactivarlo. -- El recuento no lleva ningún identificador de instalación: cada uno recibe un ID aleatorio nuevo, y nada más en él es propio de tu equipo. +- El recuento no lleva ningún identificador de instalación: cada uno recibe un ID aleatorio nuevo, y nada más en él es propio de tu equipo. La semana de instalación que lleva, como `2026-W44`, es la semana en que se instaló la app, la misma para todos los que la instalaron esa semana, no un identificador. - Las claves de los proveedores de IA se guardan cifradas con `safeStorage` de Electron. Si el cifrado no está disponible, la clave no se guarda. ## ¿Es seguro instalar OpenScreen? {#is-openscreen-safe-to-install} diff --git a/website/i18n/es/docusaurus-plugin-content-pages/privacy.mdx b/website/i18n/es/docusaurus-plugin-content-pages/privacy.mdx index 5bca5f65c..b2e83b94d 100644 --- a/website/i18n/es/docusaurus-plugin-content-pages/privacy.mdx +++ b/website/i18n/es/docusaurus-plugin-content-pages/privacy.mdx @@ -5,7 +5,7 @@ description: "Qué envían fuera de tu equipo la app de escritorio, el sitio web # Política de privacidad -Última actualización: 19 de octubre de 2026. +Última actualización: 4 de noviembre de 2026. OpenScreen es un grabador de pantalla y editor de vídeo gratuito y de código abierto. No tiene cuenta ni servidores propios: tus grabaciones, proyectos y transcripciones se guardan en tu equipo, y ninguna función sube una grabación. Esta página enumera todo lo que sí sale de tu equipo, desde la app de escritorio, este sitio web, el servidor MCP y el plugin para agentes, incluidos los datos del proyecto que las funciones de IA envían al proveedor que elijas. @@ -22,9 +22,10 @@ Como mucho una vez al día, la app informa a PostHog, en sus servidores de la UE - la versión de la app, el sistema operativo y la arquitectura del procesador; - cómo se instaló la app (instalador, Microsoft Store, AppImage, Flatpak, etc.); - si la app se usó directamente o a través de su servidor MCP por un agente de IA; -- si es el primer recuento de la instalación en la semana y en el mes. +- si es el primer recuento de la instalación en la semana y en el mes; +- la semana en que se instaló la app, como `2026-W44`, o `unknown` si no se puede fechar. Todas las instalaciones de esa semana envían el mismo valor: es la semana de instalación, no un identificador. -No contiene nada más: ningún identificador de instalación (cada recuento recibe un ID aleatorio nuevo), ningún nombre, ningún nombre de archivo, nada sobre tus grabaciones. La geolocalización está desactivada, y el proyecto de PostHog está configurado para descartar las direcciones IP. La finalidad es saber cuántas personas usan OpenScreen y en qué sistemas, lo que constituye el interés legítimo del proyecto. +No contiene nada más: ningún identificador de instalación (cada recuento recibe un ID aleatorio nuevo), ningún nombre, ningún nombre de archivo, nada sobre tus grabaciones. La geolocalización está desactivada, y el proyecto de PostHog está configurado para descartar las direcciones IP. La finalidad es saber cuántas personas usan OpenScreen, en qué sistemas y cuántas lo siguen usando semanas después de instalarlo, lo que constituye el interés legítimo del proyecto. Para desactivarlo, desmarca **Enviar recuento de uso anónimo** en el menú de la bandeja, o define la variable de entorno `DO_NOT_TRACK=1`. Las compilaciones de desarrollo y las ejecuciones de CI nunca lo envían. diff --git a/website/i18n/fr/docusaurus-plugin-content-docs/current/faq.md b/website/i18n/fr/docusaurus-plugin-content-docs/current/faq.md index f08d54095..c97ec63be 100644 --- a/website/i18n/fr/docusaurus-plugin-content-docs/current/faq.md +++ b/website/i18n/fr/docusaurus-plugin-content-docs/current/faq.md @@ -36,7 +36,7 @@ OpenScreen est un enregistreur d'écran et éditeur vidéo gratuit, sous licence - **github.com, une fois par langue.** Sur une machine dotée d'un GPU, la première transcription en anglais ou en français télécharge aussi le modèle qui recale chaque mot dans le temps : environ 110 Mo pour l'anglais, 350 Mo pour le français. - **github.com et api.github.com.** Les versions qui se mettent à jour d'elles-mêmes vérifient la présence d'une nouvelle version une minute après le lancement, puis toutes les six heures, et quand vous le demandez. Elles la téléchargent en arrière-plan et affichent un bouton de mise à jour ; rien n'est installé tant que vous n'avez pas cliqué dessus. - **fonts.googleapis.com, seulement pour une police ajoutée en 1.x.** Une police d'annotation personnalisée ajoutée dans une version précédente est encore téléchargée au lancement, bien que la 2.x ne l'affiche plus. -- **PostHog, une fois par jour.** Un comptage anonyme des installations actives, envoyé aux serveurs de PostHog dans l'UE. Il contient la version de l'application, le système d'exploitation, l'architecture du processeur, le mode d'installation de l'application, si elle a servi directement ou à un agent IA via son serveur MCP, et s'il s'agit du premier comptage de la semaine et du mois. C'est tout : aucun identifiant d'installation (chaque comptage reçoit un nouvel identifiant aléatoire), aucune adresse IP conservée, rien sur vos enregistrements. Décochez **Envoyer le comptage d'utilisation anonyme** dans le menu de l'icône de la zone de notification pour le désactiver, ou définissez `DO_NOT_TRACK=1`. +- **PostHog, une fois par jour.** Un comptage anonyme des installations actives, envoyé aux serveurs de PostHog dans l'UE. Il contient la version de l'application, le système d'exploitation, l'architecture du processeur, le mode d'installation de l'application, si elle a servi directement ou à un agent IA via son serveur MCP, s'il s'agit du premier comptage de la semaine et du mois, et la semaine d'installation de l'application. C'est tout : aucun identifiant d'installation (chaque comptage reçoit un nouvel identifiant aléatoire), aucune adresse IP conservée, rien sur vos enregistrements. Décochez **Envoyer le comptage d'utilisation anonyme** dans le menu de l'icône de la zone de notification pour le désactiver, ou définissez `DO_NOT_TRACK=1`. - **Votre fournisseur d'IA, seulement si vous en connectez un.** Le montage par chat envoie vos messages et les données du projet qu'il lit, comme la timeline et la transcription. La traduction des sous-titres envoie le texte des sous-titres. Les deux restent désactivés tant que vous n'avez pas connecté de fournisseur. Voir [Montage par IA](./ai-editing.md). ## OpenScreen collecte-t-il des statistiques d'usage ou des rapports de plantage ? {#does-openscreen-collect-analytics-or-crash-reports} @@ -44,7 +44,7 @@ OpenScreen est un enregistreur d'écran et éditeur vidéo gratuit, sous licence **Un comptage quotidien anonyme, rien d'autre.** L'application ne contient aucun SDK de statistiques d'usage ni de rapport de plantage, et rien n'enregistre ce que vous y faites. - Une fois par jour, l'application signale qu'une installation a été active. [OpenScreen fonctionne-t-il hors ligne ?](#does-openscreen-work-offline) détaille exactement ce que contient ce comptage et comment le désactiver. -- Le comptage ne porte aucun identifiant d'installation : chacun reçoit un nouvel identifiant aléatoire, et rien d'autre n'y est propre à votre ordinateur. +- Le comptage ne porte aucun identifiant d'installation : chacun reçoit un nouvel identifiant aléatoire, et rien d'autre n'y est propre à votre ordinateur. La semaine d'installation qu'il porte, par exemple `2026-W44`, est la semaine où l'application a été installée, la même pour tous ceux qui l'ont installée cette semaine-là, et non un identifiant. - Les clés des fournisseurs d'IA sont stockées chiffrées avec `safeStorage` d'Electron. Si le chiffrement n'est pas disponible, la clé n'est pas enregistrée. ## Peut-on installer OpenScreen en toute sécurité ? {#is-openscreen-safe-to-install} diff --git a/website/i18n/fr/docusaurus-plugin-content-pages/privacy.mdx b/website/i18n/fr/docusaurus-plugin-content-pages/privacy.mdx index 4d9a14469..48f2f7614 100644 --- a/website/i18n/fr/docusaurus-plugin-content-pages/privacy.mdx +++ b/website/i18n/fr/docusaurus-plugin-content-pages/privacy.mdx @@ -5,7 +5,7 @@ description: "Ce que l'application de bureau, le site web, le serveur MCP et le # Politique de confidentialité -Dernière mise à jour : 19 octobre 2026. +Dernière mise à jour : 4 novembre 2026. OpenScreen est un enregistreur d'écran et éditeur vidéo gratuit et open source. Il n'a ni compte ni serveur à lui : vos enregistrements, projets et transcriptions sont stockés sur votre ordinateur, et aucune fonction ne met un enregistrement en ligne. Cette page liste tout ce qui quitte bel et bien votre machine, depuis l'application de bureau, ce site web, le serveur MCP et le plugin pour agents, y compris les données de projet que les fonctions d'IA envoient au fournisseur que vous choisissez. @@ -22,9 +22,10 @@ Une fois par jour au plus, l'application signale à PostHog, sur ses serveurs da - la version de l'application, le système d'exploitation et l'architecture du processeur ; - le mode d'installation de l'application (programme d'installation, Microsoft Store, AppImage, Flatpak, etc.) ; - si l'application a servi directement ou à un agent IA via son serveur MCP ; -- s'il s'agit du premier comptage de la semaine et du mois pour cette installation. +- s'il s'agit du premier comptage de la semaine et du mois pour cette installation ; +- la semaine d'installation de l'application, par exemple `2026-W44`, ou `unknown` quand elle ne peut pas être datée. Toutes les installations de cette semaine envoient la même valeur : c'est la semaine d'installation, pas un identifiant. -Il ne contient rien d'autre : aucun identifiant d'installation (chaque comptage reçoit un nouvel identifiant aléatoire), aucun nom, aucun nom de fichier, rien sur vos enregistrements. La géolocalisation est désactivée, et le projet PostHog est configuré pour ne pas conserver les adresses IP. L'objectif est de savoir combien de personnes utilisent OpenScreen, et sur quels systèmes, ce qui relève de l'intérêt légitime du projet. +Il ne contient rien d'autre : aucun identifiant d'installation (chaque comptage reçoit un nouvel identifiant aléatoire), aucun nom, aucun nom de fichier, rien sur vos enregistrements. La géolocalisation est désactivée, et le projet PostHog est configuré pour ne pas conserver les adresses IP. L'objectif est de savoir combien de personnes utilisent OpenScreen, sur quels systèmes, et combien l'utilisent encore des semaines après l'avoir installé, ce qui relève de l'intérêt légitime du projet. Pour le désactiver, décochez **Envoyer le comptage d'utilisation anonyme** dans le menu de l'icône de la zone de notification, ou définissez la variable d'environnement `DO_NOT_TRACK=1`. Les builds de développement et les exécutions de CI ne l'envoient jamais. diff --git a/website/i18n/ja/docusaurus-plugin-content-docs/current/faq.md b/website/i18n/ja/docusaurus-plugin-content-docs/current/faq.md index 43a7dad22..81d4665c7 100644 --- a/website/i18n/ja/docusaurus-plugin-content-docs/current/faq.md +++ b/website/i18n/ja/docusaurus-plugin-content-docs/current/faq.md @@ -36,7 +36,7 @@ OpenScreen は、Windows、macOS、Linux に対応した、MIT ライセンス - **github.com(言語ごとに一度だけ)。** GPU を搭載したマシンでは、英語またはフランス語の最初の文字起こしで、各単語のタイミングを付け直すモデルもダウンロードします。英語は約 110 MB、フランス語は約 350 MB です。 - **github.com と api.github.com。** 自動でアップデートするビルドは、起動の 1 分後、その後は 6 時間ごと、そしてユーザーが求めたときに、新しいリリースを確認します。バックグラウンドでダウンロードしてアップデートボタンを表示し、ボタンをクリックするまでは何もインストールしません。 - **fonts.googleapis.com(1.x で追加したフォントのみ)。** 以前のバージョンで追加したカスタムの注釈フォントは、2.x では描画されませんが、起動時に引き続き読み込まれます。 -- **PostHog(1 日 1 回)。** アクティブなインストール数の匿名カウントで、PostHog の EU サーバーに送信されます。内容は、アプリのバージョン、OS、プロセッサのアーキテクチャ、アプリのインストール方法、アプリが直接使われたか AI エージェントが MCP サーバー経由で使ったか、そしてその週とその月で最初のカウントかどうかです。それ以外は何もありません。インストールを識別する ID はなく(カウントごとに新しいランダム ID が付きます)、IP アドレスは保持されず、録画に関する情報も一切含みません。無効にするには、トレイメニューの**匿名の利用カウントを送信**のチェックを外すか、`DO_NOT_TRACK=1` を設定します。 +- **PostHog(1 日 1 回)。** アクティブなインストール数の匿名カウントで、PostHog の EU サーバーに送信されます。内容は、アプリのバージョン、OS、プロセッサのアーキテクチャ、アプリのインストール方法、アプリが直接使われたか AI エージェントが MCP サーバー経由で使ったか、その週とその月で最初のカウントかどうか、そしてアプリをインストールした週です。それ以外は何もありません。インストールを識別する ID はなく(カウントごとに新しいランダム ID が付きます)、IP アドレスは保持されず、録画に関する情報も一切含みません。無効にするには、トレイメニューの**匿名の利用カウントを送信**のチェックを外すか、`DO_NOT_TRACK=1` を設定します。 - **AI プロバイダー(接続した場合のみ)。** チャット編集では、あなたのメッセージと、エージェントが読み取るプロジェクトのデータ(タイムラインや文字起こしなど)が送信されます。字幕の翻訳では、字幕のテキストが送信されます。どちらも、プロバイダーを接続するまではオフです。[AI 編集](./ai-editing.md)を参照してください。 ## OpenScreen は利用状況の分析データやクラッシュレポートを収集しますか? {#does-openscreen-collect-analytics-or-crash-reports} @@ -44,7 +44,7 @@ OpenScreen は、Windows、macOS、Linux に対応した、MIT ライセンス **1 日 1 回の匿名カウントだけで、ほかには何もありません。** アプリには、利用状況の分析やクラッシュレポートのための SDK は含まれておらず、アプリ内での操作を記録するものもありません。 - 1 日 1 回、アプリはインストールが 1 つアクティブだったことを報告します。このカウントの内容と無効にする方法は、[OpenScreen はオフラインで使えますか?](#does-openscreen-work-offline)に正確に記載しています。 -- カウントにはインストールを識別する ID がありません。カウントごとに新しいランダム ID が付き、それ以外にパソコン固有の情報は含まれません。 +- カウントにはインストールを識別する ID がありません。カウントごとに新しいランダム ID が付き、それ以外にパソコン固有の情報は含まれません。含まれるインストール週(`2026-W44` など)は、インストールした週そのものです。その週にインストールした全員で同じ値になり、識別子ではありません。 - AI プロバイダーのキーは、Electron の `safeStorage` で暗号化して保存されます。暗号化が利用できない場合、キーは保存されません。 ## OpenScreen は安全にインストールできますか? {#is-openscreen-safe-to-install} diff --git a/website/i18n/ja/docusaurus-plugin-content-pages/privacy.mdx b/website/i18n/ja/docusaurus-plugin-content-pages/privacy.mdx index 38e9547f6..894f9f99f 100644 --- a/website/i18n/ja/docusaurus-plugin-content-pages/privacy.mdx +++ b/website/i18n/ja/docusaurus-plugin-content-pages/privacy.mdx @@ -5,7 +5,7 @@ description: "OpenScreen のデスクトップアプリ、Web サイト、MCP # プライバシーポリシー -最終更新日:2026年10月19日 +最終更新日:2026年11月4日 OpenScreen は、無料でオープンソースの画面録画・動画編集ソフトです。アカウントも独自のサーバーもありません。録画、プロジェクト、文字起こしはお使いのパソコンに保存され、録画をアップロードする機能はありません。このページでは、デスクトップアプリ、この Web サイト、MCP サーバー、エージェントプラグインから、お使いのマシンの外に出るものをすべて記載します。AI 機能が、あなたの選んだプロバイダーに送信するプロジェクトのデータも含みます。 @@ -23,8 +23,9 @@ OpenScreen の保守者は Etienne Lescot で、ここに記載するデータ - アプリのインストール方法(インストーラー、Microsoft Store、AppImage、Flatpak など) - アプリが直接使われたか、AI エージェントが MCP サーバー経由で使ったか - そのインストールにとって、その週とその月で最初のカウントかどうか +- アプリをインストールした週(`2026-W44` など。日付を特定できない場合は `unknown`)。その週のインストールはすべて同じ値を送ります。これはインストールした週であり、識別子ではありません。 -それ以外は何も含みません。インストールを識別する ID はなく(カウントごとに新しいランダム ID が付きます)、名前も、ファイル名も、録画に関する情報も一切含みません。位置情報の取得はオフで、PostHog のプロジェクトは IP アドレスを破棄するよう設定されています。目的は、OpenScreen を何人が、どのシステムで使っているかを知ることで、これはプロジェクトの正当な利益にあたります。 +それ以外は何も含みません。インストールを識別する ID はなく(カウントごとに新しいランダム ID が付きます)、名前も、ファイル名も、録画に関する情報も一切含みません。位置情報の取得はオフで、PostHog のプロジェクトは IP アドレスを破棄するよう設定されています。目的は、OpenScreen を何人が、どのシステムで使っているか、そしてインストールから数週間後も何人が使い続けているかを知ることで、これはプロジェクトの正当な利益にあたります。 無効にするには、トレイメニューの**匿名の利用カウントを送信**のチェックを外すか、環境変数 `DO_NOT_TRACK=1` を設定します。開発ビルドと CI の実行では一切送信されません。 diff --git a/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md b/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md index e092ad336..9172052a3 100644 --- a/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md +++ b/website/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq.md @@ -36,7 +36,7 @@ O OpenScreen é um gravador de tela e editor de vídeo gratuito, com licença MI - **github.com, uma vez por idioma.** Em uma máquina com GPU, a primeira transcrição em inglês ou em francês também baixa o modelo que reajusta o tempo de cada palavra: cerca de 110 MB para o inglês, 350 MB para o francês. - **github.com e api.github.com.** Os builds que se atualizam sozinhos procuram uma nova versão um minuto depois de abrir, depois a cada seis horas, e quando você pede. Eles a baixam em segundo plano e mostram um botão de atualização; nada é instalado até você clicar nele. - **fonts.googleapis.com, só para uma fonte adicionada na 1.x.** Uma fonte personalizada de anotação adicionada numa versão anterior ainda é baixada na inicialização, embora a 2.x não a desenhe mais. -- **PostHog, uma vez por dia.** Uma contagem anônima de instalações ativas, enviada aos servidores do PostHog na UE. Ela contém a versão do app, o sistema operacional, a arquitetura do processador, como o app foi instalado, se foi usado diretamente ou pelo seu servidor MCP por um agente de IA, e se é a primeira contagem da semana e do mês. Só isso: nenhum identificador de instalação (cada contagem recebe um ID aleatório novo), nenhum endereço IP guardado, nada sobre suas gravações. Desmarque **Enviar contagem de uso anônima** no menu da bandeja para desativá-la, ou defina `DO_NOT_TRACK=1`. +- **PostHog, uma vez por dia.** Uma contagem anônima de instalações ativas, enviada aos servidores do PostHog na UE. Ela contém a versão do app, o sistema operacional, a arquitetura do processador, como o app foi instalado, se foi usado diretamente ou pelo seu servidor MCP por um agente de IA, se é a primeira contagem da semana e do mês, e a semana em que o app foi instalado. Só isso: nenhum identificador de instalação (cada contagem recebe um ID aleatório novo), nenhum endereço IP guardado, nada sobre suas gravações. Desmarque **Enviar contagem de uso anônima** no menu da bandeja para desativá-la, ou defina `DO_NOT_TRACK=1`. - **Seu provedor de IA, somente se você conectar um.** A edição por chat envia suas mensagens e os dados do projeto que ela lê, como a linha do tempo e a transcrição. A tradução de legendas envia o texto das legendas. As duas ficam desativadas até você conectar um provedor. Veja [Edição com IA](./ai-editing.md). ## O OpenScreen coleta dados de uso ou relatórios de falha? {#does-openscreen-collect-analytics-or-crash-reports} @@ -44,7 +44,7 @@ O OpenScreen é um gravador de tela e editor de vídeo gratuito, com licença MI **Uma contagem diária anônima, nada mais.** O app não contém nenhum SDK de analytics nem de relatório de falhas, e nada registra o que você faz nele. - Uma vez por dia, o app informa que uma instalação esteve ativa. [O OpenScreen funciona offline?](#does-openscreen-work-offline) lista exatamente o que essa contagem contém e como desativá-la. -- A contagem não leva nenhum identificador de instalação: cada uma recebe um ID aleatório novo, e nada mais nela é próprio do seu computador. +- A contagem não leva nenhum identificador de instalação: cada uma recebe um ID aleatório novo, e nada mais nela é próprio do seu computador. A semana de instalação que ela leva, como `2026-W44`, é a semana em que o app foi instalado, a mesma para todos que o instalaram naquela semana, e não um identificador. - As chaves de provedores de IA são armazenadas criptografadas com o `safeStorage` do Electron. Se a criptografia não estiver disponível, a chave não é salva. ## É seguro instalar o OpenScreen? {#is-openscreen-safe-to-install} diff --git a/website/i18n/pt-BR/docusaurus-plugin-content-pages/privacy.mdx b/website/i18n/pt-BR/docusaurus-plugin-content-pages/privacy.mdx index 030478f5e..0dc882e00 100644 --- a/website/i18n/pt-BR/docusaurus-plugin-content-pages/privacy.mdx +++ b/website/i18n/pt-BR/docusaurus-plugin-content-pages/privacy.mdx @@ -5,7 +5,7 @@ description: "O que o app para desktop, o site, o servidor MCP e o plugin para a # Política de privacidade -Última atualização: 19 de outubro de 2026. +Última atualização: 4 de novembro de 2026. O OpenScreen é um gravador de tela e editor de vídeo grátis e de código aberto. Ele não tem conta nem servidores próprios: suas gravações, projetos e transcrições ficam guardados no seu computador, e nenhum recurso faz upload de uma gravação. Esta página lista tudo o que sai da sua máquina, a partir do app para desktop, deste site, do servidor MCP e do plugin para agentes, incluindo os dados do projeto que os recursos de IA enviam ao provedor que você escolher. @@ -22,9 +22,10 @@ No máximo uma vez por dia, o app informa ao PostHog, em seus servidores na UE, - a versão do app, o sistema operacional e a arquitetura do processador; - como o app foi instalado (instalador, Microsoft Store, AppImage, Flatpak etc.); - se o app foi usado diretamente ou pelo seu servidor MCP por um agente de IA; -- se é a primeira contagem da instalação na semana e no mês. +- se é a primeira contagem da instalação na semana e no mês; +- a semana em que o app foi instalado, como `2026-W44`, ou `unknown` quando não é possível datá-la. Todas as instalações daquela semana enviam o mesmo valor: é a semana de instalação, não um identificador. -Ela não contém mais nada: nenhum identificador de instalação (cada contagem recebe um ID aleatório novo), nenhum nome, nenhum nome de arquivo, nada sobre suas gravações. A geolocalização está desativada, e o projeto no PostHog está configurado para descartar os endereços IP. A finalidade é saber quantas pessoas usam o OpenScreen, e em quais sistemas, o que é um interesse legítimo do projeto. +Ela não contém mais nada: nenhum identificador de instalação (cada contagem recebe um ID aleatório novo), nenhum nome, nenhum nome de arquivo, nada sobre suas gravações. A geolocalização está desativada, e o projeto no PostHog está configurado para descartar os endereços IP. A finalidade é saber quantas pessoas usam o OpenScreen, em quais sistemas, e quantas ainda o usam semanas depois de instalar, o que é um interesse legítimo do projeto. Para desativá-la, desmarque **Enviar contagem de uso anônima** no menu da bandeja, ou defina a variável de ambiente `DO_NOT_TRACK=1`. Os builds de desenvolvimento e as execuções de CI nunca a enviam. diff --git a/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md b/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md index e0ebd7aef..3a60f19b1 100644 --- a/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md +++ b/website/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq.md @@ -36,7 +36,7 @@ OpenScreen 是一款免费的录屏与视频剪辑软件,采用 MIT 许可证 - **github.com,每种语言一次**。在带 GPU 的电脑上,第一次进行英语或法语转录时,还会下载为每个词重新计时的模型:英语约 110 MB,法语约 350 MB。 - **github.com 和 api.github.com**。能够自动更新的版本在启动一分钟后检查一次新版本,之后每六小时检查一次,你手动检查时也会连接。它们会在后台下载新版本并显示更新按钮;在你点击之前不会安装任何内容。 - **fonts.googleapis.com,仅限 1.x 中添加的字体**。在早期版本中添加的自定义标注字体仍会在启动时加载,尽管 2.x 已不再绘制它。 -- **PostHog,每天一次**。活跃安装数的匿名计数,发送到 PostHog 位于欧盟的服务器。它包含应用版本、操作系统、处理器架构、应用的安装方式、应用是被直接使用还是由 AI 智能体通过其 MCP 服务器使用,以及这是否为当周和当月的首次计数。仅此而已:没有安装标识符(每次计数都使用新的随机 ID),不保留 IP 地址,不涉及你的录制内容。要关闭它,请在托盘菜单中取消勾选**发送匿名使用计数**,或设置 `DO_NOT_TRACK=1`。 +- **PostHog,每天一次**。活跃安装数的匿名计数,发送到 PostHog 位于欧盟的服务器。它包含应用版本、操作系统、处理器架构、应用的安装方式、应用是被直接使用还是由 AI 智能体通过其 MCP 服务器使用,这是否为当周和当月的首次计数,以及应用的安装周。仅此而已:没有安装标识符(每次计数都使用新的随机 ID),不保留 IP 地址,不涉及你的录制内容。要关闭它,请在托盘菜单中取消勾选**发送匿名使用计数**,或设置 `DO_NOT_TRACK=1`。 - **你的 AI 提供方,仅在你连接之后**。聊天编辑会发送你的消息以及它读取的项目数据,例如时间轴和转录文本。字幕翻译会发送字幕文本。在你连接提供方之前,这两项功能都处于关闭状态。请参阅 [AI 编辑](./ai-editing.md)。 ## OpenScreen 会收集分析数据或崩溃报告吗? {#does-openscreen-collect-analytics-or-crash-reports} @@ -44,7 +44,7 @@ OpenScreen 是一款免费的录屏与视频剪辑软件,采用 MIT 许可证 **每天一次匿名计数,仅此而已**。应用中不包含任何分析或崩溃报告 SDK,也没有任何东西会记录你在应用中的操作。 - 应用每天报告一次有一个安装处于活跃状态。[OpenScreen 可以离线使用吗?](#does-openscreen-work-offline)准确列出了该计数包含的内容以及关闭方法。 -- 该计数不带安装标识符:每次计数都使用新的随机 ID,其中也没有其他专属于你电脑的信息。 +- 该计数不带安装标识符:每次计数都使用新的随机 ID,其中也没有其他专属于你电脑的信息。其中的安装周(例如 `2026-W44`)就是安装的那一周,同一周安装的所有人都相同,并非标识符。 - AI 提供方的密钥通过 Electron 的 `safeStorage` 加密存储。如果无法加密,密钥就不会被保存。 ## 安装 OpenScreen 安全吗? {#is-openscreen-safe-to-install} diff --git a/website/i18n/zh-CN/docusaurus-plugin-content-pages/privacy.mdx b/website/i18n/zh-CN/docusaurus-plugin-content-pages/privacy.mdx index 60a895c72..2dcb9e0e5 100644 --- a/website/i18n/zh-CN/docusaurus-plugin-content-pages/privacy.mdx +++ b/website/i18n/zh-CN/docusaurus-plugin-content-pages/privacy.mdx @@ -5,7 +5,7 @@ description: "OpenScreen 的桌面应用、网站、MCP 服务器和智能体插 # 隐私政策 -最后更新:2026 年 10 月 19 日。 +最后更新:2026 年 11 月 4 日。 OpenScreen 是一款免费、开源的录屏与视频剪辑软件。它没有账号,也没有自己的服务器:你的录制内容、项目和转录文本都存储在你的电脑上,没有任何功能会上传录制内容。本页列出了所有会离开你电脑的数据,涵盖桌面应用、本网站、MCP 服务器和智能体插件,包括 AI 功能发送给你所选提供方的项目数据。 @@ -22,9 +22,10 @@ OpenScreen 由 Etienne Lescot 维护,他是本页所述数据的数据控制 - 应用版本、操作系统和处理器架构; - 应用的安装方式(安装程序、Microsoft Store、AppImage、Flatpak 等); - 应用是被直接使用,还是由 AI 智能体通过其 MCP 服务器使用; -- 这是否为该安装当周和当月的首次计数。 +- 这是否为该安装当周和当月的首次计数; +- 应用的安装周,例如 `2026-W44`,无法确定日期时为 `unknown`。同一周的所有安装都发送相同的值:它是安装的那一周,并非标识符。 -除此之外不包含任何内容:没有安装标识符(每次计数都使用新的随机 ID),没有姓名,没有文件名,不涉及你的录制内容。位置查询已关闭,PostHog 项目也设置为丢弃 IP 地址。其目的是了解有多少人在使用 OpenScreen,以及在哪些系统上使用,这属于本项目的正当利益。 +除此之外不包含任何内容:没有安装标识符(每次计数都使用新的随机 ID),没有姓名,没有文件名,不涉及你的录制内容。位置查询已关闭,PostHog 项目也设置为丢弃 IP 地址。其目的是了解有多少人在使用 OpenScreen、在哪些系统上使用,以及安装数周后还有多少人在继续使用,这属于本项目的正当利益。 要关闭它,请在托盘菜单中取消勾选**发送匿名使用计数**,或设置环境变量 `DO_NOT_TRACK=1`。开发版本和 CI 运行从不发送该计数。 diff --git a/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq.md b/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq.md index 7297b65d3..2f5f22504 100644 --- a/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq.md +++ b/website/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq.md @@ -36,7 +36,7 @@ OpenScreen 是一款採用 MIT 授權的免費螢幕錄影與影片剪輯軟體 - **github.com,每種語言一次。** 在有 GPU 的電腦上,第一次進行英文或法文轉錄時,還會下載為每個字詞重新對時的模型:英文約 110 MB,法文約 350 MB。 - **github.com 與 api.github.com。** 會自行更新的版本在啟動一分鐘後檢查一次新版本,之後每六小時檢查一次,你手動要求時也會檢查。它們會在背景下載新版本並顯示更新按鈕;在你點擊之前不會安裝任何內容。 - **fonts.googleapis.com,僅限 1.x 中加入的字體。** 在先前版本中加入的自訂標註字體仍會在啟動時載入,儘管 2.x 已不再繪製它。 -- **PostHog,每天一次。** 活躍安裝數的匿名計數,會送到 PostHog 位於歐盟的伺服器。內容包括應用程式版本、作業系統、處理器架構、應用程式的安裝方式、應用程式是直接使用還是由 AI 代理透過其 MCP 伺服器使用,以及這是否為當週與當月的第一次計數。僅此而已:沒有安裝識別碼(每次計數都使用新的隨機 ID),不保留 IP 位址,也不含任何與你錄影有關的資訊。若要關閉,請在系統匣選單中取消勾選**傳送匿名使用計數**,或設定 `DO_NOT_TRACK=1`。 +- **PostHog,每天一次。** 活躍安裝數的匿名計數,會送到 PostHog 位於歐盟的伺服器。內容包括應用程式版本、作業系統、處理器架構、應用程式的安裝方式、應用程式是直接使用還是由 AI 代理透過其 MCP 伺服器使用,這是否為當週與當月的第一次計數,以及應用程式的安裝週。僅此而已:沒有安裝識別碼(每次計數都使用新的隨機 ID),不保留 IP 位址,也不含任何與你錄影有關的資訊。若要關閉,請在系統匣選單中取消勾選**傳送匿名使用計數**,或設定 `DO_NOT_TRACK=1`。 - **你的 AI 提供者,僅在你連接時。** 聊天剪輯會送出你的訊息,以及它讀取的專案資料,例如時間軸與逐字稿。字幕翻譯會送出字幕文字。在你連接提供者之前,這兩項功能都保持關閉。請參閱 [AI 剪輯](./ai-editing.md)。 ## OpenScreen 會收集分析資料或當機報告嗎? {#does-openscreen-collect-analytics-or-crash-reports} @@ -44,7 +44,7 @@ OpenScreen 是一款採用 MIT 授權的免費螢幕錄影與影片剪輯軟體 **每天一次匿名計數,除此之外沒有別的。** 應用程式中沒有任何分析或當機回報 SDK,也沒有任何機制會記錄你在其中的操作。 - 應用程式每天回報一次有一個安裝處於活躍狀態。[OpenScreen 可以離線使用嗎?](#does-openscreen-work-offline)準確列出這項計數包含的內容與關閉方式。 -- 這項計數不帶安裝識別碼:每次計數都使用新的隨機 ID,其中也沒有其他專屬於你電腦的資訊。 +- 這項計數不帶安裝識別碼:每次計數都使用新的隨機 ID,其中也沒有其他專屬於你電腦的資訊。其中的安裝週(例如 `2026-W44`)就是安裝的那一週,同一週安裝的所有人都相同,並非識別碼。 - AI 提供者的金鑰會透過 Electron 的 `safeStorage` 加密儲存。如果無法加密,金鑰就不會被儲存。 ## 安裝 OpenScreen 安全嗎? {#is-openscreen-safe-to-install} diff --git a/website/i18n/zh-TW/docusaurus-plugin-content-pages/privacy.mdx b/website/i18n/zh-TW/docusaurus-plugin-content-pages/privacy.mdx index e4ae78fc3..7ffa42747 100644 --- a/website/i18n/zh-TW/docusaurus-plugin-content-pages/privacy.mdx +++ b/website/i18n/zh-TW/docusaurus-plugin-content-pages/privacy.mdx @@ -5,7 +5,7 @@ description: "OpenScreen 的桌面應用程式、網站、MCP 伺服器與代理 # 隱私權政策 -最後更新:2026 年 10 月 19 日。 +最後更新:2026 年 11 月 4 日。 OpenScreen 是免費、開放原始碼的螢幕錄影與影片剪輯軟體。它沒有帳號,也沒有自己的伺服器:你的錄影、專案與逐字稿都儲存在你的電腦上,沒有任何功能會上傳錄影。本頁列出所有確實會離開你電腦的資料,包括來自桌面應用程式、本網站、MCP 伺服器與代理程式外掛的資料,也包括 AI 功能傳送給你所選提供者的專案資料。 @@ -22,9 +22,10 @@ OpenScreen 由 Etienne Lescot 維護,他是本頁所述資料的資料控管 - 應用程式版本、作業系統與處理器架構; - 應用程式的安裝方式(安裝程式、Microsoft Store、AppImage、Flatpak 等); - 應用程式是直接使用,還是由 AI 代理透過其 MCP 伺服器使用; -- 這是否為該安裝當週與當月的第一次計數。 +- 這是否為該安裝當週與當月的第一次計數; +- 應用程式的安裝週,例如 `2026-W44`,無法判定日期時為 `unknown`。同一週的所有安裝都會傳送相同的值:它是安裝的那一週,並非識別碼。 -除此之外不包含任何內容:沒有安裝識別碼(每次計數都使用新的隨機 ID),沒有姓名,沒有檔案名稱,也不含任何與你錄影有關的資訊。位置查詢已關閉,PostHog 專案也設定為捨棄 IP 位址。目的是了解有多少人在使用 OpenScreen、使用哪些系統,這屬於本專案的正當利益。 +除此之外不包含任何內容:沒有安裝識別碼(每次計數都使用新的隨機 ID),沒有姓名,沒有檔案名稱,也不含任何與你錄影有關的資訊。位置查詢已關閉,PostHog 專案也設定為捨棄 IP 位址。目的是了解有多少人在使用 OpenScreen、使用哪些系統,以及安裝數週後仍有多少人繼續使用,這屬於本專案的正當利益。 若要關閉,請在系統匣選單中取消勾選**傳送匿名使用計數**,或設定環境變數 `DO_NOT_TRACK=1`。開發版本與 CI 執行絕不會傳送這項計數。 diff --git a/website/src/pages/privacy.mdx b/website/src/pages/privacy.mdx index 980dc2729..c759bc499 100644 --- a/website/src/pages/privacy.mdx +++ b/website/src/pages/privacy.mdx @@ -5,7 +5,7 @@ description: "What OpenScreen's desktop app, website, MCP server and agent plugi # Privacy policy -Last updated: 19 October 2026. +Last updated: 4 November 2026. OpenScreen is a free, open-source screen recorder and video editor. It has no account and no servers of its own: your recordings, projects and transcripts are stored on your computer, and no feature uploads a recording. This page lists everything that does leave your machine, from the desktop app, this website, the MCP server and the agent plugin, including the project data that AI features send to the provider you choose. @@ -22,9 +22,10 @@ Once a day at most, the app tells PostHog, on its EU servers, that one installat - the app version, the operating system and the processor architecture; - how the app was installed (installer, Microsoft Store, AppImage, Flatpak and so on); - whether the app was used directly or through its MCP server by an AI agent; -- whether it is the installation's first count of the week and of the month. +- whether it is the installation's first count of the week and of the month; +- the week the app was installed, such as `2026-W44`, or `unknown` when it cannot be dated. Every installation from that week sends the same value: it is the week of installation, not an identifier. -It holds nothing else: no installation identifier (each count gets a new random ID), no name, no file names, nothing about your recordings. Location lookup is off, and the PostHog project is set to discard IP addresses. The purpose is to know how many people use OpenScreen, on which systems, which is the project's legitimate interest. +It holds nothing else: no installation identifier (each count gets a new random ID), no name, no file names, nothing about your recordings. Location lookup is off, and the PostHog project is set to discard IP addresses. The purpose is to know how many people use OpenScreen, on which systems, and how many still use it weeks after installing, which is the project's legitimate interest. To turn it off, untick **Send Anonymous Usage Count** in the tray menu, or set the environment variable `DO_NOT_TRACK=1`. Development builds and CI runs never send it.