AddSearch Crawl – Changelog
Overview · Documentation · License
1.2.2 · October 28, 2026
No code changes.
Changed
- License terms.
LICENSEgains a License Term & Renewal section (each license includes a year of updates and renews yearly; an expired license never disables the add-on), and Support, Updates & Warranty says a current license gives access to the updates released during its term. The same terms as the website's license page and the other Multimediality add-ons. - Changelog format.
CHANGELOG.mdgroups every release under Added, Changed, Removed, Fixed and Security, with Upgrading notes where a release needs a step; the release notes themselves are unchanged.
1.2.1 · October 28, 2026
Changed
- New add-on icon.
- Manual: the Upgrading section says to run the add-on's Update as soon as the files are in place and what happens until it has run; the "add-on needs its update run" notice has its own Troubleshooting line; a License section; links to the online manual, changelog and MCP Server For EE. No code changes.
1.2.0 · October 25, 2026
Release-review release: the settings page, the crawl decision, URL resolution, key storage and the installer were each re-read against ExpressionEngine 7.5 and PHP 8.4, and brought in line with Multimediality's other add-ons. No database migration is required beyond the add-on's own Update.
Added
addon.setup.phpdeclaresrequires(PHP 8.1, EE 7.2.0), adocs_url, and a namespace the version is read from at runtime (Addon::version()), so the version lives in one file.
Changed
- Yes/No radios are ExpressionEngine 7 toggles. All channels, Crawl on publish, Crawl on update and Developer log use the control panel's own toggle switch; the channel list appears only when All channels is off.
- Save checks credentials but does not depend on AddSearch being up. Credentials AddSearch rejects (HTTP 401/403) are refused with the reason; an unreachable API saves the settings with a warning. Test connection says in a sentence what happened, including an expired control-panel session.
- Channels under Multi-Site Manager are named by site, since the settings are shared by every site.
- URLs come from the site's page map. Instead of walking
exp_structureby hand, the resolver readsexp_sites.site_pages, the table Structure and the Pages module maintain: Structure pages, Structure listing entries and Pages entries resolve to the URI their templates use. Structure's "add trailing slash" setting is honoured. The fallback stays Channel URL +url_title, now with{base_url}/{site_url}replaced. The hook runs after the entry's tab data is saved and at priority 100, so Structure's own URI write precedes it. - The installer builds on ExpressionEngine's
Installerservice (module row, hook rows from one list inAddon::HOOKS, idempotent on update); the two 1.0 hook names are removed on update;api_keyis widened to TEXT; the install refuses to proceed without thecurlandopensslextensions. - PHP 8.4 clean: typed properties, explicit nullable parameters, no
curl_close(),declare(strict_types=1)in the namespaced classes. - The customer manual is
addsearch_crawl/README.md(rendered by the Add-on Manager; copied to the zip root); the repo-root README is developer-facing. Store copy, the hosted docs page, the license stub and the release punch list live indocs/. The build script matches the sibling add-ons (archiver 8, version sync, fail-fast on missing files).scripts/test_addon_cli.phpis the CLI harness (94 checks).
Removed
- The duplicated extension-settings form, credential check and crypto code in
ext.addsearch_crawl.php(dead since the module control panel took over) are gone; the extension file holds the hooks only.
Fixed
- Every string moved to the language file, which is now named as ExpressionEngine loads it (
addsearch_crawl_lang.php; the previouslang.addsearch_crawl.phpwas never read). - "Publish" means "became public". Earlier releases inferred publish vs. update by comparing the entry's edit date with its entry date, so a new entry with a backdated entry date was treated as an update and an existing entry switched from Closed to Open counted as an update too. The add-on now records whether the save is an insert and what the status was before it (
before_channel_entry_insert/before_channel_entry_update), and classifies: a new Open entry or a status change to Open is a publish; a save of an already Open entry is an update; anything not Open is never crawled. - A crawl request waits at most fifteen seconds (ten to connect) instead of thirty, and every failure path is caught: an entry save cannot fail because of AddSearch.
- Logging is a Developer Log model write with a unique hash per event (under MySQL strict mode the previous logger could fail silently), gated once per save instead of per line; settings are read once per request instead of once per log line.
Security
- The API key is a masked password field. The stored key is shown as its last four characters and never sent to the browser again; a blank box keeps it. A key that can no longer be decrypted (the site's
encryption_keychanged) is reported as such and asked for again instead of silently reading as empty. - The API key is encrypted with ExpressionEngine's own Encrypt service (random IV, keyed from the site's
encryption_key) under av2:prefix. 1.1.0's fixed-IV payloads (v1:) and 1.0.x plaintext are still read, and the add-on's Update re-encrypts them once.
1.1.0
Changed
- Modernized the addon for ExpressionEngine 7 (namespace, setup metadata, and compatibility updates)
1.0.0
Added
- Initial release
- Automatic crawl triggering on entry publish/update (via
after_channel_entry_save) - Configurable channel selection (all channels or specific channels)
- Structure-aware URL resolution (prefers Structure tree using
structure_url_title, falls back tochannel_url+url_title) - Enhanced logging with contextual details (entry ID, resolved URL, explicit skip reasons); success logs include AddSearch response (
message,docId) when available - Secure API authentication (Basic Auth; username = Site Key, password = API Key)
- Control panel interface with Test Connection and server-side credential validation
- Crawl API integration with
https://api.addsearch.com/v1/crawlerusing required payload (action,indexPublicKey,url)