From 0ce29833496825f6f3d455ec904f57aa326e6fa8 Mon Sep 17 00:00:00 2001 From: Claudio Mendes Date: Sat, 17 Oct 2026 01:26:51 +0200 Subject: [PATCH] Rebrand project catalogue Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --- .github/workflows/validate-site.yml | 8 +- ConfigMgr-OSD/index.html | 17 -- README.md | 17 +- assets/brand-mark.svg | 23 +-- assets/favicon.svg | 10 +- index.html | 144 ++++++++------ style.css | 285 ++++++++++++++++------------ 7 files changed, 265 insertions(+), 239 deletions(-) delete mode 100644 ConfigMgr-OSD/index.html diff --git a/.github/workflows/validate-site.yml b/.github/workflows/validate-site.yml index acff377..3627cb2 100644 --- a/.github/workflows/validate-site.yml +++ b/.github/workflows/validate-site.yml @@ -40,12 +40,8 @@ jobs: html = (root / "index.html").read_text(encoding="utf-8") LocalAssetParser().feed(html) - legacy_redirect = root / "ConfigMgr-OSD" / "index.html" - if not legacy_redirect.is_file(): - raise SystemExit("The legacy ConfigMgr-OSD URL must redirect to the canonical hub.") - redirect_html = legacy_redirect.read_text(encoding="utf-8") - if 'href="https://vartaxe.github.io/"' not in redirect_html or 'http-equiv="refresh"' not in redirect_html: - raise SystemExit("The legacy ConfigMgr-OSD page must provide a canonical link and redirect.") + if "Claudio Mendes" not in html or "Windows endpoint automation" not in html: + raise SystemExit("The homepage must identify the maintainer and project focus.") if "style-src 'self'" not in html or "img-src 'self'" not in html: raise SystemExit("The CSP must restrict styles and images to local assets.") diff --git a/ConfigMgr-OSD/index.html b/ConfigMgr-OSD/index.html deleted file mode 100644 index a988e7b..0000000 --- a/ConfigMgr-OSD/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - ConfigMgr OSD hub moved - - -
-

ConfigMgr OSD hub moved

-

The current project hub is - vartaxe.github.io.

-
- - diff --git a/README.md b/README.md index 5e2723f..ee65d56 100644 --- a/README.md +++ b/README.md @@ -2,21 +2,16 @@ vartaxe Windows endpoint automation

-# Windows endpoint automation +# Claudio Mendes · Windows endpoint automation -Canonical GitHub Pages hub for the -[vartaxe Windows endpoint automation projects](https://vartaxe.github.io/). -It unifies the public profile and the retired ConfigMgr OSD landing page, while the -individual script repositories remain the authoritative sources for code, -documentation, tests, releases, and checksums. +The canonical project catalogue for [Claudio Mendes (@vartaxe)](https://github.com/vartaxe). +It introduces focused PowerShell tools for Windows endpoint automation and links +to each repository's authoritative README, releases, and validation guidance. GitHub Pages publishes the dependency-free `index.html`, `style.css`, and local SVG artwork directly from `main`. The page supports light and dark color schemes, -keyboard navigation, reduced motion, safe-area insets, and a restrictive CSP. - -The legacy `/ConfigMgr-OSD/` URL remains a compatibility redirect; it does not -depend on the retired repository. Light and dark button colors use separate -foreground tokens so guide links retain WCAG AA text contrast in either theme. +keyboard navigation, reduced motion, safe-area insets, and a restrictive +Content Security Policy. The site and its original SVG artwork are [MIT licensed](LICENSE). Report content problems through the [profile repository](https://github.com/vartaxe/vartaxe/issues/new/choose). diff --git a/assets/brand-mark.svg b/assets/brand-mark.svg index 2fdd43e..f2a87bc 100644 --- a/assets/brand-mark.svg +++ b/assets/brand-mark.svg @@ -1,19 +1,8 @@ - vartaxe automation mark - A terminal window connected to three deployment nodes. - - - - - - - - - - - - - - - + Claudio Mendes monogram + The initials CM in a warm ivory tile with a coral accent. + + + + CM diff --git a/assets/favicon.svg b/assets/favicon.svg index 2809436..5bf9d3d 100644 --- a/assets/favicon.svg +++ b/assets/favicon.svg @@ -1,7 +1,7 @@ - vartaxe terminal - A terminal prompt on a blue tile with a teal underline. - - - + Claudio Mendes monogram + The initials CM on a deep green tile. + + CM + diff --git a/index.html b/index.html index 544e6a7..20a012e 100644 --- a/index.html +++ b/index.html @@ -4,12 +4,12 @@ - - + + - Windows Endpoint Automation | vartaxe - + Claudio Mendes | Windows endpoint automation + @@ -19,78 +19,98 @@
-

