filecat 6.17.1 → 6.18.0

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.
@@ -358,12 +358,88 @@ table th {
358
358
  background: var(--primary-light);
359
359
  border-radius: var(--border-radius);
360
360
  color: var(--textPrimary);
361
+ border-bottom: 1px solid var(--divider);
362
+ }
363
+ .chat-message.user {
364
+ background: #1a2a3a;
365
+ color: var(--textPrimary);
366
+ border-bottom: none;
367
+ }
368
+ .chat-message.bot::before {
369
+ background: var(--primary);
370
+ opacity: 0.6;
371
+ transition: opacity 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
372
+ }
373
+ .chat-message.user::after {
374
+ background: var(--icon-blue);
375
+ opacity: 0.8;
376
+ }
377
+
378
+ /* 暗黑模式 - AI 执行中最后一个气泡头像呼吸 */
379
+ [data-sending="true"] .chat-message.bot:last-of-type::before {
380
+ opacity: 1;
381
+ background: var(--primary);
382
+ box-shadow: 0 0 10px 3px var(--primary-light);
383
+ animation: ai-avatar-pulse-dark 1.5s ease-in-out infinite;
384
+ }
385
+
386
+ @keyframes ai-avatar-pulse-dark {
387
+ 0%, 100% {
388
+ box-shadow: 0 0 8px 2px var(--primary-light);
389
+ transform: scale(1);
390
+ }
391
+ 50% {
392
+ box-shadow: 0 0 18px 6px var(--primary-light);
393
+ transform: scale(1.15);
394
+ }
395
+ }
396
+
397
+ /* 暗黑模式 - 工具调用中头像橙色旋转 */
398
+ [data-sending="true"] .chat-message.bot.tool-info:last-of-type::before {
399
+ background: #f59e0b;
400
+ box-shadow: 0 0 10px 3px rgba(245, 158, 11, 0.5);
401
+ animation: ai-avatar-spin-dark 1.5s linear infinite;
402
+ }
403
+
404
+ @keyframes ai-avatar-spin-dark {
405
+ 0% {
406
+ box-shadow: 0 0 10px 3px rgba(245, 158, 11, 0.5);
407
+ transform: rotate(0deg) scale(1.1);
408
+ }
409
+ 100% {
410
+ box-shadow: 0 0 16px 5px rgba(245, 158, 11, 0.7);
411
+ transform: rotate(360deg) scale(1.1);
412
+ }
361
413
  }
362
414
 
363
415
  .chat-input-area textarea {
364
416
  background: var(--surfacePrimary);
365
417
  border-radius: var(--border-radius);
366
418
  color: var(--textPrimary);
419
+ border-color: var(--divider);
420
+ }
421
+ .chat-input-area textarea:focus {
422
+ border-color: var(--primary);
423
+ background: var(--surfaceSecondary);
424
+ box-shadow: 0 0 0 3px var(--primary-light);
425
+ }
426
+
427
+ .chat-input-area {
428
+ background: var(--background);
429
+ border-top: 1px solid var(--divider);
430
+ }
431
+
432
+ .chat-main {
433
+ background: var(--background);
434
+ }
435
+
436
+ .chat-header {
437
+ background: var(--background);
438
+ color: var(--textPrimary);
439
+ }
440
+
441
+ .chat-messages {
442
+ background: var(--background);
367
443
  }
368
444
 
