Add Pathfinder 2e as an alternative game system alongside D&D 5e/5.5e. The current "Conditions" edition toggle in settings becomes a full "Game System" selector that switches conditions (with PF2e value-based conditions), bestiary (from Pf2eTools, ~2,700+ creatures), stat block layout, and initiative calculation (Perception-based). Both D&D and PF2e search indexes ship bundled with the app.
MVP baseline does not include persistent damage tracking or PF2e encounter difficulty calculation.
Acceptance Criteria
User can switch between D&D 5e/5.5e and Pathfinder 2e in a "Game System" selector in settings
In PF2e mode, the condition picker shows PF2e-specific conditions (Clumsy, Drained, Enfeebled, Frightened, Off-Guard, etc.) instead of D&D conditions
PF2e conditions support integer values (e.g., Clumsy 2, Frightened 3) — clicking in the picker increments; clicking a tag on the row decrements
In PF2e mode, the bestiary search operates against a bundled PF2e creature index (~2,700+ creatures from Pf2eTools)
Adding a PF2e creature from search pre-fills name, HP, AC, and Perception (as initiative modifier)
PF2e stat blocks display the correct layout: level (not CR), three saves (Fort/Ref/Will), ability modifiers (not scores), and top/mid/bot ability sections
PF2e source data can be fetched on-demand and cached in IndexedDB (same pattern as D&D sources)
Condition tooltips show PF2e rules descriptions when in PF2e mode
The game system preference persists across sessions
## Summary
Add Pathfinder 2e as an alternative game system alongside D&D 5e/5.5e. The current "Conditions" edition toggle in settings becomes a full "Game System" selector that switches conditions (with PF2e value-based conditions), bestiary (from Pf2eTools, ~2,700+ creatures), stat block layout, and initiative calculation (Perception-based). Both D&D and PF2e search indexes ship bundled with the app.
MVP baseline does not include persistent damage tracking or PF2e encounter difficulty calculation.
## Acceptance Criteria
- [ ] User can switch between D&D 5e/5.5e and Pathfinder 2e in a "Game System" selector in settings
- [ ] In PF2e mode, the condition picker shows PF2e-specific conditions (Clumsy, Drained, Enfeebled, Frightened, Off-Guard, etc.) instead of D&D conditions
- [ ] PF2e conditions support integer values (e.g., Clumsy 2, Frightened 3) — clicking in the picker increments; clicking a tag on the row decrements
- [ ] In PF2e mode, the bestiary search operates against a bundled PF2e creature index (~2,700+ creatures from Pf2eTools)
- [ ] Adding a PF2e creature from search pre-fills name, HP, AC, and Perception (as initiative modifier)
- [ ] PF2e stat blocks display the correct layout: level (not CR), three saves (Fort/Ref/Will), ability modifiers (not scores), and top/mid/bot ability sections
- [ ] PF2e source data can be fetched on-demand and cached in IndexedDB (same pattern as D&D sources)
- [ ] Condition tooltips show PF2e rules descriptions when in PF2e mode
- [ ] The game system preference persists across sessions
## Research
See [`docs/agents/research/2026-03-26-pf2e-game-system-mode.md`](docs/agents/research/2026-03-26-pf2e-game-system-mode.md) for full details: Pf2eTools data source, JSON structure, field mappings to app types, PF2e condition list, design decisions, and affected code locations.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Add Pathfinder 2e as an alternative game system alongside D&D 5e/5.5e. The current "Conditions" edition toggle in settings becomes a full "Game System" selector that switches conditions (with PF2e value-based conditions), bestiary (from Pf2eTools, ~2,700+ creatures), stat block layout, and initiative calculation (Perception-based). Both D&D and PF2e search indexes ship bundled with the app.
MVP baseline does not include persistent damage tracking or PF2e encounter difficulty calculation.
Acceptance Criteria
Research
See
docs/agents/research/2026-03-26-pf2e-game-system-mode.mdfor full details: Pf2eTools data source, JSON structure, field mappings to app types, PF2e condition list, design decisions, and affected code locations.