Claudio Mendes · @vartaxe

-

Windows endpoint automation

-

Safety-focused Windows PowerShell 5.1 tools for Configuration Manager operating-system deployment and endpoint management.

+

PowerShell · Configuration Manager · Active Directory

+

Claudio Mendes

+

Windows endpoint automation built around clear inputs, useful logs, and predictable outcomes.

-
    -
  • OSD scripts: MIT
  • -
  • PowerShell 5.1
  • -
  • Validation first
  • -
+

Independent tools for Windows deployment and endpoint operations.

- Terminal prompt and deployment nodes representing vartaxe automation +
-

ConfigMgr OSD scripts

-
-
- -

Active Directory

-

Add computers to AD groups

-

Add a computer account to Active Directory groups during an OSD task sequence with Kerberos over LDAPS, membership verification, bounded retries, and CMTrace logging.

- -
-
- -

Diagnostics

-

Copy OSD logs to a file share

-

Collect and archive deployment logs, then upload the ZIP to an SMB share with retries and remote byte-size verification.

- -
-
- -

WinPE storage

-

Disk partition layout

-

Create a firmware-appropriate GPT or MBR layout in WinPE with fail-closed target selection and explicit safety checks.

-

Warning: this irreversibly cleans and repartitions the target disk.

- -
-
-
- Validate before rollout. Live ConfigMgr, Active Directory, WinPE, and SMB testing has not been completed for these releases. Automated checks cover syntax, static analysis, and mocked scenarios only; validate in your own lab, using disposable hardware for disk-layout tests. -
-

Related maintenance

-
- -

Driver and BIOS package automation is maintained in Driver Automation Tool, including the consolidated modern management scripts and vendor BIOS apply scripts.

-

The former standalone Modern Driver Management and Modern BIOS Management repositories are archived compatibility sources. New maintenance belongs in DAT.

-

Maintained forks retain their upstream licenses and attribution; the Driver Automation Tool license is not the MIT license used by the original OSD scripts.

-
-

About Claudio

-
-

I write PowerShell tools for repeatable Windows deployment jobs, with clear inputs, useful logs, and explicit outcomes. The original ConfigMgr OSD scripts are self-contained and MIT-licensed. Validate every tool against its own license and deployment guidance before rollout.

-

GitHub profile · Contact Claudio · Sponsor the maintenance

-
-
- Security and support. For bugs or usage questions, use the affected repository's support path. Report vulnerabilities privately through its security policy; do not disclose them in a public issue. -
+
+ +

Windows deployment tools

+

Each project page links to its repository README for requirements, usage, compatibility, and validation details.

+
+
+ +

Active Directory

+

Add computers to AD groups

+

Add a computer account to Active Directory groups during an OSD task sequence with Kerberos over LDAPS, membership verification, bounded retries, and CMTrace logging.

+ +
+
+ +

Diagnostics

+

Copy OSD logs to a file share

+

Collect and archive deployment logs, then upload the ZIP to an SMB share with retries and remote byte-size verification.

+ +
+
+ +

WinPE storage

+

Disk partition layout

+

Create a firmware-appropriate GPT or MBR layout in WinPE with fail-closed target selection and explicit safety checks.

+

Warning: this irreversibly cleans and repartitions the target disk.

+ +
+
+
+
+ +

Practical tools, stated limits

+
+
+

Built for the real environment

+

Requirements and compatibility are documented so administrators can judge fit before adding a script to a task sequence.

+
+
+

Safety before convenience

+

Tools call out impactful behavior. The disk-layout script can irreversibly clean and repartition its selected target.

+
+
+

Evidence, not promises

+

Automated checks do not replace live ConfigMgr, Active Directory, WinPE, or SMB validation in your own environment.

+
+
+
+
+ + + +
+
+ +

Claudio Mendes @vartaxe

+
+

I work on Windows endpoint automation and the practical details around OS deployment: repeatable steps, understandable logs, and clear failure behavior.

+

GitHub profile · Contact · Sponsor

+
+
+

For security issues, use the private reporting path in the affected repository's security policy.

