1// Developed by Paramjot Singh (https://github.com/Param2596) 2// Copyright (c) 2025 Paramjot Singh. All rights reserved. 3 4// Changelog data and functionality for Retro Terminal 5 6const CHANGELOG_DATA = { 7 "1.0.0": { 8 "date": "2025-01-XX", 9 "type": "major", 10 "features": [ 11 "ð¨ Six retro terminal themes (Amber, Green, Blue, White, Red, Soft)", 12 "ð¤ Multiple AI personas (Iris, Luna, Syntra, Captain Nova)", 13 "ð File upload support for Gemini Vision", 14 "ð¾ Chat history save/reload functionality", 15 "âï¸ Comprehensive settings panel", 16 "ð Secure API key management", 17 "ð± Fully responsive mobile design", 18 "â¨ï¸ Terminal command system", 19 "ðµ Sound effects and CRT animations", 20 "ð§ AI memory system for persona context" 21 ], 22 "improvements": [ 23 "â¡ Optimized typing animation performance", 24 "ð¯ Enhanced keyboard navigation", 25 "ð Real-time status indicators" 26 ], 27 "fixes": [ 28 "ð Fixed markdown rendering in chat history", 29 "ð§ Improved file upload error handling", 30 "âï¸ Resolved theme switching glitches" 31 ] 32 }, 33 "1.0.1": { 34 "date": "2025-07-19", 35 "type": "minor", 36 "features": [ 37 "Each persona now has a random welcome message", 38 "Added a changelog to the terminal", 39 "Added two new personas (Atlas and Captain Nova)", 40 ] 41 } 42 // Future versions can be added here 43}; 44 45// Function to get changelog for a specific version 46function getVersionChangelog(version) { 47 return CHANGELOG_DATA[version] || null; 48} 49 50// Function to get all changelog versions 51function getAllVersions() { 52 return Object.keys(CHANGELOG_DATA).sort((a, b) => { 53 // Sort versions in descending order (newest first) 54 const aParts = a.split('.').map(Number); 55 const bParts = b.split('.').map(Number); 56 57 for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) { 58 const aPart = aParts[i] || 0; 59 const bPart = bParts[i] || 0; 60 61 if (aPart !== bPart) { 62 return bPart - aPart; 63 } 64 } 65 return 0; 66 }); 67} 68 69// Function to format changelog for terminal display 70function formatChangelogForTerminal(version = null) { 71 let output = "RETRO TERMINAL - CHANGELOG\n"; 72 output += "â".repeat(50) + "\n\n"; 73 74 const versions = version ? [version] : getAllVersions(); 75 76 for (const ver of versions) { 77 const changelog = getVersionChangelog(ver); 78 if (!changelog) continue; 79 80 // Version header 81 output += `VERSION ${ver} - ${changelog.date}\n`; 82 output += "â".repeat(30) + "\n"; 83 84 // Type indicator 85 const typeIndicator = { 86 'major': 'ð MAJOR RELEASE', 87 'minor': '⨠MINOR UPDATE', 88 'patch': 'ð§ PATCH' 89 }; 90 output += `${typeIndicator[changelog.type] || 'ð¦ RELEASE'}\n\n`; 91 92 // Features 93 if (changelog.features && changelog.features.length > 0) { 94 output += "NEW FEATURES:\n"; 95 changelog.features.forEach(feature => { 96 output += ` ${feature}\n`; 97 }); 98 output += "\n"; 99 } 100 101 // Improvements 102 if (changelog.improvements && changelog.improvements.length > 0) { 103 output += "IMPROVEMENTS:\n"; 104 changelog.improvements.forEach(improvement => { 105 output += ` ${improvement}\n`; 106 }); 107 output += "\n"; 108 } 109 110 // Bug fixes 111 if (changelog.fixes && changelog.fixes.length > 0) { 112 output += "BUG FIXES:\n"; 113 changelog.fixes.forEach(fix => { 114 output += ` ${fix}\n`; 115 }); 116 output += "\n"; 117 } 118 119 output += "â".repeat(50) + "\n\n"; 120 } 121 122 output += "Type '/help' for available commands\n"; 123 output += "Visit https://github.com/Param2596/retro-terminal for more info"; 124 125 return output; 126} 127 128// Function to get latest version 129function getLatestVersion() { 130 const versions = getAllVersions(); 131 return versions.length > 0 ? versions[0] : null; 132} 133 134// Function to check if there are updates (placeholder for future use) 135function hasUpdates(currentVersion) { 136 const latest = getLatestVersion(); 137 return latest && latest !== currentVersion; 138} 139 140// Export functions for use in other modules 141if (typeof module !== 'undefined' && module.exports) { 142 module.exports = { 143 CHANGELOG_DATA, 144 getVersionChangelog, 145 getAllVersions, 146 formatChangelogForTerminal, 147 getLatestVersion, 148 hasUpdates 149 }; 150}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.