Add Groups theme#1699
Draft
dd32 wants to merge 97 commits into
Draft
Conversation
Net-new theme `groups-site` (renamed from upstream Vibed Groups copy): heavily reworked to use the wporg color palette + EB Garamond/Inter, GatherPress integration via custom PHP patterns instead of the client-hydrated `gatherpress/events-list` block, expanded card grids on the events archive, RSVP-response avatars styled as a hover-expand row, and template-hierarchy filters that route gatherpress_event/venue posts to the theme templates. Net-new mu-plugin `wporg-groups-frontend`: front-end React modal that lets meetup organizers create and edit GatherPress events without ever seeing wp-admin. Uses the inline @wordpress/block-editor for the description field, autosaves drafts every 5s, prompts before discarding unsaved input, includes a featured-image picker via wp.media. Backed by custom REST endpoints under /wporg-groups/v1/ that wrap Event::save_datetimes() + the venue taxonomy assignment. Infra: nginx rewrites + sunrise-events.php + sunrise.php to route /group/<slug>/ URLs on the events network to the right subsite blog. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The plugin was being included from wcorg_include_individual_mu_plugins() which loads on every network. Now that production has a dedicated groups/ network folder (added in WordPress#1694), drop the unconditional include and add a one-line stub at mu-plugins/groups/wporg-groups-frontend.php that defers to the existing plugin folder. The stub is picked up by wcorg_include_network_only_plugins() so the front-end editor only loads when SITE_ID_CURRENT_SITE === GROUPS_NETWORK_ID. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the legacy WPorg_Groups_Frontend / Groups_Site namespaces with the
WordCamp\Groups\Frontend and WordCamp\Groups\Site hierarchies, give every
PHP file in the theme and mu-plugin a real namespace declaration, and
prefer `use` imports over fully-qualified function/class names.
- mu-plugin: WPorg_Groups_Frontend -> WordCamp\Groups\Frontend
WPorg_Groups_Frontend\Modal -> WordCamp\Groups\Frontend\Modal
WPorg_Groups_Frontend\REST -> WordCamp\Groups\Frontend\REST
WPorg_Groups_Frontend\Defaults -> WordCamp\Groups\Frontend\Defaults
WPorg_Groups_Frontend\Capabilities -> WordCamp\Groups\Frontend\Capabilities
- theme: Groups_Site -> WordCamp\Groups\Site
Groups_Site\Event_Cards -> WordCamp\Groups\Site\Event_Cards
- theme functions.php gains a namespace and drops the `groups_site_`
function-name prefix; hook callbacks now use __NAMESPACE__.
- Pattern files each get a per-file namespace under
WordCamp\Groups\Site\Patterns\*. Card-rendering patterns import
`Event_Query` and `render_event_cards` via `use`, instead of writing
fully-qualified calls inline.
- manage-event-cta / edit-event-link import the capability check via
`use function` and drop the `function_exists()` guard — the
wporg-groups-frontend mu-plugin is loaded on the groups network, so
the function is always available when these patterns render.
- groups/wporg-groups-frontend.php loader stub gets a
WordCamp\Groups\Loader namespace.
- @Package docblocks updated across PHP, JS, and CSS to match.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Theme.json schema version stays at 3 (unchanged in 6.9), so the only change is the `$schema` URL. Picks up the new validation surface area 6.9 added without altering any existing settings or styles. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…r/footer
Mirror the wporg-events-2023 setup so individual Group sites inherit the
shared wporg parent theme and get the standard wordpress.org global header
and footer wrapped around the site's own local navigation and community
callout.
- style.css gains `Template: wporg-parent-2021`, making this a true child
theme. `Requires at least` bumped to 6.9 alongside the theme.json
schema bump in the previous commit.
- functions.php enqueue chains the parent stylesheet + wporg global font
stack as deps for the theme stylesheet, matching wporg-events-2023.
- parts/header.html prepends `<!-- wp:wporg/global-header /-->` above
the existing skip-link + site-title + page-list nav block, so the
wordpress.org chrome sits on top of the local nav.
- parts/footer.html keeps the "Bring WordPress to your community" callout
but replaces the hand-rolled footer link list with
`<!-- wp:wporg/global-footer /-->`, again matching wporg-events-2023.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Re-runs `mysqldump` against the local docker DB to capture the state needed
for the groups network theme work. The new dump:
- adds network 4 to `wc_site` (`events.wordpress.test`, `/group/`)
- adds the network root placeholder blog 52 (`/group/`) on site_id 4
- moves blog 51 (`/group/sunshine-coast-qld/`) from site_id 2 → 4
- seeds minimal `wc_sitemeta` for site_id 4 (site_name, admin_email,
admin_user_id, registration, subdomain_install, blog_upload_space,
fileupload_maxk, upload_filetypes, wpmu_upgrade_site, site_admins,
`active_sitewide_plugins` with gatherpress)
- sets `wc_51_options.template` to `wporg-parent-2021` so the now-child
`groups-site` theme resolves to its parent
- adds 6 new gatherpress events on blog 51 (4 upcoming + 2 past) so the
theme's `upcoming-events-cards` and archive cards have realistic
content; new posts are linked to the existing Salty Spaces venue
Format change: the dump is now in mysqldump multi-line INSERT format
(one row per line) instead of the previous single-line format. This is
just a `mysqldump` default and makes future diffs much easier to read.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The local-header bar (site-title + page-list navigation) was duplicating
the site-title already present in the front-page hero and adding visual
clutter below the wporg global header.
- parts/header.html now contains only the wporg/global-header block.
- front-page.html gains a new `.groups-site-local-nav` strip between the
hero and the main content area, containing the page-list navigation.
- custom.css replaces the old `.groups-site-local-header` sticky rules
with lighter `.groups-site-local-nav` styles (link transitions + active
page highlight). The sticky positioning and backdrop-filter are dropped
since the nav no longer sits at the top of the viewport.
Inner-page templates (single-event, archive-event, etc.) currently have
no local navigation — that can be addressed in a follow-up once the
desired inner-page layout is decided.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a `header-inner` template part that includes the wporg global header followed by the site-title + page-list navigation bar. All inner-page templates (single-event, archive-event, single-venue, 404, search, index) now use `header-inner`; the front page keeps the global-header-only `header` part since its hero already contains the site title. CSS for `.groups-site-local-header` is restored alongside the `.groups-site-local-nav` rules (the two are used in different contexts). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The wporg/global-header block declares `"color": { "link": false }` in
its block.json supports. Without the Gutenberg plugin, WP core skips
generating the wp-elements inline styles for link colors inside the
header, breaking the visual appearance. Activating Gutenberg on the
groups network (alongside GatherPress) restores the element styles and
provides the enhanced navigation view module.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The outline "About this group" button in the hero has blueberry-1 text on a blueberry-1 border. On hover the theme.json button :hover style applies a deep-blueberry background, but the text stays blueberry-1 — nearly invisible. Add a CSS rule that flips text to white and border to deep-blueberry on hover for outline buttons inside the hero. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the custom .groups-site-local-header group with the shared wporg/local-navigation-bar block from the wporg-mu-plugins. This gives inner pages the same sticky breadcrumb-style site-title + navigation bar that events.wordpress.org uses, with consistent padding, font sizing, and sticky positioning provided by the block's own stylesheet. The old .groups-site-local-header CSS rules are dropped since the block handles its own styling. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The textColor attribute generates a `has-blueberry-1-color` class that WP renders with `!important`, preventing any CSS hover override. Switch from `textColor` (preset class) to `style.color.text` (inline style) so the color can be overridden by the existing hover rule in custom.css. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the `has-display-contents` class from the local-navigation-bar
block. The parent theme (wporg-parent-2021) defines
`.has-display-contents { display: contents; }` which prevents
`position: sticky` from working because the element no longer generates
a box. The events-2023 theme uses this class for its specific layout
context where the nav bar children need to participate directly in the
parent flex container, but the groups-site inner-page layout does not
need this — the nav bar should be a normal sticky flex container.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The nav bar was inside the <header> template-part wrapper, which limited its sticky positioning to the header element bounds. When the header scrolled out of view, the nav bar went with it. Fix: extract the local-navigation-bar into a pattern (local-navigation) and reference it directly in each inner-page template AFTER the header template-part, so it becomes a direct child of wp-site-blocks and can stick against the viewport. Also removes the now-redundant header-inner template part — all pages use the same header (global-header only), with inner pages adding the local-navigation pattern separately. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The parent theme uses charcoal-0 (#1a1919) for body text and 400 font-
weight for navigation/site-title. The groups-site theme was using
charcoal-1 (#1e1e1e) and font-weight 500, creating a visible mismatch
with the global header chrome.
- Add charcoal-0 to the palette
- Switch body text, heading, site-title, navigation, and post-title
colors from charcoal-1 to charcoal-0
- Change core/navigation and core/site-title fontWeight from 500 to 400
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Two fixes: 1. Pattern references (wp:pattern slug groups-site/local-navigation) were silently producing empty output. Replace with the local-navigation-bar block markup inlined directly in each template. Remove the now-unused patterns/local-navigation.php file. 2. The theme.json fontFace entries for Inter and EB Garamond were re-declaring @font-face via Google Fonts CDN, conflicting with the parent theme wporg-global-fonts stylesheet which loads the same fonts from local woff2 files. The duplicate declarations caused subtle font- weight rendering differences. Remove fontFace arrays and align the fontFamily fallback strings with the parent theme values. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The core/site-title block had explicit fontFamily (EB Garamond), fontSize (heading-5), and fontWeight (400) set in theme.json. These overrode the parent theme defaults and made the site-title in the local-navigation-bar render in a serif font at a larger size than the events.wordpress.org header uses. Remove the typography properties so the site-title inherits from the parent theme (Inter, body size). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The inline style from the block markup sets color:var(--wp--preset-- color--blueberry-1) which has higher specificity than the CSS hover rule. Add !important to the hover color so white text wins over the inline blueberry-1 on the deep-blueberry hover background (was 1.37:1 contrast, now meets WCAG AA). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add a site-title + page-list navigation bar between the global header and the hero content, sharing the hero blueberry-4 background so they read as one continuous section. The old white nav bar that sat below the hero is removed. The hero padding-top is reduced from spacing-70 to spacing-60 to account for the header bar above it, keeping the overall visual weight similar. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the custom groups-site-hero-header group with the shared wporg/local-navigation-bar block using blueberry-4 background so it merges visually into the hero. This gives the front page the same sticky behavior, WP logo on scroll, and proper horizontal alignment that inner pages already have. Remove the now-unused .groups-site-hero-header CSS rules. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the two-column hero layout (text + explicit image column) and replace with a single-column text layout over a CSS background image. The image is right-aligned and fades to the blueberry-4 background via a linear-gradient overlay (solid at 0-45%, transparent at 70%), keeping the left-side text fully readable. On mobile (<781px) the background image is hidden entirely so the hero is a clean solid-color block with text only. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the fixed 2-column (archive) / 3-column (front page) grid with a single `repeat(auto-fill, minmax(280px, 1fr))` rule. Cards now tile to fill the available width naturally — typically 3-4 per row on wide screens, 2 on medium, 1 on mobile — without separate compact/expanded media query overrides. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous dump had double-encoded UTF-8 emoji because the mysql CLI seed commands were run without --default-character-set=utf8mb4. This re-export starts from the clean production dump, re-applies all groups network seeding (network 4, blog 52, blog 51 migration, events, plugin activation) with the correct charset on every mysql invocation, then re-exports with mysqldump --default-character-set=utf8mb4. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Remove the "← All events" back-link pattern from the single-event template — the sticky local-navigation-bar header already provides navigation context. Reduce main padding-top from spacing-50 to spacing-10 so the featured image sits closer to the header. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The generic single-segment rewrite rules in the `if (!-e)` block were matching /group/slug/wp-login.php before the events-specific two-segment rules could fire. The single-segment capture grabbed the first segment and rewrote to /sunshine-coast-qld/wp-login.php — a nonexistent path. Fix: add two-segment rewrites at the top of the `if (!-e)` block so paths like /group/slug/wp-login.php, /group/slug/wp-admin/*, and /group/slug/xmlrpc.php are correctly stripped to their wp-* targets before the single-segment rules get a chance to mangle them. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The modal was enqueuing wp-edit-blocks, wp-block-editor, wp-reset-editor-styles, wp-block-library, and wp-format-library globally on every front-end page for logged-in editors. These editor stylesheets set body-level font-family, background-color, and other resets that override the theme styles, making the page look different when logged in. Only wp-components is needed for the modal UI (Modal, TextControl, Button, etc). The block editor JS dependencies still load the editor functionality — they just no longer bring along the global CSS overrides. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace PHP event card patterns with native WordPress Query Loop blocks. This eliminates Site Editor validation errors caused by server-rendered PHP output inside block templates. Add two new server-rendered blocks for use inside Query Loop: - wporg/event-rsvp-count: displays "N going" for an event - wporg/event-venue-name: displays venue name with location icon Templates now use core/query with postType=gatherpress_event, core/post-template for the grid layout, and standard blocks (post-title, post-featured-image, post-excerpt, gatherpress/ event-date) alongside the new custom blocks. The PHP patterns and render_event_cards() helper are no longer used by templates but kept for backwards compatibility. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add pre_get_posts filter that joins the GatherPress events table and orders by datetime_start_gmt when gatherpress_event_order query var is set. Add query_loop_block_query_vars filter that automatically sets event ordering and upcoming-only filtering for any Query Loop block that queries gatherpress_event post type. Events on the front page and archive now show in chronological order by event start date (not post creation date), with past events filtered out. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use ServerSideRender in the edit function so the blocks show their actual server-rendered output in the Site Editor instead of static placeholder text. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Override the block editor layout default link underline for the site-title block. The theme.json textDecoration:none setting is overridden by the editor's .block-editor-block-list__layout a rule. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace the hero section group block with a core/cover block so organisers can change the background image and overlay color directly in the Site Editor. The cover block natively supports: - Background image upload/replace - Overlay color with opacity - Focal point adjustment - Min-height The cover block itself is locked (no move/remove) but its settings panel is accessible for customisation. Inner blocks (text, buttons, membership) remain editable. Remove the old .groups-site-hero CSS since the cover block handles its own background styling. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace placeholder text with a description and "Open Site Editor" button that links to /wp-admin/site-editor.php. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use admin_url() via localized script config so the Site Editor link points to the correct per-site wp-admin on multisite installs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace static archive template with search bar, time filter (Upcoming/Past/All), result count, and paginated Query Loop. Uses wporg/query-filter block for the time filter dropdown with options registered via wporg_query_filter_options_event_time hook. The query_loop_block_query_vars filter reads the event_time parameter to toggle between upcoming-only, past-only, and all events. Add gatherpress_past_only query var support in pre_get_posts filter for filtering to past events via the GatherPress events table. Add event_time as an allowed query var. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use the view-all-events-link pattern which resolves the URL via home_url() instead of a hardcoded path that breaks on multisite. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When searching on the events archive (?s=&event_time=), WordPress treated the URL as a search query and loaded search.html instead of the archive template. Fix with two changes: 1. Rewrite the core/search block form action to submit to the events archive URL with a hidden event_time=all field, so searches stay on the archive page. 2. Force the main query to stay as an archive (not search) when event_time parameter is present, so the archive template loads and the Query Loop handles the search via query_loop_block_query_vars. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Register _event_speakers post meta (array of user IDs) on events. New wporg/event-speakers block displays speakers on the single event page with avatar, name, "Speaker" badge, and bio excerpt. Uses ServerSideRender for editor preview. Event editor form gets a FormTokenField for selecting speakers from group members via autocomplete. Selected speakers are saved as post meta after the event is created/updated. Speakers block added to single-event template below the title, locked to prevent removal. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New wporg/my-events block shows members their upcoming RSVPed events on the front page. Queries RSVP comments by the current user, filters to attending status and upcoming events only, displays as a compact list with date and title linking to the event page. Only renders for logged-in group members with active RSVPs. Hidden for visitors and members with no upcoming RSVPs. Added to the front page template between the events section and the about section. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rename $post to $event_post to avoid the WordPress globals override lint error. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rewrite responsive.css with proper breakpoints: Mobile (≤781px): - Event cards: single column grid - Members grid: single column - Event layout: stacked (sidebar below content) - RSVP modal: full-screen with no border-radius - Archive filters: stack vertically - Membership block: stack vertically - Cover hero: auto min-height Tablet (481-781px): - Event cards: 2-column grid - Members grid: 2-column Desktop (1024px+): - Sticky sidebar with z-index for modal overlay Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GatherPress reorganized classes into subdirectories: - GatherPress\Core\Event -> GatherPress\Core\Event\Event - GatherPress\Core\Rsvp -> GatherPress\Core\Rsvp\Rsvp - GatherPress\Core\Venue -> GatherPress\Core\Venue\Venue - GatherPress\Core\Event_Setup -> GatherPress\Core\Event\Setup - GatherPress\Core\Event_Query -> GatherPress\Core\Blocks\Event_Query While backwards-compat aliases exist in GatherPress, we update to use the canonical class names directly to avoid relying on aliases. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
GatherPress latest develop changed venue storage from a single JSON meta (gatherpress_venue_information) to individual meta keys (gatherpress_address, gatherpress_phone, gatherpress_website, gatherpress_latitude, gatherpress_longitude). Update venue editor load/save to use the new individual meta keys. Update venues tab list to read gatherpress_address directly. Update tweaks mu-plugin venue block filter to read gatherpress_access_requirements meta directly. Add CSS for clickable event cards in Query Loop — post-title link stretches over the entire card via ::after pseudo-element, with hover state (border color change, shadow, lift). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Set z-index:0 on the featured image so the post-title ::after overlay (z-index:1) sits above it, making the entire card including the thumbnail clickable. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The venue map was overflowing its container. Add max-width and overflow:hidden to keep it within the info card bounds. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Set z-index:0 on all card children except the post-title so the title link ::after overlay (z-index:1) sits above everything. Add cursor:pointer on the card container for visual feedback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Site Editor canvas uses contentSize as its default width. At 680px the editor looked cramped and did not match the front-end appearance. Since this is an events site (not a blog), matching contentSize to wideSize gives a WYSIWYG experience in the editor. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New block renders a page's content by slug, with an "Edit this content" link for organisers. In the Site Editor, it uses ServerSideRender to show the live page content, and the inspector panel lets you set the page slug. If the page does not exist, organisers see a "Create page" button. Replace post-content on the front page template with wporg/page-content slug="about" so the About section pulls from a dedicated About page rather than the front page's own post_content. Couldn't find a Gutenberg issue for Query Loop slug filtering — this is a gap in core that would eliminate the need for this block. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
New page template with: - Global header + navigation bar (locked) - Blueberry-4 hero area with page title - Featured image support with rounded corners - Content area at 768px width for readability - Matching the archive template header style Pages were previously falling back to index.html which showed a blog post listing instead of page content. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace z-index approach with pointer-events: none on all card children, re-enabling only on the title link. This ensures clicks on the featured image (and anywhere else on the card) pass through to the title link ::after overlay regardless of stacking contexts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
pointer-events:none on descendants killed the title link too. Instead, put the post-title at z-index:2 (above the ::after overlay at z-index:1) so it remains clickable, while the overlay covers everything else including the featured image. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add isLink:true to post-featured-image blocks in the front page and archive templates. This wraps the image in an <a> tag natively, making it clickable without relying on ::after z-index tricks that fail due to stacking context issues with aspect-ratio/border-radius. Remove the z-index workaround on post-title that was trying to fix the same problem. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add tabindex="-1" to the featured image link in event card grids via render_block filter. The title link already provides keyboard access — a second tab stop on the image is redundant. Only applies on non-singular pages (archives, front page) where cards appear in grids. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rename $page to $target_page. Co-Authored-By: Claude Opus 4.6 (1M context) <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 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.
No description provided.