1.0.0-rc2 RC2
Deploy Docs to GitHub Pages / Build Documentation (push) Has been cancelled
Deploy Docs to GitHub Pages / Deploy to GitHub Pages (push) Has been cancelled

This commit is contained in:
2026-05-21 10:19:00 +02:00
parent 9b38d78042
commit eeef1fdb73
31 changed files with 4046 additions and 1449 deletions
@@ -57,8 +57,7 @@ const ALWAYS_HIDDEN_SETTING_KEYS = new Set([
'makemkv_rip_mode',
'makemkv_rip_mode_bluray',
'makemkv_rip_mode_dvd',
'makemkv_backup_mode',
'handbrake_pre_metadata_scan_enabled'
'makemkv_backup_mode'
]);
const EXPERT_ONLY_SETTING_KEYS = new Set([
'pushover_device',
@@ -727,6 +726,42 @@ function MakeMKVBetaKeyHint({ onApply, disabled = false }) {
);
}
function ActivationBytesCacheBox({ entries = [] }) {
const list = Array.isArray(entries) ? entries : [];
return (
<section className="settings-section grouped activation-bytes-cache-box">
<div className="settings-section-head">
<h4>Activation Bytes Cache</h4>
<small>Lokal gespeicherte AAX-Activation Bytes. Werden beim ersten Upload automatisch über die Audible-Tools API ermittelt.</small>
</div>
{list.length === 0 ? (
<p>Keine Einträge vorhanden.</p>
) : (
<div className="activation-bytes-table-wrap">
<table className="activation-bytes-table">
<thead>
<tr>
<th>Checksum</th>
<th>Activation Bytes</th>
<th>Gespeichert am</th>
</tr>
</thead>
<tbody>
{list.map((entry, index) => (
<tr key={String(entry?.checksum || `activation-bytes-${index}`)}>
<td>{String(entry?.checksum || '-')}</td>
<td>{String(entry?.activation_bytes || '-')}</td>
<td>{entry?.created_at ? new Date(entry.created_at).toLocaleString('de-DE') : '-'}</td>
</tr>
))}
</tbody>
</table>
</div>
)}
</section>
);
}
function SettingField({
setting,
value,
@@ -1124,6 +1159,7 @@ export default function DynamicSettingsForm({
dirtyKeys,
onChange,
effectivePaths,
activationBytes = [],
onNotify
}) {
const safeCategories = Array.isArray(categories) ? categories : [];
@@ -1217,6 +1253,7 @@ export default function DynamicSettingsForm({
const pushoverEnabled = toBoolean(values?.[PUSHOVER_ENABLED_SETTING_KEY]);
const isDriveCategory = normalizeText(category?.category) === 'laufwerk';
const isToolsCategory = normalizeText(category?.category) === 'tools';
return (
<div className="settings-sections">
{isDriveCategory && <DetectedDrivesInfo expertModeEnabled={expertModeEnabled} onNotify={onNotify} />}
@@ -1345,6 +1382,7 @@ export default function DynamicSettingsForm({
})()}
</section>
))}
{isToolsCategory ? <ActivationBytesCacheBox entries={activationBytes} /> : null}
</div>
);
})()}