Skip to content

Commit 0881ae4

Browse files
committed
feat: extensions installer, DNS menu, security status, Ghostty themes, Homebrew cleanup
- editor: multi-select extensions installer from config/vscode/extensions.txt - security: System Security Status with Gatekeeper toggle; DNS menu with 11 providers - cleanup: Homebrew Cleanup option (brew cleanup --prune=all + autoremove) - terminal: Ghostty auto-downloads Catppuccin Mocha/Latte themes on config apply - spotify: Spicetify Marketplace moved from Customize → Spotify submenu - common: cursor hide during menu display; dynamic number width; audit table bool normalization; default/cancel flows auto wait_enter - tweaks: hot corners hint + early return if unchanged; apply_all_tweaks no confirm - packages: dev +fastfetch/macmon/mas/mole/t3-code/adb, utils +betterdisplay/ logi-options+/macs-fan-control/supercorners, media +affinity, appstore -capcut/-v2raytun - vscode: settings.json full overhaul with annotated sections - docs: CHANGELOG 26.03.1, README trimmed and updated
1 parent 40e4a73 commit 0881ae4

28 files changed

Lines changed: 1065 additions & 262 deletions
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Bug Report
2+
description: Something isn't working as expected
3+
labels: ["bug"]
4+
body:
5+
- type: textarea
6+
id: description
7+
attributes:
8+
label: What happened?
9+
placeholder: Describe the bug — what you expected vs what actually happened
10+
validations:
11+
required: true
12+
- type: textarea
13+
id: steps
14+
attributes:
15+
label: Steps to reproduce
16+
placeholder: |
17+
1. Run macrift
18+
2. Go to ...
19+
3. Select ...
20+
validations:
21+
required: true
22+
- type: input
23+
id: macos-version
24+
attributes:
25+
label: macOS version
26+
placeholder: e.g. 15.4 Sequoia
27+
validations:
28+
required: true
29+
- type: input
30+
id: architecture
31+
attributes:
32+
label: Architecture
33+
placeholder: Apple Silicon (arm64) or Intel (x86_64)
34+
validations:
35+
required: true
36+
- type: textarea
37+
id: logs
38+
attributes:
39+
label: Terminal output / logs
40+
description: Paste any relevant error output
41+
render: shell
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
name: Feature Request
2+
description: Suggest a new feature or improvement
3+
labels: ["enhancement"]
4+
body:
5+
- type: textarea
6+
id: description
7+
attributes:
8+
label: What would you like?
9+
placeholder: Describe the feature and why it would be useful
10+
validations:
11+
required: true
12+
- type: textarea
13+
id: alternatives
14+
attributes:
15+
label: Alternatives considered
16+
placeholder: Any workarounds or alternative approaches you've tried

CHANGELOG.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,44 @@
11
# Changelog
22

3+
## 26.03.1
4+
5+
### New
6+
7+
- **Extensions installer** — multi-select from `config/vscode/extensions.txt`; auto-detects `code`/`cursor`/`codium` CLI; dry-run aware
8+
- **System Security Status** — FileVault, Firewall, SIP, Gatekeeper at a glance; toggle Gatekeeper on/off from the status screen
9+
- **DNS provider menu** — 11 providers: Cloudflare, Google, Quad9, OpenDNS, AdGuard, NextDNS, Comodo, ControlD (Ads/Family/Uncensored), Hagezi Pro Plus
10+
- **Homebrew Cleanup** — dedicated option in Cleanup menu: `brew cleanup --prune=all && brew autoremove`, dry-run aware
11+
- **Ghostty Catppuccin themes** — Mocha and Latte auto-downloaded from `catppuccin/ghostty` on config apply
12+
13+
### Changed
14+
15+
- **Spicetify Marketplace** moved from Customize menu → Spotify submenu ("Spicetify — restore marketplace")
16+
- **Menu cursor** hidden during display (`\033[?25l/h`) for cleaner rendering
17+
- **Menu number width** dynamic — aligns correctly for menus with 10+ items
18+
- **Audit table** — booleans normalized (1/0 → true/false); unset values shown as `default` (dim instead of red); cancel and no-change flows auto-`wait_enter`
19+
- **Hot Corners** — "Press enter to keep current" hint added; early return if nothing changed
20+
- **`apply_all_tweaks`** — confirmation prompt removed; function moved before `tweaks_menu`
21+
- **Label renames** — "Terminal" → "Terminal Emulator", "Install macrift profile" → "Apply theme profile", "Both" → "Starship + .zshrc", "Apply config from macrift" → "Apply config"
22+
- **Spotify menu item** relabeled to "Spotify (SpotX + Spicetify)"
23+
24+
### Packages
25+
26+
- **Dev** — added `fastfetch`, `macmon`, `mas`, `mole`, `t3-code`, `android-platform-tools`; replaced `docker` with `docker-desktop`
27+
- **Utils** — added `betterdisplay`, `logi-options+`, `macs-fan-control`, `supercorners`
28+
- **Media** — added `affinity`
29+
- **App Store** — removed CapCut, v2RayTun
30+
31+
### VSCode settings
32+
33+
- Complete overhaul with annotated sections: Workbench, Explorer, Tabbar, Cursor, Editor, Fonts & Lines
34+
- Sidebar left; status bar hidden; single active tab; compact tabs; `Maple Mono` UI font; `Fira Code` 16px; `source.organizeImports` on save; tabs (not spaces)
35+
36+
### Removed
37+
38+
- `stubs/status-bar.md`
39+
40+
---
41+
342
## 26.03
443

