Tyrrrz
98e294f7e4
Fix tests, clean up
2026-02-27 18:36:16 +02:00
Tyrrrz
b22e786449
Fix the shrug emoji not rendering correctly
2026-02-27 18:35:53 +02:00
Tyrrrz
675d910ea3
Formatting
2026-02-27 17:56:29 +02:00
Tyrrrz
4674c517e3
Refactor
2026-02-27 17:39:36 +02:00
Tyrrrz
b660edfe78
Clean up after last PR
2026-02-27 17:30:06 +02:00
Tyrrrz
532470e3db
Fix format
2026-02-27 15:42:47 +02:00
farley128
b533e08d74
Implement exporting for forwarded messages ( #1451 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Oleksii Holub <1935960+Tyrrrz@users.noreply.github.com >
2026-02-27 15:41:31 +02:00
Copilot
21c2398e2a
Cleanup: fix filename typo, replace AsyncNonKeyedLocker, drop WithIndex(), use ProcessStartInfo ctor arg ( #1492 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-02-27 14:42:07 +02:00
Tyrrrz
2e47c73388
Use range operator for substring extraction in StringSegment.ToString()
2026-02-27 11:30:09 +02:00
Tyrrrz
2d49146c74
Rename transformFallback parameter to fallbackTransform for clarity
2026-02-27 10:24:39 +02:00
Copilot
c59374598a
Migrate to Centralized NuGet Package Management (CPM) ( #1489 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-02-26 21:29:46 +02:00
Tyrrrz
01d0203445
Clean up
2026-02-26 21:24:20 +02:00
Copilot
c4bfb3424e
Add option to reverse message order in exports ( #1487 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-02-26 21:14:57 +02:00
Copilot
522caba420
Fix standard emoji not rendering as Discord-style images ( #1488 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-02-26 17:20:04 +02:00
Copilot
ad1170b42e
Fix duplicate threads causing a crash when exporting in parallel ( #1486 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-02-26 17:19:07 +02:00
Copilot
d2c0e2169b
Increase media asset URL hash length to eliminate collision risk with --reuse-media ( #1485 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-02-26 16:35:18 +02:00
Copilot
dd7196b6a5
Resolve thread mentions on demand ( #1480 )
...
* Initial plan
* Fix unresolved thread mentions in HTML export (#1261 )
- Add TryGetChannelAsync to DiscordClient for on-demand channel/thread lookup
- Add PopulateChannelAsync to ExportContext with negative caching
- Update HtmlMarkdownVisitor to resolve thread mentions on demand
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Refactor GetChannelAsync to use TryGetChannelAsync for parent resolution
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Add test for thread mention resolution in HTML export
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Apply PopulateChannelAsync to PlainTextMarkdownVisitor; add JSON thread mention test
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
2026-02-21 23:21:47 +02:00
Copilot
72f9e981de
Replace YouTube iframe embeds with clickable thumbnails ( #1474 )
...
* Initial plan
* Replace YouTube iframe with clickable thumbnail
- Changed YouTube embed URL from embed format to watch format
- Added ThumbnailUrl property to YouTubeVideoEmbedProjection using YouTube's standard thumbnail URL
- Updated MessageGroupTemplate to render thumbnail image with link instead of iframe
- Updated CSS to style thumbnail appropriately
- Updated test to check for anchor link and thumbnail image instead of iframe
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Address code review feedback
- Use hqdefault.jpg instead of maxresdefault.jpg (guaranteed to exist for all videos)
- Extract thumbnail URL logic to GetThumbnailUrl method for better testability
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Simplify YouTube embed test to focus on data not structure
- Remove checks for HTML structure (class names, nested elements)
- Focus on verifying YouTube URL with correct video ID exists
- Follow same pattern as other embed tests (Spotify, Twitch)
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Fix data-canonical-url and improve test specificity
- Use canonical (non-proxy) URL for data-canonical-url attribute
- Extract thumbnailUrl to local variable to avoid duplicate calls
- Update test to check for img with video ID in src, avoiding false positives
- Test now verifies the actual thumbnail data rather than any link
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Inline thumbnail URL logic directly into attributes
- Remove GetThumbnailUrl method from YouTubeVideoEmbedProjection
- Remove local variables from template
- Put coalescing logic directly in src and data-canonical-url attributes
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
2026-02-12 19:04:17 +02:00
Copilot
81e286751f
Add file:// protocol to absolute asset paths in HTML exports ( #1475 )
...
* Initial plan
* Add file:// protocol prefix to absolute paths in HTML exports
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Improve absolute path detection for cross-platform compatibility
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Remove unused System.IO import
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Use Path.IsPathFullyQualified for absolute path detection (fixes #1473 )
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
2026-02-12 13:19:12 +02:00
dependabot[bot]
dea412ff25
Bump the nuget group with 9 updates ( #1468 )
...
Bumps AsyncKeyedLock from 7.1.8 to 8.0.1
Bumps Avalonia from 11.3.10 to 11.3.11
Bumps Avalonia.Desktop from 11.3.10 to 11.3.11
Bumps Avalonia.Diagnostics from 11.3.10 to 11.3.11
Bumps DialogHost.Avalonia from 0.10.3 to 0.10.4
Bumps Microsoft.Extensions.Configuration from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.Configuration.EnvironmentVariables from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.Configuration.UserSecrets from 10.0.1 to 10.0.2
Bumps Microsoft.Extensions.DependencyInjection from 10.0.1 to 10.0.2
---
updated-dependencies:
- dependency-name: AsyncKeyedLock
dependency-version: 8.0.1
dependency-type: direct:production
update-type: version-update:semver-major
dependency-group: nuget
- dependency-name: Avalonia
dependency-version: 11.3.11
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
- dependency-name: Avalonia.Desktop
dependency-version: 11.3.11
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
- dependency-name: Avalonia.Diagnostics
dependency-version: 11.3.11
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
- dependency-name: DialogHost.Avalonia
dependency-version: 0.10.4
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
- dependency-name: Microsoft.Extensions.Configuration
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
- dependency-name: Microsoft.Extensions.Configuration.EnvironmentVariables
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
- dependency-name: Microsoft.Extensions.Configuration.UserSecrets
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
- dependency-name: Microsoft.Extensions.DependencyInjection
dependency-version: 10.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: nuget
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-10 17:28:47 +02:00
Tyrrrz
95953f8cf0
Refactor
2026-01-01 23:56:12 +02:00
Tyrrrz
6191855e33
Fix invalid issue link in comment
2026-01-01 23:53:57 +02:00
Copilot
33a975b907
Fix case-insensitive lookup for data package index file ( #1460 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-01-01 21:19:59 +02:00
Tyrrrz
3d353bc1e6
Format
2026-01-01 20:40:37 +02:00
dependabot[bot]
a14a17db83
Bump the nuget group with 11 updates ( #1458 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-01 20:36:41 +02:00
Tyrrrz
1f63d4fa26
Line breaks
2025-12-31 18:57:08 +02:00
Copilot
d3d078735a
Preserve original URLs for proxied embed assets ( #1456 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2025-12-31 18:54:04 +02:00
Tyrrrz
58dd40bf3e
Refactor last commit
2025-12-29 20:11:05 +02:00
Copilot
7c79e0639b
Fix filename sanitization for NTFS filesystems on non-Windows systems ( #1455 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2025-12-29 19:52:59 +02:00
Tyrrrz
8bbb8fa5ee
Clean up
2025-12-03 23:37:23 +02:00
dependabot[bot]
934cb526e9
Bump the nuget group with 17 updates ( #1445 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-01 20:47:52 +02:00
Tyrrrz
f0a74fbc6e
Simplify
2025-11-30 19:24:37 +02:00
Tyrrrz
768e124370
Remove unnecessary extension
2025-11-30 19:23:01 +02:00
Tyrrrz
8fff0f4445
Prettify project files
2025-11-18 19:07:17 +02:00
Tyrrrz
fbbac2afaa
Make use of C# 14 features
2025-11-16 20:29:39 +02:00
dependabot[bot]
e6f675bcaa
Bump the nuget group with 14 updates ( #1441 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-11-01 13:05:05 +02:00
dependabot[bot]
a383722469
Bump the nuget group with 13 updates ( #1431 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-02 16:08:07 +03:00
dependabot[bot]
a966bee140
Bump the nuget group with 12 updates ( #1429 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-02 19:50:14 +03:00
dependabot[bot]
8fcf5e5377
Bump the nuget group with 7 updates ( #1417 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-01 16:59:39 +03:00
Tyrrrz
187befcf11
Remove the now unnecessary extension method
2025-07-01 19:02:48 +03:00
dependabot[bot]
9e685a0375
Bump the nuget group with 15 updates ( #1408 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-07-01 19:00:52 +03:00
Tyrrrz
cc92b2cbe6
More cleanup
2025-06-08 22:53:10 +03:00
Tyrrrz
08718425f1
Clean up
2025-06-08 22:37:24 +03:00
Tyrrrz
22134108a4
Apply new formatting
2025-06-08 21:17:10 +03:00
dependabot[bot]
82499af25a
Bump CliFx and 9 others ( #1389 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-06-08 21:13:22 +03:00
Rimi Kanokawa
4a74ff8a02
Make the names assigned to unnamed group DMs predictable ( #1386 )
2025-06-02 02:01:15 +03:00
Mark Cilia Vincenti
7dfcf5ac19
Change InvalidFileNameChars to use FrozenSet instead of HashSet ( #1384 )
2025-06-02 01:48:25 +03:00
audinowho
d4fa8f0954
Support --include-threads in the export command ( #1343 )
2025-05-27 23:37:54 +03:00
Oleksii Holub
612ae2e894
Add a setting to control whether to respect advisory rate limits ( #1342 )
2025-05-12 19:52:47 +03:00
Tyrrrz
f9fa35b6ad
Downgrade CSharpier
2025-05-03 23:40:59 +03:00