Skip to content

Petit Note v1.51.1リリース

Latest
Compare
Choose a tag to compare
@satopian satopian released this 23 Jul 15:00
· 1 commit to master since this release

Petit Noteとは

  • 1スレッド1ログファイル形式のスレッド式の画像掲示板です。
    PaintBBS NEO,ChickenPaint,Klecksが使えるお絵かき掲示板です。

ダウンロード

  • このページの一番下のソースコードリンクからダウンロードできます。

English version is here

Petit Note v1.51.1リリース

2024/09/05 v1.51.1

AXNOS Paint更新

  • 公式版のAXNOS Paintが更新されたため、それにあわせて起動オプションを追加しました。
    AXNOS Paintを改造して1000px制限を1800pxに拡大しました。

  • AXNOS Paintで続きを描く時に、元の画像が掲示板で設定している幅と高さの最大値を超えているときは、画像の幅と高さをもとに最大値を設定するようになりました。
    これにより、幅と高さの最大値が1000pxで続きを描く時の元の画像が幅2000px、高さ2000pxの時は、幅1800px 高さ1800pxのキャンバスが開きます。
    お絵かきできる最大の幅と高さの最大値が1000pxでも、続きを描く時のもとの画像サイズにあわせて幅と高さを拡張します。
    しかし、AXNOS Paintの制限値1800pxを超える事はありません。
    AXNOS Paintの本来の最大の幅と高さは1000pxであるため、キャンバスサイズが1800pxの時に発生する問題は、AXNOS Paint公式の問題ではなく、改造版の問題です。
    画像のサイズがお絵かきできる最小値より小さくなる場合も想定してPetit Note側で調整しました。

  • AXNOS Paintの最新版でAndroid端末+消しゴムツール使用時にピンチズームが動作しなくなる事がある問題が修正されました。

変更があったファイル

  • app/axnos/ ディレクトリを上書きアップデート。
  • index.php

変更があったテンプレート

  • template/basic/paint_axnos.html

まとめて更新する方へ

ここ数ヶ月でかなりの数のファイルを更新しました。
テンプレートをカスタマイズしていない方は

template/ディレクトリを上書き
app/ディレクトリを上書き
lib/ディレクトリを上書き
そして、

  • index.php
  • functions.php
  • connect_misskey_api.php
  • misskey_note.inc.php
  • save.inc.php

を更新すれば一連の更新を反映させる事ができますので、よろしくお願いします。
非同期通信でエラーメッセージを出す処理のJavaScriptは、template/basic/js/にはいっていますので、template/ディレクトリを上書きアップデートすれば更新が反映されます。
CSSで色を変更している方は、CSSファイルの先頭部分の色の指定の箇所だけ貼り付け直せば色の設定を保持できます。

2024/09/02 v1.50.7

AXNOS Paint更新

  • 掲示板で設定したキャンバスサイズの最大値と最小値がAXNOS Paintの設定タブのキャンバスサイズ最大値、最小値に反映されるようになりました。
  • ブラウザの優先言語の設定が日本語以外の時には英語UIで起動するようになりました。
  • 改造して使用していた続きを描くための処理をAXNOS Paint公式のものに置き換えました。

細かな問題の修正

  • Submitボタンの二度押し防止処理を一部変更しました。ボタンの無効化を解除するべきではないタイミングで無効化が解除されていたのを修正しました。
  • Klecksの自由変形処理画面の操作中にペンの長押しを検知して右クリックメニューが開いてしまう問題を修正しました。

変更があったファイル

  • app/axnos/ ディレクトリを上書きアップデート。
  • index.php

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/paint_axnos.html
  • template/basic/paint_klecks.html

2024/08/21 v1.50.5

改造版AXNOS Paintを更新

  • レイヤーの合成結果がSAIやFireAlpacaと近くなるように変更しました。
    これは現時点では改造版のAXNOS Paintの仕様変更です。この変更によって発生したレイヤーの合成結果に関する問題は改造版の問題であり、開発元が作成したオリジナル版のAXNOSPaintの問題ではありません。
    そのような問題もあるためバージョン情報に改造版のリポジトリのURLを追記して改造版である事を明確にしました。
  • AXNOS PaintとTegakiの投稿ボタン連打対策を行いました
    投稿ボタンを連打すると何枚も画像が送信され、未投稿画像に入る問題を修正しました。
    AXNOS Paintの仕様にそった通信処理に変更しました。

変更があったファイル

  • app/axnos/ ディレクトリを上書きアップデート
  • app/tegaki/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/paint_axnos.html

2024/08/10 v1.50.3

AXNOS Paintを更新しました。

  • MacOS+Safariブラウザで、ツールパレットを移動すると、描画時にツールパレットがカーソルと一緒についてきてしまい描く事ができなかった問題を非公式に修正しました。
    この問題は、Safariの最新版では再現しません。Safari14で発生する問題に対処するための非公式な修正です。

変更があったファイル

  • app/axnos/ ディレクトリを上書きアップデート
  • index.php

2024/08/09 v1.50.1

AXNOS Paint更新

  • Petit Note用にカスタマイズしたAXNOS Paintをさらにカスタマイズしました。

変更があったファイル

  • app/axnos/ ディレクトリを上書きアップデート
  • index.php

2024/08/07 v1.50.0

AXNOS Paintに対応しました。

AXNOS Paintとは (アクノスペイントとは) [単語記事] - ニコニコ大百科

image

config.phpに新規設定項目を追加

// Axnos Paintを使う
// 使う:true 使わない:false

$use_axnos = true;
// $use_axnos = false;

この設定項目が存在しない時は、Axnos Paintを使うになります。
Axnos Paintをペイントアプリ選択一覧に出したくない時は、上記設定項目を追加してください。

変更があったファイル

  • app/axnos/ ディレクトリを上書きアップデート
  • functions.php
  • index.php
  • config.php
    Axnos Paintをペイントアプリ選択一覧に出したくない時は、config.phpを更新します。
    Axnos Paintを使う設定で問題ない場合はconfig.phpを更新する必要はありません。

変更があったテンプレート

  • template/basic/paint_axnos.html
  • template/basic/parts/copyright.html
  • template/basic/parts/select_apps.html

2024/08/04 v1.39.10

ChickenPaint Be更新

  • ツールパレットのぼかしツールのショートカットキーをUに設定しました。
    これで、キャンバスの回転とハンドツールによる移動以外のツールパレットのショートカットキーがすべて割り当てずみになりました。
    キャンバスの回転は、R+ドラッグ、ハンドツールはスペース+ドラッグで同様の操作ができるため、ツールパレットのこの機能のショートカットキーは設定しませんでした。
  • オリジナルのChickenPaintと同じように変形確定ボタンをパレットの横幅いっぱいに広がるようにしました。
    これはBootstrap5対応にする時に、必要なCSSが一部欠落した事が原因だったため、オリジナルのChickenPaintのCSSの一部を追加しなおしました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/07/27 v1.39.9

ChickenPaint Beのバグを修正しました。

  • 2024/07/13 v1.38.5でChickenPaint Beがレイヤー2枚で起動するようになりましたが、その時に自動的に作成される透明レイヤーが正しく動作していなかったのを修正しました。
    混色系ブラシで描画した時に黒を引き摺り画面が黒くなっていました。

変更があったファイル

  • chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/07/24 v1.39.8

ChickenPaint Be更新

  • コードを整理しました。機能に変更はありません。

klecksを更新

  • Klecksを最新版にアップデートしました。細かな修正が行われています。

管理者パスワードを5回間違えた時のロック解除

  • 管理者パスワードを5回連続して間違えた時に、それ以上入力できないようにロックする機能を改善しました。
    誤ったパスワードが入力された時に記録するログファイル(中身は操作したデバイスのIPアドレスと誤入力の回数がわかるもの)をftp接続して削除しなくても、ロックを解除できるようになりました。
// 管理者パスワードを5回連続して間違えた時は拒絶する
// する: true しない: false
// trueにするとセキュリティは高まりますが、ログインページがロックされた時の解除に手間がかかります。

$check_password_input_error_count = false;

config.phpのこの設定項目で
$check_password_input_error_count = false;
と設定すると、管理者パスワード誤入力を記録したログファイルが削除されます。
その後、
$check_password_input_error_count = true;
にして5回連続したときに拒絶する設定にすると、ロックは一度解除されているので、次の誤入力連続5回が発生するまでロックはかかりません。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/klecks/ ディレクトリを上書きアップデート
  • functions.php
  • index.php

変更があったテンプレートのJavaScript

  • template/basic/js/common.js

2024/07/21 v1.39.3

  • 掲示板全体に年齢制限をかける設定にした時の警告処理の個所をパーツディレクトリにまとめました。
    これにより、同じコードの繰り返しをいくつものテンプレートに記述する必要がなくなりました。
    これまではそれぞれ細部の異なるフォームでしたが、フォームの内容をJavaScriptのfetch APIに渡し、処理が成功したらリロードするようにしたため、完全に共通のフォームの部品を使えるようになりました。
    掲示板の投稿や表示に合言葉の入力が必要な設定で使っている時に表示される、合言葉入力フォームを外部化して、こちらも処理が成功した時にリロードするようになりました。
  • 指定日数を超過して閉じたスレッドのレスカタログ画面にMisskeyノートのリンクが表示されるバグを修正しました。
  • レスカタログモードから[管理]のリンクを経由して管理者モードにログイン・ログアウトした時に、もとのレスカタログページにもどるようになりました。
  • この更新の主な内容はテンプレートの保守の容易さを確保するためのものですから、今回のテンプレートの更新はエンドユーザーが必ずしも変更しなければならないものではありません。
    ただし、テンプレートを更新する場合は、template/basic/js/common.jsの更新が必須になります。
    テンプレートをカスタマイズしていない場合は、template/ディレクトリを上書きアップデートするだけで更新が終わります。

変更があったファイル

  • index.php
  • functions.php

追加されたテンプレートのパーツ

  • template/basic/parts/form_aikotoba.html
  • template/basic/parts/form_view_nsfw.html

変更があったテンプレート

  • template/basic/admin_in.html
  • template/basic/catalog.html
  • template/basic/edit_form.html
  • template/basic/index.css
  • template/basic/main.html
  • template/basic/paint_com.html
  • template/basic/res.html
  • template/basic/res_catalog.html
  • template/basic/search.html

変更があったテンプレートのJavaScript

  • template/basic/js/common.js

2024/07/19 v1.38.7

  • ChickenPaint Beのグループ結合アイコンのデザインを変更しました。

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

2024/07/15 v1.38.6

ChickenPaint Be更新

  • レイヤーパレットに複製アイコンを追加しました。
    レイヤーやレイヤーグループを1タップで複製できるようになりました。
    これまではショートカットキーを使用するか、上段のメニューから複製を選択する必要がありました。
  • 下のレイヤーと結合アイコンをより視覚的にわかりやすいものに変更しました。
  • レイヤーグループ結合アイコンを下のレイヤーと結合アイコンと同じ位置に配置しました。
    レイヤーグループのフォルダ選択時はグループ結合アイコンになり、レイヤーの選択時には下のレイヤーと結合アイコンに入れ替わります。

ChickenPaintのレイヤーパレットに複製iconを追加

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

2024/07/13 v1.38.5

ChickenPaint Be更新

  • 背景レイヤーと透明なレイヤー合計2枚で起動します。
    白い背景レイヤーに線画を描く事故を減らせます。

image

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

2024/07/09 v1.38.3

klecks更新

  • klecksを最新版に更新しました。

メール通知クラス更新

  • ファイル名をnoticemail.inc.phpに変更しました。
    古いコードにはnoticemail.incのように拡張子がincのものが多く存在しますがセキュリティ上の観点から最近はあまり使われていません。そのためnoticemail.incからnoticemail.inc.phpにファイル名を変更しました。
    またファイル名の変更だけではなく内部の処理も変更しましたので今回追加されたnoticemail.inc.phpをご利用ください。
    noticemail.inc.phpのアップロードを忘れるとファイルが存在しない事を知らせるエラーメッセージが表示され、掲示板が動作しなくなりますので、必ずアップロードしてくださいますようお願いします。
  • 送られてくる通知メールのName:``Subjectが、日本語の名前:``記事題名:になりました。
    英語版のPetit Noteの場合は、config.phpをアップデートすれば従来通りの英語表記になります。
    日本語で使用する場合は設定不要です。
    設定項目が存在しない時はデフォルト設定の日本語で通知メールが送信されます。

変更があったファイル

  • app/klecks/ ディレクトリを上書きアップデート
  • index.php

追加されたファイル

  • noticemail.inc.php
    (このファイルを追加しないと掲示板が動作しません)

削除されたファイル

  • noticemail.inc
    (FTP接続で間違いなく削除できる自信がある方以外は、削除せず放置を推奨。ログファイルや投稿された画像など消してはいけないものを誤って削除してしまう可能性があるため)

2024/07/05 v1.37.3

ChickenPaint Be更新

  • iPad Air相当の幅または.高さが820px以下でタッチデバイスの時にモバイルモードで起動するようになりました。
    これまでは、幅または高さが800px以下という条件だったため、iPad Airの時はPC用UIで起動していました。
    またPCでブラウザのウィンドウサイズを小さくした時にもモバイル用の画面に切り替わっていましたが、タッチデバイス判定処理を追加した事によりPCではPC用のUIで起動するようになりました。

.htaccess更新

  • 拡張子.jsonの呼び出しを禁止する設定にしていましたが、PWAやスマホのホーム画面に設定するためのアイコンを設定するmanifest.jsonの呼び出しも禁止になってしまいタッチアイコンが設定できなくなっていたため、ファイル名がmanifest.jsonの場合は呼び出し可能になるように設定を変更しました。
    この更新はmanifest.jsonの設置が必要ない場合は関係ないため、その場合は更新する必要はありません。

変更があったファイル

  • .htaccess
  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

2024/06/12 v1.37.1

ChickenPaint Be更新

  • モバイルモード時にレイヤーパレットの不透明度調整スライダの文字がぼやけてしまう問題を修正しました。

image

  • ツールオプションのスライダの間隔を広げて、指で操作できるようにしました。

  • 画面の幅に余裕があるにも関わらずツールオプションの画面上からの位置がモバイルモード時は操作パレットの下になってしまっていたため、画面幅-(ツールパレット+操作パレット)<200pxの時は、操作パレットの下の位置、それ以上の画面の横幅がある時は最上段に表示するようにしました。
    これによりより広く画面を使えるようになります。

paintbbs sakura ne jp_oeb_cgi_petit_(iPad Mini)
iPad mini シミュレート画面。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/06/10 v1.37.0

ChickenPaint Be更新

  • 768px以下の幅と高さのデバイスの時はスマホ用のUIに切り替えてパレットを折りたたみます。UIが使用する面積が少なくなるため、より大きなキャンバスに描画する事ができるようになります。
iPad.mini.mp4
  • スマホ用UIの時のカラーセットのマージンを広げ、指でタップできるようにしました。

NEOの描画画面の描画時間の時計をタップするとスクリーンキーボードが出現する問題

  • 表示専用であるにも関わらずスマホのスクリーンキーボードが表示されてしまうため、readonly属性を追加しました。
    Screenshot_20240610-103937_600
    2018年以前から発生していたと思われる問題。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/paint_neo.html

2024/06/09 v1.36.27

ChickenPaint Be更新

  • スマホモードの時のパレットのタイトルバーの厚みを折りたたみ/展開の操作を容易にするため増やしました。
  • スマホモード時のレイヤーパレットの操作アイコンの間隔が狭くなっていたため広げました。
  • 折りたたみ/展開のアイコンと閉じるアイコンの両方を表示する事により誤タップが発生して、誤って閉じてしまう事があったため、スマホモード時は閉じるアイコンを表示しなくなりました。
    代わりに上段の表示/非表示のショートカットメニューで操作します。

Screenshot_20240609-201946 Screenshot_20240609-201955

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/06/08 v1.36.25

ChickenPaint Be更新

  • パレット表示非表示のショートカットメニューがスマホ・タブレット以外でも常に表示されるようになりました。
  • 横幅にあわせたレスポンシブデザインをさらに最適化しました。
  • ショートカットメニューの色を黄色からライトグレーに変更しました。
default.mp4

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/06/07 v1.36.23

ChickenPaint Be更新

  • スマホ時にもあえてブランドロゴを表示して、ブラウザのホームボタンの誤タップが発生しないようにしました。
  • パレット表示非表示のショートカットメニューがデバイスの幅いっぱいに広がるようにしました。
    これまでは、間隔が狭すぎて意図した箇所の黄色いショートカットメニューをタップできない事がありました。

Screenshot_20240607-214641 Screenshot_20240607-214737 Screenshot_20240607-214650
縦表示。
Screenshot_20240607-214831
横表示。

2024/06/07 v1.36.22

ChickenPaint Be更新

  • スマホ時のChickenPaintのメニュー操作で、ぼかしやグリッド設定などの数値入力を行ったあとキャンバスサイズが全画面にもどらなくなる問題を、v1.36.8で修正しましたが、パレット位置がモーダル表示前と表示後でずれる問題が残っていました。
    モーダルウィンドウの表示イベントを取得して、自動的にハンバガーメニューを閉じるようにして、この問題を修正しました。
  • スマホ・タブレットを縦または横に変更したときにハレットの配置を自動的に初期化します。
    v1.36.8で、ウィンドウのサイズが変更になった時にパレットの配置の初期化する処理を追加しましたが、レイヤー名のリネーム時のスクリーンキーボードの出現をウィンドウのサイズ変更として検出してしまい、レイヤー名を変更できなくなっていたため、スマホ・タブレットの向きが変更された時にパレットの配置の初期化するようにしました。

Screenshot_20240607-141136
縦表示から

Screenshot_20240607-141149
横表示へ。

  • v1.36.10で追加した"orientationchange"が非推奨になっていたため、screen.orientationオブジェクトの変更を取得するようにしました。
  • スマホ用のパレット表示/非表示のショートカットメニューがGoogle Pixel 7や、iPhone14 で表示されない事が判明したため、デバイスのCSSピクセルが幅800px高さ768px以下の時にはスマホ用のショートカットメニューを表示するようにしました。
  • ブラシを変更しながら描きたい時に毎回折りたたまれてしまうとタップする回数が増えてしまいます。
    スマホ時は全パレットの非表示もショートカットメニューを1タップすれば可能なため、ツールパレットの自動折りたたみ機能を廃止しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php
  • template/basic/js/common.js (動作に変更はありません。このファイルは更新しなくても大丈夫です。)

2024/06/01 v1.36.8

  • スマホ時のChickenPaintのメニュー操作で、ぼかしやグリッド設定などの数値入力を行ったあとキャンバスサイズが全画面にもどらなくなる問題を修正しました。
  • スマホを縦横に傾けた時に、レイヤーパレットの位置が期待した位置に表示されない事がある問題に対応するため、画面のリサイズ時にパレット配置の初期化を自動的に行うようにしました。
    PCでブラウザのウィンドウサイズを変更した時にもサイズが変わるたびにパレットの配置が初期化されます。
    これにより、ウィンドウの幅を狭くした時にパレットが左に偏ってしまいウィンドウを広げ直しても元に戻らなくなっていた問題も解決しました。
    ただし、ウィンドウを少し変更するだけでパレットの配置が初期化されてしまうため、パレットの位置を動かしながら描きたい場合には問題が発生するかもしれません。
    しかしながら、ウィンドウのサイズを変更しなければ初期化はされませんので、一定のブラウザのウィンドウサイズで描く分には問題ないはずです。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/05/28 v1.36.7

  • ChickenPaint Beのレイヤーパレットの操作アイコンが横1列に収まるように調整しました。
    これまでは、スマホやタブレットの時に改行が入り、ゴミ箱アイコンの手前で改行が入っていました。
    (Androidスマホで動作確認しました。iOSでの実機による動作確認はできていません。PC版chromeのエミュレータにのみ。)

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

Petit Note v1.36.6リリース

2024/05/26 v1.36.6

ChickenPaint Beに左右反転アイコンを追加しました

  • ChickenPaintの操作パレットに左右反転アイコンを追加しました。
    キーボードショートカットキーを使うことができない端末でも簡単に左右反転できるようになりました。
    ただし、レイヤー単位の左右反転になり、表示の左右反転ではなく実データの左右反転になります。
    そのためこの左右反転は履歴にも残ります。

左右反転アイコンを追加

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/05/24 v1.35.3

軽微なエラーの修正

v1.32.1で追加した「編集前・編集中画面」での「閲覧注意画像を隠す/隠さない」を設定するテンプレートの変数の未定義エラーを修正しました。

変更があったファイル

  • index.php
  • template/basic/parts/form_set_nsfw_show_hide.html

2024/05/24 v1.35.1

ChickenPaint Be更新

  • ChickenPaint Beで使用しているBootstrapをv5.3.3にアップデートしました。
  • ChickenPaint beで使用されていた非推奨の構文returnValueを修正しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/05/21 v1.35.0

twitter.com→x.com

設定がtwitter.comでもx.com、でもx.comのURLでSNS共有リンクが作成されるようになりました。

// SNS共有の時に一覧で表示するサーバ
//例 	["表示名","https://example.com (SNSのサーバのurl)"],(最後にカンマが必要です)

$servers =
[
		
	["X","https://x.com"],
	["Bluesky","https://bsky.app"],
	["pawoo.net","https://pawoo.net"],
	["fedibird.com","https://fedibird.com"],
	["misskey.io","https://misskey.io"],
	["misskey.design","https://misskey.design"],
	["nijimiss.moe","https://nijimiss.moe"],
	["sushi.ski","https://sushi.ski"],

];

config.phpのX(旧ツイッター)のURLがtwitter.comのままでも問題なくx.comのリンクが作成できるようにしました。
一覧で開くSNSの名称が「Twitter」のままでも構わなければ、config.phpを修正する必要はありません。
ただし、config.phpの設定が優先されてしまうため、旧ツイッターを「X」と表示させたい場合は、上記の該当箇所を["X","https://x.com"],に変更する必要があります。

変更があったファイル

  • functions.php
  • index.php
  • config.php(差分エディタ等を使用して必要な項目だけ修正をお願いします。TwitterというSNS名のままで構わなければ変更する必要はありません。)

2024/05/20 v1.33.9

バグ修正

  • v1.33.6で追加した、コメント本文が変更されている時に別ページに移動する時の警告が、記事の投稿時にも表示されてしまうバグを修正しました。
  • PC版Chromeでは発生ぜず、Mac、iOSのsafariの時にのみこの問題が発生していました。
  • v1.33.8の修正では不十分だったため、PlaywrightでSafariの動作を確認して再度修正しました。

変更があったファイル

  • index.php
  • template/basic/js/common.js

2024/05/19 v1.33.8

バグ修正

  • v1.33.6で追加した、コメント本文が変更されている時に別ページに移動する時の警告が、記事の投稿時にも表示されてしまうバグを修正しました。
  • PC版Chromeでは発生ぜず、Mac、iOSのsafariの時にのみこの問題が発生していました。
  • JavaScriptの関数を関数式に変更する事で、safariの関数巻き上げによる関数内の変数未定義問題を修正しました。

変更があったファイル

  • index.php
  • template/basic/js/common.js

2024/05/19 v1.33.6

