text:
[[CANLI@İZLE]] Hatayspor İstanbul Başakşehir Canlı izle Maçı Justin Tv Hatayspor İstanbul Başakşehir Maçı Canlı İzle 08 Aralık 2024

[[CANLI@İZLE]] İstanbul Başakşehir Hatayspor  Canlı izle Maçı Justin Tv Hatayspor İstanbul Başakşehir Maçı Canlı İzle 08 Aralık 2024
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
.
🎉 Ücretsiz Canlı Yayın: Istanbul Basaksehir vs Hatayspor - Turkish Super Lig 2024-12-08! ⚽
Merhaba futbolseverler! 🌟 2024 yılı 8 Aralık tarihinde, Türk futbolunun heyecan verici mücadelelerinden biri sizleri bekliyor! Istanbul Basaksehir ile Hatayspor, Turkish Super Lig'de karşı karşıya gelecek! Bu büyük maçı kaçırmamak için en iyi fırsatınız burada! 💥
Canlı Yayını İzlemek İçin Hemen Tıkla! ⬇
Bu heyecan verici karşılaşmayı, [ücretsiz canlı yayın] ile izleyebilirsiniz! Hem de herhangi bir ücret ödemeden, istediğiniz cihazdan izleyebilirsiniz. Maçın keyfini çıkarırken, takımınızın zaferine tanıklık edin! 🏆
Öne Çıkan Özellikler:
🖥 Canlı yayın, mobil cihazlar ve bilgisayarlar için uyumlu!
⚡ Hızlı ve kaliteli yayın akışı!
💬 Canlı sohbet, izlerken diğer futbolseverlerle etkileşim kurma fırsatı!
🔊 Yüksek ses kalitesiyle maç atmosferini tam anlamıyla yaşayın!
İstanbul Başakşehir vs Hatayspor Maçı Ne Zaman Başlayacak? 📅
Bu büyük maç, 8 Aralık 2024 tarihinde, Türkiye saatine göre 20:00'da başlayacak. Hangi takımların galip geleceğini görmek için geri sayım başladı! ⏰
Hem Başakşehir’in güçlü kadrosunu hem de Hatayspor’un sürprizlere açık futbolunu izlemek için harika bir fırsat. Gözlerinizi ekrandan ayıramayacaksınız! 😍
Nasıl İzleyebilirsiniz? 📲
Bu maçı izlemek çok kolay! Sadece aşağıdaki linke tıklayarak , istediğiniz zaman ücretsiz yayına erişim sağlayabilirsiniz:
[İstanbul Başakşehir vs Hatayspor Canlı Yayın Linki - TIKLAYIN]
[Canlı Yayın Başlat - Tıkla ve İzle!]
Takım Kadroları ve Maçın Önemi ⚽
Bu mücadele, hem Başakşehir hem de Hatayspor için büyük bir anlam taşıyor. Takımlar, Turkish Super Lig’deki sıralamalarını yükseltmek için birbirlerine karşı üstünlük sağlamak isteyecekler. Büyük bir heyecan ve mücadeleye tanıklık etmek için hemen canlı yayına katılın! 🏅
İstanbul Başakşehir:
Başakşehir, güçlü kadrosu ve hücum gücüyle biliniyor. Takım, Şampiyonlar Ligi'ne katılma şansını değerlendirmek için bu önemli maçı kazanmayı hedefliyor.
Hatayspor:
Hatayspor, sürpriz sonuçlarla tanınan bir takım. Zorlu Başakşehir karşısında alacakları zafer, onları ligde üst sıralara taşıyabilir.
Ücretsiz Yayına Nasıl Erişim Sağlayabilirsiniz? 💻📱
Canlı yayına erişim sağlamak için yapmanız gerekenler çok basit! Aşağıdaki linklerden birine tıklayarak yayını başlatabilirsiniz:
[Canlı Yayına Git - İzlemeye Başla!]
[Başakşehir - Hatayspor Canlı Yayınına Katıl!]
Maçı Kaçırmayın! 🔥
Unutmayın, bu harika mücadeleyi kaçırmamak için bugün hemen izleme linkine tıklayın ve maçın başlama saatini not edin. Bu şansı kaçırmamak için 8 Aralık'ı takviminize ekleyin ve futbolun keyfini çıkarın! 📅
Hadi, Başakşehir ve Hatayspor arasında kimin kazanacağını hep birlikte görelim! Canlı yayını [şimdi izlemek için tıklayın!]💥
Birlikte Futbol Keyfi! ⚽
Futbolseverlerin buluştuğu bu özel anı kaçırmayın! Hem maç heyecanını hem de dostlarınızla birlikte canlı yayını izleme keyfini çıkarın. Takımınızı desteklemek için [canlı yayına katılın!]
Görüşmek üzere, maçta buluşalım! 👏
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
====
===
==
.
.
.
.
.
.
.
.
====
===
==
.
.
.
💻Süper Lig Streams for PC/MAC 1080p/720p 👇👇
📲Mobile friendly 1080p/720p 👇👇
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 maçı canlı yayın Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
‼‼🌐📺📱🔴🔗👉 MAÇI CANLI İZLE Canlı Yayin Justin.tv
.
.
.
.
====
===
==
.
.
.
.

SS
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
.
.
.
.
..
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
SS
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
.
.
.
.
..
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
SS
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
.
.
.
.
..
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
SS
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
.
.
.
.
..
### ✅🟢 LIVE STREAM PLAY NOW
✅🟢 HERE PLAY NOW ONLINE
.
.
.
.
.
.
cvcv

.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
### 𝖶𝖺𝗍𝖼𝗁 🟢 ➤ ➤ ➤ 🌐 𝖢𝗅𝗂𝖼𝗄 𝖧𝖾𝗋𝖾 𝖳𝗈 𝗅𝗂𝗇𝗄 (𝖥𝗎𝗅 𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇𝗄)
.
.
.
### 🔴 ➤► 𝖣𝖮𝖶𝖭𝖫𝖮𝖠𝖣👉👉 (𝖥𝗎𝗅𝗅 𝖵𝗂𝗋𝖺𝗅 𝖵𝗂𝖽𝖾𝗈 𝖫𝗂𝗇 𝗄)
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

authors: jhuythyg makmakko zghot

repo: doczjs/docz


text:
Add default for lowercase, and ability to turn off lowercase if wanted

Having to do .toLowerCase() every time is very annoying, please fix this @dodo as similar to how you did with pretty.

+1

+1

+1

+1

+1

+1

+1

:+1:

+1

+1

+1

:+1:

+1

+1

+1

Seems like @dodo has vanished or is otherwise busy. I'll probably end up forking the project to implement my PR as well as a couple others.

@Zertz Do you have any plan to merge other PRs and publishing this?
seems that @dodo so busy to get the work done.
May we force then merge the possible PRs, and publish?

I merged @Zertz's PR and restricted the default to lower case only to rfc3986 mode, so the pretty mode stays case sensitive.
I also changed the option name to lower instead of lowercase.
Let me know when this is not working out for you.

Thanks @dodo !

Why do we still have Pretty Mode on?  The default should be the standard RFC3986.  Come on.

https://github.com/dodo/node-slug/blob/master/slug.js#L72-L74 Change this to RFC3986 please.

In the Readme you say it is RFC3986 which is so misleading too.

Can you please fix this?  The default should be RFC 3986... especially if you advertise it in the Readme as "respecting RFC 3986".  I have forked this and made it RFC compliant by default.  For anyone that wants this, please install it with npm install --save slug-rfc and that way we don't need to use forks.  When this package switches its default to RFC (if it does), then I will deprecate that package I made and delete my fork at https://github.com/niftylettuce/node-slug-rfc.

@niftylettuce see #71

@simison Why should I bother to use that, it has a completely unrelated name.  All I want is the default for this package to have the proper RFC advertised standards.  I've wanted this for probably like a year now if you look back at all the comments/issues I filed.  I already forked it and published an RFC compliant version myself.  And the documentation for that mollusc thing doesn't even say to npm install mollusc anywhere.  People aren't going to search on Google for NPM mollusc package.  They will search NPM RFC slug package or NPM slug.

Rant much. :)

@bcallaars petty comments not appreciated

@niftylettuce:

Why should I bother to use that, it has a completely unrelated name. All I want is the default for this package to have the proper RFC advertised standards

Me too. And I want is someone to maintain some package. ;-)

I already forked it and published an RFC compliant version myself.

Sure! That's cool. @Zertz seems to have a lot of enthusiasm, too. You guys should just put up an organisation and publish your RFC version under the name RFCSlug, niftySlug or something... :-)
I pinged in hopes that you'd talk with @Zertz about possibilities.

Aye aye! @simison I commented over in that issue you referenced and mentioned how I realized you were not the original OP author.  Maybe @Zertz just would want to use npm i --save slug-rfc instead.  It's a bit easier to remember and type haha.

@niftylettuce I'm sorry my efforts don't meet your expectations. I am working on this because I use node-slug a lot and the community has submitted many useful PR's, including yours. I am planning Node v6 compatibility, which is currently very hard because of the issue described in #70.
Also,

Slug, or land slug, is a common name for any apparently shell-less terrestrial gastropod mollusc.

It's nice @Zertz, it's not all about fame.

Don't let the naming stop you guys. :-)
BTW I settled for using https://github.com/pid/speakingurl myself for now — has anyone had look at it? Seems to be well maintained. (Ping @pid)

;-) pong

https://github.com/pid/speakingurl does the trick for me. I'm sure slug-rfc and mollusc work just as well, but downloads/day wins

downloads have nothing to do with functionality.

slug downloads:

speakingurl downloads:

it is pretty lame to not fix the #1 package in NPM for slugs, even having the reserved name slug as its package name...  this is not how our community should function.  So when someone new comes to the community, they have to look at 5 different packages all doing the same thing?  Why doesn't everyone just fork koa and express and rename them a hundred times for little use cases?

I am deprecating and removing my slug-rfc package from NPM and just going to use speakingurl.  I suggest that @dodo find contributors and be willing to accept contributors next time.  Thanks @pid for your work there, nice backup.

If that works for you, then by all means go for it :-)

