更新履歴

Rss News Flash Viewer の更新履歴

ver5.1.0 2026/7/5 ・[設定]>[動作]>[速報表示時に音声読み上げする]について以下の機能を追加

  • [音声タイプ]について既存の"標準音声"に加え、"高品質音声"を追加
  • [音声]で、Windows設定でインストール済みの音声の中から、好みの音声を選択
  • [テスト]ボタンで、選択した音声で読み上げ再生テスト ・オフラインやスリープ復帰などでRSS読み込み失敗時、メッセージボックスではなく通知メッセージを表示するよう変更 ・【セキュリティ】フィード読み込み時にSSL/TLSサーバー証明書を検証していなかった問題を修正 ・【セキュリティ】悪意あるフィードによる外部エンティティ参照(XXE)を防ぐようXML読み込み処理を強化 ・フィード読み込みに失敗し再試行で読み込めた場合、直前にチェックした別フィードの記事を誤って速報表示するバグを修正 ・タグの無い記事に、直前にチェックした別フィードのタイトルが表示される場合があるバグを修正 ・[表示済み速報を繰り返し表示する]有効時、履歴が最大100件に達すると待機なしで更新チェックを繰り返すバグを修正 ・[当日のRSSのみ表示]有効時、日時の無い記事があると更新チェックが中断されるバグを修正 ・「特定文字列がある場合、速報表示しない」の正規表現が不正な場合、更新チェック全体が停止するバグを修正 ・[表示テスト]の字幕が設定した表示位置に表示されず常に画面左上に表示されるバグを修正(内部のフォーム二重生成を解消) ・[スクロール表示]有効時、設定画面を開くだけで字幕の表示位置が初期化されてしまうバグを修正 ・簡易ブラウザの履歴一覧が最大件数(100件)に達すると以降更新されなくなるバグを修正 ・日時を取得できない記事を含むフィードで、簡易ブラウザの一覧表示・ソート時に例外が発生するバグを修正 ・ライセンス登録で無効なキーを入力するとアプリが強制終了し、登録済みライセンスも消えてしまうバグを修正(再入力可能に変更) ・[設定]>[RSS]の一覧が1件のみの時、[↓]ボタンで例外が発生するバグを修正 ・RSS追加ダイアログのURL欄で、リンクをドロップする前のドラッグ中に値が入力されてしまうバグを修正 ・設定の[OK]/[更新]ボタン押下時に設定をファイルへ即保存するよう変更(従来は終了時のみ保存のため、強制終了で設定変更が失われていた) ・常駐アイコンのツールチップに誤った文字列が表示されるバグを修正 ・速報のバルーンメッセージ表示時間の指定単位が誤っていた(秒をミリ秒として指定)のを修正 ・サウンドファイルのパスにUnicode文字(システムコードページ外の文字)が含まれると再生できない問題を修正 ・高品質音声の読み上げエラーでアプリが異常終了する可能性があったのを修正 ・フィード読み込み処理を刷新(.NETで廃止予定のWebClient/HttpWebRequestからHttpClientへ移行、作業用一時ファイル廃止) ・その他内部処理の修正(フォルダ存在チェック誤り、二重起動許可モード終了時の例外、デバッグコード削除、廃止API置き換え等)</li> </ul> <p>ver5.0.1 2026/2/7<br /> ・通常版もMicrosoft Store版と合わせシェアウェア化しライセンス登録ダイアログを用意<br /> ・必須ランタイムを.NET8からMicrosoft .NET Desktop Runtime 10.0に変更<br /> ・Windows10非サポート化<br /> ・[設定]>[表示]>[スクロール表示]を有効にしたとき[表示テスト]が正しく表示されないバグを修正<br /> ・描画処理のメモリ使用量が増えないよう改善<br /> ・RSS削除時の配列アクセスエラーを防止(最大件数に達した場合のクラッシュ防止)<br /> ・終了時、実行中のスレッドが正しく終了されるよう修正</p> <p>ver5.0.0 2025/5/25<br /> ・ソフト名を「RSS速報」から「Rss News Flash Viewer」に変更<br /> ・内部プログラムを再作成(.NetFrameworkベースを.NET8で再作成)<br /> ・言語切り替え機能(日本語|英語)<br /> ・音声読み上げ機能追加<br /> ・フィードのテキスト先頭末尾にタブ/改行が含まれていた場合取り除いて表示するよう修正<br /> ・設定>表示>字幕スーパーに「表示位置座標」を表示しx=0,y=0の場合[表示位置を元に戻す]ボタン無効化<br /> ・字幕スーパーのスクロール表示をOFFにした後、表示位置(X座標)を初期化するよう修正<br /> ・Atom文言削除<br /> ・サウンドファイルは速報ごとではなく1件目のみ再生するよう変更<br /> ・設定画面表示時、速報表示を即非表示化<br /> ・「速報表示に再生するサウンドファイル」設定にチェックボックスを追加しOFF時も設定値保持するよう変更<br /> ・簡易ブラウザのポップアップメニューに「RSSの追加」メニューを追加<br /> ・設定変更直後、更新されていないRSSが余計に速報表示されるバグを修正<br /> ・簡易ブラウザで[ペイン表示切り替え]で選択済みメニューが正しく表示されないバグを修正<br /> ・字幕スーパーのツールチップ表示有無をオプション設定化</p> <p> <br /> 更に旧バージョンはこちら → <a href="/software/rsssokuho/update/">RSS速報-更新履歴</a></p></div> </article> </div> </main> <footer class="site-footer"> <div class="wrap"> <div class="footer-grid"> <div class="footer-brand"> <a class="brand" href="/"><b>Osada<span>Soft</span></b></a> </div> <div class="footer-col"> <h5>ソフトウェア</h5> <ul> <li><a class="footlink" href="/software">ソフト一覧</a></li> <li><a class="footlink" href="/software/geteventlog">EventLogTimesheet(勤務時間取得ツール)</a></li> <li><a class="footlink" href="/software/pictoroam">PictoRoam</a></li> <li><a class="footlink" href="/software/petitcalendar">PetitCalendar</a></li> <li><a class="footlink" href="/software/getgpsinfo">画像位置情報取得ツール</a></li> </ul> </div> <div class="footer-col"> <h5>ブログ</h5> <ul> <li><a class="footlink" href="/blog">新着記事</a></li> <li><a class="footlink" href="/blog/tag/F1">#F1</a></li> <li><a class="footlink" href="/blog/tag/C%23">#C#</a></li> <li><a class="footlink" href="/blog/tag/%E6%9D%B1%E6%B5%B7%E9%81%93">#東海道</a></li> <li><a class="footlink" href="/blog/tag/%E3%83%95%E3%82%A3%E3%83%83%E3%83%88%E3%83%8D%E3%82%B9">#フィットネス</a></li> </ul> </div> <div class="footer-col"> <h5>サイト情報</h5> <ul> <li><a class="footlink" href="/relation/mysite">管理サイト</a></li> <li><a class="footlink" href="/contact">お問い合わせ</a></li> <li><a class="footlink" href="/relation/reciprocal">相互リンク</a></li> <li><a class="footlink" href="/privacy">プライバシーポリシー</a></li> </ul> </div> </div> <div class="footer-bottom"> <span>© 1998–2026 OsadaSoft</span> <span style="display:flex;gap:18px"> <a class="footlink" href="/privacy">プライバシーポリシー</a> <a class="footlink" href="/sitemap">サイトマップ</a> <a class="footlink" href="/feed">RSS</a> </span> </div> </div> </footer> <script> function osTheme(){var d=document.documentElement,t=d.getAttribute('data-theme')==='dark'?'light':'dark';d.setAttribute('data-theme',t);try{localStorage.setItem('theme',t);}catch(e){}document.getElementById('themeIcon').textContent=t==='dark'?'☀️':'🌙';} document.getElementById('themeIcon').textContent=document.documentElement.getAttribute('data-theme')==='dark'?'☀️':'🌙'; // mobile menu (hamburger) toggle function osNav(b){var h=document.querySelector('.site-header'),o=h.classList.toggle('nav-open');b.setAttribute('aria-expanded',o?'true':'false');b.textContent=o?'✕':'☰';} // page-wide ambient glow following the cursor (behind all content) (function(){var root=document.documentElement,raf=0,mx=50,my=35; window.addEventListener('mousemove',function(e){ mx=e.clientX/Math.max(1,window.innerWidth)*100; my=e.clientY/Math.max(1,window.innerHeight)*100; if(!raf)raf=requestAnimationFrame(function(){raf=0;root.style.setProperty('--mx',mx.toFixed(1)+'%');root.style.setProperty('--my',my.toFixed(1)+'%');}); },{passive:true}); })(); // hover-zoom content images: reveal the square corners + enlarge toward natural // size, always giving a visible pop, without reflowing the page (transform only). (function(){ var SEL='.post-body img'; function on(img){ if(img.classList.contains('is-zoom')) return; var dw=img.clientWidth, dh=img.clientHeight; if(!dw||!dh) return; if(dw<64||dh<64) return; // skip tiny inline icons (favicons) var nw=img.naturalWidth||dw, nh=img.naturalHeight||dh; var capW=(window.innerWidth*0.94)/dw, capH=(window.innerHeight*0.92)/dh; var k=Math.min(nw/dw, capW, capH); // enlarge to natural size, fit viewport if(k<1) k=1; var minPop=Math.min(1.2, capW, capH); // guarantee a small visible pop even if ~natural if(k<minPop) k=minPop; k=1+(k-1)*0.5; // gentle: about half the previous enlargement img.style.transform='scale('+k.toFixed(3)+')'; img.classList.add('is-zoom'); } function off(img){ img.style.transform=''; img.classList.remove('is-zoom'); } document.addEventListener('mouseover',function(e){ var t=e.target; if(t&&t.matches&&t.matches(SEL)) on(t); }); document.addEventListener('mouseout',function(e){ var t=e.target; if(t&&t.matches&&t.matches(SEL)) off(t); }); })(); </script> </body> </html>