mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-23 03:24:42 -07:00
feat(core): implement lifecycle tracking issues for features
- Add GitHub issue template for tracking feature maturity (Alpha/Beta/GA). - Add issueUrl field to FeatureSpec metadata. - Update /features UI to display tracking issue links. - Update documentation with requirement for lifecycle trackers.
This commit is contained in:
@@ -130,12 +130,22 @@ export const FeaturesList: React.FC<FeaturesListProps> = ({ features }) => {
|
||||
</Box>
|
||||
</Box>
|
||||
{feature.description && (
|
||||
<Box marginLeft={2} marginBottom={1}>
|
||||
<Box marginLeft={2}>
|
||||
<Text dimColor color={theme.text.primary}>
|
||||
{feature.description}
|
||||
</Text>
|
||||
</Box>
|
||||
)}
|
||||
{feature.issueUrl && (
|
||||
<Box marginLeft={2} marginBottom={1}>
|
||||
<Text color={theme.text.accent}>
|
||||
Tracker: <Text dimColor>{feature.issueUrl}</Text>
|
||||
</Text>
|
||||
</Box>
|
||||
)}
|
||||
{!feature.issueUrl && feature.description && (
|
||||
<Box marginBottom={1} />
|
||||
)}
|
||||
</Box>
|
||||
))}
|
||||
</Box>
|
||||
|
||||
@@ -131,6 +131,7 @@ describe('FeatureGate', () => {
|
||||
since: '0.1.0',
|
||||
until: undefined,
|
||||
description: 'Feature 1',
|
||||
issueUrl: undefined,
|
||||
});
|
||||
expect(feat2).toEqual({
|
||||
key: 'feat2',
|
||||
@@ -139,6 +140,27 @@ describe('FeatureGate', () => {
|
||||
since: '0.2.0',
|
||||
until: '0.3.0',
|
||||
description: 'Feature 2',
|
||||
issueUrl: undefined,
|
||||
});
|
||||
});
|
||||
|
||||
it('should include issueUrl in feature info', () => {
|
||||
const gate = DefaultFeatureGate.deepCopy();
|
||||
gate.add({
|
||||
featWithUrl: [
|
||||
{
|
||||
preRelease: FeatureStage.Alpha,
|
||||
issueUrl: 'https://github.com/google/gemini-cli/issues/1',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const info = gate.getFeatureInfo();
|
||||
const feat = info.find((f) => f.key === 'featWithUrl');
|
||||
|
||||
expect(feat).toMatchObject({
|
||||
key: 'featWithUrl',
|
||||
issueUrl: 'https://github.com/google/gemini-cli/issues/1',
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -65,6 +65,10 @@ export interface FeatureSpec {
|
||||
* Description of the feature.
|
||||
*/
|
||||
description?: string;
|
||||
/**
|
||||
* Link to the Lifecycle Tracking Issue on GitHub.
|
||||
*/
|
||||
issueUrl?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,6 +81,7 @@ export interface FeatureInfo {
|
||||
since?: string;
|
||||
until?: string;
|
||||
description?: string;
|
||||
issueUrl?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -216,6 +221,7 @@ class FeatureGateImpl implements MutableFeatureGate {
|
||||
since: latestSpec.since,
|
||||
until: latestSpec.until,
|
||||
description: latestSpec.description,
|
||||
issueUrl: latestSpec.issueUrl,
|
||||
};
|
||||
})
|
||||
.sort((a, b) => a.key.localeCompare(b.key));
|
||||
|
||||
Reference in New Issue
Block a user