v0.3.4 — workspace View include/exclude tree + fix oversized button icons

- Edit-workspace dialog gets a P4V-style folder tree with tri-state include/
  exclude checkboxes (lazy-loaded via p4 dirs). Toggling writes the depot→client
  View mapping (`//depot/Foo/...` or `-//depot/Foo/...`) — i.e. what syncs and
  what doesn't. Tree/Text mode toggle; after Save it offers Get Latest.
- Fix: .mbtn buttons weren't flex and didn't cap their <svg>, so an icon inside
  (e.g. the lock on "Add recommended Unreal rules") blew up to fill the button.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bonchellon
2026-07-08 23:26:46 +03:00
parent 1c1153eee9
commit 09b8f9d842
7 changed files with 152 additions and 8 deletions

View File

@ -653,6 +653,27 @@ body.resizing-v{cursor:row-resize!important;user-select:none}
background:var(--elevated);padding:12px 16px 14px 18px;white-space:pre;overflow:auto;
box-shadow:inset 3px 0 0 var(--border-soft)}
.code-edit:focus{box-shadow:inset 3px 0 0 var(--accent)}
/* workspace View include/exclude tree (P4V-style) */
.vt-modes{margin-left:auto;display:flex;gap:2px;background:var(--panel-3);border:1px solid var(--border);border-radius:9px;padding:2px}
.vt-modes button{width:28px;height:24px;display:grid;place-items:center;border:none;background:none;color:var(--faint);border-radius:7px;cursor:pointer;transition:.15s}
.vt-modes button svg{width:15px;height:15px}
.vt-modes button:hover{color:var(--txt)}
.vt-modes button.on{background:var(--elevated);color:var(--accent-2)}
.vt-tree{flex:1;min-height:0;overflow:auto;background:var(--elevated);padding:6px 4px}
.vt-node{user-select:none}
.vt-row{display:flex;align-items:center;gap:7px;height:26px;border-radius:7px;padding-right:8px;cursor:default}
.vt-row:hover{background:#ffffff08}
.vt-chev{width:16px;height:16px;flex:0 0 auto;display:grid;place-items:center;color:var(--faint);cursor:pointer}
.vt-chev svg{width:13px;height:13px;transition:transform .12s ease}
.vt-chk{width:16px;height:16px;flex:0 0 auto;border-radius:4px;border:1.5px solid var(--border);display:grid;place-items:center;cursor:pointer;transition:.12s;background:var(--panel)}
.vt-chk:hover{border-color:var(--accent)}
.vt-chk.on{background:var(--accent);border-color:var(--accent)}
.vt-chk.mixed{background:var(--faint);border-color:var(--faint)}
.vt-chk svg{width:12px;height:12px}
.vt-ic{width:16px;height:16px;flex:0 0 auto;display:grid;place-items:center;color:var(--accent-2)}
.vt-ic svg{width:15px;height:15px}
.vt-name{font-size:13px;color:var(--txt);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vt-loading,.vt-empty{height:24px;display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--faint)}
/* rich code editor: transparent textarea over a highlighted underlay + gutter */
.code.editing{overflow:hidden}
.code.editing .code-gutter{overflow:hidden}
@ -799,7 +820,8 @@ body.resizing-v{cursor:row-resize!important;user-select:none}
.modal-card h3{font-size:17px;font-weight:700;margin-bottom:8px}
.modal-card p{font-size:13px;line-height:1.55;color:var(--muted);white-space:pre-wrap;margin-bottom:22px}
.modal-actions{display:flex;gap:10px}
.mbtn{flex:1;border:none;border-radius:11px;padding:11px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:var(--font);transition:filter .15s,background .15s}
.mbtn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:11px;padding:11px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:var(--font);transition:filter .15s,background .15s}
.mbtn svg{width:15px;height:15px;flex:0 0 auto}
.mbtn.ghost{background:var(--panel);border:1px solid var(--border);color:var(--txt)}
.mbtn.ghost:hover{background:var(--hover)}
.mbtn.primary{color:#fff;background:linear-gradient(135deg,var(--accent-2),var(--accent-deep));box-shadow:0 8px 22px -8px rgba(124,110,246,.7)}