Skip to content

docs(release): correct unreleased Symfony feature notes - #406

Closed
sidux wants to merge 43 commits into
PHPantom-dev:mainfrom
sidux:docs/correct-unreleased-feature-notes
Closed

sidux wants to merge 43 commits into
PHPantom-dev:mainfrom
sidux:docs/correct-unreleased-feature-notes

Conversation

@sidux

@sidux sidux commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • move the Symfony and Doctrine feature notes into the current Unreleased section
  • preserve the detailed CodeLens and indexing performance notes
  • keep the nullable-array-shape and bounded Doctrine relationship fixes under Fixed
  • remove the misplaced duplicate section from the previous release notes

Why

Release notes are part of the public contract for a release. Leaving newly added framework features under an older version would claim they had already shipped and make the upcoming release incomplete, while duplicate or dropped performance notes would obscure why the indexing work exists.

Dependencies

Validation

  • verified the Symfony section occurs once under Unreleased
  • cargo clippy --fix --allow-dirty -- -D warnings
  • cargo fmt
  • cargo clippy --all-targets -- -D warnings
  • cargo test — 14,170 passed, 12 ignored

@codecov-commenter

codecov-commenter commented Aug 27, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

❌ Patch coverage is 88.18001% with 654 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/symfony/container.rs 73.72% 108 Missing ⚠️
src/completion/symfony.rs 85.59% 104 Missing ⚠️
src/code_lens.rs 88.76% 100 Missing ⚠️
src/symfony/events.rs 91.72% 100 Missing ⚠️
src/symfony/expressions.rs 93.00% 45 Missing ⚠️
src/rename/prepare.rs 78.94% 36 Missing ⚠️
src/indexing/watch.rs 61.25% 31 Missing ⚠️
src/references/dispatch.rs 58.33% 30 Missing ⚠️
src/backend/documents.rs 48.83% 22 Missing ⚠️
src/proxy_metadata.rs 93.39% 21 Missing ⚠️
... and 8 more

📢 Thoughts on this report? Let us know!

