From f584cf97bb3c35eb7cc099104cc7ab250431ef01 Mon Sep 17 00:00:00 2001 From: Egor Date: Mon, 19 Jan 2026 02:05:01 -0800 Subject: [PATCH] clean up emoji --- .gitattributes | 1 + .github/workflows/android-ci.yml | 4 ++-- scripts/check-android-deps.ts | 6 +++--- scripts/install-signal-cli.ts | 2 +- scripts/release-android.ts | 18 ++++++++---------- scripts/release-docker.ts | 16 ++++++++-------- scripts/test-android-build.ts | 6 +++--- scripts/update-android-lockfile.ts | 2 +- server/index.ts | 16 ++++++++-------- server/modules/protonmail.ts | 14 +++++++------- server/modules/signal.ts | 26 ++++++++++++++++---------- server/templates/linked.html | 2 +- 12 files changed, 59 insertions(+), 54 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6313b56 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.github/workflows/android-ci.yml b/.github/workflows/android-ci.yml index f980bb1..8bb8d3a 100644 --- a/.github/workflows/android-ci.yml +++ b/.github/workflows/android-ci.yml @@ -33,10 +33,10 @@ jobs: chmod +x gradlew ./gradlew dependencies --write-locks if ! git diff --exit-code app/gradle.lockfile; then - echo "❌ Lockfile is out of date. Run: cd android && ./gradlew dependencies --write-locks" + echo "Lockfile is out of date. Run: cd android && ./gradlew dependencies --write-locks" exit 1 fi - echo "✅ Lockfile is up-to-date" + echo "Lockfile is up-to-date" - name: Decode keystore env: diff --git a/scripts/check-android-deps.ts b/scripts/check-android-deps.ts index bf10320..16bb0a7 100644 --- a/scripts/check-android-deps.ts +++ b/scripts/check-android-deps.ts @@ -141,14 +141,14 @@ async function main() { } if (!latestVersion) { - console.log(`❌ ${dep}: Could not check`); + console.log(`${dep}: Could not check`); continue; } if (latestVersion === currentVersion) { - console.log(`✓ ${dep}: ${currentVersion} (latest)`); + console.log(`${dep}: ${currentVersion} (latest)`); } else if (compareVersions(currentVersion, latestVersion) < 0) { - console.log(`⚠ ${dep}: ${currentVersion} → ${latestVersion}`); + console.log(` ${dep}: ${currentVersion} → ${latestVersion}`); hasUpdates = true; } else { console.log(`ℹ ${dep}: ${currentVersion} (newer than Maven: ${latestVersion})`); diff --git a/scripts/install-signal-cli.ts b/scripts/install-signal-cli.ts index 2bc95a3..66551d9 100755 --- a/scripts/install-signal-cli.ts +++ b/scripts/install-signal-cli.ts @@ -26,7 +26,7 @@ async function installSignalCli() { await chmod(`${SIGNAL_CLI_DIR}/bin/signal-cli`, 0o755); - console.log('✓ signal-cli installed successfully'); + console.log('signal-cli installed successfully'); } await installSignalCli(); diff --git a/scripts/release-android.ts b/scripts/release-android.ts index 5cfc8d7..87a43bd 100644 --- a/scripts/release-android.ts +++ b/scripts/release-android.ts @@ -9,35 +9,33 @@ if (!version) { } if (!version.startsWith('v')) { - console.error('❌ Version must start with "v" (e.g., v0.1.0)'); + console.error('Version must start with "v" (e.g., v0.1.0)'); process.exit(1); } try { const status = await $`git status --porcelain`.text(); if (status.trim()) { - console.error('❌ You have uncommitted changes. Commit or stash them first.'); + console.error('You have uncommitted changes. Commit or stash them first.'); process.exit(1); } try { await $`git rev-parse ${version}`.quiet(); - console.error(`❌ Tag ${version} already exists`); + console.error(`Tag ${version} already exists`); process.exit(1); - } catch { - // Tag doesn't exist, good - } + } catch {} - console.log(`🚀 Creating release ${version}...`); + console.log(`Creating release ${version}...`); await $`git tag ${version}`; - console.log(`✓ Created tag ${version}`); + console.log(`Created tag ${version}`); await $`git push origin ${version}`; - console.log(`✓ Pushed tag to GitHub`); + console.log(`Pushed tag to GitHub`); console.log(` -✓ Release ${version} triggered! +Release ${version} triggered! GitHub Actions will now: 1. Build signed Android APK diff --git a/scripts/release-docker.ts b/scripts/release-docker.ts index 9436f38..922aa00 100644 --- a/scripts/release-docker.ts +++ b/scripts/release-docker.ts @@ -7,21 +7,21 @@ try { const packageJson = await Bun.file(`${config.path}/package.json`).json(); const version = `v${packageJson.version}`; - console.log(`🚀 Releasing ${config.name} ${version}...`); + console.log(`Releasing ${config.name} ${version}...`); const fullName = `${registry}/${config.name}`; - console.log(`\n📦 Building ${config.name}...`); + console.log(`\nBuilding ${config.name}...`); await $`docker build -t ${fullName}:${version} -t ${fullName}:latest ${config.path}`; - console.log(`✓ Built ${config.name}`); + console.log(`Built ${config.name}`); - console.log(`📤 Pushing ${fullName}:${version}...`); + console.log(`Pushing ${fullName}:${version}...`); await $`docker push ${fullName}:${version}`; - console.log(`✓ Pushed ${fullName}:${version}`); + console.log(`Pushed ${fullName}:${version}`); - console.log(`📤 Pushing ${fullName}:latest...`); + console.log(`Pushing ${fullName}:latest...`); await $`docker push ${fullName}:latest`; - console.log(`✓ Pushed ${fullName}:latest`); + console.log(`Pushed ${fullName}:latest`); console.log(` ✨ ${config.name} ${version} released successfully! @@ -34,6 +34,6 @@ Users can now pull with: docker compose pull `); } catch (error) { - console.error('❌ Release failed:', error); + console.error('Release failed:', error); process.exit(1); } diff --git a/scripts/test-android-build.ts b/scripts/test-android-build.ts index fd95eed..27349f6 100644 --- a/scripts/test-android-build.ts +++ b/scripts/test-android-build.ts @@ -9,7 +9,7 @@ console.log('Building signed release APK...\n'); const requiredEnvVars = ['KEYSTORE_FILE', 'KEYSTORE_PASSWORD', 'KEY_ALIAS', 'KEY_PASSWORD']; const missing = requiredEnvVars.filter((v) => !process.env[v]); if (missing.length > 0) { - console.error(`❌ Missing required environment variables: ${missing.join(', ')}`); + console.error(`Missing required environment variables: ${missing.join(', ')}`); console.error('\nSee android/RELEASE.md for setup instructions'); process.exit(1); } @@ -22,11 +22,11 @@ try { const apkExists = await Bun.file(APK_PATH).exists(); if (!apkExists) { - console.error(`\n❌ APK not found at ${APK_PATH}`); + console.error(`\nAPK not found at ${APK_PATH}`); process.exit(1); } - console.log(`\n✓ APK built successfully: ${APK_PATH}`); + console.log(`\nAPK built successfully: ${APK_PATH}`); } catch (error) { console.error('Build failed:', error); process.exit(1); diff --git a/scripts/update-android-lockfile.ts b/scripts/update-android-lockfile.ts index 8a761e7..4128092 100644 --- a/scripts/update-android-lockfile.ts +++ b/scripts/update-android-lockfile.ts @@ -4,7 +4,7 @@ console.log('Regenerating Android dependency lockfiles...'); try { await $`cd android && ./gradlew dependencies --write-locks`; - console.log('✓ Lockfiles regenerated successfully'); + console.log('Lockfiles regenerated successfully'); } catch (error) { console.error('✗ Failed to regenerate lockfiles'); console.error(error); diff --git a/server/index.ts b/server/index.ts index ea17afc..0b3224e 100644 --- a/server/index.ts +++ b/server/index.ts @@ -22,18 +22,18 @@ try { const hasAccount = isLinked && (await initSignal({})); if (hasAccount) { - logSuccess('✓ Signal account linked'); + logSuccess('Signal account linked'); } else { - logWarn('⚠ No Signal account linked'); - logInfo(` Visit http://localhost:${PORT}/link to link your device`); + logWarn('No Signal account linked'); + logInfo(`Visit http://localhost:${PORT}/link to link your device`); } } catch (error) { logError(` ${error instanceof Error ? error.message : String(error)}`); } if (!API_KEY) { - logWarn('⚠️ Server running without API_KEY'); - console.warn(' Set API_KEY env var for production deployments.'); + logWarn('Server running without API_KEY'); + console.warn('Set API_KEY env var for production deployments.'); } if (BRIDGE_IMAP_USERNAME && BRIDGE_IMAP_PASSWORD) { @@ -41,8 +41,8 @@ if (BRIDGE_IMAP_USERNAME && BRIDGE_IMAP_PASSWORD) { const { startProtonMonitor } = await import('./modules/protonmail'); await startProtonMonitor(); } catch (err) { - logError('❌ Failed to start ProtonMail monitor:', err); - logWarn('⚠️ Continuing without ProtonMail integration'); + logError('Failed to start ProtonMail monitor:', err); + logWarn('Continuing without ProtonMail integration'); } } @@ -107,4 +107,4 @@ const server = Bun.serve({ }, }); -logInfo(`\n🚀 SUP running on http://localhost:${server.port}`); +logInfo(`\nSUP running on http://localhost:${server.port} 🚀`); diff --git a/server/modules/protonmail.ts b/server/modules/protonmail.ts index 3c9b93f..04bb9f1 100644 --- a/server/modules/protonmail.ts +++ b/server/modules/protonmail.ts @@ -47,9 +47,9 @@ export async function startProtonMonitor() { : ''; await sendGroupMessage(groupId, `${prefix}**${title}**\n${message}`); - logSuccess(`✅ Notification sent: ${title}`); + logSuccess(`Notification sent: ${title}`); } catch (error) { - logError('❌ Failed to send notification:', error); + logError('Failed to send notification:', error); } } @@ -60,7 +60,7 @@ export async function startProtonMonitor() { return; } - logVerbose(`✅ Connected to inbox (${box.messages.total} messages)`); + logVerbose(`Connected to inbox (${box.messages.total} messages)`); imap.on('mail', async (numNewMsgs: number) => { logVerbose(`📬 ${numNewMsgs} new message(s) received`); @@ -94,17 +94,17 @@ export async function startProtonMonitor() { } imap.once('ready', () => { - logVerbose('✅ IMAP connection ready'); + logVerbose('IMAP connection ready'); openInbox(); }); imap.once('error', (err: Error) => { - logError('❌ IMAP error:', err); - logWarn('⚠️ ProtonMail integration disabled due to connection error'); + logError('IMAP error:', err); + logWarn('ProtonMail integration disabled due to connection error'); }); imap.once('end', () => { - logVerbose('⚠️ IMAP connection ended, reconnecting...'); + logVerbose('IMAP connection ended, reconnecting...'); setTimeout(() => imap.connect(), 5000); }); diff --git a/server/modules/signal.ts b/server/modules/signal.ts index ae48d57..7b2d5b8 100644 --- a/server/modules/signal.ts +++ b/server/modules/signal.ts @@ -62,7 +62,7 @@ export async function finishLink() { }, account, ); - logSuccess('✓ Device linked successfully'); + logSuccess('Device linked successfully'); return result; } @@ -71,12 +71,12 @@ export async function unlinkDevice() { currentLinkUri = null; if (await Bun.file(SIGNAL_CLI_DATA).exists()) { - logWarn('⚠ Unlinking device and removing account data...'); + logWarn('Unlinking device and removing account data...'); try { await rm(SIGNAL_CLI_DATA, { recursive: true, force: true }); } catch (error) { - logWarn('❌ Failed to remove account data directory:', error); + logWarn('Failed to remove account data directory:', error); } } } @@ -131,11 +131,11 @@ export async function startDaemon() { let authError = false; let cleaned = false; - if (await Bun.file(SIGNAL_CLI_SOCKET).exists()) { - try { - await unlink(SIGNAL_CLI_SOCKET); - logVerbose('Removed stale socket file'); - } catch (error) { + try { + await unlink(SIGNAL_CLI_SOCKET); + logVerbose('Removed stale socket file'); + } catch (error: any) { + if (error.code !== 'ENOENT') { logError('Failed to remove stale socket file:', error); } } @@ -158,6 +158,12 @@ export async function startDaemon() { if (trimmed.includes('ConcurrentModificationException')) continue; + if ( + trimmed.includes('Accepted new client connection') || + (trimmed.includes('Connection') && trimmed.includes('closed')) + ) + continue; + if (VERBOSE) { if (trimmed.includes('ERROR')) { logError('[signal-cli]', trimmed); @@ -187,11 +193,11 @@ export async function startDaemon() { }, }); socket.end(); - logSuccess('✓ signal-cli daemon started'); + logSuccess('signal-cli daemon started'); return proc; } catch (error) { if (authError && !cleaned) { - logWarn('⚠ Detected stale account data, cleaning up and retrying...'); + logWarn(' Detected stale account data, cleaning up and retrying...'); proc.kill(); await unlinkDevice(); cleaned = true; diff --git a/server/templates/linked.html b/server/templates/linked.html index c8700ac..004a880 100644 --- a/server/templates/linked.html +++ b/server/templates/linked.html @@ -6,7 +6,7 @@ -

✓ Signal Linked

+

Signal Linked

Your Signal account is already linked to this server.