diff --git a/docs/plans/current_spec.md b/docs/plans/current_spec.md
index 4e317b59..466d6122 100644
--- a/docs/plans/current_spec.md
+++ b/docs/plans/current_spec.md
@@ -19,6 +19,300 @@
git push
```
+---
+
+## Fix: Script DNS provider field (plan & patch) ✅
+
+Summary: the failing Playwright assertion in `tests/dns-provider-types.spec.ts` expects a visible, accessible input labelled `Script Path` (placeholder matching `/dns-challenge.sh/i`) when the `script` DNS provider is selected. The UI rendered `create_script` as **"Create Record Script"** with a different placeholder — mismatch caused the E2E failure. This change is surgical: align the default schema and ensure the form renders the input with the exact accessible name and placeholder the E2E test (and assistive tech) expect.
+
+Scope (what will change):
+- Frontend: `defaultProviderSchemas` (label + placeholder for `create_script`) and `DNSProviderForm` rendering (add id/aria, hint id)
+- Tests: add unit tests for `DNSProviderForm`; strengthen Playwright assertion in `tests/dns-provider-types.spec.ts`
+- Docs: short entry in this plan + CHANGELOG note
+
+Acceptance criteria (verified):
+- Playwright `tests/dns-provider-types.spec.ts` passes locally + CI
+- Unit tests cover the new rendering and achieve 100% patch coverage for modified lines
+- The input is keyboard-focusable, labelled `Script Path`, placeholder contains `dns-challenge.sh`, and has programmatic hint association (ARIA)
+
+Deliverables in this PR:
+- Minimal code edits: `frontend/src/data/dnsProviderSchemas.ts`, `frontend/src/components/DNSProviderForm.tsx`
+- Unit tests: `frontend/src/components/__tests__/DNSProviderForm.test.tsx`
+- E2E test tweak: stronger assertions in `tests/dns-provider-types.spec.ts`
+- Implementation plan + verification steps (this section)
+
+Files to change (high-level):
+- frontend/src/data/dnsProviderSchemas.ts — change `create_script` label/placeholder
+- frontend/src/components/DNSProviderForm.tsx — add id/aria and hint id for field rendering
+- frontend/src/components/__tests__/DNSProviderForm.test.tsx — NEW unit tests
+- tests/dns-provider-types.spec.ts — minor assertion additions
+- docs/ and CHANGELOG — short note (in PR body)
+
+Why this approach:
+- Minimal surface area: change schema label + placeholder (single source of truth) and add small accessibility improvements in the form renderer
+- Backwards-compatible: existing `create_script` key is unchanged (no API change); the same credential name is submitted
+- Test-first: ensure unit + E2E assert exact accessible name, placeholder and keyboard focus
+
+Risk & mitigation:
+- UX wording changed from "Create Record Script" → "Script Path" (low risk). If the team prefers the old wording, we can render both visual labels while keeping `aria-label="Script Path"` (alternate approach). For now the change matches the E2E expectation and improves clarity.
+
+---
+
+(Full implementation plan, tests, verification commands and rollout are in the "Plan & tasks" section below.)
+
+---
+
+## Plan & tasks — Script DNS provider field fix (step-by-step)
+
+### 1) Locate code (exact paths & symbols) 🔎
+
+- Playwright test (failing): `tests/dns-provider-types.spec.ts` — failing assertion(s) at **lines 263, 265–267** (script field visibility / placeholder / focus).
+- Primary frontend components:
+ - `frontend/src/components/DNSProviderForm.tsx` — component: `DNSProviderForm`; key functions/areas: `getSelectedProviderInfo()`, `selectedProviderInfo.fields?.map(...)` (renders provider-specific fields), SelectTrigger id `provider-type`.
+ - `frontend/src/components/DNSProviderSelector.tsx` — provider selection UI (select behavior, keyboard navigation).
+ - UI primitives: `frontend/src/components/ui/*` (shared `Input`, `Select`, `Label`, `Textarea`).
+- Default schema (fallback): `frontend/src/data/dnsProviderSchemas.ts` — `defaultProviderSchemas.script` defines `create_script` / `delete_script` fields (label + placeholder lived here).
+- Hooks that supply dynamic schema/type info:
+ - `frontend/src/hooks/useDNSProviders.ts` — `useDNSProviderTypes()` (API types)
+ - `frontend/src/hooks/usePlugins.ts` — `useProviderFields(providerType)` (plugin-provided fields)
+- Tests and helpers:
+ - Unit tests location pattern: `frontend/src/components/__tests__/DNSProviderForm.test.tsx` (new)
+ - E2E: `tests/dns-provider-types.spec.ts` (existing; assertion at **line 263** was failing)
+
+---
+
+### 2) Diagnosis (why the test failed) ⚠️
+
+Findings:
+- The UI rendered the `create_script` field with **label** "Create Record Script" and **placeholder** `/path/to/create-dns.sh` (from `defaultProviderSchemas`), while the Playwright test expected an accessible name `Script Path` and placeholder matching `/dns-challenge.sh/i`.
+- Cause: labeling/placeholder mismatch between schema / UI and the E2E expectation — not a rendering performance or CSS-hidden bug.
+- Secondary risk: the default input rendering did not consistently emit an input `id` + `aria-describedby` (textarea/select branches already did), so assistive-name resolution could be brittle.
+
+Recommendation:
+- Align the default schema (single source) and ensure `DNSProviderForm` renders the input with the exact accessible name and placeholder the test expects — minimal, backward-compatible change.
+
+---
+
+### 3) Concrete fix (code-level, minimal & surgical) ✅
+
+Summary of changes (small, local, no API/schema backend changes):
+- Update `defaultProviderSchemas.script.create_script`:
+ - label → `Script Path`
+ - placeholder → `/scripts/dns-challenge.sh`
+- Ensure `DNSProviderForm` renders provider fields with stable IDs and ARIA attributes; for `create_script` when providerType is `script` emit `aria-label="Script Path"` and an id `field-create_script` so the input is discoverable by `getByRole('textbox', { name: /script path/i })`.
+
+Exact surgical patch (copy-paste ready) — already applied in this branch (key snippets):
+
+- Schema change (file: `frontend/src/data/dnsProviderSchemas.ts`)
+
+```diff
+- {
+- name: 'create_script',
+- label: 'Create Record Script',
+- type: 'text',
+- required: true,
+- placeholder: '/path/to/create-dns.sh',
+- hint: 'Path to script that creates DNS TXT records. Receives DOMAIN, TOKEN, and FQDN as environment variables.',
+- },
++ {
++ name: 'create_script',
++ label: 'Script Path',
++ type: 'text',
++ required: true,
++ placeholder: '/scripts/dns-challenge.sh',
++ hint: 'Path to script that creates DNS TXT records. Receives DOMAIN, TOKEN, and FQDN as environment variables.',
++ },
+```
+
+- Form rendering accessibility (file: `frontend/src/components/DNSProviderForm.tsx`)
+
+```diff
+- return (
+- handleCredentialChange(field.name, e.target.value)}
+- placeholder={field.placeholder || field.default}
+- helperText={field.hint}
+- required={field.required && !provider}
+- />
+- )
++ return (
++