改善

  • コメント本文を入力途中の時に、再読み込や、別のページへ移動が発生した時に「このサイトを離れますか?行った変更が保存されない可能性があります。」というダイヤログを出して、現在のページに留まるかどうか確認します。
    これにより、入力途中の本文が失われるリスクを軽減できます。
  • スマホ+指では、「続きを描く」「動画再生」のリンクを押しにくい状態だっただめ、画面が狭いデバイスの時はこれらのリンクの上下の間隔が広くなるようにしました。
  • お絵かきコメント入力画面に画像が存在しない時にJavaScriptの軽微なエラーが発生していたのを修正しました。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/index.css
  • template/basic/js/common.js
  • template/basic/paint_com.html

2024/05/17 v1.32.1

編集前・編集中画面でも閲覧注意画像を隠す/隠さないを設定できるように

  • 外出先等でスマホを使って掲示板を管理する時に閲覧注意画像を表示したくない時があるかもしれません。
    記事の編集中は画像が見えていたほうがいいだろうという判断で、編集中は画像にぼかしのフィルタがかからないようにしていましたが、ぼかしのフィルタをかける、かけないを選択できるようにしました。
    これにより、閲覧注意画像にぼかしフィルタがかかった状態で記事の編集が可能になります。

変更があったファイル

  • index.php
  • misskey_note.inc.php

変更があったテンプレート

  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/before_misskey_note.html
  • template/basic/edit_form.html
  • template/basic/misskey_note_edit_form.html
  • template/basic/parts/edit_form_res_loop.html
  • template/basic/parts/threads_loop.html

変更があったテンプレートの数は多いですが、template/ ディレクトリを全部上書きアップデートする方法もあります。

2024/05/16 v1.31.2

改善

  • スマホ時はフォントサイズを1.1remに拡大。
    Google Pixel 7aの実機で見てみたところ軽度の老眼でも厳しかったのでフォントサイズを大きくしました。
  • 管理者編集モード時は閲覧注意画像を隠さない仕様なので、隠す/隠さないの設定を表示しない。
    管理者編集モードの時には閲覧注意を隠す/隠さないの設定をしていてもしていなくても、画像が表示されるので、管理者編集モード時にはそのメニューを表示しません。
  • 管理者編集モード時には閲覧注意画像にフィルタがかからない仕様でしたが、閲覧注意画像を隠すに設定すると画像にぼかしが入るようになりました。
    閲覧注意画像がそのまま表示されていると人目が気になる場所でモデレーションができなくなるからです。
    ただし、編集画面では画像にぼかしがはいりませんのご注意ください。
  • PCではカタログ表示5列、タブレット・スマホで4列にしていましたが、スマホで閲覧すると画像が小さくなってしまうため、スマホ時は横3列になるようにしました。

(今回のリリースではv1.30.0、v1.30.1、v1.30.2の更新内容をまとめてリリースしています。前回のリリースv1.30.1はリリースノートは更新されていましたがファイルが更新されていませんでした。)

変更があったファイル

  • functions.php
  • index.php

変更があったテンプレート

  • template/basic/index.css
  • template/basic/main.html
  • template/basic/res.html
  • template/basic/res_catalog.html
  • template/basic/search.css
  • template/basic/parts/form_set_nsfw_show_hide.html
  • template/basic/parts/nsfw_css_control.html

2024/05/13 v1.30.3

改善

image

  • Blueskyが、共有一覧に無い時にも、直接入力でhttps://bsky.appと入力すればBlueskyに共有できるようになりました。
  • スマホ等で、X、Bluesky、Misskey等に共有するときにアプリ版が起動し、共有サーバの選択画面がChrome側に残ってしまう問題を修正しました。
    SNSの共有サーバ一覧画面からフォーカスが外れた時に、画面を閉じるようにしてこの問題を解決しました。
    ただし、一覧画面からすでに、SNSのサイトに画面が移動している時はフォーカスが外れても閉じません。
    その場合は、すでに入力中か、あるいはSNSの投稿を閲覧中だからです。
    PCで使用している時にも発生していた、SNS共有ウィンドウがいくつも開いて残ってしまう問題も解決しました。

変更があったファイル

  • functions.php
  • index.php
  • template/basic/js/common.js

2024/05/11 v1.30.1

改善

image
「編集」「削除」「Misskeyにノート」ボタンを押下したあとに表示される画面の「掲示板にもどる」リンクを改善しました。
「掲示板にもどる」場合は、ボタンを押す前のもとのページ番号に戻ります。
「スレッドにもどる」リンクへの自動切替を行い、ボタンを押す前のもとのスレッドに戻ります。

変更があったファイル

  • index.php
  • misskey_note.inc.php

変更があったテンプレート

  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/before_misskey_note.html
  • template/basic/parts/before_edit_nav_menu.html
  • template/basic/parts/threads_loop.html
    parts/ディレクトリに
  • template/basic/parts/before_edit_nav_menu.html
    を新しく追加しています。
    同じHTMLとPHPの繰り返しになっている箇所を共通化して外部パーツにしています。
    追加し忘れるとエラーになりますので、ご注意ください。
    template/フォルダをすべて上書きする場合は、そのまま上書きでも大丈夫です。

2024/05/01 v1.29.1

「SNSで共有する」にBlueskyを追加しました

image

Twitter、マストドン、Misskeyに加え、Blueskyへの記事の共有もできるようになりました。
ただし、これを有効にするには、config.phpの設定が必要になる場合があります。

// SNS共有の時に一覧で表示するサーバ  
//例 	["表示名","https://example.com (SNSのサーバのurl)"],(最後にカンマが必要です)  

$servers =
[
		
	["Twitter","https://twitter.com"],
	["Bluesky","https://bsky.app"],
	["pawoo.net","https://pawoo.net"],
	["fedibird.com","https://fedibird.com"],
	["misskey.io","https://misskey.io"],
	["misskey.design","https://misskey.design"],
	["nijimiss.moe","https://nijimiss.moe"],
	["sushi.ski","https://sushi.ski"],

];

config.phpのSNS共有サーバの設定項目がすでに存在している時にはその設定が優先されるため、config.php
["Bluesky","https://bsky.app"],
を追加する必要があります。
Blueskyへの記事の共有が必要ない場合は特に何もしなくてもそのほかの機能は正常に動作します。
もしも、共有するサーバ一覧が増える事で、ポップアップメニューに入り切らなくなってしまった場合は、

//windowの高さ 初期値 490
$sns_window_height = 490;

を490より大きな数値に変更してみてください。
今回更新したconfig.phpは、
https://mstdn.jp/を外し、代わりにBlueskyを追加して共有するサーバの数を増やさない形で対応しています。
ここには、マストドンやMisskeyであれば何件でもユーザーがサーバを追加できますので、必要に応じて追加や削除をお願いします。
なおこのリリース執筆時点で、Bluesky共有の際に二回キー操作を行わないとリンクカードが表示されない現象を確認しています。
現時点ではBlueskyの仕様であるためどうする事もできません。
エンターキーを二回でもスペースキーを二回でも構いませんので、キー操作を行えば表示されます。

変更があったファイル

  • config.php
  • functions.php
  • index.php

2024/05/01 v1.28.8

  • 比較的初期に書いたJavaScriptのコードを修正しました。
    より適切で読みやすいコードに修正しました。
  • 管理者編集モードでログインした時の表示を修正
    編集モードでログイン中です。→管理者編集モードでログイン中です。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/admin_in.html
  • template/basic/continue.html
  • template/basic/misskey_note_edit_form.html
  • template/basic/paint_com.html

2024/04/23 v1.28.6

  • ChickenPaintの画像差し換え時のパスワード処理の関数の文法の厳格化。
    宣言なしの変数に関数を代入してグローバルスコープで参照していましたが、あまり良い書き方ではないため定数化し、定数化した状態でも動作するようにしました。
  • CSSの配色を微調整
  • 上に戻るボタンの円がスクロールバーにかかってしまうため、6px左に移動しました。
  • 管理者による記事編集時は、IDを変更しません。(ホスト名は変わります)

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/index.css
  • template/basic/search.css
  • template/basic/paint_chi.html

2024/04/21 v1.27.10

CSSを修正しました。
ライトモード時の掲示板タイトル、記事タイトル、名前、チェックされた項目等の太字の箇所の文字色を#555に戻しました。
モニターの性能によっては何が変わったのかわからない程度の差かもしれないのですが、ダークモード実装後のライトモード表示が何か落ち着かない感じがしたため、修正しました。
また、ほぼ必要ないのかもしれないけれど、もしかしたら別の色に設定したい人がいるかもしれないため、チェックボックスとラジオボタンのチェック済み時のラベルの文字色を設定できるようにしました。
ダークモードの背景色を調整しました。
ダークモードの記事タイトルの背景色を調整しました。
より作品が映える配色になりました。

/* チェック済みのフォームのラベルの色 */--checked-color:var(--title-a-color);

このように、初期状態では、タイトルのリンクの文字色--title-a-colorを使いまわしています。
ここを別の色に設定したい時は、RGBやHSL、16進数等で色を指定します。

変更があったファイル

  • index.php
  • template/basic/index.css
  • template/basic/search.css

2024/04/16 v1.27.7

自動リンク機能の Internet Archive 対応

自動リンクの正規表現を修正しました。URLとして判定する文字に:を追加しました。
これによりInternet ArchiveのURLの自動リンクが可能になります。
この仕様は過去の投稿にさかのぼって適用されます。

自動リンクが機能するようになるURLの例

https://example.com/https://www.example.com

変更があったファイル

  • functions.php
  • index.php

2024/04/10 v1.27.6

Tegaki更新

tegaki.jsが開発元によって更新されたため、それをベースにして改造していた箇所を再改造して日本語化そのほかの機能を追加しました。
更新内容はアニメ再生時の不具合の修正のようです。

閲覧に合言葉が必要と設定した時の合言葉入力欄

閲覧に合言葉が必要と設定した時の合言葉入力欄のHTMLのタイトルタグに掲示板の名称が入るようになりました。
あえて<title></title>としていましたが、中身が空だとHTMLの文法エラーになってしまうため、titleタグに掲示板名を入れました。
もしも検索よけが必要な場合は、robots.txtの設置をおすすめします。
Googleで検索すれば検索避けとしての使い方がたくさん出てきます。

変更があったファイル

  • app/tegaki/ ディレクトリを上書きアップデート
  • functions.php
  • index.php

変更があったテンプレート

  • template/basic/aikotoba.html

2024/03/29 v1.27.2

ChickenPaint Be更新。iPad、Safari対応。

ChickenPaintのレイヤーをリネームして、iPadのスクリーンキーボードが画面から消えた時にChickenPaintのメニューバーが隠れてしまう問題に対応しました。
スクリーンキーボードが表示されると画面が強制スクロールされますが、キーボードが消えたあとが元の位置にもどらなくなっていたのを修正しました。
CSSの新しい単位dvhを使用して、高さを100vhから、100dvhに変更しました。

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

2024/03/17 v1.27.0

Tegaki更新

従来の右クリックに加え、ペン、指による長押しでも、パレットに色を登録できるようにしました。
ただし、パレットを長く押してしまうと長押しになり、色の選択ではなく色の登録になってしまいます。
色を拾うだけの時は長押しにならないようご注意ください。

ChickenPaint be更新

ショートカットキーを追加しました。「ctrl+i」でネガポジ反転できるようになりました。
レイヤーマスクのネガポジ反転も可能です。マスクをネガポジ反転して、可視領域を反転する事もできます

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/tegaki/ ディレクトリを上書きアップデート
  • index.php
  • config.php
    (Misskeyノート機能でノートするMisskeyサーバを追加しました。従来のサーバ一覧で特に困っていない方は更新しなくても動作には支障ありません。設定ずみのconfig.phpをそのままお使いください。)

2024/03/15 v1.26.8

レスカタログモードの画像一覧時にwebpサムネイルが表示されないバグを修正

カタログ用のwebpサムネイルが存在しているにも関わらず、レスカタログモードおよび、Misskeyノート画像一覧で、PNGまたはjpegサムネイル画像が表示されていました。
ダークモードの採用により、透過webp画像が目視で確認できるようになった事でこのバグが見つかりました。

コード整理

検索画面の画像一覧にも、カタログ表示用のテンプレートのパーツが使えるようにしました。
これにより、同じ処理の繰り返しのための余分なコードを記述しなくてもよくなりました。
サムネイル作成処理の同じ処理の繰り返しを関数化しました。

変更があったファイル

  • functions.php
  • index.php

変更があったテンプレート

  • template/basic/parts/catalog_images_loop.html
  • template/basic/search.html

2024/03/10 v1.25.8

v1.25.6のバグを修正

サムネイルが存在しない記事を編集した時にサムネイルがある事になってしまい、画像が表示されなくなるバグを修正しました。

変更があったファイル

  • index.php

2024/03/10 v1.25.6

webp形式のサムネイルへ

カタログモードやスレッド個別表示時の下段にはすでにwebp形式の画像を採用していましたが、記事本文内のサムネイル画像はjpeg形式のままでした。
その記事本文のサムネイルをwebp形式対応にして、webp形式が読み込めるブラウザの場合はwebpで表示します。
ブラウザが対応していない場合はjpeg形式のサムネイルを表示します。
pictureタグで自動的に振り分けます。

webp対応にするメリット

  • ファイルサイズが削減できる。
  • 透過画像を表示できる。

jpeg形式では透明色を作る事ができないため不透明な画像にしかなりません。
webp形式なら、透明な箇所を透明なまま表示する事ができます。
透過画像に対応できるwebpなら、ChickenPaintで透過画像を作成して、サムネイルも透過画像にする事ができます。
透過GIF、透過PNG画像をアップロードして透過webp形式のサムネイルを作る事もできます。

Lightboxの背景をより暗く

Lightboxで画像をポップアップ表示した時の背景がより暗くなるようにしました。

変更があったファイル

  • functions.php
  • index.php
  • thumbnail_gd.php
  • lib/lightbox/css/lightbox.css
  • lib/lightbox/css/lightbox.min.css

変更があったテンプレート

  • template/basic/continue.html
  • template/basic/parts/before_edit_del_res_loop.html
  • template/basic/parts/edit_form_res_loop.html
  • template/basic/parts/footer_js.html
  • template/basic/parts/head_preload_css_js.html
  • template/basic/parts/threads_loop.html

テンプレートをカスタマイズしていない場合は、template/ ディレクトリを丸ごと上書きでも大丈夫です。

2024/03/06 v1.23.3

ダークモードを実装しました

20240306_Petit_Note_Dark_mode

ダークモードを実装しました。
しかしながら、ダークモードを使いたくないという方もいると思います。
また、ライトモードからダークモードに切り替えるのではなく、最初からダークモードにしたい方もいるでしょう。
例えばサイトの全体の色調はダークモードなのに掲示板だけライトモードの場合等です。
そのため以下の設定項目をconfig.phpに追加しました。

//ダークモードを使用する
// する: true しない: false

$use_darkmode = true;
// $use_darkmode = false;

//デフォルトの表示をダークモードにする
// する: true しない: false

// $darkmode_by_default = true;
$darkmode_by_default = false;

これらの設定項目が必要ない場合は、すでに設定ずみのconfig.phpをそのままご利用ください。
設定項目が存在しない場合は、「ダークモードを使用する」「デフォルトの表示はライトモード」になります。

ChickenPaint BeのパレットのセレクトメニューがiPad iOSで動作しなくなっていた問題を修正

ChickenPaint Beのレイヤーの合成方法やブラシ先端を選択するためのセレクトメニューが、iPadで操作できなくなっていたのを修正しました。

CSS カスタム変数で色を指定

CSS カスタムプロパティ(変数)の使用 - CSS: カスケーディングスタイルシート | MDN

変数で色を指定するCSSカスタム変数により、簡単に色の設定ができるようになりました。

:root{/* ライトモードの配色 */

	/* 文字色 */--text-color: hsl(200 5% 30% / 1);
	/* リンクの色 */--a-color:var(--text-color);
	/* リンクホバー */--a-hover-color:var(--text-color);
	/* 背景色 */--background-color:#fff;
	/* 掲示板タイトルの文字色 */--title-a-color: var(--a-color);
	/* 記事タイトルの文字色 */--article-title-color: var(--a-color);
	/* 記事タイトルの背景色 */--accent-background-color:#ffe6e6;
	/* 記事タイトル背景色のアクセント */--strong-accent-background-color:#ffcfcf;
	/* チェック済みのフォームのラベルの色 */--checked-background-color:var(--accent-background-color);
	/* ボーダー */--border-color: var(--strong-accent-background-color);
	/* 点線 */--border-dashed-color:#888;
	/* ラベルのボーダー */--border-label-color: var(--checked-background-color);
	/* ダイナミックパレットのボーダー */--border-dynamic-palette-color: #555;
	/* 名前のリンクの色 */--name-a-color:var(--a-color);
	/* 名前のリンクのホバー */--soft-hover-color:#fff7f7;
	/* 閲覧注意の文字色 */--posted-image-span-color: #fff;
	/* 閲覧注意の背景色 */--posted-image-span-background-color: #555;
	/* 上に戻るボタンの矢印の色 */--page-top-color: #fff;
	/* 上に戻るボタンの背景色 */--page-top-background-color:var(--strong-accent-background-color);
	/* エラーメッセージの背景色 */--error-message-background-color:hsl(60 100% 88% / 1);
	/* 注意が必要な項目の背景色 */--warning-color:#fff;
	/* 注意が必要な項目のボーダー */--warning-border-color:rgb(255, 170, 192);}

.darkmode{/* ダークモードの配色 */

	/* 文字色 */--text-color: hsl(205 16% 90% / 1);
	/* リンクの色 */--a-color: hsl(211 18% 79% / 1);
	/* リンクホバー */--a-hover-color:var(--a-color);
	/* 背景色 */--background-color: hsl(202 22% 14% / 1);
	/* 掲示板タイトルの文字色 */--title-a-color: var(--a-color);
	/* 記事タイトルの文字色 */--article-title-color: var(--a-color);
	/* 記事タイトルの背景色 */--accent-background-color: hsl(205 25% 26% / 1);
	/* 記事タイトル背景色のアクセント */--strong-accent-background-color: hsl(205 30% 37% / 1);
	/* チェック済みのフォームのラベルの色 */--checked-background-color:var(--accent-background-color);
	/* ボーダー */--border-color: var(--strong-accent-background-color);
	/* 点線 */--border-dashed-color: var(--border-color);
	/* ラベルのボーダー */--border-label-color: var(--checked-background-color);
	/* ダイナミックパレットのボーダー */--border-dynamic-palette-color: hsl(211 30% 38% / 1);
	/* 名前のリンクの色 */--name-a-color:var(--title-a-color);
	/* 名前のリンクのホバー */--soft-hover-color: hsl(205 20% 18% / 1);
	/* 閲覧注意の文字色 */--posted-image-span-color: #fff;
	/* 閲覧注意の背景色 */--posted-image-span-background-color: #555;
	/* 上に戻るボタンの矢印の色 */--page-top-color: #fff;
	/* 上に戻るボタンの背景色 */--page-top-background-color: hsl(205 33% 29% / 1);
	/* エラーメッセージの背景色 */--error-message-background-color:var(--accent-background-color);
	/* 注意が必要な項目のボーダー */--warning-border-color:rgb(255, 170, 192);
	/* フォーム入力欄の背景色 */--form-input-background-color: #e5eaeb;input[type="text"], input[type="password"], input[type="url"], textarea, select {
		background-color:var(--form-input-background-color);
	}}

この色の設定項目は、index.cssの行の先頭にあります。
この箇所を変更するだけで、細やかに色の設定を行う事ができるようになりました。
ライトモード、ダークモードそれぞれの色を設定できます。
この色の設定に特別なアプリは必要なく、Google Chromeの開発者ツールで変数の色を設定して、Chromeで変更したCSSをPCに保存するだけで色の設定ができます。
記事のタイトルの背景色を朱色から青に変更する場合は、

/* 記事タイトルの背景色 */--accent-background-color:#ffe6e6;

上記の箇所を変更するだけで変更が完了します。

/* 掲示板タイトルの文字色 */--title-a-color: var(--a-color);

すでに変数で設定した色を別の変数でも使う場合は、変数の値に変数を使用できます。
値に変数を使わなければならない訳ではなく、変数を使う事もできるだけです。
var(--a-color)となっている箇所を16進数やhsl、rgbで直接設定する事もできます。
また、変数名はエンドユーザーが変更・追加できます。
もっと多くの変数が必要な場合は自由に追加する事ができます。

変更があったファイル

  • app/chickenpaint/
  • functions.php
  • index.php
  • config.php
    (設定項目の追加が必要な場合のみ更新)

変更があったテンプレート

  • template/basic/admin_in.html
  • template/basic/aikotoba.html
  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/before_misskey_note.html
  • template/basic/catalog.html
  • template/basic/continue.html
  • template/basic/edit_form.html
  • template/basic/error.html
  • template/basic/icomoon/demo.html
  • template/basic/index.css
  • template/basic/js/common.js
  • template/basic/main.html
  • template/basic/misskey_note_edit_form.html
  • template/basic/misskey_server_selection.html
  • template/basic/misskey_success.html
  • template/basic/paint_com.html
  • template/basic/paint_neo.html
  • template/basic/parts/form_set_nsfw_show_hide.html
  • template/basic/parts/html.html
  • template/basic/pch_view.html
  • template/basic/res.html
  • template/basic/res_catalog.html
  • template/basic/search.css
  • template/basic/search.html
  • template/basic/set_share_server.html

部分だけ一括で置換する事もできるのですが…。
template/ ディレクトリを全部上書きしたほうが早いかもしれません。

2024/02/23 v1.20.2

ペイント画面では「ctrl+o」のブラウザデフォルトの動作をキャンセル

ペイント画面ではブラウザデフォルトのショートカットキー「ctrl+o」が無効になるようにしました。
描画中にファイルを開くと、開いたファイルが表示され、描いているイラストが消えてしまうからです。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/neo/ ディレクトリを上書きアップデート
  • app/tegaki/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/paint_klecks.html

2024/02/23 v1.20.1

明示的に{passive: false}を指定

Chromeの警告を回避するため、PaintBBS NEOと、chickenpaint Beを更新して、明示的に{passive: false}を指定しました。
警告がでなくなっただけで、動作が変わった訳でも処理が速くなった訳でもないのですが、警告の件数がかなりの数にのぼっていたため修正しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/neo/ ディレクトリを上書きアップデート
  • index.php

2024/02/20 v1.20.0

画像差し換え時のGETによる機密データの受け渡しをより安全なfetch APIによるPOSTに変更

長い間気になっていた、パスワード等の機密データのGET渡しをfetchを使ったPOSTに変更する事ができました。
パスワードはPHPのOpenSSL 関数 で暗号化して、リダイレクトの一瞬のURLにそのデータを入れて送信していました。
リダイレクト処理なのでブラウザの履歴にはそのURLは残りません。

とはいっても、GETはURLそのものにデータをセットしますから、URLが判明すればセキュリティ上のリスクが発生します。
その懸念を払拭するために、PaintBBS NEOとChickenPaint Beを更新して、画面移動時の処理を掲示板で用意した関数を使って実行できるようにしました。

これにより、他の掲示板の開発者も、それぞれの掲示板に必要なデータの受け渡しを、NEOやChickenPaintをこれ以上改造する事なく、掲示板側で用意したJavaScriptで実行する事が可能になり、柔軟に対応する事ができるようになりました。
KlecksとTegakiは通信に関する処理が内部には存在していないため、これまでも掲示板側で通信の制御を行っていました。
この2つのアプリの通信に関する処理も改良して、より安全なPOSTによるデータの受け渡しに移行しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/neo/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/paint_chi.html
  • template/basic/paint_klecks.html
  • template/basic/paint_neo.html
  • template/basic/paint_tegaki.html

