Skip to content

Fix character groups and details; prepare Plotree 1.0.5 - #23

Merged
Htkym merged 2 commits into
mainfrom
fix/character-groups-and-tree-details-20261004
Oct 4, 2026
Merged

Htkym merged 2 commits into
mainfrom
fix/character-groups-and-tree-details-20261004

Conversation

@Htkym

@Htkym Htkym commented Oct 4, 2026 •

Copy link
Copy Markdown
Owner

Summary

Character groups and relationship selection were inconsistent between Plot and Character graph, and overlapping group backgrounds made selection difficult. This adds shared group membership, independently selectable backgrounds, visible relationship labels, and readable character details while preserving character positions. It also prepares app version 1.0.5.0.

Changes

  • Share multiple group memberships between Plot and Character graph, persist visibility, and retain legacy project membership when loading older projects.
  • Select relationships and groups in Details, highlight selected characters and lines, and create relationships with the localized “Relationship name” label.
  • Preserve character positions when grouping/recoloring. Keep distant members in separate backgrounds and compute each group's bounds from its own members; offset overlapping backgrounds and names and bring the selected group forward.
  • Keep top menus within the app, open group editing commands beside a selected background, and provide independent group visibility controls.
  • Place groups beside the character manager, expand/collapse grouped assignment lists, and list assigned characters on separate selectable lines with their groups.
  • Add character display defaults per node type and per-node overrides, independently of title/body mode, including export layout and persistence.
  • Queue and coalesce graph redraws, suspend collection mutation during dragging, and discard callbacks from an unloaded control. Release pointer capture after clearing gesture state.
  • Update English/Japanese resources and user documentation; keep both READMEs focused on features, installation, usage, and user-facing limitations. Projects saved by 1.0.5 use the newer file format and cannot be opened by 1.0.4 or earlier.
  • Add the repository plotree-store-release skill and a portable read-only artifact verifier. Plotree-specific preparation stays in this skill; generic packaging/build guidance resolves the existing WinUI skills by catalog name. User-local skills remain unchanged.

Request coverage

Requested behavior Implementation and automated coverage Manual verification
Relationship selection shows its details Character graph selection/editor; relationship selection regression Actual pointer selection and displayed editor
Selected character white border and related lines are thicker Separate full selection ring, relationship emphasis and rendering layers; interaction tests Final appearance at different scales
New relationships use a visible localized default label View model/editor/resources; default-label persistence and localized-help tests Label rendering
Group menu stays within the app In-app flyout and menu placement calculator; bounds/resizing tests Native popup placement
Grouping preserves positions; nearby/distant backgrounds and overlap order Shared model/layout; position, proximity, ordering and group-isolation regressions Final colors and overlap appearance
Selected background shows group name/members Selected-group state and graph Details; group-selection tests Details content after clicking
Group menu opens near the selected background Background context flyout Actual anchoring
Selected group has a thicker border and comes forward Selected-group order and background rendering; ordering/interaction tests Border appearance
Groups can be shown/hidden beside the grouping menu Shared visibility state; hide/undo/redo/persistence tests Menu operation
Character manager has an adjacent group list; assignment folds by group Manager grid and grouped expanders; shared assignment-option tests Layout and expander operation
Character details use one line per person with group names; text can be copied by selection Summary formatter and selectable text controls; formatting tests Text selection/copy
Cards can show/hide characters independently Appearance resolver/card/export layout; inheritance, override, undo/redo, persistence and SVG tests Card and PNG appearance
Plot group settings appear in Character graph Canonical shared memberships; tree/graph and legacy-membership regressions Cross-view refresh
Follow-up interaction and redraw fixes Line hit geometry, full ring, isolated bounds, header ordering and deferred renderer regressions Intermittent native redraw failure monitoring

