Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 72 additions & 0 deletions .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Validate and deploy SightAdapt website

on:
workflow_dispatch:
pull_request:
branches: [main]
paths:
- "site/**"
- "tools/build-site.py"
- "tools/verify-site.py"
- "assets/brand/**"
- ".github/workflows/pages.yml"
push:
branches: [main]
paths:
- "site/**"
- "tools/build-site.py"
- "tools/verify-site.py"
- "assets/brand/**"
- ".github/workflows/pages.yml"

concurrency:
group: sightadapt-pages-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.13"

- name: Build GitHub Pages fallback
run: python tools/build-site.py --base-path /SightAdapt/ --output artifacts/site

- name: Validate GitHub Pages fallback
run: python tools/verify-site.py artifacts/site --base-path /SightAdapt/

- name: Build canonical Aiteracja path
run: python tools/build-site.py --base-path /sightadapt/ --output artifacts/site-canonical

- name: Validate canonical Aiteracja path
run: python tools/verify-site.py artifacts/site-canonical --base-path /sightadapt/

- name: Upload validated GitHub Pages artifact
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: actions/upload-pages-artifact@v3
with:
path: artifacts/site

deploy:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
needs: validate
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy GitHub Pages fallback
id: deployment
uses: actions/deploy-pages@v4
35 changes: 35 additions & 0 deletions site/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# SightAdapt website source

The public product site is a dependency-free static site whose content follows issue #124.

- Canonical production URL: `https://aiteracja.pl/sightadapt/`
- GitHub Pages fallback: `https://keyffms.github.io/SightAdapt/`
- GitHub Releases remain the authoritative binary source.

## Build for GitHub Pages

```powershell
python .\tools\build-site.py --base-path /SightAdapt/ --output .\artifacts\site
```

## Build for the canonical Aiteracja path

```powershell
python .\tools\build-site.py --base-path /sightadapt/ --output .\artifacts\site
```

## Validate

```powershell
python .\tools\verify-site.py .\artifacts\site --base-path /SightAdapt/
```

## Preview

```powershell
python -m http.server 8000 --directory .\artifacts\site
```

The build copies the canonical SVG brand assets from `assets/brand/` into the generated site, so the deployed site does not depend on a third-party CDN or raw GitHub asset request.

