Skip to content

0.7.0

Choose a tag to compare

@somework somework released this 05 Sep 17:24
· 42 commits to main since this release

Changed

  • Console\SubmitterFactory and Console\SubmitterFactoryInterface are Adapter\SubmitterFactory and
    Adapter\SubmitterFactoryInterface; Console\ResultSummary is Submission\ResultSummary
    (spec 17 §4.2: they are
    called from Adapter\Services and the adapters, not only from the commands, so they stay in the core when the
    commands move to indexnowkit/console). Migration: change the use lines —
    use IndexNowKit\Adapter\SubmitterFactory;, use IndexNowKit\Adapter\SubmitterFactoryInterface;,
    use IndexNowKit\Submission\ResultSummary;. Adapter\Services::submitterFactory() returns
    Adapter\SubmitterFactoryInterface. Nothing else changes: same constructors, same methods.
  • Testing\Conformance\* and the assertion helpers are the indexnowkit/testing package (spec 17 §4.1: they
    extend and call PHPUnit, which the core only suggested). Testing\Conformance\CoreConformanceTestCase and
    OrmConformanceTestCase keep their FQCN; Testing\KeyFileAssertions, Testing\CheckOutputAssertions and
    Testing\ReadmeAssertions are now Testing\Conformance\KeyFileAssertions, CheckOutputAssertions,
    ReadmeAssertions — a withdrawal from the stable API before 1.0. Migration: composer require --dev indexnowkit/testing and change the three use lines. The mock server is
    vendor/indexnowkit/testing/resources/mock-server/router.php. The four test doubles (FakeTransport, ArrayLogger,
    FrozenClock, RecordingDispatcher) stay in the core; phpunit/phpunit leaves suggest.
  • Console\* is the indexnowkit/console package (spec 17 §4.2: the runners render through symfony/console,
    which the core only suggested; a plain-PHP or Doctrine user never needed them). The 16 classes keep their FQCN
    (Console\*Runner, ResultRenderer, ResultFormatterInterface, SubjectLoaderInterface, SubmitSubjectsOptions,
    Definitions, CommandDefinition, ArgumentDefinition, OptionDefinition, Vocabulary, ExitCode,
    ClassNameResolver): composer require indexnowkit/console and nothing else changes — the framework adapters
    require it for you. symfony/console leaves suggest and require-dev of the core; nothing under src/ imports
    Symfony\Component\Console\ or PHPUnit\ any more.

Added

  • Adapter\OptionalPackage: one predicate for an optional package of the family (installed() = class_exists()
    of a marker class unless overridden, no statics) with the three texts an adapter printed from its own copy:
    notInstalledMessage(), checkLine() / checkLevel() / check() (ok without a block or with the shipped
    defaults, warning when a configured block is ignored). Replaces the SitemapSupport copies of Laravel and Yii2 and
    the predicate of the bundle (spec 17 §4.3).
  • Testing\ReadmeAssertions: what the "Notes for AI assistants" README section must keep (present in EN and RU, a
    complete snippet, only existing commands and configuration keys), for the ReadmeAiNotesTest of every package
    (moved to indexnowkit/testing as Testing\Conformance\ReadmeAssertions in the same release, see Changed).
  • .phpstorm.meta.php: completion of locales (current, all) and events on #[IndexNow] / #[IndexNowDefaults].

Documentation

  • README: "Notes for AI assistants" (package, minimal complete snippet, verification, pitfalls across the adapters).
  • docs/configuration.md "One concept, three keys": the core keys with their defaults, the sitemap keys, the synonyms
    (dispatch modes, messenger.transport / queue.connection / queue.component, framework.enabled_locales /
    router.locales / router.languages, doctrine.enabled / eloquent.enabled / active_record.enabled, key
    file route, log destination, debounce store, HTTP client) and the adapter-only keys — generated by
    bin/config-table from Config::OPTIONS, SitemapConfig::OPTIONS, the bundle tree, LARAVEL_OPTIONS and
    YII_OPTIONS, checked in CI.
  • docs/operations.md: the production checklist first; "What IndexNow is, and is not" (where to see the result);
    "Deleted pages: what your site must return" (410/404/301, soft-404); "What not to submit" (noindex,
    robots.txt, non-canonical URLs, drafts — what the library checks and what it cannot); the four monitoring rules
    and a Sentry before_send filter; the 403 counter is per process; the key never travels in a query string.
  • docs/attribute-reference.md "Anti-patterns": five declarations that submit the wrong thing (url: with a literal,
    a status string in when:, a rule on a noindex page, non-canonical URLs, no when on a model with drafts).
  • README and configuration.md: batch.max_urls is a ceiling, not a target.
  • Russian translations: docs/attribute-reference.ru.md, docs/configuration.ru.md (linked from README.ru.md).
  • homepage in composer.json points at the docs site (https://indexnowkit.github.io/php/).