fix(desktop): improve tauri permissions and settings UX

This commit is contained in:
Mohamed Boudra
2026-02-18 18:13:20 +07:00
parent b1955cf74d
commit 4affac9ce9
28 changed files with 1433 additions and 198 deletions

View File

@@ -23,6 +23,106 @@ const dependencySections = [
const touched = []
function syncDesktopTauriConfigVersion(version) {
const tauriConfigPath = path.join(
rootDir,
'packages',
'desktop',
'src-tauri',
'tauri.conf.json'
)
if (!existsSync(tauriConfigPath)) {
return
}
const tauriConfig = JSON.parse(readFileSync(tauriConfigPath, 'utf8'))
if (tauriConfig.version === version) {
return
}
tauriConfig.version = version
writeFileSync(tauriConfigPath, `${JSON.stringify(tauriConfig, null, 2)}\n`)
touched.push(path.relative(rootDir, tauriConfigPath))
}
function syncDesktopCargoPackageVersion(version) {
const cargoTomlPath = path.join(
rootDir,
'packages',
'desktop',
'src-tauri',
'Cargo.toml'
)
if (!existsSync(cargoTomlPath)) {
return
}
const cargoLines = readFileSync(cargoTomlPath, 'utf8').split(/\r?\n/)
let inPackageSection = false
let updated = false
const nextLines = cargoLines.map((line) => {
if (/^\[package\]\s*$/.test(line)) {
inPackageSection = true
return line
}
if (inPackageSection && /^\[/.test(line)) {
inPackageSection = false
return line
}
if (inPackageSection && /^version\s*=\s*".*"\s*$/.test(line)) {
const expectedLine = `version = "${version}"`
if (line === expectedLine) {
return line
}
updated = true
return expectedLine
}
return line
})
if (!updated) {
return
}
writeFileSync(cargoTomlPath, `${nextLines.join('\n')}\n`)
touched.push(path.relative(rootDir, cargoTomlPath))
}
function syncDesktopInfoPlistVersion(version) {
const infoPlistPath = path.join(
rootDir,
'packages',
'desktop',
'src-tauri',
'Info.plist'
)
if (!existsSync(infoPlistPath)) {
return
}
const current = readFileSync(infoPlistPath, 'utf8')
const shortVersionPattern = /(<key>CFBundleShortVersionString<\/key>\s*<string>)([^<]+)(<\/string>)/
const bundleVersionPattern = /(<key>CFBundleVersion<\/key>\s*<string>)([^<]+)(<\/string>)/
let next = current.replace(shortVersionPattern, `$1${version}$3`)
next = next.replace(bundleVersionPattern, `$1${version}$3`)
if (next === current) {
return
}
writeFileSync(infoPlistPath, next)
touched.push(path.relative(rootDir, infoPlistPath))
}
for (const workspacePath of workspacePaths) {
const packagePath = path.join(rootDir, workspacePath, 'package.json')
if (!existsSync(packagePath)) {
@@ -63,6 +163,10 @@ for (const workspacePath of workspacePaths) {
}
}
syncDesktopTauriConfigVersion(rootVersion)
syncDesktopCargoPackageVersion(rootVersion)
syncDesktopInfoPlistVersion(rootVersion)
if (touched.length === 0) {
console.log(`Workspace versions and internal deps already synced to ${rootVersion}`)
} else {