変更があったものの必ずしも更新の必要がある訳ではないテンプレート

  • template/basic/edit_form.html
  • template/basic/main.html
  • template/basic/paint_com.html
    この上記3つは、Chromeのオートコンプリートの警告を消すために更新しましたが、更新しなくても特に問題ありません。

ペイントアプリだけ更新

  • app/ ディレクトリを上書きアップデートすればペイントアプリを更新できます。
    掲示板全体のバージョンアップではなく、お絵描きアプリだけ更新する事もできますので、ご検討ください、

2024/02/17 v1.19.1

KlecksとTegakiの画像差し換え処理を改善

KlecksとTegakiの画像差し換え時のデータの送信をGETパラメータから、fetchを使ったPOSTに変更しました。
テンプレート内のJavaScriptの行数は増えましたが、安全性がより一層高まりました。

すでに使用しなくなっていたテンプレートそのほかのusercodeを削除

ペイント画面のテンプレートに残っていたusercodeを削除しました。
また、NEOの拡張ヘッダの使用が受信に失敗する原因ではなかった事が確定したため、GET渡しから、拡張ヘッダ経由のPOSTに戻しました。

今回の更新の場合は、変更があったファイルを先に更新してから、テンプレートを更新しないと続きを描くなどの処理が失敗します。
投稿の多いサイトの場合は、ファイルを先に更新して、それからテンプレートを更新していただきますようお願いします。

変更があったファイル

  • index.php
  • functions.php
  • save.inc.php

変更があったテンプレート

(ファイルの更新を先にすませる必要があります)

  • template/basic/paint_chi.html
  • template/basic/paint_klecks.html
  • template/basic/paint_neo.html
  • template/basic/paint_tegaki.html

2024/02/15 v1.18.6

GitHub コード スキャンによって発見されたライトボックスの脆弱性を修正

変数に格納されたテキストが HTML として解釈されるXSSの脆弱性を修正しました。
現時点で配布されている最新版のlightboxに存在する問題をPetit Noteで独自に修正しました。

変更があったファイル

  • app/neo/ ディレクトリを上書きアップデート
  • lib/lightbox/ ディレクトリを上書きアップデート
  • index.php

2024/02/14 v1.18.5

「閲覧注意」に設定した時はボタンの配色を変える

編集モードの時のボタンの配色変更処理を忘れていたため追加しました。

image

編集画面でも、「閲覧注意にする」にチェックが入るとボタンの周囲にピンク色のボーダーが入り背景色が白くなります。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/edit_form.html

2024/02/12 v1.18.3

改善

「閲覧注意」に設定した時はボタンの配色を変える

240212_002_閲覧注意にする

「閲覧注意」に設定している時は「スレッドを立てる」「投稿する」等のボタンの周囲にピンク色のボーダーが入り、ボタンの背景色が白くなるようにしました。
これにより、「閲覧注意」に設定し忘れていた、逆に「閲覧注意」に設定されているとは思わなかったというトラブルを解消できます。
また、「閲覧注意にする」チェックボックスの配置を、「投稿する」ボタンの常に左側に表示するようにしました。
ほとんどの場合、文字を読む方向の左から順番に目視して確認するためです。
これにより、設定のし忘れ、間違いを減らす事ができます。

また、画像を添付していない時には「閲覧注意にする」チェックボックスを表示しないようにしました。
文字しか投稿しないのに「閲覧注意にする」のチェックボックスが表示されているのは変だからです。
これらの対応には少し長いJavaScriptが必要でしたが、なんとか対応しました。

「閲覧注意」に設定するにデフォルトでチェックする

「閲覧注意にする」のチェックボックスにデフォルトでチェックが入るようになりました。
デフォルトでチェックでは困る場合は、config.phpのどの場所でもいいので以下の設定項目を追加してください。
設定項目が存在しない場合は、デフォルトで「閲覧注意にする」がチェックされた状態になります。

//「閲覧注意にする」をデフォルトでチェックする
//する: trueに設定すると「閲覧注意にする」設定のチェックボックスがデフォルトでチェックされます。
// する: true しない: false

$nsfw_checked = true;
// $nsfw_checked = false;

閲覧注意の設定項目を使う設定にしている場合しか関係ない設定項目ですので、閲覧注意の設定項目が表示されないようにしている場合はこの設定項目は必要はありません。

削除ボタンの配色を変更

このボタンを押すと削除されてしまう最後の削除ボタンの配色を変更しました。
編集ボタンと間違って削除する事故を防止します。

image

PaintBBS NEOのキー入力制限の改良

NEOが起動している画面ではNEOのキーボードショートカットキーとテキスト入力以外のキー操作ができませんでした。
そのため、動的パレットの「textarea」へのパレットデータの貼り付けのためにマウスの右クリックメニューを使用する事しかできない状態でした。
また貼り付けたパレットデータの編集もできませんでした。

image

2024年に動的パレットのデータの取得や貼り付けを使っている人はそれほど多くいないとは思いますが、これが使えると自分専用のパレットをどこの掲示板でも使えるようになります。
今回の更新で、パレットデータの入力欄のキー入力が可能になりました。
オリジナルのPaintBBSのようにctrl+v(貼り付け)crtl+x(切り取り)ctrl+c(コピー)crtl+a(すべて選択)等がパレットデータ入力欄で使用できるようになりました。

また、NEOの文字入力機能使用時に全キー入力が許可されてしまい、ctrl+r(リロード)crtl+h(履歴)ctrl++(拡大)ctrl+-(縮小)のブラウザデフォルトのショートカットキーが作動してしまう問題も修正しました。

TegakiのアニメデータがPOST可能な上限を超過する時はアニメデータを添付しない

TegakiのデータがPOST可能な限界サイズを超えてしまう時は、アニメデータを切り捨てて画像だけ投稿するようにしました。
(前回のNEOの更新のTegaki版)

変更があったファイル

  • app/neo/neo.js
  • index.php
  • config.php
    (閲覧注意がデフォルトでチェックになると困る場合のみ更新)

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/index.css
  • template/basic/before_del.html
  • template/basic/main.html
  • template/basic/res.html
  • template/basic/misskey_note_edit_form.html
  • template/basic/paint_com.html
  • template/basic/paint_klecks.html
  • template/basic/paint_tegaki.html

2024/02/09 v1.17.2

改善

neoの描画アニメのファイルサイズが大きくなりすぎて投稿不能になる問題を修正

neoの描画アニメのファイルサイズが大きくなりすぎてサーバで処理でなくなり、画像を含むすべての投稿が失敗する問題を修正しました。
サーバの投稿可能なファイルサイズの限界値をPHPスクリプトで取得して、それをneoに渡して計算し、限界を超える時には描画アニメファイルを切り捨てて、画像の投稿が成功するようにしました。
動画を切り捨てないと投稿そのものが失敗するため、動画はなくなりますが仕方ありません。
動画の投稿が成功する前提で一番上のレイヤーを塗り潰して下の絵を隠して続きを描く習慣がお絵かき掲示板にはありますが、その場合は動画が切り捨てられた時点で塗りつぶした一番上のレイヤーの画像しか残りませんのでご注意ください。
さくらのレンタルサーバのデフォルト設定では8MBがPOSTの上限で、それを超える場合は動画が切り捨てられます。
画像のみの投稿になりますが、投稿は成功します。

image

動画(レイヤー情報)がファイルサイズ超過で送信されない時は、「画像のみが送信されます。レイヤー情報は保持されません。」というダイヤログが開いて「OK」をタップした時のみ送信が実行され、「キャンセル」した時は送信されません。
画像のみの送信では困る状態の時は「キャンセル」してレイヤー情報が保持されない事を前提にした作画を続行する事ができます。

POSTの上限が8MBでは足りない場合は、php.iniの設定で以下のように記述します。

upload_max_filesize = 22M
post_max_size = 22M

上記は、1つのファイルの最大ファイルサイズが22MBで、POSTの合計サイズが22MBまで投稿可能になるようにした設定例です。
必要に応じて増減してご利用ください。
(レンタルサーバの設定のサポートは掲示板開発者のサポート範囲外ですので、サーバ会社のQ&A等で調べていただく形になります)

関連して、続きを描く画面のダウンロードボタンの横に続きを描く時点での動画のファイルサイズを表示するようにしました。
neoの.pchファイルのファイルサイズがサーバに投稿可能なサイズかどうかの判断の目安になります。

管理者が投稿したURLには「rel=""」を付けない

HTML 属性: rel - HTML: ハイパーテキストマークアップ言語 | MDN

被リンク数が多いとSEOに有利になる事が理由で、掲示板にスパム投稿が集まる事があります。
それを回避するため、検索エンジンに評価されないようにするrel=""を付与したリンクを作成してきました。
<a href="https://example.com" target="_blank" rel="">example</a>のように、rel属性に""を付与していました。
しかし、管理者による投稿の場合は、紹介したいサイトのURLや管理者のSNSアカウントが「URL」欄に入っている事が多いため、管理者が投稿したURLには、"rel=""を付与しないようにしました。
これにより、管理者が投稿したURLはGoogle等の検索エンジンによって評価されるようになります。
管理者投稿を示すマークが表示されている記事すべてが対象になり、過去の投稿に遡ってこの仕様が適用されます。

ライトボックスの背景色の不透明度を0.65に

画像をポップアップ表示した時の背景の暗さを不透明度0.6から0.65に変更しました。
ほんの少しの変化ですが、画像の背景がより暗くなるようにしました。

バグ修正

レス画面のカタログモードを表示すると「記事がありません」というエラーになるバグを修正

レス画面用のカタログモードやMisskeyへのノートのための画像一覧の画面を開いた時に「記事がありません」というエラーにメッセージが表示され、画像がまったく表示されないバグを修正しました。
記事の最初の投稿が画像の無い文字だけの投稿の時に、記事が存在しない事になるバグを修正しました。

HTMLの文法エラーを修正

先読みしたJavaScriptが使用されていない状態だったのを修正しました。
ライトボックスのJavaScriptのminifyで圧縮したファイルが使用されていなかったのを修正しました。
不要な</script>タグが混じっていたのを取り除きました。

変更があったファイル

  • app/neo/ ディレクトリを上書きアップデート
  • lib/lightbox/ ディレクトリを上書きアップデート
  • functions.php
  • index.php

変更があったテンプレート

  • template/basic/continue.html
  • template/basic/index.css
  • template/basic/paint_neo.html
  • template/basic/parts/footer_js.html
  • template/basic/parts/head_preload_css_js.html
  • template/basic/parts/threads_loop.html

2024/02/03 v1.16.6

LuminousからLightboxへ

画像をポップアップ表示する時に使用していたLuminousの開発が中止になり、中止されただけでなくLICENSEファイルもリポジトリから削除されてしまったため、LICENSE不明になってしまいました。
そのため、Lightboxを使用してポップアップ表示する事にしました。
しかし、Lightboxでは、Luminousではできていたいくつかの事ができません。
そのためLightboxを改造して、見た目と機能をLuminousに近づけてその問題を解決しました。

  • 透過PNGを透過させる
    Lightboxでは背景色が白になってしまうため、背景部分を透明にして透過PNG画像の背景が透明になるようにしました。
  • 画像長押しで保存
    Lightboxでは画像の長押しで画像を保存できない仕様のため、CSSを調整して画像の長押しで画像を保存できるようにしました。
  • 前後のナビゲーションバーの位置を変更
    画像の上に表示されていた前後の画像を表示するための矢印を、左右の横幅からの位置に変更して、左右に余白があるときは画像の上でではなく、画面の左右にナビゲーションの矢印を表示するようにしました。
  • 閉じるボタン
    前後ナビゲーションの矢印以外のどこを押しても画像を閉じるようにしました。
    そのため閉じるボタンは必要がなくなりました。
  • 画像読み込み中の画像
    ローディング中の円のGIFを、透過PNGで作成した大小ふたつの円に変更。CSS3で画像が回転します。

PaintBBS NEO更新

PHPでエラーが発生している時にPaintBBS NEOでエラーを検出できず画面が移動して描いているイラストが消えてしまう問題を修正しました。
サーバから「ok」という文字列以外が返って来た時には、「投稿に失敗。時間を置いて再度投稿してみてください。」というアラートを開いて、投稿に失敗した事を知らせます。
ペイント画面から移動しないので、描いているイラストはキャンバスに残ります。
PHPのエラーが解消されれば、投稿可能になります。

変更があったファイル

  • index.php
  • lib/lightbox/ 追加されたディレクトリ ディレクトリごとアップロード
  • app/neo/ ディレクトリを上書きアップデート

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/parts/before_edit_del_res_loop.html
  • template/basic/parts/copyright.html
  • template/basic/parts/edit_form_res_loop.html
  • template/basic/parts/footer_js.html
  • template/basic/parts/head_preload_css_js.html
  • template/basic/parts/threads_loop.html

変更があったテンプレートの数は多いのですが、パーツディレクトリの中の変更なので、テンプレートをカスタマイズしている場合でも、影響は最小限になるのではないかと思います。
テンプレートをカスタマイズしていない方は
template/ディレクトリをまるごとアップデートすれば一瞬で作業が終わります。

lib/lightbox/のライトボックスのファイルの存在確認をしているため、このディレクトリの中身が無い時は、エラーメッセージが表示されて、スクリプトが停止します。
lib/ ディレクトリの上書きアップデートでも構いませんので、アップロードをお願いします。

2024/01/29 v1.15.6

描画中にCookieが消えてしまった時に投稿不能になる問題を修正

HTMLにセットしたCookieの値と、実際のCookieの値を照合するシステムを廃止。
投稿時にCookieが存在しない場合もユーザーコードのCookieを再発行して投稿できるようにしました。
ユーザーのブラウザからCookieが消えた場合だけでなく、サーバのWAFの設定によってCookieが照合できなくなる問題にも対応できていると思います。
また、PaintBBS NEOの拡張ヘッダに情報を詰め込んでいましたが、拡張ヘッダ経由ではなく、GETパラメータで取得する方式に切り替えました。
互換性維持のため、GETで取得できない場合は拡張ヘッダでも取得できるようにしました。
これにより、save.inc.phpをアップデートした時にNEOで描いている途中の人がいても投稿できるようになります。

管理者投稿モードでは期限をすぎた投稿でも続きを描くができるように

管理者投稿モードでは、初期設定で180日を過ぎてしまった投稿でも、続きを描く事ができるようにしていた筈でしたが、負荷削減のための配列のキャッシュを読み込んでしまい、管理者投稿モードの時にも続きを描くリンクが消えたままになるバグがみつかりました。
管理者投稿モードの時にはキャッシュを「読み込まない/書き込まない」ようにしてこの問題を解決しました。

閉じたスレッドで続きを描く→新規投稿

閉じたスレッドで続きを描く→新規投稿を選択した時に「同じスレッドに表示する」のチェックボックスが表示されていましたが、実際には閉じたスレッドには投稿されず、新しいスレッドへの投稿になっていました。
「同じスレッドに投稿する」のチェックボックスを閉じたスレッドには表示しないようにしました。

変更があったファイル

  • functions.php
  • index.php
  • save.inc.php

変更があったテンプレート

  • template/basic/continue.html
  • template/basic/paint_neo.html

2024/01/25 v1.12.5

ChickenPaint Be更新

  • グリッド設定のモーダルを開いた時に数値入力項目にフォーカスが移動する元の仕様が動作していなかったのを修正。
  • グリッド設定の数値入力確定のエンターキーで画面が移動してペイント画面から移動する問題が残っていたのを修正。
    仮に意図どおりに処理が行われなかった場合でも、エンターキーが無効になるだけにして被害が最小になるように。
    その上で、グリッド・ぼかし・変形確定のエンターキーが意図どおりに動作する事を確認しました。
  • グリッド、ぼかしの表示終了後はモーダルを破棄するようにしました。
    この問題は改造前のChickenPaintに存在していた問題で、新しく発生したものではありません。

Klecksで特定のキーが入力できなくなっていたのを修正しました

"+", ";", "=","-","s","h","r"が入力できなくなっていました。
これは、v1.12.2.3で、ctrl+rによる画面更新を防止するためにキーのDefaultの動作をキャンセルした時に発生したものです。
ctrlキーまたは⌘キーが押下されている事を確認した上でその組み合わせの場合のみDefaultの動作をキャンセルするようにしました。

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

変更があったテンプレート

  • template/basic/paint_klecks.html

2024/01/25 v1.12.3

ChickenPaint Be更新

  • innerHTMLでテキストを使用している箇所をテキストしか入らないtextContentへ。
  • ぼかしフィルタのモーダルを開いた時に数値入力項目にフォーカスが移動する元の仕様が動作していなかったのを修正。
  • ヘルプの3つの項目のモーダルを非表示にしても構築されたモーダルのHTMLが見えないだけで残ってしまっていたのを消去するようにしました。

変更があったファイル

  • chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/01/24 v1.12.2.3

ペイント画面では「リロード」「拡大縮小」「履歴」「ページを保存」のブラウザデフォルトのショートカットを無効化

  • 「ctrl+r」による再読み込み、「ctrl++」によるブラウザ全体の拡大縮小、「ctrl+h」による履歴の表示「ctrl+s」によるページを保存といったブラウザのデフォルトのショートカットをChickenPaint、Tegaki、Klecksのペイント画面で無効化しました。
  • ChickenPaintのショートカットキーを変更。「ctrl+y」をやり直し、「ctrl+h」を変形にしました。
  • Macの時はマスク適用、マスク削除のショートカットキーを「⌘+」に。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/tegaki/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/paint_klecks.html

2024/01/23 v1.12.0

ChickenPaint Be更新 ショートカットが効かなく問題を修正

これは、かなり以前から存在していた問題です。
「透明部分を保護」等のチェックボックスや「合成方法」等のセレクトボックスを操作すると、ChickenPaintのショートカットが効かなくなる問題がありました。
ショートカットが使えなくなった時は、画面のどこかをペンでタッチするとショートカットが再び使えるようになるので、操作を続行できにはできていたのですが、「ctrl++」で画面を拡大しようとした時にブラウザのショートカットが有効になりUIが拡大されてしまったり、「ctrl+s」で画像をPCに保存しようとしたらブラウザのデフォルトのショートカットとして認識されてしまって、画像の保存ではなくHTMLが保存される等の問題が発生していました。
時間がかかりましたが、何とか問題を特定し、解決方法を見つける事ができました。
問題があった箇所を操作しても、ChickenPaintのショートカットは有効なまま維持されます。
ブラウザのデフォルトのショートカットと入れ替わってしまう問題は解消されました。

しかし、念のため、UIの拡大のショートカットに使用される「+」「-」と、保存に使用される「s」のブラウザのショートカットキーを最初から無効化する処理も追加して、意図しない動作にならないようにしました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/01/22 v1.11.0

ChickenPaint Be更新。アイコンフォントを軽量化。

  • icomoonで、fontawesomeのアイコンフォントのファイルサイズを1/18に。
    これまでは使用していないフォントを大量に読み込んでいました。
  • ドロップダウンメニューのHTMLをBootstrap5.3形式に統一しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/01/20 v1.10.9

ChickenPaint Be更新

拡大率縮小率を緩やかに

  • ズームの拡大率を141%に、縮小率を70.92%に変更しました。
    これまでは、拡大時に200%拡大され、縮小時には50%に縮小されていました。
    この拡縮率は大きすぎるため、二度拡大すると200%になるように調整しました。
    また、拡大縮小を繰り返すと、100%、200%または50%に戻らなくなる事がありました。
    拡大縮小を繰り返しても、100%、200%または50%に正確に戻るようになりました。

  • 70.92%に縮小した時に描線がガタガタに表示されてしまうため、ズーム時に補完して表示するオプションをデフォルトで有効になるようにしました。
    ドットの状態を確認したい時には、この機能をオフにする必要があるため「表示」→「ズームをなめらかに表示する」をオフにしてご利用ください。

未翻訳箇所の日本語訳を行いました。

  • ショートカットキー一覧、送信ダイヤログの未翻訳箇所の日本語訳を追加しました。
    「Right」「Left」も「右」「左」に翻訳しました。
    この間の更新でレイヤーマスクやブラシサイズのスライダーのショートカットキーも追加されていますので、見やすくなったショートカットキー一覧のヘルプをぜひご利用ください。

コードの最適化

  • 必要がなくなったコードを整理しました。
    余計なコードが残っていると、そのコードに何らかの意味があるかもしれないとなって、今後の保守作業に影響がでます。
    また、Bootstrap5の文法にそって記述していれば追加のJavaScriptが必要ない事が判明した箇所のJavaScriptの撤去も行いました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/01/16 v1.10.7

ChickenPaint更新

未翻訳箇所の日本語訳を行いました。

ドロップダウンメニューのメニュー項目にカーソルを合わせた時に英語の説明文が表示されていましたが、表示する項目を整理して必要なものだけ残し、それを日本語に翻訳しました。

レイヤーマスクのショートカットキーを追加しました。

2024_01_16_レイヤーマスクのショートカットキーを追加

レイヤーマスクのサムネイルをクリックして使用するショートカットキーを追加しました。
以下の一覧にはマニュアルに記載がなかったものの最初から存在していたショートカットキーも含まれています。

  • シフト+クリックでレイヤーマスクの表示/非表示
  • alt+クリックでレイヤーマスクのマスク部分を表示
  • ctrl+クリックでレイヤーマスク適用
  • シフト+ctrl+クリックでレイヤーマスク削除

このショートカットキーの追加で、レイヤーパレットの右クリックメニューに存在していた処理を行う事がでるようになりました。
どのぐらいの方が使っていたのかわかりませんが、レイヤーパレットの右クリックメニューにはグループ結合や、レイヤーマスクの表示/非表示等数多くの項目が存在していました。
CSSフレームワークBootstrapをBootstrap4からBootstrap5対応に変更する作業で、この右クリックメニューを再実装する事ができなかったため、多くの埋め合わせを行いました。
レイヤーパレットにグループ結合アイコンを追加したのもそのためです。
しかし、iPad等最初から右クリックが使えない環境の場合は、より操作しやすいChickenPaintになっていると思います。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/01/14 v1.10.5

ChickenPaint更新

レイヤーパレットにグループ結合アイコンを追加しました。

通常の下のレイヤーと結合で結合するとクリッピングが解除されてしまいますが、レイヤーグループ内で下のレイヤーとクリッピングしていれば、グループ結合でレイヤーを結合しても、クリッピングが維持できます。 また、たくさんレイヤーがある時はグループ化して閉じればレイヤーパレットの場所を取らず便利です。
しかし、これまではグループレイヤーを結合するには右クリックメニューから選ぶか上段のメニューからグループ結合を選択する必要がありました。
そして、レイヤーの右クリックメニュー機能を再実装できなかったので、実質上のメニューか、ショートカットキーでしか操作できなくなっていました。
そこで、レイヤーパレットに「グループ結合」アイコンを追加しました。
1タップで、グループフォルダ内のレイヤーを結合して1つにします。

2024_01_14_レイヤーパレットにグループ結合アイコンを追加

レイヤーパレットのマスクアイコンの動作を変更

レイヤーパレットのマスクアイコンの動作を変更しました。
選択しているレイヤーにマスクが無い時は「マスク追加」になり、マスクが存在している時は「マスク適用」に変わります。
これによりペン操作で簡単にレイヤーマスクを適用できようになります。
これまでの、マスクアイコンには「マスク追加」機能しかありませんでした。

