Skip to content

ContextPort 2.9.4 — DeepSeek Support and Staged Source Recovery

Choose a tag to compare

@DeerSpotter DeerSpotter released this 11 Jul 13:06
· 127 commits to main since this release
78c11fd

ContextPort 2.9.4 — DeepSeek Support and Staged Source Recovery

ContextPort 2.9.4 expands provider support, improves long-conversation reliability, and substantially rebuilds the Developer Sources workflow for safer, more complete source recovery.

This release includes DeepSeek Save Context support, improved ChatGPT conversation recovery, combined inline JavaScript capture, and a staged SourceMap workflow designed to avoid the crashes and memory spikes seen in earlier builds.

Highlights

DeepSeek Save Context

DeepSeek conversations can now be saved directly into ContextPort Memory.

The extractor uses source-backed DeepSeek role evidence instead of guessing message roles by position. User and assistant turns remain in their original order, and ambiguous rows are not assigned a fabricated role.

DeepSeek formatting now preserves:

  • Headings and paragraphs
  • Ordered and unordered lists
  • Blockquotes
  • Code blocks and inline code
  • Tables
  • Links
  • Bold and emphasized text
  • Explicit line breaks

This prevents DeepSeek responses from collapsing into a single wall of text.

Safer Developer Sources workflow

Developer Sources is now a fully manual, staged workflow. Opening the Dev area does not automatically start a source scan.

The static source inspector is divided into the following steps:

  1. Capture loaded browser sources
  2. Reconcile late runtime and bundler sources
  3. Follow one bounded nested dependency depth
  4. Discover, validate, and decode SourceMaps through three separate child stages

This separation reduces peak memory use and makes it easier to identify exactly where a provider-specific failure occurs.

Staged SourceMap recovery

SourceMap processing is now split into:

  • Step 4A — Discover SourceMaps
  • Step 4B — Validate SourceMaps
  • Step 4C — Decode Original Sources

Steps 1 through 3 no longer download .map files prematurely.

SourceMap discovery supports:

  • Browser-observed .map resources
  • SourceMap and X-SourceMap response headers
  • sourceMappingURL directives
  • Inline Base64 or percent-encoded JSON maps
  • Legacy asset.js.map fallback locations
  • Authenticated provider cookies
  • Referer and User-Agent forwarding
  • Signed URL query strings

Each candidate is validated independently. Failed candidates remain visible with their URL and failure reason instead of disappearing from the final capture.

When a valid map contains sourcesContent, ContextPort extracts the embedded original source files into individual searchable entries.

Combined inline JavaScript

Inline scripts are now displayed and exported as one Combined Inline JavaScript source per provider session.

ContextPort may still read large scripts internally in bounded pieces for stability, but those implementation chunks are no longer exposed to the user.

Original <script> element boundaries remain visible as comments inside the reconstructed combined source.

Improved ChatGPT conversation recovery

This release strengthens ChatGPT Save Context behavior for long and branched conversations.

Improvements include:

  • Complete active-branch recovery
  • Pagination support
  • Legacy mapping and current_node compatibility
  • Exclusion of inactive alternate branches
  • Reduced quadratic scanning behavior in long chats
  • More stable capture while ChatGPT is actively generating a response

Memory export reliability

The Developer Sources Memory ZIP now preserves the final source-capture stage.

Running Step 4C no longer erases Step 4A or Step 4B evidence when no SourceMaps validate. Successful maps, decoded originals, and failed candidates can coexist in the same final archive.

Capture safeguards

The source recovery engine uses bounded limits to reduce crashes while retaining useful evidence:

  • Up to 128 parent assets
  • Up to 128 SourceMap candidates
  • Up to 24 MB per SourceMap response
  • Up to 1,024 embedded original source entries
  • Up to 8 MB per original source
  • One map validated and decoded at a time
  • Temporary disk staging between validation and decoding
  • Shared retained-text memory budget

Resources that exceed a limit remain represented as metadata instead of silently disappearing.

Supported providers

The static source and context workflows support:

  • ChatGPT
  • Claude
  • Gemini
  • Grok
  • DeepSeek

Provider behavior can differ, particularly when a service does not publish SourceMaps or returns HTTP 404 for map files.

Validation

The source-controlled iOS build completed:

  • XcodeGen project generation
  • Unsigned Xcode archive
  • IPA packaging
  • IPA artifact upload
  • Generated Xcode project artifact upload

Build information:

  • Version: 2.9.4
  • Build: 77
  • Bundle identifier: com.deerspotter.ChatGPTWebView
  • Minimum iOS version: iOS 16
  • IPA SHA-256: 55dbbdf579ccdfcba48e717c0b125331b5f2a74891aba220204b41dac3171462

Testing requested

Before treating this build as fully accepted, testers should verify:

  • DeepSeek message roles and Markdown formatting
  • ChatGPT long-conversation responsiveness
  • Complete ChatGPT active-branch Save Context
  • One combined inline JavaScript source per provider
  • No premature SourceMap downloads during Steps 1 through 3
  • SourceMap candidate evidence after Step 4A
  • Validation successes and failures after Step 4B
  • Embedded original sources after Step 4C when available
  • Final Memory ZIP reflects the same completed stage visible in the app

Not included yet

Live request interception is not part of this release.

The planned Live Interceptor will be developed separately from the existing static source inspector so that continuous network recording cannot destabilize static source recovery.

Installation note

This build is distributed as an unsigned iOS IPA and requires the same sideloading or signing process used for previous ContextPort test builds.

Thank you to everyone testing provider-specific capture behavior and sharing physical-device Memory exports. Those captures directly informed the stability and source-recovery changes in this release.