fix(amispoof): correct analyzer/axis counts + un-break opt-in microphone#89
Closed
ahmetabdullahgultekin wants to merge 1 commit into
Closed
fix(amispoof): correct analyzer/axis counts + un-break opt-in microphone#89ahmetabdullahgultekin wants to merge 1 commit into
ahmetabdullahgultekin wants to merge 1 commit into
Conversation
Two verified accuracy fixes for the amispoof.fivucsas.com browser tester.
1. Reconcile analyzer / liveness-axis counts in marketing copy.
Verified against source:
- ANALYZER_ORDER in web/amispoof/app.js = 23 entries
(5 image-track + 18 video-track). 3 are opt-in (off by default):
hand_tracking (?hand=1), voice_activity + audio_mouth_sync
(?audio=1 / 🎤) → 20 active by default.
- PROOF_AXES = 18 entries (17 passive + 1 active challenge axis).
- web/src/gates/*.ts = 3 gates (correct as stated).
Replaced the stale "19 analyzers" / "15-axis" strings across
index.html (meta description, OG description, og:image:alt,
twitter:description, JSON-LD FAQ), plus README.md, ROADMAP.md and
web/amispoof/README.md (which also still said "Twelve analyzers").
New framing: "23 analyzers (20 active by default; hand & voice/audio
are opt-in) · 18-axis passive liveness-proof scorer · 3 gates".
Also corrected README's opt-in list — background motion is on by
default (enableBackgroundSegmentation: true), only the 3 above are
opt-in.
2. Un-break the opt-in microphone feature.
web/amispoof/.htaccess sent Permissions-Policy with microphone=(),
which hard-disabled the mic at the HTTP layer, silently killing the
opt-in 🎤 / ?audio=1 voice + audio-mouth-sync analyzers in prod.
Changed to microphone=(self); camera=(self) unchanged.
Doc/markup only — no TypeScript source touched. typecheck green,
JSON-LD blocks parse.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Updates the amispoof browser tester’s public-facing copy to match the current analyzer/axis inventory, and fixes the production mic opt-in flow by allowing microphone access via Permissions-Policy.
Changes:
- Corrects analyzer / liveness-axis counts across SEO metadata and documentation (23 analyzers / 18 axes, with opt-in clarifications).
- Enables opt-in microphone-based analyzers by changing
.htaccessPermissions-Policyfrommicrophone=()tomicrophone=(self). - Refreshes roadmap/status text to reflect the corrected counts.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
web/amispoof/README.md |
Updates the “What it shows” analyzer description and points to ANALYZER_ORDER as canonical. |
web/amispoof/index.html |
Updates SEO/OG/Twitter/JSON-LD text to reflect corrected analyzer/axis counts and opt-in behavior. |
web/amispoof/.htaccess |
Allows microphone access for same-origin so the opt-in audio analyzers can function. |
ROADMAP.md |
Updates browser bundle “Production” status row to corrected analyzer/axis counts. |
README.md |
Updates the root live-tester blurb to corrected analyzer/axis counts and opt-in list. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| <meta | ||
| name="description" | ||
| content="Am I spoof? amispoof answers the question in the browser. Open face anti-spoof + liveness tester — 19 analyzers (MiniFASNet, blink, rPPG, gaze, blendshapes, 3D pose, audio-mouth sync, ...) + 15-axis passive liveness-proof scorer running entirely client-side. No server, no upload. Point your camera at a printed photo or another screen and watch the LIVE / SPOOF verdict flip in seconds." | ||
| content="Am I spoof? amispoof answers the question in the browser. Open face anti-spoof + liveness tester — 23 analyzers (20 active by default; hand & voice/audio are opt-in) like MiniFASNet, blink, rPPG, gaze, blendshapes, 3D pose, audio-mouth sync, plus an 18-axis passive liveness-proof scorer and 3 gates running entirely client-side. No server, no upload. Point your camera at a printed photo or another screen and watch the LIVE / SPOOF verdict flip in seconds." |
| <meta | ||
| property="og:description" | ||
| content="Am I spoof? amispoof answers it in the browser. 19 analyzers, 3 gates, and a 15-axis passive liveness-proof scorer via onnxruntime-web + MediaPipe. Test printed-photo, phone-screen replay, deepfake, occlusion and dark-room attacks against a live LIVE/SPOOF verdict in seconds. No server, no upload." | ||
| content="Am I spoof? amispoof answers it in the browser. 23 analyzers (20 active by default; hand & voice/audio are opt-in), 3 gates, and an 18-axis passive liveness-proof scorer via onnxruntime-web + MediaPipe. Test printed-photo, phone-screen replay, deepfake, occlusion and dark-room attacks against a live LIVE/SPOOF verdict in seconds. No server, no upload." |
| <meta | ||
| name="twitter:description" | ||
| content="19-analyzer face anti-spoof + 15-axis liveness-proof pipeline running entirely in the browser. No server, no GPU, no upload. Open the page, point your camera at a photo, watch the verdict flip." | ||
| content="23-analyzer (20 active by default; hand & voice/audio opt-in) face anti-spoof + 18-axis liveness-proof pipeline with 3 gates running entirely in the browser. No server, no GPU, no upload. Open the page, point your camera at a photo, watch the verdict flip." |
| <meta | ||
| name="description" | ||
| content="Am I spoof? amispoof answers the question in the browser. Open face anti-spoof + liveness tester — 19 analyzers (MiniFASNet, blink, rPPG, gaze, blendshapes, 3D pose, audio-mouth sync, ...) + 15-axis passive liveness-proof scorer running entirely client-side. No server, no upload. Point your camera at a printed photo or another screen and watch the LIVE / SPOOF verdict flip in seconds." | ||
| content="Am I spoof? amispoof answers the question in the browser. Open face anti-spoof + liveness tester — 23 analyzers (20 active by default; hand & voice/audio are opt-in) like MiniFASNet, blink, rPPG, gaze, blendshapes, 3D pose, audio-mouth sync, plus an 18-axis passive liveness-proof scorer and 3 gates running entirely client-side. No server, no upload. Point your camera at a printed photo or another screen and watch the LIVE / SPOOF verdict flip in seconds." |
| <meta | ||
| property="og:description" | ||
| content="Am I spoof? amispoof answers it in the browser. 19 analyzers, 3 gates, and a 15-axis passive liveness-proof scorer via onnxruntime-web + MediaPipe. Test printed-photo, phone-screen replay, deepfake, occlusion and dark-room attacks against a live LIVE/SPOOF verdict in seconds. No server, no upload." | ||
| content="Am I spoof? amispoof answers it in the browser. 23 analyzers (20 active by default; hand & voice/audio are opt-in), 3 gates, and an 18-axis passive liveness-proof scorer via onnxruntime-web + MediaPipe. Test printed-photo, phone-screen replay, deepfake, occlusion and dark-room attacks against a live LIVE/SPOOF verdict in seconds. No server, no upload." |
| <meta | ||
| name="twitter:description" | ||
| content="19-analyzer face anti-spoof + 15-axis liveness-proof pipeline running entirely in the browser. No server, no GPU, no upload. Open the page, point your camera at a photo, watch the verdict flip." | ||
| content="23-analyzer (20 active by default; hand & voice/audio opt-in) face anti-spoof + 18-axis liveness-proof pipeline with 3 gates running entirely in the browser. No server, no GPU, no upload. Open the page, point your camera at a photo, watch the verdict flip." |
ahmetabdullahgultekin
added a commit
that referenced
this pull request
Jun 1, 2026
…in mic (#91) Re-applied on top of #90 (the prior #89 conflicted). Source-verified counts: 23 analyzers (20 active by default; hand + voice/audio opt-in), 18 liveness-proof axes, 3 gates. Fixed across index.html meta/OG/Twitter/JSON-LD + README/ROADMAP/web README. Also microphone=() -> microphone=(self) so the opt-in voice/audio analyzers can actually request mic permission in prod. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two verified accuracy fixes for the amispoof.fivucsas.com browser tester. Doc/markup only — no TypeScript source touched.
CHANGE 1 — Reconcile analyzer / liveness-axis counts
The marketing/SEO copy said "19 analyzers" and "15-axis passive liveness-proof scorer". Both are wrong. Verified against source on this branch:
ANALYZER_ORDERinweb/amispoof/app.js(5 image-track + 18 video-track)hand_tracking(?hand=1),voice_activity+audio_mouth_sync(?audio=1/🎤)PROOF_AXESinapp.js(17 passive + 1 active challenge axis)web/src/gates/*.tsThe "19" did not map to "active by default" either — active-by-default is 20, not 19 (
background_motionis on by default viaenableBackgroundSegmentation: true; only hand + voice/audio are off by default). So "19/15" were simply stale.New honest framing applied everywhere:
Fixed in:
web/amispoof/index.html— meta description, OG description,og:image:alt,twitter:description, JSON-LD FAQ answerREADME.md(root) — live-tester blurb (also corrected its opt-in list: background motion is default-on)ROADMAP.md— Browser bundle status rowweb/amispoof/README.md— "What it shows" section (still said "Twelve analyzers", even more stale; now points atANALYZER_ORDERas canonical)CHANGE 2 — Un-break the dead opt-in microphone
web/amispoof/.htaccesssent aPermissions-Policyheader withmicrophone=(), hard-disabling the mic at the HTTP layer — but the UI ships an opt-in 🎤 /?audio=1voice + audio-mouth-sync analyzer that asks users to grant mic permission. The feature was silently dead in prod.camera=(self)and everything else unchanged.Validation
npm run typecheck→ green (no source touched)index.htmlparse cleanly19 analyzers/15-axisstringsNo prod deploy performed.
🤖 Generated with Claude Code