diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..8bcf7bd --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,65 @@ +# Agent Guide — ep_timesliderdiff + +See a diff view showing the changes between the latest pad and a revision. + +## Tech stack + +* Etherpad plugin framework (hooks declared in `ep.json`) +* EJS templates rendered server-side via `eejsBlock_*` hooks + +## Project structure + +``` +ep_timesliderdiff/ +├── AGENTS.md +├── CONTRIBUTING.md +├── LICENSE.md +├── ep.json +├── index.js +├── package.json +├── static/ +│ ├── css/ +│ ├── js/ +│ ├── tests/ +├── templates/ +│ ├── modal.ejs +│ ├── timesliderDiff.ejs +│ ├── timesliderDiffBody.ejs +``` + +## Helpers used + +_None — `ep_plugin_helpers` is not a dependency. Adoption is part of the helpers-adoption sweep (Phase 4)._ + + +## Helpers NOT used + +_To be audited in the helpers-adoption sweep (Phase 4)._ + + +## Running tests locally + +`ep_timesliderdiff` runs inside Etherpad's test harness. From an etherpad checkout that has installed this plugin via `pnpm run plugins i --path ../ep_timesliderdiff`: + +```bash +# Backend (Mocha) — harness boots its own server +pnpm --filter ep_etherpad-lite run test + +# Playwright — needs `pnpm run dev` in a second terminal +pnpm --filter ep_etherpad-lite run test-ui +``` + +## Standing rules for agent edits + +* PRs target `main`. Linear commits, no merge commits. +* Every bug fix includes a regression test in the same commit. +* All user-facing strings in `locales/`. No hardcoded English in templates. +* No hardcoded `aria-label` on icon-only controls — etherpad's html10n auto-populates `aria-label` from the localized string when (a) the element has a `data-l10n-id` and (b) no author-supplied `aria-label` is present. Adding a hardcoded English `aria-label` blocks that and leaves it untranslated. (See `etherpad-lite/src/static/js/vendors/html10n.ts:665-678`.) +* No nested interactive elements (no `