Changelog

Updates across all SWGOH Tools — mod analyzer, GAC scout, TW counter bot, and more.

v1.61

TW Bot July 17, 2026
  • fix A response race during redeploys could crash the bot and leave it stuck in a restart loop, dropping commands and autocomplete until it settled. Those races are now logged and ignored, and no Discord error can take the bot down.
  • improve Commands acknowledge instantly and fill in the result when the data is ready, so a slow database no longer makes a command time out.

v1.60

July 17, 2026
  • new New guide: Mod Priority, at /mod-priority. Which characters to mod first, the full seven-tier order the Grandivory Template uses, why it works, and how to apply it by hand or through the optimizer.
  • improve The Mod Analyzer page now explains how an analyzer differs from an optimizer: it grades the mods you have equipped instead of computing a loadout from your whole inventory, with a new FAQ on when to use each.
  • improve News articles tagged mods, omicron, datacron, or fleet now link to the matching tool.

v1.59

Mod Analyzer July 17, 2026
  • improve Wasted Speed got the map treatment. Instead of a flat table, each donor character is one row with their stranded mods as tiles. Tap a mod to see its full detail, set, primary, every secondary, and most importantly where it should go. If the swap plan already relocates it, the destination and reason show right there.
  • new A best-moves column next to the donor list shows where the swap plan sends these mods, grouped by how much speed the receiver gains, biggest wins first. One glance answers: if I only move three mods tonight, which three.
  • new Wasted Speed now hands mods straight to the Mod Recommender. The link under any mod opens the recommender with that exact mod prefilled and the results already ranked, so there is no re-typing a mod the tool already knows.
  • fix The Mod Recommender had Triangle and Circle swapped internally, so recommendations for those two slots were matched against the wrong primary stats. Triangle and Circle picks now rank correctly.
  • improve The Mods menu in the site nav is now a dropdown like ROTE: Mod Analyzer, Swap Plan, Wasted Speed, Mod Recommender, and the Grandivory Template all live under it.
  • improve The homepage tools section is organized into columns by area: GAC, ROTE, and Mods, with every sub-tool listed.
  • improve Grandivory Template: the units that fly with your Galactic Legends now rank right behind the GLs in a new GL team units tier, instead of scattering through the list. Your own GL squads come first, then the meta's.
  • improve Grandivory Template: tap any character to move it between tiers. Works on phones, where drag and drop never did.
  • improve Grandivory Template: your edits and filter settings now save on your device per ally code, so the list you tuned is still there next week. A Reset button returns to the generated order.
  • improve Grandivory Template: the page now shows when the meta ranking was computed and how many teams feed it, and characters show which team put them in their tier. A Refresh data button re-pulls everything.

v1.58

ROTE Planner July 16, 2026
  • improve CM Coverage is now a battle plan, not a checklist. Every combat mission, fleet, and special mission sits on one map grouped by day, and each mission is scored against that day's squad budget. Squads are alignment-locked, so Dark and Light are counted separately. Green runs, amber is owned but over budget, red is missing. Tap any mission for the detail, including exactly why an over-budget mission does not fit your roster.
  • improve Preload planning follows the real chain rules. Push a planet to a later day and it stays open, blocks the next planet in its lane until you star it, and shows on every day it is open. Push a lane too far and the last planets drop off the board at 0 stars instead of piling up on day 6. A preloaded planet keeps the relic floor from the day it opened, so a late Mandalore still runs on cheaper R8 squads.
  • improve Platoon Coverage got a two-column layout on desktop. The fill matrix keeps the left side, and a new what-to-farm column groups characters by how many platoon slots each one opens, biggest groups first. Mobile stacks the same content full width.
  • improve CM Coverage links now carry the ally code in the URL path, like /rote-cm-coverage/123456789, so plans are easy to share and bookmark. Old links with ?ally= still work.
  • fix Haven Medical Station's 50R-T sortie was asking you to own 50R-T. She is the enemy you fight there, not a squad requirement, so it now counts as a regular Dark side mission.
  • fix On phones, tapping the ROTE menu in the site nav now opens the submenu instead of navigating away.

v1.57

ROTE Planner July 9, 2026
  • new New tool: ROTE Platoon Coverage. Load your guild and see, zone by zone and platoon by platoon, which Rise of the Empire platoon slots your members can fill. It counts each character once per phase, so it never pretends one legacy character can fill three zones at the same time, and it ranks which characters to farm to unlock the most slots.
  • new New tool: ROTE Combat & Special Mission Coverage. Check every combat mission and special mission against your own roster or your whole guild. On your roster each mission shows ready, ready but hard, or not ready, and spells out which characters and relic levels you're missing. Ready but hard means you own the squad but it's a high-relic wave where owning it is not the same as clearing it.