\ No newline at end of file diff --git a/style.css b/style.css index 81fbefc..3c95bc5 100644 --- a/style.css +++ b/style.css @@ -1,16 +1,15 @@ :root { color-scheme: light dark; - --bg: #ffffff; - --panel: #f4f7fb; - --text: #1f2a37; - --muted: #52606d; - --link: #155799; + --bg: #f4f0e8; + --panel: #fffdf8; + --text: #202622; + --muted: #59645d; + --link: #185b4c; --on-link: #ffffff; - --border: #d8e0ea; - --accent: #159895; - --focus: #155799; - --accent-strong: #117865; - --shadow: 0 1rem 2.5rem rgba(25, 54, 82, 0.1); + --border: #d8ddd4; + --accent: #b9573e; + --focus: #185b4c; + --shadow: 0 1.2rem 2.8rem rgba(34, 44, 37, 0.08); } * { @@ -26,13 +25,13 @@ body { background: var(--bg); color: var(--text); font-family: "Segoe UI", Arial, sans-serif; - line-height: 1.55; + line-height: 1.65; overflow-wrap: break-word; } a { color: var(--link); - text-underline-offset: 0.18em; + text-underline-offset: 0.2em; touch-action: manipulation; } @@ -50,10 +49,10 @@ a:focus-visible { position: absolute; top: 0; left: 0; + z-index: 2; padding: 0.5rem 1rem; transform: translateY(-200%); - background: var(--bg); - z-index: 2; + background: var(--panel); } .skip-link:focus { @@ -62,126 +61,111 @@ a:focus-visible { header { --focus: #ffffff; - position: relative; - overflow: hidden; - padding: 1.25rem max(1rem, env(safe-area-inset-right)) 4rem max(1rem, env(safe-area-inset-left)); - color: #ffffff; + padding: 1.25rem max(1rem, env(safe-area-inset-right)) 4.5rem max(1rem, env(safe-area-inset-left)); + color: #fffdf8; background: - radial-gradient(circle at 85% 20%, rgba(112, 222, 197, 0.24), transparent 22rem), - linear-gradient(135deg, #103f72, #117865); + radial-gradient(ellipse at 82% 18%, rgba(214, 139, 102, 0.22), transparent 24rem), + linear-gradient(135deg, #17221c, #2b493b); } header > div, main, footer { - max-width: 68rem; + max-width: 72rem; margin: 0 auto; } nav { display: flex; flex-wrap: wrap; - gap: 1rem; - margin-bottom: 3rem; + gap: 0.35rem; + margin-bottom: 4.5rem; } nav a { - padding: 0.45rem 0.65rem; - color: #ffffff; + padding: 0.45rem 0.7rem; + color: #fffdf8; font-weight: 600; border-radius: 0.35rem; + text-decoration: none; } nav a:hover { - background: rgba(0, 0, 0, 0.2); -} - -.eyebrow { - margin-bottom: 0; - font-weight: 600; - letter-spacing: 0.04em; - text-transform: uppercase; + background: rgba(255, 255, 255, 0.12); + text-decoration: underline; } .hero { display: grid; align-items: center; - gap: 2rem; + gap: 2.5rem; } .hero-copy { min-width: 0; } +.eyebrow, +.section-label { + margin: 0; + font-size: 0.8rem; + font-weight: 700; + letter-spacing: 0.13em; + text-transform: uppercase; +} + +.eyebrow { + color: #e6b49c; +} + h1 { margin: 0.5rem 0; - font-size: clamp(2rem, 5vw, 3.5rem); - line-height: 1.1; + font-size: clamp(3rem, 8vw, 5.8rem); + letter-spacing: -0.055em; + line-height: 0.98; text-wrap: balance; } h2 { - margin-top: 2.5rem; + margin: 0.35rem 0 0.75rem; + font-size: clamp(1.9rem, 4vw, 2.7rem); + letter-spacing: -0.035em; + line-height: 1.15; scroll-margin-top: 1rem; text-wrap: balance; } -.tagline { - max-width: 48rem; - font-size: 1.2rem; +h3 { + line-height: 1.3; text-wrap: balance; } -main { - padding: 1.5rem max(1rem, env(safe-area-inset-right)) 2rem max(1rem, env(safe-area-inset-left)); -} - -.grid { - display: grid; - grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); - gap: 1rem; -} - -.card { - position: relative; - min-width: 0; - padding: 1.5rem; - background: var(--panel); - border: 1px solid var(--border); - border-radius: 0.8rem; - box-shadow: var(--shadow); -} - -.card h3 { - margin: 0.2rem 0 0.75rem; - color: var(--accent-strong); +.tagline { + max-width: 42rem; + margin: 1rem 0 1.5rem; + color: #e5e9e4; + font-size: clamp(1.1rem, 2vw, 1.35rem); text-wrap: balance; } -.card p:last-child { - margin-bottom: 0; -} - -.callout { - margin: 2rem 0; - padding: 0.75rem 1rem; - background: var(--panel); - border-left: 0.35rem solid var(--accent); +.hero-note { + color: #d0d9d1; + font-size: 0.95rem; } .brand-mark { display: block; - width: min(15rem, 65vw); + width: min(13rem, 60vw); height: auto; margin: 0 auto; - filter: drop-shadow(0 1.5rem 2rem rgba(0, 0, 0, 0.2)); + filter: drop-shadow(0 1rem 1.5rem rgba(0, 0, 0, 0.2)); } .hero-actions, .card-links { display: flex; flex-wrap: wrap; - gap: 0.75rem; + gap: 0.7rem; } .button, @@ -197,67 +181,86 @@ main { } .button { - color: #ffffff; - background: rgba(0, 0, 0, 0.14); + color: #fffdf8; + background: rgba(0, 0, 0, 0.12); } .button:hover { - background: rgba(0, 0, 0, 0.28); + background: rgba(0, 0, 0, 0.24); } .button-primary { - color: #103f72; - background: #ffffff; - border-color: #ffffff; + color: #17221c; + background: #fffdf8; + border-color: #fffdf8; } .button-primary:hover { - background: #eaf7f4; + background: #f2d9ca; } -.trust-list { - display: flex; - flex-wrap: wrap; - gap: 0.5rem; - padding: 0; - list-style: none; +main { + padding: 1rem max(1rem, env(safe-area-inset-right)) 2rem max(1rem, env(safe-area-inset-left)); } -.trust-list li, -.card-kicker { - font-size: 0.8rem; - font-weight: 700; - letter-spacing: 0.04em; - text-transform: uppercase; +main section { + margin: 4.5rem 0; +} + +.section-label { + color: var(--accent); +} + +.section-intro { + max-width: 43rem; + margin: 0 0 1.5rem; + color: var(--muted); +} + +.grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); + gap: 1rem; +} + +.card { + min-width: 0; + padding: 1.5rem; + background: var(--panel); + border: 1px solid var(--border); + border-radius: 0.8rem; + box-shadow: var(--shadow); } -.trust-list li { - padding: 0.35rem 0.6rem; - background: rgba(0, 0, 0, 0.18); - border: 1px solid rgba(255, 255, 255, 0.38); - border-radius: 999px; +.card h3 { + margin: 0.2rem 0 0.75rem; + color: var(--text); + font-size: 1.35rem; +} + +.card p:last-child { + margin-bottom: 0; } .card-icon { display: block; - width: 3rem; - height: 3rem; + width: 2.75rem; + height: 2.75rem; } .card-kicker { margin: 1rem 0 0; color: var(--muted); + font-size: 0.75rem; + font-weight: 700; + letter-spacing: 0.1em; + text-transform: uppercase; } .card-links { margin-top: 1.25rem; } -.card-links a { - min-height: 2.5rem; - padding: 0.5rem 0.75rem; -} - .card-links a:first-child { color: var(--on-link); background: var(--link); @@ -271,42 +274,82 @@ main { .warning { padding: 0.75rem; - background: color-mix(in srgb, #c2410c 10%, var(--panel)); - border-left: 0.25rem solid #c2410c; + background: color-mix(in srgb, #b9573e 10%, var(--panel)); + border-left: 0.25rem solid var(--accent); +} + +.callout { + margin: 1.5rem 0; + padding: 0.85rem 1rem; + color: var(--text); + background: color-mix(in srgb, var(--accent) 8%, var(--panel)); + border-left: 0.3rem solid var(--accent); } -.maintenance-card { +.principles { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); + gap: 1rem; +} + +.principle { + padding: 1rem 1.1rem; + border-top: 2px solid var(--accent); +} + +.principle h3 { + margin: 0.2rem 0 0.5rem; +} + +.principle p { + margin: 0; + color: var(--muted); +} + +.related-card { display: grid; grid-template-columns: auto 1fr; gap: 0 1rem; } -.maintenance-card .card-icon { +.related-card .card-icon { grid-row: 1 / span 2; } -.maintenance-card p { +.related-card > div { grid-column: 2; } +.handle { + color: var(--muted); + font-size: 0.65em; + font-weight: 500; + letter-spacing: 0; +} + +.site-note { + color: var(--muted); + font-size: 0.9rem; +} + footer { margin-top: 2rem; - padding: 1.5rem 1rem; + padding: 1.5rem max(1rem, env(safe-area-inset-right)) 1.5rem max(1rem, env(safe-area-inset-left)); color: var(--muted); border-top: 1px solid var(--border); } @media (prefers-color-scheme: dark) { :root { - --bg: #0d1520; - --panel: #162235; - --text: #f5f7fa; - --muted: #c4ced8; - --link: #9dcbff; - --on-link: #0d1520; - --focus: #9dcbff; - --border: #33445a; - --accent-strong: #70dec5; + --bg: #151b18; + --panel: #1e2822; + --text: #f1f2ec; + --muted: #bbc5bc; + --link: #a4dfc6; + --on-link: #142019; + --border: #3a4940; + --accent: #e79778; + --focus: #a4dfc6; --shadow: none; } }