Uh oh!
There was an error while loading. Please reload this page.
Add V154 OG migration + admin list-UI, breadcrumb and sidebar enhancements - #650
Merged
Conversation
ddon
commented
Jul 20, 2026
Contributor
Bunch of conflicts @mdon |
…loading_indicator opt-out
…vigations, aria-current on active tabs
Adds phoenix_kit_og_templates + phoenix_kit_og_assignments (was authored as V152; renumbered to V154 on rebase — upstream claimed V152/V153).
mdon
commented
Jul 20, 2026
ContributorAuthor
Conflicts resolved — rebased onto current Verified: |
ddon pushed a commit
that referenced
this pull request
Jul 20, 2026
Post-merge review of the V154 OG migration + admin list-UI bundle, the cheap timezone-label accessor, and the etcher 0.8.2 patch bump. No bugs found; two low-confidence nitpicks recorded on PR #650 (a likely no-op @disable_ddl_transaction on V154, and a possible array/object mismatch on the OG template's canvas JSONB default). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ddon pushed a commit
that referenced
this pull request
Jul 20, 2026
@disable_ddl_transaction true is on v154.ex:30, not :75; the canvas JSONB default is on v154.ex:41, not :86. Both nitpicks previously pointed at unrelated CREATE INDEX statements. Caught by /code-review. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ddon pushed a commit
that referenced
this pull request
Jul 20, 2026
Post-merge review of V155 (CRM contact id on newsletter deliveries + per-broadcast dedup indexes). No bugs found: verified no version collision with PR #650's V154 despite the misleading "V154" branch/commit naming, confirmed up/down statement ordering respects column/constraint dependencies, and cross-checked the widened-not-XOR recipient-check deviation against V152's history. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
ddon pushed a commit
that referenced
this pull request
Jul 20, 2026
Bumps version and adds the CHANGELOG entry for the merged-but-unpublished PRs #650 (V154 OpenGraph tables + admin list-UI/breadcrumb/sidebar enhancements), #653 (V155 delivery CRM contact id + per-broadcast dedup), #654 (cheap timezone-label accessor), and #655 (etcher 0.8.2). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds core migration V154, creating the two tables the
phoenix_kit_ogplugin needs:phoenix_kit_og_templates— reusable OG canvas designs (canvasJSONB, optionalpreview_image_uuid)phoenix_kit_og_assignments— binds a template to amodule_key × scope_type × scope_uuidscope via a JSONBslot_mappingUniqueness is a partial-unique-index pair, so a NULL
scope_uuid(module-wide default tier) and per-scope assignments don't collide;template_uuidcascades on delete. Bumps@current_version→ 154 and adds the### V154moduledoc block.Notes
CREATE TABLE/INDEX IF NOT EXISTS,ADD COLUMN IF NOT EXISTS).uuid_generate_v7()calls are schema-qualified, matching V148/V149.CHANGELOG.md+mix.exsversion bump intentionally left out for the maintainer to add at review.Verification
mix format --check-formatted✓mix compile --warnings-as-errors✓mix credo --strict✓ (no issues, whole tree)prefix_migration_test.exs(the full-chain scratch-schema oracle) ✓ — appliesV153→V154cleanly, both OG tables created, marker →154.upstream/main(verified by running the same suite on3813638fafter a DB reset — the rebase introduces zero new failures; the 42 are pre-existing owner-role-protected / flash-not-fetched harness issues unrelated to this branch).Also in this PR: admin list-UI & chrome enhancements (6 commits)
The components/JS work that backs the
phoenix_kit_projectslist-page overhaul, all reusable by any module. Rebased onto current main; two of the original commits (asearch_toolbarform fix and apage_sectionforward) were dropped as redundant —upstream/mainalready carries equivalents.Components (
core/)search_toolbar: added an in-flight loading spinner driven byphx-change-loading(sibling selector, pure CSS) with aloading_indicatoropt-out for client-instant contexts.bulk_actions_toolbar: new:trailingslot — far-right toolbar content (e.g. a view-mode switcher) rendered after the contextual Reorder/Delete/Clear buttons.Admin layout / breadcrumb
page_action: pages can declare%{icon, label, navigate}and get a compact action button in the header breadcrumb next to the page title — lets list pages drop their in-content header row entirely. Forwarded throughlayouts/admin.html.heexalongside the existingpage_section/page_section_pathcrumbs.aria-current="page"(accessibility + a stable client-side marker).JS (
priv/static/assets/phoenix_kit.js)TableLocalSearchhook: client-instant row narrowing for search_toolbar tables — hides rows by a lowercasedata-searchhaystack during the debounce window while the server result stays authoritative; inert when the row set is incomplete (data-local-search-enabled).AdminSidebarScroll: the admin menu keeps its scroll position across every navigation (live redirects rebuild the main container; cross-live_session navigation is a full reload). sessionStorage save withphx:page-loading-start/pagehideflushes; pre-paint restore via the hook on live redirects andDOMContentLoadedon full loads; falls back to centering the[aria-current="page"]link.Verification
mix precommit✓ (format, compile --warnings-as-errors, credo --strict)table_default_test.exs— includes pins for the spinner opt-out andaria-current.