544
### New

README.md

Lines changed: 90 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,39 @@
22

33
# macrift
44

5-
**Interactive macOS setup & customization tool — tweak, configure, harden**
5+
**Preview every macOS change before it happens — then apply with one key**
6+
7+
<img src="media/demo.gif" alt="macrift main menus" width="90%">
68

79
<a href="https://github.com/emylfy/macrift/stargazers"><img src="https://img.shields.io/github/stars/emylfy/macrift?style=for-the-badge&logo=starship&color=C9CBFF&logoColor=C9CBFF&labelColor=302D41" alt="GitHub Stars"></a>&nbsp;&nbsp;
810
<a href="https://github.com/emylfy/macrift/blob/main/LICENSE"><img src="https://img.shields.io/github/license/emylfy/macrift?style=for-the-badge&logo=apache&color=CBA6F7&logoColor=CBA6F7&labelColor=302D41&label=License" alt="License"></a>&nbsp;&nbsp;
9-
<a href="https://github.com/emylfy/macrift/commits/main/"><img src="https://img.shields.io/github/last-commit/emylfy/macrift?style=for-the-badge&logo=github&logoColor=eba0ac&label=Last%20Commit&labelColor=302D41&color=eba0ac" alt="Last Commit"></a>
10-
11-
<!-- <img src="media/screenshot.png" alt="macrift terminal interface" width="90%"> -->
11+
<a href="https://github.com/emylfy/macrift/commits/main/"><img src="https://img.shields.io/github/last-commit/emylfy/macrift?style=for-the-badge&logo=github&logoColor=eba0ac&label=Last%20Commit&labelColor=302D41&color=eba0ac" alt="Last Commit"></a>&nbsp;&nbsp;
12+
<a href="https://github.com/emylfy/macrift/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/emylfy/macrift/ci.yml?style=for-the-badge&logo=github-actions&logoColor=a6e3a1&label=CI&labelColor=302D41&color=a6e3a1" alt="CI"></a>
1213

1314
</div>
1415

1516
<h6 align="center">
17+
<a href="#why">Why macrift?</a> ·
1618
<a href="#quick-start">Quick Start</a> ·
1719
<a href="#features">Features</a> ·
1820
<a href="#customize">Customize</a>
1921
</h6>
2022

2123
---
2224

25+
<a id="why"></a>
26+
27+
## Why macrift?
28+
29+
Fresh Mac → full setup in minutes.
30+
31+
- **See before you touch** — every system tweak shows a diff table before writing anything. 48 tweaks across 7 categories, all audited
32+
- **75 curated packages** — 7 Homebrew bundles + Mac App Store, installed via multi-select
33+
- **11 bundled configs** — terminal profiles, shell aliases, editor settings, dock layout — ready to apply
34+
- **Profile export/import** — save your entire setup (Brewfile, macOS defaults, dotfiles, editor settings, iTerm2, dock layout) and restore it anywhere
35+
36+
---
37+
2338
<a id="quick-start"></a>
2439