Review follow-up

  • Keep group-name targets at least 48 world units wide and use overflow rows for crowded headers. Stable canvas envelopes include those rows; regressions cover 8/37/64 coincident groups, staggered headers, and selection changes. Character positions and background geometry remain unchanged.
  • Resolve detail line formats, brackets and group separators through matching English/Japanese resources, independently of thread culture.
  • Use native Button activation for Enter/Space and automation selection, sharing selection logic while suppressing duplicate pointer clicks and preserving drag selections. Actual Windows keyboard/assistive interaction remains a user GUI check.
  • Rename both grouping action labels to describe adding memberships; regressions preserve existing memberships.

Validation

  • Full applicable unit suite: 243 passed, 0 failed, 0 skipped, after final edits.
  • Release packaging for x64 and ARM64, including both English and Japanese resources and self-contained runtime files.
  • Package identity, publisher and signing certificate match the previous 1.0.4.0 package; cryptographic CMS signature verification passed.
  • All package payload block-map SHA256 hashes verified; Store upload and direct installer archive contain the same final signed bundle.
  • git diff --check and source ownership checks.
  • Repository skill frontmatter, portable references and command syntax checked; its artifact verifier executed successfully against the final release. The bundled skill validator could not run because PyYAML is absent, so the simple frontmatter was checked directly without installing dependencies.
  • Store analytics symbols were omitted because the existing Windows environment lacks the optional PDB conversion tool; no new tooling was installed.
  • Windows policy verification reports an untrusted self-signed root locally. Certificate/trust stores were not changed. This is separate from cryptographic validity; Store certification and packaged installation were not performed.
  • GUI debugging is owned by the user. The intermittent native UIElementCollection.Clear failure was not reproduced; scheduling/lifetime regressions pass, but this does not establish that the native failure is eliminated.
  • Store upload remains user-owned. No Store submission, release publication, tag, or merge is included.

Screenshots

No new screenshots were taken. The user is performing GUI debugging; visual/manual checks are listed above.

Checklist

  • The change is focused and does not include unrelated refactoring.
  • Tests cover changed behavior; native GUI checks are explicitly identified.
  • User-visible text has matching en-US and ja-JP resources.
  • User documentation reflects the new behavior.
  • No secrets, generated build output, private project files, or signing certificates are included.

Share tree and graph memberships, improve relationship and overlapping group
selection, preserve positions, and add independent card character display.
Constrain menus and defer graph rendering around pointer gestures and unload.
Update bilingual user documentation and cover the behavior with regressions.
@Htkym
Htkym marked this pull request as ready for review October 4, 2026 08:20
Copilot AI balanced review requested due to automatic review settings October 4, 2026 08:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

Character keyboard accessibility, localized detail formatting, and scalable group-label selection remain unresolved.

Review effort: Balanced
Findings: 3 Medium severity · 1 Low severity

Open (4)
What changed in this PR

Adds the character relationship graph, shared grouping, card character visibility, deferred rendering, and prepares Plotree 1.0.5.

Changes:

  • Adds relationship editing, group visualization, avatars, selection, and graph interactions.
  • Extends persistence, card/SVG appearance, localization, documentation, and tests.
  • Updates release metadata and adds artifact-verification tooling.
