Skip to content

⚠️ breaking: rename 'solution' missions → 'fixer', solutions/ → fixes/#4033

Merged
clubanderson merged 1 commit intomainfrom
rename/solution-to-fixer
Apr 1, 2026
Merged

⚠️ breaking: rename 'solution' missions → 'fixer', solutions/ → fixes/#4033
clubanderson merged 1 commit intomainfrom
rename/solution-to-fixer

Conversation

@clubanderson
Copy link
Copy Markdown
Collaborator

Summary

  • Renames MissionClass type value from 'solution' to 'fixer'
  • Renames all KB paths from solutions/ to fixes/ (API queries, card install map, landing page, etc.)
  • Renames components: SolutionCardFixerCard, SolutionDefinitionPanelFixerDefinitionPanel
  • Renames analytics functions: emitSolution*emitFixer*, GA4 events ksc_solution_*ksc_fixer_*
  • Renames variables: solutionMissionsfixerMissions, filteredSolutionsfilteredFixers, etc.
  • Updates Go backend comments + test paths
  • Updates Netlify functions + analytics dashboard
  • Updates E2E tests + user-facing strings

28 files changed across frontend, backend, Netlify, and tests.

Breaking change

Requires companion PR kubestellar/console-kb#1828 to be merged first (renames solutions/fixes/ directory in the KB repo).

What stays unchanged

  • "Resolution" system (saved outcomes) — different concept, untouched
  • "Mission Control — Multi-Cluster Solutions Orchestrator" subtitle
  • SudokuGame "solution" (unrelated)
  • GitHub issue template "Proposed Solution" field (generic template)

Test plan

  • npm run build passes
  • go build ./... passes
  • Mission Browser "Fixes" tab loads from fixes/index.json
  • Card install map points to correct fixes/ KB paths
  • Analytics events fire with ksc_fixer_* names

Rename MissionClass type value from 'solution' to 'fixer' and all
API/KB paths from solutions/ to fixes/ for consistency with the
UI tab label "Fixes".

Changes across 28 files:
- MissionClass type: 'solution' → 'fixer'
- Component renames: SolutionCard→FixerCard, SolutionDefinitionPanel→FixerDefinitionPanel
- All KB paths: solutions/ → fixes/ (cardInstallMap, MissionLandingPage, MissionSidebar, etc.)
- Analytics: emitSolution* → emitFixer*, GA4 events ksc_solution_* → ksc_fixer_*
- Variable renames: solutionMissions → fixerMissions, filteredSolutions → filteredFixers
- Go backend comments + test paths updated
- Netlify functions + analytics dashboard updated
- E2E tests updated
- User-facing strings updated

Companion PR: kubestellar/console-kb#1828

Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Copilot AI review requested due to automatic review settings March 31, 2026 23:53
@kubestellar-prow kubestellar-prow bot added the dco-signoff: yes Indicates the PR's author has signed the DCO. label Mar 31, 2026
@kubestellar-prow
Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign clubanderson for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@netlify
Copy link
Copy Markdown

netlify bot commented Mar 31, 2026

Deploy Preview for kubestellarconsole ready!

Name Link
🔨 Latest commit bd78a72
🔍 Latest deploy log https://app.netlify.com/projects/kubestellarconsole/deploys/69cc5e85887eb40008a26bd8
😎 Deploy Preview https://deploy-preview-4033.console-deploy-preview.kubestellar.io
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions
Copy link
Copy Markdown
Contributor

👋 Hey @clubanderson — thanks for opening this PR!

🤖 This project is developed exclusively using AI coding assistants.

Please do not attempt to code anything for this project manually.
All contributions should be authored using an AI coding tool such as:

This ensures consistency in code style, architecture patterns, test coverage,
and commit quality across the entire codebase.


This is an automated message.

@kubestellar-prow kubestellar-prow bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Mar 31, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Renames “solution” missions to “fixer” across the console, including KB path changes from solutions/fixes/, UI/components naming, and analytics event names.

Changes:

  • Updates mission type model + KB path plumbing to use fixes/ and MissionClass='fixer'.
  • Renames UI components/strings from Solution → Fix/Fixer across Mission Browser and Mission Control.
  • Renames analytics emitters/events and updates analytics dashboard + E2E coverage to match.

Reviewed changes

