Repository navigation
feat: settings → smtp, declutter admin navigation (#20) - #21
Merged
Merged
Conversation
Registers the page with add_options_page() (screen settings_page_mailyard) and drops the top-level menu, its five submenu entries, the menu icon and the submenu click interceptor. Old admin.php?page=mailyard URLs redirect with their query args; every internal link goes through Settings::url(). The send-failure notice now shows on the Dashboard and Plugins screens only, with one dismiss path. Refs #20 Co-Authored-By: Claude Opus 5.5 <[email protected]>
9 tasks
The app shell switches to the design system's topbar variant (brand · Overview · Connections · Email log · Deliverability · Settings · Help), so wp-admin's own sidebar is the only vertical nav. The submenu-highlight sync and the sidebar divider CSS go with the old menu. Settings drops its grouped left rail for one header with a tab row; each section opens with a one-line intro (SectionIntro) instead of repeating its name as a page title. Tabs scroll sideways on narrow screens. The base border-color rule now has zero specificity (:where), so library components keep their own border colors (the top bar's underlines) and authored border-* utilities render as written. Docs and readme paths follow the move; Dashboard is now Overview. Refs #20 Co-Authored-By: Claude Opus 5.5 <[email protected]>
ifahimreza
marked this pull request as ready for review
October 9, 2026 10:14
Refs #20 Co-Authored-By: Claude Opus 5.5 <[email protected]>
Refs #20 Co-Authored-By: Claude Opus 5.5 <[email protected]>
1 task done
ifahimreza
added a commit
that referenced
this pull request
Oct 9, 2026
Refs #20 Co-Authored-By: Claude Opus 5.5 <[email protected]>
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 free
to 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.
Closes #20
What
Mailyard no longer takes a top-level wp-admin menu. It now lives at Settings → SMTP (
options-general.php?page=mailyard), and the admin screen has a single navigation: a slim top bar (brand · Overview · Connections · Email log · Deliverability · Settings · Help) in place of the app sidebar. Inside Settings, the grouped left rail is replaced by one header with a tab row. Previously the screen stacked wp-admin's sidebar, the Mailyard menu with 5 submenu entries, the app sidebar repeating them, and the Settings rail.Why
Mailyard is a simple SMTP plugin now (#17). A top-level menu plus three stacked navigations was more chrome than the plugin needs (#20).
How
add_options_page(); screen id/hooksettings_page_mailyard(Settings::SCREEN). The top-level menu, its submenu entries, the base64 menu icon and the inline submenu click interceptor are gone.Settings::url( $route )is used by the plugin action link, alert and weekly-summary emails, the failure notice and the OAuth return.admin.php?page=mailyard…302s tooptions-general.phpwith every query arg kept (an OAuth return carries its outcome there). Browsers carry the#/…fragment, so deep links in alert emails already sent still land on the right view.AppShell variant="topbar".Sidebar.jsxbecomesNav.jsx(flat items, no icons, no collapse). The App-side submenu highlight sync is removed.PageHeaderwith aTabsrow (scrolls sideways on narrow screens, labels don't wrap). Each section opens with a one-lineSectionIntroinstead of repeating its name as a page title. "Data & danger" is shortened to "Data".is-dismissible× only hid it until the next page load and is gone. The stray empty%sin its markup is fixed. The conflict notice follows the new screen id.#mailyard-admin * { border-color }rule had id specificity. It repainted the top bar's transparent and active underlines grey, and it also silently overrode every authoredborder-*/divide-*colour utility in the app. It is now:where(#mailyard-admin) *(zero specificity). Side effect: those utilities render as written, e.g. the selected SMTP preset chip now gets its intended blue border.Testing
admin.php?page=mailyard#/logs→options-general.php?page=mailyard#/logs; Settings → SMTP is highlighted in wp-adminmailyard_oauth+messageserver-side (checked with fetch); Connections shows the toast and tidies the URLoptions-general.php?page=mailyard…#/logs?status=failed; Dismiss hides itphp -lclean on every PHP file;wp-scripts buildpasses (same 2 pre-existing size warnings); no changed JS file has more lint errors than onmainFound on the way, filed separately: #22 (WordPress core strips the OAuth
messagearg before the app reads it; this already happened on the old URL).Screenshots
Not attached (the gh CLI can't upload images). Visual QA was done in the Playground: top bar with the active underline, Settings header with the tab row.
readme.txt, so merging tomaintriggersassets.yml, which syncsreadme.txtto wp.org SVN (trunk + stable tag) right away. The readme onmainalready carries the unreleased 1.1.0 changelog andStable tag: 1.0.2. Merge with[skip actions]in the squash title (as feat: simple SMTP — drop Pro, Meow Mailer parity (#17) #18 did) if the readme shouldn't go live before the release.🤖 Generated with Claude Code