PageSourceSearch

https://iristerminal.vercel.app/

html iristerminal.vercel.app collected 2026-10-03 07:07:58 UTC 8,719 bytes, 170 lines download raw bytes

1<!DOCTYPE html>
2<!--
3    Developed by Paramjot Singh (https://github.com/Param2596)
4    Copyright (c) 2025 Paramjot Singh. All rights reserved.
5-->
6<html lang="en" >
7<head>
8    <meta charset="UTF-8">
9    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
10    
11    <!-- Cache prevention for development -->
12    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
13    <meta http-equiv="Pragma" content="no-cache">
14    <meta http-equiv="Expires" content="0">
15    
16    <!-- SEO Meta Tags -->
17    <title>Retro Terminal – A Nostalgic AI Chat Experience</title>
18    <meta name="description" content="A retro-styled terminal interface for modern AI chat with theme support, chat history, and local API key usage. Experience the nostalgic feel of old-school computing." />
19    <meta name="keywords" content="retro terminal, AI chat, vintage computing, terminal interface, custom API key, theme support, private chatbot" />
20    <meta name="author" content="Paramjot Singh, https://github.com/Param2596" />
21    <meta name="robots" content="index, follow" />
22    <link rel="canonical" href="https://iristerminal.vercel.app/" />
23    <meta name="theme-color" content="#2c2c2c" />
24    <link rel="icon" type="image/png" href="assets/icon.png">
25    <link rel="icon" href="/favicon.ico" type="image/x-icon" />
26    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
27    <!-- PWA removed -->
28    <!-- Open Graph -->
29    <meta property="og:title" content="Retro Terminal – A Nostalgic AI Chat Experience" />
30    <meta property="og:description" content="A retro-styled terminal interface for modern AI chat with theme support, chat history, and local API key usage. Experience the nostalgic feel of old-school computing." />
31    <meta property="og:url" content="https://iristerminal.vercel.app/" />
32    <meta property="og:type" content="website" />
33    <meta property="og:image" content="https://gemini-app-lake.vercel.app/preview.png" />
34    <!-- Twitter Card -->
35    <meta name="twitter:card" content="summary_large_image" />
36    <meta name="twitter:title" content="Retro Terminal – A Nostalgic AI Chat Experience" />
37    <meta name="twitter:description" content="A retro-styled terminal interface for modern AI chat with theme support, chat history, and local API key usage. Experience the nostalgic feel of old-school computing." />
38    <meta name="twitter:image" content="https://gemini-app-lake.vercel.app/preview.png" />
39    <meta name="google-site-verification" content="pw6FRQQdebSTq_FFL-Pmm31okHKYSCklqEYw2dMAMNE" />
40    <!-- Structured Data -->
41    
41<script type="application/ld+json">
42    {
43      "@context": "https://schema.org",
44      "@type": "WebSite",
45      "url": "https://iristerminal.vercel.app/",
46      "name": "Retro Terminal – A Nostalgic AI Chat Experience",
47      "description": "A retro-styled terminal interface for modern AI chat with theme support, chat history, and local API key usage. Experience the nostalgic feel of old-school computing."
48    }
49    </script>
49
50    <link rel="stylesheet" href="css/styles.css">
51    <!-- Load the Google GenAI library -->
52    
52<script async src="https://ai.google.com/js/api.js"></script>
52
53    <!-- Vercel Speed Insights -->
54    
54<script>
55      window.si = window.si || function () { (window.siq = window.siq || []).push(arguments); };
56    </script>
56
57    
57<script defer src="/_vercel/speed-insights/script.js"></script>
57
58    <!-- Vercel Analytics -->
59    
59<script>
60      window.va = window.va || function () { (window.vaq = window.vaq || []).push(arguments); };
61    </script>
61
62    
62<script defer src="/_vercel/insights/script.js"></script>
62
63    <!-- Sitemap -->
64    <link rel="sitemap" type="application/xml" title="Sitemap" href="https://iristerminal.vercel.app/sitemap.xml" />
65</head>
66<body>
67    <div id="crt-container" class="crt-on">
68        <div id="terminal-header">
69            <div id="terminal-title">RETRO TERMINAL v1.0.1</div>
70            <div id="terminal-controls">
71                <a href="features.html" class="header-button" target="_blank" rel="noopener noreferrer">EXPLORE</a>
72                <div class="select-wrapper">                    <select id="theme-selector">
73                        <option value="amber">AMBER</option>
74                        <option value="green">GREEN</option>
75                        <option value="blue">BLUE</option>
76                        <option value="white">WHITE</option>
77                        <option value="red">RED</option>
78                        <option value="soft">SOFT</option>
79                    </select>
80                </div>
81            </div>
82        </div>
83        
84        <!-- Product Hunt badge removed -->
85        
86        <div id="chat-container">
87            <div id="chat-output">
88                <div class="message bot-message">SYSTEM: Terminal online. Awaiting input...<span class="typing-cursor"></span></div>
89                <!-- Chat messages will appear here -->
90            </div>
91            <div id="status-bar">
92                <span id="status-message">SYSTEM READY</span>
93                <span id="memory-usage">MEM: 640K</span>
94                <span id="clock">00:00:00</span>
95            </div>
96            <!-- Replace your current input-area div with this improved version -->
97            <div id="input-area">
98                <input type="text" id="user-input" placeholder="Type your message..." autofocus>
99                <div class="mobile-controls">
100                    <div id="file-upload-container">
101                        <label for="file-upload" class="file-upload-btn" title="Upload file">
102                            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
103                                <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path>
104                                <polyline points="17 8 12 3 7 8"></polyline>
105                                <line x1="12" y1="3" x2="12" y2="15"></line>
106                            </svg>
107                        </label>
108                        <input type="file" id="file-upload" multiple>
109                    </div>
110                    <button id="send-button">SEND</button>
111                </div>
112                <div id="file-preview-container"></div>
113            </div>
114        </div>
115        
116
117    </div>
118
119    <!-- Add these before your other scripts -->
120    
120<script src="https://cdn.jsdelivr.net/remarkable/1.7.1/remarkable.min.js"></script>
120
121    
121<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/highlight.min.js"></script>
121
122    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.8.0/styles/monokai.min.css">
123
124    <!-- Config file should be loaded first -->
125    
125<script src="js/config.js"></script>
125
126    
127    <!-- Changelog data -->
128    
128<script src="js/changelog.js"></script>
128
129    
130    <!-- Main scripts -->
131    
131<script src="js/api.js"></script>
131
132    
132<script src="js/terminal.js"></script>
132
133    
133<script src="js/app.js"></script>
133
134    
135    <!-- Development helper script -->
136    
136<script>
137        // Add console helper for development only
138        if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {
139            console.log('%c🔧 DEVELOPMENT MODE ACTIVE', 'background: #ff6b35; color: white; padding: 4px 8px; border-radius: 4px; font-weight: bold;');
140        }
141    </script>
141
142    
143    <!-- PWA KILL-SWITCH Script -->
144    
144<script>
145    if ('serviceWorker' in navigator) {
146        window.addEventListener('load', async () => {
147            try {
148                // Register the KILL-SWITCH (does nothing except self-destruct)
149                const reg = await navigator.serviceWorker.register('/sw.js', {updateViaCache:'none'});
150                
151                // For good measure, explicitly unregister any service workers
152                const regs = await navigator.serviceWorker.getRegistrations();
153                await Promise.all(regs.map(r => r.unregister()));
154                
155                // Clear all caches
156                const cacheNames = await caches.keys();
157                await Promise.all(cacheNames.map(name => caches.delete(name)));
158                
159                const isDev = window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1';
160                if (isDev) {
161                    console.log('PWA completely removed and all caches cleared');
162                }
163            } catch (err) {
164                console.error('Service worker cleanup failed:', err);
165            }
166        });
167    }
168    </script>
168
169</body>
170</html>

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.