Compare commits

..

11 Commits

Author SHA1 Message Date
graham 229ff7dea0 2026-05-13 2026-05-13 20:09:01 -04:00
graham 967565c80b 2026-02-11 2026-02-11 09:38:52 -05:00
graham 4361c5f17b 2026-02-04 2026-02-04 13:56:02 -05:00
graham d56aba7823 2026-02-04 2026-02-04 12:12:29 -05:00
graham 4956885496 2026-01-30 2026-01-30 10:28:02 -05:00
graham 223616e1ec 2025-12-26 2025-12-26 17:45:28 -05:00
graham eef10fc372 2025-12-26 2025-12-26 13:02:15 -05:00
graham c6364da38f 2025-12-26 2025-12-26 12:56:45 -05:00
graham d0275c334b 2025-12-15 2025-12-15 18:04:28 -05:00
graham ed1504aff0 2025-12-05 2025-12-05 16:23:16 -05:00
graham d171c94478 2025-10-14 2025-10-14 18:56:06 -04:00
20 changed files with 1422 additions and 139 deletions
+98 -39
View File
@@ -2,40 +2,56 @@ tap "charmbracelet/tap"
tap "dotenvx/brew"
tap "ghall89/tap"
tap "marsanne/cask"
tap "oven-sh/bun"
brew "jq"
brew "ansiweather"
tap "simonbs/wut", "https://github.com/simonbs/wut.git"
tap "tw93/tap"
brew "age"
brew "xz"
brew "apfel"
brew "atuin"
brew "autoconf"
brew "automake"
brew "bazel"
brew "bchunk"
brew "openssl@3"
brew "bento4"
brew "btop"
brew "coreutils"
brew "cask"
brew "cloc"
brew "libyaml"
brew "openssl@3"
brew "cocoapods"
brew "coreutils"
brew "create-dmg"
brew "csvkit"
brew "deno"
brew "eslint"
brew "exiv2"
brew "eza"
brew "fastfetch"
brew "fd"
brew "ffmpeg"
brew "fish"
brew "flyctl"
brew "fresh-editor"
brew "fzf"
brew "gamdl"
brew "ggc"
brew "gh"
brew "git"
brew "git-extras"
brew "git-split-diffs"
brew "gitmoji"
brew "gitui"
brew "glow"
brew "gnupg"
brew "go"
brew "go-task"
brew "gum"
brew "helix"
brew "icu4c@76"
brew "libheif"
brew "imagemagick"
brew "jq"
brew "kew"
brew "lazygit"
brew "libffi"
brew "loc"
@@ -44,81 +60,104 @@ brew "man2html"
brew "mas"
brew "micro"
brew "mint"
brew "mistral-vibe"
brew "nvm"
brew "oh-my-posh"
brew "ollama"
brew "openssl@1.1"
brew "pandoc"
brew "parallel"
brew "pkgconf"
brew "pnpm"
brew "python@3.10"
brew "ripgrep"
brew "rubyfmt"
brew "rust"
brew "rust-analyzer"
brew "sf-pwgen"
brew "sops"
brew "speedtest-cli"
brew "superfile"
brew "swift-format"
brew "swiftdraw"
brew "swiftlint"
brew "tea"
brew "telnet"
brew "thefuck"
brew "toot"
brew "trash"
brew "typst"
brew "vapor"
brew "vlang"
brew "watchman"
brew "wget"
brew "yarn"
brew "yazi"
brew "yt-dlp"
brew "zig"
brew "zlib"
brew "zls"
brew "zoxide"
brew "charmbracelet/tap/crush"
brew "dotenvx/brew/dotenvx"
brew "oven-sh/bun/bun"
brew "simonbs/wut/wut"
brew "tw93/tap/mole"
cask "affinity"
cask "airbuddy"
cask "alfred"
cask "appflowy"
cask "applite"
cask "arq"
cask "autodock"
cask "bbedit"
cask "bettershot"
cask "butterkit"
cask "claude-code"
cask "coderabbit"
cask "cog-app"
cask "codex"
cask "contexts"
cask "cork"
cask "daisydisk"
cask "devcleaner"
cask "discord"
cask "ea"
cask "equinox"
cask "find-any-file"
cask "fork"
cask "forklift"
cask "gb-studio"
cask "ghostty"
cask "gog-galaxy"
cask "gram"
cask "hazel"
cask "helium-browser"
cask "iina"
cask "imageoptim"
cask "istat-menus"
cask "jordanbaird-ice"
cask "keka"
cask "key-codes"
cask "keyboardcleantool"
cask "keystash"
cask "knockknock"
cask "lulu"
cask "ghall89/tap/keystash"
cask "mac-mouse-fix"
cask "mactracker"
cask "markedit"
cask "mullvad-vpn"
cask "musicbrainz-picard"
cask "nova"
cask "onyx@beta"
cask "openemu"
cask "orbstack"
cask "orion"
cask "paletro"
cask "pearcleaner"
cask "postgres-unofficial"
cask "postgres-app"
cask "qlmarkdown"
cask "quicklook-json"
cask "raycast"
cask "rapidapi"
cask "rectangle-pro"
cask "rocket"
cask "siphon"
cask "slack"
cask "soulseek"
cask "spamsieve"
cask "steam"
cask "swift-shift"
cask "swiftformat-for-xcode"
cask "sync"
cask "tableplus"
cask "tic80"
cask "tunnelblick"
cask "vanilla"
cask "visual-studio-code"
cask "vivaldi"
cask "thaw"
cask "unclack"
cask "vscodium"
cask "whatsapp"
cask "windowkeys"
cask "xscope"
cask "zed"
cask "zen"
@@ -129,49 +168,56 @@ mas "Affinity Photo 2", id: 1616822987
mas "Anybox", id: 1593408455
mas "Bakery", id: 1575220747
mas "Baking Soda", id: 1601151613
mas "Balatro", id: 6502451661
mas "Battery Indicator", id: 1206020918
mas "Bear", id: 1091189122
mas "brrr", id: 6755617665
mas "Codye", id: 1516894961
mas "Collections", id: 1568395334
mas "Color Picker", id: 1545870783
mas "Coppice", id: 6741889046
mas "Dato", id: 1470584107
mas "DevCleaner", id: 1388020431
mas "Developer", id: 640199958
mas "Dice by PCalc", id: 1479250666
mas "Dropover", id: 1355679052
mas "Equinox", id: 1591510203
mas "Expenses", id: 1492055171
mas "Find Any File", id: 0
mas "Find Any File", id: 402569179
mas "Folder Quick Look", id: 6753110395
mas "Front and Center", id: 1493996622
mas "Gifski", id: 1351639930
mas "HEIC Converter", id: 1294126402
mas "HTTPBot", id: 1232603544
mas "Ice Cubes", id: 6444915884
mas "Interactful", id: 1528095640
mas "Ivory", id: 6444602274
mas "JSON Peep", id: 1458969831
mas "Key Codes", id: 414568915
mas "Keynote", id: 409183694
mas "Keynote", id: 361285480
mas "LiquidFetch", id: 6757637185
mas "Little Snitch Mini", id: 1629008763
mas "Lungo", id: 1263070803
mas "Mactracker", id: 430255202
mas "Numbers", id: 409203825
mas "Mockup", id: 1527554407
mas "Numbers", id: 361304891
mas "Online Check", id: 6504709660
mas "Page Screenshot for Safari", id: 1472715727
mas "Pages", id: 409201541
mas "Pages", id: 361309726
mas "Parcel", id: 375589283
mas "Pastel", id: 413897608
mas "Pixelmator Pro", id: 6746662575
mas "Pixelmator Pro", id: 1289583905
mas "Pixen", id: 525180431
mas "Pocket City 2", id: 6742559886
mas "Pure Paste", id: 1611378436
mas "Raycast Companion", id: 6738274497
mas "Reeder", id: 6475002485
mas "Shareful", id: 1522267256
mas "Sleeve", id: 1606145041
mas "Snippety", id: 1530751461
mas "Soulver 3", id: 1508732804
mas "Tapestry", id: 6448078074
mas "TestFlight", id: 899247664
mas "Text Workflow", id: 1600520682
mas "Textastic", id: 572491815
mas "Tot", id: 1491071483
mas "Transporter", id: 1450874784
mas "uBlock Origin Lite", id: 6745342698
@@ -179,26 +225,39 @@ mas "Velja", id: 1607635845
mas "Vinegar", id: 1591303229
mas "WhatsApp", id: 310633997
mas "WorldWideWeb", id: 1621370168
vscode "akamud.vscode-theme-onelight"
vscode "astro-build.astro-vscode"
vscode "biomejs.biome"
vscode "bradlc.vscode-tailwindcss"
vscode "christian-kohler.npm-intellisense"
vscode "codeliger.pirate-map"
vscode "csstools.postcss"
vscode "dbaeumer.vscode-eslint"
vscode "dnicolson.binary-plist"
vscode "esbenp.prettier-vscode"
vscode "golang.go"
vscode "icrawl.discord-vscode"
vscode "littensy.charmed-icons"
vscode "lkytal.flatui"
vscode "llvm-vs-code-extensions.lldb-dap"
vscode "mechatroner.rainbow-csv"
vscode "ms-vscode.makefile-tools"
vscode "orta.vscode-jest"
vscode "oven.bun-vscode"
vscode "pollywoggames.pico8-ls"
vscode "prisma.prisma"
vscode "redhat.vscode-xml"
vscode "ripplejs.ripple-vscode-plugin"
vscode "rust-lang.rust-analyzer"
vscode "shopify.ruby-lsp"
vscode "svelte.svelte-vscode"
vscode "swiftlang.swift-vscode"
vscode "tamasfe.even-better-toml"
vscode "vue.volar"
vscode "task.vscode-task"
vscode "teabyii.ayu"
vscode "vknabel.vscode-swiftlint"
vscode "ziglang.vscode-zig"
go "github.com/go-delve/delve/cmd/dlv"
go "github.com/golangci/golangci-lint/cmd/golangci-lint"
go "golang.org/x/tools/gopls"
go "github.com/mgechev/revive"
go "honnef.co/go/tools/cmd/staticcheck"
+58
View File
@@ -0,0 +1,58 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'EOF'
Usage:
codex_guarded.sh [--cwd DIR] [--sandbox MODE] [--approval POLICY] [--] [codex args...]
Defaults:
--approval never
--sandbox read-only
--cwd current working directory
Description:
Launch Codex with deterministic non-interactive safety defaults.
EOF
}
CWD="$(pwd)"
SANDBOX="read-only"
APPROVAL="never"
FORWARD_ARGS=()
while [[ $# -gt 0 ]]; do
case "$1" in
--cwd)
CWD="$2"
shift 2
;;
--sandbox)
SANDBOX="$2"
shift 2
;;
--approval)
APPROVAL="$2"
shift 2
;;
-h|--help)
usage
exit 0
;;
--)
shift
FORWARD_ARGS+=("$@")
break
;;
*)
FORWARD_ARGS+=("$1")
shift
;;
esac
done
if [[ ${#FORWARD_ARGS[@]} -gt 0 ]]; then
exec codex -a "$APPROVAL" -s "$SANDBOX" -C "$CWD" "${FORWARD_ARGS[@]}"
else
exec codex -a "$APPROVAL" -s "$SANDBOX" -C "$CWD"
fi
+62
View File
@@ -0,0 +1,62 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'EOF'
Usage:
guard_apply_patch.sh PATCH_FILE [--cwd DIR] [--allow-deletes] [--max-files N] [--max-changed-lines N] [--allow-path-prefix PREFIX ...]
Description:
Validates a patch and applies it only if policy checks pass.
EOF
}
if [[ "${1:-}" == "-h" || "${1:-}" == "--help" || "${#}" -lt 1 ]]; then
usage
exit 0
fi
PATCH_FILE="$1"
shift
CWD="$(pwd)"
VALIDATOR_ARGS=()
while [[ $# -gt 0 ]]; do
case "$1" in
--cwd)
CWD="$2"
shift 2
;;
--allow-deletes)
VALIDATOR_ARGS+=("$1")
shift
;;
--max-files|--max-changed-lines|--allow-path-prefix)
VALIDATOR_ARGS+=("$1" "$2")
shift 2
;;
*)
VALIDATOR_ARGS+=("$1")
shift
;;
esac
done
if [[ ! -f "$PATCH_FILE" ]]; then
echo "Patch file not found: $PATCH_FILE" >&2
exit 1
fi
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VALIDATOR="$SCRIPT_DIR/guard_validate_patch.py"
python3 "$VALIDATOR" "$PATCH_FILE" --cwd "$CWD" "${VALIDATOR_ARGS[@]}"
echo "Validation passed. Running dry-run apply..."
patch -p1 --dry-run -d "$CWD" < "$PATCH_FILE"
echo "Applying patch..."
patch -p1 -d "$CWD" < "$PATCH_FILE"
echo "Done."
+166
View File
@@ -0,0 +1,166 @@
#!/usr/bin/env python3
"""
Generic patch validator scoped to a target working directory.
"""
from __future__ import annotations
import argparse
import pathlib
import re
import sys
DEFAULT_FORBIDDEN_BASENAMES = {
"Package.resolved",
"Podfile.lock",
"package-lock.json",
"yarn.lock",
"pnpm-lock.yaml",
"Cargo.lock",
"Gemfile.lock",
}
DEFAULT_FORBIDDEN_SUFFIXES = {
".xcconfig",
}
DEFAULT_FORBIDDEN_PATH_PATTERNS = (
re.compile(r"(^|/)\.git(/|$)"),
re.compile(r"(^|/)Info\.plist$"),
re.compile(r"(^|/)project\.pbxproj$"),
)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Validate unified diff patch by policy.")
parser.add_argument("patch_file", type=pathlib.Path)
parser.add_argument("--cwd", type=pathlib.Path, default=pathlib.Path.cwd())
parser.add_argument("--max-files", type=int, default=12)
parser.add_argument("--max-changed-lines", type=int, default=2000)
parser.add_argument("--allow-deletes", action="store_true")
parser.add_argument(
"--allow-path-prefix",
action="append",
default=[],
help="Allowed path prefix relative to --cwd. Repeatable. Defaults to all paths under --cwd.",
)
return parser.parse_args()
def fail(message: str) -> None:
print(f"FAIL: {message}", file=sys.stderr)
raise SystemExit(1)
def normalize_patch_path(raw: str) -> str | None:
raw = raw.strip()
if raw == "/dev/null":
return None
if raw.startswith("a/") or raw.startswith("b/"):
raw = raw[2:]
return raw
def is_safe_relative_path(path: str) -> bool:
p = pathlib.PurePosixPath(path)
if p.is_absolute():
return False
if ".." in p.parts:
return False
if path.startswith("./"):
return False
return True
def main() -> None:
args = parse_args()
if not args.patch_file.exists():
fail(f"patch file not found: {args.patch_file}")
cwd = args.cwd.resolve()
if not cwd.exists() or not cwd.is_dir():
fail(f"--cwd is not a directory: {cwd}")
text = args.patch_file.read_text(encoding="utf-8")
lines = text.splitlines()
added_lines = 0
removed_lines = 0
touched_files: list[str] = []
deleted_files: list[str] = []
for line in lines:
if line.startswith("+++ "):
path = normalize_patch_path(line[4:])
if path:
touched_files.append(path)
continue
if line.startswith("+") and not line.startswith("+++"):
added_lines += 1
continue
if line.startswith("-") and not line.startswith("---"):
removed_lines += 1
for match in re.finditer(r"^--- (.+)\n\+\+\+ (.+)$", text, flags=re.MULTILINE):
before = normalize_patch_path(match.group(1))
after = normalize_patch_path(match.group(2))
if before and after is None:
deleted_files.append(before)
unique_files = sorted(set(touched_files + deleted_files))
if not unique_files:
fail("no file changes detected")
if len(unique_files) > args.max_files:
fail(f"too many files changed: {len(unique_files)} > {args.max_files}")
changed_line_count = added_lines + removed_lines
if changed_line_count > args.max_changed_lines:
fail(
f"too many changed lines: {changed_line_count} > {args.max_changed_lines}"
)
allowed_prefixes = [p.strip("/") for p in args.allow_path_prefix if p.strip("/")]
for rel_path in unique_files:
if not is_safe_relative_path(rel_path):
fail(f"unsafe path in patch: {rel_path}")
if allowed_prefixes and not any(
rel_path == prefix or rel_path.startswith(prefix + "/")
for prefix in allowed_prefixes
):
fail(f"path not in allowed prefixes: {rel_path}")
basename = pathlib.PurePosixPath(rel_path).name
if basename in DEFAULT_FORBIDDEN_BASENAMES:
fail(f"forbidden file basename: {rel_path}")
if any(rel_path.endswith(s) for s in DEFAULT_FORBIDDEN_SUFFIXES):
fail(f"forbidden file suffix: {rel_path}")
if any(pattern.search(rel_path) for pattern in DEFAULT_FORBIDDEN_PATH_PATTERNS):
fail(f"forbidden file path: {rel_path}")
target_path = cwd / rel_path
try:
target_path.resolve().relative_to(cwd)
except ValueError:
fail(f"path escapes cwd scope: {rel_path}")
if deleted_files and not args.allow_deletes:
fail(
"deletions are blocked (use --allow-deletes): "
+ ", ".join(sorted(set(deleted_files)))
)
print("OK: patch passed validation")
print(f"cwd={cwd}")
print(f"files={len(unique_files)} changed_lines={changed_line_count}")
if __name__ == "__main__":
main()
View File
BIN
View File
Binary file not shown.
+2
View File
@@ -28,3 +28,5 @@
auto = true
[coderabbit]
machineId = cli/e407c8d66b9f497cb110e079e700f9e1
[pull]
rebase = true
+1
View File
@@ -3,3 +3,4 @@
.mappsrc
.claude/
+210
View File
@@ -0,0 +1,210 @@
## where to store your database, default is your system data directory
## linux/mac: ~/.local/share/atuin/history.db
## windows: %USERPROFILE%/.local/share/atuin/history.db
db_path = "~/Sync/Atuin/history.db"
## where to store your encryption key, default is your system data directory
## linux/mac: ~/.local/share/atuin/key
## windows: %USERPROFILE%/.local/share/atuin/key
key_path = "~/Sync/Atuin/key"
## where to store your auth session token, default is your system data directory
## linux/mac: ~/.local/share/atuin/session
## windows: %USERPROFILE%/.local/share/atuin/session
# session_path = "~/.session"
## date format used, either "us" or "uk"
# dialect = "us"
## default timezone to use when displaying time
## either "l", "local" to use the system's current local timezone, or an offset
## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]"
## for example: "+9", "-05", "+03:30", "-01:23:45", etc.
# timezone = "local"
## enable or disable automatic sync
# auto_sync = true
## enable or disable automatic update checks
# update_check = true
## address of the sync server
# sync_address = "https://api.atuin.sh"
## how often to sync history. note that this is only triggered when a command
## is ran, so sync intervals may well be longer
## set it to 0 to sync after every command
# sync_frequency = "10m"
## which search mode to use
## possible values: prefix, fulltext, fuzzy, skim
# search_mode = "fuzzy"
## which filter mode to use
## possible values: global, host, session, directory
# filter_mode = "global"
## With workspace filtering enabled, Atuin will filter for commands executed
## in any directory within a git repository tree (default: false)
# workspaces = false
## which filter mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "filter_mode"
## leave unspecified to use same mode set in "filter_mode"
# filter_mode_shell_up_key_binding = "global"
## which search mode to use when atuin is invoked from a shell up-key binding
## the accepted values are identical to those of "search_mode"
## leave unspecified to use same mode set in "search_mode"
# search_mode_shell_up_key_binding = "fuzzy"
## which style to use
## possible values: auto, full, compact
style = "auto"
## the maximum number of lines the interface should take up
## set it to 0 to always go full screen
inline_height = 0
## Invert the UI - put the search bar at the top , Default to `false`
# invert = false
## enable or disable showing a preview of the selected command
## useful when the command is longer than the terminal width and is cut off
# show_preview = false
## what to do when the escape key is pressed when searching
## possible values: return-original, return-query
# exit_mode = "return-original"
## possible values: emacs, subl
# word_jump_mode = "emacs"
## characters that count as a part of a word
# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
## number of context lines to show when scrolling by pages
# scroll_context_lines = 1
## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts
## alt-0 .. alt-9
# ctrl_n_shortcuts = false
## default history list format - can also be specified with the --format arg
# history_format = "{time}\t{command}\t{duration}"
## prevent commands matching any of these regexes from being written to history.
## Note that these regular expressions are unanchored, i.e. if they don't start
## with ^ or end with $, they'll match anywhere in the command.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# history_filter = [
# "^secret-cmd",
# "^innocuous-cmd .*--secret=.+",
# ]
## prevent commands run with cwd matching any of these regexes from being written
## to history. Note that these regular expressions are unanchored, i.e. if they don't
## start with ^ or end with $, they'll match anywhere in CWD.
## For details on the supported regular expression syntax, see
## https://docs.rs/regex/latest/regex/#syntax
# cwd_filter = [
# "^/very/secret/area",
# ]
## Configure the maximum height of the preview to show.
## Useful when you have long scripts in your history that you want to distinguish
## by more than the first few lines.
# max_preview_height = 4
## Configure whether or not to show the help row, which includes the current Atuin
## version (and whether an update is available), a keymap hint, and the total
## amount of commands in your history.
# show_help = true
## Configure whether or not to show tabs for search and inspect
# show_tabs = true
## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include
## 1. AWS key id
## 2. Github pat (old and new)
## 3. Slack oauth tokens (bot, user)
## 4. Slack webhooks
## 5. Stripe live/test keys
# secrets_filter = true
## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit.
# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise.
enter_accept = true
search_mode = "daemon-fuzzy"
## Defaults to "emacs". This specifies the keymap on the startup of `atuin
## search`. If this is set to "auto", the startup keymap mode in the Atuin
## search is automatically selected based on the shell's keymap where the
## keybinding is defined. If this is set to "emacs", "vim-insert", or
## "vim-normal", the startup keymap mode in the Atuin search is forced to be
## the specified one.
# keymap_mode = "auto"
## Cursor style in each keymap mode. If specified, the cursor style is changed
## in entering the cursor shape. Available values are "default" and
## "{blink,steady}-{block,underline,bar}".
# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" }
# network_connect_timeout = 5
# network_timeout = 5
## Timeout (in seconds) for acquiring a local database connection (sqlite)
# local_timeout = 5
## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc.
## Alternatively, set env NO_MOTION=true
# prefers_reduced_motion = false
[stats]
## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl
# common_subcommands = [
# "apt",
# "cargo",
# "composer",
# "dnf",
# "docker",
# "git",
# "go",
# "ip",
# "kubectl",
# "nix",
# "nmcli",
# "npm",
# "pecl",
# "pnpm",
# "podman",
# "port",
# "systemctl",
# "tmux",
# "yarn",
# ]
## Set commands that should be totally stripped and ignored from stats
# common_prefix = ["sudo"]
## Set commands that will be completely ignored from stats
# ignored_commands = [
# "cd",
# "ls",
# "vi"
# ]
[keys]
# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry.
# scroll_exits = false
[sync]
# Enable sync v2 by default
# This ensures that sync v2 is enabled for new installs only
# In a later release it will become the default across the board
records = true
[daemon]
enabled = true
autostart = true
+5 -3
View File
@@ -1,4 +1,4 @@
theme = dark: Afterglow,light: Adwaita
theme = dark: Andromeda,light: 3024 Day
macos-secure-input-indication = true
cursor-style = underline
@@ -11,10 +11,12 @@ font-thicken = true
selection-invert-fg-bg = true
window-height = 34
window-width = 120
window-width = 110
window-padding-x = 5
window-padding-y = 5
window-padding-balance = true
background-opacity=0.95
background-opacity=0.98
background-blur=true
+594
View File
@@ -0,0 +1,594 @@
[
{
"emoji": "🎨",
"entity": "&#x1f3a8;",
"code": ":art:",
"description": "Improve structure / format of the code.",
"name": "art",
"semver": null
},
{
"emoji": "⚡️",
"entity": "&#x26a1;",
"code": ":zap:",
"description": "Improve performance.",
"name": "zap",
"semver": "patch"
},
{
"emoji": "🔥",
"entity": "&#x1f525;",
"code": ":fire:",
"description": "Remove code or files.",
"name": "fire",
"semver": null
},
{
"emoji": "🐛",
"entity": "&#x1f41b;",
"code": ":bug:",
"description": "Fix a bug.",
"name": "bug",
"semver": "patch"
},
{
"emoji": "🚑️",
"entity": "&#128657;",
"code": ":ambulance:",
"description": "Critical hotfix.",
"name": "ambulance",
"semver": "patch"
},
{
"emoji": "✨",
"entity": "&#x2728;",
"code": ":sparkles:",
"description": "Introduce new features.",
"name": "sparkles",
"semver": "minor"
},
{
"emoji": "📝",
"entity": "&#x1f4dd;",
"code": ":memo:",
"description": "Add or update documentation.",
"name": "memo",
"semver": null
},
{
"emoji": "🚀",
"entity": "&#x1f680;",
"code": ":rocket:",
"description": "Deploy stuff.",
"name": "rocket",
"semver": null
},
{
"emoji": "💄",
"entity": "&#ff99cc;",
"code": ":lipstick:",
"description": "Add or update the UI and style files.",
"name": "lipstick",
"semver": "patch"
},
{
"emoji": "🎉",
"entity": "&#127881;",
"code": ":tada:",
"description": "Begin a project.",
"name": "tada",
"semver": null
},
{
"emoji": "✅",
"entity": "&#x2705;",
"code": ":white_check_mark:",
"description": "Add, update, or pass tests.",
"name": "white-check-mark",
"semver": null
},
{
"emoji": "🔒️",
"entity": "&#x1f512;",
"code": ":lock:",
"description": "Fix security or privacy issues.",
"name": "lock",
"semver": "patch"
},
{
"emoji": "🔐",
"entity": "&#x1f510;",
"code": ":closed_lock_with_key:",
"description": "Add or update secrets.",
"name": "closed-lock-with-key",
"semver": null
},
{
"emoji": "🔖",
"entity": "&#x1f516;",
"code": ":bookmark:",
"description": "Release / Version tags.",
"name": "bookmark",
"semver": null
},
{
"emoji": "🚨",
"entity": "&#x1f6a8;",
"code": ":rotating_light:",
"description": "Fix compiler / linter warnings.",
"name": "rotating-light",
"semver": null
},
{
"emoji": "🚧",
"entity": "&#x1f6a7;",
"code": ":construction:",
"description": "Work in progress.",
"name": "construction",
"semver": null
},
{
"emoji": "💚",
"entity": "&#x1f49a;",
"code": ":green_heart:",
"description": "Fix CI Build.",
"name": "green-heart",
"semver": null
},
{
"emoji": "⬇️",
"entity": "⬇️",
"code": ":arrow_down:",
"description": "Downgrade dependencies.",
"name": "arrow-down",
"semver": "patch"
},
{
"emoji": "⬆️",
"entity": "⬆️",
"code": ":arrow_up:",
"description": "Upgrade dependencies.",
"name": "arrow-up",
"semver": "patch"
},
{
"emoji": "📌",
"entity": "&#x1F4CC;",
"code": ":pushpin:",
"description": "Pin dependencies to specific versions.",
"name": "pushpin",
"semver": "patch"
},
{
"emoji": "👷",
"entity": "&#x1f477;",
"code": ":construction_worker:",
"description": "Add or update CI build system.",
"name": "construction-worker",
"semver": null
},
{
"emoji": "📈",
"entity": "&#x1F4C8;",
"code": ":chart_with_upwards_trend:",
"description": "Add or update analytics or track code.",
"name": "chart-with-upwards-trend",
"semver": "patch"
},
{
"emoji": "♻️",
"entity": "&#x267b;",
"code": ":recycle:",
"description": "Refactor code.",
"name": "recycle",
"semver": null
},
{
"emoji": "",
"entity": "&#10133;",
"code": ":heavy_plus_sign:",
"description": "Add a dependency.",
"name": "heavy-plus-sign",
"semver": "patch"
},
{
"emoji": "",
"entity": "&#10134;",
"code": ":heavy_minus_sign:",
"description": "Remove a dependency.",
"name": "heavy-minus-sign",
"semver": "patch"
},
{
"emoji": "🔧",
"entity": "&#x1f527;",
"code": ":wrench:",
"description": "Add or update configuration files.",
"name": "wrench",
"semver": "patch"
},
{
"emoji": "🔨",
"entity": "&#128296;",
"code": ":hammer:",
"description": "Add or update development scripts.",
"name": "hammer",
"semver": null
},
{
"emoji": "🌐",
"entity": "&#127760;",
"code": ":globe_with_meridians:",
"description": "Internationalization and localization.",
"name": "globe-with-meridians",
"semver": "patch"
},
{
"emoji": "✏️",
"entity": "&#59161;",
"code": ":pencil2:",
"description": "Fix typos.",
"name": "pencil2",
"semver": "patch"
},
{
"emoji": "💩",
"entity": "&#58613;",
"code": ":poop:",
"description": "Write bad code that needs to be improved.",
"name": "poop",
"semver": null
},
{
"emoji": "⏪️",
"entity": "&#9194;",
"code": ":rewind:",
"description": "Revert changes.",
"name": "rewind",
"semver": "patch"
},
{
"emoji": "🔀",
"entity": "&#128256;",
"code": ":twisted_rightwards_arrows:",
"description": "Merge branches.",
"name": "twisted-rightwards-arrows",
"semver": null
},
{
"emoji": "📦️",
"entity": "&#1F4E6;",
"code": ":package:",
"description": "Add or update compiled files or packages.",
"name": "package",
"semver": "patch"
},
{
"emoji": "👽️",
"entity": "&#1F47D;",
"code": ":alien:",
"description": "Update code due to external API changes.",
"name": "alien",
"semver": "patch"
},
{
"emoji": "🚚",
"entity": "&#1F69A;",
"code": ":truck:",
"description": "Move or rename resources (e.g.: files, paths, routes).",
"name": "truck",
"semver": null
},
{
"emoji": "📄",
"entity": "&#1F4C4;",
"code": ":page_facing_up:",
"description": "Add or update license.",
"name": "page-facing-up",
"semver": null
},
{
"emoji": "💥",
"entity": "&#x1f4a5;",
"code": ":boom:",
"description": "Introduce breaking changes.",
"name": "boom",
"semver": "major"
},
{
"emoji": "🍱",
"entity": "&#1F371",
"code": ":bento:",
"description": "Add or update assets.",
"name": "bento",
"semver": "patch"
},
{
"emoji": "♿️",
"entity": "&#9855;",
"code": ":wheelchair:",
"description": "Improve accessibility.",
"name": "wheelchair",
"semver": "patch"
},
{
"emoji": "💡",
"entity": "&#128161;",
"code": ":bulb:",
"description": "Add or update comments in source code.",
"name": "bulb",
"semver": null
},
{
"emoji": "🍻",
"entity": "&#x1f37b;",
"code": ":beers:",
"description": "Write code drunkenly.",
"name": "beers",
"semver": null
},
{
"emoji": "💬",
"entity": "&#128172;",
"code": ":speech_balloon:",
"description": "Add or update text and literals.",
"name": "speech-balloon",
"semver": "patch"
},
{
"emoji": "🗃️",
"entity": "&#128451;",
"code": ":card_file_box:",
"description": "Perform database related changes.",
"name": "card-file-box",
"semver": "patch"
},
{
"emoji": "🔊",
"entity": "&#128266;",
"code": ":loud_sound:",
"description": "Add or update logs.",
"name": "loud-sound",
"semver": null
},
{
"emoji": "🔇",
"entity": "&#128263;",
"code": ":mute:",
"description": "Remove logs.",
"name": "mute",
"semver": null
},
{
"emoji": "👥",
"entity": "&#128101;",
"code": ":busts_in_silhouette:",
"description": "Add or update contributor(s).",
"name": "busts-in-silhouette",
"semver": null
},
{
"emoji": "🚸",
"entity": "&#128696;",
"code": ":children_crossing:",
"description": "Improve user experience / usability.",
"name": "children-crossing",
"semver": "patch"
},
{
"emoji": "🏗️",
"entity": "&#1f3d7;",
"code": ":building_construction:",
"description": "Make architectural changes.",
"name": "building-construction",
"semver": null
},
{
"emoji": "📱",
"entity": "&#128241;",
"code": ":iphone:",
"description": "Work on responsive design.",
"name": "iphone",
"semver": "patch"
},
{
"emoji": "🤡",
"entity": "&#129313;",
"code": ":clown_face:",
"description": "Mock things.",
"name": "clown-face",
"semver": null
},
{
"emoji": "🥚",
"entity": "&#129370;",
"code": ":egg:",
"description": "Add or update an easter egg.",
"name": "egg",
"semver": "patch"
},
{
"emoji": "🙈",
"entity": "&#8bdfe7;",
"code": ":see_no_evil:",
"description": "Add or update a .gitignore file.",
"name": "see-no-evil",
"semver": null
},
{
"emoji": "📸",
"entity": "&#128248;",
"code": ":camera_flash:",
"description": "Add or update snapshots.",
"name": "camera-flash",
"semver": null
},
{
"emoji": "⚗️",
"entity": "&#x2697;",
"code": ":alembic:",
"description": "Perform experiments.",
"name": "alembic",
"semver": "patch"
},
{
"emoji": "🔍️",
"entity": "&#128269;",
"code": ":mag:",
"description": "Improve SEO.",
"name": "mag",
"semver": "patch"
},
{
"emoji": "🏷️",
"entity": "&#127991;",
"code": ":label:",
"description": "Add or update types.",
"name": "label",
"semver": "patch"
},
{
"emoji": "🌱",
"entity": "&#127793;",
"code": ":seedling:",
"description": "Add or update seed files.",
"name": "seedling",
"semver": null
},
{
"emoji": "🚩",
"entity": "&#x1F6A9;",
"code": ":triangular_flag_on_post:",
"description": "Add, update, or remove feature flags.",
"name": "triangular-flag-on-post",
"semver": "patch"
},
{
"emoji": "🥅",
"entity": "&#x1F945;",
"code": ":goal_net:",
"description": "Catch errors.",
"name": "goal-net",
"semver": "patch"
},
{
"emoji": "💫",
"entity": "&#x1f4ab;",
"code": ":dizzy:",
"description": "Add or update animations and transitions.",
"name": "dizzy",
"semver": "patch"
},
{
"emoji": "🗑️",
"entity": "&#x1F5D1;",
"code": ":wastebasket:",
"description": "Deprecate code that needs to be cleaned up.",
"name": "wastebasket",
"semver": "patch"
},
{
"emoji": "🛂",
"entity": "&#x1F6C2;",
"code": ":passport_control:",
"description": "Work on code related to authorization, roles and permissions.",
"name": "passport-control",
"semver": "patch"
},
{
"emoji": "🩹",
"entity": "&#x1FA79;",
"code": ":adhesive_bandage:",
"description": "Simple fix for a non-critical issue.",
"name": "adhesive-bandage",
"semver": "patch"
},
{
"emoji": "🧐",
"entity": "&#x1F9D0;",
"code": ":monocle_face:",
"description": "Data exploration/inspection.",
"name": "monocle-face",
"semver": null
},
{
"emoji": "⚰️",
"entity": "&#x26B0;",
"code": ":coffin:",
"description": "Remove dead code.",
"name": "coffin",
"semver": null
},
{
"emoji": "🧪",
"entity": "&#x1F9EA;",
"code": ":test_tube:",
"description": "Add a failing test.",
"name": "test-tube",
"semver": null
},
{
"emoji": "👔",
"entity": "&#128084;",
"code": ":necktie:",
"description": "Add or update business logic.",
"name": "necktie",
"semver": "patch"
},
{
"emoji": "🩺",
"entity": "&#x1FA7A;",
"code": ":stethoscope:",
"description": "Add or update healthcheck.",
"name": "stethoscope",
"semver": null
},
{
"emoji": "🧱",
"entity": "&#x1f9f1;",
"code": ":bricks:",
"description": "Infrastructure related changes.",
"name": "bricks",
"semver": null
},
{
"emoji": "🧑‍💻",
"entity": "&#129489;&#8205;&#128187;",
"code": ":technologist:",
"description": "Improve developer experience.",
"name": "technologist",
"semver": null
},
{
"emoji": "💸",
"entity": "&#x1F4B8;",
"code": ":money_with_wings:",
"description": "Add sponsorships or money related infrastructure.",
"name": "money-with-wings",
"semver": null
},
{
"emoji": "🧵",
"entity": "&#x1F9F5;",
"code": ":thread:",
"description": "Add or update code related to multithreading or concurrency.",
"name": "thread",
"semver": null
},
{
"emoji": "🦺",
"entity": "&#x1F9BA;",
"code": ":safety_vest:",
"description": "Add or update code related to validation.",
"name": "safety-vest",
"semver": null
},
{
"emoji": "✈️",
"entity": "&#x2708;",
"code": ":airplane:",
"description": "Improve offline support.",
"name": "airplane",
"semver": null
}
]
+13 -15
View File
@@ -11,8 +11,7 @@
"alignment": "left",
"segments": [
{
"properties": {
"cache_duration": "none",
"options": {
"time_format": "15:04"
},
"template": "\uf017 {{ .CurrentDate | date .Format }}",
@@ -21,10 +20,7 @@
"style": "plain"
},
{
"properties": {
"branch_max_length": 25,
"cache_duration": "none",
"fetch_stash_count": true,
"options": {
"fetch_status": true,
"fetch_upstream_icon": true
},
@@ -47,9 +43,7 @@
"alignment": "right",
"segments": [
{
"properties": {
"cache_duration": "none"
},
"options": {},
"template": " x{{ reason .Code }}",
"foreground": "#b8ff75",
"type": "status",
@@ -57,9 +51,9 @@
"foreground_templates": ["{{ if gt .Code 0 }}#E06C75{{ end }}"]
},
{
"properties": {
"options": {
"always_enabled": true,
"cache_duration": "none",
"style": "roundrock"
},
"template": " {{ .FormattedMs }} ",
@@ -75,8 +69,7 @@
"alignment": "left",
"segments": [
{
"properties": {
"cache_duration": "none",
"options": {
"style": "full"
},
"template": "\ue5ff {{ .Path }}",
@@ -92,7 +85,7 @@
"alignment": "left",
"segments": [
{
"properties": {
"options": {
"cache_duration": "none"
},
"template": "!",
@@ -101,7 +94,7 @@
"style": "plain"
},
{
"properties": {
"options": {
"cache_duration": "none"
},
"template": "",
@@ -116,3 +109,8 @@
"version": 3,
"final_space": true
}
+64 -3
View File
@@ -1,7 +1,68 @@
#!/bin/bash
set -euo pipefail
git add -A
gitmoji commit
# Show modified + untracked files and let user pick (multi-select)
# Use NUL-safe listing then convert to newlines for gum
selected=$(git ls-files -m -o --exclude-standard -z | tr '\0' '\n' | gum choose --no-limit) || true
if [ -z "$selected" ]; then
echo "No files selected; aborting."
exit 0
fi
# Stage each selected file (handle spaces/newlines safely)
while IFS= read -r file; do
# skip empty lines (defensive)
[ -n "$file" ] || continue
git add -- "$file"
done <<< "$selected"
# Helper to unstage only the files we added
unstage_added() {
if [ "${#added[@]}" -gt 0 ]; then
git reset -- "${added[@]}"
fi
}
# If nothing is staged, abort (don't commit or push)
if ! git diff --cached --name-only | grep -q .; then
echo "No files staged after selection; aborting."
exit 0
fi
# Commit using gum for message/summary
# Prompt for a short summary (single-line)
SUMMARY="$(gum input --placeholder "Summary of this change" --value "")" || true
# If the user cancelled or left it empty, unstage and abort
if [ -z "$SUMMARY" ]; then
echo "No summary provided; aborting and unstaging changes."
unstage_added
exit 0
fi
# Prompt for a longer description (multi-line)
DESCRIPTION="$(gum write --placeholder "Details of this change (optional)")" || true
# Confirm before committing
if ! gum confirm "Commit with summary: \"$SUMMARY\"?"; then
echo "Commit cancelled; unstaging changes."
unstage_added
exit 0
fi
# Perform the commit (description as second -m if present)
if [ -n "$DESCRIPTION" ]; then
git commit -m "$SUMMARY" -m "$DESCRIPTION"
else
git commit -m "$SUMMARY"
fi
BRANCH=$(git name-rev --name-only HEAD)
gum confirm "Push?" && git push origin $BRANCH
# Only push if a remote named "origin" exists
if git config --get remote.origin.url >/dev/null 2>&1; then
git push origin "$BRANCH"
else
echo "No remote 'origin' found; skipping git push."
fi
+6
View File
@@ -29,3 +29,9 @@ ln -s -f ~/dotfiles/misc_config/ghostty ~/Library/Application\ Support/com.mitch
# fastfetch
ln -s -f ~/dotfiles/misc_config/fastfetch.jsonc ~/.config/fastfetch/config.jsonc
# gitmoji
ln -s -f ~/dotfiles/misc_config/gitmojis.json ~/.gitmoji/gitmojis.json
# atuin
ln -s -f ~/dotfiles/misc_config/atuin.toml ~/.config/atuin/config.toml
+40 -16
View File
@@ -2,18 +2,16 @@
"workbench.iconTheme": "charmed-icons",
"workbench.tips.enabled": false,
"workbench.tree.enableStickyScroll": false,
"workbench.tree.renderIndentGuides": "none",
"workbench.tree.indent": 10,
"window.systemColorTheme": "auto",
"window.autoDetectColorScheme": true,
"workbench.editor.tabActionLocation": "left",
"workbench.preferredDarkColorTheme": "FlatUI Dark",
"workbench.preferredDarkColorTheme": "Ayu Mirage Bordered",
"explorer.decorations.colors": false,
"editor.fontFamily": "'Maple Mono', monospace",
"editor.fontSize": 14,
"editor.fontLigatures": "'calt', 'ss01', 'ss02', 'ss03', 'ss06', 'ss07', 'ss08', 'ss09', 'liga'",
"editor.inlineSuggest.fontFamily": "'Maple Mono', monospace",
"workbench.navigationControl.enabled": false,
"editor.fontVariations": false,
"editor.wordWrap": "on",
"editor.cursorStyle": "underline",
@@ -22,27 +20,26 @@
"workbench.startupEditor": "none",
"editor.screenReaderAnnounceInlineSuggestion": false,
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"accessibility.signalOptions.volume": 0,
"breadcrumbs.icons": false,
"explorer.autoReveal": true,
"explorer.compactFolders": false,
"explorer.sortOrder": "type",
"window.commandCenter": false,
"window.title": "${rootName}",
"breadcrumbs.enabled": false,
"terminal.integrated.fontLigatures.enabled": true,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"editor.formatOnSave": true,
"terminal.external.osxExec": "Ghostty.app",
"[jsonc]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"terminal.integrated.fontSize": 14,
"terminal.integrated.fontFamily": "'MesloLGS NF', monospace",
@@ -52,7 +49,7 @@
"chat.commandCenter.enabled": false,
"codeium.enableInComments": false,
"[javascriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"editor.minimap.enabled": false,
"editor.scrollbar.verticalScrollbarSize": 6,
@@ -60,22 +57,21 @@
"javascript.format.enable": false,
"typescript.format.enable": false,
"[astro]": {
"editor.defaultFormatter": "astro-build.astro-vscode"
"editor.defaultFormatter": "astro-build.astro-vscode",
},
"workbench.preferredLightColorTheme": "FlatUI",
"workbench.preferredLightColorTheme": "Atom One Light",
"discord.suppressNotifications": true,
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"redhat.telemetry.enabled": false,
"jest.runMode": "on-demand",
"testing.automaticallyOpenPeekView": "failureAnywhere",
"workbench.statusBar.visible": false,
"ollama-autocoder.model": "qwen2.5-coder:7b",
"workbench.layoutControl.enabled": false,
"rust-analyzer.lens.run.enable": false,
"rust-analyzer.lens.debug.enable": false,
"rust-analyzer.lens.enable": false,
@@ -103,6 +99,34 @@
"editor.inlayHints.enabled": "offUnlessPressed",
"prettier.documentSelectors": ["**/*.ripple"],
"[ripple]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"makefile.configureOnOpen": false,
"svelte.enable-ts-plugin": true,
"[svelte]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"[scss]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
},
"workbench.navigationControl.enabled": false,
"workbench.layoutControl.enabled": false,
"indentRainbow.lightIndicatorStyleLineWidth": 0,
"workbench.tree.renderIndentGuides": "none",
"swift.disableSwiftPackageManagerIntegration": true,
"[swift]": {
"editor.defaultFormatter": "vknabel.vscode-swiftformat",
},
"json.schemaDownload.trustedDomains": {
"https://schemastore.azurewebsites.net/": true,
"https://raw.githubusercontent.com/": true,
"https://www.schemastore.org/": true,
"https://json.schemastore.org/": true,
"https://json-schema.org/": true,
"https://biomejs.dev": true,
},
"swiftlint.toolchainPath": "/opt/homebrew/bin/swiftlint",
"swift.disableSwiftlyInstallPrompt": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"terminal.integrated.initialHint": false,
}
+13 -13
View File
@@ -3,8 +3,8 @@
"context": "Workspace",
"bindings": {
"shift-cmd-b": "workspace::ToggleRightDock",
"cmd-w": null
}
"cmd-w": null,
},
},
{
"context": "Pane",
@@ -18,21 +18,21 @@
"cmd-7": ["pane::ActivateItem", 6],
"cmd-8": ["pane::ActivateItem", 7],
"cmd-9": ["pane::ActivateItem", 8],
"cmd-0": "pane::ActivateLastItem"
}
"cmd-0": "pane::ActivateLastItem",
},
},
{
"context": "Editor",
"bindings": {
"cmd-alt-right": "workspace::ActivateNextPane",
"cmd-alt-left": "workspace::ActivatePreviousPane"
}
"cmd-alt-left": "workspace::ActivatePreviousPane",
},
},
{
"context": "Terminal",
"bindings": {
"ctrl-`": "pane::CloseActiveItem"
}
"ctrl-`": "pane::CloseActiveItem",
},
},
{
"context": "Editor",
@@ -40,9 +40,9 @@
"cmd-w": [
"pane::CloseActiveItem",
{
"close_pinned": false
}
]
}
}
"close_pinned": false,
},
],
},
},
]
+72 -44
View File
@@ -1,63 +1,75 @@
{
"git_panel": {
"dock": "left"
"cli_default_open_behavior": "new_window",
"sticky_scroll": {
"enabled": true,
},
"preview_tabs": {
"enable_preview_from_file_finder": true,
},
"disable_ai": true,
"icon_theme": "Soft Charmed Icons",
"show_edit_predictions": false,
"base_keymap": "VSCode",
"close_on_file_delete": true,
"outline_panel": {
"dock": "right"
"dock": "right",
},
"title_bar": {
"show_branch_status_icon": true,
"show_user_picture": false,
"show_sign_in": false,
},
"bottom_dock_layout": "full",
"telemetry": {
"diagnostics": true,
"metrics": false
"diagnostics": false,
"metrics": false,
},
"agent": {
"button": false,
"enabled": false,
"dock": "right"
"dock": "right",
},
"edit_predictions": {
"provider": "none",
"disabled_globs": [".md"],
"mode": "subtle"
"mode": "subtle",
},
"active_pane_modifiers": {
"inactive_opacity": 0.7
},
"features": {
"edit_prediction_provider": "zed"
"border_size": 0.0,
"inactive_opacity": 0.7,
},
"collaboration_panel": {
"button": false
"button": false,
},
"toolbar": {
"breadcrumbs": false,
"quick_actions": false,
"selections_menu": false
"selections_menu": false,
},
"file_finder": {
"file_icons": true
"file_icons": true,
},
"seed_search_query_from_cursor": "selection",
"gutter": {
"runnables": false
"runnables": false,
},
"theme": {
"mode": "system",
"light": "Catppuccin Latte (Blur)",
"dark": "Catppuccin Macchiato (Blur) [Heavy]"
"light": "Fleet Light",
"dark": "Nightfox - opaque",
},
"scrollbar": {
"show": "system",
"axes": {
"horizontal": false,
"vertical": true
}
"vertical": true,
},
},
"status_bar": {
"active_language_button": false,
"cursor_position_button": false,
},
"cursor_shape": "underline",
"vertical_scroll_margin": 18,
"ui_font_family": "Input Mono",
"ui_font_family": ".SystemUIFont",
"ui_font_size": 15,
"buffer_font_family": "Maple Mono",
// "buffer_font_features": {
@@ -78,69 +90,85 @@
"dock": "bottom",
"font_family": "Maple Mono",
"font_fallbacks": ["FiraCode Nerd Font Mono"],
"toolbar": { "breadcrumbs": false }
"toolbar": { "breadcrumbs": false },
},
"soft_wrap": "editor_width",
"tabs": {
"show_close_button": "hover",
"close_position": "left",
"git_status": true,
"file_icons": true,
"show_diagnostics": "all"
"show_diagnostics": "all",
},
"notification_panel": {
"button": false
"button": false,
},
"tab_bar": {
"show_nav_history_buttons": false
"show": true,
"show_nav_history_buttons": false,
},
"git": {
"git_gutter": "tracked_files",
"hunk_style": "unstaged_hollow"
"hunk_style": "unstaged_hollow",
"inline_blame": {
"show_commit_summary": true,
},
},
"indent_guides": {
"enabled": true,
"coloring": "indent_aware"
"coloring": "indent_aware",
},
"languages": {
"JSONC": {
"show_edit_predictions": false
"show_edit_predictions": false,
},
"Markdown": {
"show_edit_predictions": false
"show_edit_predictions": false,
},
"Go": {
"tab_size": 2
"tab_size": 2,
},
"Astro": {
"tab_size": 2
}
"tab_size": 2,
},
"Swift": {
"tab_size": 2,
"format_on_save": "off",
},
},
"lsp": {
"biome": {
"settings": {
"require_config_file": true
}
}
"require_config_file": true,
},
},
},
"project_panel": {
"file_icons": true,
"folder_icons": true,
"dock": "left",
"indent_size": 10,
"indent_size": 14.0,
"auto_fold_dirs": false,
"show_diagnostics": "off",
"git_status": true,
"entry_spacing": "standard"
"entry_spacing": "standard",
"sticky_scroll": false,
"hide_root": true,
"indent_guides": {
"show": "never",
},
},
"file_types": {
"HTML": ["hbs", "njk", "webc", "leaf"]
"HTML": ["hbs", "njk", "webc", "leaf"],
},
"experimental.theme_overrides": {
"syntax": {
"comment": {
"font_style": "italic"
"font_style": "italic",
},
"keyword": {
"font_style": "italic"
}
}
}
"font_style": "italic",
},
},
},
}
+4 -2
View File
@@ -6,11 +6,12 @@ alias cd="z"
alias nv="open -a Nova"
# git
alias ptob="gh pr create -B beta"
alias pr="gh pr create -B"
alias prune-git="git remote prune origin"
# ssh
alias macmini="ssh admin@Memory-Alpha.local"
alias daweb="ssh ghall@95.111.207.194"
# shell scripts
alias dev="sh ~/dotfiles/scripts/run-dev.sh"
@@ -22,6 +23,7 @@ alias brewfile="brew bundle dump --file=~/dotfiles/Brewfile --force --"
alias installbrewfile="brew bundle install --file=~/dotfiles/Brewfile"
# dotfiles
alias config="zed ~/dotfiles"
alias config="bb ~/dotfiles"
alias linkdfs="sh ~/dotfiles/symlink_dotfiles.zsh"
alias cdot="sh ~/dotfiles/scripts/commit-dotfiles.sh"
+3 -2
View File
@@ -40,7 +40,7 @@ ZSH_THEME="robbyrussell"
# DISABLE_AUTO_TITLE="true"
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="true"
# ENABLE_CORRECTION="true"
# Uncomment the following line to display red dots whilst waiting for completion.
# You can also set it to another string to have that shown instead of the default red dots.
@@ -79,9 +79,10 @@ ENABLE_CORRECTION="true"
gh
nvm
npm
gitignore
brew
thefuck
macos
pnpm-shell-completion
)
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
+11 -2
View File
@@ -1,4 +1,11 @@
autoload -U +X bashcompinit && bashcompinit
autoload -U +X compinit && compinit
# Run brew-autoupdate
brew-autoupdate
eval "$(oh-my-posh init zsh --config ~/dotfiles/misc_config/ohmyposh.json)"
eval "$(wut init)"
source $(brew --prefix nvm)/nvm.sh
source <(fzf --zsh)
@@ -9,9 +16,9 @@ for conf in "$HOME/dotfiles/zsh_config/"*.zsh; do
done
unset conf
eval $(thefuck --alias)
# eval "$(wut init)"
eval "$(thefuck --alias)"
eval "$(zoxide init zsh)"
# eval "$(starship init zsh)"
eval "$(atuin init zsh)"
# bun completions
@@ -24,3 +31,5 @@ fi
# Add RVM to PATH for scripting. Make sure this is the last PATH variable change.
export PATH="$PATH:$HOME/.rvm/bin"
. "$HOME/.atuin/bin/env"