- {viewMode === "normal" - ? "Shows only security essentials - perfect for learning gittuf basics" - : "Shows all technical details - for experienced users and developers"} -
- {viewMode === "normal" && hiddenCount && hiddenCount > 0 && ( -- ✨ {hiddenCount} technical fields hidden to keep things simple -
- )} --
-
- • Expiration dates and security status -
- • User roles and permissions -
- • Security policies and rules -
- • Trust relationships -
-
-
- • All security information from Beginner mode -
- • Schema versions and metadata types -
- • Key details and technical fields -
- • Raw data structures -
{step.title}
-{step.description}
-- 💡 Tip: {step.tip} -
-Ready to Explore Security Metadata
-- Enter a GitHub repository URL above or try our interactive demo to start learning about gittuf security policies -
- -- Learn about Git repository security through interactive visualization -
-{steps[currentStep].title}
-{steps[currentStep].description}
-{steps[currentStep].details}
-- Analyzing {commits.length} commits across {selectedFile} -
-{error}
-{event.description}
-{event.details}
-- Impact: {event.impact} -
-No significant security events detected
-{trend.metric}
-{trend.description}
- {trend.metric === "Expiration Health" && ( -- {trend.current > 0 ? `${trend.current} days remaining` : "Expired"} -
-No trends available with current data
-- Analyzing changes in {selectedFile} • {getTimeDifference()} -
-
- {baseCommit.hash.substring(0, 8)}
-
- {baseCommit.message}
-
- {compareCommit.hash.substring(0, 8)}
-
- {compareCommit.message}
-Added
-Removed
-Modified
-Unchanged
-
-
- Security Impact Assessment
-
- {error}
- -Select two commits to compare security metadata
-{error}
- -Select two commits to compare security metadata
-{error}
- -{baseCommit.hash.substring(0, 8)}
-
- {new Date(baseCommit.date).toLocaleDateString()}
-
- {compareCommit.hash.substring(0, 8)}
-
- {new Date(compareCommit.date).toLocaleDateString()}
-
- Select two commits to compare in tree view
-Select two commits to view change timeline
-Change Timeline
-{baseCommit.hash.substring(0, 8)}
- to
- {compareCommit.hash.substring(0, 8)}
- No changes detected between these commits
-{change.path}
- Modified field
-Before:
-{JSON.stringify(change.oldValue, null, 2)}
- After:
-{JSON.stringify(change.newValue, null, 2)}
- Outcome:
-{getChangeOutcome(change)}
-Added new field
-{JSON.stringify(change.newValue, null, 2)}
- Outcome:
-{getChangeOutcome(change)}
-Removed field
-{JSON.stringify(change.oldValue, null, 2)}
- Outcome:
-{getChangeOutcome(change)}
-Single commit selection
-Compare two commits
-Select multiple commits for analysis
-Base:
- {compareCommits.base ? ( -
- {compareCommits.base.hash.substring(0, 8)}
-
- {compareCommits.base.message}
- Compare:
- {compareCommits.compare ? ( -
- {compareCommits.compare.hash.substring(0, 8)}
-
- {compareCommits.compare.message}
- - Select multiple commits for security metadata analysis -
-{commit.message}
-
- {commit.hash.substring(0, 8)}
-
-
- {commit.author} • {new Date(commit.date).toLocaleDateString()}
-
- No commits match your search
-{insight.title}
-{insight.description}
-{rec.title}
-{rec.description}
-- Recommended Action: {rec.action} -
-No recommendations needed - your security looks good!
-Added Elements
-{added} new elements were added to the security metadata.
- {added > 0 && ( -Removed Elements
-{removed} elements were removed from the security metadata.
- {removed > 0 && ( -Changed Elements
-{changed} elements were modified in the security metadata.
- {changed > 0 && ( -Unchanged Elements
-{unchanged} elements remained the same between versions.
-
-
- Security Impact Analysis
-
-
- Detailed Change Analysis
- - {significantChanges.length > 0 ? ( -{change.path}
- Before:
-{String(change.oldValue)}
- After:
-{String(change.newValue)}
- Added:
-{String(change.newValue)}
- Removed:
-{String(change.oldValue)}
- No significant changes found
-{data.path}
- {formatJsonValue(data.oldValue)}
- {formatJsonValue(data.newValue)}
- {formatJsonValue(data.value)}
- No JSON data to display
-{data.path}
- {formatJsonValue(data.value)}
-
-
- Structured Tree View: {selectedFile}
-
-
- {selectedCommit.hash.substring(0, 8)}
-
- {selectedCommit.message}
-Error Loading Tree View
-{error}
- -Tree View Ready!
-- Select a commit to explore the security metadata in a familiar tree structure - perfect for beginners! -
-- {repository.type === "remote" ? repository.path : `Local: ${repository.path}`} -
-Refresh repository data
-Root Security Policy
-- Contains trust anchors, keys, and role definitions that form the foundation of repository security. -
-Target Security Rules
-- Contains specific security policies and rules that control who can modify different parts of the - repository. -
-
-
- Interactive Graph View: {selectedFile}
-
-
- {selectedCommit.hash.substring(0, 8)}
-
- {selectedCommit.message}
-Error Loading Visualization
-{error}
- -Ready to Visualize!
-- Select a commit from the "Browse Commits" tab to see an interactive graph of the security metadata -
-{currentStepData.title}
-- Step {currentStep + 1} of {storySteps.length} -
-What's happening here?
-{currentStepData.description}
-💡 {currentStepData.explanation}
-{fixture.result}
-- {fixture.result === "allowed" - ? "This change can proceed safely" - : "This change needs more approvals"} -
--
- {fixture.reasons.map((reason, i) => (
-
- - - {reason} - - ))} -
Trust Flow Visualization
-
-
- Root
-
- The ultimate authority that can delegate permissions
-
-
- Role
-
- A permission set that protects specific files or operations
-
-
- Attestation
-
- A signed approval tied to a specific change
-
-
- Threshold
-
- Minimum number of signatures required for approval
-- 💡 Click on person nodes in the graph to simulate their signatures -
-- 🎯 Using your custom organization configuration with {customConfig.people.length} people and{" "} - {customConfig.roles.length} roles -
-- Policy Verification Simulator -
-- Test whether gittuf policy permits your proposed changes -
-