3063
Stay up to date at @unigram Update history: github.com/UnigramDev/Unigram/commits Beta: @unigramappx Please: - Keep the discussion about Unigram - Keep the discussion Safe For Work - Keep sarcasm out of this chat - Don't talk about TDesktop and Linux
Maybe me in Fela's opinion 😂
It's worth to watch anyone.😁
Hey, I wanted to ask if you could add an AI bot to the group so we can quickly and briefly ask it about repetitive questions or whether there's a new version.
Читать полностью…
🔨 1 new commit to Unigram:develop:
b6eeb45: Drop a code block's pending tokenization when it unloads by Fela
🔨 1 new commit to Unigram:develop:
1f3b8cd: Route a nested mini app's navigation to the main window, not its opener by Fela
🔨 1 new commit to Unigram:develop:
8ded8d0: Skip the popup sweep when a session closes before the window has content by Fela
🔨 2 new commits to Unigram:develop:
ba604dc: Close the animation task behind a gate, not a bare count read by Fela
bf08740: Resend the packet avcodec refused instead of reading over it by Fela
Updated Unigram (12.10.6) and … broken sticker.
Just as I thought…
ok thanks. I’ll try updating it and testing. I have an old sticker that suddenly stopped working, and I think tlottie might be the cause.
Читать полностью…
🔨 1 new commit to Unigram:hosted-page-title-event:
5974715: Track the registered scrolling host instead of finding it again by Fela
hello!
can you make the pop up panel that contains an info about a person in a PMs has an accessibility label?, at this time it is focusable but it is not labeled.
🔨 9 new commits to Unigram:nre-12-10-7:
9023a67: Delete only the non-null selected media messages by Fela
4369a25: Scroll to the newest media when the chosen day has none after it by Fela
4a63dfb: Drop a search step whose results were replaced while loading more by Fela
9375f5e: Keep the rich editor toolbar disabled until the editor is ready by Fela
bc8588d: Handle entity clicks in a rich message shown without a message by Fela
92d3467: Close the emoji skin tone flyout when its drawer is deactivated by Fela
751c31c: Read the Downloaded event once before raising it by Fela
7486ef1: Skip page media blocks without a file when building the gallery by Fela
3baff4d: Stop the call window's auto-close timer when the window closes by Fela
🔌 New pull request Unigram#3467 Keep the confetti canvas usable after it is unloaded and reloaded
by: @FrayxRulez
Reported by crash telemetry on 12.10.7.
### ExceptionNativeException: ACCESS_VIOLATION Reading address 0x0000000000000088, on the UI thread:
Microsoft.Graphics.Canvas.dll!CanvasAnimatedControl::ChangedImpl+0x229 CanvasAnimatedControl.cpp:855
Microsoft.Graphics.Canvas.dll!ExceptionBoundary<...>+0x75 ErrorHandling.h:221
Microsoft.Graphics.Canvas.dll!DelegateArgTraits<IDispatchedHandler>::DelegateInvokeHelper<...>::Invoke+0x17
Windows.UI.dll!CDispatcher::ProcessInvokeItem
Windows.UI.dll!CDispatcher::ProcessMessage
...
Windows.UI.Xaml.dll!CJupiterWindow::RunCoreWindowMessageLoop
CanvasAnimatedControl.cpp is m_gameLoop->StopDispatcher();. Disassembled from the shipped Microsoft.Graphics.Canvas.dll (PDB matched): mov rax,[rbx+348h] loads m_gameLoop, then mov rcx,[rax+88h] reads CanvasGameLoop::m_gameLoopThread (the member after the 0x50-byte recursive_mutex and six pointers/bools). So m_gameLoop is null while IsLoaded() - checked a few instructions earlier - is true.ConfettiView.OnUnloaded calls Canvas.RemoveFromVisualTree(). The canvas is the root of ConfettiView`'s template, and Win2D's `RemoveFromVisualTreeImpl only knows how to detach an element from a Panel, UserControl or ContentControl parent, so the control stays in the tree. What does happen is that CanvasAnimatedControl::RemoveFromVisualTree resets m_canvasSwapChainPanel. When the canvas is later loaded again, CanvasAnimatedControl::Loaded() sees no swap chain panel, takes its designer path (the assert is compiled out) and returns without creating the game loop, but BaseControl::OnLoaded still sets m_isLoaded = true. The next change that needs a draw - a resize, a DPI change - runs ChangedImpl, which checks IsLoaded() and dereferences the null game loop.MainPage realizes Confetti on the first confetti and never unloads it (the Completed hookup is commented out), so every later unload/reload of the page arms this: the passcode lock does exactly that (WindowContext.Lock swaps the window content, Unlock restores it), and one report's log ends on Hiding passcode lock. Most others end on a window resize or restore, i.e. the first draw request after an earlier reload. The same path also left confetti silently broken after a reload, since Canvas was nulled.RemoveFromVisualTree and stop nulling Canvas`; Win2D already destroys the game loop on `Unloaded and recreates it on Loaded, as long as it still has its swap chain panel.RemoveFromVisualTree was there to break the cycle Win2D creates by holding Draw handlers strongly. Draw is now subscribed only while the canvas is loaded, with a load count mirroring Win2D's own m_loadedCount, since Loaded for a new parent can arrive before Unloaded for the old one. Loaded`/`Unloaded stay subscribed, which is what lets the view recover.
🔌 New pull request Unigram#3466 Translate nine more localised system error messages
by: @FrayxRulez
Crash messages seen on 12.10.x in a language other than English, added to TranslateText so each merges into the group its English counterpart already forms. Every target is a string the method or TranslateHResult already returns. Nothing new is invented.
| Sentence | Maps to |
|---|---|
| Czech and Finnish RPC_E_WRONG_THREAD text | "The application called an interface that was marshalled for a different thread." |
| RPC 服务器不可用。 | "The RPC server is unavailable." |
| Portuguese (Brazil) and Norwegian D2DERR_WRONG_RESOURCE_DOMAIN text | "The resource was realized on the wrong render target." |
| German ERROR_COMMITMENT_LIMIT text | "The paging file is too small for this operation to complete." |
| Polish ERROR_NO_SYSTEM_RESOURCES text | "Insufficient system resources exist to complete the requested service." |
| Norwegian and Simplified Chinese E_NOINTERFACE text | "No such interface supported" |
Several of these already arrive with the English first line, because TryTranslateHResult rewrites it.
The localised copy is the second line, which is the originating error description. That line only goes
through TranslateText, so it kept each group split by language.
Not added: one Korean report whose second line reached the backend as mojibake (a lossy ANSI conversion,
which reads like the "no mapping for the Unicode character" text). Its code is not known, so it is left
unmapped.
Not built: no UWP/.NET Native toolchain here. CSharpSyntaxTree.ParseText on the edited file reports no
diagnostics. That confirms the file still parses and nothing more. None of the new labels duplicate an
existing one (checked by search before adding).
🤖 Generated with Claude Code
Reply to this message to post a comment on GitHub.
🔌 New pull request Unigram#3464 Handle NavigationButton toggling before its template is applied
by: @FrayxRulezArgumentNullException, parameter element. Reported by crash telemetry on 12.10.7.
at Windows.UI.Xaml.Hosting.ElementComposition.GetElementVisual(UIElement)
at Telegram.Controls.NavigationButton.OnToggle(Object, RoutedEventArgs)
at Windows.UI.Xaml.Controls.Primitives.IToggleButton__Impl.Stubs.put_IsChecked(__ComObject, Nullable`1)
at Telegram.Views.MainPage.UpdatePaneToggleButtonVisibility()
at Telegram.Views.MainPage.ConvertFolder(ChatFolderViewModel, Boolean)
at Telegram.Views.MainPage.UpdateFolder(ChatFolderViewModel, Boolean, Boolean)
at Telegram.Views.MainPage.ProcessFolderCommands(ShortcutCommand, ShortcutInvokedEventArgs)
at Telegram.Views.MainPage.ProcessKeyboardAccelerators(ShortcutInvokedEventArgs)
at Telegram.Views.Host.RootWindow.OnShortcutInvoked(Object, ShortcutInvokedEventArgs)
at Telegram.Navigation.WindowContext.RaiseShortcutInvoked(InvokedShortcut, VirtualKeyModifiers)
at Telegram.Services.Keyboard.InputListener.OnAcceleratorKeyActivated(CoreDispatcher, AcceleratorKeyEventArgs)
BackContent and PaneContent are template parts, so they stay null until OnApplyTemplate. OnToggleGetElementVisual.Lock: Showing passcode lock atHiding passcode lock. WindowContext.Lock replaces the window content withPasscodeWindow, so RootWindow`/`MainPage are never measured and none of their templates are applied.ScrollingHost == null lines just before the crash point the same way. But InputListener stillMainPage.UpdatePaneToggleButtonVisibility. That sets Photo.IsChecked on a button that has noOnToggle returns when the template parts are missing, because there is nothing to animate.OnApplyTemplate shows the back arrow when IsChecked is already true. Without this, the icon wouldWindowContext.RaiseShortcutInvoked would beMainPage handles. ThatCSharpSyntaxTree.ParseText on the edited file reports no
💬 New comment on Unigram#2219 Add shuffle button for music player
by @cxinu
W
Reply to this message to post a comment on GitHub.
🔨 1 new commit to Unigram:develop:
0f0dbe4: Translate nine more localised system error messages by Fela
🔨 1 new commit to Unigram:develop:
b8384e7: Handle NavigationButton toggling before its template is applied by Fela
🔨 2 new commits to Unigram:develop:
afca422: Watch the hosted page title with a CLR event, not a property callback by Fela
e90cb90: Track the registered scrolling host instead of finding it again by Fela
🔨 2 new commits to Unigram:develop:
80067d9: Play sound effects through XAudio2 instead of an AudioGraph per sound by Fela
1229322: Say what the sound cache bound is actually for by Fela
From which version was the switch to the tlottie library made? I have version 12.9.1
Читать полностью…
Leilani Mchor(8888214738)
⚠️ Confirm you are not a bot!
You will be banned in 12 seconds.
✅ Restrictions removed.
I'm not sure which panel you're referring to, any chance you chould share a screenshot in private?
Читать полностью…
🔌 New pull request Unigram#3468 Drop a code block's pending tokenization when it unloads
by: @FrayxRulezProcessCodeBlock tokenizes on a background thread and, when it resumes, only checks _generation == generation before clearing and refilling the paragraph it was given. _generation was bumped only in SetText, but OnUnloaded also calls Recycle, which returns the paragraph to the pool. If a code block unloaded before tokenization finished, the continuation still matched and wrote into a paragraph that was back in the pool or already owned by another block.OnUnloaded now bumps _generation, so any tokenization started for the unloaded content is dropped. The bump is not in Recycle itself: SetText takes its generation and then calls Recycle before starting the tokenizations, so a bump there would discard every one of them.
Not tied to a specific crash group. Found while triaging the text-element crashes, where pooled paragraphs end up owned twice.
Unbuilt.
🤖 Generated with Claude Code
Reply to this message to post a comment on GitHub.
🔨 1 new commit to Unigram:code-block-unload-generation:
5851803: Drop a code block's pending tokenization when it unloads by Fela
🔨 1 new commit to Unigram:confetti-canvas-reload:
8b72938: Keep the confetti canvas usable after it is unloaded and reloaded by Fela
🔌 New pull request Unigram#3465 Route a nested mini app's navigation to the main window, not its opener
by: @FrayxRulezException: "Element not found. (Exception from HRESULT: 0x80070490)". Reported by crash telemetry on 12.10.7.
2 __Interop.ForwardComStubs.Stub_27<System.__Canon, System.__Canon>
3 Telegram.Views.Host.SecondaryNavigationService.Navigate
Telegram\Views\Host\WebAppWindow.xaml.cs:2326
4 Telegram.Common.TLNavigationService.<NavigateToChat>d__21.MoveNext
Telegram\Common\TLNavigationService.cs:622
_ = _source.Window.SwitchToAsync();, which calls ApplicationViewSwitcher.SwitchAsync(Id).ERROR_NOT_FOUND synchronously because the view no longer exists._source is the navigation service the mini app was opened from. TLNavigationService builds aWebAppWindow with this. When a link inside one mini app opens a second one, this is the firstSecondaryNavigationService, so the second app's _source is the first app's service, and itsWindow is the first app's view. If the first app is closed, any navigation from the second oneweb_app_open_tg_link to a ?startapp= link opens a newWebAppWindow while the earlier one is still up. The earlier window then logsOnClosedCore / OnViewReleased / OnShutdownCompleted. Seven seconds later the new window receivesweb_app_open_tg_link to a channel, and that navigation is the crash.SecondaryNavigationService takes its opener's own source when it is given anotherSecondaryNavigationService. _source is therefore always the main window's service, which is whatNavigate and Switch mean ("go to the main window"). One step is enough, because no _source isCSharpSyntaxTree.ParseText on the edited file reports no
🔌 New pull request Unigram#3463 Skip the popup sweep when a session closes before the window has content
by: @FrayxRulezArgumentException: "The parameter is incorrect. xamlRoot". Reported by crash telemetry on 12.10.7.
3 Telegram.Services.LifetimeService.<>c__DisplayClass45_0.<Destroy>b__0
Telegram\Services\LifetimeService.cs:285
4 Telegram.Navigation.WindowContext.<>c__DisplayClass132_1.<ForEachAsync>b__0
Telegram\Navigation\WindowContext.cs:1400
5 Telegram.Navigation.DispatcherContext.<>c__DisplayClass9_0.<<DispatchAsync>b__0>d.MoveNext
Telegram\Navigation\DispatcherContext.cs:101
11 Telegram.Services.LifetimeService.<Destroy>d__45.MoveNext
VisualTreeHelper.GetOpenPopupsForXamlRoot(window.XamlRoot), and window.XamlRoot is null.WindowContext.XamlRoot is _content?.XamlRoot, so it stays null until the main window has content.LifetimeService.Destroy runs about two seconds afterOnWindowCreated / CreateWindowWrapper and before OnLaunched, so InitializeFrame has not runDestroy is Session.Handle(UpdateAuthorizationState)AuthorizationStateClosed after AuthorizationStateLoggingOut. That is what TDLib reports at startupXamlRoot. A window without content cannot have open popups, soDestroy (the replacement session, the frame removal and the folderCSharpSyntaxTree.ParseText on the edited file reports no