@AJenbo AJenbo added this to the Sprint 8 milestone Aug 27, 2026
@sidux sidux mentioned this pull request Aug 27, 2026
6 tasks
sidux added 7 commits August 30, 2026 17:12
Use the coarse reference index for conclusive zero counts and cache bounded exact member locations for non-zero lenses. Refresh-capable clients avoid eager resolve storms while older clients retain lazy resolution.
Stop reference counts and CodeLens resolves from repeating the full workspace walk for every declaration. Internal annotation requests share the initial index, including callers queued behind it, while an explicit Find References command keeps its single refresh for files created without watcher notifications.
@sidux
sidux force-pushed the docs/correct-unreleased-feature-notes branch from fd39ab1 to 8681426 Compare August 30, 2026 15:33
sidux added 18 commits August 30, 2026 17:40
Resolve fully-qualified classes and Class::member references from arbitrary YAML and XML positions without schema-specific rules.
Feed schema-free class and member occurrences into Find References and CodeLens, including transparent-proxy metadata aliases.
Index semantic framework relationships alongside generic YAML and XML class references.
Pass every indexed target to editor-native navigation and ignore empty PHP resource strings.
Generic YAML and XML navigation now returns early only when it resolves a PHP symbol. Otherwise the semantic Symfony resolver still handles aliases, form fields, validation mappings, and configuration keys.
Build entity-to-repository pairs alongside the framework resource index and update them per URI. CodeLens and reference lookups now read the derived index instead of reopening and rescanning every YAML/XML resource for each declaration.
Discover opt-in generated subclasses by path and marker interface, then canonicalize external metadata without changing PHP type resolution.
Reuse the existing definition and reference pipelines for standard incoming and outgoing call navigation.
@sidux
sidux force-pushed the docs/correct-unreleased-feature-notes branch from 8681426 to 3e51c1e Compare August 30, 2026 15:54
sidux and others added 10 commits September 28, 2026 10:27
The reference CodeLens and YAML/XML navigation this branch was built on
landed upstream (PHPantom-dev#392, PHPantom-dev#394) and were reworked there, so this applies
only the branch's own changes on top of main.

- Member-scope resolution moved to references/member_scope.rs; the
  Doctrine getRepository() receiver resolution now lives there, using
  the namespace-aware use map, and framework member lookups filter
  through MemberScope.
- Document open/change/close and startup indexing moved to
  backend/documents.rs and backend/startup.rs; the framework resource
  index hooks follow them. YAML/XML watchers already exist upstream.
- Code lenses use the request's LineIndex; the framework method lens
  skips methods no resource names and builds its class scope once.
- Rename keeps working across file types: YAML/XML class and namespace
  occurrences are rewritten by the framework index in each document's
  own spelling and verified one by one, so an escaped name can no longer
  cancel a rename. A rename started in a resource renames the PHP
  declaration it names.
- Fix namespace segment indexing for escaped (App\\Domain) and rooted
  (\App\Domain) spellings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ntainer-intelligence

Brings in main through the updated framework-resource-navigation branch.

- Symfony PHP configurator strings join the cross-file-type rename: a
  position with no PHP symbol falls back to the framework index, class
  searches for a rename leave framework locations to the index, and
  the index skips occurrences the PHP rename already edits
  (`Foo::class`), so no edit is written twice.
- Service and parameter renames keep their own escaping-aware edits.
- Keep upstream's rule that a doubled backslash is not a valid new
  name; escaping is applied per occurrence instead.
- Framework Symfony symbol locations use a per-file line index and the
  shared de-duplicating sort; the Symfony resource lens uses the
  request's line index.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…oute-intelligence

Brings in main through the updated service-container branch.

- Route parameters rename through the framework index like service ids.
- Twig templates became framework resources here, so the document
  lifecycle indexes YAML, XML, and Twig alike without parsing them as
  PHP, and `*.twig` is now watched so a template changed on disk is
  re-indexed.
- Framework symbol and route-parameter lookups share one location
  helper built on a per-file line index.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-intelligence

Brings in main through the updated route-intelligence branch.

- Opening or editing a framework resource schedules its diagnostics in
  the moved document handlers, after the off-loop re-index commits.
- Template names stay out of rename.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lation-intelligence

Brings in main through the updated Twig-template branch. Translation
keys stay out of rename, and translation lookups share the framework
location helper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…messenger-intelligence

Brings in main through the updated translation branch. Call hierarchy
already landed upstream (PHPantom-dev#413), so only the proxy and events commits
are applied on top of it.

- Transparent proxies: in YAML/XML a proxy name counts as a reference to
  its real class inside upstream's reworked class search; proxy and
  compiled-container paths are recognised before the watcher's exclusion
  filter, since both usually live in ignored cache directories; startup
  indexing moved to backend/startup.rs.
- Event calls join upstream's cached call-hierarchy resolution; event
  definitions and references run after the workspace index is ready.
- Messenger handler lookups share the framework location helper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pression-language-intelligence

Brings in main through the updated events branch. ExpressionLanguage
definitions follow the event definitions in upstream's go-to-definition
handler.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-forms-validation-config-intelligence

Brings in main through the updated ExpressionLanguage branch.

- Mapped properties join the cross-file-type rename: a rename started in
  a validation or form mapping renames the PHP property, and the rename
  search now leaves out only class occurrences in YAML/XML (the escaped
  ones), keeping member-name occurrences for the PHP edit.
- Framework property lookups filter through MemberScope like method
  lookups; property lenses build the class scope once per class and only
  when a resource names the property.
- Config-key lookups share the framework location helper.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…fony-playground

Brings in main through the updated forms/validation branch.

- README: the comparison table was rewritten upstream; the Symfony & Twig
  row now marks PHPantom as supported, and the Symfony feature bullet
  joins the new list.
- The playground lint step pipes through xargs, as the PHP example step
  does, so a file that fails `php -l` fails CI (`find -exec ... \;`
  exits 0 regardless).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brings in main through the updated playground branch. The Symfony
entries now sit under Unreleased in each feature branch, and the
nullable array shape fix is recorded by upstream's own entry, so this
branch no longer changes anything on top of its parent.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sidux

sidux commented Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

Closing: the changelog fixes this PR carried are now part of the PRs below it. Each Symfony PR (#397–#405) adds its own entry under [Unreleased] after the merge with main, and the nullable array shape note is already on main from #396. This branch no longer changes anything on top of #405.

@sidux sidux closed this Sep 28, 2026
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.

3 participants