v1.56

Grandivory Template July 8, 2026
  • new New tool: the Grandivory Template Builder. Enter your ally code and get a character template you import straight into the Grandivory Mods Optimizer, ordered by mod priority for your account. Galactic Legends first, then GL lifters, then the teams you actually field in GAC, then the rest of the current GAC meta, then fleet pilots, then everyone else.
  • new Tune the template before you download it. Drag characters between tiers to re-prioritize, remove ones you don't want, and search by name to find anyone fast.
  • new Exclude under-invested characters with a relic cutoff. Pick a minimum relic from 0 to 10 and anything below it, plus anything you don't own, drops out. You can also keep them in and rank them at the very bottom, so your whole roster sits behind your high-relic priorities.
  • improve The GAC meta the tool ranks from is scoped to the top 2,500 Kyber accounts and covers both 5v5 and 3v3. Only teams enough of those accounts actually run count as meta, so fringe defense placed by a handful of people no longer shows up.

v1.55

Analyzer July 6, 2026
  • improve The mod recommendation engine is simpler and stays current on its own. Recommendations come straight from what top-ranked players actually run, with generic role-based defaults filling in for characters that don't have enough data yet. The old hand-maintained optimizer list is retired, so there's one less option in the engine dropdown and character roles now come from the game itself instead of a list we had to keep updating.
  • improve The "what top players run" data now samples thousands of top Kyber (K1) players instead of about a hundred, so the recommended builds are steadier and the per-slot spread is more meaningful. The bar for a character to get a top-player build also dropped, so a wider set of toons show real builds instead of a generic template.
  • improve Speed targets are back, and they come from real data now. Each character shows the speed top players typically run, and the analyzer only flags your speed when a build is genuinely behind the pack (below the bottom quarter of top players), not just under the median. No more hand-set numbers to keep updating.

v1.54

Analyzer June 30, 2026
  • improve Mod priority kicks in a relic tier earlier. Relic 7 characters now count as high priority (was relic 8) and relic 6 counts as medium (was relic 7), so the swap plan starts protecting and feeding mods to characters sooner. Pinning a character still overrides it.

v1.53

GAC Scout June 23, 2026
  • fix The latest GAC season shows up again. A change to the GAC data source had stopped new seasons (like the current 5v5 season) from importing, so scout reports and meta teams were stuck a season behind. New seasons import on their own again, and the scout opens on whichever season is actually live.

v1.52

June 18, 2026
  • improve The mod swap plan is smarter about sets and secondaries. It avoids moves that break a completed set bonus, prefers ones that finish a set on the character receiving the mod, and won't trade away a mod's good secondaries just to chase a couple points of speed. The chains it suggests stop quietly downgrading a build.
  • improve The tools use the full width of your screen on desktop now, instead of a narrow centered column. The mod dashboard, ROTE board, and scout report all have room to breathe.
  • improve GAC Scout starts on whichever season is live, 5v5 or 3v3, instead of always defaulting to 5v5. You're scouting the right board without touching the dropdown.
  • fix The ally-code box on the home page was rejecting valid codes with a "please match the requested format" error. It takes your code now, with or without dashes or spaces.

v1.51

ROTE Planner June 15, 2026
  • fix Planets the planner decides to skip no longer vanish from the plan. The engine auto-skips the hard high-Day planets (Vandor, the Day-6 trio), and they used to disappear entirely with no way to get them back. They now show on their Day greyed out as "skipped," and you can click any of them to assign them to a Day — so you're in control of which planets you take, not just the engine.
  • improve Your hand-assigned plan now sticks. The engine's schedule is still the default, but once you start assigning planets to Days yourself, those choices are saved per guild and reload with the report — with a badge marking it as your plan and a one-click reset back to the engine's suggestion.
  • new New "Plan planets by Day" board. There's now a tucked-in drag-and-drop board: drag each planet onto the Day you want it to lock, or drop it in the Unused box to skip it. On touch, each card has a Day menu instead. When you preload a planet, the picker spells out the span it banks across (for example "D4 → D6") so it's clear which Day it opens and which Day it actually locks. Cleaner than editing planets one dropdown at a time, and the per-Day grid below still shows the result.
  • new Set a star cap per planet. Each planet on the board has a 1/2/3 star target that caps how hard the plan pushes deploys into it — handy when a planet is an easy 3-star and you'd rather send that effort somewhere it moves the needle. It caps effort, not the final result, and the freed budget flows to your other planets.

v1.50

Advisor June 15, 2026
  • fix Datacron coverage is back. The advisor can see your datacron inventory again — how many level-9 datacrons you have in each active set — after it went dark with the same data-source change that affected zetas. It now reads this straight from your roster, and uses it again to judge teams that lean on a specific datacron.

