<?xml version="1.0" encoding="UTF-8"?>        <rss version="2.0"
             xmlns:atom="http://www.w3.org/2005/Atom"
             xmlns:dc="http://purl.org/dc/elements/1.1/"
             xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
             xmlns:admin="http://webns.net/mvcb/"
             xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
             xmlns:content="http://purl.org/rss/1.0/modules/content/">
        <channel>
            <title>
									Celestial Software Forum - Recent Topics				            </title>
            <link>https://www.celestialsoftware.net/community/</link>
            <description>Celestial Software Discussion Board</description>
            <language>en-US</language>
            <lastBuildDate>Fri, 31 Jul 2026 19:12:43 +0000</lastBuildDate>
            <generator>wpForo</generator>
            <ttl>60</ttl>
							                    <item>
                        <title>AbsoluteTelnet + Claude Code: a notification sound unique to Claude (32-bit AT only — it relies on VB scripting)</title>
                        <link>https://www.celestialsoftware.net/community/configurationissues/absolutetelnet-claude-code-a-notification-sound-unique-to-claude-32-bit-at-only-it-relies-on-vb-scripting/</link>
                        <pubDate>Thu, 23 Jul 2026 19:38:04 +0000</pubDate>
                        <description><![CDATA[Context / goal
I run Claude Code (Anthropic&#039;s terminal coding agent) on a remote host over SSH, with AbsoluteTelnet as my local terminal on Windows. During a long task, Claude Code periodic...]]></description>
                        <content:encoded><![CDATA[<p><!-- title (for the forum's title field, not the body):
     AbsoluteTelnet + Claude Code: a notification sound unique to Claude
     (32-bit AT only - it relies on VB scripting) --></p>
<h2>Context / goal</h2>
<p>I run <b>Claude Code</b> (Anthropic's terminal coding agent) on a remote host over SSH, with <b>AbsoluteTelnet</b> as my local terminal on Windows. During a long task, Claude Code periodically pauses to ask me for input or permission. When that happens I'm usually looking at another window, so I want the terminal to actively get my attention — audibly — <b>even when it isn't the focused window</b>.</p>
<p>The goal is more specific than "make a sound", though: the alert must be <b>unique to "Claude needs me"</b>. My desktop beeps and dings all day — mail, chat, system dialogs, other terminal sessions. What I need is a sound that, the instant I hear it, can only mean one thing: Claude Code is waiting on me. That uniqueness requirement is what drives everything below.</p>
<p>One more interest of mine, up front: finding a solution that requires <b>no user-facing AbsoluteTelnet GUI changes</b> — because I know GUI settings work isn't free. My initial idea was going to be a GUI addition: a bell-sound picker that overrides the Windows default (<code>C:\Windows\Media\Windows Exclamation.wav</code>) on a per-connection-file (<code>.tnt</code>) basis; a user would launch that <code>.tnt</code> whenever an SSH session was going to be mostly or entirely Claude interactions. But that seemed like it would be more work for you, so I started thinking about ways that wouldn't require a GUI change at all. The solution below is where that led: it rides entirely on the existing script engine, and any future improvements could stay under the hood as new scripting-API functions rather than new GUI surface.</p>
<h2>Why the ordinary terminal bell can't be unique</h2>
<p>The classic signaling channel is the ASCII <b>BEL</b> (<code>0x07</code>, <code>Ctrl-G</code>). Claude Code can emit one when it needs attention (its <code>preferredNotifChannel: terminal_bell</code> setting), and any CLI can do the same with <code>printf '\a'</code>.</p>
<p>But a BEL is <i>just one byte</i>. It carries no identity — nothing says who rang it. The <b>receiving terminal's</b> bell configuration decides what sound is made, and it makes that same sound for <b>every</b> BEL from <b>any</b> remote program running over <b>any</b> connection (anything on the host that writes a BEL into the session — <code>vi</code>'s error beep, <code>less</code> bumping into end-of-file, a failed <code>bash</code> tab-completion, a stray <code>^G</code> scrolling past in a log).</p>
<p>AbsoluteTelnet's bell plays the Windows "Exclamation" program-event sound — typically <code>Windows Exclamation.wav</code>. AT itself offers no way to change it, though it <i>can</i> be changed Windows-wide — thanks for the annotated Control Panel walk-through you emailed (the path is in the appendix below). The catch: a Windows-wide change affects <i>every</i> application that plays the Exclamation event, so it still can't serve as a Claude signature — the Exclamation sound is the stock Windows alert used by <i>many</i> Windows applications (system dialogs, error popups, all sorts of apps), and hearing it tells you nothing about who wants you. And even if you <i>could</i> point AT's bell at a custom WAV using the AT bell-sound picker I mention above, it would still ring for every BEL from every remote program — not just Claude. The bell channel simply cannot carry the "this is Claude" indicator.</p>
<p>So a unique sound needs a signal <b>richer than BEL</b> — something in the data stream that only Claude emits, that the terminal can recognize.</p>
<h2>The solution (proven end-to-end): Claude's notification channel + a tiny global script</h2>
<p>Claude Code has a setting, <code>preferredNotifChannel</code>, that controls how it signals "I need you." Setting it to <code>ghostty</code> makes Claude emit an <b>OSC 777 notification escape sequence</b> into its own terminal output at exactly the right moments:</p>
<pre contenteditable="false">ESC ] 777 ; notify ; Claude Code ; &lt;message&gt; BEL</pre>
<p>— where <code>&lt;message&gt;</code> is e.g. <code>Claude needs your permission</code> (a permission prompt) or <code>Claude is waiting for your input</code> (Claude finished its turn and is waiting). In my testing, AbsoluteTelnet swallows OSC sequences it doesn't understand, so <b>nothing displays and no bell rings</b> (verified in 13.16 and 13.17 RC9) — but the payload still passes through the raw stream, where the script engine's <code>WaitFor</code> can see it. That yields a complete solution in <b>two small steps — one paste, one setting</b> — with nothing else installed anywhere:</p>
<h3><u>Step 1 — the AbsoluteTelnet global script</u></h3>
<p>Paste via <b>Options → Properties → Global → "Edit global connection script"</b>, save, then <b>close and reopen the connection</b> — verified: the global script is re-read at each connection start, so no AT restart is needed (already-connected sessions keep the old script until reconnected):</p>
<pre contenteditable="false">Sub Main
    Do While WaitFor("notify;" &amp; "Claude Code")
        Set sh  = CreateObject("WScript.Shell")
        Set fso = CreateObject("Scripting.FileSystemObject")
        wav = sh.ExpandEnvironmentStrings("%APPDATA%") &amp; "\AbsoluteTelnet\claude-notify.wav"
        If Not fso.FileExists(wav) Then wav = sh.ExpandEnvironmentStrings("%WINDIR%") &amp; "\Media\tada.wav"
        sh.Run "powershell -NoProfile -WindowStyle Hidden -c " &amp; _
               "(New-Object Media.SoundPlayer '" &amp; wav &amp; "').PlaySync()", 0, False
    Loop
End Sub</pre>
<ul>
<li><b>WAV lookup</b>: <code>%APPDATA%\AbsoluteTelnet\claude-notify.wav</code> (your chosen unique sound); if absent, <code>%WINDIR%\Media\tada.wav</code> so it works out of the box. To change the sound, replace the file — no script edit needed. (The <code>claude-notify.wav</code> I use — a marimba — is attached to this post if you'd like to hear it.)</li>
<li>The <code>WaitFor</code> string <b>is split</b> (<code>"notify;" &amp; "Claude Code"</code>) so a display of the script's <i>own text</i> never contains the contiguous match and can't ring the VB script's <code>WaitFor</code> listener.</li>
</ul>
<h3><u>Step 2 — the Claude-side setting</u></h3>
<p>In a Claude Code session, run <code>/config</code> and set the notification channel to <code>ghostty</code>. The setting is stored per user per host (in <code>~/.claude.json</code>), applies to every project and session on that host, and persists until changed.</p>
<p>That's it. <b>Proven end-to-end 2026-07-22</b> (AbsoluteTelnet <b>13.16</b>, Claude Code v2.1.217): both a live permission prompt and an idle wait rang the global connection script's WAV — zero host-side scripting.</p>
<h3><u>Notes and limitations found</u></h3>
<ul>
<li><b>32-bit AbsoluteTelnet only</b>: scripting is <i>disabled</i> in the combined 32/64-bit build.</li>
<li><b>Timing</b>: Claude suppresses notifications while you are actively typing (a user-is-present guard), so the sound fires once you're hands-off — not the instant a prompt appears. (Claude's <code>messageIdleNotifThresholdMs</code> setting — see the appendix — tunes how long a wait must last before the idle notification fires.)</li>
<li>The message text itself is never visible — it lives inside the swallowed OSC. The sound is its only manifestation today; see the wishlist for the toast idea that would fix that.</li>
<li><b>Versions tested</b>: proven on AT <b>13.16</b> (2026-07-22); the swallow/no-bell/listener results re-verified on <b>13.17 RC9</b> (2026-07-23). Worth spot-checking any future release that changes stream handling.</li>
<li><code>tmux</code> / <code>screen</code>: a multiplexer may filter escape sequences (newer <code>tmux</code> versions may need <code>tmux</code>'s own <code>allow-passthrough</code> option enabled — that's a <code>tmux</code> setting, not a Claude one).</li>
<li>The <code>WaitFor</code> match string rides on Claude's own payload wording — written split here, as in the script, so that displaying this note in a live terminal can't ring the listener: <code>"notify;" &amp; "Claude Code"</code>. A future Claude release could change the wording (the wishlist's proposed <code>WaitForRegex(pattern)</code> item would harden this).</li>
</ul>
<h2>Wishlist: what native AbsoluteTelnet support could add</h2>
<p>The script route works today, but native support would make it better — for every CLI user, not just Claude users:</p>
<p><b>1. Native OSC 777 / OSC 9 desktop notifications — the headline ask.</b> AT already swallows these sequences; <i>rendering</i> them as a Windows toast would show the message text — "Claude needs your permission" instead of just a sound — right in the notification center. Long builds, CI, backup jobs and chat CLIs already emit these sequences.</p>
<p><b>2. Focus-aware BEL handling</b>: taskbar flash (<code>FlashWindowEx</code>) and/or toast when a BEL arrives while the window is unfocused; per-profile sound selection; bell de-bounce for bursts.</p>
<p><b>3. Scripting-API additions.</b> (Terminology note to me (Todd): <code>Sub</code> / <code>Do While</code> are VB <i>keywords</i> — the language; <code>WaitFor</code> is part of AbsoluteTelnet's <i>scripting API</i> — the functions the app exposes to scripts.) These are suggestions for new API functions/events.</p>
<ul>
<li><code>WaitForRegex(pattern)</code> plus a way to read what matched (e.g. <code>LastMatch()</code> / capture groups) — robust against wording changes, and enables payload-carrying alerts (<i>which host</i>, <i>what's being asked</i> — where the host name is taken from the connection's own Options → Connection Properties → Connection → Hostname, NOT something the remote host would have to emit).</li>
<li>Event handlers instead of a polling loop: <code>OnOsc(number, text)</code> and <code>OnBell()</code>.</li>
<li><code>PlaySound(path)</code> — native WAV playback, no PowerShell shell-out.</li>
<li><code>Notify(title, body)</code> — raise a real Windows toast from script.</li>
<li><code>FlashTaskbar()</code> / <code>SetTabAlert()</code> — visual attention.</li>
<li><code>IsFocused()</code> — stay quiet when the user is already looking.</li>
<li><code>SessionName()</code> / <code>SessionInfo()</code> — which connection/tab the match arrived on. I really like this idea but I don't know how it would surface: the tab bar labels tabs only by connection filename (duplicates are common when several tabs open the same <code>.tnt</code>, and with many tabs open you scroll to find them), so I'm not sure what a unique identifier would look like — your call whether it's practical. The existing behavior where an unseen/unheard BEL flashes the yellow "!" triangle on the tab may have to be good enough; advice welcome.</li>
<li>Timer / de-bounce helpers — coalesce a burst of matches into one alert.</li>
</ul>
<p><b>4. Script-editor usability: a larger, monospaced (or configurable) font.</b> The global-script (and the per-connection login script) edit box's small proportional font made me introduce two hard-to-spot one-character paste bugs in a single day — a stray <code>)</code> and a <code>t</code> that became a space — each of which silently kills the whole script. A monospaced font would help as much as a larger one; even just reusing the session's terminal font/size (the Appearance tab's Text Font + Screen Font Size) would be a win. (I realize this is the one item here that <i>is</i> a user-facing GUI change — the only one I'm asking for, having tried to avoid them everywhere else.)</p>
<h2>Also tried (background — so you know what's behind the recipe)</h2>
<ul>
<li><b>A private-sentinel hook</b> (worked; the previous primary approach): a Claude <i>Notification hook</i> (see the appendix) runs a small script on the SSH host that writes a private OSC 777 sentinel to the session's tty — found by walking up the process tree, because hook processes have no controlling terminal (<code>/dev/tty</code> fails) — and the global script matched that sentinel. Fully proven too, and <i>by construction</i> unique to "Claude needs me". But it needs a hook plus an emitter script installed on every remote host, so the two-step <code>ghostty</code> route replaced it as the recommendation. I would consider reinstating it as a fallback if Claude's message wording ever changes.</li>
<li><b>Matching the BEL itself</b> (<code>WaitFor(Chr(7))</code>): rejected — any BEL from any program would ring the "Claude" sound; the uniqueness that motivated all this is lost.</li>
<li><b>Scraping the TUI's prompt text</b>: rejected — breaks when Claude's UI wording changes, false-fires when the phrase merely scrolls past (e.g. reading a log), and the TUI may interleave color/positioning escape codes inside the phrase, defeating a literal match.</li>
</ul>
<h2>TL;DR</h2>
<p>Set Claude Code's notification channel to <code>ghostty</code> (one setting — see the appendix) and paste a small <code>WaitFor</code> loop into AbsoluteTelnet's global connection script: Claude then announces "I need you" with an invisible OSC 777 message that rings a WAV no other application uses. Proven end-to-end in AT 13.16 (re-verified on 13.17 RC9) with zero host-side scripting. The big native-support ask from my wishlist: <b>render OSC 777 / OSC 9 as Windows toasts</b>, so the alert can show <i>what</i> Claude is asking — not just that it asks.</p>
<h2>Appendix: where the settings I mention get changed</h2>
<p>Claude Code (in-session slash commands):</p>
<ul>
<li><code>preferredNotifChannel</code> (<code>terminal_bell</code>, <code>ghostty</code>, …): <code>/config</code> command → notification channel (stored per user per host in <code>~/.claude.json</code>)</li>
<li><code>messageIdleNotifThresholdMs</code> (idle-notification threshold): <code>/config</code> command</li>
<li>Notification hooks (the private-sentinel approach under "Also tried"): <code>/hooks</code> command</li>
<li>Claude Code version (the vX.Y.Z figures cited above) — checkable from inside a chat session: <code>/status</code> command (it also shows the model and account)</li>
</ul>
<p>Windows (the default alert sound AT's bell plays — your emailed walk-through):</p>
<ul>
<li>Settings → System → Sound → "More sound settings" → Sounds tab → Program Events → Exclamation → pick a <code>.wav</code> (affects every application that plays the Exclamation event, which is why it can't be a Claude-only sound)</li>
</ul>
<p>&nbsp;</p>
<p>claude-notify.wav:</p>
41]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/configurationissues/absolutetelnet-claude-code-a-notification-sound-unique-to-claude-32-bit-at-only-it-relies-on-vb-scripting/</guid>
                    </item>
				                    <item>
                        <title>Question about the right click context menu</title>
                        <link>https://www.celestialsoftware.net/community/absolutetelnetgeneral/question-about-the-right-click-context-menu/</link>
                        <pubDate>Tue, 09 Jun 2026 19:43:59 +0000</pubDate>
                        <description><![CDATA[AT v13.16 32bit versionCan you let me know how is &quot;Goto Link (click)&quot; different from the disabled &quot;Go To URL (ALT+HOME)&quot;?
&nbsp;

&nbsp;]]></description>
                        <content:encoded><![CDATA[<p>AT v13.16 32bit version<br /><br />Can you let me know how is "Goto Link (click)" different from the disabled "Go To URL (ALT+HOME)"?</p>
<p>&nbsp;</p>
28
<p>&nbsp;</p>
29]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/absolutetelnetgeneral/question-about-the-right-click-context-menu/</guid>
                    </item>
				                    <item>
                        <title>Strange flashing tab with exclamation point in yellow triangle</title>
                        <link>https://www.celestialsoftware.net/community/absolutetelnetgeneral/strange-flashing-tab-with-exclamation-point-in-yellow-triangle/</link>
                        <pubDate>Tue, 09 Jun 2026 17:51:19 +0000</pubDate>
                        <description><![CDATA[Because the tab is flashing, I click on it to switch to it, expecting to see an error message shown that explains why it is flashing, but as soon as I switch to it, it stops flashing.
Here ...]]></description>
                        <content:encoded><![CDATA[<p>Because the tab is flashing, I click on it to switch to it, expecting to see an error message shown that explains why it is flashing, but as soon as I switch to it, it stops flashing.</p>
<p>Here are screenshots that alternate and form the "flash". How do I find out exactly what AT is trying to bring my attention to?</p>
<p>&nbsp;</p>
26
27]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/absolutetelnetgeneral/strange-flashing-tab-with-exclamation-point-in-yellow-triangle/</guid>
                    </item>
				                    <item>
                        <title>UTF-8 characters / emoji output and copy-paste config</title>
                        <link>https://www.celestialsoftware.net/community/absolutetelnetgeneral/utf-8-characters-emoji-output-and-copy-paste-config/</link>
                        <pubDate>Fri, 15 May 2026 15:21:20 +0000</pubDate>
                        <description><![CDATA[Sometimes I copy text to be pasted into a string/file/query (via your application) and it has an emoji character, perhaps like this:&#x1f44b;It fails, but the connection&#039;s properties indicat...]]></description>
                        <content:encoded><![CDATA[<p>Sometimes I copy text to be pasted into a string/file/query (via your application) and it has an emoji character, perhaps like this:<br />&#x1f44b;<br /><br />It fails, but the connection's properties indicate that "Translation" is set to UTF-8.<br /><br />Is there a different configuration option to allow 4-byte UTF-8 characters to be pasted to the application?</p>
<p>&nbsp;</p>]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Brian Hemesath</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/absolutetelnetgeneral/utf-8-characters-emoji-output-and-copy-paste-config/</guid>
                    </item>
				                    <item>
                        <title>Using AT with Claude Code AI gives wild screen I/O updates resullting in as many as six duplicate chunks in the scrollback buffer</title>
                        <link>https://www.celestialsoftware.net/community/absolutetelnetgeneral/using-at-with-claude-code-ai-gives-wild-screen-i-o-updates-resullting-in-as-many-as-six-duplicate-chunks-in-the-scrollback-buffer/</link>
                        <pubDate>Tue, 17 Mar 2026 20:37:22 +0000</pubDate>
                        <description><![CDATA[In order to do some analysis on this, I did a &quot;select all&quot; of the scrollback buffer, copy-and-pasted into a text file. I then asked Claude Code AI to analyze the file. Claude generated the f...]]></description>
                        <content:encoded><![CDATA[<p>In order to do some analysis on this, I did a "select all" of the scrollback buffer, copy-and-pasted into a text file. I then asked Claude Code AI to analyze the file. Claude generated the following. Due to privacy issues I'm not attaching the file, nor a normal raw File-&gt;Open LOG type capture in AT; these files have been sent to Brian Pence's private email address.</p>
<pre contenteditable="false">Absolute Telnet -- Scrollback Duplication on Copy/Paste
=======================================================


SUMMARY

When using "Select All" / "Copy" from the Absolute Telnet scrollback
buffer during an SSH session running Claude Code (Anthropic's CLI tool),
the captured text contains large blocks of duplicated content. The
duplicated blocks appear to be triggered by ANSI cursor-movement
sequences that Claude Code uses to update the display in-place
(collapsing tool output, updating progress indicators, etc.).


ENVIRONMENT

  SSH Client:          Absolute Telnet 13.16 RC21
  Remote Application:  Claude Code (Anthropic CLI), running over SSH
                       on a Raspberry Pi (Linux 6.12, bash)
  Session Type:        Interactive AI-assisted coding session,
                       approximately 3960 lines of captured output


OBSERVED BEHAVIOR

A copy-and-paste of the full SSH session scrollback contains 6 copies
of a 497-line block that should appear only once. The total captured
output is 3960 lines, but only approximately 1475 lines are unique
content. The remaining ~2485 lines are duplicates.


Block structure in the captured text:

  Block   Line Range    Repeated Base   Unique New Content
  -----   ----------    -------------   ------------------
    1       1-573        497 lines        76 lines
    2     574-1166       497 lines        96 lines
    3    1167-1864       497 lines       201 lines
    4    1865-2571       497 lines       210 lines
    5    2572-3272       497 lines       204 lines
    6    3273-3960       497 lines       191 lines

Each block starts with an identical copy of the same 497 lines
(verified byte-for-byte via diff), followed by a progressively larger
section of new, unique content representing the ongoing session output.


Boundary where duplication begins:

The first repetition starts at line 574. The boundary falls in the
middle of a unified diff display:

  Line 573:  7 -VERSION=26.074.19.34      &lt;-- last "new" line before repeat
  Line 574:  7 +VERSION=26.074.19.50-1    &lt;-- identical to line 1; repeat starts here

Line 574 is simultaneously the "plus" side of the diff AND a repeat of
line 1 of the entire session. This is the point where Claude Code would
have been updating the screen (collapsing a tool-output display after
an edit operation completed).


LIKELY CAUSE

Claude Code makes extensive use of ANSI escape sequences to update the
terminal display in-place:

  - Collapsing tool output: When a tool call finishes, multi-line
    verbose output is replaced with a single summary line (e.g., a
    file diff collapses into "Update(/dropbox-nix/tls.sh)")

  - Progress indicators: Status lines like "Cogitated for 35s" are
    updated in-place using cursor movement

  - Screen redraws: Replacing N lines of output with fewer lines
    requires cursor-up, erase-line, and rewrite sequences

The relevant ANSI sequences likely include:

  Sequence    Function
  --------    --------
  ESC[nA      Cursor up n lines
  ESC[nF      Cursor to beginning of line, n lines up
  ESC[2K      Erase entire line
  ESC[nJ      Erase display (below cursor, or entire)
  ESC[nG      Cursor to column n
  CR          Carriage return (overwrite from start of line)


HYPOTHESIS

When Claude Code sends cursor-movement sequences to collapse or redraw
content, Absolute Telnet appears to be appending the redrawn content to
the scrollback buffer as new lines rather than updating the existing
scrollback entries in-place. Each redraw event causes the visible screen
content (or a portion of it) to be duplicated into the scrollback.

When the user subsequently does "Select All" and copies from the
scrollback, these duplicated renders are all included in the copied
text.

Evidence supporting this hypothesis:

  1. The repeated base block is exactly 497 lines -- a plausible match
     for the visible terminal area plus some scrollback context that
     gets redrawn.

  2. Repetitions occur at points where Claude Code collapses tool
     output -- specifically, at diff displays being collapsed after
     edit operations complete.

  3. Each block contains the same base followed by growing amounts of
     new content -- consistent with periodic re-renders at different
     points in the session, each capturing the original scrollback
     plus whatever new output has been added since the last re-render.

  4. The base block is byte-for-byte identical across all 6 occurrences
     -- this is a verbatim copy, not a similar-but-different rendering.

  5. The string "Cogitated for 35s" appears 6 times (at lines 432,
     1005, 1598, 2296, 3003, 3704) -- once per block, always at the
     same offset within the repeated base section.


HOW TO REPRODUCE

  1. Open an SSH session in Absolute Telnet to a Linux host.
  2. Run Claude Code ("claude") and perform interactive tasks that
     involve tool calls (file edits, command execution) -- these
     trigger the collapse/expand behavior.
  3. Let the session run long enough that multiple tool-output collapse
     events occur.
  4. Use "Select All" / "Copy" to capture the scrollback.
  5. Paste into a text editor and search for content that should be
     unique -- it will appear multiple times.


EXPECTED VS. ACTUAL BEHAVIOR

  Expected: "Select All" / "Copy" from scrollback produces a linear
            transcript of the session with each line appearing once.

  Actual:   Scrollback contains multiple copies of earlier content,
            inserted at points where the remote application used
            cursor-movement sequences to update the display.


COMPARISON

This issue does not occur when copying the same session output from
other terminal emulators (e.g., the native terminal on the host
machine), suggesting the issue is specific to how Absolute Telnet
handles cursor-movement sequences in its scrollback buffer.

</pre>
<p> </p>]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/absolutetelnetgeneral/using-at-with-claude-code-ai-gives-wild-screen-i-o-updates-resullting-in-as-many-as-six-duplicate-chunks-in-the-scrollback-buffer/</guid>
                    </item>
				                    <item>
                        <title>Appearance option &quot;Scale font, keep rows and columns FIXED&quot; changes when exiting linux program &#039;minicom&#039;</title>
                        <link>https://www.celestialsoftware.net/community/configurationissues/appearance-option-scale-font-keep-rows-and-columns-fixed-changes-when-exiting-linux-program-minicom/</link>
                        <pubDate>Thu, 15 Jan 2026 02:10:49 +0000</pubDate>
                        <description><![CDATA[Hello,
This has become more problematic lately as I&#039;m working quite a bit in minicom. I have a wide monitor and take advantage of this by setting Options-&gt;Properties-&gt;Appearance-&gt;S...]]></description>
                        <content:encoded><![CDATA[<p>Hello,</p>
<p>This has become more problematic lately as I'm working quite a bit in minicom. I have a wide monitor and take advantage of this by setting Options-&gt;Properties-&gt;Appearance-&gt;Size and Behavior to 141 columns and 35 rows.</p>
2
3
<p>When I'm running minicom, those dimensions don't change, but as soon as I exit back to the shell, the columns change from 141 to 80:</p>
4
5
6
<p> </p>
<p>I've tried going to Options-&gt;Reset Terminal and this changes the screen to my default black letters on a white background, but the size is still 80 columns and 35 rows.</p>
7
<p>When this happens, I close the session and have to remember to choose "No" when prompted with, "The current connection file has been modified and has not been saved. Do you want to save this file before you exit?"</p>
<p>When the Appearance setting says, "Scale font, keep rows and columns FIXED", to me this means it should stay "fixed" at 141 x 35 no matter what escape sequence is emitted by the running program.</p>
<p>When the behavior is set to "fixed", can AT ignore a program's escape sequence that changes the number of columns? Or is there some other work around?</p>]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/configurationissues/appearance-option-scale-font-keep-rows-and-columns-fixed-changes-when-exiting-linux-program-minicom/</guid>
                    </item>
				                    <item>
                        <title>Backing up Global settings stored in the registry</title>
                        <link>https://www.celestialsoftware.net/community/configurationissues/backing-up-global-settings-stored-in-the-registry/</link>
                        <pubDate>Thu, 15 Jan 2026 01:10:56 +0000</pubDate>
                        <description><![CDATA[This topic was inspired by the old thread which concludes by saying they are saved in the following registry key:
 
HKEY_CURRENT_USER\\Software\\Celestial S...]]></description>
                        <content:encoded><![CDATA[<p>This topic was inspired by the old thread (https://www.celestialsoftware.net/community/absolutetelnetgeneral/#post-473) which concludes by saying they are saved in the following registry key:</p>
<p> </p>
<p>HKEY_CURRENT_USER\\Software\\Celestial Software\\AbsoluteTelnet</p>
<p> </p>
<p>I exported that key and it looks like the important pieces to backup are:</p>
<ol>
<li>"usebooleancolor"="false"</li>
<li>"appoptions14"=hex:00,10,26,59,cd,41,b4,27,9a,0d,80,f3,66,e2,01,a5,19</li>
<li>"appoptions15"=hex:26,17,b9,2c</li>
<li>"FTPDIR"="config"</li>
<li>"AVisual"="YES"</li>
<li>"STARTUP"="three"</li>
<li>"AUTHFORWARD"="yes"</li>
<li>"COD"="no"</li>
<li>"SUTF8"="yes"</li>
</ol>
<p>I don't need to know what these control though I can guess about some, what I'm looking for are those items in the above list that could cause something to break if they were imported into a new instance of the same version of AT that they were exported from?</p>
<p> </p>
<p> </p>
<p> </p>]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/configurationissues/backing-up-global-settings-stored-in-the-registry/</guid>
                    </item>
				                    <item>
                        <title>Launching AbsoluteTelnet triggers Windows Standard-Apps</title>
                        <link>https://www.celestialsoftware.net/community/absolutetelnetgeneral/launching-absolutetelnet-triggers-windows-standard-apps/</link>
                        <pubDate>Sun, 04 Jan 2026 16:13:43 +0000</pubDate>
                        <description><![CDATA[Hi, I&#039;m using AbsoluteTelnet 13.15 on a Windows 11 computer.
Each time I start AbsoluteTelnet either from the Windows Start pad or by doubleclicking a *.tnt file AbsoluteTelnet opens - and ...]]></description>
                        <content:encoded><![CDATA[<p>Hi, I'm using AbsoluteTelnet 13.15 on a Windows 11 computer.</p>
<p>Each time I start AbsoluteTelnet either from the Windows Start pad or by doubleclicking a *.tnt file AbsoluteTelnet opens - and with it the Windows setting App -&gt; Standard App.</p>
<p>There are Standard Apps for SFTP (not Absolute Telnet), SSH and Telnet (both set to AbsoluteTelnet). As these settings are ok I don't change them.</p>
<p>Why is this triggered by launching Absolute Telenet?</p>]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Michael Steidl</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/absolutetelnetgeneral/launching-absolutetelnet-triggers-windows-standard-apps/</guid>
                    </item>
				                    <item>
                        <title>Forum search result links don&#039;t seem to work the way I expect</title>
                        <link>https://www.celestialsoftware.net/community/absolutetelnetgeneral/forum-search-result-links-dont-seem-to-work-the-way-i-expect/</link>
                        <pubDate>Sat, 27 Dec 2025 22:33:58 +0000</pubDate>
                        <description><![CDATA[Today I was interested in finding out where AT&#039;s global settings are stored. I used the single keyword &#039;registry&#039; as a starting point, and on the second page of the results...
I see a topic...]]></description>
                        <content:encoded><![CDATA[<p>Today I was interested in finding out where AT's global settings are stored. I used the single keyword 'registry' as a starting point, and on the second page of the results...</p>
<p>https://www.celestialsoftware.net/community/?wpfs=registry&amp;wpfpaged=2</p>
<p>I see a topic entitled, "Re: Where are settings stored?" (second topic on page).</p>
<p>It has a URL of: https://www.celestialsoftware.net/community/absolutetelnetgeneral/#post-473</p>
<p>I'm expecting that link on the link will take me directly to that post, unfortunately, it takes me to the first page of the latest AbsoluteTelnet General posts (screenshot attached in my next post on this topic).</p>
<p>What should the correct URL be to the specific post so I can read it?</p>
<div id="wpfa-945" class="wpforo-attached-file"><a class="wpforo-default-attachment" href="//www.celestialsoftware.net/wp-content/uploads/wpforo/default_attachments/1766874838-Screenshot-12_27_2025-2_15_08-PM_ver001.png" target="_blank" title="Screenshot-12_27_2025-2_15_08-PM_ver001.png"><i class="fas fa-paperclip"></i>&nbsp;Screenshot-12_27_2025-2_15_08-PM_ver001.png</a></div>]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/absolutetelnetgeneral/forum-search-result-links-dont-seem-to-work-the-way-i-expect/</guid>
                    </item>
				                    <item>
                        <title>A nostalgic look back at Absolute Telnet</title>
                        <link>https://www.celestialsoftware.net/community/absolutetelnetgeneral/a-nostalgic-look-back-at-absolute-telnet/</link>
                        <pubDate>Sat, 27 Dec 2025 22:07:12 +0000</pubDate>
                        <description><![CDATA[Hi Brian,
While searching the forum today, I got results going back 20 years. This made me curious to ask... what was the date and version  number of the first release?
Are there any parti...]]></description>
                        <content:encoded><![CDATA[<p>Hi Brian,</p>
<p>While searching the forum today, I got results going back 20 years. This made me curious to ask... what was the date and version  number of the first release?</p>
<p>Are there any particular milestones of note that perhaps those of us who haven't been around since the beginning might find interesting?</p>
<p>Best wishes for the holiday season and for 2026!</p>]]></content:encoded>
						                            <category domain="https://www.celestialsoftware.net/community/"></category>                        <dc:creator>Todd Andrews</dc:creator>
                        <guid isPermaLink="true">https://www.celestialsoftware.net/community/absolutetelnetgeneral/a-nostalgic-look-back-at-absolute-telnet/</guid>
                    </item>
							        </channel>
        </rss>
		
<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced{w3tc_pagecache_reject_reason}
Lazy Loading

Served from: www.celestialsoftware.net @ 2026-07-31 19:12:43 by W3 Total Cache
-->