Repository navigation
ContextPort 2.9.4 — DeepSeek Support and Staged Source Recovery
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:
- Capture loaded browser sources
- Reconcile late runtime and bundler sources
- Follow one bounded nested dependency depth
- 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
.mapresources SourceMapandX-SourceMapresponse headerssourceMappingURLdirectives- Inline Base64 or percent-encoded JSON maps
- Legacy
asset.js.mapfallback 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
mappingandcurrent_nodecompatibility - 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.