2024_01_13_マスクアイコンでレイヤーマスク適用

ショートカットキーをさらに追加

  • SHIFT+Mでマスク削除

Screen-2024-01-13_22-18-57

追加されたショートカットキーの一覧はこのページを確認して覚える必要はありません。
メニューの横にショートカットキーが表示されていますので、追加されたショートカットキーはそこから確認できます。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/01/13 v1.10.2

ChickenPaint更新

緩やかに変化するスライダーの動作を修正

  • 右クリックで、ブラシパレットのスライダーが緩やかに変化するようになる機能を改善しました。
    従来は、ブラシサイズと、不透明度以外のスライダーも右クリックによる緩やかなスライダーの変化の動作に入っていましたが、スライダーの種類によっては28%や56%でスライダーが動かなくなる等の問題が発生していました。
    また、右クリックしながらスライダーを調整するのは結構面倒です。
以下の改善を行いました
  • 右クリックによるドラッグに加え、SHIFT+左ドラッグでもスライダーが緩やかに変化するようにしました。
    ペンを使っている時は、シフトキーを押しながらペンでスライダーを調整するだけで緩やかに変化するようになります。
  • ブラシサイズと不透明度以外の期待通りに動作しないスライダーには緩やかなスライダーの変化を適用しないようにしました。
    ブラシサイズと不透明度以外のスライダーが途中で止まったり、スライダーが入力できなくなったりする項目のスライダーは最初から緩やかに変化するスライダーのモードに入らないようにしました。
アプリ名更新

「ChickenPaint」のロゴ部分を「ChickenPaint Be」に変更して、改造版である事が一目でわかるようにしました。
掲示板のエンドユーザーの方には直接関係ありませんが、「ChickenPaint Be」のソースコードはここにあります。
satopian/ChickenPaint_Be: お絵かき掲示板Petit Noteのためのbootstrap5対応のChickenPaint
改造したものを再配布する時のライセンス上の条件にソースコード公開の義務があります。
そのためヘルプページにも「ChickenPaint Be」のGitHubのリポジトリのURLを記載しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2024/01/11 v1.10.1

ChickenPaint更新

ChickenPaintのショートカットキーを追加

全レイヤー結合とグループ結合、マスク適用のショートカットキーを追加しました
オリジナルのChickenPaintからのショートカットキー追加一覧は以下

ChickenPaintのショートカットキーを拡張しました|さとぴあ

  • R+左クリックでキャンバスの回転
  • Hでレイヤーの左右反転
  • Wで水彩
  • Aでエアブラシ
  • Sで薄消しゴム
  • Dで指先ツール
  • Cで混色ツール
  • SHIFT+CTRL+Eで全レイヤー結合
  • SHIFT+CTRL+Gでグループ結合
  • CTRL+Mでマスク適用

レイヤーパレットに「下のレイヤーと結合」アイコンを追加

  • 「下のレイヤーと結合」をペンによる操作で簡単に実現できるようにするため、レイヤーパレットに「下のレイヤーと結合」アイコンを追加しました。

image

ヘルプページのショートカットキー一覧の翻訳

英語のみだったショートカットキー一覧の説明ページの日本語辞書を追加して、日本語と英語を自動的に切り替えで表示できるようになりました。
これで、ほとんどの日本語未翻訳箇所の日本語翻訳作業が完了しました。

satopian/ChickenPaint_Be: お絵かき掲示板Petit Noteのためのbootstrap5対応のChickenPaint

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/parts/copyright.html

2024/01/09 v1.09.8

ChickenPaint更新

  • レイヤーを変形しようとした時にレイヤーが非表示または不透明度0%の時にも、非表示、不透明度0%というメッセージをポップオーバーで出すようにしました。
    これまでは、単に変形できないだけで、なぜ変形できないのかを説明するメッセージの表示がありませんでした。
  • レイヤー名をマウスで変更できなくなっていたのを修正しました。
    ペンタブレットやタッチデバイスの場合はダブルタップでレイヤー名の変更が可能ですが、マウスではそれが出来ません。
    従来は、マウスの右クリックで、「マスク追加」「クリッピング」「レイヤー名変更」などのコンテキストメニューが開いていたので、そのメニューを使ってレイヤー名を変更する事が可能でした。
    しかしながらBootstrap5に更新した結果、同じコンテキストメニューを表示を表示する事が困難になってしまったため、マウスの場合は右クリックでレイヤー名の変更になるようにコードを変更しました。
    たったそれだけの作業でしたが、解明が困難な軽微なエラーメッセージが表示される問題を解決するためだけに20時間以上費やしてしまいました。
  • ファイルメニューで「PCに保存」(CTRL+S)した時のファイル名に投稿日時分秒が入るようになりました。
    これによりファイル名を変更して保存しなくても、同一フォルダに途中経過を保存できるようになりました。
    これまではファイル名が「oekaki.png」固定でした。

ChickenPaint Be

改造版に固有の機能が存在し、オリジナルには存在している機能が無くなっている事や、改造版に固有の問題が発生している可能性もある事から、オリジナルの「ChickenPaint」と区別するために、改造版の「ChickenPaint」の名称を「ChickenPaint Be」としました。

satopian/ChickenPaint_Be: お絵かき掲示板Petit Noteのためのbootstrap5対応のChickenPaint

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/parts/copyright.html

2024/01/07 v1.09.6

ChickenPaint更新

ChickenPaintの各パレットやドロップダウンメニュー、ポップオーバーを作成しているCSSフレームワークBootstrapをバージョン4からバージョン5に変更しました。

  • Bootstrap4ではjQueryで制御していた箇所が、Bootstrap5ではJavaScriptとなり、大幅なコードの書き換えが必要になりました。
    また、従来の書き方を単に置き換えただけでは意図した動作にならないケースがいくつかあり、新しく処理を追加して対応しました。
    気が遠くなるような作業量でしたが、将来廃止予定のJavaScriptがBootstrap4のコードに入っていたため、これから先の数年後もChickenPaintが使えるようにするために必要な作業でした。
    satopian/ChickenPaint_Be: お絵かき掲示板Petit Noteのためのbootstrap5対応のChickenPaint

    ビルドするためのソースコードはここにありますので、気になる方はご確認ください。

ChickenPaintのダイヤログ、ポップオーバーの日本語未翻訳箇所を翻訳しました

Screen-2024-01-06_14-51-15

Screen-2024-01-06_15-15-24

変形確定前に別のレイヤーを選択、または新規レイヤーを追加しようとした時に表示されるダイヤログの動作を改良

ChickenPaint-Bootstrap5.-Petit.Note-Chrome-2024-01-07-10-55-53-Trim.mp4
  • 変形確定前にレイヤーを追加しようとすると変形を確定する取り消すなどの操作を促すダイヤログが表示されますが、従来の動作では、変形確定のエンターキーの押下で変形は確定されるものの、ダイヤログはすぐには消えず、レイヤーの追加も行われませんでした。
    今回の修正により、エンターキーによる変形の確定と同時にダイヤログは閉じられ、かつ、レイヤーも追加されるようになります。
    また、一連のダイヤログの日本語対応も行いました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/klecks/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/parts/copyright.html
    このテンプレートは著作権リンクのパーツです。
    このHTMLファイルを1つ更新するだけで、すべての著作リンクが更新されます。
    今回の更新でChickenPaintのGitHubのリポジトリのURLをカスタマイズ版のChickenPaintのリポジトリに変更しました。
    これは、ChickenPaintのカスタマイズ版で発生した問題はカスタマイズ版のChickenPaintで処理しなければならないという判断から行ったものです。

2023/12/30 v1.08.6

ChickenPaint更新

  • グリッドのサイズを設定する項目に数値を入力して、エンターキーで確定した時に、描画画面から掲示板トップに画面が移動して描いていたイラストが消えてしまうバグを修正しました。
    開発元のリポジトリにいくつか開いているIssueとプルリクエストに現時点では何も回答がないため、追加のIssueは開かず独自に修正しました。
    ソースコードはライセンスにしたがって公開していますので、ソースコードが気になる方は以下のリポジトリをご参照ください。

https://github.com/satopian/ChickenPaint_for_Petit_Note

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

2023/12/27 v1.08.5

Cookieチェックの仕様をロールバック

  • ユーザーコードとSESSIONのCookieを削除しても、Cookieチェックでエラーにならなくなっていたのを修正しました。

変更があったファイル

  • index.php
  • functions.php

2023/12/26 v1.08.3

Tegaki更新

  • Tegakiのブラシサイズが1pxの時にも円カーソルを表示するようにしました。
  • 従来は1pxの時には表示されない仕様でした。
  • 1pxの円カーソルは小さすぎて見えないので、1pxの時は2px相当の円カーソルを表示します。
  • モバイルでは円カーソルを表示しないようにしました。
    タッチしている時にしかカーソルが動かないため。

PaintBBS NEO更新

  • 開発元リポジトリのバージョン表記にあわせて、v1.6.1に。
    バージョン表記以外は前回更新したものと同じです。

klecks更新

  • プレビューウィンドウの拡大縮小ができるようになりました。

変更があったファイル

  • app/klecks/ ディレクトリを上書きアップデート
  • app/neo/ ディレクトリを上書きアップデート
  • app/tegaki/ ディレクトリを上書きアップデート
  • index.php
  • functions.php

2023/12/25 v1.08.0

間近に投稿した記事であるにも関わらず検索結果に表示されない問題を修正

  • 1スレッドに150件投稿可能で、最大検索数が300件の時に、3スレッド目以後に新しい投稿が存在していても上位2スレッド分しか検索の対象にならない問題を修正しました。
    最大検索数を超える記事を取得ずみの場合でも、上位10スレッドは必ず検索の対象になるようにしました。

変更があったファイル

  • index.php

2023/12/24 v1.07.3

  • 独自カスタマイズ版のChickenPaintを更新しました。
    描画時の円カーソル表示を別の方法で再実装しました。
    タッチデバイス以外のPC等で描画時にも円カーソルを表示します。
Petit.Note.-.Google.Chrome.2023-12-25.18-53-44.-.Trim.mp4

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2023/12/22 v1.07.2.1

ペイントアプリを更新

  • 独自カスタマイズ版のChickenPaintを更新しました。
    描画時の円カーソル表示をあきらめ、もとに戻しました。
  • 独自カスタマイズ版のPaintBBS NEOを更新しました。
    タッチデバイスでは円カーソルを表示しないようにしました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/neo/ ディレクトリを上書きアップデート
  • index.php

2023/12/22 v1.07.0

ペイントアプリを更新

  • 独自カスタマイズ版のChickenPaintを更新しました。
  • 独自カスタマイズ版のPaintBBS NEOを更新しました。

NEO、ChickenPaintともに、描画中にも円カーソルを表示するようにしました。
また、オリジナルのPaintBBSの動作にあわせて8px以下のブラシサイズの時には円カーソルを出さないようにしていたPaintBBS NEOの仕様を変更して1pxの時にも2px相当の円カーソルを表示するようにしました。
これは、Windows Inkのペンタブレット+Chromeの時に、ブラウザのデフォルトのカーソルが消える問題に対応するための改造です。
視認性が高い黒の1pxの描線の時には、カーソルが見えなくても描線が見えるので何とかなるのですが、視認性が悪い薄い色の線を長く引きたい時にはカーソルが見える必要があるからです。

合言葉認証時のエラーメッセージを非同期通信化

  • 合言葉が一致しなかった時のエラーメッセージも、別画面に移動してエラーを知らせるのではなく、同一の画面に合言葉不一致のエラーメッセージを表示します。

変更があったファイル

  • app/chickenpaint/js/chickenpaint.js
  • app/chickenpaint/js/chickenpaint.min.js
  • app/neo/neo.js
  • index.php

変更があったテンプレート

  • template/basic/aikotoba.html
  • template/basic/main.html
  • template/basic/res.html
    (合言葉のエラーメッセージに関する変更です。合言葉機能を変更していない場合はテンプレートの更新は不要です)

2023/12/20 v1.06.2

ユーザーコードのCookieが何らかの理由で消えてしまった場合でも投稿が可能になるように修正しました

  • 「ユーザーコードが一致しません」というエラーが発生して本来なら投稿できるはずの投稿に失敗する事例の報告がありました。
    そのためユーザーコードのCookie単体でのチェックではなく、SESSIONデータにもユーザーコードをセットしてCookieとSESSIONのどちらかが一致すれば投稿ができるようにしました。

Klecks更新

  • Klecksを更新しました。

変更があったファイル

  • app/klecks/ ディレクトリを上書きアップデート
  • index.php
  • functions.php
  • save.inc.php

2023/12/17 v1.05.2

同じ内容のJavaScriptの読み込み処理を分離して共通パーツ化しました。

テンプレートで使用しているJavaScriptとcssの先読み処理5行と、JavaScriptの読み込みの3行を外部共通パーツ化しました。

  • ヘッダに入っていたJavaScriptとcssの先読み処理の5行
    template/basic/parts/head_preload_css_js.html
  • </body>の直前に入っていたJavaScriptの読み込みのための3行
    template/basic/parts/footer_js.html

共通パーツ化して外部化した事により、画像のポップアップで使っているluminousを、別のlight-boxに置き換える時にファイルを2つ書き換えるだけですむようになりました。

Misskey APIの仕様変更に対応

  • 「内容を隠す」設定にして注釈欄を開いて、かつ、注釈が何も記入されていなかった時に、MisskeyのAPIを使ったMisskeyへの投稿が失敗するようになっていた問題を修正しました。
  • 注釈が記入されていなかった時は、Misskeyの投稿エラーになる前に、掲示板のエラーメッセージを出し、注釈の記入を促すようになりました。

編集画面のレイアウトが崩れていたのを修正しました。

  • v1.03.8で編集画面のdivタグをh3に変更した影響で画面のレイアウトが崩れていたのを修正しました。
    h3タグをdivに戻し、管理者編集モードの時に表示されるホスト名の表示位置をその他のモードと同じ位置になるように調整しました。

変更があったファイル

  • misskey_note.inc.php
    バージョンチェックの関係で掲示板が一時的に動作しなくなるのを回避するため、このファイルを先にアップロードする事をおすすめします。
  • index.php

テンプレート

追加されたパーツ

  • template/basic/parts/footer_js.html
  • template/basic/parts/head_preload_css_js.html

これらの追加されたパーツを先にアップロードしないとエラーが発生する事があります。
変更されたテンプレートでこのファイルを読み込んでいます。

変更があったテンプレート

  • template/basic/parts/edit_form_res_loop.html
  • template/basic/admin_in.html
  • template/basic/aikotoba.html
  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/before_misskey_note.html
  • template/basic/catalog.html
  • template/basic/continue.html
  • template/basic/edit_form.html
  • template/basic/main.html
  • template/basic/misskey_note_edit_form.html
  • template/basic/misskey_server_selection.html
  • template/basic/paint_com.html
  • template/basic/res.html
  • template/basic/res_catalog.html
  • template/basic/search.html
  • template/basic/set_share_server.html

template/basic/ ディレクトリを上書きアップデートすればテンプレートの更新が終わるので一つずつアップロードする必要はありません。
問題は、テンプレートをカスタマイズしている場合です。

<!-- head preload 共通パーツ -->
<link rel="preload" as="style" href="<?=h($skindir)?>icomoon/style.css?<?=h($petit_lot)?>" onload="this.rel='stylesheet'">
<link rel="preload" as="style" href="lib/luminous/luminous-basic.min.css" onload="this.rel='stylesheet'">
<link rel="preload" as="script" href="lib/luminous/luminous.min.js">
<link rel="preload" as="script" href="lib/<?=h(JQUERY)?>">
<link rel="preload" as="script" href="<?=h($skindir)?>js/common.js?<?=h($petit_lot)?>">

を、
<?php include __DIR__.'/parts/head_preload_css_js.html';?>
に置換して、

<script src="lib/<?=h(JQUERY)?>"></script>
<script src="lib/luminous/luminous.min.js"></script>
<script src="<?=h($skindir)?>js/common.js?<?=h($petit_lot)?>"></script>


<?php include __DIR__.'/parts/footer_js.html';?>
に置換する方法もあります。
これらは、今後の変更を行いやすくするためのテンプレートの更新ですから、JavaScriptの記述の変更が必要になるまで、今のテンプレートをそのまま使うという選択肢もあります。
テンプレートをカスタマイズしていない場合は、 template/basic/ ディレクトリを上書きアップデートするだけでテンプレートの更新作業が終わります。

2023/12/11 v1.03.10

横幅が928pxを超えるNEOの動画が右よりに表示される問題を修正しました。

.container(コンテナ)の横幅928pxより横長の動画を再生すると、左には余白があるのにも関わらず、画面の右方向に動画がはみだす状態になっていました。
横幅928px以下の場合は問題ありませんが、例えば横幅が1800pxで、1920pxの横幅のモニターで動画を再生すると横スクロールが発生していました。
928px以上の横幅が必要な時は、コンテナの横幅の最大幅がコンテンツの幅になるように調整しました。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/pch_view.html

2023/12/11 v1.03.9

Klecksを更新しました

変更があったファイル

  • klecks/ ディレクトリを上書きアップデート
  • index.php

2023/12/08 v1.03.8

HTMLの文法エラーを修正しました

  • HTMLの文法エラーを修正しました。
    リンクのaタグの中にブロック要素のpタグが入っていたのを修正しました。
  • HTMLの見出しのタグを追加してブラウザがメインコンテンツを検出できるようにしました。
    articleタグや、h3タグを追加して投稿された記事のHTMLの文書構造を最適化しました。
    人が観ても外観も機能も何もかわりませんが、新しくGoogle Chromeに追加された「リーディングモード」では大きく結果が異なります。
    これまではメインコンテンツは大見出しのみが検出可能でしたが、今回の更新で見出しと本文のほとんどが検出可能になりました。

スタイルシート変更箇所

  • 投稿者情報の箇所をh3の見出しのタグに変更しました。結果、そのままでは太字になりフォントサイズも大きくなってしまいます。
    見た目を同じにするために、以下の箇所を変更しています。

index.css

従来。

.imginfo_wrap {
    margin: 3px 0 10px;
}

変更後。

.imginfo_wrap {
    margin: 3px 0 10px;
	font-size: 1em;
	font-weight: normal;
}

フォントサイズを大きくしない。太字にしない設定です。

pタグによるレイアウトが文法違反だったため、spanタグに変更になりました。
それに伴い該当箇所のCSSも変更します。

