You can subscribe to this list here.
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(9) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2015 |
Jan
(197) |
Feb
(47) |
Mar
(55) |
Apr
(14) |
May
(41) |
Jun
(53) |
Jul
(79) |
Aug
(147) |
Sep
(106) |
Oct
(41) |
Nov
(94) |
Dec
(98) |
| 2016 |
Jan
(128) |
Feb
(94) |
Mar
(110) |
Apr
(109) |
May
(140) |
Jun
(40) |
Jul
(70) |
Aug
(78) |
Sep
(172) |
Oct
(58) |
Nov
(91) |
Dec
(33) |
| 2017 |
Jan
(69) |
Feb
(172) |
Mar
(220) |
Apr
(62) |
May
(22) |
Jun
(144) |
Jul
(257) |
Aug
(54) |
Sep
(52) |
Oct
(73) |
Nov
(38) |
Dec
(57) |
| 2018 |
Jan
(145) |
Feb
(89) |
Mar
(139) |
Apr
(78) |
May
(26) |
Jun
(23) |
Jul
(44) |
Aug
(47) |
Sep
(74) |
Oct
(58) |
Nov
(163) |
Dec
(273) |
| 2019 |
Jan
(364) |
Feb
(85) |
Mar
(49) |
Apr
(113) |
May
(407) |
Jun
(139) |
Jul
(74) |
Aug
(39) |
Sep
(73) |
Oct
(58) |
Nov
(79) |
Dec
(77) |
| 2020 |
Jan
(56) |
Feb
(35) |
Mar
(83) |
Apr
(61) |
May
(44) |
Jun
(44) |
Jul
(97) |
Aug
(38) |
Sep
(63) |
Oct
(39) |
Nov
(81) |
Dec
(36) |
| 2021 |
Jan
(16) |
Feb
(40) |
Mar
(26) |
Apr
(35) |
May
(56) |
Jun
(26) |
Jul
(50) |
Aug
(10) |
Sep
(100) |
Oct
(52) |
Nov
(42) |
Dec
(41) |
| 2022 |
Jan
(38) |
Feb
(22) |
Mar
(20) |
Apr
(36) |
May
(21) |
Jun
(19) |
Jul
(32) |
Aug
(11) |
Sep
(19) |
Oct
(46) |
Nov
(26) |
Dec
(15) |
| 2023 |
Jan
(58) |
Feb
(40) |
Mar
(31) |
Apr
(38) |
May
(28) |
Jun
(36) |
Jul
(55) |
Aug
(29) |
Sep
(63) |
Oct
(47) |
Nov
(70) |
Dec
(37) |
| 2024 |
Jan
(27) |
Feb
(52) |
Mar
(34) |
Apr
(47) |
May
(32) |
Jun
(59) |
Jul
(28) |
Aug
(49) |
Sep
(61) |
Oct
(81) |
Nov
(32) |
Dec
(49) |
| 2025 |
Jan
(40) |
Feb
(47) |
Mar
(64) |
Apr
(81) |
May
(37) |
Jun
(92) |
Jul
(41) |
Aug
(44) |
Sep
(28) |
Oct
(104) |
Nov
(37) |
Dec
(39) |
| 2026 |
Jan
(39) |
Feb
(69) |
Mar
(26) |
Apr
(13) |
May
(45) |
Jun
(102) |
Jul
(82) |
Aug
(80) |
Sep
(17) |
Oct
|
Nov
|
Dec
|
|
From: github-actions[bot] <no...@gi...> - 2026-09-05 06:44:59
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260817 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: github-actions[bot] <no...@gi...> - 2026-09-05 06:29:41
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260905 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: Clayton <no...@gi...> - 2026-09-04 22:01:07
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: d4ade6d509f4206b1c1789848752e633ec3c134c https://github.com/PCGen/pcgen/commit/d4ade6d509f4206b1c1789848752e633ec3c134c Author: Clayton Stence <cps...@gm...> Date: 2026-09-04 (Fri, 04 Sep 2026) Changed paths: M data/pathfinder/everyman_gaming/kitsune_compendium/egkc_abilities_race.lst M data/pathfinder/paizo/roleplaying_game/core_essentials/races/kitsune/kitsune_biosettings.lst Log Message: ----------- DATA-4391: Fix Kitsune starting age and aging milestones To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: Clayton <no...@gi...> - 2026-09-04 21:58:07
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen-newsources Commit: 6a1170291da2ed5526b028720d78c5cdadbc85ca https://github.com/PCGen/pcgen-newsources/commit/6a1170291da2ed5526b028720d78c5cdadbc85ca Author: Clayton <cps...@gm...> Date: 2026-09-04 (Fri, 04 Sep 2026) Changed paths: Log Message: ----------- <newsource 440 villain codex> (#638) * NEWSOURCE: Add PZO1136 Villain Codex dataset * NEWSOURCE-440: Add PZO1136 Villain Codex dataset To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen-newsources/settings/notifications |
|
From: Clayton <no...@gi...> - 2026-09-04 21:58:02
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen-newsources Commit: ae829eb967f8f75528fc9f2523c5b2499d473290 https://github.com/PCGen/pcgen-newsources/commit/ae829eb967f8f75528fc9f2523c5b2499d473290 Author: Clayton <cps...@gm...> Date: 2026-09-04 (Fri, 04 Sep 2026) Changed paths: Log Message: ----------- NEWSOURCE-440: Add PZO1136 Villain Codex dataset (#637) * NEWSOURCE: Add PZO1136 Villain Codex dataset * NEWSOURCE-440: Add PZO1136 Villain Codex dataset To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen-newsources/settings/notifications |
|
From: Clayton <no...@gi...> - 2026-09-04 21:57:31
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen-newsources Commit: b6ed4bf2c4cb5d2ed1d804e5a9bd9f1ea1f9dd2b https://github.com/PCGen/pcgen-newsources/commit/b6ed4bf2c4cb5d2ed1d804e5a9bd9f1ea1f9dd2b Author: Clayton <cps...@gm...> Date: 2026-09-04 (Fri, 04 Sep 2026) Changed paths: A data/darrington_press/daggerheart/DH_CGL_logos_final_full_color.png A data/darrington_press/daggerheart/DPCGL.txt A data/darrington_press/daggerheart/daggerheart_core.pcc A data/darrington_press/daggerheart/daggerheart_logo.png A data/darrington_press/daggerheart/dh_abilities_adversaries.lst A data/darrington_press/daggerheart/dh_abilities_ancestries.lst A data/darrington_press/daggerheart/dh_abilities_class.lst A data/darrington_press/daggerheart/dh_abilities_communities.lst A data/darrington_press/daggerheart/dh_abilities_domains.lst A data/darrington_press/daggerheart/dh_abilities_transformations.lst A data/darrington_press/daggerheart/dh_abilitycategories.lst A data/darrington_press/daggerheart/dh_alignments.lst A data/darrington_press/daggerheart/dh_ancestries.lst A data/darrington_press/daggerheart/dh_classes.lst A data/darrington_press/daggerheart/dh_deities.lst A data/darrington_press/daggerheart/dh_equip.lst A data/darrington_press/daggerheart/dh_equip_consumables.lst A data/darrington_press/daggerheart/dh_languages.lst A data/darrington_press/daggerheart/dh_races_adversaries.lst A data/darrington_press/daggerheart/dh_spells.lst A data/darrington_press/daggerheart/dh_stats.lst A data/darrington_press/daggerheart/dh_templates_adversaries.lst A system/gameModes/Daggerheart/biosettings.lst A system/gameModes/Daggerheart/codeControl.lst A system/gameModes/Daggerheart/equipmentslots.lst A system/gameModes/Daggerheart/level.lst A system/gameModes/Daggerheart/load.lst A system/gameModes/Daggerheart/migration.lst A system/gameModes/Daggerheart/miscinfo.lst A system/gameModes/Daggerheart/pointbuymethods.lst A system/gameModes/Daggerheart/rollmethods.lst A system/gameModes/Daggerheart/rules.lst A system/gameModes/Daggerheart/sizeAdjustment.lst A system/gameModes/Daggerheart/statsandchecks.lst Log Message: ----------- NEWSOURCE: Migrate Daggerheart dataset and game mode to pcgen-newsources (#636) To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen-newsources/settings/notifications |
|
From: Clayton <no...@gi...> - 2026-09-04 21:57:11
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen-newsources Commit: c067795d9b2237459d90c07d64a046ca82d59534 https://github.com/PCGen/pcgen-newsources/commit/c067795d9b2237459d90c07d64a046ca82d59534 Author: Clayton <cps...@gm...> Date: 2026-09-04 (Fri, 04 Sep 2026) Changed paths: A data/pathfinder/paizo/roleplaying_game/villain_codex/OGL.txt A data/pathfinder/paizo/roleplaying_game/villain_codex/Villain_Codex_cover.jpg A data/pathfinder/paizo/roleplaying_game/villain_codex/vc_abilities.lst A data/pathfinder/paizo/roleplaying_game/villain_codex/vc_companionmods.lst A data/pathfinder/paizo/roleplaying_game/villain_codex/vc_equip.lst A data/pathfinder/paizo/roleplaying_game/villain_codex/vc_feats.lst A data/pathfinder/paizo/roleplaying_game/villain_codex/vc_kits.lst A data/pathfinder/paizo/roleplaying_game/villain_codex/vc_spells.lst A data/pathfinder/paizo/roleplaying_game/villain_codex/vc_templates.lst A data/pathfinder/paizo/roleplaying_game/villain_codex/villain_codex.pcc Log Message: ----------- NEWSOURCE: Add PZO1136 Villain Codex dataset (#635) To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen-newsources/settings/notifications |
|
From: github-actions[bot] <no...@gi...> - 2026-09-02 06:52:10
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260816 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: github-actions[bot] <no...@gi...> - 2026-09-02 06:36:17
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260902 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-09-01 07:39:06
|
Branch: refs/heads/dependabot/gradle/net.sourceforge.pmd-pmd-ant-7.27.0 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-09-01 07:39:00
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: a9bbc17b6398714d43cb8459163a21c42a96ee07 https://github.com/PCGen/pcgen/commit/a9bbc17b6398714d43cb8459163a21c42a96ee07 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2026-09-01 (Tue, 01 Sep 2026) Changed paths: Log Message: ----------- Build(deps): bump net.sourceforge.pmd:pmd-ant from 7.26.0 to 7.27.0 (#7724) Bumps [net.sourceforge.pmd:pmd-ant](https://github.com/pmd/pmd) from 7.26.0 to 7.27.0. - [Release notes](https://github.com/pmd/pmd/releases) - [Commits](https://github.com/pmd/pmd/compare/pmd_releases/7.26.0...pmd_releases/7.27.0) --- updated-dependencies: - dependency-name: net.sourceforge.pmd:pmd-ant dependency-version: 7.27.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <su...@gi...> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-09-01 07:38:38
|
Branch: refs/heads/dependabot/gradle/net.sourceforge.pmd-pmd-java-7.27.0 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-09-01 07:38:30
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: 08a4330623d68a56145c17c6f32f6f85f9bf51fe https://github.com/PCGen/pcgen/commit/08a4330623d68a56145c17c6f32f6f85f9bf51fe Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2026-09-01 (Tue, 01 Sep 2026) Changed paths: M build.gradle Log Message: ----------- Build(deps): bump net.sourceforge.pmd:pmd-java from 7.26.0 to 7.27.0 (#7725) Bumps [net.sourceforge.pmd:pmd-java](https://github.com/pmd/pmd) from 7.26.0 to 7.27.0. - [Release notes](https://github.com/pmd/pmd/releases) - [Commits](https://github.com/pmd/pmd/compare/pmd_releases/7.26.0...pmd_releases/7.27.0) --- updated-dependencies: - dependency-name: net.sourceforge.pmd:pmd-java dependency-version: 7.27.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <su...@gi...> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: github-actions[bot] <no...@gi...> - 2026-09-01 07:13:50
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260811 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: github-actions[bot] <no...@gi...> - 2026-09-01 06:57:40
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260901 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-09-01 04:45:17
|
Branch: refs/heads/dependabot/gradle/net.sourceforge.pmd-pmd-java-7.27.0 Home: https://github.com/PCGen/pcgen Commit: 7ee577f8abbf219e85abd1a217c3080790185afb https://github.com/PCGen/pcgen/commit/7ee577f8abbf219e85abd1a217c3080790185afb Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2026-09-01 (Tue, 01 Sep 2026) Changed paths: M build.gradle Log Message: ----------- Build(deps): bump net.sourceforge.pmd:pmd-java from 7.26.0 to 7.27.0 Bumps [net.sourceforge.pmd:pmd-java](https://github.com/pmd/pmd) from 7.26.0 to 7.27.0. - [Release notes](https://github.com/pmd/pmd/releases) - [Commits](https://github.com/pmd/pmd/compare/pmd_releases/7.26.0...pmd_releases/7.27.0) --- updated-dependencies: - dependency-name: net.sourceforge.pmd:pmd-java dependency-version: 7.27.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <su...@gi...> To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-09-01 04:45:17
|
Branch: refs/heads/dependabot/gradle/net.sourceforge.pmd-pmd-ant-7.27.0 Home: https://github.com/PCGen/pcgen Commit: 4bde84bd33fe3db033e14451980017ccd21d3423 https://github.com/PCGen/pcgen/commit/4bde84bd33fe3db033e14451980017ccd21d3423 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2026-09-01 (Tue, 01 Sep 2026) Changed paths: M build.gradle Log Message: ----------- Build(deps): bump net.sourceforge.pmd:pmd-ant from 7.26.0 to 7.27.0 Bumps [net.sourceforge.pmd:pmd-ant](https://github.com/pmd/pmd) from 7.26.0 to 7.27.0. - [Release notes](https://github.com/pmd/pmd/releases) - [Commits](https://github.com/pmd/pmd/compare/pmd_releases/7.26.0...pmd_releases/7.27.0) --- updated-dependencies: - dependency-name: net.sourceforge.pmd:pmd-ant dependency-version: 7.27.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <su...@gi...> To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-08-31 21:27:56
|
Branch: refs/heads/dependabot/gradle/org.freemarker-freemarker-2.3.35 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-08-31 21:27:48
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: b9e479c2e71ed8e0576fdd02a7c70a61c274d4b7 https://github.com/PCGen/pcgen/commit/b9e479c2e71ed8e0576fdd02a7c70a61c274d4b7 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2026-08-31 (Mon, 31 Aug 2026) Changed paths: M build.gradle Log Message: ----------- Build(deps): bump org.freemarker:freemarker from 2.3.34 to 2.3.35 (#7721) Bumps org.freemarker:freemarker from 2.3.34 to 2.3.35. --- updated-dependencies: - dependency-name: org.freemarker:freemarker dependency-version: 2.3.35 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <su...@gi...> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: Vest <no...@gi...> - 2026-08-31 21:20:43
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: 51e808a9b62d30fd7b1c60c993aa5584b28a0c0d https://github.com/PCGen/pcgen/commit/51e808a9b62d30fd7b1c60c993aa5584b28a0c0d Author: Vest <Ve...@us...> Date: 2026-08-31 (Mon, 31 Aug 2026) Changed paths: M code/src/java/pcgen/gui3/dialog/OptionsPathDialogController.java M code/src/resources/pcgen/gui3/dialog/ExportDialog.fxml R code/src/resources/pcgen/gui3/dialog/OptionsPathDialog.css M code/src/resources/pcgen/gui3/dialog/OptionsPathDialog.fxml M code/src/resources/pcgen/lang/LanguageBundle.properties Log Message: ----------- fix: Export & OptionsPath dialog layout + localization (#7719) * UI: Refactor ExportDialog layout, fix padding, and correct entireParty localization (cherry picked from commit 1670011ca52af13c0d774ad2431d3f09a32d1bf0) * i18n: move Export dialog labels into LanguageBundle Replace the hardcoded Select Character / Entire Party / Export To label text with %in_export* keys resolved from LanguageBundle, so the dialog is localizable. English defaults live in the base bundle; other locales fall back to it until translated. * UI+i18n: restructure OptionsPathDialog and localize its text Pin all inputs to the top and the OK button to the bottom via AnchorPane anchors (replacing the BorderPane whose sizeToScene clipped the button), tighten spacing, and move the label/radio/OK text into LanguageBundle %in_optionsPath* keys. English defaults live in the base bundle; other locales fall back until translated. * UI: rework OptionsPathDialog layout, fix toggle group, enforce min size Switch the root from AnchorPane to BorderPane so the OK button (bottom) can never overlap the inputs (center) at any window size, fixing the button clipping. - Collapse the duplicated directoryGroup ToggleGroup back to a single $directoryGroup reference so all five radios share one group and stay mutually exclusive. - Enforce the FXML root min size on the Stage (JavaFX applies a node's minWidth/minHeight to layout only, not the window) via a controller hook measured in onShown. - Drop OptionsPathDialog.css: its only rule drew a stray border box around the prompt label; padding/spacing stay inline in the FXML to match the other dialogs. * UI: simplify OptionsPathDialog by removing unnecessary fx:id from RadioButton * UI: unify dialog spacing at 6px and trim FXML comments Normalize ExportDialog and OptionsPathDialog to a uniform 6px spacing so the two dialogs share one visual rhythm, and drop the changelog-style FXML comments plus condense the min-size controller comments. --------- Co-authored-by: Clayton Stence <cps...@gm...> To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: dependabot[bot] <no...@gi...> - 2026-08-31 04:43:44
|
Branch: refs/heads/dependabot/gradle/org.freemarker-freemarker-2.3.35 Home: https://github.com/PCGen/pcgen Commit: d0628be42e8f3d04f2cf47b773fca20dfe13ab28 https://github.com/PCGen/pcgen/commit/d0628be42e8f3d04f2cf47b773fca20dfe13ab28 Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Date: 2026-08-31 (Mon, 31 Aug 2026) Changed paths: M build.gradle Log Message: ----------- Build(deps): bump org.freemarker:freemarker from 2.3.34 to 2.3.35 Bumps org.freemarker:freemarker from 2.3.34 to 2.3.35. --- updated-dependencies: - dependency-name: org.freemarker:freemarker dependency-version: 2.3.35 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <su...@gi...> To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: github-actions[bot] <no...@gi...> - 2026-08-25 03:07:40
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260810 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: github-actions[bot] <no...@gi...> - 2026-08-25 02:50:59
|
Branch: refs/tags/v6.09.08.RC1-NIGHTLY.20260825 Home: https://github.com/PCGen/pcgen To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: Ao Li <no...@gi...> - 2026-08-24 08:04:25
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: acee38a3d0a5d259d82724342fcd1cd8d3cfc7b3 https://github.com/PCGen/pcgen/commit/acee38a3d0a5d259d82724342fcd1cd8d3cfc7b3 Author: Ao Li <li...@li...> Date: 2026-08-24 (Mon, 24 Aug 2026) Changed paths: M data/pathfinder/paizo/player_companion/champions_of_corruption/coc_abilities_companion.lst Log Message: ----------- Update coc_abilities_companion.lst Sticky's entry carried only DESC, COST and SOURCEPAGE - no BONUS token - so the +4 its own description promises was never applied. An eidolon with Grab and Sticky showed +15 to grapple (CMB +11 plus Grab's +4) instead of +19. Both bonuses are untyped and come from different sources, so they stack: Grab is a universal monster rule granting "+4 bonus on combat maneuver checks made to start and maintain a grapple", Sticky is a separate 1-point evolution from Champions of Corruption granting "+4 bonus on combat maneuver checks to initiate or maintain a grapple", and the Core Rulebook says bonuses without a type always stack unless they are from the same source. Add BONUS:VAR|CMB_Grapple|4, matching how the Grab ability itself and the Grab evolution's pincers rider already do it. CMB only, not CMD - Sticky helps initiating and maintaining a grapple, not resisting one. To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |
|
From: Vest <no...@gi...> - 2026-08-24 07:16:31
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: 2f6b6a0a3783c84276e811c2793c3feabfb9dd36 https://github.com/PCGen/pcgen/commit/2f6b6a0a3783c84276e811c2793c3feabfb9dd36 Author: Vest <Ve...@us...> Date: 2026-08-24 (Mon, 24 Aug 2026) Changed paths: M build.gradle A code/gradle/benchmark.gradle M code/src/java/pcgen/cdom/base/CDOMObject.java M code/src/java/pcgen/cdom/base/Loadable.java M code/src/java/pcgen/cdom/list/ClassSkillList.java M code/src/java/pcgen/cdom/list/ClassSpellList.java M code/src/java/pcgen/cdom/list/DomainSpellList.java M code/src/java/pcgen/cdom/reference/AbstractReferenceManufacturer.java M code/src/java/pcgen/core/AbilityCategory.java M code/src/java/pcgen/core/PObject.java M code/src/java/pcgen/util/Comparators.java A code/src/jmh/pcgen/cdom/enumeration/SortBenchmark.java A code/src/jmh/pcgen/cdom/enumeration/TypeBenchmark.java A code/src/test/pcgen/cdom/reference/AbstractReferenceManufacturerGroupResolutionTest.java Log Message: ----------- perf: improve performance of isType/Type.getConstant and Collator on campaign load (#7711) * perf: add PObject.isType(Type) fast path + JMH benchmark PObject.isType(String) is the leaf dominating PCGen campaign-load CPU: it uppercases, tokenizes, and re-interns via Type.getConstant on every call. AbilityCategory.populate already holds interned Type constants but was round-tripping them through toString() into that slow path. Add PObject.isType(Type) that goes straight to containsInList(ListKey.TYPE, type), and switch AbilityCategory.populate to it. Behaviour-preserving: containsInList compares Type by value-equals, identical to what the String path produces after interning. Add a JMH benchmark covering the hot leaf, wired via a separate code/gradle/benchmark.gradle (new `jmh` source set + `benchmark` task), following the existing apply-from convention for developer-only tasks. Measured (avgt, ns/op): single-token 25.8 -> 3.0, multi-token 98.6 -> 7.8. resolveGroupReferences (the other hot caller) is deliberately left on the String path: it dispatches isType polymorphically and Equipment.isType has divergent (EqMod-merged) semantics, so a Type fast path there needs a proper Loadable.isType(Type) design, not a shortcut. * perf: fast-path resolveGroupReferences via Loadable.isType(Type) resolveGroupReferences called obj.isType(String) for every object x typeReference x token, re-interning each token through Type.getConstant on every call — the remaining dominant consumer of that leaf in the campaign-load profile after the AbilityCategory.populate fix. Add isType(Type) as a default method on Loadable that delegates to isType(String), so all ~30 implementers keep their exact current behaviour by default — critically Equipment, whose isType merges EqMod-derived types and must not use the base containsInList path. Override the default only where provably identical: PObject (containsInList(ListKey.TYPE, type)) and ClassSkillList/ClassSpellList (types.contains(type)). resolveGroupReferences now interns each group key's tokens once, before the object loop (getTypeReference guarantees single plain tokens), then calls isType(Type) per object. Turns objects x groups x tokens interns into groups x tokens. Benchmark (avgt, 50 objects x 2 tokens): groupResolve 2989 -> 747 ns/op (~4x). Guardrails green: Pre{Type,ArmorType,SpellType,Charactertype} RoundRobin, PObjectTest, PreArmorTypeTest. * perf: share one Collator per name-sort comparator instead of per compare CDOMObject.P_OBJECT_NAME_COMP and Comparators.TreeTableNodeComparator each called Collator.getInstance() inside compare(), constructing a Collator on every comparison (O(n log n) per sort) — the DataSet.initLists -> sortPObjectListByName tower in the campaign-load profile. Hoist the Collator to a shared private static final field, matching the existing pattern in Comparators.ToStringIgnoreCaseCollator. Sort logic is unchanged; DataSetTest and PObjectTest confirm identical order. The win is allocation, not CPU: the JDK caches Collator rule data, so getInstance() is a cheap clone rather than a recompile — wall time moved only ~5% (within noise). But it cuts allocation materially: JMH -prof gc on a 200-element sort shows 1,870,127 -> 1,315,870 B/op (~30% less garbage), which matters during startup when many lists sort concurrently with other init work. SortBenchmark documents both comparators for future runs. * build: drop JavaFX modules from the benchmark task The JMH benchmarks exercise only core data-path classes (PObject/CDOMObject/Type), none of which load JavaFX, so the JavaFX module path and the extractJavaFXLocal dependency are unnecessary. Remove them (keeping only -Djava.awt.headless=true). * refactor: eager-init type sets in Class/Domain spell & skill lists ClassSkillList, ClassSpellList and DomainSpellList lazily created their `types` set on first addType and null-guarded every read. Initialize the set eagerly and make the field final, removing the null checks in addType and isType. Behaviour-preserving: an empty set yields the same isType results the null guards did. The empty-string guard in isType(String) is kept (it guards input, not the set). * docs: shorten the resolveGroupReferences interning comment Trim the inline comment to just what a reader needs at the call site (why the extra map exists), moving the full rationale here. How the optimization works -------------------------- resolveGroupReferences assigns each loaded object to the "TYPE=" group references it qualifies for. It is a nested scan: for each object (getAllObjects) for each group reference (typeReferences) for each type token in that group's key if !object.isType(token) -> object is not in this group The group key is a FixedStringList such as ["Martial","Melee"]; its elements are plain strings. The original code called object.isType(String) on each string token, and isType(String) does, per call: uppercase the string, tokenize on '.', and Type.getConstant(token) to intern each piece into the shared Type constant. Type.getConstant is a CaseInsensitiveMap lookup (hash + case-insensitive equals). Because it sat in the innermost loop, that interning ran objects x groups x tokens times, even though the set of group tokens is tiny and fixed for the whole scan. The fix hoists the interning out of the loop. Before iterating objects we build internedKeys: for each group key, convert its string tokens to their Type constants exactly once. getTypeReference (which constructs these keys) already guarantees every element is a single, plain token -- it rejects '.', '=', ',', '|' -- so each string maps to exactly one Type.getConstant with no tokenizing or edge cases. The inner loop then calls the isType(Type) fast path (a direct containsInList(ListKey.TYPE, type) on PObject), doing a cheap Type membership test instead of re-interning a string. Net effect: Type.getConstant calls drop from O(objects x groups x tokens) to O(groups x tokens). Correctness is preserved for every element type T: implementers with special type semantics (notably Equipment, whose isType merges EqMod-derived types) do not override isType(Type) and inherit Loadable's default, which delegates back to isType(String). * test: cover TYPE-group resolution in AbstractReferenceManufacturer resolveGroupReferences (reached via resolveReferences) had no unit test pinning its input -> group-membership behaviour, only transitive coverage that asserted the boolean return, not which objects landed in which group. The isType(Type) fast-path optimization relies on that behaviour, so add direct tests: single- and multi-token membership (all tokens must match), case-insensitive matching, multi-group membership, and the dangling TYPE= case (matches nothing -> resolveReferences returns false). To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |