filecat 6.17.2 → 6.18.1

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