Bug Description
src/settings.ts exports a settingsSchema covering every setting the plugin reads, but the descriptor in src/index.ts declares only admin pages:
js
admin: {
pages: [
{ path: "/settings", label: "SEO", icon: "settings" },
{ path: "/fuzzy-redirects", label: "Fuzzy Redirects", icon: "arrow-right" },
],
}
With no settingsSchema key, EmDash never renders the auto-generated settings form it added in 0.30. The custom /settings page in src/admin.tsx renders its own FIELDS list, which is a subset. So these are defined and read at runtime but configurable nowhere:
indexnowEnabled, llmsTxtEnabled, llmsTxtDescription, publishingPrinciples, copyrightYear, licenseUrl, blogUrl, blogName, navigationItems.
indexnowEnabled defaults to "false", so IndexNow ships but cannot be switched on. llmsTxtEnabled defaults to "true" so it's unaffected in practice, but equally can't be turned off.
Either attaching settingsSchema to the descriptor or extending the FIELDS array in src/admin.tsx would close it. The second keeps everything on one page, which would be better than two settings surfaces IMO.
Steps to Reproduce
Install the plugin and add seoPlugin() to plugins: [].
Open the admin → SEO settings page.
Look for an IndexNow control.
Open Plugins and click the gear on the SEO plugin's card.
Expected Behavior
Every setting the plugin reads is reachable from one of those two surfaces.
Actual Behavior
Nine settings appear in neither. IndexNow is permanently off.
Severity
High (feature completely broken)
EmDash Version
0.31.1
Plugin Version
0.12.0
Bug Description
src/settings.ts exports a settingsSchema covering every setting the plugin reads, but the descriptor in src/index.ts declares only admin pages:
js
admin: {
pages: [
{ path: "/settings", label: "SEO", icon: "settings" },
{ path: "/fuzzy-redirects", label: "Fuzzy Redirects", icon: "arrow-right" },
],
}
With no settingsSchema key, EmDash never renders the auto-generated settings form it added in 0.30. The custom /settings page in src/admin.tsx renders its own FIELDS list, which is a subset. So these are defined and read at runtime but configurable nowhere:
indexnowEnabled, llmsTxtEnabled, llmsTxtDescription, publishingPrinciples, copyrightYear, licenseUrl, blogUrl, blogName, navigationItems.
indexnowEnabled defaults to "false", so IndexNow ships but cannot be switched on. llmsTxtEnabled defaults to "true" so it's unaffected in practice, but equally can't be turned off.
Either attaching settingsSchema to the descriptor or extending the FIELDS array in src/admin.tsx would close it. The second keeps everything on one page, which would be better than two settings surfaces IMO.
Steps to Reproduce
Install the plugin and add seoPlugin() to plugins: [].
Open the admin → SEO settings page.
Look for an IndexNow control.
Open Plugins and click the gear on the SEO plugin's card.
Expected Behavior
Every setting the plugin reads is reachable from one of those two surfaces.
Actual Behavior
Nine settings appear in neither. IndexNow is permanently off.
Severity
High (feature completely broken)
EmDash Version
0.31.1
Plugin Version
0.12.0