@niftylettuce what I meant to say is that when three packages all have the functionality that I want, and one has orders of magnitude more downloads, I'll pick that one.

source: gharchive/issue

authors: BrunoBernardino Sicria Zertz a00andos anotheri bcallaars davidgilbertson diego-pacheco dodo dominhhai fragphace gimenete gmotruk iangthornton jeduan niftylettuce oitozero oliverbenns pid s-silva simison tmcpro

repo: dodo/node-slug

license: mit

license_type: permissive

license_source: bigquery


text:
Minifyied version for browser

Add minifyied version for using in browser.

This package is really really large for the browser. Also with minification; it still requires unicode/so.js which alone is 1.68 MB minified.
I've switched to slugify, as this package doesn't seem to be maintained and its way to big. (Latest commit 85ded30  on 18 Apr 2015)

authors: odahcam smeijer


text:
Replace nix with a devcontainer

This pr replaces nix and poetry as package management systems with a devcontainer.
The devcontainer builds the production docker image, and then adds git support and development dependencies to it.
For ease of development I moved the production dockerfile to this repo as well. This means that dependencies can be added to it or updated while developing. Merging a pr will build the docker image, making sure the docker image is always up to date with the latest TESTed version of the code.
I also restructured the docker file, such that it is clearer which dependency is required by which language. I hope this improves maintainability.
To avoid duplication nix, poetry and dependencies.md are all removed. The docker image is now the single source of truth for all production package versions. Dev dependencies should be specified in dev-dependencies.sh.
The README is also updated to reflect these changes.
The solution is still not ideal as updating the dependencies is still a manual job and dependabot is not able to work with docker deps. We might consider adding some custom system as proposed here in a later stage: https://github.com/dependabot/dependabot-core/issues/2129#issuecomment-850045595

Do we now need to manually keep this dodona-tested dockerfile in sync with the one in our images repo?

No I will remove the file from our images repo. I have added the build deploy step here, so we only need the file in a single location

source: gharchive/pull-request

repo: dodona-edu/universal-judge

license: MIT

license_source: github-api


text:
About native d3dcompiler_47.dll?

In addition to the DLLs, the following standalone programs are included in the project. Most of them require a native d3dcompiler_47.dll, which you can retrieve from your Windows installation in case you have one.

I am confused is this a build requirement or run time?
Do I need to build against a native d3dcompiler_47.dll when compiling.
or
Do I build with the wine d3dcompiler_47.dll and set an override to native and drop the dll in with the exe?

Do I build with the wine d3dcompiler_47.dll and set an override to native and drop the dll in with the exe?

This one - native d3dcompiler_47.dll is needed at runtime. It is also needed for various games (some need d3dcompiler_43.dll and e.g. Gothic 2 GD3D11 needs even d3dx11_43.dll).

It is a requirement only for the executables at runtime. As for games, the requirements don't change with dxvk, if a game needs native libraries with wined3d, it will need the same native libraries with dxvk.

authors: Vosester doitsujin neVERberleRfellerER

repo: doitsujin/dxvk

license: Zlib


text:
Визуальное выделение нижней границы меню

Для выдвигающегося списка совпадений поиска есть визуальное выделение границ через box-shadow:

Выделения границ нет для меню на главной, и это выглядит лаконично. Но вот то, что его нет для меню внутри разделов и статей, уже несколько странно:

Выглядит, на мой взгляд, как место к доработке, поскольку нижняя граница меню никак не видна и сливается с фоном страницы. Может, выделить её тоже через box-shadow? Будет вот так:

@skorobaeus, как на твой взгляд эта дизайнерская идея?

Привет!
Мы сейчас как раз в процессе перепридумывания этого меню, потому что выявили у него несколько проблем. Спасибо, что подметил этот момент с отсутствием нижней границы! Это обязательно надо учесть при выкатке нового решения, а прямо сейчас точечные фиксы я бы, наверное, не стала вносить. Призову @igsekor высказаться :)

Это очень интересное и важное замечание. Спасибо, что подметил. Думаю, что надо будет также пересмотреть и способ раскрыва меню. Сейчас оно «наезжает» сверху на нижний уровень. Надо будет подумать и над этим механизмом.

Решено!

authors: Inventoris TatianaFokina igsekor skorobaeus

repo: doka-guide/platform


text:
За вайфу и двор стреляю в упор

Is your feature request related to a problem? Please describe.
Кароче ебать, тут мне птичка напела, что тут можно выговориться по поводу вайфу. И может быть её добавят. Кароче хуле сиськи мять. Есть одна дилема фрустрационного характера, как то так вышло что - вот сколько пользуюсь doki темами до сих пор я там не вижу рельсы, как же так спрашивается вышло? Может быть автор фуреёб? или нет, а может быть да? Кто знает но выход тут только один, и я опишу его ниже.
Describe the solution you'd like
Как я и сказал, выход только один. Нужно добавить рельсу.
https://imgur.com/a/5DPX22y
Анон требует
Describe alternatives you've considered
Хер его знает что ещё сказать, заебатое пиво, невьебенное пиво
Additional context
Давай добавляй

为什么你觉得我会读俄语？虽然不会读但是我明白一点儿. 请看看这要求。我关上谢谢。

Что за дичь ты несёшь?

Что за дичь ты несёшь?

Да ничего, рофлов ради)

Хули? Тебе чё, делать нечего?

Хули? Тебе чё, делать нечего?

Я тебя задел чем то? Чего такой агрессивный)

Я не агрессивный. Просто не понимаю, нахуй это надо? Если делать нечего, то иди смотри приколы в ютубе.

Я не агрессивный. Просто не понимаю, нахуй это надо? Если делать нечего, то иди смотри приколы в ютубе.

Я же сказал ради рофла, между прочим автор оценил) и добавил миску в будущую тему)
Мужик если ты не в теме, какой смысл от твоих высеров тут)

Кстати сколько тебе? Ничего такого, просто хочу узнать, кто старше.

Я же сказал ради рофла
Не трать своё и чужое время ради рофла.

authors: Dragon-0609 Exordio Unthrottled

repo: doki-theme/doki-theme-jetbrains


text:
renamed branch has broken dist info

Summary
renamed branch has broken dist info
Reproduction Steps
n/a
Code
n/a

Expected Results
pycharm does not think it is https://pypi.org/project/selfcord.py/
Actual Results
pycharm thinks it is https://pypi.org/project/selfcord.py/
System Information
Relavant Info:

Python v3.11.0-final
selfcord.py v2.1.0-alpha

selfcord.py metadata: v2.1.0a4372+g550e0cdd

Checklist

