Domain dev-api.passage.software
United States
RAILWAY
Software information

railway-edge

tcp/443 tcp/80

  • Open service 66.33.22.240:443 · dev-api.passage.software

    2026-01-09 11:27

    HTTP/1.1 200 OK
    Accept-Ranges: bytes
    Access-Control-Allow-Origin: *
    Cache-Control: public, max-age=0
    Content-Length: 6656
    Content-Type: text/html; charset=utf-8
    Date: Fri, 09 Jan 2026 11:27:06 GMT
    Etag: W/"1a00-19b9caed470"
    Last-Modified: Thu, 08 Jan 2026 08:17:42 GMT
    Server: railway-edge
    X-Powered-By: Express
    X-Railway-Edge: railway/us-east4-eqdc4a
    X-Railway-Request-Id: 1VumCvwiRXOWPymFAax-fw
    Connection: close
    
    Page title: SuperSpell
    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>SuperSpell</title>
        <link rel="stylesheet" href="viz_style.css">
    </head>
    
    <body>
        <div class="header">
            <h1>SuperSpell</h1>
            <div id="statusBox">Ready</div>
        </div>
        <div>
            <label>
                <input type="checkbox" id="promptSelect" />
                Advanced Editing
            </label>
    
    
            <label for="model">Model:</label>
    
            <select name="model" id="model">
                <option value="gpt-5.2">gpt-5.2</option>
                <option value="gpt-5.1">gpt-5.1</option>
                <option value="gpt-5-mini">gpt-5-mini</option>
                <option value="gpt-5-nano">gpt-5-nano</option>
                <option value="gpt-4.1-mini" selected>gpt-4.1-mini</option>
                <option value="gpt-4.1">gpt-4.1</option>
            </select>
    
        </div>
    
    
        <div class="main-content">
            <!-- Input box -->
            <div class="text-box">
                <h2>Input</h2>
                <div id="inputContainer" class="text-container" contenteditable="true">
                </div>
            </div>
    
            <!-- Button row -->
            <div class="button-row">
                <button id="sendButton">Send</button>
                <button id="pasteButton">Paste & Send</button>
                <button id="copyButton">Copy Diff</button>
            </div>
    
            <!-- Diff box -->
            <div class="text-box">
                <h2>Diff<span id="usage"></span></h2>
                <div id="diffContainer" class="text-container" contenteditable="true">
                </div>
            </div>
        </div>
    
        <script>
            const statusBox = document.getElementById('statusBox');
            const inputDiv = document.getElementById('inputContainer');
            const sendButton = document.getElementById('sendButton');
            const pasteButton = document.getElementById('pasteButton');
            const copyButton = document.getElementById('copyButton');
            const diffContainer = document.getElementById('diffContainer');
            const usageDisp = document.getElementById('usage');
    
    
    
            function setStatus(msg) {
                statusBox.innerText = msg;
            }
            setStatus("Ctrl+V to Paste")
    
    
            const checkbox = document.getElementById('promptSelect')
            const STORAGE_KEY = 'selectedPrompt';
    
            // on load, restore the last choice
            document.addEventListener('DOMContentLoaded', () => {
                const saved = localStorage.getItem(STORAGE_KEY);
                if (saved === 'promptB') {
                    checkbox.checked = true;
                }
            });
    
            // whenever it changes, save the corresponding prompt string
            checkbox.addEventListener('change', () => {
                const promptName = checkbox.checked ? 'promptB' : 'promptA';
                localStorage.setItem(STORAGE_KEY, promptName);
            });
    
            // function to send content of inputDiv to server
            async function sendInput() {
                setStatus('Text Sent');
                setStatus('Sending...');
                const input = inputDiv.innerText;
    
                // fall back to promptA if nothing saved yet
                const promptSelect = localStorage.getItem(STORAGE_KEY) || 'promptA';
                //grabs the checkbox state: true/false
                const useAltPrompt = document.getElementById('promptSelect').checked
                // model select 
                const modelSelectElm = document.getElementById('model')
                const modelSelect = modelSelectElm.value
                console.log(modelSelect)
    
                try {
                    const res = await fetch('/api/chat', {
                        method: 'POST',
                        headers: {'Content-Type': 'application/json'},
                        body: JSON.stringify({input, promptSelect, modelSelect})
                    });
                    console.log(res)
                    if (res.status === 413) {
                        setStatus('Text too long!');
                        return;
                    }
    
    
                    const {reply, diffHtml, error, fullReply} = await res.json(
    Found 2026-01-09 by HttpPlugin
    Create report
  • Open service 66.33.22.240:80 · dev-api.passage.software

    2026-01-09 11:27

    HTTP/1.1 301 Moved Permanently
    Content-Type: text/html; charset=utf-8
    Location: https://dev-api.passage.software/
    Server: railway-edge
    X-Railway-Edge: railway/europe-west4-drams3a
    X-Railway-Request-Id: HNW5cLJbSG6Y7KPpss7a6g
    Date: Fri, 09 Jan 2026 11:27:14 GMT
    Content-Length: 68
    Connection: close
    
    
    <a href="https://dev-api.passage.software/">Moved Permanently</a>.
    
    
    Found 2026-01-09 by HttpPlugin
    Create report
dev-api.passage.software
CN:
dev-api.passage.software
Key:
RSA-2048
Issuer:
R12
Not before:
2026-01-09 10:27
Not after:
2026-04-09 10:27
Domain summary
IP summary