fix(settings): giữ tên nút chặn mạng cũ và nới cột mục lục
CI / test (pull_request) Canceled after 0s

- Trả nhãn công tắc về "Block network for agent-run commands"
  (vi/ja như cũ).
- Cột mục lục bên trái tính độ rộng theo kiểu chữ của mục đang chọn
  (in đậm + lề 10px), trước đây "Sandbox Security Layer" bị cắt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
minhanhpkpro
2026-09-18 00:19:26 +09:00
co-authored by Claude Opus 5
parent 8c497cf50a
commit 10b8379824
3 changed files with 33 additions and 5 deletions
+3 -3
View File
@@ -10,9 +10,9 @@ from typing import Dict
STRINGS: Dict[str, Dict[str, str]] = {
"settings.sandbox_block_network": {
"en": "Block network (AI provider still allowed)",
"ja": "ネットワークをブロック(AIプロバイダーのみ許可)",
"vi": "Chặn mạng (vẫn cho gọi nhà cung cấp AI)"},
"en": "Block network for agent-run commands",
"ja": "エージェントが実行するコマンドのネットワークをブロック",
"vi": "Chặn mạng cho lệnh do agent chạy"},
"settings.allow_url_fetch": {
"en": "Allow the agent to fetch URLs (web pages, SharePoint / OneDrive links)",
"ja": "エージェントによるURL取得を許可(Webページ、SharePoint / OneDriveリンク)",
+27
View File
@@ -0,0 +1,27 @@
"""Width of a navigation list whose current row is drawn bold.
The theme draws the selected ``sectionIndex`` row with ``font-weight: 600``
and 10px padding each side (``theme/qss.py``). Sizing the list from the plain
font left the selected label too wide for its row, so "Sandbox Security
Layer" was cut off in Settings as soon as it was picked.
"""
from __future__ import annotations
from typing import Iterable
from PySide6.QtGui import QFont, QFontMetrics
#: Item padding (10px x 2) + item radius + list frame, with a little slack.
ROW_CHROME_PX = 48
def selected_label_width(widget, labels: Iterable[str]) -> int:
"""Pixels needed to show the widest of ``labels`` in the bold selected style."""
widget.ensurePolished()
bold = QFont(widget.font())
bold.setWeight(QFont.Weight.DemiBold)
metrics = QFontMetrics(bold)
return max((metrics.horizontalAdvance(label) for label in labels), default=0) + ROW_CHROME_PX
__all__ = ["ROW_CHROME_PX", "selected_label_width"]
+3 -2
View File
@@ -490,8 +490,9 @@ def section_panels(sections, width: int = 260):
index.currentRowChanged.connect(stack.setCurrentIndex)
index.setCurrentRow(0)
natural = max(index.fontMetrics().horizontalAdvance(lab) for lab, _w in sections) + 36
index.setFixedWidth(max(120, min(width, natural)))
# Sized for the SELECTED look (bold + padding), or the picked label is cut.
from ..presentation.shared.list_sizing import selected_label_width
index.setFixedWidth(max(120, min(width, selected_label_width(index, [lab for lab, _w in sections]))))
return index, stack