2540
## Quick Start
@@ -29,30 +44,45 @@ bash <(curl -fsSL https://raw.githubusercontent.com/emylfy/macrift/main/install.
2944
```
3045

3146
Installs to `~/.macrift`, creates a global `macrift` command, and launches automatically.
47+
Doesn't touch your system until you choose what to apply.
48+
49+
<details>
50+
<summary>Alternative: manual clone</summary>
51+
52+
```bash
53+
git clone https://github.com/emylfy/macrift.git ~/.macrift && ~/.macrift/macrift.sh
54+
```
3255

33-
> [!NOTE]
34-
> Every `defaults write` change is previewed in a table (current vs new) before applying. Config files are backed up before overwriting.
56+
</details>
57+
58+
<details>
59+
<summary>CLI flags</summary>
60+
61+
| Flag | Description |
62+
| :------------- | :-------------------------------------------- |
63+
| `--dry-run` | Show what would change without applying |
64+
| `--no-confirm` | Skip all confirmation prompts (auto-approve) |
65+
| `--log` | Write session log to `~/.macrift/macrift.log` |
66+
| `--version` | Print version and exit |
67+
| `--help` | Show usage info |
68+
69+
</details>
3570

3671
---
3772

3873
<a id="features"></a>
3974

4075
## Features
4176

42-
| | Feature | What it does |
43-
| :-- | :----------------------- | :---------------------------------------------------------------------- |
44-
| ⚙️ | **System Tweaks** | Dock, Finder, Keyboard, Trackpad, Screenshots, Hot Corners, Misc |
45-
| 📦 | **Apps & Packages** | 7 Homebrew bundles, Mac App Store, Spotify, .brewbak backup |
46-
| 🎨 | **Customize** | Terminal, Shell, Editor, Dock Layout, Spicetify, Wallpapers |
47-
| 🛡️ | **Security & Privacy** | privacy.sexy presets, hostname, encrypted DNS, analytics off |
48-
| 🧹 | **Cleanup** | System cleanup via Mole — caches, logs, leftovers |
77+
| | Feature | What it does |
78+
| :-- | :--------------------- | :-------------------------------------------------------------------------- |
79+
| ⚙️ | **System Tweaks** | Dock, Finder, Keyboard, Trackpad, Screenshots, Hot Corners, Misc |
80+
| 📦 | **Apps & Packages** | 7 Homebrew bundles, Mac App Store, Spotify, .brewbak backup |
81+
| 🎨 | **Customize** | Terminal, Shell, Editor, Dock Layout, Wallpapers, Profile Backup |
82+
| 🛡️ | **Security & Privacy** | Security status, privacy.sexy presets, hostname, encrypted DNS |
83+
| 🧹 | **Cleanup** | System cleanup via Mole — caches, logs, leftovers |
4984

50-
<br>
51-
52-
<details>
53-
<summary><strong>⚙️ System Tweaks — all categories</strong></summary>
54-
55-
<br>
85+
### ⚙️ System Tweaks
5686

5787
Every tweak shows a diff table before applying. Choose individually or apply all at once.
5888

@@ -66,53 +96,37 @@ Every tweak shows a diff table before applying. Choose individually or apply all
6696
| Hot Corners | Interactive corner action picker |
6797
| Misc | Boot sound, app open dialog, save/print panels, window animations |
6898

69-
</details>
70-
71-
<details>
72-
<summary><strong>📦 Apps & Packages</strong></summary>
73-
74-
<br>
99+
### 📦 Apps & Packages
75100

76101
**Homebrew Bundles** — multi-select installer with 7 curated Brewfiles:
77102

78-
- **Development** — git, gh, lazygit, node, python, go, rust, neovim, fzf, ripgrep, bat, eza, fd...
79-
- **Utilities** — Raycast, Alfred, HiddenBar, Keka, AltTab, SoundSource...
103+
- **Development** — git, gh, lazygit, node, python, go, rust, neovim, fzf, ripgrep, bat, eza, fd, fastfetch, macmon, mas, mole, scrcpy, t3-code, android-platform-tools...
104+
- **Utilities** — Raycast, Alfred, HiddenBar, Keka, AltTab, SoundSource, BetterDisplay, Logi Options+, Macs Fan Control, SuperCorners...
80105
- **Browsers** — Chrome, Arc, Zen, Ungoogled Chromium
81106
- **Communication** — Ayugram, Telegram, Discord, Slack, Zoom
82-
- **Media** — IINA, OBS, Spotify, Figma, ImageOptim
107+
- **Media** — IINA, OBS, Spotify, Figma, ImageOptim, Affinity
83108
- **Games** — Steam, Heroic Games Launcher, Modrinth
84109
- **Fonts** — Fira Code, Maple Mono, JetBrains Mono (Nerd Fonts)
85110

86111
**Mac App Store** — install apps via `mas` with multiselect.
87112

88113
Export/import your packages with `.brewbak` backup files.
89114

90-
**Spotify**[SpotX](https://github.com/SpotX-Official/SpotX-Bash) ad blocker + [Spicetify](https://spicetify.app) customization framework.
115+
**Spotify**[SpotX](https://github.com/SpotX-Official/SpotX-Bash) ad blocker + [Spicetify](https://spicetify.app) customization framework + marketplace backup restore.
91116

92-
</details>
93-
94-
<details>
95-
<summary><strong>🛡️ Security & Privacy</strong></summary>
96-
97-
<br>
117+
### 🛡️ Security & Privacy
98118

99-
| Tool | Description |
100-
| :------------------------------------------ | :------------------------------------------------- |
101-
| **[privacy.sexy](https://privacy.sexy)** | Custom or standard macOS hardening preset |
102-
| **Hostname** | Set custom hostname — hide your name from the network |
103-
| **Encrypted DNS** | Quad9 (9.9.9.9) with malware blocking and DNSSEC |
104-
| **Homebrew analytics** | One-click disable |
119+
| Tool | Description |
120+
| :--------------------------------------- | :----------------------------------------------------------------------------------------------- |
121+
| **Security Status** | FileVault, Firewall, SIP, Gatekeeper — at a glance; toggle Gatekeeper on/off |
122+
| **[privacy.sexy](https://privacy.sexy)** | Custom or standard macOS hardening preset |
123+
| **Hostname** | Set custom hostname — hide your name from the network |
124+
| **DNS Setup** | Choose from 11 providers: Cloudflare, Google, Quad9, OpenDNS, AdGuard, NextDNS, ControlD, and more |
105125

106-
</details>
107-
108-
<details>
109-
<summary><strong>🧹 Cleanup</strong></summary>
126+
### 🧹 Cleanup
110127

111-
<br>
112-
113-
System cleanup powered by [Mole](https://github.com/tw93/mole) — removes caches, logs, and leftover files.
114-
115-
</details>
128+
- **Homebrew Cleanup**`brew cleanup --prune=all && brew autoremove`
129+
- **Deep Clean** — powered by [Mole](https://github.com/tw93/mole), removes caches, logs, and leftover files
116130

117131
---
118132

@@ -122,46 +136,41 @@ System cleanup powered by [Mole](https://github.com/tw93/mole) — removes cache
122136

123137
Complete environment setup from one menu.
124138

125-
<details>
126-
<summary><strong>🖥️ Terminal & Shell</strong></summary>
127-
128-
<br>
139+
### 🖥️ Terminal & Shell
129140

130141
**Terminal** — install & configure [iTerm2](https://iterm2.com) or [Ghostty](https://ghostty.org):
131142

132143
- **iTerm2 Dynamic Profiles** — 3 presets (Cyberdrift, Nord Frost, Tokyo Night) with JetBrainsMono Nerd Font, auto-set as default
133144
- **iTerm2 Defaults** — GPU renderer, compact tabs, hidden scrollbar, focus follows mouse
134-
- **Ghostty** — config from `config/ghostty/`
145+
- **Ghostty** — config from `config/ghostty/`; Catppuccin Mocha and Latte themes downloaded automatically
135146

136147
**Shell**[Starship](https://starship.rs) prompt + [FastFetch](https://github.com/fastfetch-cli/fastfetch) + `.zshrc` with modern aliases:
137148

138-
| Alias | Tool |
139-
| :------------ | :---------------------------------------------- |
140-
| `ls` `ll` `lt`| [eza](https://github.com/eza-community/eza) with icons and tree view |
141-
| `cat` | [bat](https://github.com/sharkdp/bat) with syntax highlighting |
142-
| `grep` | [ripgrep](https://github.com/BurntSushi/ripgrep) |
143-
| `find` | [fd](https://github.com/sharkdp/fd) |
144-
| `g` `lg` | git, [lazygit](https://github.com/jesseduffield/lazygit) |
149+
<details>
150+
<summary>Shell aliases</summary>
151+
152+
| Alias | Tool |
153+
| :------------- | :------------------------------------------------------------------- |
154+
| `ls` `ll` `lt` | [eza](https://github.com/eza-community/eza) with icons and tree view |
155+
| `cat` | [bat](https://github.com/sharkdp/bat) with syntax highlighting |
156+
| `grep` | [ripgrep](https://github.com/BurntSushi/ripgrep) |
157+
| `find` | [fd](https://github.com/sharkdp/fd) |
158+
| `g` `lg` | git, [lazygit](https://github.com/jesseduffield/lazygit) |
145159

146160
</details>
147161

148-
<details>
149-
<summary><strong>📝 Code Editors</strong></summary>
150-
151-
<br>
162+
### 📝 Code Editors
152163

153164
Shared `settings.json` applied to any of these editors:
154165

155166
- [VSCode](https://code.visualstudio.com) · [Cursor](https://cursor.sh) · [Windsurf](https://codeium.com/windsurf) · [VSCodium](https://vscodium.com) · [Zed](https://zed.dev)
156167

157-
FiraCode Nerd Font, format on save, ligatures, sidebar right, telemetry off.
168+
Fira Code, format on save, ligatures, sidebar left, telemetry off.
158169

159-
</details>
170+
**Extensions** — multi-select installer from `config/vscode/extensions.txt`; auto-detects `code`/`cursor`/`codium` CLI.
160171

161172
<details>
162-
<summary><strong>🗂️ Dock Layout</strong></summary>
163-
164-
<br>
173+
<summary>🗂️ Dock Layout</summary>
165174

166175
Config-file based dock management via [dockutil](https://github.com/kcrawford/dockutil):
167176

@@ -173,34 +182,30 @@ Config-file based dock management via [dockutil](https://github.com/kcrawford/do
173182
</details>
174183

175184
<details>
176-
<summary><strong>🎵 Spicetify Marketplace</strong></summary>
177-
178-
<br>
185+
<summary>🖼️ Wallpapers</summary>
179186

180-
Restore your Spicetify marketplace setup from backup — extensions, themes, and CSS snippets.
187+
- [Catppuccin wallpapers](https://github.com/zhichaoh/catppuccin-wallpapers)
188+
- [Gruvbox wallpapers](https://github.com/AngelJumworworbo/gruvbox-wallpapers)
189+
- [wallhaven.cc](https://wallhaven.cc)
190+
- [Curated collection](https://raindrop.io/emalfai/wallpaper-69077386)
181191

182192
</details>
183193

184194
<details>
185-
<summary><strong>🖼️ Wallpapers</strong></summary>
186-
187-
<br>
195+
<summary>📦 Profile Backup & Restore</summary>
188196

189-
Curated wallpaper links opened from the menu:
197+
Export your entire environment to a folder, import it on another Mac or after a clean install.
190198

191-
- [Personal collection](https://raindrop.io/emalfai/wallpaper-69077386) (Raindrop)
192-
- [Catppuccin wallpapers](https://github.com/zhichaoh/catppuccin-wallpapers)
193-
- [Gruvbox wallpapers](https://github.com/AngelJumworworbo/gruvbox-wallpapers)
194-
- [wallhaven.cc](https://wallhaven.cc)
199+
Includes: Brewfile, macOS defaults (Dock, Finder, Keyboard, Screenshots), dotfiles (.zshrc, Starship, FastFetch, Ghostty), editor settings (VSCode, Cursor, Zed), iTerm2 config, and dock layout.
195200

196201
</details>
197202

198203
---
199204

200205
<div align="center">
201206

202-
[MIT License](LICENSE) · [Report a Bug](https://github.com/emylfy/macrift/issues)
207+
[MIT License](LICENSE) · [Changelog](CHANGELOG.md) · [Report a Bug](https://github.com/emylfy/macrift/issues)
203208

204-
<sub>If macrift saved you time, consider leaving a ⭐</sub>
209+
<sub>If this saved you time, a star helps others find it</sub>
205210

206211
</div>

apps/apps_menu.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ apps_menu() {
99
choice=$(show_menu "Apps & Packages" \
1010
"Homebrew Bundles" \
1111
"Mac App Store" \
12-
"Spotify" \
12+
"Spotify (SpotX + Spicetify)" \
1313
"Back")
1414

1515
case "$choice" in

0 commit comments

Comments
 (0)