Skip to content
Merged
Show file tree
Hide file tree
Changes from 21 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
4a3b253
docs: add comprehensive spec for image URL expiration fix
claude Nov 27, 2025
4d8dcc9
docs: update spec with simpler implementation approach
claude Nov 27, 2025
ebcd2ab
fix(images): prevent URL expiration by immediate download
claude Nov 27, 2025
02a465b
style: fix prettier formatting in image processing files
claude Nov 27, 2025
58f9f6a
refactor: address code review improvements
claude Nov 27, 2025
9bbf33b
fix(tests): initialize urlGenerationTime to prevent timing test failures
claude Nov 27, 2025
9a1a1f8
refactor: move EXPIRATION_INDICATORS to module-level constant
claude Nov 27, 2025
232b4a3
fix(notion-fetch): add final pass validation for missed S3 URLs
luandro Nov 27, 2025
a9f7737
fix(notion-fetch): improve S3 URL detection and incremental sync
luandro Nov 27, 2025
7857815
fix(notion-fetch): increase processing timeouts for image-heavy pages
luandro Nov 28, 2025
5638c43
fix(notion-fetch): prevent infinite retry loops with progress validation
luandro Dec 1, 2025
458ae1f
test(notion-fetch): add retry loop tests and improve page selection
luandro Dec 1, 2025
7408106
fix(notion-fetch): add Bun regex workaround and S3 diagnostics
luandro Dec 1, 2025
b5e4b08
refactor(notion-fetch): extract runContentGeneration for reusability
luandro Dec 1, 2025
84cd580
test(notion-fetch): improve test mocks and add S3 tracking to cache
luandro Dec 1, 2025
3a55244
test(notion-fetch): add comprehensive Bun regex bug documentation
luandro Dec 1, 2025
debb8ba
refactor(notion-fetch): extract retry logic into dedicated module
luandro Dec 1, 2025
2d5593f
fix(notion-fetch): harden S3 image detection fallback
luandro Dec 1, 2025
7952263
fix(i18n): correct translations and formatting in ES and PT files
luandro Dec 1, 2025
3d4ab4e
test(notion-fetch): improve test reliability and coverage
luandro Dec 1, 2025
8fc4c52
test(notion-fetch): improve S3 URL handling test reliability
luandro Dec 3, 2025
c6a34a1
fix(notion-fetch): replace require() with ESM import in imageReplacer
luandro Dec 4, 2025
9b0d621
test: fix TypeScript type safety in Notion fetch tests
luandro Dec 4, 2025
7aba76c
test: improve type safety across remaining test files
luandro Dec 4, 2025
d9b4504
style: fix Prettier formatting in test files
luandro Dec 4, 2025
4e44eb3
refactor: improve test utilities and spinner type safety
luandro Dec 4, 2025
a12bf39
style: fix Prettier formatting in spinnerManager
luandro Dec 4, 2025
c20135d
refactor(TOC): use React.JSX.Element type annotation
luandro Dec 4, 2025
d426bf9
docs(testing): add comprehensive Vitest mocking best practices
luandro Dec 4, 2025
6c4a0f7
fix(scripts): allow empty markdown content in retry processor
luandro Dec 4, 2025
2fd2f54
fix(scripts): correct retry metrics calculation when max attempts exh…
luandro Dec 5, 2025
84cda0d
fix(scripts): correct retry count for no-progress detection path
luandro Dec 5, 2025
839608f
fix(scripts): accumulate totalSaved across all retry attempts
luandro Dec 5, 2025
23a7369
test(scripts): fix test mocks to match delta-based implementation
luandro Dec 5, 2025
4be2879
feat(notion-fetch): add feature flag system and metrics logging for r…
luandro Dec 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
650 changes: 650 additions & 0 deletions IMAGE_URL_EXPIRATION_SPEC.md

Large diffs are not rendered by default.