v1.49

Advisor June 15, 2026
  • fix Zeta and omicron recommendations are back. They went quiet after a data-source change — the advisor now reads which abilities you've already learned straight from your roster, so "next zeta?" and your omicron priorities work again, ranked by how much they matter for the modes you play.

v1.48

Advisor June 15, 2026
  • improve "Who should I work on?" now aims higher for developed accounts. If you have several Galactic Legends or a deep relic-7+ roster, the advisor uses relic 6 as the recommendation floor instead of relic 5, since relic 5 is below what matters once you're building toward datacrons. Newer accounts still get the relic 5 target.

v1.47

Advisor June 15, 2026
  • fix The advisor no longer states something false about your roster when it can't load a data source. Zeta, omicron, and datacron info comes from an external service, and when that's unreachable the advisor used to say things like "you've applied all your zetas" or imply you own no datacrons. It now tells you that info is temporarily unavailable and answers from general knowledge instead.

v1.46

Advisor June 13, 2026
  • improve Better answers once you have your first Galactic Legend. The advisor now has a mid-game playbook for the "I've got a GL, where do I go now?" stretch: when deepening your roster beats rushing a second GL, how assault battles and Era levels run as parallel tracks alongside a GL chase, and when to actually pull the trigger on GL number two. So a "should I pause my GL chase?" question gets a real call instead of a generic to-do list.

v1.45

Advisor June 13, 2026
  • new The advisor now knows your assault-battle and Era-Battle teams. Ask which ones to set up and it sorts every battle into what you can field right now, what you're a unit or two short on (naming exactly who to star up or unlock), and what to skip until you've built the faction. It also frames them the way the community does: the rewards are extra monthly income and each battle is a one-and-done you can sim after a single 3-star, so they're a quick, high-value detour rather than a long grind.

v1.44

Advisor June 13, 2026
  • improve The advisor sticks to the question you actually asked. If you ask about a specific mode it doesn't have detailed data for (like assault battles), it now answers that mode from general knowledge and points at your relevant units, instead of falling back to the generic "who should I work on" list. And if you're weighing a decision, like whether to pause a GL chase to deepen your roster, it gives you a straight take on that trade-off first rather than sidestepping it.

v1.43

Advisor June 12, 2026
  • new The advisor now matches the current Conquest feats against your roster. Ask which feats you can do and it splits them into the ones you can clear right now (you own the units or have the faction depth), the ones you're a unit or two short on, and the ones to skip because you don't own the required character. It also calls out the feats with no unit requirement at all, like the buff/debuff objectives and the "win without using X" restrictions, so it never tells you a freebie is blocked. Updates automatically with each new Conquest.

v1.42