[X] I have searched the open issues for duplicates.
[X] I have shared the entire traceback.
[X] I am using a user token (and it isn't visible in the code).

Additional Information
this is very annoying for pycharm users

Unsure on how to fix that, I can probably look into it
Funny that the package on PyPi has such a similar README lol

authors: TheKidThatCodes dolfies


text:
Add error handling to POAPI creation and display error with snackbar

Summary
Handle PurchaseOrderAPI creation errors by displaying an error snackbar with the message from the HTTP response.
Preview (some of the HTTP responses are fixed in https://github.com/dolittle/platform-api/pull/34 as shown here):

Added

Error handling to POAPI creation view

@joelhoisko when testing this out locally I'm currently getting something that looks like this:

Is there something not merged into platform-api that causes it, or could it be a bug here?

Seems like the platform-api is returning a bit too much stuff:

authors: jakhog joelhoisko

repo: dolittle/Studio


text:
RegKeyAbstract new code causes regression in XMLPad with mismatched VM

Describe the bug
Trying to start up XMLPad gives me a debug box thing, saying it can't find relevant registry key. It's trying to load the following regkey:
HKEY_CURRENT_USER/Software/Object Arts/XmlPad/TextStyles
To Reproduce
Steps to reproduce the behavior:

Go to 'Sample Applications'
Click on 'XMLPad'
Box pops up, title: Not found: 'A'
text reads:
25/04/2020 12:17:32 a.m.: 'Not found: A'
SystemDictionary(Object)>>errorNotFound:
SystemDictionary(Dictionary)>>errorKeyNotFound:
SystemDictionary(Dictionary)>>at:
Object class>>fromRegKey:
[] in XmlPad>>restoreTextStyles
RegKey(Dictionary)>>at:ifPresent:
XmlPad>>restoreTextStyles
XmlPad>>restoreViewOptions
XmlPad>>restoreUserSettings
XmlPad(TextDocument)>>onViewOpened
XmlPad(Shell)>>view:
XmlPad(Shell)>>createView:
XmlPad class(Shell class)>>create:
XmlPad class(Presenter class)>>create
XmlPad class(Presenter class)>>show
[] in SmalltalkSystemIcon>>openBlock
[] in SmalltalkSystemIcon>>openIn:
BlockClosure>>ifCurtailed:
BlockClosure>>ensure:
Cursor>>showWhile:
SmalltalkSystemIcon>>openIn:
[] in System Folder>>createComponents
FolderPresenter>>onActionPerformed
ListView(View)>>performAction
FolderPresenter(Presenter)>>performAction
ListView>>onLeftButtonDoubleClicked:
FolderPresenter(Presenter)>>onLeftButtonDoubleClicked:
ListView(View)>>wmLButtonDblClk:wParam:lParam:
ListView(View)>>dispatchMessage:wParam:lParam:
[] in InputState>>wndProc:message:wParam:lParam: cookie:
BlockClosure>>ifCurtailed:
GuiInputState(InputState)>>wndProc:message:wParam:lParam: cookie:
ShellView(View)>>isDialogMessage:
ShellView>>preTranslateMouseInput:
ShellView(View)>>preTranslateMessage:
GuiInputState(InputState)>>preTranslateMessage:
GuiInputState(InputState)>>pumpMessage:
GuiInputState(InputState)>>loopWhile:
GuiInputState(InputState)>>mainLoop
[] in GuiInputState(InputState)>>forkMain
ExceptionHandler(ExceptionHandlerAbstract)>>markAndTry
[] in ExceptionHandler(ExceptionHandlerAbstract)>>try:
BlockClosure>>ifCurtailed:
BlockClosure>>ensure:
ExceptionHandler(ExceptionHandlerAbstract)>>try:
BlockClosure>>on:do:
[] in BlockClosure>>newProcess:

I started by inserting a halt into XmlPad>>restoreTextStyles and walking forward until things went pearshaped, which they appeared to do by the time we finished with Object class>>fromRegKey:
the line I can find where things go bad is:
params := aRegKey value. This (eventually) calls decodeMultiSz.
String class>>fromByteArray:length:startingAt: returns an answer of 'Array30'  ( is the \0 character). This appears to be correct, but I could be misinterpreting it.
Investigations show that #('Array' '30') gets eaten and ends up becoming #('A' 'r' 'y' '3'). I suspect things are getting eaten by decodeFrom:upTo: but I don't know why.
Operating systems:

OS: Windows Vista, Fedora 28
Git version: v7.1.10-44-g54eb3494

This is what you would see if you'd not rebuilt the VM. The decoding of REG_MULTI_SZ is covered by RegKeyTest>>testMultiSz (which decodes an object serialised into the registry in the exact same way), so that would be failing if this were an actual bug.

I snagged a copy of the VM for DolphinVM-v7.1.10, extracted that, still got the same result when I opened up the image. Do I need to rebuild the image too?

Yes, that will work. If you want to work with the source code direct from the repo, then in order to have matching code either rebuild the VM yourself, or grab the artefacts from the corresponding master build as you did. Obviously this won't be necessary if there are no changes to the VM code since the last time you built/downloaded it.

authors: blairmcg brickviking

repo: dolphinsmalltalk/Dolphin


text:
Opening a MessageBox to confirm a ListView selection change causes ListView to steal the event loop until the mouse is moved

Open something with a MethodBrowser—a class browser, method explorer, etc—with more than one method showing. Click on a method, make a change but don't accept it. Then carefully click on another method, without moving the mouse after you click. Answer "no" when asked if you want to save changes. The list selection will change, but the method workspace at the bottom doesn't update—until you move the mouse, even by a pixel, at which point it does.
I believe the process is getting stuck performing aMouseEvent defaultWindowProcessing in ListView>>onButtonPressed:—the ListView takes over the event loop waiting for a mouse-up event (while e.g. watching for movement to initiate a drag), but the mouse-up event has already been processed by the MessageBox. When the mouse is moved, I guess it notices that okay, I haven't seen a mouse up, but the mouse button isn't down so I better let go of the event loop. ...though this doesn't exactly fit, because if you move the mouse while the MessageBox is still open, the problem doesn't occur...
It's not obvious to me what the Right Way To Do This is, but opening a MessageBox to confirm a list selection change seems like something that other Win32 programmers would want to do, even outside of Dolphin, so I would think there must be a way to make it work...

You are right that this is something many Win32 programmers might want to do, but the ListView is not designed to support it in a consistent way. It doesn't have a native "selection changing" event - or at least not one that works consistently. LVN_ITEMCHANGING notifications can be used to do this, but they are not sent when the control is in "virtual" (LVS_OWNERDATA) mode. We tend to favour the virtual mode as it is more flexible and generally offers better performance for larger lists. Therefore in order to provide a general "selection changing" event we deliberately went against an important principle we'd learned in trying to build previous frameworks using native widgets, which might be paraphrased as "Don't fight the control. You'll lose." In this case it worked out reasonably well, but your bug does rather validate the principle.
I'm not sure how much it matters though. Chances of encounter are low, and the impact when it happens also low. It may be fixable, but care would be needed not to break other scenarios or to rely too much on undocumented behaviour that may not work in future versions. So potentially costly/risky, and the value seems relatively low.

Actually, below is a fix for this. It needs a little more testing/refinement, but seems low risk.
ListView>>onButtonPressed: aMouseEvent
	"Private - Common handler for a button down mouse event. Look for potential
	selection change events, and fire a #selectionChanging: event if necessary.
	The mouse event is only allowed to propagate to the control if we are happy that
	the selection should indeed be changed."

	| indices |
	indices := self newSelectionsFromEvent: aMouseEvent.
	^indices = lastSelIndices
		ifTrue: [aMouseEvent defaultWindowProcessing]
		ifFalse:
			[(self onSelChanging: indices cause: #mouse)
				ifTrue:
					[| answer |
					"Selection change permitted?"
					(Keyboard default isButtonDown: aMouseEvent button)
						ifFalse:
							["Post the mouse up consumed by a prompt that the control will miss"
							self
								postMessage: aMouseEvent message + 1
								wParam: 0
								lParam: aMouseEvent lParam].
					answer := aMouseEvent defaultWindowProcessing.
					self onSelChanged.	"Selection may have changed"
					answer]
				ifFalse:
					["Suppress the mouse down so not received by control"
					0]]

That makes sense about not fighting for control of the event loop. Unfortunate that such an obvious use-case wasn't considered in the design of the control, but I guess there's nothing we can do about it. (Well. One could theoretically reimplement everything that defaultWindowProcessing does, but designed to work within the normal, Dolphin-controlled event loop, but...no.)
Unfortunately...well, there's more to my story. Sounds like I'm probably going to have to find a specific workaround for my particular case, but here's the deal:
I'm actually encountering this most dramatically in automated tests, where there isn't any other interaction going on to unstick things and so the test hangs forever. The reason it's coming up now is that in Dolphin 6, merely having the mouse hovering over any Dolphin window (most conveniently the SmalltalkSystemShell) was enough to prevent things from sticking. And in older versions of Dolphin 7.0, I was able to work around the problem by posting a WM_MOUSEMOVE to the control—this was enough to unstick it iff the mouse button had in fact been released. Unfortunately, your proposed solution with a WM_[LMR]BUTTONUP message has an unwanted side-effect: it will (sometimes? always? often enough) cause the control to trigger an extra NM_CLICK notification, which ends up generating an extra #selectionChanging: event. This ends up being a problem for me because of arcane details of the testing environment, but duplicate notifications seem like a thing to avoid in any case.
So, I guess the only question I have at this point is, do you have any idea what might have changed, that previously the control would un-confuse itself (presumably inspecting the actual button state and realizing the button is no longer pressed?) on a WM_MOUSEMOVE, but now it only does so on a WM_[LMR]BUTTONUP?

As a quick response, try removing the line self onSelChanged.	"Selection may have changed". That may now be duplicating the notification that the control is now sending.

A slightly firmer proposal would be something like 0a3edda8 in the branch blairmcg/898.
This ensures that the NM_CLICK/NM_RCLICK notifications are always generated and used to perform the actual selection change, and should mean there is only one selection change notification. It will need some time to bake even if it is the right thing to do.
To have any reasonable prospect of identifying changes that have caused the behaviour to change we'd need to narrow it down a bit, preferably by identifying the actual versions where the change occurred. Even using a binary-chop technique that can be time consuming. Given that this has always needed a workaround, I'm not sure that would be time well spent unless it really isn't possible to fix it.

The duplicate event is a #selectionChanging: event, not a #selectionChanged—the one from #onButtonPressed:, and the one from #maybeSelChanging:. What "fixes" it for me—but this is a horrifically ugly hack—is to trick the control into thinking the selection-change has already happened while executing #defaultWindowProcessing, then undo the trickery before the final #onSelChanged:
onButtonPressed: aMouseEvent
	"Private - Common handler for a button down mouse event. Look for potential
	selection change events, and fire a #selectionChanging: event if necessary.
	The mouse event is only allowed to propagate to the control if we are happy that
	the selection should indeed be changed."

	| indices |
	indices := self newSelectionsFromEvent: aMouseEvent.
	^indices = lastSelIndices
		ifTrue: [aMouseEvent defaultWindowProcessing]
		ifFalse:
			[(self onSelChanging: indices cause: #mouse)
				ifTrue:
					[| answer oldLastSelIndices |
					"Selection change permitted. Trick the control into thinking the selection has *already* changed,
					to prevent a duplicate #selectionChanging: event from #nmClick:"
					oldLastSelIndices := lastSelIndices.
					lastSelIndices := indices.
					answer := aMouseEvent defaultWindowProcessing.
					lastSelIndices := oldLastSelIndices.
					self onSelChanged.	"Selection may have changed"
					answer]
				ifFalse:
					["Suppress the mouse down so not received by control"
					0]].

Perhaps this could be made less ugly by setting a flag for "selection change approved and in progress", and skipping additional events based on that rather than hacking lastSelIndices?

Ah, right. I'm assuming your code above would have the mouse up send in it?
A flag would be better, but like any transient mode there may be fragility. It would be an improvement to respond properly to the click notifications as the place that the selectionChanged: events are generated, but not selectionChanging:. The normal case is that selectionChanging: is fired only mouse down in order to allow the selection change to be blocked (this is where we are fighting what the list wants to do), but there is a special case of marquee selection in a multi-select list. That would have been firing a second selectionChanging: event, and I'm not sure that it should. The argument for doing so would be that the selections are different again. The argument against, that it is part of the same interaction and you certainly wouldn't want to prompt twice.  It needs some more thought/experimentation.

Yes—when I saved that method I had the mouse-up send elsewhere, in my application code's #selectionChanging: handler, but it was there.
Yeah, I think you've pinned down the problem—it's the allowance for the possibility of a drag-select that's causing the duplicate event. My thoughts: The thing is that in that case, we don't really know the proper value for #newSelections until the drag finishes. We know that the selection is going to change—arguably "is changing"—but we don't know what it will be. Not sure how that should inform when we fire the event, but something to consider.
...Aha, something that might be helpful. It looks like that sort of drag-select can only be initiated by a click outside of any item, which we can easily detect in #onButtonPressed:. But I'm not sure exactly what to do with that information—to be useful we'd probably have to set a flag, and transient modes are fragile as you say... I'll sleep on it for tonight.

After not much thought it is apparent that it isn't possible to reconcile sending a single selectionChanging: event for marquee selection with the fact that this is sent on mouse down for mouse-based selections. Therefore I think we have to one of two things for marquee selection:
(i) Send two selectionChanging: events for marquee selection only; one for losing all selection when the mouse goes down outside any item to initiate the marquee selection, and one with the gained selections at the end of the drag. This is what happens currently in any case, and also it is likely one would only want to prompt to allow the selection change when the original selection is lost. That prompt would effectively cancel the marquee selection. When the 2nd event comes around, there will be no current selection.
(ii) Use the selection-reversion mechanism that is in-place to allow selection changes to be denied when made by keyboard actions, and for marquee selection delay the selection changing event until mouse up.
Although the 2nd option is then inconsistent with other mouse based selection in that the selection will visually change, and then revert, this seems preferable to raising two events for one user action, so I am leaning towards that. Marquee selection is a less important scenario anyway, particularly for the predominant report mode use of the list view.
I like the idea of processing the actual selection changes in response to the nmClick:/nmRClick: as is effectively done in my previous proposal that was always generating two selectionChanging: events. If that is kept, then it is just necessary to recognise that a selectionChanging: event has already been sent for the click and not send another, just the selectionChanged:. This would be similar to the way you suppressed it by temporarily modifying the lastSelIndices, but using separate state that holds the last confirmed new selections. This will avoid upsetting any of the existing uses of lastSelIndices (like the selection reversion mechanism), and so will fail in a safer way if something goes wrong or is wrong in the logic in some obscure case.
I merged some changes yesterday to allow for more inst vars in ListView.
The first thing to do, however, is to create some tests that replicate the existing problem, but also describe the expected sequence of events.

@daniels220, in your tests are you using a ListView in multi-select or single select mode? I ask because in the tests I am adding for the event sequence that simulate a click by posting events to the control I'm finding that in the case without a message box confirmation I get two selection changing events anyway because of the nmClick: handler as it is currently implemented. What I'm seeing is the the control appears to grab control of the message loop when it is passed the WM_LBUTTONDOWN (as you said when reporting the issue), and then consumes and processes the WM_LBUTTONUP that my test has put in the queue and sends an NM_CLICK before it returns from the defaultWindowProcessing call. Thus I get a 2nd selectionChanging: event before the onButtonPressed: method updates the selection.
It is very easy to demonstrate this by adding some diagnostic tracing at the top of the ListView>>onSelChanging:cause: method, like this:
onSelChanging: anArray cause: aSymbol
	...
	Transcript print: self; nextPutAll: ' onSelChanging: '; print: anArray; nextPutAll: ' cause: '; print: aSymbol; cr.
	^self isStateRestoring or:
	...

With this in place, every time I click in the method list of a browser I see, for example:
a ListView(16r901AA, 'Methods') onSelChanging: #(218) cause: #mouse
a ListView(16r901AA, 'Methods') onSelChanging: #(218) cause: #mouse

The only case where the existing code does not generate the 2nd selectionChanging: event for a multi-select list view is when a confirmation message box is shown. The effect of my previous proposal was to remove this exceptional case.
I'm intending to fix the duplicate selectionChanging: events (with the possible exception of marquee selection, where they won't be duplicates as such), but I'm curious as to why these were not already a problem in your tests.

Yes, in my tests the view is in multi-select mode—but I realize that, although the test intercepts the MessageBox call and doesn't actually show one, another part of the code does process messages at that point (by way of a wait on a ModalMsgLoop). So, the mouse-up is consumed and #nmClick: doesn't fire. As I mentioned before, the reason I am encountering a new problem now is that, in Dolphin 7.0 from mid-2017, posting a WM_MOUSEMOVE was enough to unstick the control, but without firing #nmClick:, so that was what the test was doing. In turn in production, the #nmClick: does fire, but by that point the conditions that would cause the confirmation to be shown no longer apply (the mocking in the test is incomplete, which is why they continue to apply in the test—there are other tests that do simulate things more accurately, at the cost of performance, so it's a layered thing).
Thanks for working with me to wrangle this!

Ok, that is useful to know. The ListView documentation says that with respect to WM_LBUTTONDOWN it is:

Processed in different ways depending on whether a click or drag operation is being initiated. To determine which operation is involved, the list-view control enters a modal message loop until either the button is released or the mouse is moved. In the case of a click, the list-view control might change which item has the focus and which items are selected, taking into account the cursor position, the state of the SHIFT and CTRL keys, and so on. Then the list-view control sends its parent window an NM_CLICK (list view) notification code.
If dragging begins over an item, the list-view control selects and sets the focus to the item. Then it sends an LVN_BEGINDRAG notification code to the parent window. The parent window is responsible for actually carrying out the drag operation.
If dragging begins over the window background, the list-view control enters another modal message loop, enabling the user to form a rectangle by dragging the mouse. Items within the rectangle are selected.

So from that we would expect that either a button up or mouse move event should release the detection loop. I would expect there to be some hysteresis applied to the mouse move, and that it would then initiate a drag if moved by more than some amount with the mouse down. If so then a mouse move more than a certain distance would allow return from the WM_LBUTTONDOWN handler, a LVN_BEGINDRAG notification would be sent, and after that the ListView leaves it up to the app to implement the drag loop.
There is no immediately obvious reason that sending a WM_MOUSEMOVE would not cancel the mode. One would have to binary chop the history to find the commit where it goes wrong (if indeed it is due to a change in Dolphin and not Windows). As an experiment I tried posting a WM_MOUSEMOVE to the control in the onButtonPressed: in a similar way to the earlier modification to add a WM_MOUSEUP. I've pasted this method below. Running with this, when I try the manual scenario in a class browser that you outlined in your original posting, I find that the selection does change after answering "No" the prompt. I don't think this is the right fix because I think it is better to receive and action the nmClick:, but it is interesting that the manual scenario is different than your test.
Actually I haven't yet managed to persuade the control to block in its WM_LBUTTONDOWN handler from my test, but when I do I'll then work on a fix.
onButtonPressed: aMouseEvent
	"Private - Common handler for a button down mouse event. Look for potential selection change events, and fire a #selectionChanging: event if necessary. The mouse event is only allowed to propagate to the control if we are happy that the selection should indeed be changed."

	| indices |
	indices := self newSelectionsFromEvent: aMouseEvent.
	^indices = lastSelIndices
		ifTrue: [aMouseEvent defaultWindowProcessing]
		ifFalse:
			[(self onSelChanging: indices cause: #mouse)
				ifTrue:
					[| answer |
					"Selection change permitted"
					(Keyboard default isButtonDown: aMouseEvent button)
						ifFalse:
							[self
								postMessage: WM_MOUSEMOVE
								wParam: (aMouseEvent wParam maskClear: aMouseEvent buttonFlag)
								lParam: aMouseEvent lParam].
					answer := aMouseEvent defaultWindowProcessing.
					self onSelChanged.	"Selection may have changed"
					answer]
				ifFalse:
					["Suppress the mouse down so not received by control"
					0]]

But it only blocks if I move the mouse outside of any Dolphin window while the test runs, which is interesting

I have noticed this as well—in fact under older versions of Windows I was able to work around the issue by using Cursor position: to move the cursor over a Dolphin window before running such a test. This no longer seems to work, I think as a result of Windows being more protective of the user's control of the actual cursor position.
Anyway, the fix in #913 looks good—thanks for working on this!

That's good.

I have noticed this as well—in fact under older versions of Windows I was able to work around the issue by using Cursor position: to move the cursor over a Dolphin window before running such a test. This no longer seems to work, I think as a result of Windows being more protective of the user's control of the actual cursor position.

The tests actually do that in order to emulate the cursor being moved outside the window, and then move it back again to where it was (see ListControlTest>>sendClickEvent:). Windows should let the foreground app move the cursor, but not a background app. So if you've lost activation to something else (which probably includes Windows deciding the app is non-responsive) then it won't work.


text:
Swashbuckle.AspNetCore  .Net 6 not available

Hello! I'am new in dotnet. I have a problem with the package.
It's show a Swashbuckle.AspNetCore Not available in the Manage NuGet Packages and i get an NU1101 error.
Any help please?
Thank you

I don't think the problem lies in this package but rather in the IDE or something with your setup,
Try installing it from the CLI by running this command in the project root folder.
dotnet add package Swashbuckle.AspNetCore.Cli

authors: DanielThyselius EvegeniyNekrasov


text:
Multiple ResponseCode with classes

One Api has Two possible outcomes (OK or ACCEPTED) for each i have a diffrent response model.
How can i tell swashbuckle how they are related to which status code?

You can use the [SwaggerResponse] attribute.  For example.
	[SwaggerResponse(HttpStatusCode.OK, Type = typeof(OKResponse))]
	[SwaggerResponse(HttpStatusCode.Accepted, Type = typeof(AcceptedResponse))]
	public HttpResponseMessage Get()
	{
	}

authors: Gentlehag MerickOWA

repo: domaindrivendev/Swashbuckle


text:
Update @testing-library/dom to v10

I'm submitting a ...
[ ] bug report
[x] feature request
[ ] question about the decisions made in the repository
[ ] question about how to use this project

Summary
Thanks for this package - we use it in all of our tests to keep them tidy and use models of the page to build our assertions. We would like to upgrade to @testing-library/react v15, however this brings the version of @testing-library/dom to v10 with   this package still using v9 as a peer dependency. This causes a lot of errors about act() usage in our logs.

Is there any update to this issue?

Unfortunately, we are currently unable to perform an Angular 18 upgrade as it is not supported. Is there an update, when and if it will happen?

Just fixed it by overriding npm peer dependency. Just add
"overrides": {
    "testing-library-selector": {
      "@testing-library/dom": "^10.0.0"
    }
  }

to the end of your package.json


text:
Pellet Usage Unknown

With the Version V4.04 the Pellet Usage is not longer available in Homeassistant.
With nodered and the json command i got the values:
payload.pe1.L_pellets_today
payload.pe1.L_pellets_yesterday

Hi @thomas1235678
can you please post the full json. Are there also other values missing?
That's how we get the value today:

Hi,
{
"system":{
"system_info":"system global variables",
"L_ambient":{"val":182, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Außentemperatur"},
"L_errors":{"val":0, "factor":1, "min":-32768, "max":32767, "text":"Fehler"},
"L_usb_stick":{"val":0, "format":"0:Aus|1:Ein", "text":"Usb Stick erkannt"},
"L_boiler_temp":{"val":502, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Kesseltemperatur"},
"L_existing_boiler":{"val":0, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Bestehender Kessel"},
"mode":{"val":1, "format":"0:Aus|1:Auto|2:Warmwasser", "text":"Betriebsart"}
},
"weather":{
"weather_info":"current weather data",
"L_temp":{"val":140, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Akt. Temperatur"},
"L_clouds":{"val":3, "unit":"%", "factor":1, "min":-32768, "max":32767, "text":"Akt. Bewölkung"},
"L_forecast_temp":{"val":230, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Durchschnittliche Temperatur"},
"L_forecast_clouds":{"val":11, "unit":"%", "factor":1, "min":-32768, "max":32767, "text":"Durchschnittliche Bewölkung"},
"L_forecast_today":{"val":1, "format":"0:Heute|1:Morgen", "text":"Wetterprognose start"},
"L_starttime":{"val":800, "factor":1, "min":-32768, "max":32767, "text":"Startzeit"},
"L_endtime":{"val":1800, "factor":1, "min":-32768, "max":32767, "text":"Endzeit"},
"L_source":{"val":"https://www.openweathermap.org", "length":20, "text":"Info"},
"L_location":{"val":"xyz", "length":20, "text":"Ort"},
"cloud_limit":{"val":55, "unit":"%", "factor":1, "min":0, "max":100, "text":"Bewölkungslimit"},
"hysteresys":{"val":-40, "unit":"K", "factor":0.1, "min":-200, "max":0, "text":"Abbruchtmp. Differenz"},
"offtemp":{"val":-100, "unit":"°C", "factor":0.1, "min":-300, "max":200, "text":"Abschalttemperatur"},
"lead":{"val":120, "unit":"min", "factor":1, "min":0, "max":600, "text":"Vorhaltezeit"},
"refresh":{"val":0, "text":"Aktualiseren"},
"oekomode":{"val":1, "format":"0:Aus|1:Ein", "text":"Öko Modus"}
},
"forecast":{
"forecast_info":"date|temp|cloud|speed|image|code|unit[|sunrise|sunset] code see https://openweathermap.org/weather-conditions",
"L_w_0":{"val":"Mo, 29 Jul 07:05|14|3|4 km/h|01d|800|C|05:35|20:45", "length":20},
"L_w_1":{"val":"Mo, 29 Jul 08:00|14|2|3 km/h|01d|800|C", "length":20},
"L_w_2":{"val":"Mo, 29 Jul 11:00|20|24|4 km/h|02d|801|C", "length":20},
"L_w_3":{"val":"Mo, 29 Jul 14:00|26|19|7 km/h|02d|801|C", "length":20},
"L_w_4":{"val":"Mo, 29 Jul 17:00|26|0|8 km/h|01d|800|C", "length":20},
"L_w_5":{"val":"Mo, 29 Jul 20:00|21|3|7 km/h|01d|800|C", "length":20},
"L_w_6":{"val":"Mo, 29 Jul 23:00|17|0|5 km/h|01n|800|C", "length":20},
"L_w_7":{"val":"Di, 30 Jul 02:00|15|0|7 km/h|01n|800|C", "length":20},
"L_w_8":{"val":"Di, 30 Jul 05:00|13|0|7 km/h|01n|800|C", "length":20},
"L_w_9":{"val":"Di, 30 Jul 08:00|17|0|7 km/h|01d|800|C", "length":20},
"L_w_10":{"val":"Di, 30 Jul 11:00|23|0|11 km/h|01d|800|C", "length":20},
"L_w_11":{"val":"Di, 30 Jul 14:00|27|3|8 km/h|01d|800|C", "length":20},
"L_w_12":{"val":"Di, 30 Jul 17:00|28|51|3 km/h|04d|803|C", "length":20},
"L_w_13":{"val":"Di, 30 Jul 20:00|23|26|2 km/h|03d|802|C", "length":20},
"L_w_14":{"val":"Di, 30 Jul 23:00|18|0|6 km/h|01n|800|C", "length":20},
"L_w_15":{"val":"Mi, 31 Jul 02:00|17|0|5 km/h|01n|800|C", "length":20},
"L_w_16":{"val":"Mi, 31 Jul 05:00|15|2|4 km/h|01n|800|C", "length":20},
"L_w_17":{"val":"Mi, 31 Jul 08:00|19|3|4 km/h|01d|800|C", "length":20},
"L_w_18":{"val":"Mi, 31 Jul 11:00|26|9|6 km/h|01d|800|C", "length":20},
"L_w_19":{"val":"Mi, 31 Jul 14:00|30|5|5 km/h|01d|800|C", "length":20},
"L_w_20":{"val":"Mi, 31 Jul 17:00|31|0|4 km/h|01d|800|C", "length":20},
"L_w_21":{"val":"Mi, 31 Jul 20:00|25|1|3 km/h|01d|800|C", "length":20},
"L_w_22":{"val":"Mi, 31 Jul 23:00|21|25|6 km/h|03n|802|C", "length":20},
"L_w_23":{"val":"Do, 1 Aug 02:00|20|62|24 km/h|10n|500|C", "length":20},
"L_w_24":{"val":"Do, 1 Aug 05:00|18|97|4 km/h|10n|500|C", "length":20}
},
"hk1":{
"hk_info":"heating circuit data",
"L_roomtemp_act":{"val":225, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Raumtemperatur"},
"roomtemp_act_set":{"val":225, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"VL Ist"},
"L_roomtemp_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"RT Soll"},
"L_flowtemp_act":{"val":335, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"VL Ist"},
"L_flowtemp_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"VL Soll"},
"L_comfort":{"val":0, "unit":"K", "factor":0.1, "min":-32768, "max":32767, "text":"Komforttemperatur"},
"L_state":{"val":8, "factor":1, "text":"Status"},
"L_statetext":"Betriebsart Aus",
"L_pump":{"val":0, "format":"0:Aus|1:Ein", "text":"HK Pumpe"},
"remote_override":{"val":0, "unit":"K", "factor":0.1, "min":-32768, "max":32767, "text":"HK Fernbedienung"},
"mode_auto":{"val":0, "format":"0:Aus|1:Auto|2:Heizen|3:Absenken", "text":"Betriebsart"},
"time_prg":{"val":0, "format":"0:Zeit 1|1:Zeit 2", "text":"Zeitauswahl"},
"temp_setback":{"val":180, "unit":"°C", "factor":0.1, "min":100, "max":400, "text":"Raumtemp Absenken"},
"temp_heat":{"val":220, "unit":"°C", "factor":0.1, "min":100, "max":400, "text":"Raumtemp Heizen"},
"temp_vacation":{"val":150, "unit":"°C", "factor":0.1, "min":100, "max":400, "text":"Raumtemp Urlaub"},
"name":{"val":"Badheizkoer.", "length":20, "text":"Anzeigename"},
"oekomode":{"val":0, "format":"0:Aus|1:Komfort|2:Minimum|3:Ökologisch", "text":"Öko Modus"},
"solarheat_mode_auto":{"val":0, "format":"0:Aus|1:Ökologisch|2:Ein", "text":"Betriebsart"},
"solarheat_on_tmp":{"val":800, "unit":"°C", "factor":0.1, "min":300, "max":900, "text":"Einschalttemperatur"},
"solarheat_off_tmp":{"val":700, "unit":"°C", "factor":0.1, "min":300, "max":800, "text":"Abschalttemperatur"},
"solarheat_mode":{"val":0, "format":"0:Vorlauftemp.|1:Raumtemp.", "text":"Heizmodus"},
"solarheat_tmp_set":{"val":300, "unit":"°C", "factor":0.1, "min":200, "max":800, "text":"Vorlauftemperatur"}
},
"hk2":{
"hk_info":"heating circuit data",
"L_roomtemp_act":{"val":221, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Raumtemperatur"},
"roomtemp_act_set":{"val":221, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"VL Ist"},
"L_roomtemp_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"RT Soll"},
"L_flowtemp_act":{"val":248, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"VL Ist"},
"L_flowtemp_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"VL Soll"},
"L_comfort":{"val":0, "unit":"K", "factor":0.1, "min":-32768, "max":32767, "text":"Komforttemperatur"},
"L_state":{"val":8, "factor":1, "text":"Status"},
"L_statetext":"Betriebsart Aus",
"L_pump":{"val":0, "format":"0:Aus|1:Ein", "text":"HK Pumpe"},
"remote_override":{"val":0, "unit":"K", "factor":0.1, "min":-32768, "max":32767, "text":"HK Fernbedienung"},
"mode_auto":{"val":0, "format":"0:Aus|1:Auto|2:Heizen|3:Absenken", "text":"Betriebsart"},
"time_prg":{"val":0, "format":"0:Zeit 1|1:Zeit 2", "text":"Zeitauswahl"},
"temp_setback":{"val":180, "unit":"°C", "factor":0.1, "min":100, "max":400, "text":"Raumtemp Absenken"},
"temp_heat":{"val":220, "unit":"°C", "factor":0.1, "min":100, "max":400, "text":"Raumtemp Heizen"},
"temp_vacation":{"val":150, "unit":"°C", "factor":0.1, "min":100, "max":400, "text":"Raumtemp Urlaub"},
"name":{"val":"FBH", "length":20, "text":"Anzeigename"},
"oekomode":{"val":1, "format":"0:Aus|1:Komfort|2:Minimum|3:Ökologisch", "text":"Öko Modus"},
"solarheat_mode_auto":{"val":0, "format":"0:Aus|1:Ökologisch|2:Ein", "text":"Betriebsart"},
"solarheat_on_tmp":{"val":800, "unit":"°C", "factor":0.1, "min":300, "max":900, "text":"Einschalttemperatur"},
"solarheat_off_tmp":{"val":700, "unit":"°C", "factor":0.1, "min":300, "max":800, "text":"Abschalttemperatur"},
"solarheat_mode":{"val":0, "format":"0:Vorlauftemp.|1:Raumtemp.", "text":"Heizmodus"},
"solarheat_tmp_set":{"val":200, "unit":"°C", "factor":0.1, "min":200, "max":800, "text":"Vorlauftemperatur"}
},
"pu1":{
"pu_info":"accu data",
"L_tpo_act":{"val":500, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Einschaltfühler"},
"L_tpo_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"TPO Soll"},
"L_tpm_act":{"val":496, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Ausschaltfühler"},
"L_tpm_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"TPM Soll"},
"L_pump_release":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Pumpenfreigabe Temp"},
"L_pump":{"val":0, "unit":"%", "factor":1, "min":0, "max":100, "text":"Drehzahl"},
"L_state":{"val":512, "factor":1, "text":"Status"},
"L_statetext":"Anforderung Aus",
"mintemp_off":{"val":80, "unit":"°C", "factor":0.1, "min":80, "max":900, "text":"Puffertemp min Aus"},
"mintemp_on":{"val":80, "unit":"°C", "factor":0.1, "min":80, "max":900, "text":"Puffertemp min Ein"},
"ext_mintemp_off":{"val":80, "unit":"°C", "factor":0.1, "min":80, "max":900, "text":"Puffertemp min Aus"},
"ext_mintemp_on":{"val":80, "unit":"°C", "factor":0.1, "min":80, "max":900, "text":"Puffertemp min Ein"}
},
"ww1":{
"ww_info":"domestic hot water data",
"L_temp_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Wassertemp Soll"},
"L_ontemp_act":{"val":514, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Ein Temperatur"},
"L_offtemp_act":{"val":500, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Aus Temperatur"},
"L_pump":{"val":0, "format":"0:Aus|1:Ein", "text":"Pumpe"},
"L_state":{"val":4, "factor":1, "text":"Status"},
"L_statetext":"Betriebsart Aus",
"time_prg":{"val":0, "format":"0:Zeit 1|1:Zeit 2", "text":"Zeitauswahl"},
"sensor_on":{"val":0, "format":"0:WW|1:TPO|2:TPM|3:SpUnten", "text":"Einschaltfühler"},
"sensor_off":{"val":1, "format":"0:WW|1:TPO|2:TPM|3:SpUnten", "text":"Ausschaltfühler"},
"mode_off":{"val":0, "format":"0:Aus|1:Auto|2:Ein", "text":"Betriebsart"},
"mode_auto":{"val":0, "format":"0:Aus|1:Auto|2:Ein", "text":"Betriebsart"},
"heat_once":{"val":0, "format":"0:Aus|1:Ein", "text":"Einmal Aufbereiten"},
"temp_min_set":{"val":410, "unit":"°C", "factor":0.1, "min":80, "max":800, "text":"Wassertemp Min"},
"temp_max_set":{"val":550, "unit":"°C", "factor":0.1, "min":80, "max":800, "text":"Wassertemp Soll"},
"name":{"val":"Warmwasser ", "length":20, "text":"Anzeigename"},
"smartstart":{"val":90, "unit":"min", "factor":1, "min":0, "max":90, "text":"Intelligenter Start"},
"use_boiler_heat":{"val":0, "format":"0:Aus|1:Ein", "text":"Restwärmenutzung"},
"oekomode":{"val":0, "format":"0:Aus|1:Komfort|2:Minimum|3:Ökologisch", "text":"Öko Modus"},
"solarheat_mode_auto":{"val":0, "format":"0:Aus|1:Ökologisch|2:Ein", "text":"Betriebsart"},
"solarheat_on_tmp":{"val":750, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Einschalttemperatur"},
"solarheat_off_tmp":{"val":600, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Abschalttemperatur"}
},
"pe1":{
"pe_info":"pellematic data",
"L_temp_act":{"val":502, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Kesseltemperatur"},
"L_temp_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"KT Soll"},
"L_ext_temp":{"val":-32768, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Abgastemperatur"},
"L_frt_temp_act":{"val":493, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Flammraumtemp"},
"L_frt_temp_set":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"FRT Soll"},
"L_frt_temp_end":{"val":80, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Flammraumendtemp"},
"L_br":{"val":0, "format":"0:Aus|1:Ein", "text":"Brennerkontakt"},
"L_ak":{"val":0, "format":"0:Aus|1:Ein", "text":"Best Kessel (AK)"},
"L_not":{"val":1, "format":"0:Aus|1:Ein", "text":"Emergency Stop"},
"L_stb":{"val":1, "format":"0:Aus|1:Ein", "text":"Safety Thermostat"},
"L_modulation":{"val":0, "unit":"%", "factor":1, "min":-32768, "max":32767, "text":"Modulationsstufe"},
"L_runtimeburner":{"val":0, "unit":"zs", "factor":0.01, "text":"Einschubzeit"},
"L_resttimeburner":{"val":0, "unit":"zs", "factor":0.01, "text":"Pausenzeit"},
"L_currentairflow":{"val":0, "unit":"%", "factor":1, "min":-32768, "max":32767, "text":"Lüfter Drehzahl"},
"L_lowpressure":{"val":458, "unit":"EH", "factor":0.1, "min":-32768, "max":32767, "text":"Unterdruck"},
"L_lowpressure_set":{"val":640, "unit":"EH", "factor":0.1, "min":-32768, "max":32767, "text":"Unterdruck Ende"},
"L_fluegas":{"val":0, "unit":"%", "factor":1, "min":-32768, "max":32767, "text":"Saugzug Drehzahl"},
"L_uw_speed":{"val":11, "unit":"%", "factor":1, "min":-32768, "max":32767, "text":"Drehzahl UW"},
"L_state":{"val":2147483648, "factor":1, "text":"PE Kesselstatus"},
"L_statetext":"Aus",
"L_type":{"val":6, "format":"0:PE|1:PES|2:PEK|3:PESK|4:SMART V1|5:SMART V2|6:CONDENS|7:SMART XS|8:SMART V3|9:COMPACT|10:AIR|11:CONDENS XL|12:PELLEMATIC HOME", "text":"Kesseltyp"},
"L_starts":{"val":1125, "factor":1, "text":"Brennerstarts"},
"L_runtime":{"val":2655, "unit":"h", "factor":1, "text":"Brennerlaufzeit"},
"L_avg_runtime":{"val":141, "unit":"min", "factor":1, "text":"PE Mittlere Laufzeit"},
"L_uw_release":{"val":500, "unit":"°C", "factor":0.1, "min":-32768, "max":32767, "text":"Freigabetemperatur"},
"L_uw":{"val":11, "unit":"%", "factor":1, "min":-32768, "max":32767, "text":"PE Drehzahl UW"},
"L_storage_fill":{"val":6453, "unit":"kg", "factor":1, "text":"Füllstand Lager"},
"L_storage_min":{"val":1000, "unit":"kg", "factor":1, "min":0, "max":4000, "text":"Warnung bei"},
"L_storage_max":{"val":6500, "unit":"kg", "factor":1, "min":150, "max":30000, "text":"Max. Füllmenge Lager"},
"L_storage_hopper":{"val":31, "unit":"kg", "factor":1, "min":-32768, "max":32767, "text":"Füllstand Zwischenb"},
"L_pellets_today":{"val":0, "unit":"kg", "factor":1, "min":-32768, "max":32767, "text":"Pelletverbrauch heute"},
"L_pellets_yesterday":{"val":3, "unit":"kg", "factor":1, "min":-32768, "max":32767, "text":"Pelletverbrauch gestern"},
"suction_clean_time":{"val":"18:30", "unit":"h", "text":"Reinigung / Befüllung"},
"mode":{"val":1, "format":"0:Aus|1:Auto|2:Ein", "text":"Betriebsart"}
},
"error":{
}
}

Also hopper_tank is missing.
So far i think these three values are missing.

Hi please test https://github.com/dominikamann/oekofen-pellematic-compact/releases/tag/v3.3.1

repo: dominikamann/oekofen-pellematic-compact


text:
🛑 Dominik Lawetzkys Website is down

In 7905e2d, Dominik Lawetzkys Website (https://dominiklawetzky.de) was down:

HTTP code: 0
Response time: 0 ms

Resolved: Dominik Lawetzkys Website is back up in d0ad7a4 after 6 minutes.

repo: dominiklawetzky/status-page


text:
Fix tests running in CI

Coverage remained the same at 96.396% when pulling a457e332030c46d9aa50e2aa216d4bc5206ed47d on tests into a5517ce4953c01b117412f5f8f07e190036318f5 on master.

Coverage remained the same at 96.396% when pulling 73717929bef7cdbfdd296d606ff4bb604d5de019 on tests into a5517ce4953c01b117412f5f8f07e190036318f5 on master.

authors: coveralls matthewp

repo: donejs/donejs


text:
🛑 Bee Status is down

In 172f1cc, Bee Status (https://status.tob.ee) was down:

HTTP code: 530
Response time: 468 ms

Resolved: Bee Status is back up in a49051c after 7 minutes.

repo: dongqw/upptime


text:
Misc. additional fixes

Some additional fixes not addressed by #83:

The __ placeholder: currently impossible to import it at all
constructN: doesn't work in multiple contexts, i.e. map(constructN(1, Foo))
prop/propEq: enabled numbers for pulling from array offsets

Let me know if this needs changes or you have any other feedback.

Why only global version updated?

authors: goodmind nateabele

repo: donnut/typescript-ramda


text:
add september speakers to list of past speakers

looks like 92c3b09e64d4771e382cfe4ad4e848c1c66fe6d0 replaced the front page with the october speakers, but didn't move the september speakers to the "past" list.

Fixed via d39fe00a573cd0232bf06a6599764be05c7542db.

authors: aaronpk matthewmcvickar


text:
how to check if the subscription is active?

My app only has subscriptions. I want to check if the user's subscription is still active.
Can I use the getAvailablePurchases method for this?
If a subscription is canceled before the end date. Will this method return it?
And after the end of the subscription period, does the method return it?
To keep only active users using the premium version, I thought about checking with this method periodically, like every 10 days. or storing the end date of the user's existing subscription, in the storage and run only after this date.
Would that be a viable way?

See my comments at this issue: https://github.com/dooboolab/react-native-iap/issues/1280

You can see the sample source code in my repo.

authors: hyochan ixuz rogerdribeiro

repo: dooboolab/react-native-iap


text:
Adds Quero Education

Please review our Contribution Guidelines to ensure your changes abides by it.
Review your changes and complete the checklist below.

[✌ ] Company name
[✌ ] Company description
[✌ ] Company location
[✌ ] GitHub link
[✌ ] How Elixir is used
[✌ ] Sorted alphabetically

Sweet addition @roginn!  👍

authors: doomspork roginn

repo: doomspork/elixir-companies


text:
warning: variant AllocateOutputSample is never constructed

Describe the bug
warning: variant `AllocateOutputSample` is never constructed
  --> binaries\runtime\src\operator\mod.rs:71:5
   |
70 | pub enum OperatorEvent {
   |          ------------- variant in this enum
71 |     AllocateOutputSample {
   |     ^^^^^^^^^^^^^^^^^^^^
   |
   = note: `OperatorEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
   = note: `#[warn(dead_code)]` on by default

To Reproduce
Steps to reproduce the behavior:

git checkout -b v0.2.3-rc6 v0.2.3-rc6
cd binaries/daemon && cargo run

Environments (please complete the following information):

System info: windows 10
Dora version: v0.2.3-rc6

Closed by #290

authors: haixuanTao meua

repo: dora-rs/dora


text:
Optional but not nullable in query

I'm using typescript-operations and typescript-apollo-angular to generate types and services. I am trying to run a simple query that returns a subset of fields from my graphql schema; however, Angular fails to compile because the returned query doesn't contain all of the properties.
Following the example from https://graphql-code-generator.com/docs/plugins/typescript-apollo-angular I have a table/schema with fields: id, commentCount, name, user_id.  Here's my query:
query MyFeed {
  feed {
    id
    commentCount
  }
}

And here's (a subset of) the generated graphql.ts:
/** columns and relationships of "feed" */
export type Feed = {
   __typename?: 'feed',
  commentCount: Scalars['Int'],
  id: Scalars['Int'],
  name: Scalars['String'],
  user_id: Scalars['Int'],
};

export type MyFeedQueryVariables = {};

export type MyFeedQuery = (
  { __typename?: 'query_root' }
  & { feed: Array<(
    { __typename?: 'feed' }
    & Pick<Feed, 'id' | 'commentCount'>
  )> }
);

export const MyFeedDocument = gql`
    query MyFeed {
  feed {
    id
    commentCount
  }
}
    `;

  @Injectable({
    providedIn: 'root'
  })
  export class MyFeedGQL extends Apollo.Query<MyFeedQuery, MyFeedQueryVariables> {
    document = MyFeedDocument;

  }

Then it's placed into a component:
export class FeedComponent implements OnInit {

  feed: Observable<Feed[]>;

  constructor(feedGQL: MyFeedGQL) {
    this.feed = feedGQL.watch().valueChanges.pipe(map(result => result.data.feed));
  }

  ngOnInit() {
  }

}

And here Angular fails to compile because the query is missing other fields:
src/app/feed/feed.component.ts:16:5 - error TS2322: Type 'Observable<({ __typename?: "feed"; } & Pick<Feed, "id" | "commentCount">)[]>' is not assignable to type 'Observable<Feed[]>'.
  Type '({ __typename?: "feed"; } & Pick<Feed, "id" | "commentCount">)[]' is not assignable to type 'Feed[]'.
    Type '{ __typename?: "feed"; } & Pick<Feed, "id" | "commentCount">' is missing the following properties from type 'Feed': name, user_id

16     this.feed = feedGQL.watch().valueChanges.pipe(map(result => result.data.feed));

I understand that the type definition does not specify fields like name as optional, but it seems awkward to me that I can't correctly type a returned partial?
I'm not sure if this is a bug, if I'm missing a configuration, or if I'm doing something incorrectly?

Actually, I realize I was too focused on the type and I effectively said the solution in my question. So for posterity: simply wrap the type in Partial. e.g.  feed: Observable<Partial<Feed>[]>;

repo: dotansimha/graphql-code-generator


text:
Doc Typo: addTypenameDocumentTransform rename to addTypenameSelectionDocumentTr…

…ansform
typo
Description
typo in the doc
addTypenameDocumentTransform should be addTypenameSelectionDocumentTransform
Type of change

[ ] This change requires a documentation update

Checklist:

[ ] I have followed the CONTRIBUTING doc and the style guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[ ] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules

A really innocent issue but takes a minute for any new onboarding user. Just hit it myself and it's completely benign but worth noticing there are about 100 other small things for users to keep in mind when adopting the preset.

authors: fadomire medv


text:
Does not appear to take into account nuget package sources

Hi there,
Unless I'm doing something wrong, "dotnet outdated" does not appear to take into account nuget package sources
I'm attempting to test a dotnet template package as part of a CI build - the template depends on other package built as part of the same build.

build nuget packages (which includes a template package)
add local package folder as nuget source
disable nuget.org as a package source
install new templates
use dotnet new to create project using the new templates
use dotnet outdated -u -pre Always to upgrade the template package using the new nuget packages

For example:
dotnet new -i MyProject.Templates::1.6.0-update-templates0001 --nuget-source /home/runner/work/packages
dotnet tool install --global dotnet-outdated-tool

nuget sources add -Name local -Source /home/runner/work/packages
nuget sources Disable -Name nuget.org
nuget sources list

dotnet new templateName -o Test.ProjectName
dotnet outdated -vl Major -pre Always -u -inc MyProject Test.ProjectName

This fails to find any updates for MyProject but does for, eg, Microsoft.Extensions.DependencyInjection. I'd expect it to find MyProject::1.6.0-update-templates0001 etc
nuget sources list confirms that nuget.org is disabled.
Is this a known issue or is my understanding incorrect!?
many thanks.
Pete

Answering my own question ...
dotnet nuget disable source nuget.org
dotnet nuget add source  -n local ~/packages

Get's me further - it at least picks up my new packages... still get an error but at least some progress.
error NU1103: Unable to find a stable package MyProject with version (>= 1.0.0)
error NU1103:   - Found 1 version(s) in local [ Nearest version: 1.6.0-update-templates0001

repo: dotnet-outdated/dotnet-outdated


text:
Building for the first time errors

Hey is there a reason that I'm getting
"The type or namespace name 'App' could not be found (are you missing a using directive or an assembly reference?"
got this thrown from line 20 in Startup.cs in the Configure() method.

There are some breaking changes for preview 9.
Working on fixes.
Check #141 for updates.

Should be fixed now.

repo: dotnet-presentations/blazor-workshop


text:
Fix issues in Part 4

Readme code using incorrect properties and API methods.
XAML end tag in MainPage.xaml was incorrect.
Shorter LINQ Query using MinBy

This is kind of related but noticed the details page looks off for me.

I'm running sudo dotnet workload update but the CLI only ever finds the RC1 bits. 😢


text:
The "Preview an image provided by the InputFile component" content seems strange

A couple of aspects of the "Preview an image provided by the InputFile component" content seem odd to me:

Why does it round-trip the data to .NET? That's potentially very expensive, and could be avoided. Instead, the .NET side already knows the Name of the file being uploaded, so it can send that to some JS function setImage along with a reference to the <input type=file> element, and then the JS code can read inputFileElement.files to look up the corresponding file data without it ever having to be sent to .NET
Why does it claim that "Because setImage is called from a form, it isn't necessary for the setImage function to call revokeObjectURL"? I don't know what "form" is being referred to here, or why that has any bearing on the fact that createObjectURL will leak memory if you fail to revoke the object URL later. As far as I'm aware, it is necessary to revoke the object URL.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 66bb1712-60ac-77a6-10d2-f2d795126783
Version Independent ID: 66bb1712-60ac-77a6-10d2-f2d795126783
Content: Work with images in ASP.NET Core Blazor
Content Source: aspnetcore/blazor/images.md
Product: aspnet-core
Technology: aspnetcore-blazor
GitHub Login: @guardrex
Microsoft Alias: taparik

@TanayParikh is the content provider for these scenarios.
Tanay, my recent UE ("user experience") pass was performed on https://github.com/dotnet/AspNetCore.Docs/pull/26161 about ten days ago, but IIRC the changes were limited to non-technical aspects. My PR opening comment calls out the changes, and I don't think they bear on @SteveSandersonMS's remarks.
The cross-ref for the original content submission is https://github.com/dotnet/AspNetCore.Docs/pull/23720 ... there were some minor updates along the way outside of my UE pass.

Instead, the .NET side already knows the Name of the file being uploaded, so it can send that to some JS function setImage along with a reference to the  element, and then the JS code can read inputFileElement.files to look up the corresponding file data without it ever having to be sent to .NET

Sounds good, we'd just need to call out the duplicate file name issue with a directory upload, that you mentioned in https://github.com/dotnet/aspnetcore/issues/31638#issuecomment-1171540860.

Why does it claim that "Because setImage is called from a form, it isn't necessary for the setImage function to call revokeObjectURL"? I don't know what "form" is being referred to here, or why that has any bearing on the fact that createObjectURL will leak memory if you fail to revoke the object URL later. As far as I'm aware, it is necessary to revoke the object URL.

I think this may have been a miscommunication at some point. We definitely need to still revoke. The following should be better:
- When implementing the preceding function for a form (<xref:Microsoft.AspNetCore.Components.Forms.EditForm> component), it usually isn't necessary to revoke the object URL because it's typically revoked after the user submits the form for processing, as the object URL is no longer required at that point. For a form that uses `setImage`, you can remove the call to [`revokeObjectURL`](https://developer.mozilla.org/docs/Web/API/URL/revokeObjectURL).
+ When implementing the preceding function for a form (<xref:Microsoft.AspNetCore.Components.Forms.EditForm> component), the object URL should typically be revoked after the user submits the form for processing, as the object URL is no longer required at that point.

@guardrex please let me know if the above answers the needs-more-info query, or if there's any other info I can provide 😄

Sure thing. I'll be back online tomorrow (Friday) morning.

@TanayParikh ... Can you email me at my aquent.com address (user: llatham) to discuss this offline? I don't have your email address, nor do I have access to the global address book.

@guardrex assigning this to myself as well, as I know I need to get back to you on this.

Thanks @TanayParikh ... No rush. I took out the offending code that I placed earlier 🙈🤣. We're not showing what he said was bad to show.
I just couldn't quite follow what Steve was saying to do. I understood bits and phrases but not the whole coding concept.

authors: SteveSandersonMS TanayParikh guardrex


text:
Fix Blazor Data Binding code snippet

cc: @scottaddie (in your final days pinging u probably one last time :smile:) @Rick-Anderson @wadepickett
I detect a rendering problem that might be due to an out-of-sequence highlight list. The original line is ...
[!code-razor[](~/blazor/common/samples/3.x/BlazorSample_WebAssembly/Shared/data-binding/PasswordEntry.razor?highlight=7-10,23-24,26-27,13,36-39)]

... with a highlight of 7-10,23-24,26-27,13,36-39 (the "13" is out of sequence) producing ...

I'm updating the line here to ...
[!code-razor[](~/blazor/common/samples/3.x/BlazorSample_WebAssembly/Shared/data-binding/PasswordEntry.razor?highlight=7-10,13,23-24,26-27,36-39)]

... with a highlight of 7-10,13,23-24,26-27,36-39 ("13" in sequence).
This PR is an attempt to see if the sequence is producing the rendering problem because the snippet file is fine.

UPDATE: Confirmed! :+1: ... Out-of-sequence highlight lines aren't supported. I guess I should've known that, but I've done a good job over the years of keeping the numbers+ranges in order. I'll perform a quick Blazor docs sweep to make sure this was the only case.
Here's the good outcome of the PR ...


text:
Blazor event delegate performance

Fixes #22370
Thanks @darraghjones! :rocket: ... but I'll need to have engineering remark on this given that it stretches my understanding of the relevant factors for this scenario. I do want to try and keep the new Action-delegate-based example close to what we're showing in the Lambda expression section of the Event handling article ...
https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/blazor/samples/6.0/BlazorSample_WebAssembly/Pages/event-handling/EventHandlerExample5.razor
The content is TBD based on what engineering has to say about this. Even if I did create a 💩👃 RexStinker™ 😄 here, this PR at least gets the ball rolling on the discussion. I'll ping them when 6.0 RC2 releases, which is when they'll probably have more time to look at this. ~Until then, this will remain here as a DRAFT.~

@darraghjones ... I'll go with this for now. I can't chat with Steve about this at the moment due to the high priority work going on for the 6.0 release. Engineers are 🏃😅 trying to get everything finished and can't be disturbed at the moment. I'll talk to him later about this, probably after 6.0 RC2 releases. Until then, we can take feedback on the coverage and see how it works for devs. Thanks again for calling this out.

Artak signed off on the pattern ...
https://github.com/dotnet/aspnetcore/issues/17886#issuecomment-566158668
... but he didn't ping Steve either. I need to chat with Steve about this, and I'll do so as soon as RC2 lands. I think I need a bullet item on my tracking issue to make sure that I don't forget. He can't be contacted about this at this exact moment. They're swamped with work for the 6.0 release 😅. Don't worry ... this won't get lost on my tracking issue. We'll get the final word from him, and he'll supply the correct guidance+example if we need a change here.

The proposed solution in https://github.com/dotnet/aspnetcore/issues/17886#issuecomment-566158668 is very differnt to your solution. The fix seems to be to avoid using anonymous delegates.

I don't agree, but we need PU support to resolve this. Steve can't be pinged at this exact moment. Let me get back to you on this. We're all 🏃😅 slammed at the moment 🏃🏃🏃🏃. My tracking issue has a bullet point for this subject. I'll get with Steve asap to find out what's what. Give me ........ errrrrr 🤔 .......... immediately after RC2 is released. He should ... in theory ... have 27 seconds to chat with me about it. lol ... 27 seconds ... that's all we're gonna get 😆🏃 until after 6.0 GA.

I've put together a quick test and it confirms mysuspicions that you're solution still suffers from the same performance issues as was originally reported. Hopefully you can see in the screenshot where your event-handler-example-5 page is transmitting 2.9MB of data on each button click, whereas my example is only sending 169 bytes of data.
Note that I had to increase the count of items from 4 to 40k to make this obvious.
Here's my code for the event-handler-example-6 page in my screenshot:
  @page "/event-handler-example-6"

@heading

  @foreach (var item in items)
  {

          <button @onclick="@item.Item2">
              Button #@item.Item1
          </button>

  }

  @code {
      private string heading = "Select a button to learn its position";

      private void UpdateHeading(MouseEventArgs e, int buttonNumber)
      {
          heading = $"Selected #{buttonNumber} at {e.ClientX}:{e.ClientY}";
      }

      private readonly List<Tuple<int, Action<MouseEventArgs>>> items = new();

      protected override void OnInitialized()
      {
          for (var i = 1; i < 40_000; i++)
          {
              var buttonNumber = i;

              items.Add(new Tuple<int, Action<MouseEventArgs>>(buttonNumber, e => UpdateHeading(e, buttonNumber)));
          }
      }
  }

Ok, maybe this is my mistake. Looking at the 'files changed' on this issue (and not the link you posted) it seems the suggestion is indeed similar to my solution.

@darraghjones ... I still have it as a work item on my tracking issue, so it won't get lost. I haven't been able to ping Steve yet. They're slammed prior to a framework release (i.e., 6.0), then they get at least as slammed after the release when a 🐘 TON 🐘 of release feedback/errors come in. Then, we hit the 🎁 holiday break ⛄ ... everyone bugs out until mid-January. I will get back to this as soon as possible. I'm going to add a note to myself on my tracking issue to ping you back after we talk about this section and example.

authors: darraghjones guardrex


text:
How to load saved model in Python?

Hi, I saved a model in C# like this:
https://github.com/dotnet/TorchSharp/blob/664dbda4cf405f6d59cc06e157359896e8a8a217/src/Examples/MNIST.cs#L99
I tried to load the saved state_dict in Python via torch.load but failed:
_pickle.UnpicklingError: pickle data was truncated

Is there a way to load the saved state_dict in Python? Thank you!

Did you check model.load_state_dict?
Also read https://github.com/dotnet/TorchSharp/blob/main/docfx/articles/saveload.md

Did you check model.load_state_dict?
Also read https://github.com/dotnet/TorchSharp/blob/main/docfx/articles/saveload.md

Thank you for your reply. I checked these links but did not find the answer.
For using model.load_state_dict, I have to load the saved state_dict (which is generated by C#) first. However, I don't know how to load it in Python, torch.load doesn't work.
The second link is very useful if I want to save a state_dict in Python and load in C#. In my case, I have to save a model by C# and load it back in Python.

@Leo-LiHao , @pkese -- currently, only PyTorch -> TorchSharp is supported. The problem is that the format is the same as .NET serialization, which has some unique aspects in how strings are encoded, so it does not match the Python pickling format at all.
It should be relatively straightforward to add an 'import.py' module patterned on the 'export.py' that already exists. Sounds like a great PR waiting to happen. :-)

@Leo-LiHao , @pkese -- currently, only PyTorch -> TorchSharp is supported. The problem is that the format is the same as .NET serialization, which has some unique aspects in how strings are encoded, so it does not match the Python pickling format at all.
It should be relatively straightforward to add an 'import.py' module patterned on the 'export.py' that already exists. Sounds like a great PR waiting to happen. :-)

Thank you! I submitted a PR which works in my use case.

@NiklasGustafsson  Not sure if [this is relevant: How I can deserialize python pickles in C#?

@NiklasGustafsson Not sure if [this is relevant: How I can deserialize python pickles in C#?
[Razorvine.Pickle](https://www.nuget.org/packages/Razorvine.Pick

@GeorgeS2019: not really. Relying on Python pickling would be an expensive way of accomplishing what you can do with simple means using the current approach and would mean taking a dependency on an external package that I would like to avoid. Since all you have to be able to do is serialize and deserialize string-keyed dictionaries of tensors, pickling is overkill.
The current custom approach requires that you instrument your Python code with a line or two of custom code, but it does handle the scenario.

authors: GeorgeS2019 Leo-LiHao NiklasGustafsson pkese

repo: dotnet/TorchSharp


text:
Updates for Multiple Language Server CompletionOptions Support

Unblocked with the latest LSP Platform Insertion. This is now ready to merge.
Fixes: https://github.com/dotnet/aspnetcore/issues/21346

What does "processed" mean here?

O# (prior to 0.16) does not utilize the AllCommitCharacters property (the property is simply dropped).

Aka, given in this PR that we're removing : from the "AllCommitCharacters" in the InitializeHandler Does O# not processing this successfully mean you can't complete completions with : now?

We still provide : as a commit characters for appropriate completion items (ex. @onkeypress) which completes using the : char. The AllCommitCharacters not being "processed" isn't really a big deal as it's a backup anyways for when commit chars of individual completions aren't available. We had added the : to the AllCommitCharacters as a placeholder, due to the LSP platform bug which caused the LSP platform to not reflect that part of the LSP spec.

repo: dotnet/aspnetcore-tooling


text:
Reverting the "Report Feedback in VS bits"

Going to re-enable these for 16.8-Preview3. Don't want to block the release on this resulting in a DDRITs perf regression.

@NTaylorMullen was this revert Tactics-approved❔ Actually, did anyone approve it❔

authors: NTaylorMullen dougbu


text:
Update primer.md

Fixed broken link
/cc @BethMassi @blackdwarf

I just noticed the same happened with issue #174. The person only edited the first paragraph but somehow the last line was included in the PR (?!?).

I'm inclined to think it's a difference between \n and `\r\n' in the file and git's diff is interpreting the lines are different.  At any rate, I don't think it's a problem so long as the text itself isn't accidentally changed.

:shipit: LGTM

I think so too @cartermp. I reviewed the last line and it looks the same to me.
But if you guys prefer, I can delete this one and try again.

No need.  If it were lots of paragraphs I'd say deleting and re-doing might be worth it, but since it's just one paragraph I think it's fine.

authors: cartermp mairaw

repo: dotnet/core-docs


text:
Update Core wording

Some small updates to clarify the definition of .NET Core.
I'm writing a blog post at the same time, so aligning the two.

nit: Unix should be either with a capital U or the trademarked version UNIX

authors: mairaw richlander