Skip to content

A landing page for Hyperpoint, and a skill that manages its config - #25

Merged
progremir merged 11 commits into
mainfrom
claude/hyperpoint-landing-page-30bb5c
Oct 26, 2026
Merged

progremir merged 11 commits into
mainfrom
claude/hyperpoint-landing-page-30bb5c

Conversation

@progremir

@progremir progremir commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

What changed

site/: a static landing page (HTML, CSS and JS, no build step), designed with elayadesign's landing-page-design and design-to-motion skills.

  • The hero is the real Hyperpoint menu in the menu bar, using the strings from StatusMenu.swift and MenuPresentation.swift. Its rows load in when the page opens.
  • Four feature cards, each animated on a loop that pauses off screen: a mouse reconnects and every setting is written back; Caps Lock lights ⌃⌥⇧⌘; a dot rides the real speed curve (points from SpeedCurve.default, measured wheel bands from CurveGraph.swift); and Add Rule lands a new rule.
  • The proof section shows the owner's real four-device config, followed by six facts taken from the code: agents can edit the file, no network code, invalid files are rejected whole, quitting clears the key maps, a 1.2 MB download (3.3 MB installed, measured from the v0.1.1 DMG), and no Dock icon.
  • Also included: 12 FAQ answers with FAQPage schema, a 404 page, a privacy page, an og.png drawn by site/og.py, and favicons copied from design/logo/.
  • .claude/launch.json adds a site preview server on port 4319.

Live at https://hyperpoint.progremir.dev, deployed by hand from this branch with cf deploy.

  • The site is a static-assets Worker named hyperpoint-site, and the served files live in site/public.
  • cloudflare.config.ts holds the account, the custom domain and the 404-page handling.
  • Cloudflare's Workers Builds deploys on every push to main that touches site/, once the repository is connected in the Cloudflare dashboard. .github/workflows/site.yml only dry-runs the build on PRs that touch site/.

skills/hyperpoint-config/: a skill people can install so Claude Code, or any agent that reads SKILL.md, can manage ~/.config/hyperpoint/config.json.

  • It teaches the format and every rule ConfigCodec enforces. It also covers how to find a device's IDs and HID++ controls in the app's log, and how to back up, check, save and confirm the change took.
  • scripts/check_config.py rejects a bad file at the same path the app would. The app only shows a rejected file's error path in its menu, so an agent can't see it there.
  • scripts/check-config-skill.py (repo root) runs the checker against the 60 invalid files in ConfigCodecTests and the documented example. If a parser change isn't mirrored in the checker, this script fails. The README lists it under Development.

Why

Hyperpoint needed a page that says what it does and links the download. And the config is plain JSON that the app applies on save, so an agent can safely manage it, as long as it knows the rules and can check its work.

For the reviewer

  • The download buttons link to releases/latest, and the page's skill links point at main. Both only work for people with access to the repository while it is private.
  • There are no testimonials, since any would be made up. Proof comes from the config file and the code.
  • The site check fails on this PR because GitHub won't start Actions jobs until the account's billing is fixed. It never ran, so it says nothing about the code.
  • There is no Terms link because the repo has no license to point to.
  • The menu mockup keeps the app's real "Re‑apply" wording, even though the design skill bans hyphens in copy.
  • Checked in a browser at 375 px and 1440 px: no sideways scrolling and no console errors, the phone menu opens and closes, and reduced motion shows every section still.
  • The checker passes the owner's live config and the skill's own example. No agent has made an end-to-end edit to a live config with the skill yet.
  • Something I noticed and didn't change: the Buttons tab footer says key rules on non-Logitech mice are saved "but not carried out yet". The README and KeyRoute suggest they are carried out, so that text may be out of date.

🤖 Generated with Claude Code

Emir Amanbekov and others added 11 commits October 26, 2026 05:04
A static page in site/, designed with elayadesign's landing-page-design and
design-to-motion skills. The hero shows the real menu bar menu, four cards act
out the reconnect, the hyper key, the speed curve and Add Rule, and the proof
is the owner's config. Includes a 404, a privacy page, an og.png drawn by
og.py, and a launch config to preview it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The v0.1.1 DMG is 1.2 MB and the app inside it 3.3 MB. The size replaces the
version in both proof lines, gets a proof fact and an FAQ answer, and the
proof grid gains a sixth fact, the missing Dock icon, to stay even.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From comments on the preview: the nav lockup goes from 20 to 28 px tall, and
the Before column names the hyper key rather than Caps Lock.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From a comment on the preview: the 2.4G mouse is the owner's own, so the
mouse-keys example is now the number keys a Naga's side buttons type.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From comments on the preview: the heading sat beside a tall stack of facts,
so the section is now heading, config, then the facts three across. The
notarized fact (still in both proof lines) gives way to one saying the
config is plain JSON an agent can edit, which the app applies on save.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
skills/hyperpoint-config teaches an agent the config format and every rule
ConfigCodec enforces, and how to find a device, back up, check, save and
confirm from the app's log that the change took. Its check_config.py
rejects a file at the same path the app would, and
scripts/check-config-skill.py holds it to the parser's 60 invalid-file
tests. The README says how to install it; the landing page links it from
the agents fact and a new FAQ answer.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The site is now a static-assets Worker, hyperpoint-site, set up with the cf
CLI. The served files move to site/public, which wrangler.config.ts names as
the assets, so the README and og.py stay out of the upload.
cloudflare.config.ts holds the account, the custom domain and 404-page
handling. The page gets a canonical URL and an absolute og:image.

.github/workflows/site.yml dry-runs the build on pull requests that touch
site/ and deploys on pushes to main, which needs a CLOUDFLARE_API_TOKEN
repository secret.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
GitHub Actions cannot run jobs on this account right now, and Workers Builds
needs no API token in the repository. The workflow loses its deploy step and
its push trigger and only checks that pull requests build. site/.node-version
pins Node 24 for both, which cf needs at 22.18 or later.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Workers Builds will build pushes to main as production and every other
branch as a Worker Preview, so the Worker turns on preview URLs, which
workers.dev serves with X-Robots-Tag: noindex. Production stays on
hyperpoint.progremir.dev alone with workersDev off. The site check
workflow goes; Cloudflare's builds cover it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The project is now created in Cloudflare's dashboard as "hyperpoint", which
Workers Builds requires to match the config's Worker name. The README drops
the hand-deploy steps: Git builds do all deploys.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@progremir
progremir merged commit 1ab8fee into main Oct 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant