feat: remove PostHog usage telemetry entirely
Drop the once-a-day anonymous "app_opened" heartbeat to PostHog and everything around it: telemetry.go (sendTelemetryHeartbeat, GetTelemetryEnabled/ SetTelemetryEnabled, install-ID/last-sent settings keys, PostHog host + API key) and the startup goroutine that fired it. The 'Send anonymous usage statistics' toggle is removed from Settings → General (TelemetryToggle + i18n keys), and the telemetry mentions are stripped from the README and wiki. appVersion (still used by changelog/update/livestatus/log-email) moves to a new version.go; release.ps1 now rewrites it there instead of telemetry.go.
This commit is contained in:
@@ -32,7 +32,6 @@ import {
|
||||
GetDatabaseSettings, PickOpenDatabase, PickSaveDatabase, OpenDatabase, MoveDatabase, ResetDatabaseToDefault, RestartApp, CreateDatabase, RenameDatabase,
|
||||
GetMySQLSettings, SaveMySQLSettings, TestMySQLConnection, GetDBBackendStatus,
|
||||
GetAutostartPrograms, SaveAutostartPrograms, BrowseExecutable, LaunchAutostartProgram,
|
||||
GetTelemetryEnabled, SetTelemetryEnabled,
|
||||
GetQSLDefaults, SaveQSLDefaults,
|
||||
GetExternalServices, SaveExternalServices, TestQRZUpload, TestClublogUpload, TestHRDLogUpload, TestEQSLUpload,
|
||||
GetPOTAToken, SavePOTAToken,
|
||||
@@ -546,26 +545,6 @@ function AutostartPanelComponent() {
|
||||
);
|
||||
}
|
||||
|
||||
// TelemetryToggle is a self-contained opt-out for the anonymous usage heartbeat
|
||||
// (a random install ID + version + OS, sent once a day). Real component so it
|
||||
// can own its state; embedded inside GeneralPanel.
|
||||
function TelemetryToggle() {
|
||||
const { t } = useI18n();
|
||||
const [on, setOn] = useState(true);
|
||||
const [loaded, setLoaded] = useState(false);
|
||||
useEffect(() => {
|
||||
GetTelemetryEnabled().then((v) => setOn(!!v)).catch(() => {}).finally(() => setLoaded(true));
|
||||
}, []);
|
||||
return (
|
||||
<label className="flex items-center gap-2 text-sm cursor-pointer">
|
||||
<Checkbox checked={on} disabled={!loaded}
|
||||
onCheckedChange={(c) => { const v = !!c; setOn(v); SetTelemetryEnabled(v).catch(() => {}); }} />
|
||||
{t('settings.telemetry')}
|
||||
<span className="text-xs text-muted-foreground">({t('settings.telemetryHint')})</span>
|
||||
</label>
|
||||
);
|
||||
}
|
||||
|
||||
// ADIFMonitorPanel watches a list of external ADIF files (fldigi RTTY, N1MM,
|
||||
// VarAC…) and auto-imports newly appended QSOs — deliberately option-free: a
|
||||
// contact that arrives is imported and uploaded automatically like any log entry.
|
||||
@@ -4694,8 +4673,6 @@ export function SettingsModal({ onClose, onSaved, initialSection, onMainPaneChan
|
||||
<Checkbox checked={checkUpdates} onCheckedChange={(c) => { const v = !!c; setCheckUpdates(v); writeUiPref('opslog.checkUpdates', v ? '1' : '0'); }} />
|
||||
{t('gen.checkUpdates')} <span className="text-xs text-muted-foreground">{t('gen.checkUpdatesHint')}</span>
|
||||
</label>
|
||||
<TelemetryToggle />
|
||||
|
||||
<MainViewPanes onChanged={onMainPaneChanged} flexAvailable={flexAvailable} icomAvailable={icomAvailable} />
|
||||
|
||||
<div className="border-t border-border/60 pt-4 space-y-2">
|
||||
|
||||
@@ -98,8 +98,6 @@ const en: Dict = {
|
||||
'offline.synced': '{n} QSO(s) added to the logbook',
|
||||
'offline.stillDown': 'Database still unreachable — your QSOs are safe',
|
||||
'settings.theme': 'Theme', 'settings.themeHint': 'Interface colour theme.',
|
||||
'settings.telemetry': 'Send anonymous usage statistics',
|
||||
'settings.telemetryHint': 'install ID + version + OS, once a day — no callsign or QSO data',
|
||||
'settings.mainView': 'Main view',
|
||||
'settings.mainViewHint': 'Choose what the Main tab shows on each side (per profile).',
|
||||
'settings.leftPane': 'Left pane', 'settings.rightPane': 'Right pane',
|
||||
@@ -467,8 +465,6 @@ const fr: Dict = {
|
||||
'offline.synced': '{n} QSO ajoutés au journal',
|
||||
'offline.stillDown': 'Base toujours injoignable — tes QSO sont en sécurité',
|
||||
'settings.theme': 'Thème', 'settings.themeHint': "Thème de couleur de l'interface.",
|
||||
'settings.telemetry': "Envoyer des statistiques d'usage anonymes",
|
||||
'settings.telemetryHint': "ID d'installation + version + OS, une fois par jour — aucun indicatif ni donnée QSO",
|
||||
'settings.mainView': 'Vue principale',
|
||||
'settings.mainViewHint': "Choisis ce que l'onglet Principal affiche de chaque côté (par profil).",
|
||||
'settings.leftPane': 'Volet gauche', 'settings.rightPane': 'Volet droit',
|
||||
|
||||
Reference in New Issue
Block a user