mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-12 03:56:15 -08:00
Publish "How to Add an Xtream Codes Account to IPTVnator" as the first evergreen guide: what the server URL, username and password are, the Add playlist flow with the connection test and its four verdicts, the Auto-detect method for pasted provider messages, what the import syncs, Account info, refresh, troubleshooting and a seven-question FAQ. The guide is cross-linked from the three download pages and llms.txt. Blog posts gain an optional `faq` frontmatter list: BlogPost.astro renders it as an accordion after the body and emits FAQPage JSON-LD next to the BlogPosting entry. LinkCards and PostButton keep internal links in the same tab. Guide screenshots come from the release capture script: manifest shots may carry a `group`, `--group guides` captures only those into apps/website/public/blog/guides/screenshots/, and a release run skips them. New setup actions open the Add playlist dialog with the mock's fictional Xtream credentials (connection test shown), the Auto-detect method with a labeled hand-out, and the Xtream Live TV view. Dialog helpers and fixture identities move into shared modules so the driver and the navigation actions cannot import each other cyclically. tools/testing/website-guides.test.mjs checks the FAQPage schema, the download-hub link and the shipped screenshots of every guide; screenshot-guards.test.mjs covers group validation and output routing. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
33 lines
1.3 KiB
TypeScript
33 lines
1.3 KiB
TypeScript
/**
|
|
* Fixture identities shared by the capture driver (seeding) and the named
|
|
* setup actions (guide shots that re-enter the add-playlist dialog). Kept in
|
|
* a leaf module so capture-navigation.ts can import them without pulling in
|
|
* the driver, which itself imports the navigation module.
|
|
*
|
|
* Everything here is fictional and resolves only against the local Xtream
|
|
* mock server; the G4 frame guard still rejects any URL carrying query
|
|
* credentials, so the auto-detect hand-out deliberately uses labeled lines
|
|
* instead of a `get.php?username=…` link.
|
|
*/
|
|
|
|
export const XTREAM_MOCK_ORIGIN = 'http://localhost:3211';
|
|
export const XTREAM_FIXTURE_TITLE = 'Fictional Xtream Demo';
|
|
export const M3U_FIXTURE_TITLE = 'release-demo';
|
|
|
|
/** Credential pair of the mock server's curated `marketing` scenario. */
|
|
export const XTREAM_FIXTURE_CREDENTIALS = {
|
|
username: 'marketing',
|
|
password: 'marketing',
|
|
} as const;
|
|
|
|
/** A fictional "your subscription is ready" message for the Auto-detect shot. */
|
|
export const AUTO_DETECT_FIXTURE_MESSAGE = [
|
|
'Welcome to Fictional TV! Your account is ready.',
|
|
'',
|
|
`Host: ${XTREAM_MOCK_ORIGIN}`,
|
|
`Username: ${XTREAM_FIXTURE_CREDENTIALS.username}`,
|
|
`Password: ${XTREAM_FIXTURE_CREDENTIALS.password}`,
|
|
'',
|
|
'Use these details in any Xtream Codes compatible player.',
|
|
].join('\n');
|