Skip to content

Releases: drift-creative-systems/drift-surface

Drift: Surface 3.0.1

Choose a tag to compare

@gakdesign gakdesign released this 08 Oct 12:10

Housekeeping. LICENSE is titled Drift: Surface, with the reserved names updated to the current product names, and drops the clause for docs files this package no longer ships. No code changes.

Part of the aligned Drift: Surface set: Drift: Surface Hub 1.5.3, Drift: Surface Hub theme 1.1.3, Drift: Surface 3.0.1, Drift: Surface Theme 2.0.1.

Drift: Surface 3.0.0

Choose a tag to compare

@gakdesign gakdesign released this 08 Oct 11:57

First release of Drift: Surface, the site engine for Surface band and artist websites.

Added

  • One-way sync from a Drift: Surface Hub (drift-hub 1.4.0+) into WordPress, driven by a product map (maps/surface.php): posts, post meta, taxonomies, linked records, media and one site settings option (surface_site_settings). Unchanged rows are skipped by content hash; removed rows are trashed and restored if they return. Images import in batches, and later batches continue from cached records with no extra hub requests.
  • Surface map: surface_gig, surface_release, surface_track, surface_member, surface_photo, surface_video, surface_press and surface_merch post types, surface_release_type and surface_album taxonomies, booking enquiry and newsletter forms, and the Setup Wizard pages. Requires Drift: Surface Theme (surface-theme), with an Install & activate notice until it's active.
  • Publish webhook POST /wp-json/drift-surface/v1/publish with an X-Drift-Surface-Secret header, queued as a background sync; GET /wp-json/drift-surface/v1/status for monitoring. A daily check re-syncs only if a publish was missed, and the admin bar has Sync from hub.
  • Website forms (drift_surface_form AJAX action) that save to the hub, with an email copy and a fallback email when the hub can't be reached.
  • Drift: Surface admin screen: Connection (hub address, Base ID and encrypted token, product, website address and publish secret for the hub, Check connection against the map), Sync, Content, White Label and Setup Wizard tabs, styled with the Drift Brand System (self-hosted Poppins and Inter).
  • Agency user access control and client menu hiding, and White Label for the admin bar, footer and login screen.
  • Theme API: drift_surface_setting(), drift_surface_setting_image(), drift_surface_linked_posts(), drift_surface_form_hidden_fields(), drift_surface_is_synced() and drift_surface_last_synced().
  • wp-config.php overrides: DRIFT_SURFACE_HUB_URL, DRIFT_SURFACE_HUB_BASE, DRIFT_SURFACE_HUB_TOKEN, DRIFT_SURFACE_KEY and DRIFT_SURFACE_GITHUB_TOKEN.
  • Self-updates from GitHub releases via the bundled Plugin Update Checker.

Requires WordPress 6.2+, PHP 8.0+, a Drift: Surface Hub (drift-hub 1.4.0+) and Drift: Surface Theme. Install drift-surface.zip below; updates arrive through Dashboard → Updates.

🤖 Generated with Claude Code

v2.0.0 — Encore Website (formerly Drift Website)

Choose a tag to compare

@gakdesign gakdesign released this 06 Oct 14:01

Renamed from Drift Website to Encore Website. 1.x sites update in place with no manual steps.

Changed

  • Plugin name, slug, main file (encore-website.php), text domain and GitHub repo are now encore-website.
  • Code prefixes: Encore_Website_* classes, ENCORE_WEBSITE_* constants, encore_website_* hooks, options and cron events, _encore_* post meta, encore_site_settings for the synced settings, ew- admin CSS classes, EncoreWebsite JS object.
  • Theme-facing API is encore_website_settings(), encore_website_setting(), encore_website_setting_image(), encore_website_linked_posts(), encore_website_is_synced(), encore_website_last_synced() and encore_website_form_hidden_fields(). (encore_* alone belongs to the Encore theme.)
  • Publish webhook is /wp-json/encore/v1/publish with an X-Encore-Secret header; the Free-plan link is ?encore_publish=. Form AJAX action is encore_form, honeypot encore_hp.
  • Secrets are sealed under a new key; 1.x values still unseal and are re-sealed by the migration.
  • tools/build-zip.py no longer ships CLAUDE.md or .gitignore. 1.3.0's zip included CLAUDE.md.
  • Encore map: the enquiry form's page-URL field is source_page (Airtable column still "Page"). page is a WordPress admin query var, and logged-in AJAX requests run admin_init. Encore theme 1.3.0 posts source_page; older themes' page URL is dropped.

