πΊ Homebrew's official macOS GUIπ§βπ» BrewUI Homebrew's official macOS GUI: making package management approachable for users who prefer graphical interfaces over Terminal, while maintaining complete transparency about underlying Homebrew operations. π‘ Motivation Enable CLI-averse users to safely discover, install, update, and manage Homebrew packages through a native SwiftUI interface that never hides what Homebrew is doing. π² Tech Swift 6.0 with strict concurrency Β· SwiftUI Β· Swift Package β¦
ΠΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΡ, ΠΆΠ΅Π»Π°ΡΡΠ΅ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ ΠΊΡΡΠΏΠΈΡΠ°ΠΌ β ΠΈΠ· ΠΊΠ½ΠΈΠ³, ΡΠΎΡΡΠΌΠΎΠ², Π»Π΅ΠΊΡΠΈΠΉ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. Π‘Π΅ΠΉΡΠ°Ρ ΠΊΡΡΡΠΎΠ² ΡΡΠ°Π»ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠ΅, Π½ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊ Π΄ΡΡΠ³ΠΎΠΉ Π²ΠΎΠΏΡΠΎΡ: ΠΊΠ°ΠΊ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ ΠΊΠΈΠ±Π΅ΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π³ΠΎΡΠΎΠ²ΠΈΡ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅, Π° Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π»Π΅ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠΌ?
ΠΠ½ΠΆΠ΅Π½Π΅ΡΡ GitLab Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ ΠΏΠ°ΡΡΠΈ Π΄Π»Ρ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ CVE-2026-85706, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅ΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ 10 Π±Π°Π»Π»ΠΎΠ² ΠΏΠΎ ΡΠΊΠ°Π»Π΅ CVSS ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ Π½Π΅Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π°ΡΠ°ΠΊΡΡΡΠ΅ΠΌΡ ΡΠΈΡΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅. ΠΠ-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ, ΡΡΠΎ Π²ΡΠΊΠΎΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΡΠΊΡΡΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠΈ Π½Π°ΡΠ°Π»ΠΈ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠΏΡΡΠΊΠΈ Π΅Π΅ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ.
ΠΠ΅ΠΊΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠ΅ Π²Π»Π°ΡΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΠΈ ΠΈΠ·ΡΡΠ»ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 300 GPU Π½Π° ΠΏΠΎΠ΄ΠΏΠΎΠ»ΡΠ½ΠΎΠΉ ΠΌΠ°ΠΉΠ½ΠΈΠ½Π³-ΡΠ΅ΡΠΌΠ΅ Π² ΡΡΠ°ΡΠ΅ ΠΡΡΠ±Π»Π°. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΠ»Π° Π² Π³ΠΎΡΠ½ΠΎΠΌ ΠΌΡΠ½ΠΈΡΠΈΠΏΠ°Π»ΠΈΡΠ΅ΡΠ΅ Π’Π»Π°ΠΎΠ»Π°, ΡΡΠ΄ΠΎΠΌ Ρ Π³ΠΈΠ΄ΡΠΎΡΠ»Π΅ΠΊΡΡΠΎΡΡΠ°Π½ΡΠΈΠ΅ΠΉ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π²Π΅ΡΡΠΈΠΈ ΠΎ Ρ ΠΈΡΠ΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΡΠ½Π΅ΡΠ³ΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌ ΠΎΡΠΌΡΠ²Π°Π½ΠΈΠΈ Π΄Π΅Π½Π΅Π³ ΡΠ΅ΡΠ΅Π· Π΄ΠΎΠ±ΡΡΡΠ΅ ΠΊΡΠΈΠΏΡΠΎΠ°ΠΊΡΠΈΠ²Ρ.
ΠΡΠΈΡΠ°Π½ΡΠΊΠ°Ρ ΡΠΈΠ½ΡΠ΅Ρ -ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Revolut ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ»Π° ΡΡΠ΅ΡΠΊΡ Π΄Π°Π½Π½ΡΡ ΡΠ²ΠΎΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΡΠΈΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π·Π»ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΡΠ°ΠΌΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ Revolut. ΠΡΠ°ΠΊΡΡΡΠΈΠ΅ ΠΏΡΠΈΡΡΠ»Π°Π»ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ Π³ΠΎΡΡΡΡΡΠΊΡΡΡΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΈΡΡΠΌΠ° ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΈ Ρ Π°Π΄ΡΠ΅ΡΠ° Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠΎΠ²ΠΎΠΌ Π΄ΠΎΠΌΠ΅Π½Π΅ Π²Π΅Π΄ΠΎΠΌΡΡΠ²Π°, ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ Revolut ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΠΈΡ Π·Π° Π½Π°ΡΡΠΎΡΡΠΈΠ΅ ΠΈ ΡΠ°ΡΠΊΡΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ ΠΈΠ· Π½Π΅ΠΌΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΠ-ΡΡΠ°ΡΡΠ°ΠΏΠ° Nebty ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ ΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ ΠΌΠΎΡΠ΅Π½Π½ΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΡΡ DoppelCart, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅Π»ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π½Π° 119 000 Π΄ΠΎΠΌΠ΅Π½ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ ΡΠ°ΠΉΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ Π±ΡΠ΅Π½Π΄Ρ ΠΈ ΠΏΡΠΈΠ²Π»Π΅ΠΊΠ°ΡΡ ΠΏΠΎΠΊΡΠΏΠ°ΡΠ΅Π»Π΅ΠΉ ΡΠΊΠΈΠ΄ΠΊΠ°ΠΌΠΈ, Π° ΠΏΡΠΈ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠΈ Π·Π°ΠΊΠ°Π·Π° ΠΊΡΠ°Π΄ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ ΠΊΠ°ΡΡ.
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠΎΠ²ΠΠΎΠ³Π΄Π° ΡΠ΅ΡΠ²ΠΈΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ AI-Π°Π³Π΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΅Π΅ ΠΊΠ°ΠΊ JavaScript, Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΏΠ°Π½Π΅Π»ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠΎΠΏΠ°ΡΡΡ Π² Flowise, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠ΅ΠΊΡΠΈΠΉ ΡΠΎΠΊΠ΅Π½ ΡΠ±ΡΠΎΡΠ° ΠΏΠ°ΡΠΎΠ»Ρ, Π° Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΠΎΠ²ΡΡΠΈΠΌ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ ΡΠ΅ΡΠ΅Π· Π°ΡΠ°ΠΊΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π² Gogs.
Π‘ΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ Anthropic ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ 154-ΡΡΡΠ°Π½ΠΈΡΠ½ΡΠΉ ΠΎΡΡΠ΅Ρ, ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΎ Π·Π»ΠΎΡΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡΡ ΠΌΠΎΠ΄Π΅Π»ΡΠΌΠΈ Claude. Π‘ Π΄Π΅ΠΊΠ°Π±ΡΡ 2025 ΠΏΠΎ Π°Π²Π³ΡΡΡ 2026 Π³ΠΎΠ΄Π° Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΡΠ΅ΡΠ΅ΠΊΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΠ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π»Ρ ΠΊΠΈΠ±Π΅ΡΠ°ΡΠ°ΠΊ, ΡΠ»Π΅ΠΆΠΊΠΈ, ΠΏΡΠΎΠΏΠ°Π³Π°Π½Π΄Ρ, ΠΌΠΎΡΠ΅Π½Π½ΠΈΡΠ΅ΡΡΠ²Π°, ΠΎΠΏΠ°ΡΠ½ΡΡ Π±ΠΈΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΠΎΠΎΡΡΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ!ΠΠ°Β Π²Ρ ΠΎΠ΄Π΅ ΡΡΠΎΠΈΡ Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡ: JSON Schema, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π½Π°Π΅Ρ ΠΏΡΠΎΒ ΠΏΠΎΠ»Π΅ is_admin ΠΈ ΡΠ½Π°ΡΡΠΆΠΈ Π²ΡΡΡΠ°Π²Π»ΡΡΡ Π΅Π³ΠΎ Π½Π΅Β Π΄Π°ΡΡ. ΠΡΡ ΠΏΡΠΎΡΠ΅Π΅ ΡΡ Π΅ΠΌΠ° ΡΡΠΈΡΠ°Π΅ΡΒ Π»ΠΈΡΠ½ΠΈΠΌ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π½Π΅Β Π³Π»ΡΠ΄Ρ. ΠΠ°Β Π²Π°Π»ΠΈΠ΄Π°ΡΠΎΡΠΎΠΌ GoβΡΠ΅ΡΠ²ΠΈΡ, ΡΠ°ΠΌ ΡΡΡΡΠΊΡΡΡΠ° ΡΒ ΡΠ΅Π³ΠΎΠΌ json:"is_admin". ΠΡΠΈΡ ΠΎΠ΄ΠΈΡ ΡΠ΅Π»ΠΎ, Π³Π΄Π΅ ΠΊΠ»ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π·Π°Π³Π»Π°Π²Π½ΡΠΌΠΈΒ β IS_ADMIN. Π‘Ρ Π΅ΠΌΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠ±ΡΠΊΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π½Π΅Β Π·Π½Π°Π΅Ρ, ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ. Π json.Unmarshal Π·Π½Π°Π΅Ρ ΠΈ ΠΊΠ»Π°Π΄ΡΡ true ΠΊΡΠ΄Π° Π½Π°Π΄ΠΎ.ΠΠΈΠΊΡΠΎ ΠΈΠ·Β Π΄Π²ΠΎΠΈΡ ΠΏΡΠΈΒ ΡΡΠΎΠΌ Π½Π΅Β ΠΎΡΠΈΠ±ΡΡ: ΡΡ Π΅ΠΌΠ° ΠΎΡΡΠ°Π±ΠΎΡΠ°Π»Π° ΠΏΠΎΒ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, encoding/jsβ¦