Ernest Defoe
Administrators
-
Joined
-
Last visited
-
Currently
Viewing Forums Index
Everything posted by Ernest Defoe
-
Respawn — support and discussion
respawn 3.0.0 What's Changed Build changelog from commits when release body is a placeholder Replace release-drafter with commit-based draft-release workflow Add workflow_dispatch trigger to publish-to-flarum.yml Convert to TypeScript (audit fix) docs: add Floxum marketplace badges to README Full Changelog: https://github.com/ernestdefoe/respawn/compare/2.0.0...3.0.0 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.10 What's Changed style(hero): title above pills, left-aligned, more prominent style(hero): make discussion title bigger and bolder fix(hero): bump title selector specificity so size/weight actually apply style(hero): bring discussion title size down a notch style(hero): bring discussion title size down a bit more style(hero): shift decorations further right style(hero): shift decorations a bit further right Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.9...2.1.10 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.9 What's Changed style(hero): flush discussion-hero decorations to the far-right edge style(hero): 10px right inset on discussion-hero decorations Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.8...2.1.9 View release on GitHub
-
Social Groups for Flarum — support and discussion
social-groups v2.3.60 What's Changed No changes Full Changelog: https://github.com/ernestdefoe/social-groups/compare/v2.3.59...v2.3.60 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.8 What's Changed fix(sidebar): exclude primary button from nav-link wrap rules fix(sidebar): scope nav-widen to IndexPage-nav, not all .Page-sidebar Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.7...2.1.8 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.7 What's Changed style(hero): stop the two decoration glyphs from overlapping style(sidebar): widen desktop left nav so conference names aren't cut off Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.6...2.1.7 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.6 What's Changed style(discussion): revert column widening, center scrubber instead fix(tags): force TagsPage grid icon spacing over flarum/tags Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.5...2.1.6 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.5 What's Changed fix(build): drop CSS min()/calc(min()) that broke the LESS compile Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.4...2.1.5 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.4 What's Changed fix(tags): force tag-icon spacing over flarum/tags + widen mobile nav style(index): wider showcase-card content area on desktop style(discussion): wider right-column (controls + scrubber) on desktop Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.3...2.1.4 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.3 What's Changed fix(hero,tags): scoreboard counts + wide conference-glyph spacing Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.2...2.1.3 View release on GitHub
-
Social Groups for Flarum — support and discussion
social-groups v2.3.59 What's Changed No changes Full Changelog: https://github.com/ernestdefoe/social-groups/compare/v2.3.58...v2.3.59 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.2 What's Changed style(tags): bigger FA icons on tag pills + TagLabel Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.1...2.1.2 View release on GitHub
-
Social Groups for Flarum — support and discussion
social-groups v2.3.58 What's Changed No changes Full Changelog: https://github.com/ernestdefoe/social-groups/compare/v2.3.57...v2.3.58 View release on GitHub
-
Gridiron Nation — support and discussion
gridiron-nation 2.1.1 What's Changed style(widgets): bolder pigskin wash + white title text on widget headers style(widgets): black text outline on light-mode widget headers style(widgets): bump light-mode widget header outline from 1px to 2px Full Changelog: https://github.com/ernestdefoe/gridiron-nation/compare/2.1.0...2.1.1 View release on GitHub
-
Gridiron Nation — support and discussion
GridIron Nation 🏈 A Flarum 2 theme for college football fan forums. Crimson palette, DM Sans, stadium-scoreboard hero, showcase-card discussion list with clickable likes, ticket-stub post layout, live ESPN score ticker, recruit board, full dark mode. Renamed from ernestdefoe/fbsfb. v2.x ships as ernestdefoe/gridiron-nation (kebab-case, matches the rest of the ernestdefoe/* family). Upgraders: the package rename is handled by a settings-table migration that copies the legacy fbsfb.* / ernestdefoe-fbsfb.* rows under the new prefixes on first boot. Old rows stay in place so a rollback to v1 keeps working. ScreenshotsHomepage — Light Mode Homepage — Dark Mode Discussion Page — Light Mode Discussion Page — Dark Mode Screenshots are auto-generated by scripts/screenshots.mjs (puppeteer-core against flarum.test). Run after a UI change: node scripts/screenshots.mjs Features🏟 Stadium HeroScoreboard stats row — MEMBERS, TOPICS, POSTS, ONLINE, NEWEST. ONLINE opens a dropdown of who's around right now; NEWEST exposes the most recently registered user. Composer trigger — pill-shaped "Tell everyone what you're working on…" that opens the New Discussion composer. Reads as the primary affordance on the homepage. Pill nav row — rendered below the hero gradient (not inside it) so the chips read on the page background. Welcome hero forced visible — the per-visitor dismiss flag is honoured by Flarum core; we override it to keep the themed hero on for everyone, but the admin's empty-welcomeTitle escape hatch still hides it. 🃏 Showcase Discussion ListStandalone reimplementation built from Flarum 2 primitives — **no ramon/avocado dependency required**. Each row renders as a card with: Author avatar + name + relative time + tag pills + Reply button Bold title (highlighted on search hits) Two-line excerpt pulled from the OP Embedded last-reply preview chip (avatar + author + snippet) "See N other replies" overflow link Footer stats row (likes + replies, ICU-pluralised) Crimson yard-line accent strip down the left edge for unread / sticky rows; muted strip on read rows Locked rows get a subtle treatment so they don't disappear 📝 Post PlaycardPosts on the discussion page get card chrome with the same yard-line accent — crimson on the OP, muted on replies. Built **on top of Flarum 2's native Post grid** (no layout overrides), so it survives core updates and plays nicely with any extension that injects controls, reactions, or social-groups extras into the Post body. 📺 Live Scores TickerProxies ESPN's public college-football scoreboard endpoint — no API key required. Renders as a horizontal scrolling ticker above the discussion list, with up to 6 game cards sorted Live → Scheduled → Final. Pulsing green LIVE badge with quarter + clock detail. Winning score highlighted in crimson. Server-side cache: 60 seconds (visitors don't hammer ESPN). Refreshes client-side every 60 seconds. Graceful fallback — shows "Scores unavailable" if ESPN times out. ⭐ Top Recruits WidgetPulls live recruiting data from the ernestdefoe/recruiting extension when installed. Without that extension, the widget hides itself. Headshots via On3 photo enrichment. CollegeFootballData.com is the source of truth — set your API key in the GridIron Nation Recruiting admin panel. Crimson position badge (QB, WR, DT …), star rating, school slot. 🔥 Trending WidgetFive most-recently-active discussions straight from Flarum's store (no extra API round-trip). Rank 1–2 in crimson, rest in muted grey. Reply count + relative time per row. 🎯 Hero Tag DecorationAnchors up to two large, semi-transparent FontAwesome glyphs to the right side of every tagged discussion's hero, pulled from the secondary tag's icon (set per-tag in the Flarum Tags admin panel). Falls back to any tag with an icon if no secondary candidates exist — flat tag setups still get decoration. All three knobs (enabled, icon count, opacity 0–100) are admin-configurable. 🌙 Dark ModeFull [data-theme^="dark"] + system prefers-color-scheme: dark support. Surfaces shift from #0c0d10 through #16171c cards to #0f1013 inset areas (inputs, blockquotes, code blocks). Primary shifts to #e05c5c for legibility on dark backgrounds. Cascade-correct: dark block lives last in the stylesheet, no specificity fights. 🎨 Design SystemCrimson primary (#B22222) with #8B0000 dark + #d94f4f light variants. DM Sans Variable loaded from Google Fonts, replaces Flarum's default font throughout. 14 px organic border-radius on cards, dropdowns, modals, buttons, and inputs. CSS custom properties for --primary-color, --body-bg, --control-bg, --border-color, etc. — overlaying themes and ramon/colored compose cleanly. InstallationVia Composer php flarum migrate php flarum cache:clear``` ### Manual 1. Download or clone this repo into `extensions/ernestdefoe-gridiron-nation/` 2. Run `composer install` in the Flarum root 3. Run `php flarum migrate` 4. Run `php flarum cache:clear` 5. Enable **GridIron Nation** in the Flarum admin panel **JS is pre-compiled.** `js/dist/forum.js` and `js/dist/admin.js` are committed — no local build step needed for a vanilla install. --- ## Requirements | Dependency | Version | |---|---| | PHP | `^8.3` | | Flarum | `^2.0` | | guzzlehttp/guzzle | `^7.0` | ### Optional, but recommended | Extension | Why | |---|---| | `ernestdefoe/recruiting` | Powers the Top Recruits widget with live CFBD data + On3 photo headshots. Without it, the widget hides. | | `ramon/colored` | Per-tag color tinting on hero + discussion-list borders. GridIron Nation wires `data-colored-border=left/full` cleanly against the showcase card and yard-line accent. | | `flarum/realtime` | Live discussion-list / notification / typing-indicator updates over a websocket. We hide the "N updates available" banner so the list refreshes silently. | --- ## Admin Settings Under **Extensions → GridIron Nation** in the Flarum admin panel: | Setting | Default | Purpose | |---|---|---| | `widget_live_scores` | `true` | Show the Live Scores ticker | | `widget_trending` | `true` | Show the Trending sidebar widget | | `widget_top_recruits` | `true` | Show the Top Recruits sidebar widget | | `hero_deco_enabled` | `true` | Render FontAwesome glyph decoration on discussion heroes | | `hero_deco_icon_count` | `2` | 1 or 2 icons (2-icon mode requires ≥ 768 px viewport) | | `hero_deco_opacity` | `35` | Glyph opacity, 0–100 (set to `0` to hide without disabling) | --- ## API Endpoints | Method | Path | Description | |---|---|---| | `GET` | `/api/gn-live-scores` | ESPN scoreboard proxy (public, 60 s cache) | | `GET` | `/api/gn-online` | Users online in last 5 min (auth-aware, per-actor cache) | The retired `/api/gn-recruits` endpoints from v1.x have been removed — recruit data now comes from `ernestdefoe/recruiting`'s `/api/cfbd-recruits` endpoint when that extension is installed. --- ## Building JS from source ```cd js npm install npm run build # production npm run dev # watch mode``` --- ## Upgrading from `ernestdefoe/fbsfb` (v1.x) The composer rename forces Flarum to treat this as a fresh extension ID. To upgrade: ```composer remove ernestdefoe/fbsfb composer require ernestdefoe/gridiron-nation php flarum migrate # runs the settings copy migration php flarum cache:clear php flarum extension:enable ernestdefoe-gridiron-nation``` The settings migration copies every `fbsfb.*` and `ernestdefoe-fbsfb.*` row in your settings table to the new `gridiron-nation.*` and `ernestdefoe-gridiron-nation.*` prefixes. Legacy rows stay in place so a downgrade picks them back up cleanly. --- ## License MIT © [ernestdefoe](https://github.com/ernestdefoe)
-
Aurora — support and discussion
aurora 3.0.0 What's Changed Build changelog from commits when release body is a placeholder Replace release-drafter with commit-based draft-release workflow Add workflow_dispatch trigger to publish-to-flarum.yml Render the palette button as a labeled row inside the mobile drawer Gate the palette-button drawer override on the phone breakpoint Convert to TypeScript (audit fix) docs: add Floxum marketplace badges to README Fix 8 audit findings + back hero widgets with real forum stats fix(hero-widgets): render on IndexPage, not WelcomeHero debug(temp): log IndexPage.contentItems extender + heroWidgets() fix(build): upgrade to flarum-webpack-config@3 so externals work on F2 fix(hero-widgets): move tiles inside WelcomeHero.bodyItems fix: widen DiscussionListItem padding + make hero non-dismissable fix(dropdown): stop discussion-list cards clipping & burying per-item menus Full Changelog: https://github.com/ernestdefoe/aurora/compare/2.0.1...3.0.0 View release on GitHub
-
SEO for Flarum 2 — support and discussion
seo 2.0.8 What's Changed Fix 9 audit findings + add release-drafter and forum-publish workflows Full Changelog: https://github.com/ernestdefoe/seo/compare/2.0.7...2.0.8 View release on GitHub
-
SEO for Flarum 2 — support and discussion
SEO for Flarum 2 SEO meta tags, OpenGraph, Twitter Cards, JSON-LD structured data, a bundled sitemap.xml generator, and search-console verification for Flarum 2 — a maintained, v2-compatible continuation of v17development/flarum-seo. What's different from the upstreamThe upstream extension targets Flarum 1.x and the partial Flarum 2 port in v17development/flarum-seo left the API layer broken — it won't even boot on Flarum 2 because four core classes (AbstractSerializer, AbstractListController, AbstractShowController, AbstractDeleteController, BasicDiscussionSerializer, ForumSerializer) were removed when the core API was rewritten around Resource + Endpoint + Schema. This fork: Boots and runs on Flarum 2.x. Full v2-API migration: the v1 serializer + 4 controllers became one SeoMetaResource with declarative Endpoint::make() + Schema\* fields + writable allowlist. v1 ApiSerializer + ApiController extenders replaced with ApiResource(...)->fields() callbacks mounting fields onto DiscussionResource and ForumResource. Eager-load via endpoint(...)->eagerLoad('seoMeta') to prevent N+1 on the discussion list. Migration bug fix. Upstream's 2023_02_01_create_seo_meta_table.php used $table->string('object_type', 65535) which silently coerces to MEDIUMTEXT and crashes the subsequent unique-index migration with "BLOB/TEXT column used in key specification without a key length". Reduced to varchar(60) so the unique index lands on first run. Bundled sitemap.xml generator. Auto-detects fof/sitemap — if installed, our controller 404s and defers to fof's. Otherwise generates a single-file sitemap (capped at 50k URLs per the protocol limit) with <lastmod> from last_posted_at, <changefreq> derived from posting recency (hourly→yearly), and <priority> weighted by comment count + recency. Visibility-scoped to Guest so restricted tags / private groups never leak into the public sitemap. 6-hour cache via the framework cache. Search-console verification meta tags. Four admin-configurable settings: Google Search Console, Bing Webmaster, Yandex Webmaster, Pinterest. Tokens are charset-restricted before interpolation so an admin can't (intentionally or by typo) inject markup into the head. Defensive try/catch around the injector so a verification-tag bug can never block a page render. robots.txt always references the sitemap. Upstream only added the Sitemap: directive when fof-sitemap was enabled. Since we now always serve a sitemap (ours or theirs), the reference is unconditional. Hardened UploadSocialMediaImageController. Full §11 upload pipeline: size cap (4 MB), extension allowlist (png/jpg/jpeg/webp), finfo-based MIME re-detection, server-generated filename, PSR-3 logger wrapped in try/catch. SeoMetaResource::find() handles dash-separated polymorphic lookups. The admin frontend sends GET /api/seo_meta/discussions-42 to find-or-create the SeoMeta row for a subject; the v2 Resource's Show endpoint normally requires a numeric id, so find() intercepts the {type}-{id} form and short-circuits to SeoMeta::findByObjectTypeOrCreate. Allowlist restricts type to discussions/users/tags/pages. What it does on every page| Surface | What gets emitted | |---|---| | OpenGraph | og:site_name, og:type, og:title, og:description, og:url, og:image | | Twitter Card | twitter:card, twitter:title, twitter:description, twitter:image, twitter:url | | Robots directives | index/noindex, follow/nofollow, noarchive, noimageindex, nosnippet (per-route + per-row override via SeoMeta) | | JSON-LD Schema.org | DiscussionForumPosting (with publisher Organization + author Person), BreadcrumbList, WebSite (with SearchAction for the sitelinks search box). QAPage instead of DiscussionForumPosting when fof/best-answer flags the thread answered. | | Article metadata | article:published_time, article:updated_time | | Canonical | <link rel="canonical"> on every route | | Verification | google-site-verification, msvalidate.01, yandex-verification, p:domain_verify (when admin has configured the token) | Quick start php flarum migrate php flarum cache:clear``` Enable from **Admin → Extensions → SEO**. Open the SEO settings tab to configure: * **Default fallback meta** — site description, keywords, default social-media image. * **Per-row overrides** — open any discussion / tag / page and click the SEO drawer to override the auto-generated title / description / image / robots directives for that specific subject. * **Search Console Verification** — paste the verification tokens from Google / Bing / Yandex / Pinterest; meta tags appear on every page on save. ## Composer suggests * `flarum/tags` — when present, the `Tags` page renderer emits proper category metadata + breadcrumb schema. * `fof/pages` — when present, the `Pages` page renderer treats pages as `WebPage` schema with publisher attribution. * `fof/best-answer` — when present, discussions flagged as answered switch from `DiscussionForumPosting` to `QAPage` schema, which search engines render as a Q&A rich snippet. * `fof/sitemap` — when present, owns `/sitemap.xml` with sitemap-index pagination for forums larger than 50k URLs. We auto-defer to it. * `ernestdefoe/og-image` — when present, auto-generates per-discussion social images. ## Compatibility & status * **Flarum**: 2.0+ (requires `flarum/core: ^2.0`). * **PHP**: 8.3+. * **MySQL / MariaDB**: any version that supports `utf8mb4_unicode_ci` (every version Flarum supports). * **License**: MIT. ## License & credits [MIT](https://github.com/ernestdefoe/seo/blob/main/LICENSE.md). Upstream credit: `v17development/flarum-seo` — this extension is a maintained Flarum 2 fork. Core architecture (SeoMeta table, Page drivers, Content injector, Schema.org payload shape) preserved from upstream.
-
Theme Toggle — support and discussion
theme-toggle 3.0.6 What's Changed docs: add Floxum marketplace badges to README Full Changelog: https://github.com/ernestdefoe/theme-toggle/compare/3.0.5...3.0.6 View release on GitHub
-
Social Groups for Flarum — support and discussion
social-groups v2.3.57 What's Changed No changes Full Changelog: https://github.com/ernestdefoe/social-groups/compare/v2.3.56...v2.3.57 View release on GitHub
-
Cross References for Flarum 2
cross-references 3.0.0 What's Changed ci: auto-post releases to Flarum support site + draft release notes ci: drop publish-to-flarum workflow ci: restore publish-to-flarum workflow Build changelog from commits when release body is a placeholder Replace release-drafter with commit-based draft-release workflow Add workflow_dispatch trigger to publish-to-flarum.yml Convert to TypeScript (audit fix) docs: add Floxum marketplace badges to README Full Changelog: https://github.com/ernestdefoe/cross-references/compare/2.0.1...3.0.0 View release on GitHub
-
Flarum OG Image - Open Graph and Twitter meta tags
og-image v2.0.5 What's Changed No changes Full Changelog: https://github.com/ernestdefoe/og-image/compare/2.0.4...v2.0.5 View release on GitHub
-
CFB Recruiting Tracker - Live college football recruiting
recruiting 3.0.0 What's Changed Build changelog from commits when release body is a placeholder Replace release-drafter with commit-based draft-release workflow Add workflow_dispatch trigger to publish-to-flarum.yml Convert to TypeScript (audit fix) docs: add Floxum marketplace badges to README Full Changelog: https://github.com/ernestdefoe/recruiting/compare/2.0.15...3.0.0 View release on GitHub
-
ESPN CFB Ticker — Flarum 2 Extension
espn-cfb-ticker v2.0.6 What's Changed No changes Full Changelog: https://github.com/ernestdefoe/espn-cfb-ticker/compare/2.0.5...v2.0.6 View release on GitHub
-
Flarum Facebook Auto-Post
flarum-facebook-post v2.1.4 What's Changed No changes Full Changelog: https://github.com/ernestdefoe/flarum-facebook-post/compare/v2.1.3...v2.1.4 View release on GitHub