Repository guidance for coding agents working in browser-chooser.
- This repository is a static website for Browser Chooser.
- Stack in-repo: HTML, CSS, vanilla JavaScript, XML, Markdown.
- There is no Node/Python/Rust build system configured in this repo.
- Primary pages:
index.html(main landing page)purchase.html(donation/purchase UI mock)dl/index.html(download listing page)es/index.html,ja/index.html,ko/index.html(localized landing pages)
- Shared assets:
assets/css/style.cssassets/js/script.js
- Metadata/config-like files:
api/macos-appcast.xmlapi/windows-appcast.xmlsitemap.xmlrobots.txt
- Existing rule files check result:
.cursorrules: not present.cursor/rules/: not present.github/copilot-instructions.md: not present
- Existing AGENTS file check result:
AGENTS.md: not present before this file was added
If any of the above files are added later, update this document and treat those rules as higher priority.
Because there is no package/tool config (package.json, Makefile, test config, lint config), use lightweight static-site validation commands.
- Start local HTTP server from repo root:
python3 -m http.server 8080
- Open pages:
http://localhost:8080/http://localhost:8080/purchase.htmlhttp://localhost:8080/dl/http://localhost:8080/es/http://localhost:8080/ja/http://localhost:8080/ko/
- No formal build step exists in this repository.
- Treat "build" as static validation + manual smoke checks.
- No lint runner is configured in-repo.
- Optional ad-hoc checks (only if tools are installed locally):
- HTML syntax check:
tidy -qe index.html - XML check:
xmllint --noout sitemap.xml api/macos-appcast.xml api/windows-appcast.xml
- HTML syntax check:
- No automated test framework is configured in-repo.
- Use manual smoke tests in browser for changed surfaces.
There is no concept of a framework "single test" here. Use one targeted page check as the equivalent:
- If editing purchase interaction JS/CSS:
- Serve locally, open
/purchase.html, move slider, verify button text updates.
- Serve locally, open
- If editing localized content:
- Open only the changed locale page (
/es/,/ja/, or/ko/) and verify hero/features/FAQ content renders.
- Open only the changed locale page (
- If editing download feed/listing:
- Open
/dl/, verify table links and metadata line.
- Open
- If editing appcast or sitemap XML:
- Run
xmllint --noout <changed-file>.
- Run
Before finishing any change, run this sequence:
- Ensure modified pages load over local server (no file:// assumptions).
- Verify no broken relative paths for CSS/JS/images.
- Verify mobile layout at narrow viewport (<= 768px) for affected pages.
- If touching XML, validate XML well-formedness.
- If touching multilingual pages, keep structure aligned across locales.
- Check for accidental large binary changes in
dl/unless intended.
- Follow existing style in the touched file; do not mass-reformat unrelated sections.
- Prefer small, surgical edits.
- Preserve existing directory structure and relative links.
- Keep copy tone product-focused and concise.
- Use semantic structure:
header,main,section,footer. - Use 4-space indentation in major site pages (
index.html, locale pages,purchase.html). - Keep double quotes for HTML attributes.
- Keep SEO/meta blocks grouped and readable near top of
<head>. - Preserve JSON-LD scripts for Organization + SoftwareApplication when editing landing pages.
- Keep accessibility-friendly structure (clear heading hierarchy, readable text).
- External links should include
target="_blank"+rel="noopener"as already used.
- Centralize design tokens in
:rootcustom properties. - Keep sectioned comments with numbered blocks, matching existing style.
- Use kebab-case class names (
hero-title,feature-card,download-cta). - Keep shared utility classes reusable (
.btn,.btn-primary,.btn-sm). - Maintain responsive behavior under
@media (max-width: 768px). - Avoid introducing one-off inline styles when class-based style exists.
- Vanilla JS only (no framework/runtime dependencies).
- Wrap DOM logic in
DOMContentLoadedlistener. - Query elements once, store in
const, and guard nullability before use. - Use
constby default; use template literals for dynamic UI text. - Keep event handlers short and directly tied to UI behavior.
- Current file uses 4-space indentation, semicolons, and single-quoted strings.
- There are currently no JS import/export modules in use.
- Do not introduce bundler-based module structure unless explicitly requested.
- If adding JS, prefer loading via
<script src="...">with correct relative paths.
- CSS classes: kebab-case.
- IDs used by JS: descriptive kebab-case (
price-slider,price-value,buy-button). - JS variables: camelCase (
priceValue,buyButton). - Filenames for locale landing pages remain
index.htmlunder language dirs.
- Client-side JS currently uses simple guard checks rather than exception handling.
- Prefer defensive DOM guards (
if (el)) before attaching events. - Avoid noisy console logging in committed production copy unless necessary.
- English source page is
index.html; localized variants live ines/,ja/,ko/. - Keep section parity across locales (hero, features, FAQ, CTA, footer).
- When changing structure in English page, propagate structurally equivalent changes to locale pages.
- Keep canonical and OG URLs locale-appropriate when editing localized files.
api/*-appcast.xmlfiles are sensitive update feeds; maintain valid XML and RSS structure.- Preserve comments indicating release insertion behavior.
- Keep
sitemap.xmlwell-formed and updatelastmodonly when applicable. - Keep
robots.txtaligned with sitemap location if sitemap URL changes.
- Do not touch
.sisyphus/(ignored workspace directory). - Do not rewrite unrelated formatting across large files.
- Do not remove localized pages just because content differs.
- Do not add new tooling config files unless task explicitly asks for tooling adoption.
- For UI tweaks: edit
assets/css/style.cssfirst, then only minimal HTML changes. - For purchase interaction tweaks: edit
assets/js/script.jsand verify/purchase.html. - For product copy updates: patch all locale pages as needed to avoid content drift.
- For download updates: keep
dl/index.htmltable rows and file links consistent.
- Serve site:
python3 -m http.server 8080 - XML sanity check:
xmllint --noout sitemap.xml api/macos-appcast.xml api/windows-appcast.xml - Spot changed files:
git status --short - Inspect edits:
git diff
If repository tooling is introduced later (for example package.json, ESLint, Playwright, or CI workflows), update this file immediately with canonical build/lint/test commands and true single-test invocation examples.