Skip to content

🩹 [Patch]: Domeneshop commands now follow module safety standards#15

Closed
Marius Storhaug (MariusStorhaug) wants to merge 4 commits into
context-credentials-setupfrom
standards-alignment-pass
Closed

🩹 [Patch]: Domeneshop commands now follow module safety standards#15
Marius Storhaug (MariusStorhaug) wants to merge 4 commits into
context-credentials-setupfrom
standards-alignment-pass

Conversation

@MariusStorhaug

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented Jul 25, 2026

Copy link
Copy Markdown
Member

Domeneshop API commands now provide safer change previews, stronger input validation, and consistent command documentation while preserving the existing endpoint behavior.

Changed: State-changing commands support safe previews

Commands that create, update, or remove Domeneshop resources support -WhatIf and -Confirm, allowing changes to be reviewed before requests are sent.

Changed: Invalid input fails earlier

Required identifiers, names, credentials, and request objects are validated at the command boundary so invalid calls stop before reaching the API.

Technical Details

  • Declares the Context dependency in each function file that directly consumes it.
  • Makes resolved context objects mandatory for private transport helpers and removes hidden default resolution from private code.
  • Adds complete private-function help and parameter-level documentation.
  • Splits command behavior into one Pester file per public command, with explicit -WhatIf and fail-fast coverage.
  • Adds colocated overview pages for Auth, Domains, DNS, Forwards, Invoices, and Dynamic DNS.
  • Stacked on the Context credential and endpoint implementation in PR Add Domeneshop Context-based credential flow and initial domains command #14.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@MariusStorhaug

Copy link
Copy Markdown
Member Author

Closing because the exact PR head is contained in release/v1.0.0 and consolidated in draft release PR #16.

@MariusStorhaug
Marius Storhaug (MariusStorhaug) deleted the standards-alignment-pass branch July 25, 2026 22:59
Marius Storhaug (MariusStorhaug) added a commit that referenced this pull request Jul 26, 2026
Domeneshop users gain authenticated access to the module's domain, DNS,
forwarding, DDNS, and invoice capabilities through a consolidated
pre-1.0 release candidate.

## New: Domeneshop API capabilities

The module adds Context-based credential handling and commands for
querying domains, managing DNS records and forwards, updating DDNS, and
retrieving invoices. Command safety, validation, focused tests, and
command-group documentation are included in the release candidate.

## New: Guided credential setup

Running `Connect-DomeneshopAccount` without `-Secret` or its `-Key`
alias opens the Domeneshop API settings page and securely prompts for
the secret. If a browser is unavailable, the command warns and continues
to the secure prompt. Explicit string and SecureString inputs remain
supported, and `-WhatIf` does not open the browser, prompt, or change
stored contexts.

## Changed: Release tooling and documentation

The release candidate adopts Process-PSModule v6.1.13, enforces Pester
6.x across every test file, consolidates public command tests into
root-level group suites, migrates the generated documentation site to
Zensical, replaces README placeholders with the standard module landing
page, and links each public command's help to its canonical generated
documentation.

---

<details>
<summary>Technical details</summary>

- Integrated PR #11, PR #13, the preserved pull ref for PR #12, PR #14,
and stacked PR #15 in the requested order; each exact source head is
verified as an ancestor of this branch. All five source PRs are now
closed and their remote branches deleted.
- Resolved the PR #11/PR #13 workflow overlap in favor of PR #13's
Process-PSModule v6.1.4 baseline, then updated the consolidated release
to latest Process-PSModule v6.1.13 at immutable commit
`fb1bdb8fefd243292f779d2a856a38db6fe6daf4`.
- Migrated `.github/mkdocs.yml` to `.github/zensical.toml`, satisfying
v6.1.13's Zensical-only documentation pipeline.
- PR #14 was merged explicitly before PR #15; PR #15's existing ancestry
was retained, so only its four standards-hardening commits were
introduced by the later merge.
- Added an integration commit applying PR #13's exact Pester 6.x
requirement to the command tests introduced by PR #15.
- Uses the Standard test-layout profile: grouped public commands are
covered by root-level `tests/<Group>.Tests.ps1` suites (`Auth`, `Ddns`,
`Dns`, `Domains`, `Forwards`, and `Invoices`), while ungrouped and
cross-cutting suites remain separate at the root. Deterministic layout
coverage verifies every public command has a matching `Describe` block
in its expected suite.
- Added interactive credential setup as a separate micro-commit,
including the exact `https://domene.shop/admin?view=api` launch,
`Read-Host -AsSecureString`, `Key` alias, side-effect-free `-WhatIf`
behavior, and a warning-only browser fallback that preserves secure
prompting.
- Added group-aware canonical links first in all 14 public function help
blocks: `https://psmodule.io/Domeneshop/Functions/<FunctionName>/` for
ungrouped commands and
`https://psmodule.io/Domeneshop/Functions/<Group>/<FunctionName>/` for
grouped commands. Deterministic tests require the exact trailing-slash
route and reject missing, incorrect, or secondary-first links.
- Linked clearly owned private Auth helpers to the published public
commands they support while retaining useful secondary Context links.
- Requires PowerShell 7.6, the latest LTS. The generated module manifest
declares `PowerShellVersion = 7.6` and `CompatiblePSEditions = Core`;
legacy Windows PowerShell compatibility branches are intentionally
excluded.
- Rejects whitespace-only API tokens, DDNS values, DNS filters, domain
filters, forward hosts, and smoke-test names before state changes or URI
construction.
- Addressed generated-document lint, reserved context names, empty
secrets, missing context diagnostics, strict WhatIf mutation boundaries,
portable test paths, output contracts, and automated-review findings
discovered during integration.
- Local validation: 83 Pester tests pass, PSScriptAnalyzer reports zero
findings across `src` and `tests`, and `git diff --check` passes.
- Exact-head Process-PSModule v6.1.13 CI succeeds on `9834688` (run
`30180761797`), including Build-Site and all module-local suites across
Linux, macOS, and Windows.
- PSModule/docs PR #86 and Process-PSModule PR #419 are merged, making
latest-LTS support and ternary allowance effective on their default
branches.

</details>

<details>
<summary>Relevant issues (or links)</summary>

- Fixes #2
- #11
- #12
- #13
- #14
- #15
- PSModule/docs#86
- PSModule/Process-PSModule#419

</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Patch Small fixes or improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant