@co0ontty/wand 1.21.12 → 1.21.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2522,6 +2522,14 @@
2522
2522
  .topbar-more-item.topbar-more-item-danger { color: var(--danger); }
2523
2523
  .topbar-more-item.topbar-more-item-danger:hover { background: var(--danger-muted); color: var(--danger-hover); }
2524
2524
  .topbar-more-item.hidden { display: none; }
2525
+ .topbar-more-item[disabled] { opacity: 0.5; cursor: not-allowed; }
2526
+ .topbar-more-item[disabled]:hover { background: transparent; color: var(--text-primary); }
2527
+ .topbar-more-divider {
2528
+ height: 1px;
2529
+ margin: 4px 6px;
2530
+ background: var(--border-default);
2531
+ opacity: 0.6;
2532
+ }
2525
2533
 
2526
2534
  /* 桌面端显示所有按钮 */
2527
2535
  .terminal-scale-toggle { display: flex; }
@@ -10862,6 +10870,311 @@
10862
10870
  color: var(--accent);
10863
10871
  }
10864
10872
 
10873
+ /* ── File explorer header extras ── */
10874
+ .file-explorer-up,
10875
+ .file-explorer-toggle-hidden {
10876
+ background: none;
10877
+ border: none;
10878
+ cursor: pointer;
10879
+ font-size: 1rem;
10880
+ padding: 4px;
10881
+ width: 28px;
10882
+ height: 28px;
10883
+ border-radius: 6px;
10884
+ color: var(--text-muted);
10885
+ display: flex;
10886
+ align-items: center;
10887
+ justify-content: center;
10888
+ transition: background var(--transition-fast), color var(--transition-fast);
10889
+ flex-shrink: 0;
10890
+ }
10891
+ .file-explorer-up:hover,
10892
+ .file-explorer-toggle-hidden:hover {
10893
+ background: var(--bg-tertiary);
10894
+ color: var(--text-secondary);
10895
+ }
10896
+ .file-explorer-toggle-hidden.active {
10897
+ color: var(--accent);
10898
+ background: var(--accent-muted);
10899
+ }
10900
+
10901
+ /* ── File tree size/meta column ── */
10902
+ .tree-meta {
10903
+ flex-shrink: 0;
10904
+ font-size: 0.6875rem;
10905
+ color: var(--text-muted);
10906
+ font-variant-numeric: tabular-nums;
10907
+ margin-left: 6px;
10908
+ padding-left: 6px;
10909
+ max-width: 70px;
10910
+ overflow: hidden;
10911
+ text-overflow: ellipsis;
10912
+ white-space: nowrap;
10913
+ opacity: 0.85;
10914
+ }
10915
+ .tree-item:hover .tree-meta { color: var(--text-secondary); }
10916
+
10917
+ /* ── Truncation notice in file tree ── */
10918
+ .tree-truncated {
10919
+ padding: 8px 14px;
10920
+ margin: 4px 6px 8px;
10921
+ font-size: 0.6875rem;
10922
+ color: var(--text-muted);
10923
+ background: var(--bg-secondary);
10924
+ border: 1px dashed var(--border);
10925
+ border-radius: 6px;
10926
+ text-align: center;
10927
+ }
10928
+
10929
+ /* ── File context menu (right-click / long-press) ── */
10930
+ .file-context-menu {
10931
+ position: fixed;
10932
+ z-index: 1100;
10933
+ min-width: 200px;
10934
+ padding: 4px;
10935
+ background: var(--bg-primary);
10936
+ border: 1px solid var(--border);
10937
+ border-radius: 10px;
10938
+ box-shadow: 0 12px 36px rgba(0, 0, 0, 0.18);
10939
+ animation: ctx-fade-in 0.12s ease;
10940
+ }
10941
+ @keyframes ctx-fade-in {
10942
+ from { opacity: 0; transform: translateY(-4px) scale(0.98); }
10943
+ to { opacity: 1; transform: translateY(0) scale(1); }
10944
+ }
10945
+ .file-context-menu-item {
10946
+ display: flex;
10947
+ align-items: center;
10948
+ gap: 10px;
10949
+ width: 100%;
10950
+ padding: 8px 12px;
10951
+ border: none;
10952
+ background: transparent;
10953
+ color: var(--text-primary);
10954
+ font-size: 0.8125rem;
10955
+ text-align: left;
10956
+ cursor: pointer;
10957
+ border-radius: 6px;
10958
+ transition: background 0.12s;
10959
+ }
10960
+ .file-context-menu-item:hover { background: var(--bg-tertiary); }
10961
+ .file-context-menu-item .ctx-icon { width: 18px; text-align: center; opacity: 0.85; }
10962
+
10963
+ /* ── Mini toast for in-app feedback ── */
10964
+ .wand-mini-toast {
10965
+ position: fixed;
10966
+ bottom: 30px;
10967
+ left: 50%;
10968
+ transform: translate(-50%, 14px);
10969
+ z-index: 1200;
10970
+ padding: 8px 16px;
10971
+ background: rgba(20, 20, 20, 0.92);
10972
+ color: #fff;
10973
+ font-size: 0.8125rem;
10974
+ border-radius: 999px;
10975
+ opacity: 0;
10976
+ transition: opacity 0.18s ease, transform 0.18s ease;
10977
+ pointer-events: none;
10978
+ }
10979
+ .wand-mini-toast.show { opacity: 1; transform: translate(-50%, 0); }
10980
+
10981
+ /* ── Preview toolbar ── */
10982
+ .file-preview-toolbar {
10983
+ display: flex;
10984
+ align-items: center;
10985
+ gap: 4px;
10986
+ flex-shrink: 0;
10987
+ margin-left: 8px;
10988
+ }
10989
+ .file-preview-toolbar-btn {
10990
+ background: none;
10991
+ border: 1px solid transparent;
10992
+ cursor: pointer;
10993
+ padding: 4px 8px;
10994
+ min-width: 32px;
10995
+ height: 28px;
10996
+ border-radius: 6px;
10997
+ color: var(--text-muted);
10998
+ font-size: 0.75rem;
10999
+ display: inline-flex;
11000
+ align-items: center;
11001
+ justify-content: center;
11002
+ transition: background 0.15s, color 0.15s, border-color 0.15s;
11003
+ }
11004
+ .file-preview-toolbar-btn:hover {
11005
+ background: var(--bg-tertiary);
11006
+ color: var(--text-primary);
11007
+ border-color: var(--border);
11008
+ }
11009
+ .file-preview-toolbar-btn.toolbar-active {
11010
+ background: var(--accent-muted);
11011
+ color: var(--accent);
11012
+ border-color: var(--accent);
11013
+ }
11014
+
11015
+ /* ── Code preview wrap mode ── */
11016
+ .code-preview-content pre.wrap {
11017
+ white-space: pre-wrap;
11018
+ word-break: break-word;
11019
+ }
11020
+
11021
+ /* ── Image preview ── */
11022
+ .file-preview-body.kind-image {
11023
+ display: flex;
11024
+ align-items: center;
11025
+ justify-content: center;
11026
+ background:
11027
+ linear-gradient(45deg, rgba(0,0,0,0.04) 25%, transparent 25%, transparent 75%, rgba(0,0,0,0.04) 75%),
11028
+ linear-gradient(45deg, rgba(0,0,0,0.04) 25%, transparent 25%, transparent 75%, rgba(0,0,0,0.04) 75%),
11029
+ var(--bg-primary);
11030
+ background-size: 16px 16px;
11031
+ background-position: 0 0, 8px 8px;
11032
+ }
11033
+ .image-preview-wrapper {
11034
+ width: 100%;
11035
+ height: 100%;
11036
+ display: flex;
11037
+ align-items: center;
11038
+ justify-content: center;
11039
+ overflow: auto;
11040
+ padding: 16px;
11041
+ }
11042
+ .image-preview-img {
11043
+ max-width: 100%;
11044
+ max-height: 100%;
11045
+ object-fit: contain;
11046
+ cursor: zoom-in;
11047
+ transition: transform 0.2s ease;
11048
+ box-shadow: 0 6px 20px rgba(0, 0, 0, 0.12);
11049
+ border-radius: 4px;
11050
+ background: #fff;
11051
+ }
11052
+ .image-preview-img.zoomed {
11053
+ max-width: none;
11054
+ max-height: none;
11055
+ cursor: zoom-out;
11056
+ transform: scale(1);
11057
+ }
11058
+
11059
+ /* ── PDF preview ── */
11060
+ .file-preview-body.kind-pdf {
11061
+ padding: 0;
11062
+ background: var(--bg-secondary);
11063
+ }
11064
+ .pdf-preview-frame {
11065
+ width: 100%;
11066
+ height: 100%;
11067
+ border: none;
11068
+ background: var(--bg-secondary);
11069
+ }
11070
+
11071
+ /* ── Video / audio preview ── */
11072
+ .file-preview-body.kind-video,
11073
+ .file-preview-body.kind-audio {
11074
+ display: flex;
11075
+ align-items: center;
11076
+ justify-content: center;
11077
+ background: #0d0d0d;
11078
+ }
11079
+ .file-preview-body.kind-audio { background: var(--bg-secondary); }
11080
+ .media-preview-wrapper {
11081
+ display: flex;
11082
+ flex-direction: column;
11083
+ align-items: center;
11084
+ gap: 10px;
11085
+ max-width: 100%;
11086
+ max-height: 100%;
11087
+ padding: 24px;
11088
+ }
11089
+ .media-preview-video {
11090
+ max-width: 100%;
11091
+ max-height: calc(100% - 40px);
11092
+ background: #000;
11093
+ border-radius: 4px;
11094
+ }
11095
+ .media-preview-audio { width: min(420px, 90%); }
11096
+ .media-preview-icon { font-size: 3.5rem; opacity: 0.7; }
11097
+ .media-preview-name {
11098
+ font-weight: 600;
11099
+ color: var(--text-primary);
11100
+ font-size: 1rem;
11101
+ max-width: 100%;
11102
+ overflow: hidden;
11103
+ text-overflow: ellipsis;
11104
+ white-space: nowrap;
11105
+ }
11106
+ .media-preview-meta {
11107
+ color: var(--text-muted);
11108
+ font-size: 0.75rem;
11109
+ font-variant-numeric: tabular-nums;
11110
+ }
11111
+ .file-preview-body.kind-video .media-preview-meta { color: rgba(255,255,255,0.7); }
11112
+
11113
+ /* ── Binary fallback card ── */
11114
+ .file-preview-body.kind-binary {
11115
+ display: flex;
11116
+ align-items: center;
11117
+ justify-content: center;
11118
+ }
11119
+ .binary-preview-card {
11120
+ max-width: 480px;
11121
+ padding: 32px 28px;
11122
+ text-align: center;
11123
+ background: var(--bg-secondary);
11124
+ border: 1px solid var(--border);
11125
+ border-radius: var(--radius-lg);
11126
+ display: flex;
11127
+ flex-direction: column;
11128
+ align-items: center;
11129
+ gap: 10px;
11130
+ }
11131
+ .binary-preview-icon { font-size: 3rem; opacity: 0.6; }
11132
+ .binary-preview-name {
11133
+ font-weight: 600;
11134
+ color: var(--text-primary);
11135
+ font-size: 1rem;
11136
+ word-break: break-all;
11137
+ }
11138
+ .binary-preview-meta {
11139
+ display: flex;
11140
+ gap: 6px;
11141
+ align-items: center;
11142
+ color: var(--text-muted);
11143
+ font-size: 0.75rem;
11144
+ }
11145
+ .binary-preview-path {
11146
+ font-family: var(--font-mono);
11147
+ font-size: 0.75rem;
11148
+ color: var(--text-muted);
11149
+ max-width: 100%;
11150
+ overflow: hidden;
11151
+ text-overflow: ellipsis;
11152
+ white-space: nowrap;
11153
+ }
11154
+ .binary-preview-actions {
11155
+ display: flex;
11156
+ gap: 8px;
11157
+ margin-top: 8px;
11158
+ flex-wrap: wrap;
11159
+ justify-content: center;
11160
+ }
11161
+ .binary-preview-btn {
11162
+ padding: 8px 16px;
11163
+ border-radius: 6px;
11164
+ border: 1px solid var(--border);
11165
+ background: var(--bg-primary);
11166
+ color: var(--text-primary);
11167
+ font-size: 0.8125rem;
11168
+ cursor: pointer;
11169
+ text-decoration: none;
11170
+ transition: background 0.15s, border-color 0.15s, color 0.15s;
11171
+ }
11172
+ .binary-preview-btn:hover {
11173
+ background: var(--accent-muted);
11174
+ border-color: var(--accent);
11175
+ color: var(--accent);
11176
+ }
11177
+
10865
11178
  /* ============================================
10866
11179
  骨架屏加载效果
10867
11180
  ============================================ */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@co0ontty/wand",
3
- "version": "1.21.12",
3
+ "version": "1.21.13",
4
4
  "description": "A web terminal for local CLI tools like Claude.",
5
5
  "type": "module",
6
6
  "bin": {