tyrrrz
b9f19f7003
Fix shebang, rename script
2026-03-23 23:34:57 +02:00
Copilot
e794d7c833
Replace Publish-MacOSBundle.ps1 with a .NET 10 single-file C# script ( #1515 )
...
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-03-23 23:18:46 +02:00
Oleksii Holub
5a26ba0b5a
Update WinGet links in Readme
2026-03-21 23:55:12 +02:00
tyrrrz
1181a35f08
Variable names consistency
2.47.1
2026-03-21 20:27:05 +02:00
Copilot
4a62f9c34f
Add DISCORDCHATEXPORTER_ALLOW_AUTO_UPDATE env var to suppress auto-update in GUI ( #1514 )
...
* Add DISCORDCHATEXPORTER_DISABLE_UPDATE env var to disable auto-update in GUI
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Agent-Logs-Url: https://github.com/Tyrrrz/DiscordChatExporter/sessions/158dba86-9958-4f57-ab22-174e0606b42f
* Rename IsAutoUpdateDisabled to IsAutoUpdateAllowed and env var to DISCORDCHATEXPORTER_ALLOW_AUTO_UPDATE
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Agent-Logs-Url: https://github.com/Tyrrrz/DiscordChatExporter/sessions/aa3944a4-e542-4770-8d17-2acb2c958ce9
* Refine IsAutoUpdateAllowed: group in (), invert, rename v to env, only accept false
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Agent-Logs-Url: https://github.com/Tyrrrz/DiscordChatExporter/sessions/1467eee2-3069-4f0b-abdf-b1dc65e00a9a
* Fix CSharpier formatting: move is { } env to indented new line
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Agent-Logs-Url: https://github.com/Tyrrrz/DiscordChatExporter/sessions/7933cfe4-ecad-4697-8b9c-ee3991aa147e
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
2026-03-21 20:25:53 +02:00
Oleksii Holub
b6e1f92989
Add the GUI flavor of the AUR package to readme
2026-03-21 17:14:45 +02:00
Oleksii Holub
0d3d2ddcf0
Add more package manager install options
...
Added community-maintained package installation instructions for Scoop and WinGet, and clarified notes regarding MacOS and community-maintained packages.
2026-03-21 17:03:57 +02:00
billA
9afecd47bd
Update token extraction script in docs ( #1511 )
2026-03-16 15:24:54 +02:00
Tyrrrz
5cec162b4e
More consistent message box
2026-03-12 18:54:44 +02:00
Tyrrrz
6647f90ced
Update default branch ref
2026-03-04 20:23:55 +02:00
Copilot
b9a3001c11
Add DISCORDCHATEXPORTER_SETTINGS_PATH env var override for settings file path ( #1500 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-03-02 20:06:20 +02:00
Copilot
dadfe5b8ef
Guard App.Dispose() against double-invocation and late shutdown ( #1499 )
...
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
2026-03-02 18:42:35 +02:00
dependabot[bot]
4f29fa63d0
Bump the actions group with 2 updates ( #1495 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-01 15:53:28 +02:00
dependabot[bot]
54b0174bde
Bump the nuget group with 15 updates ( #1496 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-01 15:53:11 +02:00
Tyrrrz
3be5bc6a21
Remove dashes from OutputPathTooltip
2.47
2026-02-27 19:14:30 +02:00
Tyrrrz
c9f152773a
Clean up last PR
2026-02-27 19:12:27 +02:00
Copilot
5e39611395
Double-clicking a channel auto-opens export setup ( #1493 )
...
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 19:10:19 +02:00
Tyrrrz
40491bdc0f
Fix text misalignment on export setup
2026-02-27 19:05:16 +02:00
Tyrrrz
03dd272eaf
Fix tests harder this time
2026-02-27 18:59:52 +02:00
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
951c1e4613
Make Run's BaselineAlignment set globally
2026-02-27 18:31:40 +02:00
Tyrrrz
675d910ea3
Formatting
2026-02-27 17:56:29 +02:00
Tyrrrz
28f26e45fb
Add tests for forwarded messages
2026-02-27 17:52:26 +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
Tyrrrz
d490fd0a38
Improve, clean up encryption
2026-02-27 14:57:15 +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
7ff2347df1
Clean up
2026-02-27 14:32:27 +02:00
Tyrrrz
3391e755fc
Fix markdown not parsing for Persist Token tooltip
2026-02-27 14:19:03 +02:00
Tyrrrz
f0e9d3be1b
Reorganize files
2026-02-27 14:14:43 +02:00
Copilot
eef0fc742d
Encrypt Discord token at rest in settings file (machine-bound) ( #1491 )
...
* Initial plan
* Add token encryption when saving/loading settings
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Apply suggestion from @Tyrrrz
* Apply suggestion from @Tyrrrz
* Bind token encryption key to machine identity
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Switch to AES-GCM, hex encoding, and GetBytes/Fill improvements
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Address all review feedback: salt injection, code style, localization formatting
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Address latest review: ThisAssembly.Project, EnvironmentExtensions, inline Lazy, renames, localization wording
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Address latest review: layout comment, cipherSource, else block, MachineName fallback, csproj ordering
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Apply suggestion from @Tyrrrz
* Rename GetMachineId→TryGetMachineId, refactor Write to use single array with FillBytes
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Rename cipherSource→cipher in Read(), tokenBytes→tokenData in Write(), update layout comments
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Add cipherSource variable in Write(), update layout comment with size annotation
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Fix CSharpier formatting: inline multiline string assignments and reformat exception filter
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Quote EncryptionSalt argument to handle single quotes in secret value
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Revert double-quote fix on EncryptionSalt argument
Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com >
* Apply suggestion from @Tyrrrz
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@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 >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-02-27 14:01:25 +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
Tyrrrz
e6562de1f5
Reformat XAML
2026-02-24 21:07:48 +02:00
Tyrrrz
5f8054e2f0
Fix alingment issues when dealing with inlines
2026-02-24 21:05:03 +02:00
Copilot
12d98e9ab0
Add localization ( #1482 )
...
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-24 20:49:32 +02:00
Copilot
18086aa209
Fix second dialog not appearing when dialogs are shown sequentially ( #1481 )
...
* Initial plan
* Add Task.Yield() to DialogManager to fix sequential dialog display
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-23 07:32:56 +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 >
2.46.1
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]
225230a20f
Bump the actions group with 2 updates ( #1467 )
...
Bumps the actions group with 2 updates: [actions/checkout](https://github.com/actions/checkout ) and [actions/setup-dotnet](https://github.com/actions/setup-dotnet ).
Updates `actions/checkout` from 6.0.1 to 6.0.2
- [Release notes](https://github.com/actions/checkout/releases )
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md )
- [Commits](8e8c483db8...de0fac2e45 )
Updates `actions/setup-dotnet` from 5.0.1 to 5.1.0
- [Release notes](https://github.com/actions/setup-dotnet/releases )
- [Commits](2016bd2012...baa11fbfe1 )
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: actions
- dependency-name: actions/setup-dotnet
dependency-version: 5.1.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: actions
...
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:59 +02:00