* fix: This means the single-column table fix never actually works.
* fix: parseInt in map passed index to radix
* fix: Column sizing
* fix: Incorrect corner radius on single column table
* feat: Use signed urls (ttl configurable) for attachment urls in "copy markdown"
* make signed urls a parameter, not a instance configuration
* feat(fix): copy as markdown: refactor toMarkdown (use signed urls)
* attempt to fix tests failing
* adjust markdown exporting in revisions too
* formatting
---------
Co-authored-by: Tom Moor <tom@getoutline.com>
* perf: Add timeout and optimize URL unfurl performance
Fixes issue where urls.unfurl endpoint could take 15+ seconds due to external API timeouts and sequential plugin execution.
Changes:
- Add timeout support to fetch utility with AbortController (defaults to no timeout, configurable per request)
- Add 10 second timeout to Iframely plugin requests
- Add early URL pattern validation to GitHub and Linear plugins to avoid unnecessary database queries
- Add try-catch error handling to URL parsing in GitHub and Linear plugins
This reduces worst-case unfurl time from 15+ seconds to ~10 seconds maximum, and eliminates unnecessary overhead for URLs that don't match plugin patterns.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* lint
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
* Add backlinks support for publicly shared documents
Include backlinks in the documents.info API response for publicly shared documents, filtering to only show backlinks that exist within the shared tree.
Changes:
- Add findSourceDocumentIdsInSharedTree method to Relationship model to find backlinks within allowed document IDs
- Export getAllIdsInSharedTree helper from shareLoader for reuse
- Update presentDocument to accept and include backlinkIds in response
- Modify documents.info endpoint to fetch and include backlinks for public shares
- Add backlinkIds property to Document model and update backlinks getter to use it when available
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* refactor
* refactor
* wip
* tsc
* fix: Signed-out view throw, spacing
* revert
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add "mermaid" as the primary language identifier for new diagrams
- Maintain backward compatibility with existing "mermaidjs" blocks
- Create isMermaid() helper function for consistent language checking
- Update all Mermaid-related code to support both language variants
- Update CSS selectors to style both "mermaid" and "mermaidjs" blocks
- Update server-side HTML export to handle both language formats
- Add tests to verify backward compatibility
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Fixes#10255 where LaTeX commands containing \n (like \neg, \neq, \nu)
were being incorrectly interpreted as newline characters when pasted.
The tables rule was processing all inline content and splitting on \n
sequences, which broke LaTeX math expressions. This fix skips processing
for math_inline tokens, similar to the existing skip for code_inline.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>