Added

  • includes/class-migrate.php: runs once per site on plugins_loaded and on activation. It renames the 1.x options, post meta (including _drift_links_*) and user meta in place, re-seals the token and publish secret, deletes 1.x transients and swaps the cron hooks. It never overwrites a new name that already holds data. A failed run logs and retries on the next request.
  • drift-website.php: header-less legacy loader. 1.x sites keep drift-website/drift-website.php in active_plugins after an update; the loader repoints it to encore-website.php (multisite too) so WordPress doesn't deactivate the plugin.
  • includes/compat.php, kept until 3.0: drift_* theme functions, Drift_Website_* class aliases, and drift_website_* filters and actions passed through with deprecation notices. The drift/v1 namespace, X-Drift-Secret header, ?drift_publish= link, drift_form action, drift_hp honeypot and DRIFT_WEBSITE_* constants are all still accepted.

Drift Website 1.2.0

Choose a tag to compare

@gakdesign gakdesign released this 06 Oct 12:06

Added

  • embed map field type: keeps only <iframe> tags with an https source and strips scripts, srcdoc and surrounding text (Drift_Website_Media::embed()).
  • Encore map: Site Settings → Live Embed (live_embed) and Merch Embed (merch_embed), both embed. The base doc and setup script add the two Long text fields.
  • Sync tolerates fields missing from the base. When Airtable answers 422 UNKNOWN_FIELD_NAME, Drift_Website_Airtable::list_records_lenient() drops that field and retries (one extra API call per missing field, only while it's missing). The sync keeps the field's current WordPress values and logs which fields were skipped. Before this, one missing field failed the whole table. Fields a table can't sync without (title, slug, status field, order and sort fields, from Drift_Website_Map::structural_fields()) are never dropped, so the table still fails safely rather than binning rows. Airtable errors now carry type and message in their error data.
  • setup-encore-base.mjs migrate mode: --migrate --all (or --bases, --base) finds every Encore base the token can see and adds missing tables, fields and links. It never deletes, renames or retypes anything. It stamps [Encore template vN] on the Site Settings table description and lists hand jobs per base: formulas, select options, wrong types, Created time and button fields, the Interface. Dry run by default; --apply makes the changes. Bases newer than the script, and bases without Creator access, are skipped. TEMPLATE_VERSION is 2.
  • docs/airtable-setup/README.md: click-by-click steps for adding the embed fields to the Interface's Publish page; Part C, updating existing bases with migrate mode and a maintenance token; Part D, band-facing instructions for the embeds.

Changed

  • Licence: split. PHP stays GPL-2.0-or-later (GPL-2.0.txt); everything else (CSS, JS, media, docs, the Airtable template and its scripts) is proprietary to Drift Creative Systems. See LICENSE. The Drift and Encore names are reserved.
  • Code comments and changelog no longer name the private projects the plugin was originally built from.
  • Airtable setup docs now pass the setup token through the AIRTABLE_TOKEN environment variable instead of a command-line option. This keeps the token out of shell history and stops secret scanners flagging the placeholder.

Upgrading

  • Pairs with Encore 1.2.0, which shows the new Live and Merch embeds.
  • Existing Airtable bases: run node docs/airtable-setup/setup-encore-base.mjs --migrate --all (dry run), then add --apply. Sites keep syncing if they update first; missing fields are skipped and logged.
  • Upgrading re-saves every synced post once on the next sync (WordPress work only, no extra API calls).

Licence: PHP GPL-2.0-or-later, everything else proprietary — see LICENSE.

Drift Website 1.1.0

Choose a tag to compare

@gakdesign gakdesign released this 04 Oct 08:53

Drift Website and its product theme now work as a pair.

  • Product maps can name their theme ('theme' => [ 'slug', 'name', 'zip' ]). maps/encore.php names the Encore theme; maps without one are unaffected.
  • While that theme (or a child of it) isn't active, wp-admin shows Install & activate Encore (downloads its latest GitHub release) or Activate if it's already installed.
  • The Setup Wizard and its page creation are blocked until the theme is active, because its pages are built from the theme's modules.

Pairs with Encore theme 1.1.0, which shows a "coming soon" page until this plugin is active. encore-bundle.zip on the Encore release contains both. See CHANGELOG.md.

Install: upload drift-website.zip via Plugins → Add New → Upload.