Repository navigation
Nisaba v0.2.0 — Importación de ChatGPT, Codex en la nube y multimedia bajo demanda
ChatGPT & Cloud Codex Imports with On-Demand Multimedia
🇪🇸 Español · 🇬🇧 English
🇪🇸 Español
La versión v0.2.0 culmina la hoja de ruta del archivo web cifrado de Nisaba incorporando el adaptador completo para exportaciones de ChatGPT (gpt-…) y tareas de Codex en la nube (cxg-…, fuente Codex-ChatGPT), además de un sistema eficiente de carga bajo demanda para archivos adjuntos multimedia (.dat).
Esta actualización permite centralizar en tu propia base cifrada (tablilla-web.db) todo tu historial de OpenAI junto al de Claude.ai, manteniendo intacta la regla fundacional de Nisaba: la tablilla solo crece.
🧠 Importación de ChatGPT y Codex en la nube
Compatible con conversaciones identificadas mediante los prefijos gpt-xxxxxxxx (ChatGPT) y cxg-xxxxxxxx (Codex-ChatGPT):
- Soporte para historiales gigantes multi-archivo:
- Procesa automáticamente archivos partidos
conversations-000.json…conversations-NNN.jsono el clásicoconversations.json. - Importa las sesiones de Codex en la nube (
codex.json) vinculando repositorios, ramas de trabajo, modificaciones de código y diffs de PR bajo la fuente dedicadaCodex-ChatGPT.
- Procesa automáticamente archivos partidos
- Estructura en árbol
mappingsin pérdida de ramas:- Recorre el grafo de mensajes desde
current_nodehacia la raíz para fijar la rama principal activa (oculto = 0) para búsquedas FTS5 y lectura limpia. - Comprime los caminos técnicos intermedios (
message: null,reasoning_recap, mensajes internos de sistema) hacia su ancestro visible más cercano para mantener la genealogía intacta. - Preserva las respuestas regeneradas y preguntas editadas como ramas alternativas (
oculto = 1), accesibles en cualquier momento desde el selector de ramas en el panel lateral Detalles.
- Recorre el grafo de mensajes desde
- Razonamiento, voz y herramientas:
- Extrae bloques de razonamiento (
content_type: "thoughts") como contenido desplegable. - Conserva íntegras las transcripciones de notas de voz (
audio_transcription). - Mapea citas web y referencias de búsqueda (
search_result_groupsycontent_references) como fuentes numeradas clicables en el panel de Detalles. - Descarta de forma estricta archivos irrelevantes como
ads.json(perfil publicitario) ychat.html.
- Extrae bloques de razonamiento (
🛡️ Reconstrucción en memoria de ZIPs cortados al descargar
En exportaciones de gran volumen (~3 GB), OpenAI coloca todos los archivos .json al principio (~80 MB) y miles de archivos .dat al final. Si la descarga del navegador se interrumpe antes de escribir el directorio central final (PK\x05\x06):
- El lector de Nisaba analiza las cabeceras locales individuales (
PK\x03\x04). - Si todas las conversaciones
.jsonestán íntegras, reconstruye en memoria RAM el directorio central (FuenteZip::ConDirectorioVirtual) sin alterar ni duplicar el archivo en disco. - Se importan todas las conversaciones completas emitiendo un aviso informativo en el resumen de importación.
🖼️ Multimedia bajo demanda desde el ZIP (imágenes y audios)
Para evitar inflar la base de datos tablilla-web.db con gigabytes de binarios:
- La base de datos almacena el texto, las transcripciones de voz y la correspondencia con los archivos
.dat(conversation_asset_file_names.json). - Mientras el archivo web está desbloqueado, pulsar sobre un adjunto en el panel Detalles invoca
cargar_asset_web, que lee únicamente ese archivo en RAM desde el ZIP (tope de seguridad de 50 MiB), detecta su tipo MIME mediante firmas mágicas (PNG, JPEG, WebP, GIF, WAV, MP3, OGG) y genera una Data URL (data:<mime>;base64,…). - Sin temporales en claro: ningún archivo multimedia se extrae a
/tmpni queda en claro en disco. Al cerrar la ventana o bloquear el archivo web, los archivos quedan inaccesibles.
⌨️ Nuevos comandos en la terminal (nisaba)
Importar exportaciones de ChatGPT
nisaba import <archivo.zip>(Alias en español: nisaba importar <archivo.zip>)
Filtrar por las nuevas fuentes web
nisaba search "consulta" --web --source chatgpt
nisaba search "consulta" --web --source codex-chatgpt(Alias en español: nisaba buscar "consulta" --web --fuente chatgpt y --fuente codex-chatgpt)
Consultar una conversación de ChatGPT o Codex nube
nisaba show gpt-xxxxxxxx
nisaba show cxg-xxxxxxxx(Alias en español: nisaba ver gpt-xxxxxxxx)
💾 Copias de seguridad
Recuerda que para respaldar o mover tu archivo web cifrado debes conservar ambos archivos juntos:
tablilla-web.db(base de datos cifrada con SQLCipher)boveda.json(bóveda con la clave maestra envuelta con Argon2id + AES-256-GCM)
Ubicaciones:
- Linux:
~/.local/share/nisaba/ - Windows:
%APPDATA%\nisaba\
🇬🇧 English
Version v0.2.0 completes the encrypted web archive roadmap in Nisaba by adding a full-featured import adapter for ChatGPT exports (gpt-…) and Cloud Codex tasks (cxg-…, source Codex-ChatGPT), alongside an efficient on-demand streaming engine for multimedia attachments (.dat).
This update allows you to centralize your entire OpenAI history alongside Claude.ai within your own encrypted SQLite database (tablilla-web.db), strictly adhering to Nisaba's core principle: the tablet only grows.
🧠 ChatGPT and Cloud Codex Imports
Full compatibility with conversations prefixed by gpt-xxxxxxxx (ChatGPT) and cxg-xxxxxxxx (Codex-ChatGPT):
- Support for Multi-Part Split Archives:
- Seamlessly imports multi-file histories split across
conversations-000.json…conversations-NNN.json, as well as standard singleconversations.jsonfiles. - Automatically imports Cloud Codex tasks (
codex.json) preserving repositories, branches, file changes, and PR diffs under the dedicatedCodex-ChatGPTsource.
- Seamlessly imports multi-file histories split across
- Lossless
mappingTree Structure:- Traverses the message graph upward from
current_nodeto determine the active linear branch (oculto = 0) for fast FTS5 searching and distraction-free reading. - Compresses intermediate technical nodes (
message: null,reasoning_recap, internal system prompts) directly into their closest visible parent to keep tree integrity intact. - Retains regenerated assistant responses and edited prompts as alternative branches (
oculto = 1), easily switchable at any time from the Details panel.
- Traverses the message graph upward from
- Reasoning, Voice Transcripts, and Tools:
- Maps model reasoning blocks (
content_type: "thoughts") as collapsible sections. - Preserves full voice note transcriptions (
audio_transcription). - Maps search citations and web references (
search_result_groupsandcontent_references) to clickable numbered sources in the Details panel. - Safely ignores non-essential files such as
ads.json(ad profiling) andchat.html.
- Maps model reasoning blocks (
🛡️ In-Memory Central Directory Recovery for Truncated ZIPs
On large exports (~3 GB), OpenAI writes all .json files at the very beginning (~80 MB) followed by thousands of .dat media files. If browser downloads terminate before appending the final Central Directory record (PK\x05\x06):
- Nisaba inspects Local File Headers (
PK\x03\x04). - If conversation
.jsonfiles are intact, it synthesizes the central directory in RAM (FuenteZip::ConDirectorioVirtual) without altering or duplicating the archive on disk. - All complete conversations are imported safely, accompanied by an explicit summary warning.
🖼️ On-Demand Multimedia Preview from ZIP (Images & Audio)
To prevent tablilla-web.db from ballooning with gigabytes of binary BLOBs:
- The database stores text, voice transcriptions, and file metadata mappings (
conversation_asset_file_names.json). - While the web archive is unlocked, requesting an attachment preview loads only that specific
.datentry directly into memory from the ZIP (enforcing a 50 MiB security ceiling), sniffing magic bytes to determine the MIME type (PNG, JPEG, WebP, GIF, WAV, MP3, OGG) and serving it as a Data URL (data:<mime>;base64,…). - Zero temporary files: no plaintext multimedia is ever written to
/tmpor disk. Locking the vault immediately revokes asset access.
⌨️ CLI Commands (nisaba)
Import ChatGPT Exports
nisaba import <file.zip>(Spanish alias: nisaba importar <file.zip>)
Filter by Web Sources
nisaba search "query" --web --source chatgpt
nisaba search "query" --web --source codex-chatgpt(Spanish equivalents: nisaba buscar "query" --web --fuente chatgpt and --fuente codex-chatgpt)
Inspect a ChatGPT or Cloud Codex Session
nisaba show gpt-xxxxxxxx
nisaba show cxg-xxxxxxxx(Spanish equivalent: nisaba ver gpt-xxxxxxxx)
💾 Backups
To back up or migrate your encrypted web archive, always keep both files together:
tablilla-web.db(SQLCipher encrypted database)boveda.json(master key wrapped with Argon2id + AES-256-GCM)
Storage paths:
- Linux:
~/.local/share/nisaba/ - Windows:
%APPDATA%\nisaba\