Greasy Fork

来自缓存

Greasy Fork is available in English.

Google AI Studio 增强&美化 (Markdown优化/对话目录/侧边栏重排)

1. 明确区分User/Model背景;2. 对话内目录,快速跳转到前某句;3. Markdown 全面优化(解决了原版排版/可读性差的问题:间距、字重、颜色调整;代码块内应用编程字体);4. 右侧边栏重构,常用功能卡片化并置顶。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

/* ==UserStyle==
@name           Google AI Studio 增强&美化 (Markdown优化/对话目录/侧边栏重排)
@namespace      github.com/Duoduo23333333
@version        1.0.2
@description    1. 明确区分User/Model背景;2. 对话内目录,快速跳转到前某句;3. Markdown 全面优化(解决了原版排版/可读性差的问题:间距、字重、颜色调整;代码块内应用编程字体);4. 右侧边栏重构,常用功能卡片化并置顶。
@author         Duoduo23333333
@license        MIT
@homepageURL    https://github.com/Duoduo23333333/Google-AI-Studio-Enhanced
@supportURL     https://github.com/Duoduo23333333/Google-AI-Studio-Enhanced/issues
@preprocessor   default
==/UserStyle== */

@-moz-document url-prefix("https://aistudio.google.com/prompts"), url-prefix("https://aistudio.google.com/app/prompts") {


    /* ==========================================================================
       0. 核心变量定义: Markdown、UI 颜色等
       ========================================================================== */
    
    /* 默认情况 & 深色模式 */
    body, 
    body.dark-theme {
        /* Markdown 颜色 */
        --my-text-main: #d1d1d1;           /* 正文 颜色浅一些 */
        --my-text-bold: #ffffffe0;         /* 加粗正文 颜色深一些 */
        --my-hr-center: #444444;           /* 分割线中间色 */
        --my-hr-side:   #ffffff08;         /* 分割线边缘色 */
        --my-code-bg:   #333333;           /* 代码块背景 */
        --my-code-text: #e6e6e6;           /* 代码块文字 */
        
        /* 对话框与目录颜色 */
        --my-user-bg: #1F4042;         
        --my-user-code-bg: #112C28; 
        --my-text-color: #FFFFFF; 
        --my-unpressed-item-bg: #191919; 
        --my-pressed-item-bg: #2c6360; 
        --my-hover-item-bg: #285250; 
        --my-border-color: #ffffff30;

        /* 右侧边栏卡片颜色 */
        --my-card-bg: #222222;
        --my-side-border-color: #262626; 
    }

    /* 浅色模式 */
    body.light-theme {
        /* Markdown 颜色 */
        --my-text-main: #373737;         /* 正文 颜色浅一些 */
        --my-text-bold: #000000;        /* 加粗正文 颜色深一些 */
        --my-hr-center: #d0d0d0;        
        --my-hr-side:   #00000005;      
        --my-code-bg:   #f0f2f4;        
        --my-code-text: #1f1f1f;        

        /* 对话框与目录颜色 */
        --my-user-bg: #eff4fb;          
        --my-user-code-bg: #f3f5fb;      
        --my-text-color: #000; 
        --my-unpressed-item-bg: #F3F3F3; 
        --my-pressed-item-bg: #e6edf7; 
        --my-hover-item-bg: #e8ebf8; 
        --my-border-color: #0000001c;

        /* 右侧边栏卡片颜色 */
        --my-card-bg: #F8F8F7;
        --my-side-border-color: #eeeeec;
    }


    /* ==========================================================================
       模块一:Markdown 正文优化
       ========================================================================== */

    /* 1. 正文基础 & 颜色分层 */
    ms-text-chunk, 
    .markdown-content {
        color: var(--my-text-main) !important;
    }

    /* 段落优化:只动行距和段距,不动字号 */
    ms-text-chunk p, 
    .markdown-content p {
        line-height: 1.65 !important;      /* 行距 */
        margin-bottom: 1.2em !important;   /* 段距 */
        color: var(--my-text-main) !important;
    }

    /* 2. 视觉层级:加粗强化 */
    /* 解决字体加粗可能不明显的问题:通过拉大亮度对比度来区分 */
    ms-text-chunk strong,
    ms-text-chunk b,
    .markdown-content strong,
    .markdown-content b {
        color: var(--my-text-bold) !important; 
        font-weight: 700 !important;        /* 确保最大字重 */
    }

    /* 3. 把刺眼的纯白分割线换成渐变 */
    ms-text-chunk hr, 
    .markdown-content hr {
        height: 1px !important;
        background-image: linear-gradient(to right, var(--my-hr-side), var(--my-hr-center), transparent) !important;
        background-color: transparent !important;
        border: none !important;
        margin: 32px 0 !important; /* 上下间距拉大,视觉上会协调很多 */
        opacity: 0.8;
    }

    /* 4. 有序列表嵌无序列表的时候 互相之间行距差别的微调 */
    ms-text-chunk ul, 
    ms-text-chunk ol {
        margin-bottom: 1em !important;
        margin-top: 1em !important;
        padding-left: 30px !important;
    }

    ms-text-chunk li,
    .markdown-content li {
        margin-bottom: 4px !important; /* 列表项之间保持紧凑 */
        line-height: 1.6 !important;
        color: var(--my-text-main) !important;
    }
	

    /* 修复列表内嵌套P标签导致的双倍间距 */
    /* 强行将列表内的段落设为行内元素,消除块级margin */
    ms-text-chunk li p {
        display: inline !important; 
        margin: 0 !important;
    }

    /* 5. 代码块 */
	/*字体选用主流编程字体*/
    code, pre {
        font-family: 
            'Fira Code', 
            'JetBrains Mono', 
            'Source Code Pro', 
            'Hack',
            'ui-monospace', 
            'SFMono-Regular',
            'Menlo',
            'Monaco',
            'Consolas',
            'Liberation Mono',
            'Courier New',
            monospace !important;
        font-size: 0.95em !important; /* 稍微调小一点点,不过编程字体好像通常本来也比正文字体显大 */
    }

    /* 行内代码样式,微调 */
    ms-text-chunk :not(pre) > code {
        background-color: var(--my-code-bg) !important;
        color: var(--my-code-text) !important;
        padding: 2px 5px !important;
        border-radius: 4px !important;
    }


    /* ==========================================================================
       模块二:对话区布局调整,给 user / modal 对话样式做出明显区分
       ========================================================================== */

    /* 给user内容指定颜色,便于区分 */
    .chat-turn-container.user {
        background-color: var(--my-user-bg) !important;
    }
    
    /* user里的代码块 也需要单独指定颜色 */
    .chat-turn-container.user mat-expansion-panel {
        background-color: var(--my-user-code-bg) !important;
    }
    .chat-turn-container.user mat-expansion-panel-header {
        background-color: var(--my-user-code-bg) !important;
    }

	/* 整个对话宽度变窄且偏左,给右边腾出空位,放跳转目录导览    */
		.chat-view-container{
		padding-right: 240px !important;
		overflow-y: hidden !important; 
		overflow-x: hidden !important; 	/* 在少数情况下,比如输入框中行数非常多,输入框height非常大,把上面的部分挤上去了,与此同时,最底部的那个:after元素如果文字较多height较高从而底边出界,就会导致.chat-view-container出现一个滚动范围非常小的滚动条。这个bug不知道怎么搞掉,但考虑到即使出现滚动条,滚动范围也非常小,所以干脆直接禁止这里滚动,观感上也没差。 */
	}

    /* 整个右侧边栏变窄,少占点空间 */
    .settings-items-wrapper {
        width: 210px !important;
    }
    ms-right-side-panel {
        width: 210px !important;
    }

    /* 对话框样式微调,宽度减小,增加易读性,同时也能防止鼠标误触右侧目录 */
    ms-prompt-input-wrapper {
        border-top : 1px solid var(--color-v3-outline-var) !important;
    }
    ms-prompt-input-wrapper > div {
        max-width: 790px !important;
    }


    /* ==========================================================================
       模块三:右侧边栏 功能重排 美化
       ========================================================================== */
    
    /* 1. 隐藏不常用模块 */
    ms-right-side-panel ms-paid-api-key,
    ms-right-side-panel ms-model-selector-v3 .subtitle,
    ms-right-side-panel #mediaResolution,
    ms-right-side-panel mat-divider { 
        display: none !important;
    }

    /* 2. 字体微调*/
    ms-right-side-panel span, 
    ms-right-side-panel h3 {
        font-size: 13px !important;
        margin-bottom: 0px !important;
    }

    /* 3. 排序逻辑 */
    /* 确保容器 Flex */
    .scrollable-area {
        display: flex !important;
        flex-direction: column !important;
        gap: 10px !important; 
    }

    /* --- 排序 --- */
    /* 1. 模型选择 */
    .settings-item.settings-model-selector { order: 1 !important; }
    /* 2. System instruction */
    ms-system-instructions-panel           { order: 2 !important; }
    /* 3. Gemini 3.0 pro 可选的思考程度 */
    ms-thinking-level-setting              { order: 3 !important; }
    /* 4. Media resolution */
    .settings-item[data-test-id="mediaResolution"] { order: 4 !important; }
    /* 5. Temperature 滑块 */
    .settings-item-column[data-test-id="temperatureSliderContainer"] { order: 5 !important; }
    /* 6. URL 浏览 开关 */
    ms-browse-as-a-tool                    { order: 6 !important; }
    /* 7. 谷歌搜索 开关 */
    .settings-item.settings-tool[data-test-id="searchAsAToolTooltip"] { order: 7 !important; }

    /* --- 次要元素沉底 --- */
    .settings-item.settings-group-header   { order: 101 !important; }
    .settings-item.settings-tool:not([data-test-id="searchAsAToolTooltip"]) { order: 102 !important; }
    .advanced-settings, 
    .settings-item.safety-settings, 
    .settings-item.output-length { order: 103 !important; }

    /* 4. 卡片化样式 UI美化 */
    .settings-item-column[data-test-id="temperatureSliderContainer"],
    .settings-item.settings-tool[data-test-id="searchAsAToolTooltip"],
    ms-browse-as-a-tool .settings-item {
        background: var(--my-card-bg) !important;
        border: 1px solid var(--my-side-border-color) !important;
        border-radius: 8px !important;
        padding: 12px !important;
        margin-bottom: 8px !important;
    }

    /* 单独修改一下温度滑块的内边距 */
    .settings-item-column[data-test-id="temperatureSliderContainer"] {
        padding-top: 6px !important;
        padding-bottom: 0 !important;
    }
    .settings-item-column[data-test-id="temperatureSliderContainer"] .item-input {
        padding-left: 3px !important;
    }

    /* 5. 文本替换 */

    /* URL 访问*/
    /* 隐藏原文本 */
    ms-browse-as-a-tool h3 {
        font-size: 0 !important;        
        display: flex !important;       
        align-items: center !important; 
        min-height: 20px !important;    
        line-height: 0 !important;
    }
    /* 插入新文本: "链接访问" */
    ms-browse-as-a-tool h3::before {
        content: "URL 浏览" !important;
        white-space: pre-wrap !important; 
        font-size: 13px !important;     
        line-height: 1.4 !important;
        text-align: left !important;
        display: block !important;
    }

    /* 谷歌搜索 */
    /* 隐藏原文本,开启纵向 Flex */
    .settings-item.settings-tool[data-test-id="searchAsAToolTooltip"] h3 {
        font-size: 0 !important;     
        display: flex !important;   
        flex-direction: column !important; 
        align-items: flex-start !important;
        justify-content: center !important;
        min-height: 30px !important;  
        line-height: 0 !important;
    }

    .settings-item.settings-tool[data-test-id="searchAsAToolTooltip"] h3::before {
        content: "Google 搜索" !important;
        font-size: 13px !important;      
        line-height: 1.4 !important;
        color: inherit !important;  
        display: block !important;
    }

    .settings-item.settings-tool[data-test-id="searchAsAToolTooltip"] h3::after {
        content: "用完记得关掉" !important;
        font-size: 11px !important; 
        opacity: 0.6 !important; 
        margin-top: 2px !important;
        line-height: 1.2 !important;
        display: block !important;
        font-weight: normal !important;
    }


    /* ==========================================================================
       模块四:右侧可跳转目录
       ========================================================================== */

/* 1. 把容器变宽 以便显示文本 */
    ms-prompt-scrollbar {
        /* 解除所有渲染限制 */
        overflow: visible !important;
        contain: none !important;
        clip: auto !important;
        
        width: 400px !important; 
        
        /* 布局修正 */
        margin-left: -350px !important; 
        padding-left: 372px !important; 
        box-sizing: border-box !important;
        
        /* 把容器设置成鼠标可穿透且视觉透明 */
        pointer-events: none !important;
        background: transparent !important;
        box-shadow: none !important;

        /* 确保层级最高 */
        z-index: 9999 !important;
    }
	
	
/* 2. 当初没注释 现在已经忘了这里是要干嘛了 
		删了之后也好像没影响 但还是留着吧
		以后出问题了记得看过来这里  */
    .scrollbar-track {
        overflow: visible !important;
        width: 100% !important;
        pointer-events: none !important; /* 继承穿透属性 */
    }

	
/* 3. 按钮容器改造 */
    .prompt-scrollbar-item {
        overflow: visible !important;
        pointer-events: none !important; /* 继承穿透属性 */
        position: absolute !important; 
        right: 0 !important; 
        width: 100% !important;
    }
	

/* 4. 按钮本体恢复:在整个容器中,唯独让按钮变成实体,可以被点击 */

    .prompt-scrollbar-item button {
        /* 复活点击事件 */
        pointer-events: auto !important;
        cursor: pointer !important;
        
        /* 确保按钮贴在最右边 (原位置) */
        position: absolute !important;
        right: 0px !important; /* 根据实际情况微调距离右边的距离 */
        top: 0 !important;
        
        /* 确保按钮层级 必须高于一切 */
        z-index: 10000 !important;
    }

    /*  ==========================================================================
			5.显示文字:基于aria-label,实现无DOM的纯css目录方案
       ========================================================================== */

    .prompt-scrollbar-item button[aria-label]::after {
        content: attr(aria-label);
        position: absolute;
        right: -190px;
        top: 50%;
        transform: translateY(-50%);
        width: 165px; 
        background-color: var(--my-unpressed-item-bg);
        color: var(--my-text-color);
        padding: 8px 12px;
        border-radius: 6px;
        font-size: 12px;
        line-height: 1.4;
        text-align: left;
        white-space: normal; /* 允许换行 */
        border: 1px solid var(--my-border-color);

        /* 交互:让文字块本身也可以等同于button来进行点击交互 */
        pointer-events: auto !important;
        /* hover 时候变手,提示可点击 */
        cursor: pointer !important;
        
        /* 显示保障 */
        display: block !important;
        visibility: visible !important;
        opacity: 1 !important;
        z-index: 2147483647 !important;
    }

    /* 悬停高亮优化 */
    .prompt-scrollbar-item button:hover::after {
        background-color: var(--my-hover-item-bg);
        z-index: 2147483647 !important;
    }

    /* 6. 给当前所处位置的小框 用不同的颜色标出来 (判断标准为aria-pressed="true")  */

    .prompt-scrollbar-item button[aria-pressed="true"]::after {
        background-color: var(--my-pressed-item-bg) !important; 
        border: 0px !important;
        /* 确保它在最上层 防止被其他那些未选中的遮住 */
        z-index: 2147483648 !important;
    }
}