従来。
.posted_image p , .catalog_image p {
変更後。
.posted_image span , .catalog_image span {

search.css

従来。
.s_posted_image p {
変更後。
.s_posted_image span {

従来。

@media screen and (max-width:610px) {

	.s_posted_image p{

変更後。

@media screen and (max-width:610px) {

	.s_posted_image span{

スタイルシートを変更していない場合は、更新されたスタイルシートを上書きアップデートするだけです。
index.phpは、バージョン番号とlot番号が変わっているだけですが、これには意味があります。
スタイルシートを先に更新してから、index.phpをアップデートすると、スタイルシートのファイル名の末尾に、lot番号のクエリが入るためスタイルシートを確実に更新する事ができます。
今回の更新の場合は、index.phpの更新を最後に行ったほうがより確実に更新できます。
スタイルシートがブラウザにキャッシュされて意図した表示にならない問題を回避できます。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/parts/before_edit_del_res_loop.html
  • template/basic/parts/catalog_images_loop.html
  • template/basic/parts/edit_form_res_loop.html
  • template/basic/parts/threads_loop.html
  • template/basic/search.html

変更があったスタイルシート

  • template/basic/index.css
  • template/basic/search.css

テンプレートをカスタマイズしていない場合、template/ディレクトリを上書きアップデートして、index.phpをアップデートするだけで更新が終わります。
スタイルシートの更新が必要です。

  • template/basic/index.css //本体用
  • template/basic/search.css //検索画面用

配色などをカスタマイズしている方は、差分エディタなどで内容を比較すれば変更箇所を容易に把握できると思います。
カスタマイズしていない場合は上書きアップデート。

2023/12/02 v1.03.6

ChickenPaintのショートカットキーを更に追加しました

指先ツールと、混色ツールのショートカットキーを追加しました。

追加されたショートカットキーの一覧

  • 「R+左クリック」キャンバスの回転
  • 「H」レイヤーの左右反転
  • 「S」薄消しゴムに切り替え
  • 「W」水彩ブラシに切り替え
  • 「A」エアブラシに切り替え
  • 「D」指先ツールに切り替え
  • 「C」混色ツールに切り替え
231125_ChickenPaint_._._.mp4

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2023/11/29 v1.03.5

PaintBBS NEOのショートカットキーAltキーのキーアップ時に、Firefoxのメニューバーの表示/非表示の動作になる問題を修正

  • Altキーのキーアップのデフォルトの動作をキャンセルしてこの問題を修正しました。
  • PaintBBS NEO+Firefox時の問題は解決できましたが、CheerpJを使って起動したしぃペインターでは、AltキーでFirefoxのメニューバーの表示/非表示の動作が発生してしまいます。
    CheerpJが起動した時点で、キーアップイベントの取得ができなくなるようです。
    Chromeではこの問題はなく、FirefoxとFirefox派生ブラウザで発生します。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/paint_neo.html

2023/11/29 v1.03.3

tegaki.js更新

  • 「Altキー」押下直後にショートカットキーが効かなくなる問題が、tegaki.jsでも発生していました。
  • ChickenPaintと同じように 「Altキー」を離した時点で「altキー」のデフォルトの動作をキャンセルする事でこの問題を解決しました。

変更があったファイル

  • app/tegaki/ ディレクトリを上書きアップデート
  • index.php

2023/11/28 v1.03.2

ChickenPaint更新。以前から存在していた、「altキー」押下直後にショートカットキー効かなくなる問題を修正しました。

  • 「R+左クリック」でキャンバスを回転するショートカットキーの動作確認中に、キャンバスが回転せずブラシツール等の描線が意図せず引かれてしまう問題に気が付きました。
    一連のショートカットキーの追加などのスクリプトの改造が原因かもしれないと疑い、調査した結果、もともとこの動作だった事がわかりました。
    しかしながら、「altキー」を押して色をスポイトそのまま、「R+左クリック」でキャンバスを回転といった処理をしたい時もあります。
    この問題の原因を探るため、「altキー」で追加している処理をすべて削除してみましたが問題は解決しませんでした。
    原因はaltキーのデフォルトの動作そのものでした。
    「altキー」を離した時点で「altキー」のデフォルトの動作をキャンセルする事でこの問題を解決する事ができました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

この間のChickenPaintの更新もご確認ください。

23/11/25 v1.02.3で、ChickenPaintのショートカットキーを追加。
その後発生したバグをv1.02.7で修正しています。

2023/11/27 v1.03.0

スレッド個別表示時にスレッドをリロードしやすくするためスレタイに固定リンクのURLをリンク

  • 個別スレッド時のスレタイへの個別スレッドの固定リンクを追加しました。
  • メインページ同様スレタイをクリックすると、その個別スレッドが表示されます。
  • 個別スレッド表示時に、スレタイをクリックするとスレッドをリロードできるようになります。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/parts/threads_loop.html

2023/11/27 v1.02.7

更新した独自仕様版のChickenPaintのバグを修正

  • ブラシツールを選択しているにも関わらずキャンバスの回転の動作のままになるバグの原因を特定しました。
    キャンバスの回転ツール選択時に「R+左クリック」でキャンバスを回転すると、キーを離したあと元のキャンバスの回転ツールが動作しなくなる事に対応するために追加したコードに問題がありました。
    キャンバスが回転したままになるコードを除去しました。
    そのコードを除去しても、キャンバスの回転ツール選択時に「R+左クリック」でキャンバスを回転したあと、キーを離すと正常動作する事を確認しました。
    「R+左クリック」への書き換えが必要なコードが残っていた事がそもそもの原因でした。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2023/11/27 v1.02.6

更新した独自仕様版のChickenPaintのバグを修正

  • Rキーでキャンバスの回転モードに入る条件を細かく設定しなおしました。
  • また、GitHubのコードスキャンで見つかったブラウザの言語を取得する処理の脆弱性を修正しました。

ChickenPaintのショートカットキーをさらに追加

  • エアブラシのショートカットキーを追加しました。

省メモリ化

  • スレッド内画像一覧カタログモードの時に、画像がある場合にのみ配列に追加して省メモリ化を実現しました。
    画像一覧の時には、コメントのみの投稿の記事は必要ないからです。
    これまでは1スレッドに100件投稿があり、画像が2枚だけの時にも100件分の配列を取得していました。
    更新後は、画像が存在する2件分のみですむようになります。

2023/11/25 v1.02.3.1

更新した独自仕様版のChickenPaintのバグを修正

  • 文法ミスが見つかりました。ChickenPaintの再度の更新をお願いします。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート

2023/11/25 v1.02.3

ChickenPaintのショートカットキーを追加

  • 動作しなくなっていたキャンバスの回転のショートカットキーを別のショートカットキーに変更して改修しました。
    キャンバスの回転の元のショートカットキーは、「altキー+スペースキー+左クリック」でした。この元のショートカットキーを動くようにしても、ブラウザの、「alt」を押したあと「スペース」でブラウザのメニューが開くため操作を間違えるとタブを閉じてしまいます。
    また、キーを2つ同時に押す必要が発生します。
    そこで、「Rキー+左クリック」にショートカットキーを変更して、「Rキー」を押している間だけ、キャンバスが回転するようにしました。
  • レイヤーの左右反転のショートカットキーを追加しました。
    「Hキー」を押すたびに、選択中のレイヤーが左右反転します。
  • ツールの切り替えのショートカットキーを2つ追加しました。「薄消しゴム(Sキー)」「水彩(W)」
    「ソフトイレーサー」の「S」。水彩=Water Colorで、「W」です。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php

2023/11/21 v1.02.2

独自仕様版のChickenPaintを更新しました。

  • Macの⌘キーのマッピングを追加しました。
    Macを持っていないのでショートカットキーが動作していたのか動作していなかったのかも解明できなかったのですが、⌘+zや、⌘+yなどのショートカットキーに関連するコードを修正しました。
    (これはあくまでも独自仕様版の問題で開発元のコードのミス等やバグ等ではありません。)
  • willReadFrequentlyオプションを使用する事を推奨する警告が表示された箇所のコードを最適化しました。
    このオプション設定を設定する事でより高速に動作するようになります。

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

改善

2023/11/16 v1.02.1

改善

  • 一定の条件を満たした時に画像のポップアップ表示がギャラリーモードに切り替わるようになりました。
    個別スレッド表示で、閲覧注意画像が存在しないか、閲覧注意画像を隠さない設定になっている時は画像のポップアップ表示がギャラリーモードに切り替わるようになりました。
    画像をタップすると前後の画像を表示するための矢印が表示され、矢印をタップする事でスレッド内の画像を順番に表示します。
    閲覧注意画像があり、閲覧注意画像を隠す設定の場合は、矢印のタップで閲覧注意画像が表示されるのは適切ではないため、画像をタップしても一枚の画像を表示するだけの従来の動作になります。

Klecks更新

  • ペイントアプリ、Klecksを更新しました。

変更があったファイル

  • app/klecks/ ディレクトリを上書きアップデート
  • index.php

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/parts/threads_loop.html

2023/11/14 v1.01.0

改善

config.phpに新規設定項目を追加しました。

//1スレッドに表示するレスの数
//返信画面では全て表示します。
//設定しないなら 0 で。

$dispres= 10; //従来の設定項目

//1スレッドに表示するレス画像の数
//表示できるレス画像の設定値を超えた時は、レスを省略します。
//1スレッドに表示するレスの数で設定した値よりも、レスの表示数が多くなる事はありません。
//返信画面では全て表示します。
//設定しないなら 0 で。

$disp_image_res= 5; //追加された設定項目

メインページではスレッドを全件表示せず、レスを省略しています。
例えば、表示するレスの数が10の場合はレスを省略した残りの10件が表示されていました。
しかしながら、画像の場合はある程度表示に負担がかかるため、一定の枚数以上のレス画像を制限したくなる事もあります。
そのために、表示できるレスの件数を少なくすると省略される件数が多くなり投稿された画像が見えなくなってしまいます。

そこで、1スレッドに表示する返信数そのものは多めに設定しておいて、画像付きレスの数でも制限できるようにしました。
1スレッドに表示するレスの数が10で、画像付きレスが5件に設定されている場合は5件以内に収まるようにレスを省略します。
また、返信数全体が10件を超えた時にもレスを省略します。

$disp_image_res= 0と設定すれば、従来と同じ動作になります。

変更があったファイル

  • index.php
  • config.php
    (新規設定項目が必要無い方はすでに設定ずみのconfig.phpをそのままご利用ください。)

変更があったテンプレート

  • template/basic/parts/threads_loop.html

2023/11/12 v1.00.5

改善

  • マイクロ秒を秒に戻す計算が何箇所もあるため処理を関数化して可読性とメンテナンス性を向上させました。
    また、ループ外に出すことができる関数はループ外に出し無駄な計算が発生しないようにしました。
  • 同じコメントチェックを同じIPアドレスの場合から同じIDの場合に変更。
  • 管理者による閲覧注意への切り替えの時にIDが変わらないようにしました。
    これまでは閲覧注意への切り替えのみでもIDが管理者のものに切り替わっていました。
  • 必要の無いコードを整理しました。
  • 編集モード時のres.htmlのコメント欄の開閉の制御をindex.phpにまとめました。

変更があったファイル

  • index.php
  • functions.php

変更があったテンプレート

  • template/basic/res.html
    (コードを整理しただけなので、変更しても変更しなくても動作も表示も同じです)

2023/11/06 v0.99.6

Exifチェックの時にGDによる画像の生成に失敗した時のエラー処理を追加しました。
これまでは、失敗した時に致命的エラーが発生していました。 
といっても、その致命的エラーは実際の運用ではまだ発生した事がなく、さらに、ユーザーにとっては画像のアップロードをしようとしても反応が何もないだけで、再度投稿ボタンを押せば投稿に成功する状態でした。
つまり、念には念を入れたエラー処理になります。

変更があったファイル

  • index.php
  • functions.php

2023/11/06 v0.99.5

お絵かきアプリから送信されたPNG画像が破損していたら、お絵かき画面から移動せず、スクリーンショットの撮影を促すエラーメッセージを出すようになりました。

image

ImageCreateFromPNG()で画像を生成する事ができるかどうかチェックする事で、画像が破損しているかどうかを検出する事に成功しました。
これにより、画像が破損した状態で投稿され作品が失われる確率をさげる事ができました。
psdファイルやchiファイル等アプリ固有ファイルのチェックは含まれていません。固有ファイルが破損して、同時に画像を上のレイヤーで隠している場合は、画像の復旧ができませんのでご了承ください。
破損状況を確認する事ができたのはPNG形式の画像のみです。

変更があったファイル

  • index.php
  • save.inc.php

2023/11/06 v0.99.3

URL入力欄を使用するしないを設定できるようになりました

//URL入力欄を使用する
//管理者は設定に関わらずURL入力欄を使用できます
// する: true しない: false

$use_url_input_field = true;
// $use_url_input_field = false;

config.phpに上記設定項目を追加しました。
本文へのURLの書き込みを禁止して、URL入力欄を使用しない設定にするとURLを書き込む事ができなくなります。
これにより、URLを貼り付ける事を目的としたスパムはURLを貼る事ができなくなるため、来なくなる事が予想できます。
URL入力欄を使用しない設定にすると、URL入力欄が見えなくなるだけでなく、Chromeの開発者ツール等でフォームを改変して投稿する事もできなくなります。
管理者は設定にかかわらず、URL入力欄を使用可能です。
管理者投稿モードログインすると、URL入力欄が表示され、URLの投稿が可能になります。

コード整理

入力されたパスワードが管理者パスワードかどうか確認する処理を関数化して可読性を高めglobal変数$admin_passを削減しました。

変更があったファイル

  • index.php
  • functions.php
  • config.php
    (URL入力欄を使わない設定にする必要がない場合は、config.phpの更新は不要です。設定ずみのconfig.phpをそのままお使いください。)

変更があったテンプレート

  • template/basic/edit_form.html
  • template/basic/main.html
  • template/basic/res.html
    (URL入力欄を使わない設定にする必要がない場合は、これらのテンプレートの更新は不要です。)

2023/11/04 v0.99.0

config.phpの設定項目の整理

//トップページの入力フォームを使用する
// しない: false でお絵かきボタンのみの表示になります。
// する: true しない: false

$use_top_form = true;
// $use_top_form = false;

この設定項目は廃止されました。
config.phpに設定項目が残っていても問題ありませんが、設定を切り替えても表示に変更はありません。

理由。
これまでも、画像アップロード機能も、コメントのみの新規投稿も許可しない場合は、トップの入力フォームは表示されなかったからです。
画像のアップロード機能を使用しない、コメントのみの新規投稿も許可しない場合は、トップの入力フォームが表示されていても何も投稿できないためフォームを表示しない動作になっていました。
そのため、以下の設定項目に説明文を追加しました。
たんに説明文を追加しただけですので、設定ずみのconfig.phpがある場合は、config.phpを更新する必要はありません。

$use_top_form = true;
の設定項目が無効化されている事だけ覚えておいていただけたらと思います。

以下は設定の説明文に変更があった箇所です。

//添付画像アップロード機能を使う
//管理者投稿モード(日記)でログインしている時は使わないに設定しても、ファイルアップロードが可能です。
//使わないに設定すると、掲示板トップやレス画面からの画像アップロードを使用しない設定になります。
//コメントのみの新規投稿を許可しない、そして画像アップロードも機能も使わない設定の場合はトップの入力フォームが表示されなくなります。
// 使う:true 使わない:false

$use_upload = true;
// $use_upload = false;

//コメントのみの新規投稿を許可する、しない。
//しない: false で、スレ立てに画像が必須になります。
//コメントのみの新規投稿を許可しない、そして画像アップロードも機能も使わない設定の場合はトップの入力フォームが表示されなくなります。
// する: true しない: false

// $allow_comments_only = true;
$allow_comments_only = false;

ペイントアプリを更新しました。

  • klecksを更新しました。
  • 独自仕様版のChickenPaintを更新しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/klecks/ ディレクトリを上書きアップデート
  • index.php
  • config.php
    ($use_top_form = true; の設定項目が無効化されただけで他は説明分の追加のみです。設定ずみのconfig.phpをそのままお使いください)

2023/11/02 v0.98.12

バグ修正

//添付画像アップロード機能を使う
//管理者投稿モード(日記)でログインしている時は使わないに設定しても、ファイルアップロードが可能です。
//使わないに設定すると、掲示板トップやレス画面からの画像アップロードを使用しない設定になります。
// 使う:true 使わない:false

// $use_upload = true;
$use_upload = false;

で、画像アップロードを使わない設定にすると、「投稿する」ボタンが表示されなくなるバグを修正しました。
このバグはv0.83.3で発生し、v0.98.12で修正されました。

変更があったファイル

  • index.php
  • template/basic/res.html

2023/11/02 v0.98.11

コード整理

  • コードを整理して可読性を向上させました。

変更があったファイル

  • functions.php
  • index.php

2023/10/29 v0.98.10

Klecks更新

Klecksを更新しました。

バグ修正

  • 拡張子が.png.jpgで、中身が画像ではなかった時に、画像処理の関数でエラーが発生していたのを修正しました。
    $_FILES['imgfile']['type']では拡張子による画像形式の判別しかできないため、mime-content-type()に置き換えました。
    また関連するコードを整理して可読性を向上させました。

改善

  • JPEG画像が回転していたり、位置情報がついている事が判明した時の処理が改善されました。
    これまでは、回転または位置情報を検出した時には同じサイズのJPEG画像を出力していました。
    今回の更新で$max_pxで指定した値(例えば1024px)に縮小されるようになりました。
    これにより、幅と高さが、$max_pxで指定した値を超える時の二度目の画像処理を行わなくてもすむようになります。
    JPEG画像を作成して、さらにJPEG画像を作成する処理の無駄と画質の劣化どちらも解決します。

変更があったファイル

  • app/klecks/ ディレクトリを上書きアップデート
  • connect_misskey_api.php
  • functions.php
  • index.php

2023/10/29 v0.98.5

アップロード画像のExifに含まれる回転情報と位置情報を検知して処理

  • デジカメやスマホで撮影したjpeg画像のExif情報から、画像の回転を検出して向きを修正した画像を自動的に生成してアップロードできるようになりました。
    スマホ撮影の縦長の画像の多くは横長の画像+カメラの向きの情報で縦長に表示されています。
    その向きの情報を元に、縦向きに表示されている画像が縦長になるように新たに画像を生成します。
  • スマホ・デジカメ撮影の写真には位置情報が入っている事があるため、位置情報が存在している事が検出された場合は、画像を新たに生成しなおす事で位置情報を削除します。

変更があったファイル

  • index.php
  • functions.php

2023/10/26 v0.97.2

バグ修正

アップロード画像等、ペイントタイムが存在しない画像をMisskeyのAPIを使ってMisskeyに投稿する時にペイントタイム関連の配列のキーが未定義になりエラーが発生していたのを修正しました。

変更があったファイル

  • index.php
  • misskey_note.inc.php

2023/10/25 v0.97.1

キャンバスサイズの増減値を設定できるようになりました。
これまでは50px固定でした。

//プルダウンメニューのキャンバスサイズの増減値

$step_of_canvas_size = 50;

config.phpのどこでもいいので上記設定を追加すれば、変更できるようになります。
設定項目が存在しない時はこれまで通り50px固定になります。

改善

  • テンプレートが改ざんされた場合でも管理者パスワードが漏洩しないようにスクリプト本体で、nullをセットしてからHTMLに渡すようにしました。
  • 使用していないコードを整理しました。

テンプレートの互換性に関する注意

index.phpで処理していたペイントアプリの選択と、キャンバスサイズの選択のプルダウンメニューに必要な変数の処理をテンプレートに移動しました。
そのため、index.phpをv0.97.1にアップデートする場合は、

  • template/basic/parts/select_apps.html
  • template/basic/parts/select_canvas_size.html
    また、それを利用する、
  • template/basic/main.html
  • template/basic/res.html
    を最新版に更新する必要があります。
    古いテンプレートを利用されている方は、差分エディタ等で比較して修正するか、template/ディレクトリごとアップデートするなどの検討をお願いします。

テンプレートのバージョンが古い場合は、お絵かきアプリと、キャンバスサイズの選択ができなくなります。

変更があったファイル

  • index.php
  • functions.php
  • misskey_note.inc.php
  • config.php
    (新規設定項目が必要ない方は設定ずみのconfig.phpをそのままご利用ください。更新する必要はありません。)

変更があったテンプレート

  • template/basic/parts/select_apps.html
  • template/basic/parts/select_canvas_size.html

2023/10/24 v0.96.8

お絵かきアプリのデフォルトサイズを設定できるようになりました

//お絵かきできる幅と高さのデフォルトサイズ
//前回使用時の値がCookieに存在する時は、Cookieの値が使用されます。

$pdef_w = 300;//幅
$pdef_h = 300;//高さ

config.phpのどの場所でも構いませんので、上記設定項目を追加すれば、Cookieが存在しない時のお絵かきアプリの幅と高さのデフォルト値を設定できるようになります。
前回使用時のCookieが残っている時は、Cookieの値がキャンバスサイズのデフォルト値になります。

お絵かき画面のJavaScriptのコードを整理

関数名が必要ない箇所をアロー関数に置き換えました。

変更があったファイル

  • index.php
  • config.php
    (追加された設定項目が必要ない場合は、すでに設定ずみのconfig.phpをご利用ください。追加された設定項目が存在しない場合は従来と同じ動作になります。)

変更があったテンプレート

  • template/basic/paint_chi.html
  • template/basic/paint_tegaki.html

2023/10/22 v0.96.6

  • Klecksを更新しました。
  • アップロード画像の画像差し換え時のファイルサイズの最終チェックが入っていなかったのを修正しました。
  • pngからjpegに変換される閾値のお絵かきとアップロードの2種類の設定を厳密にお絵かきとアップロードで別の動作になるように修正しました。
  • pngをjpegに変換してみてファイル容量が小さくなっていたら元のファイルを上書きする処理を関数化しました。
    ごくわずかですが、コードの行数を削減する事ができました。

変更があったファイル

  • app/klecks/ ディレクトリを上書きアップデート
  • index.php
  • functions.php

2023/10/21 v0.96.1

ペイントアプリの幅と高さの最小サイズが設定できるようになりました

  • ペイントアプリの幅と高さの最小値はこれまで300px固定でした。
    今回の更新で最低値をconfig.phpで設定できるようになりました。
    50x50pxのキャンバスも選択可能になります。
//お絵かきできる幅と高さの最小サイズ
$pmin_w = 300;//幅
$pmin_h = 300;//高さ

config.phpのどの箇所でも構いませんので、上記設定項目を追加すればアプリの幅と高さの最低値を設定できるようになります。

  • 幅300px以下の時にPaintBBS NEOのレイアウトがくずれる問題を修正しました。
    PaintBBS NEOのCSSを独自にカスタマイズして、300px以下の横幅の場合でも操作が可能になるように調整しました。

20231021_NEOキャンバスサイズ50px

  • メール通知機能のコードを整理しました。
  • 通知されるメールの記事のURLに投稿時刻のIDを追加して該当スレッドの記事の箇所までスクロールする機能を追加しました。
    (続きを描く等で画像が入れ替わってしまうとIDが存在しなくなるため、スレッドの一番上が表示されてしまいますが、仕様です。)

変更があったファイル

  • app/neo/ ディレクトリを上書きアップデート
  • index.php
  • noticemail.inc
  • config.php
    (新規設定項目が必要ない方はconfig.phpを更新する必要はありません。設定項目が存在しない場合の最小値は従来と同じ300pxになります。)

変更があったテンプレート

  • template/basic/index.css
  • template/basic/js/common.js
  • template/basic/paint_neo.html
  • template/basic/parts/select_canvas_size.html
    (キャンバスサイズ関連の変更のみです。それらの必要が無い方はテンプレートを更新する必要はありません。
    テンプレートをカスタマイズしていない場合は、template/ ディレクトリを上書きアップデートすれば更新が簡単に終わります。

2023/10/19 v0.95.5

バグ修正

投稿を通知するメール本文の記事へのリンクのURLが正しく設定されていなかったのを修正しました。
記事の正しいURLは、
/?resno=5
のような形式ですが該当箇所が
/?res=5
のような誤った形式になっていました。

ChickenPaintを更新しました

独自修正版のChickenPaintを更新しました。
GitHubのDependabotによる依存関係の脆弱性の修正のプルリクエストをマージしました。
ビルドしたchickenpaint.jsにも修正が反映されています。

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート

2023/10/17 v0.95.3

バグ修正

  • v0.93.2以前のバージョンと表示が同じになるように調整。
    レス返信画面の時のタイトルにはリンクが入らないようにしました。

コード整理

  • JavaScriptのコードを整理しました。
    短くできる箇所は短く。内容をよりわかりやすいものに。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/parts/threads_loop.html

2023/10/15 v0.95.2

mainとresのテンプレートのコードを整理しました。
mainとresのテンプレートの両方で使用されている記事表示の長い繰り返しの箇所を外部化しました。template/basic/parts/threads_loop.htmlに共通箇所をまとめました。
記事の題名や、記事本文に関連する箇所を変更する時は、template/basic/parts/threads_loop.htmlを変更するだけで、通常表示とレス画面の両方に反映されます。
ファイル数は増えましたが、コードの行数は200行以上減り保守性が向上しました。

変更があったファイル

  • index.php
  • thumbnail_gd.php

変更があったテンプレート

  • template/basic/main.html
  • template/basic/res.html

追加されたテンプレート

  • template/basic/parts/threads_loop.html

テンプレートをカスタマイズしていないのであれば、
template/ディレクトリを上書きアップデートするだけでテンプレートの更新は終わります。

2023/10/11 v0.93.2

ChickenPaintを更新しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート

2023/10/09 v0.93.1

バグ修正

  • カタログモード時と検索モードの時にページネーションの、「First」と「Last」をクリックすると、通常モードになるバグを修正しました。

改善

  • 長い記述のアプリのキャバスサイズ設定のテンプレートを外部化して、通常表示とレス画面の共通パーツとして使えるようにしました。

ペイントアプリを更新

  • klecksを更新しました。
  • ChickenPaintを更新しました。

変更があったファイル

  • index.php
  • app/chickenpaint/ ディレクトリを上書きアップデート
  • app/klecks/ ディレクトリを上書きアップデート

変更があったテンプレート

  • template/basic/main.html
  • template/basic/paint_neo.html
  • template/basic/parts/paging.html
  • template/basic/pch_view.html
  • template/basic/res.html

追加されたテンプレート

  • template/basic/parts/select_canvas_size.html

バグが見つかった、template/basic/parts/paging.htmlは更新しておいたほうが良いのですが、そのほかのテンプレートは更新しなくても問題なく動作します。
テンプレートをカスタマイズしていない場合は、template/ディレクトリを上書きアップデートすればテンプレートの更新が終わります。

2023/10/05 v0.93.0

独自仕様版のtegaki.jsを更新しました

独自仕様版のtegaki.jsを更新しました。
ブラシサイズや不透明度の数値による直接入力を改善しました。
キーボードの上矢印キーで数値が大きくなり、下矢印キーで数値が小さくなります。

検索ボックスを最適化

検索ボックスのtype="text"type="search"に修正しました。
参考 - HTML: ハイパーテキストマークアップ言語 | MDN

Google Chromeでは、検索ボックスに「X」マークが表示され、クリックすると検索語句をクリアできます。
検索語句を変更して検索を続ける時に役立ちます。
ボックスの指定で、100文字以上の検索語句を入力できなくしました。
受信するPHPのサーバ側の処理にも検索語句のバイト数の制限を追加しました。

管理者ログイン画面のHTMLのエラーと見た目の修正

管理者ログインページの左側のリリースの最新版へのリンクバナーと、コピーライト表記のリンクの横並びの位置がずれていたのを修正しました。
また、divタグの数が合わなくてHTMLの文法エラーになっていたのを修正しました。

CSS修正のお願い

CSSをカスタマイズしている方にCSSの書き直しをお願いするのは心苦しいのですが、type="text"だった検索フォームが、type="search"に変更になった関係で、下記のCSSの書き直し、あるいは追加が必要になりました。

.searchform input[type="search"] {
	height: 1.9em;
	width: 180px;
	border: 1px solid #888;
	vertical-align: middle;
}

この部分をtemplate/basic/search.cssのどこでもいいので貼り付けていただければ、新しく書き直した検索ボックスの見た目が意図どおりになります。
もし、CSSを変更したくない場合は、template/basic/search.htmlを更新しなければ以前のままになりますから、CSSの更新も不要です。
CSSをカスタマイズしていない場合は、単にtemplate/basic/search.cssを上書きアップデートします。

変更があったファイル

  • app/tegaki/ ディレクトリを上書きアップデート
  • functions.php
  • index.php

変更があったテンプレート

  • template/basic/admin_in.html
  • template/basic/search.css
  • template/basic/search.html

2023/09/30 v0.92.8

バグ修正

ChickenPaintの固有ファイル、.chiファイルのmime typeチェックが抜けていたのを修正しました。
不正なmime typeの場合は、これまでの状態であってもtemp/ディレクトリより先へのファイルの移動はブロックされていましたが、temp/ディレクトリには不正なファイルを受信できる状態でした。

変更があったファイル

  • index.php
  • save.inc.php

2023/09/30 v0.92.6

バグ修正

個別スレッド下段の前後のスレッドのサムネイル画像がきちんと6個表示されるように再調整しました。

変更があったファイル

  • index.php

2023/09/30 v0.92.5

個別スレッド表示時のメモリ消費量を大幅に削減

メモリ消費量を最大で36%削減する事に成功しました。(実測値)
これまでは最も古いスレッドを表示する時に前後のスレッドのサムネイルの表示するのために全体ログ(alllog.log)をすべて読み込んでいました。
5000スレッド分の投稿があれば、5000行読み込む事になり、メモリを圧迫していました。
実際に運用している掲示板では、最初のスレッドのメモリ消費量が1.6MBで、最後のスレッドを表示するときには2.6MB消費する形になっていました。
今回の更新で、どの位置のスレッドを表示する場合でも、最大で40行分のみ取得するようになり、どのスレッドを表示しても、1.6MB程度のメモリ消費量ですむようになりました。

アップロードペイント機能の改善

image

お絵かきアプリ固有形式ファイル「pch,psd,chi」に加え、画像ファイルのキャンバスへの読み込みもできるようになりました。
これにより、アップロードした画像から続きを描く事ができるようになります。
通常の画像アップロードのフォームからアップロードされた画像からはこれまで通り続きを描く事ができません。
この機能を追加したのは、合作の時に、別バージョンができてしまい掲示板の管理者が全員の分の画像をクリスタなどのペイントソフトで合成してアップロードする必要にせまられたからです。
この場合はアップロードした画像から別の参加者が続きを描いて合作できるようにする必要があります。

この機能は管理者投稿モード限定機能です。

通常は、アップロードした画像なのか、アプレットを使って描いた画像なのかがわかるようにしておきたいため、単に画像アップロードした場合はアプレットで続きを描く事ができないようにしてあります。

2023/09/21 v0.89.0

  • 独自仕様版のChickenPaintのデータ送信処理を古いxhrからfetch APIに変更しました。
  • 「Web Style by BASIC」の表示を「Template BASIC」に変更しました。
  • 新規投稿時の投稿完了後も、個別スレッド表示になりました。
    これまでは、新規投稿の投稿完了後には掲示板トップが表示され、返信時の投稿完了後には個別スレッドが表示されていました。

変更があったファイル

  • index.php
  • app/chickenpaint/js/chickenpaint.min.js.map

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/parts/copyright.html

2023/09/13 v0.88.0.2

前後ナビゲーションと、ページネーションのパーツを分離しました。
これにより、前後ナビゲーションを上段にも追加する場合は、prev_next.htmlをincludeするだけでよくなりました。

変更があったテンプレート

  • template/basic/catalog.html
  • template/basic/main.html
  • template/basic/search.html
  • template/basic/parts/paging.html
  • template/basic/parts/prev_next.html

2023/09/13 v0.88.0.1

変更があったテンプレート

  • template/basic/res.html
    topをTopに変更して、デザインを統一しました。

2023/09/13 v0.88.0

改善

  • ページング処理の、最初と最後のリンクの出現条件を修正しました。これまでは、0番目の記事と「start」がどちらも表示されていました。「end」も同様です。
  • 「start」を「First」に変更しました。
  • 「end」を「Last」に変更しました。
  • 長いページング処理がmain、catalog、searchそれぞれに記述されていたのを外部化しました。これにより、ページング処理に変更を加える時は、ひとつのファイルを変更するだけですむようになりました。

変更があったファイル

  • index.php
  • functions.php

変更があったテンプレート

  • template/basic/catalog.html
  • template/basic/main.html
  • template/basic/search.html

追加されたテンプレート

  • template/basic/parts/paging.html

2023/09/09 v0.87.8

バグ修正

config.php

//すべての投稿を拒否する
$deny_all_posts = true;

に設定しても、管理者投稿モードでログインするとレスフォームが開いてしまう軽微なバグを修正しました。
レスフォームは開きますが、すべての投稿を拒否する設定の場合は、意図通り投稿に失敗します。
今回の修正で、すべての投稿を拒否する設定の時には、管理者投稿モードでログインしてもレスフォームが開かなくなりました。

変更があったファイル

  • index.php
  • functions.php

2023/08/26 v0.87.7

バグ修正

PaintBBS NEOと、Klecks、Tegakiからのデータに非同期通信のヘッダが付いていない時のエラーメッセージ「拒絶されました。」がアラートに正しく表示されなくなっていたのを修正しました。

改善

表示に合言葉が必要に設定した時の合言葉入力後の動作を改善。
合言葉入力時のスレッドまたはページが表示されるようになりました。
これまでは、掲示板のトップページが表示されるのみでした。

変更があったファイル

  • index.php
  • functions.php
  • save.inc.php

変更があったテンプレート

  • template/basic/aikotoba.html
  • template/basic/paint_neo.html
  • template/basic/parts/copyright.html

2023/08/18 v0.87.5

細部の調整

  • save.inc.php
    エラーメッセージのHTML特殊文字をエスケープする処理を追加しました。
  • functions.php
    非同期通信で表示するエラーメッセージのContent-Typeがtext/plainになるようにheader()関数で指定しました。

変更があったファイル

  • index.php
  • functions.php
  • save.inc.php

2023/08/16 v0.87.3

バグ修正

動画を表示しない設定で続きを描くと、続きを描くリンクがでなくなる大きなバグを修正

  • PaintBBS NEOの続きを描く画面で「動画を表示しない」設定で続きを描くと、「続きを描く」リンクがでなくなるバグを修正しました。
  • このバグは、2023年6月28日に更新したv0.78.9で発生し、v0.87.0で修正されました。

改善

お絵かきアプリからの画像の受信ファイルの統一

4種類のお絵かきアプリからの画像とレイヤー情報のデータを3種類の受信ファイルで受信する方式を見直しました。
PHPの拡張子を非表示にしてリダイレクトする.htaccessを使用しているサーバでも動作するようにしました。

  • save.php
  • saveklecks.php
  • saveneo.php

を廃止して、

  • save.inc.php

に統一しました。
さらに、save.inc.phpは直接アクセスするのではなく、Petit Note本体のindex.phpに読み込んで使います。
これにより、拡張子を省略した、
"./?mode=saveimage&tool=neo"のようなパスでお絵かきアプリからのデータ受信ができるようになりました。
.htaccessでPHPの拡張子がある場合はリダイレクトする設定になっていても、受信できるようになりました。
また同じ記述の繰り返しのある箇所をひとつのファイルに統合する事によりメンテナンスも容易になりました。

変更があったファイル

  • index.php
  • functions.php

追加されたファイル

  • save.inc.php

削除されたファイル

  • save.php
  • saveklecks.php
  • saveneo.php

不要になったファイルですが、サーバ上には残しておいたほうがいいかもしれません。
ログファイルのような復旧不可能なファイルを誤って削除する可能性があるからです。

変更があったテンプレート

  • template/basic/paint_chi.html
  • template/basic/paint_klecks.html
  • template/basic/paint_neo.html
  • template/basic/paint_tegaki.html

お絵かきアプリからのデータを受信するファイルのパスを変更しています。
今回の更新を有効にするには上記HTMLファイルとセットで更新する必要があります。

2023/08/16 v0.86.6

ChickenPaint独自カスタマイズ版を更新

  • カラーセットをPCから読み込みできなくなっていたのを修正しました。

変更があったファイル

  • app/chickenpaint/ ディレクトリを上書きアップデート
  • index.php
  • save.php
  • saveklecks.php
  • saveneo.php

2023/08/13 v0.86.5

  • スレッド内のコメントをコメントの新着順に並び替えるオプションを追加しました。
  • 日記モードなどで利用しているケースで、新しい投稿を上に表示したい時に使います。
// スレッド内のコメントを新着順に並び替える 
// 初期値 false

// $sort_comments_by_newest = true;
$sort_comments_by_newest = false;

$sort_comments_by_newest = true;
に設定すると、スレッド内のコメントを新着順に並える事ができます。

変更があったファイル

  • index.php
  • config.php
    (新規設定項目が必要ではない場合は、更新の必要はなく、設定項目が存在しない時は従来と同じ表示になります。)

変更があったテンプレート

  • template/basic/main.html
  • template/basic/parts/catalog_images_loop.html
  • template/basic/res.html

2023/08/12 v0.86.3.2

  • 編集モードの時にコメント欄が表示されたままになっていたのを修正しました。
  • 閲覧注意の設定ありで、合言葉の入力も必要な時に入力項目が近くなりすぎていたのを修正しました。

変更があったテンプレート

  • template/basic/index.css
  • template/basic/res.html
    (自分の環境では問題がでていない人は今回のこの更新は無視して大丈夫です。見た目の問題です。)

2023/08/11 v0.86.3.1

  • Misskey投稿時の本文の連続した空行を1行に。

変更があったファイル

  • connect_misskey_api.php

2023/08/10 v0.86.3

  • 半角スペース区切りだったMisskeyに投稿する情報を、改行区切りに変更しました。
  • ペイントボタンの表記を「PAINT」から「Paint」に変更しました。
  • ペイントボタンの横幅の余白を調整しました。

変更があったファイル

  • connect_misskey_api.php
  • index.php

変更があったテンプレート

  • template/basic/index.css
  • template/basic/main.html
  • template/basic/res.html

2023/08/09 v0.86.2

  • Misskeyへの投稿時のアプリの認証失敗時にエラーメッセージが表示されずPHPのエラーになるケースがあったのを修正しました。
  • 指定経過日数を過ぎている閉じたスレッドを管理者モードで編集したりMisskeyに投稿する時に、別の画面でログアウトしても、操作可能であるかのような画面のまま表示される問題を修正しました。
    たとえばパスワード入力画面が表示されているにも関わらず、パスワードが一致しても「失敗しました」というエラーがでるケースがありました。
    今回の修正で、「このスレッドは閉じられています」というエラーメッセージが表示されるようになりました。
  • ユーザー削除モードかどうかを判定する処理を関数化してコードが簡潔になるようにしました。
  • 繰り返し使用される同じ処理のテンプレートのコードを外部化して共通のパーツにしました。

変更があったファイル

  • index.php
  • functions.php
  • connect_misskey_api.php
  • misskey_note.inc.php

変更があったテンプレート

  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/before_misskey_note.html
  • template/basic/edit_form.html
  • template/basic/misskey_note_edit_form.html
  • template/basic/res.html
  • template/basic/index.css

変更があったテンプレートのパーツディレクトリ

  • template/basic/parts/before_edit_del_res_loop.html
  • template/basic/parts/edit_form_res_loop.html

2023/08/07 v0.85.8

Klecks更新

非表示レイヤーの色がスポイトされるバグが修正されています。

Paint Timeの非表示オプション

Misskeyへのノートの時と、投稿時に描画時間を表示するしないを選択できるようにしました。
ただし投稿時の描画時間表示オフは掲示板によっては歓迎されない可能性があるためデフォルト設定ではオフになっています。 
デフォルト設定はオフですが、管理者は描画時間を表示しないオプションを選択できるようにしました。
これは、pchやpsdをアップロードしてキャンバスに読み込んで投稿すると、描画時間が5秒などになるためで、それは実際の作画時間ではないからです。そのような場合は描画時間をオフにしたほうが混乱を招かないでしょう。

バグの修正

paint_com.htmlに書きかけのJavaScriptが残っていました。
未定義の関数を呼び出そうとしてConsoleエラーになっていました。
幸い投稿には支障が無いようですが、修正しました。

変更があったファイル

  • app/klecks/ ディレクトリを上書きアップデート
  • config.php (新規設定項目が必要ない場合は変更の必要はありません)
  • functions.php
  • index.php
  • misskey_note.inc.php

変更があったテンプレート

  • template/basic/index.css
  • template/basic/misskey_note_edit_form.html
  • template/basic/paint_com.html
  • template/basic/paint_klecks.html

2023/08/04 v0.83.9

Klecks更新

レイヤーの表示/非表示が簡単になりました。

これまでは、レイヤーを非表示にするにはレイヤーの不透明度のスライダーを動かして不透明度を0%にする必要がありました。
今回の更新で不透明度の設定を維持したまま、レイヤーの表示/非表示をチェックボックスで切り替える事ができるようになりました。

Tegakiの翻訳

消しゴム使用時の、「Tip」が「先端」に翻訳されるようになりました。

テンプレートの調整

Misskeyノートのリンクが表示される条件がメイン画面とレス画面で統一されていなかったため、調整しました。
編集モードの時にはMisskeyノートのリンクを表示しないようにしました。SNS共有リンクと同じ条件で表示される形になりました。
スレッド表示のカタログモードのタイトルタグに、記事の表題と作者名が入るようになりました。
スレッドの個別表示の時と同じタイトルが入るようになりました。

変更があったファイル

  • index.php

変更があったお絵かきアプリ

  • tegaki/ ディレクトリを上書きアップデート
  • klecks/ ディレクトリを上書きアップデート

変更があったテンプレート

  • res.html
  • main.html
  • res_catalog.html (タイトルタグにres.htmlと同じように題名、作者名が入るようになりました。

Misskeyノートのリンクの表示が編集モードの時にも表示されていたため、テンプレートを調整しました。
編集モードの時には、Misskeyノートのリンクを出しません。
日記モードの時には、管理者がログインした状態の時のみMisskey連動リンクやボタンが表示されます。
今回のテンプレートの更新は、細部の変更です。
テンプレートの更新は必須ではありません。

2023/07/28 v0.83.8

  • Misskey投稿時に追加する記事のURLに#画像のタイムスタンプ形式のIDを追加。リンクを開いた時に該当の画像がスレッドの内のどこにあるのか探さなくてもよくなりました。

変更があったファイル

  • index.php
  • connect_misskey_api.php

2023/07/27 v0.83.7

バグ修正とセキュリティ強化

変更があったファイル

  • index.php
  • connect_misskey_api.php
  • misskey_note.inc.php

2023/07/26 v0.83.6

Misskeyのアプリ認証が完了した後の同一セッションでのMisskeyへノートの時はアプリの認証をスキップ

一度アプリを認証して認証したトークンを取得ずみであるにも関わらず、その後もMisskeyへのノートのたびにアプリを再度認証しなければならないのは不便です。またMisskeyの設定画面のAPIトークンの管理画面を開くと、認証した数のトークンの一覧がでてきてしまいます。
Petit Noteはブラウザを閉じるとセッションが終了するアプリなので、ブラウザを閉じる前までが前提になりますが、同一セッションの場合はアプリを再認証しないで発行ずみのトークンを使えるようにしました。
すでにトークンを取得ずみの時はMisskeyのサーバ一覧からサーバを選んでノートボタンを押すと、少し待ったあと投稿の完了画面に切り替わります。

変更があったファイル

  • index.php
  • connect_misskey_api.php
  • misskey_note.inc.php

2023/07/25 v0.83.5

Misskeyへのノートがさらに簡単になりました。

v0.82.5で「編集」メニューから「Misskeyにノート」するボタンを追加しました。
その機能に加え、スレッドの画像一覧からもMisskeyにノートする事ができるようになりました。

image

MisskeyのCW機能に対応しました

MisskeyにはCW機能があります。
用語集 | Misskey Hub

230725_Misskey_cw

ネタバレありの時や、発言内容がNSFWの時にコメントや添付ファイル等のコンテンツを隠す機能です。
コンテンツを隠した上で「注釈」を追加します。これにより注釈を読んだ上で内容を開くかどうかを判断する事ができます。
その機能に対応するため「内容を隠す」にチェックすると表示される「CW 注釈」のテキストエリアを追加しました。

個別スレッド用カタログモードを追加

1スレッドに100件あるいはもっとたくさんの画像が投稿されるケースがあります。
従来のカタログモードは、スレッドの一番上の画像の一覧を表示して、画像をタップするとスレッドが表示されます。
今回追加したカタログモードは、そのスレッドに投稿されている画像の一覧を表示します。
タップすると、スレッド内のその画像の位置に移動します。

230725_Misskey_スレッド単位のカタログ表示

変更があったファイル

  • index.php
  • connect_misskey_api.php
  • functions.php
  • misskey_note.inc.php

変更があったテンプレート

  • template/basic/index.css

  • template/basic/parts/before_edit_del_res_loop.html

  • template/basic/parts/catalog_images_loop.html

  • template/basic/before_misskey_note.html

  • template/basic/catalog.html

  • template/basic/edit_form.html

  • template/basic/main.html

  • template/basic/misskey_note_edit_form.html

  • template/basic/misskey_success.html

  • template/basic/res.html

  • template/basic/res_catalog.html

  • template/ ディレクトリをまるごと上書きすれば作業がすぐに終わります。

2023/07/23 v0.82.5

お絵かき掲示板からMisskeyに投稿できるようになりました。

お絵かき掲示板に投稿済みの画像をMisskeyにも投稿したい時にお絵かき掲示板からMisskeyに接続して投稿する事ができるようになりました。

  • 編集→編集モードの時に編集・削除ボタンと一緒に 「Misskeyにノート」ボタンを表示します。
  • パスワードが一致したらMisskeyにノートする本文の編集画面が開きます。
  • 投稿するMisskeyサーバを選択して認証します。
  • 認証に成功すると画像と本文が投稿されます。

Screen-2023-07-22_23-13-34
Screen-2023-07-22_23-14-35
Screen-2023-07-22_23-15-12
Screen-2023-07-22_23-22-42
(お絵かき掲示板からMisskeyのAPIに接続してMisskeyに投稿)

バグ修正

  • TegakiをiPadで使用した時に、意図しないダブルタップズームが発生して作画が困難になる問題を修正しました。

変更があったファイル

  • functions.php
  • index.php
  • config.php(設定項目が追加されていますが、Misskey共有機能を初期設定状態で使用するだけなら元のconfig.phpのまま更新する必要はありません。)

追加されたファイル

  • misskey_note.inc.php
  • connect_misskey_api.php

変更があったテンプレート

  • template/basic/icomoon/ (ディレクトリを上書きアップデート)
  • template/basic/admin_in.html
  • template/basic/error.html
  • template/basic/index.css
  • template/basic/main.html
  • template/basic/res.html
  • template/basic/misskey_success.html
  • template/basic/before_misskey_note.html
  • template/basic/misskey_note_edit_form.html
  • template/basic/misskey_server_selection.html
  • template/basic/set_share_server.html
  • template/basic/paint_com.html
  • template/basic/paint_tegaki.html

テンプレートをカスタマイズしていない場合は、template/ディレクトリを上書きアップデートすると作業が簡単に終わります。

2023/07/13 v0.81.5

SNS共有時に開くWindowsの幅と高さをconfig.phpで設定できるようにしました。

config.phpに新規設定項目を追加しました。


// SNS共有の時に開くWindowsの幅と高さ

//windowの幅 初期値 350
$sns_window_width = 350;

//windowの高さ 初期値 490
$sns_window_height = 490;

SNS共有時のサーバ一を追加した時に、共有画面のWindowの高さが不足して、スクロールする必要があるケースがありました。
SNS共有時のサーバ一覧の共有画面のWindowsの幅と高さを設定できるようにして、その問題を解決しました。
上記設定項目がconfig.phpに存在しない時は、デフォルト値の、幅350px、高さ490pxが適用されます。

変更があったファイル

  • index.php
  • config.php(新規設定項目が必要な場合のみ更新)

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/main.html
  • template/basic/res.html

2023/07/11 v0.81.3

投稿を共有するSNSのサーバ一覧画面の操作性を向上

image

共有するサーバの選択時にラベルの文字列の上にカーソルをあわせなくても選択できるようにしました。
ラベルの文字列の右側の余白をタップした時にも選択できるうようになりました。

  • petitnote/template/basic/set_share_server.html
    のHTMLの文法エラーを修正しました。

変更があったファイル

  • petitnote/index.php

変更があったテンプレート

  • petitnote/template/basic/set_share_server.html

2023/07/11 v0.81.2

  • 記事の編集時に管理者編集モードを管理者として認識しせず、NGワードフィルタが動作するバグを修正しました。
  • 完全一致の時にもAlphabetの大文字・小文字の区別をしないようにしました。
  • 管理者による画像の閲覧注意への変更時に投稿者のホスト名が管理者のホスト名に変わってしまっていたのを修正しました。
  • 閲覧注意設定以外の項目が同じ時は、元の投稿者のホスト名から変更されません。
  • 返信画面で編集時にのみ表示していた閲覧注意画像を「隠す/隠さない」の設定項目を、常に表示するようにしました。
    (閲覧注意機能を使用しない設定にしている場合は、閲覧注意画像を「隠す/隠さない」の設定項目は表示されません)

変更があったファイル

  • petitnote/functions.php
  • petitnote/index.php

変更があったテンプレート

  • petitnote/template/basic/res.html

2023/07/09 v0.80.8

投稿を共有するSNSのサーバ一覧画面のデザインを調整しました。

image

ラジオボタンのチェックサークルを非表示にしました。
ラベルのホバー時に背景色が表示されるようにしました。

変更があったファイル

  • index.php
  • template/basic/index.css
  • template/basic/set_share_server.html

2023/07/08 v0.80.7

ツーイートボタンから「Twitter」「Mastodon」「Misskey」共有へ。

v0.80.3から「Twitter」以外の、「Mastodon」「Misskey」等の短文投稿SNSに投稿を共有できるようになりました。

image

config.phpで設定すれば以前のツイートボタンに戻す事もできます。
また、共有するMastodon、Misskeyのサーバ一覧を編集する事もできます。

// SNSシェア機能詳細設定

//シェア機能に、Mastodon、Misskeyの各サーバを含める 
// 含める: true 含めない: false
$switch_sns = true;
// $switch_sns = false;

// SNS共有の時に一覧で表示するサーバ
//例 	["表示名","https://example.com (SNSのサーバのurl)"],(最後にカンマが必要です)

$servers =
[
		
	["Twitter","https://twitter.com"],
	["mstdn.jp","https://mstdn.jp"],
	["pawoo.net","https://pawoo.net"],
	["fedibird.com","https://fedibird.com"],
	["misskey.io","https://misskey.io"],
	["misskey.design","https://misskey.design"],
	["nijimiss.moe","https://nijimiss.moe"],
	["sushi.ski","https://sushi.ski"],

];

config.phpに設定項目が増えていますが、細かく設定したい人のためのものです。
設定項目が存在しない場合は、新しいSNS共有リンクになります。
変更が必要ではない方は、すでに設定ずみのconfig.phpをそのままご利用ください。

細かな修正

  • 共有するサーバを選択する一覧画面にセットされるサーバのurlの末尾に/が入らないようにしました。
  • /が入っていても動作しますが、推移先のurlで//になります。
  • 共有するサーバを選択する一覧画面の上の余白を開け、ウィンドウサイズを縦に10px広げました。
    (見た目の修正)

変更があったファイル

  • index.php
  • functions.php
  • config.php (共有するサーバ一覧の設定が必要な方は更新、必要ない方はすでに設定ずみのconfig.phpをそのまま使用してください。)

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/set_share_server.html

(テンプレートをカスタマイズしていない場合は、template/ディレクトリをまるごとアップデートすれば簡単に更新が終わります)

2023/07/07 v0.80.3

バグ修正

  • 題名を必須に設定した時にレス記事の編集時に題名を求められて編集できなくなるバグを修正しました。

改善

  • 使用ツールが不明な時に ??? と表示していましたが、不明な時はツールの表示箇所を最初から表示しないようにしました。
  • 記事の編集に管理パスを使用している時にはコメントの二重投稿チェックをしないようにしました。
  • 閲覧注意画像を「隠す/隠さない」を検索とカタログモードに追加しました。
  • 閲覧注意画像を「隠す/隠さない」の処理を非同期通信化しました。
  • テンプレートの共通箇所を外部化してparts/ディレクトリにまとめました。

ツイートボタンからSNS共有ボタンへ。「Mastodon」「Misskey」に対応。

  • Twitterだけでなく、分散型SNSにも記事を共有できるようになりました。
    「Mastodon」「Misskey」等の分散型SNSに記事を共有できます。
    一覧に無いサーバも直接入力すれば共有できます。

image

変更があったファイル

  • index.php
  • functions.php

追加されたテンプレート

  • template/basic/parts/before_edit_del_res_loop.html
  • template/basic/parts/form_set_nsfw_show_hide.html
  • template/basic/set_share_server.html

変更があったテンプレート

  • template/basic/admin_in.html
  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/catalog.html
  • template/basic/search.html
  • template/basic/continue.html
  • template/basic/edit_form.html
  • template/basic/paint_com.html
  • template/basic/main.html
  • template/basic/res.html

変更があったテンプレートのディレクトリ

  • template/basic/icomoon/ ディレクトリを上書きアップデート
  • template/basic/js/ ディレクトリを上書きアップデート

(テンプレートをカスタマイズしていない場合は、template/ディレクトリをまるごとアップデートすれば簡単に更新が終わります)

2023/06/28 v0.78.9

ペイント画面で使用するテンプレートのビューポートを調整しました。
各お絵描きアプリからデータを受信しているファイルの使用アプリの判定処理を調整しました。
Tegakiの描画アニメ再生時のタイトルタグが、「Tegaki」になっていました。
掲示板の名称が入るように修正しました。

変更があったファイル

  • index.php
  • save.php
  • saveklecks.php
  • saveneo.php

変更があったテンプレート

  • template/basic/paint_chi.html
  • template/basic/paint_klecks.html
  • template/basic/paint_tegaki.html
  • template/basic/tgkr_view.html

2023/06/22 v0.78.7

改善

  • Tegakiの描画アニメの初期再生速度を25倍に変更しました。
  • 編集画面でTegakiの描画アニメを表示するしないを変更できるようにしました。
  • tegaki.js使用時にConsoleに表示されるChromeの軽微な警告を解消しました。(独自修正版)

仕様変更

config.phpに設定項目が無いときは、Tegakiを使う設定になるように修正しました。
例えば、NEOしか起動しないお絵かき掲示板にしている場合は、Tegakiが起動すると困ると思いますが、その場合は、config.phpのどこでもいいので以下の設定を貼り付けてください。

// Tegakiを使う
// 使う:true 使わない:false

$use_tegaki= true;
// $use_tegaki= false;

config.phpに設定項目を追加して、
$use_tegaki= false;
にすると、Tegakiがお絵かきアプリの選択項目から消えます。
設定項目が存在しない場合は、Tegakiを使う設定になります。

変更があったディレクトリ

  • app/tegaki/ ディレクトリを上書きアップデート

変更があったファイル

  • index.php

2023/06/22 v0.78.3

Tegakiの描画アニメの記録と再生に対応しました。

tegaki.jsの描画アニメの記録と再生に対応しました。

230621_tegaki_sukumizu_001

描画アニメにはレイヤー情報が保存されているのですが、現時点では続きを描く事ができるのはレイヤーが統合されたPNG画像からになります。
描画アニメも、続きを描くと消えてしまいます。
現時点では仕様です。
アニメファイルから続きを描きたいという要望をtegaki.jsの開発元リポジトリでIssueを開いて提出しました。

変更があったアプリ

  • app/tegaki/ ディレクトリを上書きアップデート

変更があったファイル

  • index.php
  • functions.php
  • saveklecks.php

追加されたテンプレート

  • template/basic/tgkr_view.html

変更があったテンプレート

  • template/basic/paint_com.html
  • template/basic/paint_tegaki.html

2023/06/20 v0.78.2

ペイントアプリ tegaki.js に対応

image

英語文化圏の画像掲示板で使用されているお絵かきアプリ、tegaki.jsに対応しました。
本当は描画アニメの記録と再生まで対応したかったのですが、細部がどうしても調整できなかったため、PNG画像の投稿どまります。
(v0.78.3で対応)
続きを描くとレイヤーが統合された画像からになります。
レイヤーは最大25枚まで。
不透明度のスライダで網の濃さがかわる塗るトーンもあります。

// Tegakiを使う
// 使う:true 使わない:false

$use_tegaki= true;
// $use_tegaki= false;

config.phpに設定項目を追加して、
$use_tegaki= true;
にすると、Tegakiが使用可能になります。
Tegakiを使いたい方は、config.phpへの設定項目の追加をお願いします。
設定項目が存在しない場合は、Tegakiを使わない設定になります。
v0.78.7で、設定項目が存在しない場合は、Tegakiを使う設定になりました。

変更があったファイル

  • config.php (設定項目Tegakiを使う/使わないが追加されました)
  • functions.php
  • index.php
  • saveklecks.php

追加されたファイル

  • app/tegaki/ ディレクトリを上書きアップデート

追加されたテンプレート

  • template/basic/paint_tegaki.html

変更があったテンプレート

  • template/basic/parts/copyright.html
  • template/basic/parts/select_apps.html
  • template/basic/res.html

2023/06/17 v0.77.2

「投稿者名をコピー」機能を改善

「投稿者名をコピー」ボタンを押すと、スレッドの投稿者名がコメント入力欄に追加される機能を改良しました。
従来は、入力ずみのテキストが存在する時は、テキストの末尾に投稿者名が追加されていました。
今回の更新で、カーソールの位置に投稿者名が読み込まれるようになりました。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/res.html

2023/06/16 v0.77.1

ChickenPaintを独自に更新

ChickenPaint内の非推奨のJavaScriptの構文e.whichをe.keyに置き換えました。

  • app/chickenpaint/ ディレクトリを上書きアップデート。

閲覧注意画像を「隠す/隠さない」の設定をコンティニュー画面に反映

閲覧注意画像を隠す隠さないを設定できるようになりましたが、続きを描く画面では、閲覧注意画像がそもそも隠されていませんでした。
続きを描く画面でも隠すように修正して、さらに、設定が反映されるようにしました。

テンプレートの閲覧注意画像を隠す/隠さないを設定しているCSSの分岐を外部ファイルに

共通箇所を何度も繰り返し書く必要はないので、外部ファイル化しました。
PHPのif文を含む、CSS切り替えのパーツをまとめて、他のファイルにインクルードするようにしました。

  • template/basic/parts/nsfw_css_control.html

追加されたテンプレート

  • template/basic/parts/nsfw_css_control.html

更新されたテンプレート

  • template/basic/main.html
  • template/basic/res.html
  • template/basic/catalog.html
  • template/basic/edit_form.html
  • template/basic/search.html
  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/continue.html

(閲覧注意に関連する「隠す/隠さない」の制御が必要ない場合はテンプレートを更新する必要はありません)

2023/06/10 v0.76.9

バグ修正

  • Klecksが起動しなくなっていたのを修正しました。
    このバグはv0.76.8で発生し、v0.76.9で修正されました。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/paint_klecks.html

2023/06/10 v0.76.8

閲覧者が「隠さない」に設定すれば閲覧注意画像にぼかしがかからなくなりました

マストドンや、Misskey等のSNSでは軽微な表現の場合にもメディアへの「閲覧注意」の設定が義務付けられています。
一方で「閲覧注意」のメディアをぼかさずそのまま表示する事もできるようになっています。
この事によって、観たくない人の目にはふれにくくなり、一方で見たい人は余分なタップを行う事なく画像を閲覧する事ができるようになっています。
それとほぼ同じ設定項目を「編集メニュー」に追加しました。

230609_001nsfw

これにより、閲覧注意に設定された画像が増えた場合でも、閲覧注意を隠さないに設定している人はそのまま画像を表示できます。
管理者権限で閲覧注意に切り替えた場合、投稿者が「ぼかしが入ってしまったし見てくれる人はいない」と感じる場合があります。
今回の機能追加によって、閲覧注意に変更されても画像をそのまま見ている人もいると捉えてもらえるようになるかもしれません。

ぼかしが入らない状態でも、閲覧注意に設定されている画像には「NSFW」の文字が小さく入ります。
投稿者が閲覧注意に設定して配慮している事がわかるようにするためです。

// 閲覧注意を設定する
//する: trueに設定すると閲覧注意の設定ができるようになります。閲覧注意画像にぼかしが入ります。
// する: true しない: false

$mark_sensitive_image = true;

config.phpで$mark_sensitive_image = true;
に設定していない場合は、上記、閲覧注意に関する設定項目は表示されません。

Klecks起動時に追加されるレイヤー1の多国語対応

  • Klecksの起動時に追加される「レイヤー 1」のレイヤー名を日本語、英語、ドイツ語、フランス語、繁體中文、簡体中文各国語対応になるように改善しました。

バグ修正

  • PaintBBS NEO v1.6.0のエラーメッセージがNaNになるバグを修正しました。
    (さとぴあの作業ミスにより、文字列結合の+が二重になってしまっていたのが原因です)
  • 検索画面のコメント画面で「このスレッドを表示」ボタンを押すとボタンが無効化されたままになるバグを修正しました。

変更があったペイントアプリ

  • app/neo/ neo/ディレクトリを上書きアップデート

変更があったファイル

  • index.php
  • functions.php

変更があったテンプレート

  • template/basic/main.html
  • template/basic/res.html
  • template/basic/search.html
  • template/basic/catalog.html
  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/paint_klecks.html

変更があったテンプレートのJavaScript

  • template/basic/js/common.js

変更があったテンプレートのCSS

  • template/basic/index.css
  • template/basic/search.css

スタイルシートの変更はカスタマイズしている方にとっては大変な作業とは思いますが、「閲覧注意を隠す/隠さない」の設定項目を使う方は、お手数ですが、新しいCSSを使っていただくか、エディタの差分機能等を使って変更点をご確認いただきますようお願いいたします。

2023/06/07 v0.75.1.2

PaintBBS NEOの送信エラー時のエラーメッセージが正しく表示されなくなっていたのを修正しました。
(さとぴあの作業ミスによって発生したバグです。)
修正したファイルが入っていませんでした。v0.76.8に修正したneo.jsが入っています。

変更があったファイル

app/neo/ neoディレクトリを上書きアップデート

下記の、v0.73.10、v0.73.10.1、v0.73.10.2、v0.75.1.1の更新内容もご確認ください。

2023/06/07 v0.75.1.1

バグ修正

2023年1月のv0.57.1で発生したバグが見つかりました。
動画を非表示にする機能を追加する際の作業ミスが原因です。
PaintBBS NEOで動画から続きを描くのではなく、画像から続きを描いた時には動画ファイルが無くなり動画のリンクもでない筈なのですが、動画は消えているのに動画のリンクが出る状態になっていました。
動画のリンクをクリックしても動画は無いので「ファイルがありません。」というエラーメッセージが表示されていました。

ペイントアプリの起動テンプレートの調整

お絵かきアプリのCSS、JSがブラウザに強力にキャッシュされるため掲示板のlot番号をクエリに追加しました。
掲示板が更新されればキャッシュではなく新しく読み込まれます。
お絵かきアプレットに更新がある時には有効ですが、お絵かきアプレットの更新が無い時は何も変わりません。
テンプレートの更新が負担になる場合は、テンプレートを更新する必要はありませんが、更新しておけばペイントアプリに更新が入った時にすぐに反映されるようになります。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/paint_chi.html
  • template/basic/paint_klecks.html
  • template/basic/paint_neo.html

下記の、v0.73.10、v0.73.10.1、v0.73.10.2の更新内容もご確認ください。

2023/06/05 v0.73.10.2

PaintBBS NEOを独自に仕様変更していましたが、その変更内容をPaintBBS NEOの開発元リポジトリにマージしていただく事ができました。PaintBBS NEOv1.6.0になりました。

image

  • app/neo/ neo ディレクトリを上書きアップデート

下記の、v0.73.10、v0.73.10.1の更新内容もご確認ください。

2023/06/05 v0.73.10.1

バグ修正

ChickenPaintのショートカットキー「Delete」が動作しなくなっていたのを修正しました。
(これは独自版を作成する際に発生したバグであり、ChickenPaintの開発元の問題ではありません。)

変更があったファイル

  • app/chickenpaint/ chickenpaint ディレクトリを上書きアップデート

下記の、v0.73.10の更新内容もご確認ください。

2023/06/03 v0.73.10

お絵かきアプリ内の非推奨になったJavaScriptの機能を推奨される機能に置き換えました

非推奨のJavaScriptを修正

ChickenPaintと、PaintBBS NEOの非推奨になったJavaScriptの構文を修正しました。
現時点では、どちらも独自修正版です。

ChickenPaintのショートカットキーの改善

ChickenPaintのショートカットキーを「CTRL」+「+」でもキャンバスが拡大するように独自に修正しました。
本来のショートカットキーは、usキーボードで「CTRL」+「=」、日本語キーボードでは、「CTRL」+「;」がキャンバスの拡大です。

それに加えてテンキーの「CTRL」+「+」でもキャンバスの拡大が可能になりました。
また、テンキーの数字キーでも不透明度を調整できるようになりました。

配列をjsonファイルにキャッシュして低負荷・高速化

お絵かき掲示板のCGI、BBSNoteやRelmは、一番多く表示されるindexページのみHTML化して負荷をさげていました。
しかし、フォーム入力欄があるページをHTML化するとCSRFトークンの発行ができなくなります。
そこで最初の1ページめの表示のための配列をjson形式でファイルに書き出してキャッシュする事にしました。
仮にそのjsonファイルが改ざんされた場合でも、テンプレートでエスケープ処理を行っているため比較的安全な運用が可能です。

しかしながら念のため、.htaccessの記述内容を変更して、.jsonという拡張子がついたファイルの外部への表示を禁止する設定にしました。

この高速化によって、トップページの表示のための計算時間が1/3に短縮されました。
キャッシュは記事になんらかの変更があった時に破棄され、キャッシュが存在しない時にページが表示されると計算結果がキャッシュに再度保存されます。

管理者編集モード以外の時には、投稿者のホスト名を配列に入れない

テンプレートに誰でも閲覧出来る形で投稿者のホスト名を表示したいと思ったら出来てしまっていたのを修正しました。
管理者編集モードでログインしている事が確認できない場合は、ホスト名に空白が入るようになりました。

変更があったファイル

  • app/chickenpaint/ chickenpaint ディレクトリを上書きアップデート
  • app/neo/ neoディレクトリを上書きアップデート
  • functions.php
  • index.php
  • .htaccess

変更があったテンプレート

  • template/.htaccess
  • template/basic/main.html
  • template/basic/res.html
  • template/basic/paint_neo.html

ブラウザの言語が日本語以外の時に表示される描画時間の英語表記が別変数になったことによる更新です。
日本語表記しか使用しないのであれば、従来のテンプレートのままでも問題ありません。

2023/05/15 v0.72.8

  • jQueryをjQuery3.7.0に更新しました。

追加されたファイル

  • lib/jquery-3.7.0.min.js

変更があったファイル

  • index.php
    index.phpを更新するだけでlib/jquery-3.7.0.min.jsがテンプレートで使用できるようになります。
    テンプレートの個別修正の必要はありません。

2023/05/15 v0.72.7

ChickenPaintが起動しなくなっていたバグを修正

  • このバグはv0.67で発生し、v0.72.7で修正されました。
  • 2023年の4月29日以後のバージョンのChickenPaintの起動のためのテンプレートにバグがありました。
  • template/basic/paint_chi.htmlの上書きアップデートをお願いします。

改善

非推奨になったjQueryの構文を修正

  • 非推奨になった機能を使った構文が残っていたため、修正しました。
  • 検索画面のテンプレートに共通箇所のjQueryの構文がインラインで残っていたため外部化してまとめました。

二重投稿チェックの動作の変更

  • 同一ホストからの投稿で本文の内容が同じ場合は5スレッド分さかのぼって重複チェックをしています。
  • この時の管理者の投稿を重複チェックから除外します。
  • 例えば管理者が、「いらっしゃい」というコメントを繰り返し使った時に「同じコメントがありました。」というエラーになっていましたが、今回の更新でエラーにならなくなりました。
  • 記事の編集時に本文の重複チェックが行われていなかったのを修正しました。
  • お絵かき画像の時にも、画像重複チェックのための画像をもとにしたmd5のハッシュ値を記録するようにしました。
  • お絵かき投稿のあと、同じ画像をアップロードすると「同じ画像がありました。」というエラーを出すようになります。
  • ただし、管理者が管理者投稿モードにログインしている時には、同じ画像チェックを行いません。
  • これは、例えば、不適切画像を別の画像に差し替えて本文だけを残す編集を行う時に使用する画像は同じ画像の場合があるからです。

コード整理

  • 複数回出現するコードを関数化して行数を削減し保守性を高めました。

変更があったファイル

  • index.php
  • functions.php

変更があったテンプレート

  • template/basic/paint_chi.html
  • template/basic/search.html

変更があったテンプレートのJavaScript

  • template/basic/js/common.js

2023/05/13 v0.71.6

処理の高速化

  • 全体ログを1行ずつタブ区切りで分割して、該当記事No.を探していた箇所を、分割なしのstrpos()===0による判定に置き換えて高速化しました。

変更があったファイル

  • index.php

2023/05/10 v0.71.1

コード整理

変更があったファイル

  • index.php
  • functions.php

klecksがレイヤー2枚で起動するようになりました

v0.68.8.1から、klecksがレイヤー2枚で起動するようになりました。

image

真っ白な背景レイヤーと透明なレイヤー1の2枚で起動します。
透明なレイヤー1が選択された状態で起動します。
線画を描いて気がついたら不透明な白いレイヤーに描いていたという事故を減らす事ができます。

2023/05/08 v0.70.8

処理の高速化

  • 一連の各モードでの省メモリ・低負荷化に加え、検索画面で画像のみを表示する時にもコメントのテキスト処理を省略し、さらに省メモリ・低負荷に。

変更があったファイル

  • index.php

2023/05/08 v0.70.6

処理の高速化

この間の更新で、読み込む必要がなかったり、処理を行う必要がない箇所を切り分けて省メモリ化と高速・低負荷化をすすめてきました。
今回の更新では、検索モードとカタログモードの処理を振りわけてカタログモードでは使用しない本文の処理を省略しています。
レス返信画面下の前後のスレッドの画像も該当箇所です。レス返信画面の処理もごくわずかですが高速化されています。

お絵描き画像の投稿処理で描いた人を判定する箇所の厳格化

ユーザーコードやリプレイスコードを発行して、本人の投稿かどうかをチェックする処理に、変数が存在するかどうかを確認する処理を追加しました。
チェックする変数の内容がどちらも空白の時に一致した事になるため、空白ではない事を確認するようにしました。

変更があったファイル

  • index.php
  • functions.php

2023/05/06 v0.70.1.1

  • klecks更新

2023/05/06 v0.70.1

機能追加

  • PaintBBS NEO、ChickenPaint、Klecksすべてのペイントアプリを使わない時は、未投稿画像のリンクを表示しないようにしました。
  • スレッドの題名を必須にするしないをconfig.phpで設定できるようになりました。
  • 上段のメニューに、検索画面へのリンクを表示するしないをconfig.phpで設定できるようになりました。

image

これらは、上記設置サポート掲示板などで利用する時に必要な設定項目でした。
Petit Noteは画像掲示板として、あるいは画像アップロード機能もないただのテキスト掲示板として使う事もできます。

パフォーマンス

この間の一連の省メモリ化で、メイン画面、カタログ画面の省メモリ化を実現しました。
それに加え、v0.70.1では、レス画面(スレッド表示)の省メモリ化を実現し、2500スレッドが存在する運用中の掲示板の実測値で、メモリ消費量を35%削減する事に成功しました。
(しかしながら、これは比較的新しいスレッドの場合でもっとも古いスレッドを表示する時のメモリ消費量はほとんど変わりません。それでも最新の記事を表示する機会のほうが多い筈ですからそれなりの効果はあります。)

非推奨のjQueryの構文を修正

テンプレート内のJavaScript、jQueryをチェックして、非推奨の構文を修正しました。
残念ながら、ペイントアプリの中には非推奨のjQueryの構文が残っていますが、基本的にはそれぞれのアプリでの修正作業になります。

投稿に合言葉が必須の時の表示を調整

  • 投稿に合言葉が必要と設定している時に表示されていなかったカタログモードを表示し、合言葉が入力されていない時は投稿に関連する項目のみが非表示になるように調整しなおしました
  • 掲示板の閲覧に合言葉が必要と設定している時の動作は従来と同じです。

変更があったファイル

  • index.php
  • functions.php
  • config.php (新規設定項目が必要ない場合は更新する必要はありません)

変更があったテンプレート

  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/continue.html
  • template/basic/main.html
  • template/basic/res.html
  • template/basic/index.css (検索バーの上下位置の調整。気にならない場合は更新する必要はありません。)

変更があったテンプレートのJavaScript

  • template/basic/js/common.js
    非推奨になったjQueryの構文を修正しています。

2023/05/04 v0.68.8.1

  • klecksの起動時のレイヤーの枚数を2枚に変更。
    (白い背景レイヤーと透明なレイヤー1)
    描きはじめの時点で透明なレイヤー1が選択されるので、白い背景に線画を描いてしまったという事故を減らせると思います。

変更があったテンプレート

  • template/basic/paint_klecks.html

2023/05/03 v0.68.8

省メモリ化

  • カタログモードのコードを最適化しました。

非推奨のJavaScriptを修正

  • 推奨されなくなったjQuery、JavaScriptのコードを修正しました。

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/js/common.js
  • template/basic/paint_com.html

2023/05/03 v0.68.5.1

klecks更新

ブラウザsafariのバグを回避するための修正作業が行われています。
bitbof/klecks#68

  • /app/klecks/ ディレクトリを上書きアップデート

2023/05/02 v0.68.5

改善

  • 通常表示画面と、カタログ画面のメモリ消費量を27%削減。(実際に運営している掲示板のログを使った実測値)

変更があったファイル

  • index.php

2023/05/01 v0.68.2

Klecks更新

  • Klecksをブラウザsafariのバグ回避処理など細かな修正が施された最新版に更新しました。

変更があったディレクトリ

  • app/klecks/ ディレクトリを上書きアップデート

変更があったファイル

  • index.php

2023/04/30 v0.68.1

バグ修正

  • 編集画面でアップロード画像の差し換えを行った時に、編集画面に戻れなくなり「記事がありません」というエラーになっていました。
    このバグはv0.67.3で発生し、v0.68.0で修正されました。
  • 編集画面で画像差し換えを行った時にエラーチェックのためにアップロードしたファイルがテンポラリに残ってしまうバグを修正しました。

変更があったファイル

  • index.php

2023/04/29 v0.67.9

エラーメッセージの非同期通信化をさらに拡大

image

  • エラーメッセージを画面を切り替えることなく表示することができるようになりました。コメントの入力欄だけでなく、お絵かきボタン、続きを描く、ダウンロード、編集、削除、管理者ログイン各フォームで非同期通信を使ったエラーメッセージの表示ができるうようになりました。
    これにより、エラー画面が表示され、戻るリンクをタップして前の画面に戻るという一連の煩わしい操作から解放されます。
    またエラーメッセージの表示をより安全なinnerTextに変更することができました。
    お手数をおかけしますが、ぜひバージョンアップをお願いします。

  • Klecksのエラー処理がよりいっそう確実になるようにfetch APIの処理を書き直しました。
    response.ok以外の時はエラーメッセージを表示して描画画面から移動しないようになりました。

変更があったファイル

  • index.php
  • functions.php

変更があったテンプレート

変更があったCSS

  • template/basic/index.css
/* エラーメッセージ */
div#error_message , div#error_message_imgrep , div#error_message_paintform , div#error_message_download , div#error_message_beforedelete {
	line-height: initial;
	background-color: hsl(60 100% 88% / 1);
	font-size: 20px;
	padding: 1px 4px 1px;
	margin: 5px 0 5px;
}
div#error_message:empty , div#error_message_imgrep:empty , div#error_message_paintform:empty , div#error_message_download:empty , div#error_message_beforedelete:empty {
	display: none;
}

エラーメッセージとして出力されていたタグが除去され、エラーメッセージが表示される箇所のタグが空欄の時は非表示にする処理が追加されています。
お手数ですが、CSSのファイルの一番下の箇所にエラーメッセージのCSSを追加してご利用ください。
CSSを変更していない場合は、上書きアップデートをお願いします。

変更があったテンプレートのJavaScript

  • template/basic/ js/common.js

各フォームのエラーメッセージを処理するためJavaScriptも更新されています。
上書きアップデートをお願いします。

変更があったテンプレート

  • template/basic/admin_in.html
  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/continue.html
  • template/basic/main.html
  • template/basic/res.html
  • template/basic/paint_chi.html
  • template/basic/paint_klecks.html
  • template/basic/paint_neo.html

特にテンプレートをカスタマイズしていない方は、
template/ディレクトリを上書きアップデートしてください。

2023/04/25 v0.66.6.1

chickenpaint更新

chickenpaintをiPadのフルスクリーンモード、あるいはiPhoneで使用した時に、パレットメニューが画面外に出る、描画領域の縦横比が縦に伸びる、横に伸びるなどの問題が発生していました。
フルスクリーンモードの時のスタイルシートが原因でした。ただしこれは、iPad、iPhoneの時にのみ発生する問題です。
逆にいうと、PC+Chromeで問題が発生していなくても、iPadユーザーがChickenPaintを使用する時にはトラブルが発生していたということです。
v0.66.6と、控えめなバージョン番号の差ですが、chickenpaint/ディレクトリの上書きアップデートのみでも構いませんので、更新をご検討ください。
現時点では開発元での修正はまだ行われておらず、これは独自修正版です。

プルリクエストして、開発元にこれを統合するかどうかの判断をお願いしているところです。
thenickdude/chickenpaint#52

変更があったディレクトリ

  • app/chickenpaint/ ディレクトリを上書きアップデート

変更があったファイル

  • index.php

変更があったテンプレート

  • template/basic/paint_chi.html
    (問題が解決したためChickenPaintが全画面表示で起動する設定に戻しました)

変更があったテンプレートのJavaScript

  • template/basic/js/common.js

2023/04/21 v0.66.3

エラメッセージの2行目が表示されないバグを修正

エラメッセージの1行目がerror\nで始まる事を確認して2行目をエラメッセージとして表示する書き方になっていたため、エラメッセージの3行目以後が表示されなくなっていました。
common.jsのJavaScriptの修正のみでも大丈夫なのですが、キャッシュを読み込む可能性があるため、index.phpのバージョン情報も更新しています。

変更があったフィル

  • index.php

変更があったテンプレートのJavaScript

  • template/basic/js/common.js

2023/04/21 v0.66.2

  • 編集画面→画像差し換えの時のエラメッセージも非同期通信で取得します。エラーメッセージは、同じ画面に表示されます。

image

変更があったフィル

  • index.php
  • functions.php

変更があったテンプレート

  • template/basic/edit_form.html

変更があったテンプレートのJavaScript

  • template/basic/js/common.js

変更があったテンプレートのCSS

  • template/basic/index.css
/* エラーメッセージ */

div#error_message , div#error_message_imgrep {
    margin: 0;
}
div#error_message div , div#error_message_imgrep div {
    background-color: hsl(60 100% 88% / 1);
    font-size: 20px;
    padding: 1px 4px 1px;
    margin: 2px 0 2px;
}

上記の箇所が追加あるいは更新されています。
従来は
ID error_message
にのみエラメッセージの背景色などを追加していましたが、
編集画面→画像差し換え時のエラメッセージの装飾も必要になった事による変更です。
画像差し換え時のエラメッセージのIDは
ID error_message_imgrep
です。
CSSをカスタマイズしている方は、フィアルの末尾に上記エラメッセージのCSSのを追加してご利用ください。
また、この間の更新との差分をエディタの内容比較機能などで確認する事をおすすめします。
カスタマイズしていない方は

  • index.php
  • functions.php
    と、
  • template/ ディレクトリ
    を上書きアップデートするだけで更新できます。

2023/04/20 v0.65.8

  • エラメッセージが表示されるはずの箇所に、掲示板の本体部分が表示されるケースがあったため、エラメッセージは、error\nではじまるもののみを表示する形に変更しました。

変更があったファイル

  • index.php
  • functions.php
  • template/basic/js/common.js

2023/04/20 v0.65.5

新しく導入したフォームの入力欄の上に表示するエラメッセージの改善

  • サーバからのレスポンスをエラメッセージとして表示できるようになりました。
    サーバ混雑時の502 bad gatewayや503 Service Unavailable、ファイルが存在しない時に表示される404 Not Found等。

image

入力したテキストがWAFによって誤検知された時には、403 Forbiddenとなります。
サーバのWAFが有効でかつコメントの入力欄にJavaScriptやPHP等のコードが記入された時にセキュリティ上のリスクを回避するために403 Forbiddenとなる場合があります。
その場合はテキストを短く分割してみる。コードを書かない。WAFを解除するなどの検討をお願いします。
通常の会話の内容であれば誤検出される事はないと思います。

###変更があったファイル

  • template/basic/js/common.js

v0.65.2 のリリース内容もあわせてご確認ください。

2023/04/19 v0.65.2

エラーメッセージをフォーム入力欄に直接表示する事ができるようになりました

  • 従来のエラー画面

230420_fetch_api_0

  • 新しいエラー表示

230420_fetch_api

サーバーに通信する時にブラウザの画面を切り替える必要がない、非同期通信を採用し、エラーが発生した時のエラーメッセージをフォームの入力欄の上に表示します。
これによりエラー画面からもどって修正する必要がなくなります。

  • CSRFトークンが一致しませんについて
    「CSRFトークンが一致しません。」というエラーメッセージがでた時には入力欄でリロードする必要があります。
    エラーメッセージは別画面に表示されるためエラーメッセージが表示されている画面でリロードしてもエラーはなくなりません。
    さらに、エラーメッセージの表示の「もどる」のリンクで前の画面にブラウザバックすると古いトークンがキャッシュされた画面が表示されるため、トークン不一致のエラーから抜け出せなくなる事がありました。

今回の更新でエラーメッセージのテキストの内容も修正し「CSRFトークンが一致しません。リロードしてください。」というエラーメッセージをフォームの入力欄の画面に表示する形に変更する事ができました。
エラーメッセージにしたがってリロードすればトークン不一致のエラーから抜け出せます。

ひとつ前のバージョンv0.63.10に投稿者のIPアドレスが表示されてしまう大きなバグがありました。

  • 管理者のみが閲覧可能なはずのIPアドレスが、表示されてしまうバグが見つかりました。
    これは、v0.63.10の以下の機能追加の時に発生した作業ミスによるものです。

「この記事は存在しません」という投稿を管理者編集モードで表示したときに、投稿者にホスト名を表示できるようにしました。

「この記事は存在しません。」という表示になった時は誰でもIPアドレスを閲覧可能になっていました。
公開からあまり時間が経過していない事からv0.63.10を使っている方は少数とは思いますが、もしもv0.63.10をご利用の場合は、ただちに最新版へのアップデートをお願いします。
テンプレートの、main.htmlres.hrmlの更新が必要です。

変更があったファイル

  • index.php
  • functions.php

追加されたディレクトリ

  • template/basic/js/common.js
    今回追加したJavaScriptによる非同期通信と、Luminousや上に戻るリンクのJavaScriptをひとつのファイルにまとめて外部化しました。
    このディレクトリのアップロードを忘れると、非同期通信や画像のポップアップ表示などが機能しなくなります。

変更があったテンプレートのうち更新が必要なもの

  • template/basic/edit_form.html
  • template/basic/main.html
  • template/basic/paint_com.html
  • template/basic/res.html

変更はあったものの更新が必須ではないもの

  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/catalog.html
    (JavaScriptの外部化によるコード整理のため、従来のままでも動作は変わりません)

変更があったスタイルシート

  • template/basic/index.css

ファイルの一番下の箇所に追加した新しいエラーメッセージのためのCSS。

/* エラーメッセージ */

div#error_message , div#error_message_imgrep {
    margin: 0;
}
div#error_message div , div#error_message_imgrep div {
    background-color: hsl(60 100% 88% / 1);
    font-size: 20px;
    padding: 1px 4px 1px;
    margin: 2px 0 2px;
}

この箇所が無いと、エラーメッセージの背景色に色がつかなくなってしまうため、エラーメッセージが視認しにくくなります。
お手数ですが、スタイルシートをカスタマイズしている方は、ファイルの最後に上記コードを追加して対応してください。

カスタマイズした古いテンプレートのまま使いたい方もいらっしゃると思います。
その場合は、テンプレート側で非同期通信の処理をするJavaScriptを実行しなければ従来と同じ動作をします。
古いテンプレートの場合はエラーメッセージが別画面になるだけです。

2023/04/12 v0.63.10

直面している問題への対応

iPad使用時にChickenPaintの描画領域のアスペクト比が正しく設定されない問題に暫定的に対応

  • iPad使用時にデバイスの向きを横から縦に縦から横に傾けると、描画領域のアスペクト比をただしく取得できなくなり、画像の縦横比の表示が変わり、ペンの座標が一致しなくなる問題が確認されました。
  • この問題はChickenPaintをフルスクリーンモードで起動している時にのみ発生します。
  • そのため、ChickenPaintのフルスクリーンモードでの起動オプションを外し、起動時にはミニスクリーンモードになるようにしました。
    フルスクリーンモードで起動するとミニスクリーンに切り替える事ができなくなるからです。
    ミニスクリーンからフルスクリーンモードへの切り替えは可能です。またフルスクリーンモードからミニスクリーンへの切り替えも可能です。
  • ChickenPaintのコードを一部修正しました。ブラウザの表示領域の高さの取得がiPadの時と、PCでは異なる場合があるためです。
    しかしながら、その箇所が本当に今回の問題に関連する事なのかどうかはわかりません。

Aspect ratio is broken when iPad is turned from landscape to portrait in full screen mode · Issue #51 · thenickdude/chickenpaint
ChickenPaintの作者の方のリポジトリでIssueを開いてこの問題を報告しています。
作者の方による修正があった場合は、その最新版のChickenPaintに再度入れ替える予定です。
したがって今回同梱したChickenPaintは暫定独自修正版となります。

バグ修正

削除ずみの記事が検索画面に表示されるバグを修正しました

  • すでに複数の投稿が存在するスレッドの親の投稿を削除した時は、「この記事はありません」という表示に切り替わりスレッド全体は削除されなくなりました。
    しかし、その中身が空白の削除ずみの記事が検索画面に表示されていました。
    記事の中身が空白の時は検索画面に表示されないようにしました。

1ページ中にすでに閉じたスレッドがある時にそのスレッドより下のスレッドが閉じている事になるバグを修正

  • 投稿件数が上限を超えていたり、スレッドの最初の投稿が古くてスレッドが閉じる事があります。
    閉じたスレッドの時は、「このスレッドに投稿」から「このスレッドを表示」にボタンの表記が切り替わります。
    しかし、1ページ中の途中に閉じたスレッドが存在すると、その位置から下のスレッドのボタンが「このスレッドを表示」になってしまうバグが見つかりました。
    テンプレートのmain.htmlに処理を追加してこの問題を修正しました。

改善

「この記事は存在しません」に表示が切り替わった記事を管理者編集モードで表示した時の表示を変更

  • 「この記事は存在しません」という投稿を管理者編集モードで表示したときに、投稿者にホスト名を表示できるようにしました。
    仮にこれらの「この記事は存在しません」の投稿が掲示板を荒らすためのものだった時は対応しなければならないからです。

「この記事はありません」の時はTweetにbyを含めない

  • 記事が削除ずみで「この記事はありません」になったスレッドのTweetの時に名前+byのTweetが作成されてしまうため、親の記事が削除ずみの時にはbyが含まれないように調整しました。

NEOの動的パレットの非推奨になったJavaScriptを修正

変更があったファイル

変更があったアプリ

ChickenPaint更新

  • app/chickenpaint/ ディレクトリを上書きアップデート

変更があったファイル

  • functions.php
  • index.php

変更があったテンプレート

  • template/basic/main.html
  • template/basic/res.html
  • template/basic/paint_chi.html
  • template/basic/paint_neo.html

2023/03/27 v0.63.5

スレッドが削除される条件が変わりました

  • 管理者が「スレッドを削除する」にチェックを入れて削除した時はスレッドが削除されます。
    管理者はいつでもスレッド全体を削除できます。
  • スレッドに残っている記事が1つの時は、その記事を削除すればスレッドが削除されます。

スレッドを立てた人が最初の投稿を削除するとスレッド全体が削除されるてしまう問題を修正しました。
スレッドの最初の投稿のみを削除できるようになりました。

管理者編集モードでログインしている管理者は、「スレッドを削除」を選択する事ができます。

Screen-2023-03-27_18-49-56

スレッドの最初の投稿を削除しても、スレッド削除を選択していない場合は、「この記事はありません。」に表示が置き換わり、スレッドは削除されません。

Screen-2023-03-27_18-53-08

そのほか

  • urlを判定する正規表現を新しいものに置き換えました。
  • PHP5.6環境下で、作成されるwepb形式の画像が不正な画像形式になる場合があったため、PHP7.0以上である事をPHPスクリプトで判定してから処理を行うようになりました。
  • アクセス制限がかかっている時にコンティニュー画面から新規投稿を選択できる問題を修正しました。
    投稿出来ないのであれば最初から描ける状態にしないほうが良いからです。
  • ユーザーidをセッションに格納し、同一セッションの時はIPアドレスが変わっても同じユーザーidになるようにしました。

変更があったファイル

  • index.php
  • functions.php
  • thumbnail_gd.php

変更があったテンプレート

  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/continue.html
  • template/basic/main.html
  • template/basic/res.html

変更があったCSS

  • template/basic/index.css
    特に細かな修正をしていない方の場合は上書きアップデートしてもいいのですが、CSSを細かく修正している方は現状のままでも大丈夫だと思います。
    気になる場合は、エディタの内容比較機能等を利用してご確認ください。

2023/03/07 v0.61.9

改善

続きを描く→新規投稿の時に同じスレッドに投稿するかどうかを選択可能に

古いバージョンでは、続きを描く→新規投稿を選択すると新しいスレッドへの投稿になっていました。
たとえば1枚の線画の塗り絵を10名が行う時に10スレッド必要でした。
これを1つのスレッドにまとめる事ができるようになります。

また返信として投稿されたお絵かき画像からの続きを描く時には、同じスレッドへの投稿になるようにしていましたが、こちらも返信からの新規投稿を新しいスレッドに投稿したい場合があり、自由に選択できるようにするべきという結論に達しました。

230307_続きを描く_同じスレッドに投稿する

その選択のために「同じスレッドに投稿する」というチェックボックスを追加しました。
しかし「画像差し換え」の場合は同じスレッドに投稿するより他ないためこの選択肢は不要です。

そこで、JavaScriptを使って、新規投稿を選択した時のみ「同じスレッドに投稿する」というチェックボックスを表示するようにしました。

また、「新規投稿ならパスワードがなくても続きを描く事ができます。」という説明を表示しているものの、これまでのバージョンではパスワードの入力欄が表示されたままだったため、新規投稿を選択してもパスワードが必要であるかのように見えていました。
そこで、新規投稿を選択すると、パスワードの入力欄が表示されないようにしました。

しかしながら、新規投稿の場合でもパスワードがなければ続きを描けないようにして欲しいという方もいらっしゃるかもしれません。
そこで、config.phpに新規設定項目を追加しました。

//続きを描く時は新規投稿でもパスワードを必須にする
// する: true しない: false
// しない: false に設定すると、元の画像を上書きしない新規投稿なら誰でも続きを描く事ができるようになります。
// 合作の時にパスワードを公開する必要はありません。

// $password_require_to_continue = true;
$password_require_to_continue = false;

新規投稿の時にもパスワードが必要な時は、新規投稿を選択してもパスワードの入力欄は非表示になりません。

「返信」ボタンを「このスレッドに投稿する」に変更

1スレッドに1枚のイラストの場合、100枚のイラストのために100スレッド必要になります。
Petit Noteのような1スレッド1ログファイル形式の掲示板の場合は、1スレッドに複数枚のイラストを掲載したほうが全体ログのファイルの肥大化の進行を遅らせる事ができるため掲示板の寿命を延ばす事ができます。
これまで、「返信」のところからイラストを投稿して欲しいとお願いする事が多々ありました。
しかし、自分で描いたイラストに「返信」から別のイラストを投稿するのは、「返信」ではないため、「このスレッドに投稿する」にボタンの名称を変更しました。

カタログ画像にマウスカーソルを乗せた時に投稿日時を表示

カタログ画像にオンマウスカーソルした時に投稿日時を表示できるように修正しました。

ホスト名が逆引きできずIPアドレスになる時の拒絶処理を修正

ホスト名で拒絶する時の一般的な例は後方一致です。

example.com

のように後ろの方が一致する部分を拒絶します。
しかし、IPアドレスの場合は前方一致で拒絶する必要があります。

ホスト名が取得出来ないIPアドレスからの投稿の時はホスト名にIPアドレスが表示されますが、従来は、このIPアドレスが後方一致による拒絶処理になってしまい拒絶不能になっていました。

そこで、ホスト名とIPアドレスが同じユーザーの時は、ホスト名として表示されているIPアドレスの前から数文字分を指定して前方一致で拒絶できるようにしました。

$badhost =["example.com","100.100.200"];

このように設定した場合、

"example.com"は後方一致で拒絶処理が行われ、"100.100.200"は前方一致で拒絶処理が行われます。

禁止ホストで拒絶している時はフォームの入力欄を表示しない

これまでは禁止ホストで拒絶していても、ペイントボタンやコメントの入力欄は依然表示されたままでした。
仮に禁止ホスト指定が巻き込みになってしまった時は、ペイントボタンが表示されている事で絵を描いてしまうかもしれません。
絵を何時間もかけて描いて投稿する時に、「拒絶されました」と表示されてしまう事になります。

禁止ホストで拒絶指定した時は、ペイントボタンやコメントの入力欄を閉じる事で投稿を最初から制限するようにしました。

拒絶する文字列が存在している場合でも管理者は投稿可。使用できない名前に管理者名を指定する事が可能に。

//拒絶する文字列 正規表現

//拒絶するurl

//使用できない名前 正規表現

//AとBが両方あったら拒絶 正規表現

これらのスパム対策のための禁止語句を管理者は制限なく投稿できるようになりました。
これにより、○○○という用語は使わないでくださいという説明をする時に、○○○を禁止語句に指定していても管理者はその語句を使用できるようになります。
また、「使用できない名前」に「管理人」や管理者のハンドル名を登録する事ができるようになりました。
管理者名が「使用できない名前」に指定されていれば、管理者以外のユーザーが管理者名を名乗って投稿するなりすまし投稿ができなくなります。

変更があったファイル

  • index.php
  • functions.php
  • config.php
    新しく追加された設定項目が必要な場合のみ更新。更新しない場合は従来と同じ設定で動作します。

変更があったテンプレート

  • template/basic/catalog.html
  • template/basic/main.html
  • template/basic/res.html
  • template/basic/continue.html

変更があったCSS

  • template/basic/index.css
    一応変更してありますが変更が必要なテンプレートにインラインのCSSでの記述を行っているため必ずしも変更する必要はありません。
    CSSをカスタマイズしている場合はそのまま使うか、エディタの内容比較機能で差分をご確認ください。

2023/02/26 v0.60.10

Klecksを最新版にアップデート

image

  • ダークテーマが選択可能になりました。
  • フランス語に対応しました。
  • iPhone、iPadのタッチジェスチャーでフリーズする問題が修正されました。

カタログ画面の表示が検索画面と同じ表示になりました。

  • 大き目のディスプレイを使用時3列、スマホ2列だった表示を5列、スマホ4列に変更しました。
  • 検索画面と共通のCSSを使用する形に変更になりました。
    <div class="catalog_desc_wrap">が、<div class="catalog_wrap">に変更されていたり、divがspanに変更になっていたりします。
    また検索画面のテンプレートは大幅に変更になりました。

index.csssearch.csscatalog.htmlsearch.htmlをセットで更新して頂く形になります。
従来通りの表示のほうが良い場合は、CSSと上記テンプレートのHTML部分を変更しないようにしてください。

スタイルシートが確実に適用されるようにするため、cssファイルのurlにロット番号のクエリを追加しました。

<link rel="stylesheet" href="template/basic/index.css?lot.230225">
?lot.230225の部分が今回追加されたクエリです。
CSSを変更してもブラウザのキャッシュのCSSが読み込まれてしまい画面が変更されない問題を解消するため、Petit Noteのロット番号をクエリに追加しました。
Petit Noteを更新すれば新しいCSSをブラウザが読み込みます。

変更があったファイル

  • functions.php
  • index.php
  • config.php

カタログの表示件数を24件から60件に変更しています。
推奨される値が20の倍数に変更になりました。
5列表示でも4列表示でも画面にぴったり収まる値が20の倍数だからです。

Klecks更新

  • app/klecks/
    ディレクトリを上書きアップデート。

変更があったテンプレート

  • template/basic/admin_in.html
  • template/basic/aikotoba.html
  • template/basic/before_del.html
  • template/basic/before_edit.html
  • template/basic/catalog.html
  • template/basic/continue.html
  • template/basic/edit_form.html
  • template/basic/error.html
  • template/basic/main.html
  • template/basic/paint_com.html
  • template/basic/paint_neo.html
  • template/basic/pch_view.html
  • template/basic/res.html
  • template/basic/search.html

変更があったスタイルシート

  • template/basic/search.css
  • template/basic/index.css

テンプレートのほぼすべて。
template/ ディレクトリを上書きアップデートして更新する形でも大丈夫です。