File Description
tests/​Plotree.Tests/​SvgExportServiceTests.cs Tests character visibility in SVG exports.
tests/​Plotree.Tests/​ProjectSerializerTests.cs Tests v4 migration and relationships.
tests/​Plotree.Tests/​MenuPlacementCalculatorTests.cs Tests constrained menu placement.
tests/​Plotree.Tests/​MainPageViewModelTests.cs Tests relationships, groups, and movement history.
tests/​Plotree.Tests/​DeferredGraphRendererTests.cs Tests render scheduling and lifecycle behavior.
tests/​Plotree.Tests/​CharacterGroupIsolationTests.cs Tests independent group geometry.
tests/​Plotree.Tests/​CharacterGraphTests.cs Tests graph membership, selection, and appearance.
tests/​Plotree.Tests/​CharacterGraphInteractionTests.cs Tests hit geometry, layers, and group labels.
src/​Plotree/​Views/​NodeCard.xaml.cs Calculates card text and character visibility.
src/​Plotree/​Views/​NodeCard.xaml Displays assigned characters on cards.
src/​Plotree/​Views/​InAppFlyout.cs Constrains flyouts within the app.
src/​Plotree/​Views/​CharacterGraph.xaml.cs Implements character graph behavior.
src/​Plotree/​Views/​CharacterGraph.xaml Defines the character graph UI.
src/​Plotree/​ViewModels/​NodeViewModel.cs Exposes character card properties.
src/​Plotree/​ViewModels/​MainPageViewModel.cs Adds relationship, grouping, avatar, and appearance state.
src/​Plotree/​Strings/​ja-JP/​Resources.resw Adds Japanese UI resources.
src/​Plotree/​Strings/​en-US/​Resources.resw Adds English UI resources.
src/​Plotree/​Services/​SvgExportService.cs Exports card character names.
src/​Plotree/​Services/​ProjectSerializer.cs Adds v4 migration and relationship validation.
src/​Plotree/​Services/​NodeTextLayoutCalculator.cs Budgets character text space.
src/​Plotree/​Services/​MenuPlacementCalculator.cs Calculates bounded menu dimensions.
src/​Plotree/​Services/​DeferredGraphRenderer.cs Coalesces graph redraws.
src/​Plotree/​Services/​CharacterSummaryFormatter.cs Formats character summaries.
src/​Plotree/​Services/​CharacterGraphLayout.cs Calculates group regions and labels.
src/​Plotree/​Services/​CharacterGraphInteraction.cs Calculates graph hit geometry and layers.
src/​Plotree/​Services/​AppearanceResolver.cs Resolves character visibility settings.
src/​Plotree/​Plotree.csproj Sets version 1.0.5 metadata.
src/​Plotree/​Package.appxmanifest Updates package version.
src/​Plotree/​Models/​PlotProject.cs Persists relationships in format v4.
src/​Plotree/​Models/​NodeAppearance.cs Persists character visibility.
src/​Plotree/​Models/​CharacterRelationship.cs Defines relationship data.
src/​Plotree/​Models/​CharacterGroup.cs Adds group color and visibility.
src/​Plotree/​Models/​Character.cs Adds graph position, membership, and avatar data.
src/​Plotree/​MainPage.xaml.cs Integrates graph navigation and shortcuts.
src/​Plotree/​MainPage.xaml Adds graph navigation and appearance controls.
site/​content/​user-manual-ja.md Documents features in Japanese.
site/​content/​user-manual-en.md Documents features in English.
RELEASE_NOTES.md Adds 1.0.5 release notes.
README.md Updates English feature documentation.
README.ja.md Updates Japanese feature documentation.
.agents/​skills/​plotree-store-release/​SKILL.md Defines the release workflow.
.agents/​skills/​plotree-store-release/​scripts/​Test-ReleaseArtifacts.ps1 Verifies release artifacts.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/Plotree/Services/CharacterGraphLayout.cs Outdated
Comment thread src/Plotree/Services/CharacterSummaryFormatter.cs Outdated
Comment thread src/Plotree/Views/CharacterGraph.xaml.cs
Comment thread src/Plotree/Strings/en-US/Resources.resw Outdated
Keep dense group labels selectable with a minimum width and overflow rows
included in stable canvas bounds. Localize character details and clarify
that grouping adds memberships. Support native keyboard and automation
selection while preventing duplicate pointer activation.

Add regressions for crowded/staggered labels, culture-independent resources,
Enter/Space, pointer cleanup and preserving multiple group memberships.
@Htkym
Htkym merged commit b710727 into main Oct 4, 2026
4 checks passed
@Htkym
Htkym deleted the fix/character-groups-and-tree-details-20261004 branch October 4, 2026 10:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants