mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2026-09-14 11:06:13 +05:00
release: archivebox 0.9.33rc41
This commit is contained in:
parent
dd741de767
commit
9704d933e6
@ -338,6 +338,8 @@ class PluginConfigFormMixin:
|
||||
"checkbox_id": f"id_{field_name}_{index}",
|
||||
"enabled_config_key": enabled_config_key,
|
||||
"description": str(schema.get("description") or "").strip(),
|
||||
"source_url": f"https://github.com/ArchiveBox/abx-plugins/tree/main/abx_plugins/plugins/{plugin_name}",
|
||||
"docs_url": f"https://archivebox.github.io/abx-plugins/#{plugin_name}",
|
||||
"required_plugins": [str(item) for item in schema.get("required_plugins") or []],
|
||||
"required_binaries_count": len(schema.get("required_binaries") or []),
|
||||
"config_fields": config_fields,
|
||||
|
||||
@ -302,7 +302,7 @@ document.addEventListener('DOMContentLoaded', function () {
|
||||
|
||||
{% block after_field_sets %}
|
||||
{{ block.super }}
|
||||
<section class="module aligned persona-plugin-config">
|
||||
<section id="plugin-config" class="module aligned persona-plugin-config">
|
||||
<h2>Plugin Config</h2>
|
||||
<p>These typed controls update the same Persona config JSON shown above. Shared config keys stay synced across plugin sections.</p>
|
||||
{% include "core/plugin_config_grid.html" with plugin_groups=adminform.form.plugin_groups %}
|
||||
|
||||
@ -247,11 +247,11 @@
|
||||
|
||||
<div class="plugin-presets">
|
||||
<span class="preset-label">Quick Select:</span>
|
||||
<a href="/admin/personas/persona/add/" class="preset-btn persona-create-btn" target="_blank" rel="noopener" title="Create new profile / import from Chrome">+ 👤</a>
|
||||
<a href="/admin/personas/persona/add/" class="preset-btn persona-create-btn" target="_blank" rel="noopener" title="Create new profile / import from Chrome" aria-label="Create new profile / import from Chrome">➕</a>
|
||||
{% for persona in recent_personas %}
|
||||
<span class="persona-preset-wrap">
|
||||
<button type="button" class="preset-btn persona-preset-btn" data-persona="{{ persona.name }}" title="Use {{ persona.name }} persona">👤 {{ persona.name }}</button>
|
||||
<a href="/admin/personas/persona/{{ persona.pk }}/change/" class="preset-btn persona-edit-btn" target="_blank" rel="noopener" title="Edit {{ persona.name }} persona">✎</a>
|
||||
<a href="/admin/personas/persona/{{ persona.pk }}/change/#plugin-config" class="preset-btn persona-edit-btn" target="_blank" rel="noopener" title="Edit {{ persona.name }} persona plugin config">✎</a>
|
||||
</span>
|
||||
{% endfor %}
|
||||
<button type="button" class="preset-btn" data-preset="text-only">📄 Text Only</button>
|
||||
|
||||
@ -82,7 +82,7 @@
|
||||
|
||||
.plugin-card-main {
|
||||
display: grid;
|
||||
grid-template-columns: 18px minmax(0, 1fr) auto;
|
||||
grid-template-columns: 18px minmax(0, 1fr) auto auto auto;
|
||||
gap: 8px;
|
||||
align-items: start;
|
||||
min-width: 0;
|
||||
@ -90,7 +90,7 @@
|
||||
}
|
||||
|
||||
.plugin-card-main--static {
|
||||
grid-template-columns: minmax(0, 1fr) auto;
|
||||
grid-template-columns: minmax(0, 1fr) auto auto auto;
|
||||
}
|
||||
|
||||
.plugin-card-main > input[type="checkbox"] {
|
||||
@ -175,15 +175,16 @@
|
||||
}
|
||||
|
||||
.plugin-config-details {
|
||||
grid-column: 3;
|
||||
grid-column: 5;
|
||||
grid-row: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.plugin-card-main--static .plugin-config-details {
|
||||
grid-column: 2;
|
||||
grid-column: 4;
|
||||
}
|
||||
|
||||
.plugin-card-badge,
|
||||
.plugin-config-details summary {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
@ -202,6 +203,40 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.plugin-card-badge {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.plugin-card-badge:link,
|
||||
.plugin-card-badge:visited,
|
||||
.plugin-card-badge:active {
|
||||
color: #475569;
|
||||
}
|
||||
|
||||
.plugin-card-badge:hover,
|
||||
.plugin-card-badge:focus {
|
||||
background: #eef4fa;
|
||||
color: #1f2937;
|
||||
}
|
||||
|
||||
.plugin-source-badge {
|
||||
grid-column: 3;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.plugin-docs-badge {
|
||||
grid-column: 4;
|
||||
grid-row: 1;
|
||||
}
|
||||
|
||||
.plugin-card-main--static .plugin-source-badge {
|
||||
grid-column: 2;
|
||||
}
|
||||
|
||||
.plugin-card-main--static .plugin-docs-badge {
|
||||
grid-column: 3;
|
||||
}
|
||||
|
||||
.plugin-config-details summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
@ -362,11 +397,11 @@
|
||||
}
|
||||
|
||||
.plugin-card-main {
|
||||
grid-template-columns: 18px minmax(0, 1fr);
|
||||
grid-template-columns: 18px minmax(0, 1fr) auto auto auto;
|
||||
}
|
||||
|
||||
.plugin-card-main--static {
|
||||
grid-template-columns: minmax(0, 1fr);
|
||||
grid-template-columns: minmax(0, 1fr) auto auto auto;
|
||||
}
|
||||
|
||||
.plugin-config-details,
|
||||
@ -411,12 +446,14 @@
|
||||
<label for="{{ plugin.checkbox_id }}" class="plugin-card-label">
|
||||
{{ plugin.label }}
|
||||
</label>
|
||||
{% else %}
|
||||
<div class="plugin-card-label plugin-card-label-static">
|
||||
{{ plugin.label }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<details class="plugin-config-details">
|
||||
{% else %}
|
||||
<div class="plugin-card-label plugin-card-label-static">
|
||||
{{ plugin.label }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<a class="plugin-card-badge plugin-source-badge" href="{{ plugin.source_url }}" target="_blank" rel="noopener noreferrer">Source</a>
|
||||
<a class="plugin-card-badge plugin-docs-badge" href="{{ plugin.docs_url }}" target="_blank" rel="noopener noreferrer">Docs</a>
|
||||
<details class="plugin-config-details">
|
||||
<summary>
|
||||
<span>Config</span>
|
||||
<span class="plugin-config-count">{{ plugin.config_count }}</span>
|
||||
|
||||
@ -761,10 +761,28 @@ select {
|
||||
.preset-btn:hover {
|
||||
background-color: #e9ecef;
|
||||
border-color: #adb5bd;
|
||||
text-decoration: none;
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
a.preset-btn,
|
||||
a.preset-btn:visited,
|
||||
a.preset-btn:hover,
|
||||
a.preset-btn:focus,
|
||||
a.preset-btn:active {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
#add-form .plugin-presets a.preset-btn,
|
||||
#add-form .plugin-presets a.preset-btn:link,
|
||||
#add-form .plugin-presets a.preset-btn:visited,
|
||||
#add-form .plugin-presets a.preset-btn:hover,
|
||||
#add-form .plugin-presets a.preset-btn:focus,
|
||||
#add-form .plugin-presets a.preset-btn:active {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
.preset-btn:active {
|
||||
transform: translateY(0);
|
||||
box-shadow: none;
|
||||
@ -798,6 +816,9 @@ select {
|
||||
}
|
||||
|
||||
.persona-create-btn {
|
||||
justify-content: center;
|
||||
min-width: 28px;
|
||||
padding: 6px 8px;
|
||||
color: #116329;
|
||||
border-color: #b6e3c6;
|
||||
background-color: #f0fff4;
|
||||
|
||||
@ -70,6 +70,10 @@ def test_add_view_admin_renders_plugin_config_grid(client, admin_user, monkeypat
|
||||
assert any(card["config_fields"] for group in form.plugin_groups for card in group["plugins"])
|
||||
assert b"Index only dry run" not in response.content
|
||||
assert b"Start paused" in response.content
|
||||
assert b">Source</a>" in response.content
|
||||
assert b">Docs</a>" in response.content
|
||||
assert b"https://github.com/ArchiveBox/abx-plugins/tree/main/abx_plugins/plugins/" in response.content
|
||||
assert b"https://archivebox.github.io/abx-plugins/#" in response.content
|
||||
|
||||
|
||||
def test_add_view_embeds_selected_persona_config_for_ui_hydration(client, admin_user, monkeypatch):
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "archivebox",
|
||||
"version": "0.9.33rc40",
|
||||
"version": "0.9.33rc41",
|
||||
"repository": "github:ArchiveBox/ArchiveBox",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "archivebox"
|
||||
version = "0.9.33rc40"
|
||||
version = "0.9.33rc41"
|
||||
requires-python = ">=3.13"
|
||||
description = "Self-hosted internet archiving solution."
|
||||
authors = [{name = "Nick Sweeting", email = "pyproject.toml@archivebox.io"}]
|
||||
@ -79,9 +79,9 @@ dependencies = [
|
||||
### Extractor dependencies (optional binaries detected at runtime via shutil.which)
|
||||
### Binary/Package Management
|
||||
"abxbus==2.5.8", # EventBus API
|
||||
"abxpkg>=1.11.66", # for: detecting, versioning, and installing binaries via apt/brew/pip/npm
|
||||
"abx-plugins>=1.11.72", # shared ArchiveBox plugin package with Chrome/Puppeteer dependency wiring
|
||||
"abx-dl>=1.11.72", # shared ArchiveBox downloader package with blocking install preflight
|
||||
"abxpkg>=1.11.67", # for: detecting, versioning, and installing binaries via apt/brew/pip/npm
|
||||
"abx-plugins>=1.11.73", # shared ArchiveBox plugin package with Chrome/Puppeteer dependency wiring
|
||||
"abx-dl>=1.11.73", # shared ArchiveBox downloader package with blocking install preflight
|
||||
### UUID7 backport for Python <3.14
|
||||
"uuid7>=0.1.0; python_version < '3.14'", # provides the uuid_extensions module on Python 3.13
|
||||
]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user