「‍」 Lingenic

BROWSER-EXTENSION

(⤓.txt ◇.txt); γ ≜ [2026-03-01T152507.930, 2026-03-01T152507.930] ∧ |γ| = 1

GOPHER BROWSER EXTENSION

A browser extension that makes gopher:// URLs work again.


THE IDEA

User types gopher://lingenic.com/design/ in the address bar. The extension intercepts, rewrites to HTTPS, adds the Accept header, fetches, and renders the gopher menu. The user sees gopher. The transport is HTTPS.

Gopher returns to the browser without returning to port 70.


HOW IT WORKS

1. Extension registers as handler for gopher:// URL scheme
2. gopher://host/path becomes https://host/path
3. Fetch with Accept: text/gopher header
4. Parse tab-separated response
5. Render as interactive menu

The user never sees the rewrite. They type gopher://, they see gopher.


URL REWRITING

    gopher://lingenic.com/
    → https://lingenic.com/
    → Accept: text/gopher
    → Gopher menu response

    gopher://lingenic.com/design/terminal/
    → https://lingenic.com/design/terminal/
    → Accept: text/gopher
    → Gopher menu response

    gopher://lingenic.com/design/terminal/readme.txt
    → https://lingenic.com/design/terminal/readme.txt
    → Accept: text/gopher
    → Text file response

The path transfers directly. No translation needed.


RENDERING

Directory (type 1):

    ┌─────────────────────────────────────────┐
    │                                         │
    │              TERMINAL                   │
    │                                         │
    │  [dir]  src                             │
    │  [dir]  docs                            │
    │  [txt]  readme.txt                      │
    │  [bin]  terminal.tar.xz                 │
    │                                         │
    │  ─────────────────────────────────────  │
    │              lingenic.com               │
    │                                         │
    └─────────────────────────────────────────┘

Click a line, follow the link. Arrow keys navigate. Enter selects. Backspace goes back. The interaction model is gopher.


TEXT FILES

Text files (type 0) render as plain text in the same frame. Monospace. No styling. A back button returns to the menu.


CONTENT DETECTION

The extension can also detect text/gopher responses from regular HTTPS navigation:

1. User clicks https://lingenic.com/design/
2. Server responds with Content-Type: text/gopher
3. Extension intercepts response
4. Renders as gopher menu

No gopher:// URL needed. Any server returning text/gopher gets gopher rendering. The format triggers the renderer, not the URL scheme.


IMPLEMENTATION

Manifest (Chrome/Firefox WebExtension):

    {
      "manifest_version": 3,
      "name": "Gopher",
      "permissions": ["webRequest", "webRequestBlocking"],
      "protocol_handlers": [{
        "protocol": "gopher",
        "name": "Gopher over HTTPS",
        "uriTemplate": "https://%s"
      }]
    }

Background script:

    - Intercept gopher:// navigations
    - Rewrite to https://
    - Add Accept: text/gopher header
    - Pass to content script for rendering

Content script:

    - Detect text/gopher responses
    - Parse gopher menu format
    - Render interactive UI
    - Handle navigation

Total: ~200 lines of JavaScript.


SAFARI

Safari uses a different extension model (App Extensions). Same logic, different packaging:

    - Swift/JavaScript hybrid
    - Safari Web Extension format
    - Distributed via App Store or direct install

The core is identical. The packaging differs.


WHAT THIS COMPLETES

Three ways to access gopher over HTTPS:

1. **Browser extension**: gopher:// URLs work, gopher rendering
2. **TUI client**: terminal users, ncurses interface
3. **curl**: Accept: text/gopher header, raw output

The server is done. The extension brings it to browsers. The TUI brings it to terminals. Gopher is back.


---
Lingenic LLC
2026