tasks/lessons.md
catch {} blocks in the touched path. Either guard the risky call up front or catch the error into a variable and handle it intentionally with a safe fallback, warning, or typed default.src/js/types instead of defining them inline in logic files or tests. Logic modules should import shared types rather than owning them.src/js/types/index.ts and imported through the @/types alias. Do not import shared types from individual type files or relative types/index paths in feature code or tests.any in a bug fix if the surrounding library types can be modeled or narrowed. Prefer extracting the logic into a typed helper and adding regression tests for the corrected path.g_d0_, g_d1_, ...) per loaded document. Always normalize these before comparing font names across documents to avoid false positive style changes.soffice or LibreOffice WASM cannot convert pdf -> docx/pptx, test the exact filtered path such as --infilter=writer_pdf_import or --infilter=impress_pdf_import and inspect wrapper code for hardcoded capability gates.documentLoadWithOptions() is not the same as CLI --infilter. In the current WASM/LOK build, the options string is forwarded as FilterOptions, not media-descriptor FilterName, so passing FilterName=writer_pdf_import from JS does not force PDF to load as Writer or Impress.OperationType enum was declared in lok.hxx but the .cxx failed because of include ordering or missing header propagation.@@ headers, (2) remove entire file sections if no +/- lines remain, (3) verify the old-side line numbers still match the actual source (removing earlier hunks shifts offsets), (4) verify the - lines match the actual source text character-for-character (e.g. xInteraction vs uno::Reference<task::XInteractionHandler2>(pInteraction)).inputFilter support in ConversionOptions, browser.worker.ts, and buildLoadOptions(). The entire WASM rebuild was unnecessary and replacing browser.worker.global.js with a fork build caused a DeploymentException that broke all LibreOffice conversions.