Skip to content

Commit f270cfa

Browse files
authored
Merge pull request #11 from Microck/fix/terminal-loading
Fix terminal loading animation
2 parents b7c2b83 + 7dc455c commit f270cfa

10 files changed

Lines changed: 394 additions & 177 deletions

File tree

landing/.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,9 @@ yarn-error.log*
3939
# typescript
4040
*.tsbuildinfo
4141
next-env.d.ts
42+
43+
# production build
44+
/dist
45+
46+
# production build
47+
/dist
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# r/bashonubuntuonwindows Reddit Post
2+
3+
## title
4+
native windows alternative to eternal terminal
5+
6+
## body
7+
i've used eternal terminal on linux for years. on windows, i used to run it inside wsl to connect to servers. booting a full distro just for a persistent shell felt heavy.
8+
9+
i decided to port the core et protocol to native windows c++. it uses the windows conpty api (same backend as windows terminal) instead of the linux pty.
10+
11+
why i built this over wsl+et:
12+
- instant start. single `.exe`, no vm boot time
13+
- better integration. copy/paste works natively with windows terminal
14+
- lighter. no vmmem overhead
15+
- scrollback actually works (mosh's broken scrollback was always annoying)
16+
- built-in ui for managing multiple sessions (`--ui` flag)
17+
18+
features:
19+
- auto-reconnect through network changes
20+
- tmux integration for remote hosts (`--tmux` flag)
21+
- predictive echo for high-latency connections
22+
- ipv6 support
23+
- ssh bootstrap mode (starts server over ssh)
24+
25+
if you use wsl mainly for ssh persistence, this might be a lighter option.
26+
27+
repo: https://github.com/microck/undyingterminal
28+
site: https://undyingterminal.com
29+
30+
## tags for seo
31+
wsl alternative, eternal terminal windows, native windows ssh, windows terminal, conpty, persistent ssh, windows subsystem for linux
32+
33+
## posting tips
34+
- emphasize "native" vs "wsl" angle
35+
- wsl users are technical, lean into the engineering details
36+
- mention it's complementary to wsl, not a replacement
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# r/commandline Reddit Post
2+
3+
## title
4+
my ssh sessions kept dying on windows, so i ported eternal terminal to c++
5+
6+
## body
7+
i spend half my life in `ssh` + `tmux`. on linux, mosh and eternal terminal keep sessions alive when wifi drops or i close my laptop.
8+
9+
windows has always been painful. mosh scrollback is broken. et requires wsl. booting a full linux distro just to connect to a server felt wrong.
10+
11+
so i spent a few months porting et to native windows c++. it uses the windows pty apis (conpty) directly.
12+
13+
what it does:
14+
- auto-reconnect. disconnect internet, drive home, session resumes.
15+
- native `.exe`. no wsl needed.
16+
- jump host support.
17+
- scrollback that actually works.
18+
- predictive echo for high-latency links.
19+
20+
it's mit licensed. pty handling on windows is weird. let me know if you hit edge cases.
21+
22+
repo: https://github.com/microck/undyingterminal
23+
docs: https://undyingterminal.com/docs
24+
site: https://undyingterminal.com
25+
26+
## tags for seo
27+
eternal terminal, mosh alternative, windows terminal, persistent ssh, reconnectable shell, conpty, windows subsystem for linux
28+
29+
## posting tips
30+
- post on weekday mornings for max visibility
31+
- respond to every comment within first hour
32+
- cross-post to r/cpp if technical discussion emerges

landing/promotion/reddit-r-cpp.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# r/cpp Reddit Post
2+
3+
## title
4+
porting a linux terminal emulator to windows (c++, cmake, vcpkg)
5+
6+
## body
7+
i recently finished porting "eternal terminal" (a mosh-like tool) to windows. the original code depended heavily on linux-specific pty apis, so bringing it to windows involved some engineering.
8+
9+
the technical challenges:
10+
11+
1. conpty integration. i replaced the backend with the windows pseudo console api to render modern terminal sequences on windows 10/11. pipe handling here was interesting.
12+
13+
2. dependency management. i used `vcpkg` for dependencies (protobuf, libsodium, abseil). it made cross-platform compilation much saner than manual linking.
14+
15+
3. socket recoverability. the core logic uses a custom tcp protocol that handles "roaming" (client ip changing) without dropping state. had to handle windows socket quirks.
16+
17+
4. named pipes. windows uses named pipes instead of unix domain sockets for local communication between server and terminal processes.
18+
19+
what it does:
20+
- keeps ssh sessions alive through network drops
21+
- auto-reconnects without losing scrollback
22+
- supports jump hosts and port forwarding
23+
- native `.exe`, no cygwin or msys2
24+
25+
it's mit licensed. if anyone wants to review the conpty implementation or has feedback on the cmake setup, i'd appreciate it.
26+
27+
repo: https://github.com/microck/undyingterminal
28+
29+
## tags for seo
30+
windows conpty, c++ terminal emulator, cmake windows, vcpkg, named pipes, eternal terminal port
31+
32+
## posting tips
33+
- focus on the engineering, not the marketing
34+
- expect questions about conpty vs winpty
35+
- be ready to discuss protobuf/sodium choices
36+
- mention it's single-platform (windows) by design
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# r/PowerShell Reddit Post
2+
3+
## title
4+
stop ssh sessions from dying when your vpn drops
5+
6+
## body
7+
i've been frustrated for years by how fragile remote sessions are on windows. if my vpn flickers or my laptop sleeps, the shell dies.
8+
9+
i know `tmux` preserves state on the server. but i wanted the connection itself to survive. there's a linux tool called "eternal terminal" that does this, but it never had a native windows port.
10+
11+
i built one. it wraps `cmd.exe` or `powershell.exe` on the server (or connects to linux servers) and keeps the tcp connection alive through network changes.
12+
13+
the main benefit:
14+
you run the client on windows. you can reboot your router, and the terminal window pauses. when internet returns, it resumes. no re-typing passwords.
15+
16+
features:
17+
- native windows conpty integration (no wsl needed)
18+
- ssh config parsing (`~/.ssh/config`)
19+
- jump host support via `ProxyJump`
20+
- agent forwarding (`-A` flag)
21+
- port forwarding (local and reverse tunnels)
22+
23+
it's fully open source. if you manage unstable remote connections, i'd appreciate feedback on whether this helps your workflow.
24+
25+
repo: https://github.com/microck/undyingterminal
26+
download: https://github.com/microck/undyingterminal/releases/latest
27+
28+
## tags for seo
29+
powershell remoting, windows ssh, eternal terminal windows, persistent shell, vpn disconnect, ssh session timeout, windows terminal
30+
31+
## posting tips
32+
- frame as solving admin pain, not self-promo
33+
- mention specific use cases (azure, aws, on-prem)
34+
- check if there's a "tool tuesday" or similar thread first
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# Reddit Promotion Strategy for Undying Terminal
2+
3+
## Target Communities (in order of priority)
4+
5+
### 1. r/bashonubuntuonwindows (WSL Users)
6+
**Why:** These users already know Eternal Terminal and feel the pain of WSL overhead.
7+
**Best time to post:** Tuesday-Thursday, 9-11 AM EST
8+
**Angle:** "Native alternative that doesn't need WSL"
9+
10+
### 2. r/PowerShell (Windows Admins)
11+
**Why:** Direct target audience who deals with SSH on Windows daily.
12+
**Best time to post:** Monday or Wednesday, 10 AM EST
13+
**Angle:** "Solves VPN disconnect pain"
14+
**Note:** Check for "Self-Promotion Saturday" threads if main post gets removed.
15+
16+
### 3. r/commandline (CLI Enthusiasts)
17+
**Why:** Broad reach, technical audience.
18+
**Best time to post:** Any weekday morning
19+
**Angle:** "Fixed a problem I had"
20+
21+
### 4. r/cpp (C++ Developers)
22+
**Why:** Engineering credibility, potential contributors.
23+
**Best time to post:** Weekend (more technical discussion time)
24+
**Angle:** "Here's how I solved these technical challenges"
25+
26+
## SEO Keywords to Include
27+
28+
Primary keywords (use in every post):
29+
- eternal terminal
30+
- windows terminal
31+
- persistent ssh
32+
- reconnectable shell
33+
- mosh alternative
34+
35+
Secondary keywords (sprinkle in):
36+
- windows conpty
37+
- ssh session timeout
38+
- vpn disconnect
39+
- windows subsystem for linux (wsl)
40+
- jump host
41+
- port forwarding
42+
- native windows
43+
44+
## Posting Rules Checklist
45+
46+
- [ ] Wait 9-12 hours between posts (don't spam)
47+
- [ ] Respond to every comment in first 2 hours
48+
- [ ] Don't use url shorteners
49+
- [ ] Include GitHub link in body, not just title
50+
- [ ] Check subreddit rules before posting
51+
- [ ] Have 5-10 genuine comments in subreddit history first
52+
53+
## Cross-Posting Strategy
54+
55+
1. **Week 1:** Post to r/bashonubuntuonwindows (most receptive audience)
56+
2. **Week 1:** Post to r/PowerShell (if WSL post gets good engagement)
57+
3. **Week 2:** Post to r/commandline
58+
4. **Week 2:** Post to r/cpp
59+
5. **Week 3+:** Monitor for "ssh disconnect" threads and comment with solution
60+
61+
## Engagement Templates
62+
63+
### When someone asks "how is this different from tmux?"
64+
> tmux keeps the session alive on the server, but your ssh connection still dies. undying terminal keeps the connection itself alive, so you don't need to re-attach. plus it has predictive echo for high-latency links.
65+
66+
### When someone says "just use mosh"
67+
> mosh works but has broken scrollback on windows. this uses native windows conpty apis, so scrollback works properly and it integrates with windows terminal.
68+
69+
### When someone asks "why not just use wsl?"
70+
> wsl works but has overhead. this is a single native exe with no vm boot time. it's not a replacement for wsl, just a lighter option if all you need is persistent ssh.
71+
72+
## Metrics to Track
73+
74+
- github stars increase
75+
- release download count
76+
- docs site traffic (check plausible)
77+
- issues/discussions opened
78+
- reddit post upvote ratio (aim for >70%)
79+
80+
## Backup Communities (if main posts do well)
81+
82+
- r/sysadmin (only post in "self-promotion saturday" threads)
83+
- r/selfhosted (if you write about the server architecture)
84+
- r/programming (only if post goes viral elsewhere first)
85+
- r/sideproject (more casual, good for feedback)
86+
87+
## What NOT to Do
88+
89+
- Don't post to r/sysadmin main feed (will get removed)
90+
- Don't post all at once (looks spammy)
91+
- Don't ignore comments (hurts engagement algorithm)
92+
- Don't use promotional language ("revolutionary", "game-changing")
93+
- Don't argue in comments (stay helpful)
94+
95+
## Success Metrics
96+
97+
Good post:
98+
- 50+ upvotes
99+
- 10+ comments
100+
- 5+ github stars from reddit traffic
101+
102+
Viral post:
103+
- 200+ upvotes
104+
- 50+ comments
105+
- 20+ github stars
106+
- mentioned in other threads

landing/src/app/globals.css

Lines changed: 0 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -176,50 +176,10 @@ body {
176176
0 -0.65px rgba(255, 255, 255, 0.35);
177177
}
178178

179-
/* Heavier fill for shiny stage (no stroke so gradient is visible) */
180-
.hero-title-pixel-shine {
181-
font-weight: 900;
182-
letter-spacing: 0.01em;
183-
text-shadow:
184-
0 0 1px rgba(255, 255, 255, 0.9),
185-
0 0 3px rgba(255, 255, 255, 0.45),
186-
0.9px 0 rgba(255, 255, 255, 0.35),
187-
-0.9px 0 rgba(255, 255, 255, 0.35),
188-
0 0.9px rgba(255, 255, 255, 0.25),
189-
0 -0.9px rgba(255, 255, 255, 0.25);
190-
}
191-
192179
.hero-title-encrypted {
193180
color: rgba(232, 230, 227, 0.45);
194181
}
195182

196-
/* Shiny text animation (CSS-driven for reliability) */
197-
.shiny-text {
198-
background-image: linear-gradient(
199-
var(--shiny-spread, 120deg),
200-
var(--shiny-color, #b5b5b5) 0%,
201-
var(--shiny-color, #b5b5b5) 35%,
202-
var(--shiny-shine, #ffffff) 50%,
203-
var(--shiny-color, #b5b5b5) 65%,
204-
var(--shiny-color, #b5b5b5) 100%
205-
);
206-
background-size: 200% auto;
207-
background-position: 150% center;
208-
-webkit-background-clip: text;
209-
background-clip: text;
210-
-webkit-text-fill-color: transparent;
211-
color: transparent;
212-
}
213-
214-
@keyframes shiny-text-move {
215-
0% {
216-
background-position: 150% center;
217-
}
218-
100% {
219-
background-position: -50% center;
220-
}
221-
}
222-
223183
/* ── Background layers ── */
224184
.bg-dot-grid {
225185
position: fixed;

landing/src/app/layout.tsx

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,33 +6,20 @@ export const viewport: Viewport = {
66
};
77

88
export const metadata: Metadata = {
9-
metadataBase: new URL("https://undyingterminal.com"),
109
title: "Undying Terminal",
1110
description: "Your session survives. Windows-native persistent terminal that reconnects through disconnects, sleep, and network changes.",
1211
keywords: ["terminal", "ssh", "persistent", "windows", "reconnect", "shell"],
1312
authors: [{ name: "Microck" }],
14-
alternates: {
15-
canonical: "/",
16-
},
1713
openGraph: {
1814
title: "Undying Terminal",
1915
description: "Your session survives.",
2016
type: "website",
2117
url: "https://undyingterminal.com",
22-
images: [
23-
{
24-
url: "/icon-512.png",
25-
width: 512,
26-
height: 512,
27-
alt: "Undying Terminal",
28-
},
29-
],
3018
},
3119
twitter: {
3220
card: "summary_large_image",
3321
title: "Undying Terminal",
3422
description: "Your session survives.",
35-
images: ["/icon-512.png"],
3623
},
3724
manifest: "/manifest.json",
3825
icons: {

0 commit comments

Comments
 (0)