experiments in a post-browser web
10
fork

Configure Feed

Select the types of activity you want to include in your feed.

chore: add jj-worktrees script, fix settings button text, add HTML file association

+89 -7
+7 -7
app/settings/settings.js
··· 261 261 defaultBrowserRow.style.cssText = 'display: flex; align-items: center; gap: 12px;'; 262 262 263 263 const defaultBrowserBtn = document.createElement('button'); 264 - defaultBrowserBtn.textContent = 'Set as Default Browser'; 264 + defaultBrowserBtn.textContent = 'Set as default handler for HTTP addresses and HTML documents'; 265 265 defaultBrowserBtn.style.cssText = ` 266 266 padding: 8px 16px; 267 267 font-size: 13px; ··· 282 282 try { 283 283 const result = await api.invoke('default-browser-status'); 284 284 if (result.isDefault) { 285 - defaultBrowserBtn.textContent = 'Already Default Browser'; 285 + defaultBrowserBtn.textContent = 'Already the default handler'; 286 286 defaultBrowserBtn.disabled = true; 287 287 defaultBrowserBtn.style.opacity = '0.6'; 288 288 defaultBrowserBtn.style.cursor = 'default'; 289 - defaultBrowserStatus.textContent = '\u2713 Peek is the default browser'; 289 + defaultBrowserStatus.textContent = '\u2713 Peek is the default handler'; 290 290 } 291 291 } catch { /* ignore */ } 292 292 })(); ··· 297 297 try { 298 298 const result = await api.invoke('set-default-browser'); 299 299 if (result.success) { 300 - defaultBrowserBtn.textContent = 'Already Default Browser'; 300 + defaultBrowserBtn.textContent = 'Already the default handler'; 301 301 defaultBrowserBtn.style.opacity = '0.6'; 302 302 defaultBrowserBtn.style.cursor = 'default'; 303 - defaultBrowserStatus.textContent = '\u2713 Peek is the default browser'; 303 + defaultBrowserStatus.textContent = '\u2713 Peek is the default handler'; 304 304 } else { 305 - defaultBrowserBtn.textContent = 'Set as Default Browser'; 305 + defaultBrowserBtn.textContent = 'Set as default handler for HTTP addresses and HTML documents'; 306 306 defaultBrowserBtn.disabled = false; 307 307 defaultBrowserStatus.textContent = result.error || 'Could not set as default'; 308 308 } 309 309 } catch (err) { 310 - defaultBrowserBtn.textContent = 'Set as Default Browser'; 310 + defaultBrowserBtn.textContent = 'Set as default handler for HTTP addresses and HTML documents'; 311 311 defaultBrowserBtn.disabled = false; 312 312 defaultBrowserStatus.textContent = 'Error: ' + err.message; 313 313 }
+82
scripts/jj-worktrees.sh
··· 1 + #!/bin/bash 2 + # jj worktree management for multi-agent workflow 3 + # Usage: scripts/jj-worktrees.sh <command> [args] 4 + 5 + set -euo pipefail 6 + 7 + CMD="${1:-help}" 8 + 9 + case "$CMD" in 10 + status) 11 + # Show all workspaces with unmerged commits 12 + for ws in $(jj workspace list 2>/dev/null | awk -F: '{print $1}'); do 13 + commits=$(jj log -r "::$ws ~ ::main" --no-graph -T 'description.first_line() ++ "\n"' 2>/dev/null | grep -v '^$' || true) 14 + if [ -n "$commits" ]; then 15 + echo "=== $ws ===" 16 + echo "$commits" 17 + echo 18 + fi 19 + done 20 + ;; 21 + 22 + merge) 23 + # Merge a specific workspace to main 24 + WS="${2:?Usage: jj-worktrees.sh merge <workspace-name>}" 25 + commits=$(jj log -r "::$WS ~ ::main" --no-graph -T 'change_id.short() ++ " " ++ description.first_line() ++ "\n"' 2>/dev/null | grep -v '^$' || true) 26 + if [ -z "$commits" ]; then 27 + echo "No unmerged commits in $WS" 28 + exit 0 29 + fi 30 + echo "Merging $WS to main:" 31 + echo "$commits" 32 + # Get the tip commit of the workspace 33 + tip=$(jj log -r "$WS-" --no-graph -T 'change_id.short()' 2>/dev/null | head -1) 34 + if [ -z "$tip" ]; then 35 + echo "Could not find tip commit for $WS" 36 + exit 1 37 + fi 38 + jj rebase -s "roots(::$WS ~ ::main)" -d main 39 + jj bookmark set main -r "$tip" 40 + echo "Done. Main now at: $(jj log -r main --no-graph -T 'change_id.short() ++ " " ++ description.first_line()' 2>/dev/null)" 41 + ;; 42 + 43 + merge-all) 44 + # Merge all workspaces with unmerged commits 45 + for ws in $(jj workspace list 2>/dev/null | awk -F: '{print $1}'); do 46 + [ "$ws" = "default" ] && continue 47 + commits=$(jj log -r "::$ws ~ ::main" --no-graph -T 'description.first_line() ++ "\n"' 2>/dev/null | grep -v '^$' || true) 48 + if [ -n "$commits" ]; then 49 + echo "=== Merging $ws ===" 50 + bash "$0" merge "$ws" 51 + echo 52 + fi 53 + done 54 + ;; 55 + 56 + clean) 57 + # Show worktree directories and sizes 58 + echo "=== .claude/worktrees ===" 59 + if [ -d ".claude/worktrees" ]; then 60 + du -sh .claude/worktrees/*/ 2>/dev/null || echo "(empty)" 61 + fi 62 + echo 63 + echo "=== jj workspaces ===" 64 + jj workspace list 2>/dev/null 65 + ;; 66 + 67 + log) 68 + # Show recent main commits 69 + jj log -r 'ancestors(main, 10)' --no-graph -T 'change_id.short() ++ " " ++ description.first_line() ++ "\n"' 2>/dev/null 70 + ;; 71 + 72 + help|*) 73 + echo "Usage: scripts/jj-worktrees.sh <command>" 74 + echo 75 + echo "Commands:" 76 + echo " status Show all workspaces with unmerged commits" 77 + echo " merge <ws> Merge a specific workspace to main" 78 + echo " merge-all Merge all unmerged workspaces to main" 79 + echo " clean Show worktree directories and sizes" 80 + echo " log Show recent main commits" 81 + ;; 82 + esac