release(secrets-mcp): 0.5.19 — 条目列表文件夹列与筛选重置文案;偶数行名称列斑马纹;文档同步 Web 列说明
All checks were successful
Secrets MCP — Build & Release / 检查 / 构建 / 发版 (push) Successful in 5m20s
Secrets MCP — Build & Release / 部署 secrets-mcp (push) Successful in 1m35s

This commit is contained in:
voson
2026-04-11 15:17:51 +08:00
parent cf93488c6a
commit 8c49316923
5 changed files with 36 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
[package]
name = "secrets-mcp"
version = "0.5.18"
version = "0.5.19"
edition.workspace = true
[[bin]]

View File

@@ -145,12 +145,13 @@
}
table {
width: 100%;
min-width: 1100px;
min-width: 1240px;
border-collapse: separate;
border-spacing: 0;
table-layout: fixed;
}
col[data-col="name"] { width: 220px; }
col[data-col="folder"] { width: 140px; }
col[data-col="type"] { width: 120px; }
col[data-col="notes"] { width: 320px; }
col[data-col="tags"] { width: 220px; }
@@ -172,8 +173,8 @@
}
td { font-size: 13px; line-height: 1.45; color: #c9d1d9; }
tbody tr:nth-child(2n) td { background: rgba(255, 255, 255, 0.01); }
tbody tr:nth-child(2n) td.col-name { background: #0f1620; }
.mono { font-family: 'JetBrains Mono', monospace; }
.col-folder { text-align: center; vertical-align: middle; }
.col-type { text-align: center; vertical-align: middle; }
.col-secrets { vertical-align: middle; }
.col-secrets .secret-list { max-height: 120px; overflow: auto; }
@@ -557,7 +558,7 @@
</div>
<div class="filter-actions">
<button type="submit" class="btn-filter" data-i18n="filterSubmit">筛选</button>
<a href="/entries" class="btn-clear" data-i18n="filterClear">清空</a>
<a href="/entries" class="btn-clear" data-i18n="filterClear">重置</a>
<div class="col-menu">
<button type="button" class="btn-col-toggle" id="col-toggle-btn" data-i18n-title="columnSettings" title="显示列"></button>
<div class="col-panel" id="col-panel"></div>
@@ -572,6 +573,7 @@
<table>
<colgroup>
<col data-col="name">
<col data-col="folder">
<col data-col="type">
<col data-col="notes">
<col data-col="tags">
@@ -582,6 +584,7 @@
<thead>
<tr>
<th data-col="name" data-i18n="colName">名称</th>
<th data-col="folder" data-i18n="colFolder">文件夹</th>
<th data-col="type" data-i18n="colType">类型</th>
<th data-col="notes" data-i18n="colNotes">备注</th>
<th data-col="tags" data-i18n="colTags">标签</th>
@@ -594,6 +597,7 @@
{% for entry in entries %}
<tr data-entry-id="{{ entry.id }}" data-entry-folder="{{ entry.folder }}" data-entry-metadata="{{ entry.metadata_json }}" data-entry-secrets="{{ entry.secrets_json }}" data-entry-parents="{{ entry.parents_json }}" data-updated-at="{{ entry.updated_at_iso }}">
<td class="col-name mono cell-name" data-col="name" data-label="名称">{{ entry.name }}</td>
<td class="col-folder mono cell-folder" data-col="folder" data-label="文件夹">{{ entry.folder }}</td>
<td class="col-type mono cell-type" data-col="type" data-label="类型">{{ entry.entry_type }}</td>
<td class="col-notes cell-notes" data-col="notes" data-label="备注">{% if !entry.notes.is_empty() %}<div class="notes-scroll cell-notes-val">{{ entry.notes }}</div>{% endif %}</td>
<td class="col-tags mono cell-tags-val" data-col="tags" data-label="标签">{{ entry.tags }}</td>
@@ -714,9 +718,10 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
filterTypeLabel: '类型',
filterTypeAll: '全部',
filterSubmit: '筛选',
filterClear: '清空',
filterClear: '重置',
emptyEntries: '暂无条目。',
colName: '名称',
colFolder: '文件夹',
colType: '类型',
colNotes: '备注',
colTags: '标签',
@@ -740,6 +745,7 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
modalCancel: '取消',
modalSave: '保存',
mobileLabelName: '名称',
mobileLabelFolder: '文件夹',
mobileLabelType: '类型',
mobileLabelNotes: '备注',
mobileLabelTags: '标签',
@@ -798,9 +804,10 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
filterTypeLabel: '類型',
filterTypeAll: '全部',
filterSubmit: '篩選',
filterClear: '清除',
filterClear: '重置',
emptyEntries: '暫無條目。',
colName: '名稱',
colFolder: '資料夾',
colType: '類型',
colNotes: '備註',
colTags: '標籤',
@@ -824,6 +831,7 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
modalCancel: '取消',
modalSave: '儲存',
mobileLabelName: '名稱',
mobileLabelFolder: '資料夾',
mobileLabelType: '類型',
mobileLabelNotes: '備註',
mobileLabelTags: '標籤',
@@ -882,9 +890,10 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
filterTypeLabel: 'Type',
filterTypeAll: 'All',
filterSubmit: 'Filter',
filterClear: 'Clear',
filterClear: 'Reset',
emptyEntries: 'No entries.',
colName: 'Name',
colFolder: 'Folder',
colType: 'Type',
colNotes: 'Notes',
colTags: 'Tags',
@@ -908,6 +917,7 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
modalCancel: 'Cancel',
modalSave: 'Save',
mobileLabelName: 'Name',
mobileLabelFolder: 'Folder',
mobileLabelType: 'Type',
mobileLabelNotes: 'Notes',
mobileLabelTags: 'Tags',
@@ -962,6 +972,7 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
document.querySelectorAll('tr[data-entry-id]').forEach(function (tr) {
var map = {
'.col-name': 'mobileLabelName',
'.col-folder': 'mobileLabelFolder',
'.col-type': 'mobileLabelType',
'.col-notes': 'mobileLabelNotes',
'.col-tags': 'mobileLabelTags',
@@ -977,9 +988,9 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
rebuildColPanel();
};
var COL_ORDER = ['name', 'type', 'notes', 'tags', 'relations', 'secrets', 'actions'];
var COL_ORDER = ['name', 'folder', 'type', 'notes', 'tags', 'relations', 'secrets', 'actions'];
var COL_ALWAYS_ON = { name: true, actions: true };
var COL_DEFAULTS = { name: true, type: true, notes: false, tags: true, relations: true, secrets: false, actions: true };
var COL_DEFAULTS = { name: true, folder: true, type: true, notes: false, tags: true, relations: true, secrets: false, actions: true };
var COL_STORAGE_KEY = 'entries_col_vis';
var colPanel = document.getElementById('col-panel');
var colToggleBtn = document.getElementById('col-toggle-btn');
@@ -987,7 +998,16 @@ var SECRET_TYPE_OPTIONS = JSON.parse(document.getElementById('secret-type-option
function getColVis() {
try {
var saved = localStorage.getItem(COL_STORAGE_KEY);
if (saved) { var parsed = JSON.parse(saved); if (parsed && typeof parsed === 'object') return parsed; }
if (saved) {
var parsed = JSON.parse(saved);
if (parsed && typeof parsed === 'object') {
var merged = {};
COL_ORDER.forEach(function (col) {
merged[col] = parsed[col] !== undefined ? parsed[col] : COL_DEFAULTS[col];
});
return merged;
}
}
} catch (e) {}
var defaults = {};
COL_ORDER.forEach(function (col) { defaults[col] = COL_DEFAULTS[col]; });