pi-claude-code-ui 1.0.77 → 1.0.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,12 @@
3
3
  > [!IMPORTANT]
4
4
  > **1.0.69 — package rename (permanent).** Canonical npm name is now [`pi-claude-code-ui`](https://www.npmjs.com/package/pi-claude-code-ui). `pi-claude-style-tools` is legacy and will not receive further releases. Install with `pi install npm:pi-claude-code-ui` or `npm i pi-claude-code-ui`.
5
5
 
6
+ ## 1.0.78 — 2026-08-22
7
+
8
+ ### Fixed
9
+
10
+ - **Hide transient Magic Context tags** — dynamically filter Magic Context tags (like `§N§`) from all Markdown view components in the Terminal UI. This covers thinking blocks, user messages, assistant prose, and subagent frames, without mutating the underlying message text content or breaking LLM prompt tracking.
11
+
6
12
  ## 1.0.77 — 2026-08-21
7
13
 
8
14
  ### Fixed
@@ -1783,7 +1783,7 @@ class ThinkingParagraph {
1783
1783
  _markdownTheme: ConstructorParameters<typeof Markdown>[3],
1784
1784
  _defaultTextStyle?: ConstructorParameters<typeof Markdown>[4],
1785
1785
  ) {
1786
- this.text = text;
1786
+ this.text = stripTransientMagicContextTags(text);
1787
1787
  }
1788
1788
 
1789
1789
  private thinkingMarkdown(): InstanceType<typeof Markdown> {
@@ -1961,6 +1961,16 @@ function patchCustomMessageRender(): void {
1961
1961
  syncToolBackgroundMode();
1962
1962
  const cached = messageRenderCacheHit(this, width);
1963
1963
  if (cached) return cached;
1964
+ visitMarkdownDescendants(this, (child) => {
1965
+ const markdownAny = child as any;
1966
+ if (typeof markdownAny.text === "string") {
1967
+ const stripped = stripTransientMagicContextTags(markdownAny.text);
1968
+ if (stripped !== markdownAny.text) {
1969
+ markdownAny.text = stripped;
1970
+ child.invalidate?.();
1971
+ }
1972
+ }
1973
+ });
1964
1974
  const lines = originalRender.call(this, width);
1965
1975
  if (!Array.isArray(lines)) return lines;
1966
1976
  const result = isSubagentNotificationMessage(this?.message)
@@ -2058,6 +2068,13 @@ function patchUserMessageRender(): void {
2058
2068
  if (cached) return cached;
2059
2069
  visitMarkdownDescendants(this, (child) => {
2060
2070
  const markdownAny = child as any;
2071
+ if (typeof markdownAny.text === "string") {
2072
+ const stripped = stripTransientMagicContextTags(markdownAny.text);
2073
+ if (stripped !== markdownAny.text) {
2074
+ markdownAny.text = stripped;
2075
+ child.invalidate?.();
2076
+ }
2077
+ }
2061
2078
  makeMarkdownLinksCopySafe(child);
2062
2079
  if (markdownAny.defaultTextStyle?.bgColor) {
2063
2080
  markdownAny.defaultTextStyle.bgColor = undefined;
@@ -2087,6 +2104,16 @@ function patchAssistantMessages(): void {
2087
2104
  proto.render = function patchedAssistantMessageRender(width: number) {
2088
2105
  const cached = messageRenderCacheHit(this, width);
2089
2106
  if (cached) return cached;
2107
+ visitMarkdownDescendants(this, (child) => {
2108
+ const markdownAny = child as any;
2109
+ if (typeof markdownAny.text === "string") {
2110
+ const stripped = stripTransientMagicContextTags(markdownAny.text);
2111
+ if (stripped !== markdownAny.text) {
2112
+ markdownAny.text = stripped;
2113
+ child.invalidate?.();
2114
+ }
2115
+ }
2116
+ });
2090
2117
  const lines = originalRender.call(this, width);
2091
2118
  if (!Array.isArray(lines) || lines.length === 0) return lines;
2092
2119
  if ((this as any).hasToolCalls) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-claude-code-ui",
3
- "version": "1.0.77",
3
+ "version": "1.0.78",
4
4
  "description": "Claude Code-style grouped tool rows for pi with Ctrl+O/Ctrl+Shift+O previews, math rendering, and consistent built-in, MCP, and custom tool rendering",
5
5
  "keywords": [
6
6
  "pi-package",