* feat(#1928): remove sunset gemini cli runtime, redirect to antigravity Google sunset Gemini CLI on 2026-06-18; Antigravity CLI is its official successor (already a first-class GSD runtime). Remove the gemini runtime from the enum (16->15), aliases, labels, config-home fragment, install path, converters (convertClaudeToGemini{Markdown,Toml,Agent}, convertSlashCommandsToGeminiMentions), capability descriptor, gemini-extension.json, RULESET.GEMINI.*, and the interactive menu (renumbered, no gap). --gemini now prints an explicit deprecation notice citing the 2026-06-18 sunset and redirects to --antigravity (no silent alias, per the issue's Hyrum's-Law rejection). Antigravity is preserved throughout: its GEMINI.md contextFileName, .gemini/antigravity config home, the shared convertGeminiToolName/claudeToGeminiTools tool vocabulary, and the 'gemini' hookEvents dialect it declares. GEMINI.md retargeted as Antigravity's context file. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore(#1928): backfill changeset PR number (#1996) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * chore(#1928): drop Gemini CLI from issue templates (review nit) Removes the sunset Gemini CLI runtime from the two GitHub issue-template runtime lists that the removal PR missed, per @davesienkowski's review nit: - feature_request.yml: 'Applicable runtimes' checkbox (a user could otherwise request a feature for a runtime GSD no longer supports) - bug_report.yml: 'Runtime' dropdown + the stale ~/.gemini/settings.json retrieval-help line Leaves the post-removal templates fully consistent with the Antigravity redirect. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -642,33 +642,10 @@ describe('issue #2517: RUNTIME_PROFILE_MAP single source of truth (finding #16)'
|
||||
});
|
||||
});
|
||||
|
||||
// ─── Issue #2612: gemini runtime tier resolution ─────────────────────────────
|
||||
describe('issue #2612: runtime "gemini" — Gemini tier resolution', () => {
|
||||
let tmpDir;
|
||||
beforeEach(() => { isolateHome(); tmpDir = createTempProject(); resetRuntimeWarningCaches(); });
|
||||
afterEach(() => { cleanup(tmpDir); restoreHome(); });
|
||||
|
||||
test('opus tier -> gemini-3.1-pro-preview', () => {
|
||||
writeConfig(tmpDir, { runtime: 'gemini', model_profile: 'quality' });
|
||||
assert.strictEqual(resolveModelInternal(tmpDir, 'gsd-planner'), 'gemini-3.1-pro-preview');
|
||||
});
|
||||
|
||||
test('sonnet tier -> gemini-3-flash', () => {
|
||||
writeConfig(tmpDir, { runtime: 'gemini', model_profile: 'balanced' });
|
||||
assert.strictEqual(resolveModelInternal(tmpDir, 'gsd-roadmapper'), 'gemini-3-flash');
|
||||
});
|
||||
|
||||
test('haiku tier -> gemini-2.5-flash-lite', () => {
|
||||
writeConfig(tmpDir, { runtime: 'gemini', model_profile: 'budget' });
|
||||
assert.strictEqual(resolveModelInternal(tmpDir, 'gsd-codebase-mapper'), 'gemini-2.5-flash-lite');
|
||||
});
|
||||
|
||||
test('gemini: effort resolves universally but render param is null (no wire param)', () => {
|
||||
writeConfig(tmpDir, { runtime: 'gemini', model_profile: 'quality' });
|
||||
const eff = resolveEffortInternal(tmpDir, 'gsd-planner');
|
||||
assert.strictEqual(renderEffortForRuntime('gemini', eff).param, null);
|
||||
});
|
||||
});
|
||||
// #1928: the "gemini" runtime tier-resolution suite was removed with the
|
||||
// sunset Gemini CLI runtime. The gemini-3.x models remain in the catalog for
|
||||
// Antigravity (which runs on the Gemini backend and carries its own
|
||||
// runtimeTierDefaults); Antigravity's tier resolution is covered elsewhere.
|
||||
|
||||
// ─── Issue #2612: qwen runtime tier resolution ───────────────────────────────
|
||||
describe('issue #2612: runtime "qwen" — Qwen tier resolution', () => {
|
||||
@@ -811,20 +788,6 @@ describe('issue #2612: partial override merge for new Group A runtimes', () => {
|
||||
beforeEach(() => { isolateHome(); tmpDir = createTempProject(); resetRuntimeWarningCaches(); });
|
||||
afterEach(() => { cleanup(tmpDir); restoreHome(); });
|
||||
|
||||
test('gemini.opus override wins; sonnet and haiku use built-in defaults', () => {
|
||||
writeConfig(tmpDir, {
|
||||
runtime: 'gemini',
|
||||
model_profile: 'quality',
|
||||
model_profile_overrides: {
|
||||
gemini: { opus: 'gemini-3-ultra' },
|
||||
},
|
||||
});
|
||||
// opus is overridden
|
||||
assert.strictEqual(resolveModelInternal(tmpDir, 'gsd-planner'), 'gemini-3-ultra');
|
||||
// sonnet not overridden — built-in default (quality -> sonnet for gsd-codebase-mapper)
|
||||
assert.strictEqual(resolveModelInternal(tmpDir, 'gsd-codebase-mapper'), 'gemini-3-flash');
|
||||
});
|
||||
|
||||
test('qwen.opus override wins; sonnet and haiku use built-in defaults', () => {
|
||||
writeConfig(tmpDir, {
|
||||
runtime: 'qwen',
|
||||
|
||||
Reference in New Issue
Block a user