diff options
| author | bndw <ben@bdw.to> | 2026-02-28 21:35:39 -0800 |
|---|---|---|
| committer | bndw <ben@bdw.to> | 2026-02-28 21:35:39 -0800 |
| commit | 0484d97dfbc3b8a2e7878d3ab35a9895decdf467 (patch) | |
| tree | cdc6fffe8b169c83058e8d64ca42723f6ccb6dcf /renderer/src/styles | |
| parent | 04c63d4ef601876186e5d7fab980d76575c494ec (diff) | |
feat: **1 — `git.ts`:** Add exported `getCurrentBranch` helpe… (+8 more)
- ✅ **1 — `git.ts`:** Add exported `getCurrentBranch` helper after `ensureGitRepo`
- ✅ **2a — `ipc/handlers.ts`:** Update git import to include `ensureGitRepo` and `getCurrentBranch`
- ✅ **2b — `ipc/handlers.ts`:** Replace `workflow:advance` implement-phase block with branching-toggle logic
- ✅ **3 — `GitSettings.tsx`:** Create new settings component with pill toggle
- ✅ **4 — `SettingsPage.tsx`:** Add `"git"` section type, import, nav item, content render; fix both unicode glyphs
- ✅ **5 — `globals.css`:** Append toggle-row + pill toggle + maximize-btn CSS
- ✅ **6 — `index.ts`:** Add `ipcMain` to import; add `window:toggleMaximize` handler + maximize/unmaximize events inside `createWindow()`
- ✅ **7 — `preload.ts`:** Add `toggleMaximize` + `onWindowMaximized` to interface and `api` object
- ✅ **8 — `Header.tsx`:** Add `isMaximized` state + effect + maximize button in JSX
Diffstat (limited to 'renderer/src/styles')
| -rw-r--r-- | renderer/src/styles/globals.css | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/renderer/src/styles/globals.css b/renderer/src/styles/globals.css index 61a37c0..8e43f3a 100644 --- a/renderer/src/styles/globals.css +++ b/renderer/src/styles/globals.css | |||
| @@ -905,3 +905,96 @@ html[data-theme="light"] .settings-textarea:focus { | |||
| 905 | background: var(--bg-tertiary); | 905 | background: var(--bg-tertiary); |
| 906 | color: var(--text-primary); | 906 | color: var(--text-primary); |
| 907 | } | 907 | } |
| 908 | |||
| 909 | /* ── Settings Toggle Row ─────────────────────────────────────── */ | ||
| 910 | .settings-toggle-row { | ||
| 911 | display: flex; | ||
| 912 | align-items: center; | ||
| 913 | gap: 12px; | ||
| 914 | margin-top: 16px; | ||
| 915 | } | ||
| 916 | |||
| 917 | .settings-toggle-label { | ||
| 918 | display: flex; | ||
| 919 | align-items: flex-start; | ||
| 920 | gap: 14px; | ||
| 921 | cursor: pointer; | ||
| 922 | flex: 1; | ||
| 923 | } | ||
| 924 | |||
| 925 | .settings-toggle-text { | ||
| 926 | display: flex; | ||
| 927 | flex-direction: column; | ||
| 928 | gap: 4px; | ||
| 929 | font-size: 12px; | ||
| 930 | color: var(--text-primary); | ||
| 931 | line-height: 1.4; | ||
| 932 | } | ||
| 933 | |||
| 934 | .settings-toggle-hint { | ||
| 935 | color: var(--text-secondary); | ||
| 936 | font-size: 11px; | ||
| 937 | } | ||
| 938 | |||
| 939 | .settings-toggle-hint code { | ||
| 940 | font-family: monospace; | ||
| 941 | background: var(--bg-tertiary); | ||
| 942 | padding: 1px 3px; | ||
| 943 | border-radius: 2px; | ||
| 944 | } | ||
| 945 | |||
| 946 | /* The pill toggle switch */ | ||
| 947 | .settings-toggle { | ||
| 948 | flex-shrink: 0; | ||
| 949 | width: 36px; | ||
| 950 | height: 20px; | ||
| 951 | border-radius: 10px; | ||
| 952 | background: var(--border); | ||
| 953 | position: relative; | ||
| 954 | cursor: pointer; | ||
| 955 | transition: background 0.2s; | ||
| 956 | outline-offset: 2px; | ||
| 957 | } | ||
| 958 | |||
| 959 | .settings-toggle:focus-visible { | ||
| 960 | outline: 2px solid var(--accent); | ||
| 961 | } | ||
| 962 | |||
| 963 | .settings-toggle::after { | ||
| 964 | content: ""; | ||
| 965 | position: absolute; | ||
| 966 | top: 3px; | ||
| 967 | left: 3px; | ||
| 968 | width: 14px; | ||
| 969 | height: 14px; | ||
| 970 | border-radius: 50%; | ||
| 971 | background: var(--text-secondary); | ||
| 972 | transition: transform 0.2s, background 0.2s; | ||
| 973 | } | ||
| 974 | |||
| 975 | .settings-toggle.on { | ||
| 976 | background: var(--accent); | ||
| 977 | } | ||
| 978 | |||
| 979 | .settings-toggle.on::after { | ||
| 980 | transform: translateX(16px); | ||
| 981 | background: #fff; | ||
| 982 | } | ||
| 983 | |||
| 984 | /* ── Header Maximize Button ──────────────────────────────────── */ | ||
| 985 | .maximize-btn { | ||
| 986 | padding: 5px 8px; | ||
| 987 | background: transparent; | ||
| 988 | border: 1px solid var(--border); | ||
| 989 | border-radius: 2px; | ||
| 990 | color: var(--text-secondary); | ||
| 991 | cursor: pointer; | ||
| 992 | font-size: 13px; | ||
| 993 | font-family: inherit; | ||
| 994 | transition: background 0.15s, color 0.15s; | ||
| 995 | } | ||
| 996 | |||
| 997 | .maximize-btn:hover { | ||
| 998 | background: var(--bg-tertiary); | ||
| 999 | color: var(--text-primary); | ||
| 1000 | } | ||
