Plugin config forms have been rendered server-side (plugin_config.html via
GET /partials/plugin-config/<id>) since the HTMX migration; the old
client-side generator survived as unreachable code. Verified dead by call
graph, not by naming: showPluginConfigModal and showGithubTokenInstructions
have zero callers anywhere in templates or JS, and everything removed here
is reachable only from those two roots.
Removed:
- plugins_manager.js: showPluginConfigModal, generatePluginConfigForm,
generateFormFromSchema, generateFieldHtml, generateSimpleConfigForm,
handlePluginConfigSubmit, the modal's JSON-editor view (initJsonEditor,
switchPluginConfigView, syncFormToJson/JsonToForm, saveConfigFromJsonEditor,
resetPluginConfigToDefaults, displayValidationErrors, closePluginConfigModal,
savePluginConfiguration, currentPluginConfigState), their exclusive helpers
(getSchemaPropertyType, escapeCssSelector, dotToNested, collectBooleanFields,
normalizeFormDataForConfig, flattenConfig, loadCustomHtmlWidget), the
orphaned-modal cleanup block, the modal's listener wiring, and the
never-invoked showGithubTokenInstructions/closeInstructionsModal pair.
- plugins.html: the #plugin-config-modal markup those functions drove.
- base.html: the deprecated pluginConfigData() component and the
window.PluginConfigHelpers shim (only ever called by pluginConfigData).
Deliberately kept, verified still live:
- renderArrayObjectItem, getSchemaProperty, escapeHtml/escapeAttribute
(window-exposed for the top-level array-of-objects handlers the
server-rendered form uses), toggleNestedSection, addKeyValuePair/
addArrayObjectItem families, executePluginAction, and
window.currentPluginConfig = null init (file-upload.js and
executePluginAction read it, optional-chained).
- app()'s internal generateConfigForm/generateSimpleConfigForm methods in
base.html: unreachable now but embedded in the live Alpine component;
excising methods from a live object is deferred to keep this change
zero-risk.
Validation: every deletion seam inspected line-by-line; Jinja parse of both
templates passes; repo-wide sweep confirms zero remaining references to any
deleted function or element id (deleted ranges contained no Jinja tags).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KEZK1P1Q1fu5pcuVrkrCFZ