The initial site intentionally contains no analytics, cookies, remote fonts, advertising, session replay or third-party embeds.
1 change: 1 addition & 0 deletions site/assets/architecture.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
33 changes: 33 additions & 0 deletions site/assets/site.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
document.documentElement.classList.add("js");
(() => {
const nav = document.querySelector(".nav-links");
const host = document.querySelector(".nav");
if (!nav || !host) return;

nav.id = "site-navigation";
const button = document.createElement("button");
button.type = "button";
button.className = "menu-toggle";
button.textContent = "Menu";
button.setAttribute("aria-controls", nav.id);
button.setAttribute("aria-expanded", "false");
host.insertBefore(button, nav);

const mobile = window.matchMedia("(max-width: 800px)");
const sync = () => {
if (!mobile.matches) {
nav.hidden = false;
button.setAttribute("aria-expanded", "false");
return;
}
nav.hidden = button.getAttribute("aria-expanded") !== "true";
};

button.addEventListener("click", () => {
const open = button.getAttribute("aria-expanded") === "true";
button.setAttribute("aria-expanded", String(!open));
sync();
});
mobile.addEventListener?.("change", sync);
sync();
})();
1 change: 1 addition & 0 deletions site/assets/styles.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions site/docs/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>SightAdapt™ documentation</title><meta name="description" content="Getting started, application assignments, profiles, overlay scopes, shortcuts, emergency controls and troubleshooting for SightAdapt."><link rel="canonical" href="{{CANONICAL}}docs/"><link rel="icon" href="{{BASE}}assets/brand/sightadapt-mark.svg" type="image/svg+xml"><link rel="stylesheet" href="{{BASE}}assets/styles.css"></head><body><a class="skip" href="#main">Skip to main content</a><header class="site-header"><div class="wrap nav"><a class="brand" href="{{BASE}}" aria-label="SightAdapt home"><img src="{{BASE}}assets/brand/sightadapt-lockup-dark.svg" alt="SightAdapt logo"></a><nav class="nav-links" aria-label="Primary"><a href="{{BASE}}features/">Features</a><a href="{{BASE}}download/">Download</a><a href="{{BASE}}docs/" aria-current="page">Documentation</a><a href="{{BASE}}faq/">FAQ</a><a href="{{BASE}}releases/">Releases</a><a href="{{BASE}}privacy/">Privacy</a><a href="{{BASE}}security/">Security</a><a href="https://github.com/KeyffMS/SightAdapt">GitHub</a><a class="button" href="{{DOWNLOAD_URL}}">Download alpha</a></nav></div></header><div class="alpha"><div class="wrap">SightAdapt is currently an <a href="{{BASE}}#limitations">alpha release</a>. Core functionality is available, but broad compatibility and endurance testing are still in progress.</div></div><main id="main"><section class="section"><div class="wrap"><p class="kicker">SightAdapt™ documentation</p><h1>Set up SightAdapt and understand each control.</h1><div class="grid two"><section class="card"><h2>Getting started</h2><ol><li><a href="{{BASE}}download/">Download and extract the current release.</a></li><li>Start <code>SightAdapt.exe</code>.</li><li>Open configuration from the notification-area icon.</li><li>Assign a profile to an application or use temporary correction.</li></ol></section><section class="card"><h2>Applications</h2><p>Add an application, enable or disable the assignment, choose its profile and configure automatic mode. Saved assignments use executable identity and local path data.</p></section><section class="card"><h2>Profiles</h2><p>Choose a built-in profile, duplicate one into a custom profile, edit output levels, brightness, contrast, saturation and hue, then rename or delete user-created profiles when no longer needed.</p></section><section class="card"><h2>Menus and scopes</h2><p>Native Win32 popup menus can inherit or override the application profile. Overlay scope can target the client area, full window, current screen or all screens. WPF, WinUI, Electron, Qt and custom-rendered menus may not appear as native <code>#32768</code> menus.</p></section><section class="card"><h2>Keyboard and emergency controls</h2><ul><li><code>Ctrl+Alt+I</code> — temporary active-window correction.</li><li><code>Ctrl+Alt+Shift+I</code> — toggle the active application assignment.</li><li><strong>Emergency disable all overlays</strong> — remove overlays and disable automatic mode.</li></ul><p>If another program already owns a shortcut, registration may fail.</p></section><section class="card"><h2>Troubleshooting</h2><ul><li>For elevated targets, use a compatible integrity level.</li><li>If the tray icon is missing, check whether SightAdapt is still running.</li><li>If no overlay appears, confirm assignment state, automatic mode and scope.</li><li>Test mixed scaling, remote desktop and unusual graphics drivers separately.</li><li>For damaged settings, exit SightAdapt and back up or remove <code>%LOCALAPPDATA%\SightAdapt\settings.json</code>.</li><li>Protected content may remain unavailable or unfilterable.</li></ul></section></div><h2>Developer documentation</h2><p><a href="https://github.com/KeyffMS/SightAdapt/tree/main/docs">Architecture and repository documentation</a> · <a href="https://github.com/KeyffMS/SightAdapt/blob/main/CONTRIBUTING.md">Contributing</a> · <a href="https://github.com/KeyffMS/SightAdapt/blob/main/SECURITY.md">Security policy</a> · <a href="https://github.com/KeyffMS/SightAdapt/actions">CI and test runs</a></p></div></section></main><footer class="site-footer"><div class="wrap"><div class="footer-grid"><section><h2>Product</h2><ul><li><a href="{{BASE}}features/">Features</a></li><li><a href="{{BASE}}download/">Download</a></li><li><a href="{{BASE}}docs/">Documentation</a></li><li><a href="{{BASE}}releases/">Releases</a></li></ul></section><section><h2>Project</h2><ul><li><a href="https://github.com/KeyffMS/SightAdapt">GitHub</a></li><li><a href="https://github.com/KeyffMS/SightAdapt/issues">Issue tracker</a></li><li><a href="{{BASE}}security/">Security</a></li><li><a href="{{BASE}}legal/">License</a></li></ul></section><section><h2>Policies</h2><ul><li><a href="{{BASE}}privacy/">Privacy</a></li><li><a href="{{BASE}}legal/#third-party">Third-party notices</a></li><li><a href="{{BASE}}legal/#trademark">Trademark notice</a></li></ul></section><section><h2>Publisher</h2><p><a href="https://aiteracja.pl/">A SightAdapt project by KeyffMS / aiteracja.pl</a></p><p><a href="{{BASE}}support/">Support and contact</a></p></section></div><p class="small">SightAdapt™ is an unregistered product mark used by KeyffMS / aiteracja.pl.</p><p class="small">SightAdapt is free and open-source software distributed under the MIT License. Third-party components remain subject to their respective terms.</p><p class="small">Third-party product names and trademarks are the property of their respective owners and are used only to identify user-selected applications. SightAdapt is not affiliated with or endorsed by those owners.</p></div></footer><script src="{{BASE}}assets/site.js"></script></body></html>
Loading
Loading