369
445
  .common-box {
@@ -411,6 +487,184 @@ table th {
411
487
  background: var(--primary-light);
412
488
  }
413
489
 
490
+ /* ===== 暗黑模式 - AI 加载气泡 ===== */
491
+ .ai-loading-bubble .ai-loading-text {
492
+ color: var(--textSecondary);
493
+ }
494
+ .ai-loading-dot {
495
+ background-color: var(--textSecondary);
496
+ }
497
+
498
+ /* ===== 暗黑模式 - 工具调用状态气泡 ===== */
499
+ .tool-status-bubble {
500
+ background: var(--surfacePrimary);
501
+ border-color: var(--borderPrimary);
502
+ color: var(--textPrimary);
503
+ }
504
+
505
+ /* ===== 暗黑模式 - 输入区迷你指示器 ===== */
506
+ .ai-thinking-mini {
507
+ background: var(--surfacePrimary);
508
+ }
509
+ .ai-thinking-mini .ai-thinking-dot {
510
+ background-color: var(--textSecondary);
511
+ }
512
+
513
+ /* ===== 暗黑模式 - 消息操作按钮 ===== */
514
+ .message-actions button {
515
+ border-color: var(--borderPrimary);
516
+ background: var(--surfacePrimary);
517
+ color: var(--textSecondary);
518
+ box-shadow: 0 1px 2px rgba(0,0,0,0.3);
519
+ }
520
+ .message-actions button:hover {
521
+ color: var(--textPrimary);
522
+ border-color: var(--borderSecondary);
523
+ background: var(--surfaceSecondary);
524
+ box-shadow: 0 1px 3px rgba(0,0,0,0.4);
525
+ }
526
+
527
+ /* ===== 暗黑模式 - 附件 ===== */
528
+ .chat-attachment-chip {
529
+ border-color: var(--divider);
530
+ background: var(--surfaceSecondary);
531
+ color: var(--textPrimary);
532
+ }
533
+ .chat-attachment-chip button {
534
+ color: var(--textSecondary);
535
+ }
536
+ .chat-attach-button {
537
+ border-color: var(--divider);
538
+ background: var(--surfacePrimary);
539
+ color: var(--textSecondary);
540
+ }
541
+ .chat-attach-button:hover {
542
+ background: var(--primary-light);
543
+ }
544
+
545
+ .chat-message-attachment {
546
+ background: var(--surfaceSecondary);
547
+ }
548
+
549
+ /* ===== 暗黑模式 - AI思考指示器 ===== */
550
+ .ai-thinking-indicator {
551
+ border-color: var(--divider);
552
+ background: var(--surfacePrimary);
553
+ }
554
+
555
+ .ai-thinking-spinner {
556
+ border-color: var(--divider);
557
+ background: var(--surfacePrimary);
558
+ }
559
+ .ai-thinking-spinner::after {
560
+ border-color: var(--divider);
561
+ border-top-color: var(--primary);
562
+ }
563
+
564
+ .chat-session-item small {
565
+ color: var(--textSecondary);
566
+ }
567
+ .chat-session-source {
568
+ color: var(--icon-purple);
569
+ }
570
+
571
+ /* ===== 暗黑模式 - 模型选择器 ===== */
572
+ .model-selector-dropdown {
573
+ border-color: var(--divider);
574
+ background: var(--surfacePrimary);
575
+ color: var(--textPrimary);
576
+ }
577
+ .model-selector-dropdown:focus {
578
+ border-color: var(--primary);
579
+ box-shadow: 0 0 0 2px var(--primary-light);
580
+ }
581
+
582
+ /* ===== 暗黑模式 - 用量统计弹框 ===== */
583
+ .usage-stats-popup {
584
+ background: var(--surfacePrimary);
585
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
586
+ }
587
+ .usage-stats-header {
588
+ border-color: var(--divider);
589
+ }
590
+ .usage-stats-header h3 {
591
+ color: var(--textPrimary);
592
+ }
593
+ .usage-stats-close {
594
+ color: var(--textSecondary);
595
+ }
596
+ .usage-stats-close:hover {
597
+ background: var(--primary-light);
598
+ color: var(--textPrimary);
599
+ }
600
+ .usage-stats-loading,
601
+ .usage-stats-empty {
602
+ color: var(--textSecondary);
603
+ }
604
+ .usage-stats-row {
605
+ background: var(--background);
606
+ }
607
+ .usage-stats-row:nth-child(even) {
608
+ background: var(--surfaceSecondary);
609
+ }
610
+ .usage-stats-label {
611
+ color: var(--textSecondary);
612
+ }
613
+ .usage-stats-value {
614
+ color: var(--textPrimary);
615
+ }
616
+ .usage-stats-total {
617
+ background: var(--primary-light) !important;
618
+ border-color: var(--primary);
619
+ }
620
+ .usage-stats-total .usage-stats-label,
621
+ .usage-stats-total .usage-stats-value {
622
+ color: var(--primary);
623
+ }
624
+
625
+ /* ===== 暗黑模式 - 工具调用列表 ===== */
626
+ .chat-message-call-list {
627
+ border-color: var(--divider);
628
+ background: rgba(255,255,255,0.03);
629
+ }
630
+ .call-list-header {
631
+ color: var(--textSecondary);
632
+ background: rgba(255,255,255,0.02);
633
+ }
634
+ .call-list-header:hover {
635
+ background: rgba(255,255,255,0.05);
636
+ }
637
+ .call-list-item.call-success {
638
+ border-color: rgba(34,197,94,0.25);
639
+ background: rgba(34,197,94,0.08);
640
+ }
641
+ .call-list-item.call-fail {
642
+ border-color: rgba(239,68,68,0.25);
643
+ background: rgba(239,68,68,0.08);
644
+ }
645
+ .call-list-tool-name {
646
+ color: var(--textPrimary);
647
+ }
648
+ .call-list-duration {
649
+ color: var(--textSecondary);
650
+ }
651
+ .call-list-details summary {
652
+ color: var(--textSecondary);
653
+ }
654
+ .call-list-details summary:hover {
655
+ background: rgba(255,255,255,0.04);
656
+ }
657
+ .call-list-pre {
658
+ background: rgba(255,255,255,0.04);
659
+ }
660
+ .call-list-error-text {
661
+ color: var(--accent);
662
+ }
663
+
664
+ .chat-header-model {
665
+ color: var(--textSecondary);
666
+ }
667
+
414
668
  .menu-select-popup {
415
669
  background: var(--surfacePrimary);
416
670
  border-radius: var(--border-radius);
@@ -354,12 +354,88 @@ table th {
354
354
  background: var(--primary-light);
355
355
  border-radius: var(--border-radius);
356
356
  color: var(--textPrimary);
357
+ border-bottom: 1px solid var(--divider);
358
+ }
359
+ .chat-message.user {
360
+ background: #1a2a3a;
361
+ color: var(--textPrimary);
362
+ border-bottom: none;
363
+ }
364
+ .chat-message.bot::before {
365
+ background: var(--primary);
366
+ opacity: 0.6;
367
+ transition: opacity 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;
368
+ }
369
+ .chat-message.user::after {
370
+ background: var(--icon-blue);
371
+ opacity: 0.8;
372
+ }
373
+
374
+ /* Google 暗黑模式 - AI 执行中最后一个气泡头像呼吸 */
375
+ [data-sending="true"] .chat-message.bot:last-of-type::before {
376
+ opacity: 1;
377
+ background: var(--primary);
378
+ box-shadow: 0 0 10px 3px var(--primary-light);
379
+ animation: ai-avatar-pulse-dark 1.5s ease-in-out infinite;
380
+ }
381
+
382
+ @keyframes ai-avatar-pulse-dark {
383
+ 0%, 100% {
384
+ box-shadow: 0 0 8px 2px var(--primary-light);
385
+ transform: scale(1);
386
+ }
387
+ 50% {
388
+ box-shadow: 0 0 18px 6px var(--primary-light);
389
+ transform: scale(1.15);
390
+ }
391
+ }
392
+
393
+ /* Google 暗黑模式 - 工具调用中头像橙色旋转 */
394
+ [data-sending="true"] .chat-message.bot.tool-info:last-of-type::before {
395
+ background: #f59e0b;
396
+ box-shadow: 0 0 10px 3px rgba(245, 158, 11, 0.5);
397
+ animation: ai-avatar-spin-dark 1.5s linear infinite;
398
+ }
399
+
400
+ @keyframes ai-avatar-spin-dark {
401
+ 0% {
402
+ box-shadow: 0 0 10px 3px rgba(245, 158, 11, 0.5);
403
+ transform: rotate(0deg) scale(1.1);
404
+ }
405
+ 100% {
406
+ box-shadow: 0 0 16px 5px rgba(245, 158, 11, 0.7);
407
+ transform: rotate(360deg) scale(1.1);
408
+ }
357
409
  }
358
410
 
359
411
  .chat-input-area textarea {
360
412
  background: var(--surfacePrimary);
361
413
  border-radius: var(--border-radius);
362
414
  color: var(--textPrimary);
415
+ border-color: var(--divider);
416
+ }
417
+ .chat-input-area textarea:focus {
418
+ border-color: var(--primary);
419
+ background: var(--surfaceSecondary);
420
+ box-shadow: 0 0 0 3px var(--primary-light);
421
+ }
422
+
423
+ .chat-input-area {
424
+ background: var(--background);
425
+ border-top: 1px solid var(--divider);
426
+ }
427
+
428
+ .chat-main {
429
+ background: var(--background);
430
+ }
431
+
432
+ .chat-header {
433
+ background: var(--background);
434
+ color: var(--textPrimary);
435
+ }
436
+
437
+ .chat-messages {
438
+ background: var(--background);
363
439
  }
364
440
 
365
441
  .common-box {
@@ -416,6 +492,186 @@ table th {
416
492
  box-shadow: 0 0 0 2px var(--primary-light);
417
493
  }
418
494
 
495
+ /* ===== Google 暗黑模式 - AI 加载气泡 ===== */
496
+ .ai-loading-bubble .ai-loading-text {
497
+ color: var(--textSecondary);
498
+ }
499
+ .ai-loading-dot {
500
+ background-color: var(--textSecondary);
501
+ }
502
+
503
+ /* ===== Google 暗黑模式 - 工具调用状态气泡 ===== */
504
+ .tool-status-bubble {
505
+ background: var(--surfacePrimary);
506
+ border-color: var(--borderPrimary);
507
+ color: var(--textPrimary);
508
+ }
509
+
510
+ /* ===== Google 暗黑模式 - 输入区迷你指示器 ===== */
511
+ .ai-thinking-mini {
512
+ background: var(--surfacePrimary);
513
+ }
514
+ .ai-thinking-mini .ai-thinking-dot {
515
+ background-color: var(--textSecondary);
516
+ }
517
+
518
+ /* ===== Google 暗黑模式 - 消息操作按钮 ===== */
519
+ .message-actions button {
520
+ border-color: var(--borderPrimary);
521
+ background: var(--surfacePrimary);
522
+ color: var(--textSecondary);
523
+ box-shadow: 0 1px 2px rgba(0,0,0,0.3);
524
+ }
525
+ .message-actions button:hover {
526
+ color: var(--textPrimary);
527
+ border-color: var(--borderSecondary);
528
+ background: var(--surfaceSecondary);
529
+ box-shadow: 0 1px 3px rgba(0,0,0,0.4);
530
+ }
531
+
532
+ /* ===== Google 暗黑模式 - 附件 ===== */
533
+ .chat-attachment-chip {
534
+ border-color: var(--divider);
535
+ background: var(--surfaceSecondary);
536
+ color: var(--textPrimary);
537
+ }
538
+ .chat-attachment-chip button {
539
+ color: var(--textSecondary);
540
+ }
541
+ .chat-attach-button {
542
+ border-color: var(--divider);
543
+ background: var(--surfacePrimary);
544
+ color: var(--textSecondary);
545
+ }
546
+ .chat-attach-button:hover {
547
+ background: var(--primary-light);
548
+ }
549
+
550
+ .chat-message-attachment {
551
+ background: var(--surfaceSecondary);
552
+ }
553
+
554
+ /* ===== Google 暗黑模式 - AI思考指示器 ===== */
555
+ .ai-thinking-indicator {
556
+ border-color: var(--divider);
557
+ background: var(--surfacePrimary);
558
+ }
559
+
560
+ .ai-thinking-spinner {
561
+ border-color: var(--divider);
562
+ background: var(--surfacePrimary);
563
+ }
564
+ .ai-thinking-spinner::after {
565
+ border-color: var(--divider);
566
+ border-top-color: var(--primary);
567
+ }
568
+
569
+ .chat-session-item small {
570
+ color: var(--textSecondary);
571
+ }
572
+ .chat-session-source {
573
+ color: var(--icon-purple);
574
+ }
575
+
576
+ /* ===== Google 暗黑模式 - 模型选择器 ===== */
577
+ .model-selector-dropdown {
578
+ border-color: var(--divider);
579
+ background: var(--surfacePrimary);
580
+ color: var(--textPrimary);
581
+ }
582
+ .model-selector-dropdown:focus {
583
+ border-color: var(--primary);
584
+ box-shadow: 0 0 0 2px var(--primary-light);
585
+ }
586
+
587
+ /* ===== Google 暗黑模式 - 用量统计弹框 ===== */
588
+ .usage-stats-popup {
589
+ background: var(--surfacePrimary);
590
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
591
+ }
592
+ .usage-stats-header {
593
+ border-color: var(--divider);
594
+ }
595
+ .usage-stats-header h3 {
596
+ color: var(--textPrimary);
597
+ }
598
+ .usage-stats-close {
599
+ color: var(--textSecondary);
600
+ }
601
+ .usage-stats-close:hover {
602
+ background: var(--primary-light);
603
+ color: var(--textPrimary);
604
+ }
605
+ .usage-stats-loading,
606
+ .usage-stats-empty {
607
+ color: var(--textSecondary);
608
+ }
609
+ .usage-stats-row {
610
+ background: var(--background);
611
+ }
612
+ .usage-stats-row:nth-child(even) {
613
+ background: var(--surfaceSecondary);
614
+ }
615
+ .usage-stats-label {
616
+ color: var(--textSecondary);
617
+ }
618
+ .usage-stats-value {
619
+ color: var(--textPrimary);
620
+ }
621
+ .usage-stats-total {
622
+ background: var(--primary-light) !important;
623
+ border-color: var(--primary);
624
+ }
625
+ .usage-stats-total .usage-stats-label,
626
+ .usage-stats-total .usage-stats-value {
627
+ color: var(--primary);
628
+ }
629
+
630
+ /* ===== Google 暗黑模式 - 工具调用列表 ===== */
631
+ .chat-message-call-list {
632
+ border-color: var(--divider);
633
+ background: rgba(255,255,255,0.03);
634
+ }
635
+ .call-list-header {
636
+ color: var(--textSecondary);
637
+ background: rgba(255,255,255,0.02);
638
+ }
639
+ .call-list-header:hover {
640
+ background: rgba(255,255,255,0.05);
641
+ }
642
+ .call-list-item.call-success {
643
+ border-color: rgba(34,197,94,0.25);
644
+ background: rgba(34,197,94,0.08);
645
+ }
646
+ .call-list-item.call-fail {
647
+ border-color: rgba(239,68,68,0.25);
648
+ background: rgba(239,68,68,0.08);
649
+ }
650
+ .call-list-tool-name {
651
+ color: var(--textPrimary);
652
+ }
653
+ .call-list-duration {
654
+ color: var(--textSecondary);
655
+ }
656
+ .call-list-details summary {
657
+ color: var(--textSecondary);
658
+ }
659
+ .call-list-details summary:hover {
660
+ background: rgba(255,255,255,0.04);
661
+ }
662
+ .call-list-pre {
663
+ background: rgba(255,255,255,0.04);
664
+ }
665
+ .call-list-error-text {
666
+ color: var(--accent);
667
+ }
668
+
669
+ .chat-header-model {
670
+ color: var(--textSecondary);
671
+ }
672
+
673
+ /* ===== Google 暗黑模式 - 保留原 google-dark 的其他内容 ===== */
674
+
419
675
  .menu-select-popup {
420
676
  background: var(--surfacePrimary);
421
677
  border-radius: var(--border-radius);
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>{{{web_site_title}}}</title><link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png"/><script defer="defer" src="main.9e1669cd58e79ec93dcf.js"></script></head><body><div id="root"></div></body><script id="pre_code" type="text/template">return {{{Windows_FileCat}}};</script><script>window.EXCALIDRAW_ASSET_PATH = "/";window.FileCat;</script></html>
1
+ <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>{{{web_site_title}}}</title><link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png"/><link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png"/><script defer="defer" src="main.f4425239534ec5a35a30.js"></script></head><body><div id="root"></div></body><script id="pre_code" type="text/template">return {{{Windows_FileCat}}};</script><script>window.EXCALIDRAW_ASSET_PATH = "/";window.FileCat;</script></html>