162 changes: 162 additions & 0 deletions i18n/es/code.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,167 @@
"theme.TOC.title": {
"message": "En esta página",
"description": "Title for the table of contents section"
},
"Introduction": {
"message": "Introducción"
},
"Preparing to Use CoMapeo": {
"message": "Preparación para el uso de CoMapeo"
},
"Understanding CoMapeo's Core Concepts and Functions": {
"message": "Nueva Página"
},
"Getting Started Essentials": {
"message": "Nuevo título de sección"
},
"Gathering the Right Equipment for CoMapeo": {
"message": "Reunir el Equipo Adecuado para CoMapeo"
},
"Device Setup and Maintenance for CoMapeo": {
"message": "Nueva Página"
},
"Installing CoMapeo & Onboarding": {
"message": "Nueva Página"
},
"Initial Use and CoMapeo Settings": {
"message": "Nueva Página"
},
"Uninstalling CoMapeo": {
"message": "Nueva Página"
},
"Customizing CoMapeo": {
"message": "Nueva Palanca"
},
"Organizing Key Materials for Projects": {
"message": "Nueva Página"
},
"Building a Custom Categories Set": {
"message": "Nueva Página"
},
"Building Custom Background Maps": {
"message": "Nueva Página"
},
"Observations & Tracks": {
"message": "Nuevo título de sección"
},
"Gathering Observations & Tracks": {
"message": "Recopilación de observaciones"
},
"Creating a New Observation": {
"message": "Nueva Página"
},
"Creating a New Track": {
"message": "Nueva Página"
},
"Reviewing Observations": {
"message": "Revisión de observaciones"
},
"Exploring the Observations List": {
"message": "Nueva Página"
},
"Reviewing an Observation": {
"message": "Nueva Página"
},
"Editing Observations": {
"message": "Nueva Página"
},
"Data Privacy & Security": {
"message": "Nuevo título de sección"
},
"Encryption and Security": {
"message": "Nueva Página"
},
"Managing Data Privacy & Security": {
"message": "Gestión de datos y privacidad"
},
"Using an App Passcode for Security": {
"message": "Nueva Página"
},
"Adjusting Data Sharing and Privacy": {
"message": "Nueva Página"
},
"Mapping with Collaborators": {
"message": "Nueva Página"
},
"Managing Projects": {
"message": "Gestión de proyectos"
},
"Understanding Projects": {
"message": "Nueva Página"
},
"Creating a New Project": {
"message": "Nueva Página"
},
"Changing Categories Set": {
"message": "Nueva Página"
},
"Managing a Team": {
"message": "Nueva Página"
},
"Inviting Collaborators": {
"message": "Nueva Página"
},
"Ending a Project": {
"message": "Nueva Página"
},
"Exchanging Project Data": {
"message": "Intercambio de Datos del Proyecto"
},
"Understanding How Exchange Works": {
"message": "Nueva Página A"
},
"Using Exchange Offline": {
"message": "Nueva Página"
},
"Using a Remote Archive": {
"message": "Nueva Página"
},
"Moving Observations & Tracks Outside of CoMapeo": {
"message": "Compartir observaciones fuera de CoMapeo"
},
"Sharing a Single Observation and Metadata": {
"message": "Nueva Página"
},
"Exporting all Observations": {
"message": "Nueva Página"
},
"Using Observations outside of CoMapeo": {
"message": "Nueva Página"
},
"Miscellaneous": {
"message": "Misceláneas"
},
"FAQ": {
"message": "Preguntas frecuentes"
},
"Glossary": {
"message": "Glosario"
},
"Troubleshooting": {
"message": "Nueva Palanca"
},
"Common Solutions": {
"message": "Nueva Página"
},
"Troubleshooting: Setup and Customization": {
"message": "Nueva Página"
},
"Troubleshooting: Observations and Tracks": {
"message": "Nueva Página"
},
"Troubleshooting: Data Privacy and Security": {
"message": "Nueva Página"
},
"Troubleshooting: Mapping with Collaborators": {
"message": "Nueva Página"
},
"Troubleshooting: Moving Observations and Tracks outside of CoMapeo": {
"message": "Nueva Página"
},
"Elementos de contenido de prueba": {
"message": "Elementos de contenido de prueba"
},
"Testing links": {
"message": "Nueva Página"
}
}
162 changes: 162 additions & 0 deletions i18n/pt/code.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,167 @@
"theme.TOC.title": {
"message": "Nesta página",
"description": "Title for the table of contents section"
},
"Introduction": {
"message": "Introdução"
},
"Preparing to Use CoMapeo": {
"message": "Preparando para usar do CoMapeo (Mobile)"
},
"Understanding CoMapeo's Core Concepts and Functions": {
"message": "Nova Página"
},
"Getting Started Essentials": {
"message": "Novo título da seção"
},
"Gathering the Right Equipment for CoMapeo": {
"message": "Reunindo o Equipamento Certo para o CoMapeo"
},
"Device Setup and Maintenance for CoMapeo": {
"message": "Nova Página"
},
"Installing CoMapeo & Onboarding": {
"message": "Nova Página"
},
"Initial Use and CoMapeo Settings": {
"message": "Nova Página"
},
"Uninstalling CoMapeo": {
"message": "Nova Página"
},
"Customizing CoMapeo": {
"message": "Novo Alternar"
},
"Organizing Key Materials for Projects": {
"message": "Nova Página"
},
"Building a Custom Categories Set": {
"message": "Nova Página"
},
"Building Custom Background Maps": {
"message": "Nova Página"
},
"Observations & Tracks": {
"message": "Novo título da seção"
},
"Gathering Observations & Tracks": {
"message": "Coletando Observações"
},
"Creating a New Observation": {
"message": "Nova Página"
},
"Creating a New Track": {
"message": "Nova Página"
},
"Reviewing Observations": {
"message": "Revisando Observações"
},
"Exploring the Observations List": {
"message": "Nova Página"
},
"Reviewing an Observation": {
"message": "Nova Página"
},
"Editing Observations": {
"message": "Nova Página"
},
"Data Privacy & Security": {
"message": "Novo título da seção"
},
"Encryption and Security": {
"message": "Nova Página"
},
"Managing Data Privacy & Security": {
"message": "Gerenciamento de dados e privacidade"
},
"Using an App Passcode for Security": {
"message": "Nova Página"
},
"Adjusting Data Sharing and Privacy": {
"message": "Nova Página"
},
"Mapping with Collaborators": {
"message": "Nova Página"
},
"Managing Projects": {
"message": "Gerenciando Projetos"
},
"Understanding Projects": {
"message": "Nova Página"
},
"Creating a New Project": {
"message": "Nova Página"
},
"Changing Categories Set": {
"message": "Nova Página"
},
"Managing a Team": {
"message": "Nova Página"
},
"Inviting Collaborators": {
"message": "Nova Página"
},
"Ending a Project": {
"message": "Nova Página"
},
"Exchanging Project Data": {
"message": "Troca de Dados do Projeto"
},
"Understanding How Exchange Works": {
"message": "Nova Página A"
},
"Using Exchange Offline": {
"message": "Nova Página"
},
"Using a Remote Archive": {
"message": "Nova Página"
},
"Moving Observations & Tracks Outside of CoMapeo": {
"message": "Compartilhando observações fora do CoMapeo"
},
"Sharing a Single Observation and Metadata": {
"message": "Nova Página"
},
"Exporting all Observations": {
"message": "Nova Página"
},
"Using Observations outside of CoMapeo": {
"message": "Nova Página"
},
"Miscellaneous": {
"message": "Variado"
},
"FAQ": {
"message": "Perguntas frequentes"
},
"Glossary": {
"message": "Glossário"
},
"Troubleshooting": {
"message": "Resolução de Problemas"
},
"Common Solutions": {
"message": "Nova Página"
},
"Troubleshooting: Setup and Customization": {
"message": "Nova Página"
},
"Troubleshooting: Observations and Tracks": {
"message": "Nova Página"
},
"Troubleshooting: Data Privacy and Security": {
"message": "Nova Página"
},
"Troubleshooting: Mapping with Collaborators": {
"message": "Nova Página"
},
"Troubleshooting: Moving Observations and Tracks outside of CoMapeo": {
"message": "Nova Página"
},
"Elementos de Conteúdo de Teste": {
"message": "Elementos de Conteúdo de Teste"
},
"Testing links": {
"message": "Nova Página"
}
}
Loading