Advisor June 12, 2026
  • new The advisor now knows the current Conquest feats. Ask how to get a feat and it quotes the exact objective (defeat 250 enemies on the Challenge Path, gain Foresight 200 times, win 20 battles with a full Pirate squad) instead of guessing the numbers, then points you at the squads or factions that can clear it. The feat list refreshes with each new Conquest.
  • new Coliseum advice now names the live era and its bosses. It knows the current era marquees (which ones to chase and which you've already built), the rotating boss lineup, and that pushing your loaned unit's era level matters more than the exact comp. Updates automatically when the era rotates.

v1.41

Advisor June 12, 2026
  • fix "What are my worst mods" always gives you a real answer now. On accounts where none of your meta or GAC characters are badly modded, the advisor used to come up empty and tell you to go dig through your roster yourself. It now names your lowest-scoring built characters instead, so you always get something to act on.
  • fix Recommendations for characters under 7 stars now lead with the star-up. A 6-star toon already at its relic target used to show a confusing no-op like "R5 → R5". Now it just says farm to 7 stars, which is the actual next step.
  • improve Coliseum advice stays on era units. The advisor no longer mixes in GAC squad pairing stats when answering a Coliseum question, since those are full-squad numbers that don't mean anything in a loaned-unit mode. It sticks to the era units you own plus the current meta.

v1.40

Mod Analyzer June 11, 2026
  • new Lock a character's mods so the tool leaves them alone. Hit the lock button on any character in the list (or in their detail panel) and they drop out of the swap plan, wasted speed, mod fixes, and the mod recommender. Built for the toons you never want to touch, like your raid or meta teams. Locks save per ally code and carry across every analyzer page; unlock any time to bring them back.
  • new Mod recommendations now come from what top players actually run. The headline pick for each character is the most common choice among the top Kyber GAC players' real mods, and every slot shows the full spread, like "84% Protection, 7% Crit Damage, 7% Health". There's rarely one correct build, so instead of flagging your mods as wrong, the tool shows you the distribution and lets you decide. Your current primary is highlighted so you can see where you stand.
  • improve This replaces the old hand-maintained list that was behind the off recommendations some of you flagged (Malak wanting health instead of protection, JML defaulting to a speed arrow, and others). The open-source Grandivory/MCW77 optimizer build is now just a fallback for characters without enough top-player data.
  • improve Softened the per-mod primary flag from "want X" to "meta: X". It's a guideline, not a rule, and plenty of rosters reasonably run something different for a specific matchup or build.
  • improve The swap plan now says up front that it's a manual guide you follow in the game. The tool only reads your roster and suggests moves; it never touches your mods, and clicking a step doesn't do anything in-game.

v1.39

ROTE Planner June 10, 2026
  • improve Guild reports now carry the guild in the URL path (/rote-planner/report/<guild>) instead of a query string, so each guild's report is a clean, shareable, bookmarkable link. Older query-string links still open the right report, and the Refresh button still reloads the latest roster.

v1.38

Site June 1, 2026
  • improve Search optimization based on a fresh look at how the site shows up on Google. Character page titles now lead with "Best Mods for [Character] (SWGOH)" instead of "[Character] Mods Guide" — the new pattern matches what every top-ranking competitor (swgoh.gg, gaming-fans, allclash) uses for the same long-tail queries, and the audit showed roughly fifty distinct "[character] mods" searches we were appearing on but not getting clicked. Mod Analyzer title now includes the word "Optimizer" explicitly since that's the actual searched term that other tools dominate; the differentiator is scoring rather than auto-optimization. ROTE Planner title leads with "Plan Your Rise of the Empire" to anchor it as SWGOH-specific when Google would otherwise interpret "rote" as "route". News articles now show a tool callout both above and below the body — most readers scroll past the top placement, and the bottom placement catches engaged readers right when they're deciding what to do next

v1.24

May 22, 2026
  • improve Site pages migrated to Tailwind for styling. No visual change. The old site stylesheet went from 1080 lines to 234 as orphaned rules came out, and the styling layer is now unified with the tool apps (mod analyzer, GAC scout, ROTE planner) which already used Tailwind. The remaining 234 lines are the JS-applied sticky-shell chip styles, the CSS variable block, and a handful of rules still referenced by markdown-rendered news bodies

v1.23

ROTE Planner May 19, 2026
  • new Recent TB results auto-import on each Refresh. Every time you load a guild, the planner pulls the most-recent Rise of the Empire result and appends it to the calibration history (deduplicated by end date). Over the course of a few TBs the model self-calibrates without anyone typing a star count. You can still add older results manually for immediate calibration, and remove anything you don't want included. The data source only exposes one most-recent result per fetch, so the planner accumulates over time rather than backfilling a full history in one shot

v1.22

ROTE Planner May 19, 2026
  • improve Combat mission coverage now models cross-CM character allocation. The prior calculation treated each combat mission independently — a member with five R9 dark characters appeared in every dark-side R9 mission's coverage tally as if they could field all of them at once. In reality, a character used in one combat mission cannot be in another the same day, so the displayed coverage was overstating thin-roster guilds where R9 character count is the bottleneck. The new per-day allocator assigns each member's characters to open missions in priority order (required-character missions first, then pool-gated, then generic alignment fills), tracking which characters are committed per day. Coverage on the second and third generic combat missions in a zone now shows lower numbers than the first, reflecting that the same five characters cannot do three missions simultaneously
  • improve Per-mission coverage table now shows the worst day each mission is open as the headline percentage — the binding constraint when a mission is open across multiple days. For zones with preloaded locks, a per-day breakdown shows where character budget ran thin, so officers can see at a glance which day to preload around. A new thin-roster days diagnostic above the table reports how many members ran short on character budget in each day, signaling that R-floor character count rather than roster breadth is the gating factor
  • improve Capital ship combat missions are now tracked as a separate budget from ground squads. Owning a capital ship at 7★+ contributes to every fleet mission the ship gates without competing with ground combat missions — fleet missions and ground missions don't share characters in actual play, and the model now reflects that

v1.21

ROTE Planner May 18, 2026
  • improve Star projections retuned against a second guild's TB run. The prior model was systematically hot on per-day 5 and per-day 6 combat missions — the Vandor / Kafrene / Malachor / Mandalore zones came in at 65 to 85 percent of the predicted combat mission yield while the early days landed within a star or two of observed. Three small adjustments correct the bias: generic R9 combat missions take a tighter difficulty discount (32 percent of paper coverage, was 40 percent), squad-gated and fleet combat missions at R8 and R9 now also apply an enemy-difficulty discount (90 percent at R8, 70 percent at R9) because having the gating squad on paper is not the same as clearing the actual late-day enemy waves, and a per-day yield scale knocks day 4 down 3 percent, day 5 down 8 percent, day 6 down 12 percent to capture the schedule-fatigue and dropped-attempts pattern visible in the observed data. Net effect: projections come in roughly one star tighter on Normal, with the cut concentrated in the late days where the prior model was hot rather than flattening early days where it landed well
  • data Per-combat-mission coverage diagnostics now reflect the same enemy-difficulty discount that drives the projection. Vandor Jabba R9 reads ~70 percent of squad-on-paper coverage, Haven 50R-T R8 reads ~90 percent, and Malachor Inquisitorius R9 multiplies the trio-coverage by 0.7 — making the surfaced numbers consistent with what the projection actually credits each zone

v1.20

ROTE Planner May 4, 2026
  • improve Combat mission yield is now computed per-CM instead of as a smooth aggregate. Each zone's score sums its individual missions weighted by guild squad coverage, so the roster diagnostics can show a per-CM breakdown — Wookiee at Kashyyyk, Aphra crew at Dathomir, Inquisitorius R9 at Malachor — and you see exactly which fight is gating each zone instead of one rolled-up percentage. Replaces over-confident predictions like 'Malachor 3★ via deploys' with the honest read of 'only 4% of your guild can field the R9 Inq squad'
  • improve Reach view restructured into three cards at the top: Now (current ceiling), Next star (smallest +1★ unlock), Stretch project (multi-month bundled work). Click Next star to see the schedule that emerges with the +1M GP step applied, including which zones reshuffle their lock days. The full 4-tier ladder is still available in a collapsed details section below for officers who want the deeper breakdown
  • improve Recent TB results input under roster diagnostics. Enter your last few TB ★ totals and the planner scales every prediction by median(your scores) / model.Normal so the displayed ceiling matches your guild's actual track record instead of the abstract calibration anchor. Shows both calibrated and raw model values on each path card so you can see the gap
  • improve Schedule discipline tier now surfaces what the recommended schedule actually does — per-day star totals (D1: 9★ · D2: 9★ · D3: 7★) and sector-group callouts ('Sector 3: 10★ via preload Kashyyyk to D4'). Replaces the empty 'no actions identified' state with concrete tactical descriptions of why preloads and lock-day choices matter
  • improve Generic combat missions at relic-9 zones (Malachor, Death Star, Hoth, Scarif) apply a 0.4× difficulty discount when computing zone yield. The previous calculation assumed any 5 R9 chars on paper could clear the actual combat — calibration against real TB results showed this overstates by 60%+ on late-day content where the enemies actually fight back
  • improve Phase labels in the planner UI read as 'Day' to match in-game terminology. Engagement editor inputs, zone preload arrows, sector callouts, and the day breakdown all use D1..D6 instead of the prior P1..P6
  • fix Doctor Aphra Dathomir combat mission was reporting 0% guild coverage due to a squad-pool sizing bug — the gate required Aphra plus 4 fillers from a 2-character pool, structurally impossible. Now correctly checks Doctor Aphra + BT-1 + 0-0-0 with 2 generic fill slots, returning realistic coverage that matches observed TB participation

v1.17

May 1, 2026
  • improve News feed now tags Order 66, Jedi Vanguard, Knightfall, Speeder Bike, and Endor Pursuit posts as raid items. The previous regex only matched 'naboo' and 'krayt', so the Order 66 launch post and any Speeder Bike Pursuit coverage were untagged and didn't show up under /news/tag/raid
  • data Internal raid catalog at shared/src/raids.ts covering all four modern raids plus the three legacy raids. Encodes the 7-tier scaffold (G12 / R1 / R3 / R5 / R7 / R8 / R9 with 1.5× / 2× / 3× / 4× / 6× / 9× / 12×) once and reuses it for Order 66, Battle for Naboo, Krayt Dragon Hunt, and Speeder Bike Pursuit. Order 66 and Naboo sourced directly from CG's EA forum announcements; Krayt and Speeder Bike cross-referenced from community guides since CG's old kit reveals on the pre-2024 forums domain are no longer recoverable. Heroic Pit, Heroic Tank Takedown, and Sith Triumvirate are flagged isLegacy=true with empty allowedRoster (no tier gating, no readiness check), kept as informational stubs for historical reference without modern tier structure. Foundation for a future raid-readiness tool

v1.16

April 30, 2026
  • improve Twitter cards now emit twitter:title and twitter:description directly instead of relying on og:* fallback. Previews on shares were rendering with default fallback copy on Twitter clients that didn't pick up the og:* tags reliably; explicit tags fix that and let the Twitter copy diverge from the OG copy in the future without a layout change
  • fix Filter and search variants of /news (?q=, ?source=, ?tag=, page>1) now ship robots noindex,follow. Canonical was already folding them into the plain /news index but they stayed crawlable, which wasted crawl budget on permutations Google would discard anyway. The dedicated /news/tag/<tag>, /news/source/<source>, /news/author/<slug> landing pages have their own canonicals and stay indexable

v1.15

April 29, 2026
  • improve All site renderers (layout, components, news, character pages, tools, landing, changelog, about, character-index) ported from template-literal string concatenation to Hono JSX. Same SSR output, same SEO surface — auto-escapes children so the manual esc() helpers are gone, attributes are type-checked, and components compose as functions instead of stitched strings. Void elements now self-close (<link/>, <meta/>) which is valid HTML5 and didn't change rendered behavior
  • fix EA-forum dev posts that exceeded 4000 chars (kit reveals routinely run 30k+) were truncated at ingest, so multi-character kit reveals only got 11% of their source through the pipeline and the resulting summaries were 240 words for posts that had material for 2400+. Cap raised to 80k; affected rows backfilled. New Republic Kit Reveals Pt 1 went from 240 to 2490 words, all three reveals fully covered
  • fix Long dev-post summaries were truncating mid-content when the per-call output budget was too small, and the fallback path persisted partial wrapper text into the rendered article. Output budget raised; the parse path now treats malformed output as a failure and retries on the next pass instead of persisting it
  • fix News cron was stalling for hours when an upstream service returned 503 'high demand' responses. Retry path now falls through to a backup endpoint after two failed attempts, and the per-call timeout raised from 15s to 60s for larger jobs. Cron is back on its hourly cadence

v1.14

April 28, 2026
  • new News feed got a real index page. Featured row at the top shows the most recent post from each source (Capital Games, Discord, Reddit). Posts grouped under date headings instead of one flat list. Pinned banner mechanism for editorial overrides (config in app/src/site/news/pinned.ts)
  • new Search across all news. New input on /news posts to /news?q=, ILIKE across title, tight summary, and full summary. % and _ in the query string get backslash-escaped so they match literally
  • new Canonical landing pages for tags, sources, and authors. /news/tag/<tag>, /news/source/<source>, /news/author/<slug>. Tag chips and source pills now link to these instead of query-string filters. Sitemap auto-emits one entry per tag and per author with a public post
  • new Taxonomy hub at /news/tags. Source cards with post counts, tag cloud sized by frequency, author list with source pill and count. Linked from the news header
  • new Weekly roundup at /news/weekly. Last 7 days grouped by date with a counts-by-source summary line at the top
  • new Item pages now show related posts (up to 4 sharing a tag) and a 'Try it in <Tool>' callout when a tag matches the tool map (rote/tb → ROTE Planner, gac → GAC Scout, gl/relic/kit-reveal → Mod Analyzer, tw → TW Counter Bot)
  • new Updated badge on item pages when a Reddit post was edited at the source after first ingest. Reddit fetcher now captures the edited timestamp; new source_updated_at column also feeds JSON-LD dateModified
  • new Filter combination on tag and source pages. The search/filter form on /news/tag/<tag> carries the tag implicitly so you can narrow further by source without losing it

v1.13

April 27, 2026
  • new News feed at /news. Hourly local watcher pulls from r/SWGalaxyOfHeroes (Capital Games developer posts auto-tagged) plus configured Discord channels, filters for relevance with 10-prior-message context, and produces 500-1000 word summaries with the original source link preserved on every item. RSS at /news.xml. Each item gets a NewsArticle JSON-LD entry plus BreadcrumbList; sitemap auto-includes items over an hour old

v1.12

April 26, 2026
  • improve Mod-analyzer sub-pages (swap-plan, wasted-speed, unused-mods) got per-page How-it-works + FAQ blocks. Crawler-visible word count went from 39-150 to 481-635 per page, each with its own FAQPage JSON-LD. Google had flagged all three as 'Crawled - currently not indexed' due to thin content; this should clear that on the next re-crawl
  • improve Mod grade scoring now uses per-roll efficiency when available. Two mods with the same speed total but different roll quality (one with three high rolls, one with five mid rolls) used to grade identically. Now the high-quality one grades higher. Roll efficiency comes from swgoh.gg, which exposes the per-roll 0 to 1 efficiency Comlink does not return
  • data Wired up the official swgoh.gg API as a complement to Comlink. Auth via SWGOH_GG_API_KEY env var (x-gg-bot-access header), 1 req per second rate limit. Used for datacron inventory, per-roll mod efficiency, and the ability catalog. Comlink remains the primary live source for everything else

v1.10

April 25, 2026
  • new Open Graph images. Six 1200x630 PNGs (homepage + each tool) generated by a Playwright + HTML template script (pnpm og). Reddit, Discord, and Twitter previews now actually render instead of breaking on 404. Twitter card auto-upgrades to summary_large_image when a tool's ogImage is set
  • new Tool splashes inject a How-it-works + Features + FAQ section below the app UI. FAQPage JSON-LD emits for rich-result eligibility. Crawler-visible word count on the analyzer, ROTE planner, and GAC scout splashes went from under 200 to around 500-800
  • new Character pages got a proper H1, a prose intro paragraph that explains the recommended setup, and a related-characters block (eight picks scored by role + priority + GL match). BreadcrumbList JSON-LD on every character page so Google can render the breadcrumb in SERPs
  • improve Analyzer sub-pages (swap-plan, wasted-speed, unused-mods, guide) now have unique titles, descriptions, and canonical URLs matching the intent each page targets. They were in the sitemap with only a generic title before, which Google treats as thin
  • improve GAC Scout had no H1 anywhere on the page. Promoted the welcome heading to a keyword-rich H1. Mod Analyzer H1 was a generic brand label stuck in the sticky header; demoted it to a link and made the welcome heading the real H1
  • improve Tailwind dropped from cdn.tailwindcss.com (~300KB JIT runtime, render-blocking) to a compiled 19KB CSS file. About 16x smaller, no longer render-blocking. Build now runs the Tailwind CLI before tsc; pnpm dev:tailwind watches
  • improve /scout 301s to /gac-scout for symmetry with the existing /analyzer and /guild-tools legacy redirects. applicationCategory in tool JSON-LD unified to GameApplication; was inconsistently UtilityApplication
  • fix Homepage was referencing /og/home.png in og:image but the file did not exist. Every Reddit/Discord/Twitter share rendered a broken preview. Same for the mod-analyzer / rote-planner / gac-scout / tw-counter-bot OG image refs

v1.9

April 2026
  • new Homepage rebuild: FAQ section, popular-character inline links, recent-changes strip, tool cards expanded with specific-number bullets, Why-these-exist restructured with per-tool H3s
  • new Homepage structured data: WebSite SearchAction (sitelinks searchbox), Person schema for E-E-A-T, ItemList of SoftwareApplication entries, FAQPage
  • new Open Graph image meta tags wired up with a /og/* static route. Drop a 1200x630 PNG at app/src/site/og/home.png to populate the social card; twitter:card auto-upgrades to summary_large_image when the image is set
  • improve URL rename: /guild-tools to /rote-planner and /analyzer to /mod-analyzer. More keyword-rich URLs; 301 redirects on legacy paths preserve inbound links and query strings
  • improve Unified sticky header pattern across mod-analyzer, gac-scout, and rote-planner. Title on left, controls pushed right. ROTE planner loader got a proper topbar in place of the centered card
  • improve Umami consolidated from three property IDs to one site-wide ID. End-to-end cross-tool journey analytics in a single dashboard
  • new Umami custom events on the homepage (home-tool-click, home-hero-cta, home-popular-char, home-secondary-click, home-browse-characters) and on the ROTE planner (rote-load-start, view-rote-report, rote-tier-select). Fills the view-unused-mods gap in the analyzer
  • fix ROTE planner Load button did nothing. Bare module specifier in the rote.js import was rejected by browsers; switched both entry HTMLs to ./rote.js
  • fix Mod analyzer sub-tool cards (swap-plan, wasted-speed, unused-mods) 404'd on click. Leading-slash absolute paths bypassed the base tag and landed at the origin root. Fixed the links and also the back-link + pushState URL construction now uses document.baseURI so paths stay mount-aware
  • improve Footer expanded with primary tools and characters link. hreflang en + x-default and og:site_name added site-wide
  • fix Planet backdrops on the ROTE report were missing in prod. The CSS url was origin-absolute (/planets/...) which bypasses the <base href="/rote-planner/"> tag and 404s at the site root. Switched to a relative path so it resolves under the mount

v1.8

April 2026
  • new Umami analytics wired up across the site
  • new SEO pass: site name, meta tags, Open Graph across all pages
  • improve About page and tools page reworked
  • improve Page restructuring for clearer navigation between tools
  • fix Trailing slash 404s and self-referencing tool CTAs
  • fix External URLs from env vars: strip trailing slashes, ensure protocol prefix
  • improve Data service reliability: startup logging for DATA_SERVICE_URL, cleaner env handling
  • data Character meta cleanup: role defs, language pass
  • data GAC Scout data cleanup

v1.7

April 2026
  • new Fallback primaries: fix finder now suggests the next-best primary when the ideal isn't available (e.g. Offense % triangle if no Crit Damage is on a lower-priority char)
  • new Global changelog on the site, covering all tools
  • new Comparison section on the mod analyzer tool page and in How It Works, stacking us up against HotUtils and Grandivory's
  • improve Fix list sort: exact primary fixes rank above fallbacks, which rank above speed-only
  • improve Fallback fixes show up in amber in the UI so you can tell them apart from exact matches

v1.7.5

TW Bot March 29, 2026
  • new TW Counter Bot: Discord bot for recording and querying TW attack results
  • new /tw-attack slash command: log a defense leader, offense leader, win/loss, and notes
  • new /tw-counter slash command: list all recorded counters against a defense leader with win rate
  • new Fuzzy character autocomplete on attack inputs (excludes ships, 25 results)
  • new Per-guild Postgres persistence with command logging
  • data Seeded with known TW counters from chat imports

v1.6

GAC Scout March 18, 2026
  • new Postgres database backend: replaces JSON file storage with proper JSONB-backed persistence
  • new Seed script supports direct Postgres insertion via --db / --db-only flags
  • improve Health endpoint now returns player count from database

v1.5

Analyzer March 15, 2026
  • improve Mod fix suggestions now show what the donor character receives in return: no more guessing what happens to the source character's slot

v1.4

March 15, 2026
  • new GAC Scout app: scout opponents before setting defenses and planning attacks
  • new Team detection engine: identifies ~25 meta teams from a player's roster with readiness ratings
  • new Weakness detection: finds undergeared key characters, bad mods on important teams, missing team members
  • new Roster comparison: side-by-side GL ownership, team advantages, mod quality, and key character gaps
  • new GAC season stats extraction: pulls W/L record, offensive/defensive wins, full clears, undersized wins from Comlink
  • data 25 meta team definitions: all 10 GLs plus 15 non-GL meta teams (Naboo, Baylan, Starkiller, DR, JKR, etc.)
  • improve Shared library expanded with team-detection and scout modules for reuse across apps

v1.3

Analyzer March 15, 2026
  • improve Comlink retry with exponential backoff: automatically retries on 502/503/504/429 errors (up to 3 attempts)
  • improve Request timeouts on all Comlink calls:15s for player data, 10s for leaderboard, 5s for metadata
  • improve Graceful error responses:API returns friendly JSON errors instead of crashing when Comlink is unreachable
  • improve Community Popular engine is now non-fatal: if leaderboard fetch fails, analysis continues with other engines
  • improve Frontend error messages updated for production
  • fix GAC leaderboard API: switched from leaderboardType 4 to type 6 (top-50 by league/division), fetches Kyber D1 + D2 for ~100 players
  • fix Ally code validation: server now rejects invalid codes before hitting Comlink (must be exactly 9 digits)
  • improve Structured Comlink logging: all API calls logged with endpoint, status, and timing
  • new Documentation:SWGOH mod system, Comlink API, game concepts, and engine system reference docs

v1.2

Analyzer March 15, 2026
  • new Community Popular engine: grades your mods against what the top 100 GAC players actually equip
  • new GAC leaderboard integration: automatically fetches top Kyber players from live leaderboard
  • new About page, How It Works page, Guide page, Changelog page
  • new Landing page quick-start steps (enter code, check grades, fix mods)
  • improve Auto engine now falls back through: Curated > Community Optimizer > Community Popular > Role Defaults
  • new Swap Plan export: copy plan as text for Discord/guild chat
  • improve Footer navigation added across all pages
  • data Fixed 175+ character roles in community meta to match in-game data
  • data Fixed curated overrides: JML (tank), GL Leia (tank), GL Hondo (support), Third Sister (tank), Baylan Skoll (tank)
  • fix Game units not loading: units moved to segment 3, expanded search range to segments 1-8
  • fix Empty segment arrays no longer break unit loading early
  • fix Mod slot mapping:Circle and Triangle (slots 4/5) were swapped, causing wrong slot names in swap plans and incorrect primary stat validation

v1.1

Analyzer March 2026
  • new Compare mode: side-by-side mod comparison with another player
  • new Engine dropdown with curated, community optimizer, and role default options
  • new Mod Recommender page: input a mod, find the best character for it
  • new Wasted Speed page: find high-speed mods on low-priority characters
  • new Swap Plan page: ordered swap chains with backfill steps
  • new Mod Fix Finder: primary mismatches and speed upgrade suggestions
  • improve Per-character mod quality score (0-100)
  • improve Community speed scores: OmegaScore, modQ, HotUtils Speed Score
  • data 316 characters with community mod recommendations from Grandivory/MCW77
  • data 37 hand-curated character overrides for GLs and key meta characters

v1.0

March 2026
  • new Initial release
  • new Live mod analysis via SWGOH Comlink
  • new Character grading system (S through F)
  • new Grade distribution dashboard
  • new Fuzzy character search with detail panel
  • new Role-based mod templates (attacker, tank, support, healer)
  • new Railway deployment with Comlink service