Copilot reviewed 28 out of 28 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
web/src/lib/missions/types.ts Renames MissionClass union member to 'fixer'.
web/src/lib/missions/matcher.ts Updates terminology in matcher docs/comments.
web/src/lib/cards/cardInstallMap.ts Updates KB install map paths to fixes/....
web/src/lib/analytics.ts Renames Solution analytics emitters/events to Fixer equivalents.
web/src/components/missions/SubmitToKBDialog.tsx Updates submission defaults/paths/labels to fixer + fixes/.
web/src/components/missions/ShareMissionDialog.tsx Updates shared markdown section heading to “Fix”.
web/src/components/missions/MissionLandingPage.tsx Updates preferred/fallback mission fetch paths to fixes/....
web/src/components/missions/MissionBrowser.tsx Renames UI, state, imports, root browse path, and strings to Fix/Fixer.
web/src/components/missions/ImproveMissionDialog.tsx Updates referenced mission file path to fixes/....
web/src/components/missions/FixerCard.tsx Renames SolutionCard component to FixerCard.
web/src/components/missions/browser/VirtualizedMissionGrid.tsx Updates docs/comments to “fixes”.
web/src/components/missions/browser/missionCache.ts Switches index path to fixes/index.json and maps classes to 'fixer'.
web/src/components/mission-control/useMissionControl.ts Updates Mission Control planning prompt/wording to “fix”.
web/src/components/mission-control/types.ts Updates Mission Control type docs to “fix”.
web/src/components/mission-control/PayloadGrid.tsx Updates empty-state copy to “fix”.
web/src/components/mission-control/MissionControlDialog.tsx Renames panel import and updates phase copy to “fix”.
web/src/components/mission-control/FlightPlanBlueprint.tsx Updates KB path conventions to fixes/....
web/src/components/mission-control/FixerDefinitionPanel.tsx Renames SolutionDefinitionPanel to FixerDefinitionPanel + copy updates.
web/src/components/layout/mission-sidebar/MissionSidebar.tsx Updates direct-import KB paths/index fallback to fixes/....
web/src/components/cards/multi-tenancy/missionLoader.ts Updates hardcoded legacy mission paths to fixes/....
web/src/components/agent/AgentSelector.tsx Updates install guide mission lookup paths to fixes/....
web/public/analytics.html Updates funnel label/key from solution → fixer viewed.
web/netlify/functions/missions-file.mts Updates function docs example path to fixes/....
web/netlify/functions/missions-browse.mts Updates function docs example path to fixes.
web/netlify/functions/analytics-dashboard.mts Updates GA4 query + response field for fixer viewed.
web/e2e/nightly/mission-explorer-import.spec.ts Updates nightly import test to fetch fixes/index.json.
pkg/api/handlers/missions.go Updates backend comments/examples to fixes/....
pkg/api/handlers/missions_test.go Updates handler tests to use fixes paths.

Comment on lines +80 to 82
/** Path to the pre-built fixes index (single file, ~400KB) */
const FIXES_INDEX_PATH = 'fixes/index.json'

Copy link

Copilot AI Mar 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing the index path to fixes/index.json can leave returning users stuck with a restored localStorage cache that still contains metadata.source paths under solutions/.... Because restoreCacheFromStorage() sets fixesDone=true, the cache fetch is skipped until TTL expiry, and subsequent mission loads will 404. Consider bumping MISSION_CACHE_STORAGE_KEY (cache versioning) or adding a migration/invalidation step when restored entries start with solutions/ (or when the expected index root changes).

Copilot uses AI. Check for mistakes.
@clubanderson
Copy link
Copy Markdown
Collaborator Author

🔄 Auto-Applying Copilot Code Review

Copilot code review found 0 code suggestion(s) and 1 general comment(s).

Also address these general comments:

  • web/src/components/missions/browser/missionCache.ts (line 82): Changing the index path to fixes/index.json can leave returning users stuck with a restored localStorage cache that st

Push all fixes in a single commit. Run cd web && npm run build && npm run lint before committing.


Auto-generated by copilot-review-apply workflow.

@github-actions github-actions bot mentioned this pull request Apr 1, 2026
@clubanderson clubanderson merged commit b80b422 into main Apr 1, 2026
29 of 35 checks passed
@kubestellar-prow kubestellar-prow bot deleted the rename/solution-to-fixer branch April 1, 2026 00:17
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 1, 2026

Thank you for your contribution! Your PR has been merged.

Check out what's new:

Stay connected: Slack #kubestellar-dev | Multi-Cluster Survey

clubanderson added a commit that referenced this pull request Apr 1, 2026
Updated emitSolutionViewed → emitFixerViewed in the YAML/MD parser
flow within MissionBrowser.tsx. All other changes auto-merged cleanly.

Signed-off-by: Andrew Anderson <andy@clubanderson.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dco-signoff: yes Indicates the PR's author has signed the DCO. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants