feat: i18n control, Gitea auto-update CI, license-gated updater, fixes

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-05-11 22:20:14 +08:00
parent 36776f4c5d
commit f462e65581
23 changed files with 2049 additions and 440 deletions
+23
View File
@@ -17,6 +17,28 @@ type Preferences = {
eulaAcceptedVersion?: number;
};
type LicenseChangeListener = () => void;
const licenseChangeListeners = new Set<LicenseChangeListener>();
/** Слушатели вызываются после смены состояния лицензии (сохранённый токен, EULA, отзыв). */
export function addLicenseChangeListener(fn: LicenseChangeListener): () => void {
licenseChangeListeners.add(fn);
return () => {
licenseChangeListeners.delete(fn);
};
}
function notifyLicenseChangeListeners(): void {
for (const fn of licenseChangeListeners) {
try {
fn();
} catch (err) {
console.error('[license] change listener failed', err);
}
}
}
function readPreferences(userData: string): Preferences {
try {
const raw = fs.readFileSync(preferencesPath(userData), 'utf8');
@@ -35,6 +57,7 @@ function emitLicenseStatusChanged(): void {
for (const win of BrowserWindow.getAllWindows()) {
win.webContents.send(ipcChannels.license.statusChanged, {});
}
notifyLicenseChangeListeners();
}
export class LicenseService {