Skip to content

0.4.0

Latest

Choose a tag to compare

@somework somework released this 07 Sep 17:32
· 2 commits to main since this release

Added

  • Adapter\HistoryServices::describeStore(?string $store, string $default, Closure $lookup) (wave M, spec 19 §4.10):
    the debounce store as status prints it — memory and none as they are, a shared store as <id> (<ShortClass>) of
    what the adapter's lookup resolves the id to, <id> (missing) when it resolves to nothing or throws. Laravel, Yii2
    and Yii3 each built that line themselves; they pass their lookup now. debounceCacheId() answers through the core's
    DebounceStoreFactory::isShared().

  • Console\HistoryCommand and Console\StatusCommand (wave L, spec 18): the indexnow:history and indexnow:status
    commands themselves as symfony/console classes over Console\HistoryRunner / Console\StatusRunner, each with its
    #[AsCommand]; the adapter builds the runner (History\Adapter\HistoryServices::historyRunner() / statusRunner()
    and their *For() twins, the description of the debounce store and the queue facts included) and hands it over. The
    Symfony bundle and the Yii3 package register these classes instead of copies of their own; without the package an
    adapter registers Console\Command\HistoryNotInstalledCommand and StatusNotInstalledCommand of indexnowkit/console
    under the same names. HistoryCommand::DEFAULT_LIMIT (50) is what a --limit that is not a number falls back to.
    Minor version, not patch: new public classes, by the rule of the family; the Schema::table() entry below was written
    for 0.3.1 and ships here.

  • Pdo\Schema::table(string $table): string — the table name once it passed the identifier check, the form that reaches
    the SQL; assertTable() stays and delegates. PdoSubmissionStore and Schema::sql() keep the checked value, which is
    what Psalm's taint analysis (@psalm-taint-escape sql) reads as the boundary between history.pdo.table and the
    CREATE TABLE / INSERT statements (audit 0.13 T20).

Changed

  • History\Adapter\HistoryServices::package() delegates to the core's Adapter\OptionalPackage::history() (core
    0.13.0): the name, the marker and the feature word live there, so an adapter asks about the package without loading
    this class. Same object, same texts; adapters should call OptionalPackage::history() directly.
  • Requires ext-mbstring (RecordCodec truncates an error text with mb_substr() and declared nothing; audit 0.13 W3) and indexnowkit/core ^0.13; the commands need indexnowkit/console ^0.5 (require-dev, suggest).