Skip to content

Commit 825b9dc

Browse files
docs: clarify macOS Gatekeeper bypass for unsigned desktop builds
Co-authored-by: Venkat SF <venkatesh.sakamuri@stayflexi.com>
1 parent ce9a7cd commit 825b9dc

2 files changed

Lines changed: 51 additions & 13 deletions

File tree

desktop/README.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,13 @@ of the transport layer knows or cares which one is in use.
5353
| Windows | `DeepSQL Setup <version>.exe` (NSIS), portable `.exe` |
5454
| Linux | `.AppImage`, `.deb`, `.rpm` |
5555

56-
macOS builds are unsigned unless you supply signing credentials, so the first
57-
launch needs **right-click → Open** (or `xattr -dr com.apple.quarantine
58-
/Applications/DeepSQL.app`).
56+
macOS builds are unsigned unless you supply signing credentials, so Gatekeeper
57+
blocks a normal double-click on first launch (&ldquo;DeepSQL&rdquo; Not Opened).
58+
Use one of:
59+
60+
1. **Right-click → Open** on `DeepSQL.app`, then click **Open** in the dialog.
61+
2. **System Settings → Privacy & Security → Open Anyway** after the block.
62+
3. Terminal: `xattr -dr com.apple.quarantine /Applications/DeepSQL.app`
5963

6064
### From source
6165

src/pages/Download.jsx

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,8 @@ export default function Download() {
240240
</div>
241241
)}
242242

243+
{detected === 'mac' && <MacGatekeeperNotice />}
244+
243245
{Object.entries(PLATFORMS).map(([key, meta]) => {
244246
const assets = grouped[key] || []
245247
if (!assets.length) return null
@@ -328,20 +330,52 @@ function PlatformSection({ platform, assets, highlight, showMacNote }) {
328330
))}
329331
</div>
330332

331-
{showMacNote && (
332-
<p className="mt-3 text-xs text-gray-400 leading-relaxed">
333-
Builds are unsigned unless signing credentials are configured, so the first
334-
launch needs <span className="text-gray-600">right-click → Open</span> (or{' '}
335-
<code className="text-gray-600">
336-
xattr -dr com.apple.quarantine /Applications/DeepSQL.app
337-
</code>
338-
).
339-
</p>
340-
)}
333+
{showMacNote && <MacGatekeeperNotice compact />}
341334
</section>
342335
)
343336
}
344337

338+
/** macOS builds ship unsigned unless signing secrets are configured in CI. */
339+
function MacGatekeeperNotice({ compact = false }) {
340+
return (
341+
<div
342+
className={`rounded-xl border border-amber-200 bg-amber-50 text-amber-950 ${
343+
compact ? 'mt-3 px-4 py-3' : 'mb-10 px-5 py-4'
344+
}`}
345+
>
346+
<div className="flex items-start gap-3">
347+
<AlertTriangle className="h-4 w-4 text-amber-700 mt-0.5 shrink-0" />
348+
<div className="text-sm leading-relaxed">
349+
<p className={`font-semibold text-amber-950 ${compact ? 'mb-1' : 'mb-2'}`}>
350+
macOS may block the first launch
351+
</p>
352+
<p className="text-amber-900/90 mb-3">
353+
Installers are not Apple-notarized yet, so double-clicking can show
354+
&ldquo;DeepSQL&rdquo; Not Opened with only <strong>Done</strong> and{' '}
355+
<strong>Move to Trash</strong>. That is expected — use one of these instead:
356+
</p>
357+
<ol className="list-decimal pl-5 space-y-2 text-amber-900/90">
358+
<li>
359+
In Finder, <strong>right-click DeepSQL.app → Open</strong>, then click{' '}
360+
<strong>Open</strong> in the dialog. You only need to do this once.
361+
</li>
362+
<li>
363+
Or open <strong>System Settings → Privacy &amp; Security</strong>, scroll
364+
down after the block, and click <strong>Open Anyway</strong>.
365+
</li>
366+
<li>
367+
Or run in Terminal:{' '}
368+
<code className="text-xs bg-amber-100/80 px-1.5 py-0.5 rounded">
369+
xattr -dr com.apple.quarantine /Applications/DeepSQL.app
370+
</code>
371+
</li>
372+
</ol>
373+
</div>
374+
</div>
375+
</div>
376+
)
377+
}
378+
345379
function Notice({ tone, title, body, action }) {
346380
return (
347381
<div

0 commit comments

Comments
 (0)