1## Petit Noteとは
- 1スレッド1ログファイル形式のスレッド式の画像掲示板です。
PaintBBS NEO,tegaki.jsAXNOS Paint,ChickenPaint,Klecksが使えるお絵かき掲示板です。
ダウンロード
- このページの一番下のソースコードリンクからダウンロードできます。
English version is here
Petit Note v1.86.0リリース
2025/04/18 v1.86.0
CookieにSecure属性を追加
- SSL(https)通信時に発行するCookieにSecure属性を追加します。
非SSL通信時には従来と同じようにSecure属性を付けません。
本当はSSL時にのみCookieを使用するSecure属性を常にセットしたいところですが、SSL環境以外での設置例が多数あるため、SSLかどうかを自動的に取得して切り替えるようにしました。
SSL通信時に、より安全にSESSIONやCookieを利用できるようになりました。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- functions.php
- index.php
変更があったテンプレート
- template/basic/continue.html
(リンクのアンカーテキストの「もどる」が「スレッドにもどる」に変わっただけです)
2025/04/12 v1.85.1
- ログの配列取得時と書き込み時の空チェックを追加しました。
ログファイルが飛んでしまった事例はまだ報告されていませんが、念のため、書き込み処理の時に中身が空だった時にはエラーにして処理を停止するようにしました。
またログファイルの配列を取得後、その配列が空だった時にエラーにする処理はほとんどの箇所にもともとありましたが、投稿処理でかつ返信処理の時のログの配列の空チェックを追加しました。
変更があったファイル
- functions.php
- index.php
2025/04/12 v1.83.2
NEOの動画再生ビューワーの操作をスマホ・タブレット対応に
- PaintBBS NEOの動画再生ビューワーの操作をスマホ・タブレット、Windows Ink有効時のペンタブレット対応にしました。
- 動画再生の進捗バーの任意の箇所で再生を停止したり巻き戻したりする操作はこれまでマウスに最適化されていましたが、今回の更新でタッチデバイスに対応しました。
- 動画再生ビューワーで拡大表示した時の画像のスクロールもマウスに最適化されていましたが、こちらもタッチデバイスに対応し、スマホ・タブレットでも操作可能になりました。
変更があったファイル
- app/neo/neo.js
- index.php
2025/04/09 v1.83.1
Chrome 135 でPaintBBS NEOの文字がかすれる問題を修正
- Windows版Chrome 135で、ゴシック体のデフォルトフォントがメイリオから"Noto Sans JP"に切り替わりました。
- その影響で文字の太さを100に指定していたNEOの日本語の文字列の可読性が著しく低下してしまいました。
- 他の環境では文字がやや太くなってしまう可能性もありますが、太さ300でもかすれが発生するため、太さ指定のCSSをコメントアウトして文字の太さが標準になるようにしました。
変更があったファイル
- app/neo/ ディレクトリを上書きアップデート
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2025/04/09 v1.83.0
jQueryを段階的に削減
- ChickenPaint BeのjQueryは完全にJavaScriptに置き換えられました。
しかしスクロールすると出てくる上に戻るリンクは依然としてjQueryで動いていました。
その上に戻るリンクをjQueryからJavaScriptに置き換えました。
これにより、jQueryを使用しているのは画像をポップアップ表示するLightbox2のみとなりました。
万が一jQueryの開発が終了したとしても、画像のポップアップ表示の実装のための選択肢はあるため対応できるでしょう。
変更があったファイル
- index.php
- template/basic/js/common.js
- template/basic/index.css
CSSをカスタマイズしている方はCSSファイル内のどこでもいいので、
#page_top {
visibility: hidden;
}
の追加をお願いします。
また、追加しなくても掲示板の表示時に一瞬、上に戻るボタンが表示される事があるだけです。
2025/04/07 v1.82.8
バグの原因になっていた送信処理関連のJavaScriptを整理
- 様々な経路を辿ってFormのデータを送信していた処理の送信処理の流れを見直しました。
動的パレットスクリプトのリファクタリング
- 2025年のブラウザ環境では推奨されない書き方が残っていたのを修正しました。
変更があったファイル
- index.php
- template/basic/js/common.js
- template/basic/paint_neo.html
2025/04/05 v1.82.7
jQueryから脱却したChickenPaintが完成
- ChickenPaintに残っていたjQueryをすべて素のJavaScriptに置き換える事に成功しました。
chickenpaint.jsのファイルサイズは100kb減りわずか501kbになりました。
脱jQueryの実現により今後のjQueryの開発に左右されなくなります。
仮にjQueryの開発が終了したとしてもChickenPaintには何も影響がありません。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- app/tegaki/ ディレクトリを上書きアップデート
- index.php
2025/04/02 v1.82.6
バグ修正
- NEOの動画再生時に軽微なエラーが発生していたのを修正しました。
v1.6.15で発生したバグですが、動画の再生時にコンソールにエラーが表示されるのみで動作には影響のないエラーでした。
NEOを更新して修正しましたが、バージョンはv1.6.15のままです。
ChickenPaintのjQueryを段階的に削減
- どこまで減らせるのかわかりませんが、JavaScriptに置き換える事ができる箇所はできるだけJavaScriptに置き換えています。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- app/neo/ ディレクトリを上書きアップデート
- index.php
2025/03/31 v1.82.5
AXNOS Paint、klecks、Tegakiの通信エラー発生時のエラーメッセージをより詳細に
- 通信エラー発生時に HTTPステータスコードをより詳細に表示します。
変更があったファイル
- index.php
変更があったテンプレート
- template/basic/paint_axnos.html
- template/basic/paint_klecks.html
- template/basic/paint_tegaki.html
2025/03/30 v1.82.3
ChickenPaint Be更新
- レイヤーマスクをレイヤーパレットのゴミ箱アイコンで削除できるようになりました。
これまでは、ゴミ箱アイコンをタップするとレイヤー全体が削除されていました。
これまでは、メニュー→レイヤー→レイヤーマスク削除を選択しなければ、レイヤーマスクを削除できませんでした。
- 変数宣言されていない変数が混在していたのを修正しました。
- 間違った引数が修正されました。
- 通信エラー時により詳細なエラーメッセージを表示します。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2025/03/27 v1.82.1
PHP8.5ではflock()関数の返り値の確認が必須になるためラッパー関数を作成
- 2025年秋にリリース予定のPHP8.5では、flock()の返り値の確認が必須になるため、ラッパー関数を作成してファイルロックに失敗した時はエラーになるようにしました。
- 続きを描く→画像差し換えの時にファイルロックが失敗した時には新規投稿に切り替えてイラストが失われないようにします。
explode()の分割数を制限
- explode()の第三引数を設定して、必要の無い分割は行わないようにして、負荷をさらに削減しました。
boolを文字列に変換していた箇所を修正
true/falseなどのbool型の文字列への自動変換を将来のバージョンで廃止するRFCが議論中のため対応しました。
bool型をそのままエコーしていたテンプレートを修正して更新しました。
変更があったファイル
- functions.php
- index.php
- misskey_note.inc.php
- index.php
- misskey_note.inc.php
- config.php
(SNSで共有と、Misskeyノートにxissmie.xfolio.jpを追加しただけです。クロスフォリオのSNSへの共有が必要な方以外は更新の必要はありません。)
設定例。
// SNS共有の時に一覧で表示するサーバ
// 例 ["表示名","https://example.com (SNSのサーバのurl)"],(最後にカンマが必要です)
$servers =
[
["X","https://x.com"],
["Bluesky","https://bsky.app"],
["Threads","https://www.threads.net"],
["pawoo.net","https://pawoo.net"],
["fedibird.com","https://fedibird.com"],
["misskey.io","https://misskey.io"],
["xissmie.xfolio.jp","https://xissmie.xfolio.jp"],
["misskey.design","https://misskey.design"],
["nijimiss.moe","https://nijimiss.moe"],
["sushi.ski","https://sushi.ski"],
];
//Misskeyへの投稿時に一覧で表示するMisskeyサーバ
$misskey_servers=
[
["misskey.io","https://misskey.io"],
["xissmie.xfolio.jp","https://xissmie.xfolio.jp"],
["misskey.design","https://misskey.design"],
["nijimiss.moe","https://nijimiss.moe"],
["misskey.art","https://misskey.art"],
["oekakiskey.com","https://oekakiskey.com"],
["misskey.gamelore.fun","https://misskey.gamelore.fun"],
["novelskey.tarbin.net","https://novelskey.tarbin.net"],
["tyazzkey.work","https://tyazzkey.work"],
["sushi.ski","https://sushi.ski"],
["misskey.delmulin.com","https://misskey.delmulin.com"],
["side.misskey.productions","https://side.misskey.productions"],
["mk.shrimpia.network","https://mk.shrimpia.network"],
];
変更があったテンプレート
- template/basic/parts/paging.html
- template/basic/parts/prev_next.html
(この2つのテンプレートファイルは将来のバージョンのPHPでも動作するように修正したものです。この2つだけで構いませんので更新をお願いします。)
2025/03/25 v1.81.6
NEO更新
- ホスト名に特定サイトのホスト名が含まれる時に、誤動作が発生する可能性があったのを修正しました。
- 該当サイトのドメイン名+サブドメインであることをチェックするようにしてこの問題を修正しました。
GETパラメータとhiddenを使ってユーザのページ移動を追跡していた処理をSESSIONに置き換え
- URLから値をGETするGETパラメータとPOSTのhiddenパラメータを複雑に組み合わせてユーザの行動を追跡していた処理のSESSIONへの置き換えに成功しました。
- テンプレートのリンク部分に値をセットし、さらにテンプレートのFormにhiddenパラメータを多数セットしてユーザの行動を追跡していました。
- 例えば90ページ目から管理者ログインページに移動して、管理者ログインした時に掲示板の1ページ目にもどるのは不親切なので、管理者ログインが成功した時にもとの90ページ目に戻るようにする処理です。
- もとのページが記事番号120番の個別スレッドページであれば処理が完了した時にもとの120番の個別スレッドに戻ります。
- これをGETとhiddenで行っていたためにテンプレートの記述が複雑になり管理しがたいものになっていました。
- 操作を開始した時点のページの内容をSESSIONに保存することで、テンプレートに蜘蛛の巣のように情報を張り巡らせなくても必要な情報を取り出せるようになりました。
explode()の分割数を制限
- explode()の第三引数を設定して、必要の無い分割は行わないようにして、負荷を削減しました。
変更があったファイル
- app/neo/neo.js
- functions.php
- index.php
- misskey_note.inc.php
- search.inc.php
変更があったテンプレート
- template/basic/admin_in.html
- template/basic/before_del.html
- template/basic/before_edit.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/parts/admin_login_link.html
- template/basic/parts/before_edit_nav_menu.html
- template/basic/parts/edit_to_admin_login_link.html
- template/basic/parts/threads_loop.html
- template/basic/res.html
- template/basic/res_catalog.html
- template/basic/search.html
(互換性はありますので、テンプレートの更新は必須ではありません。)
2025/03/22 v1.80.5
PaintBBS v1.6.15
- PaintBBS NEOを更新しました。より詳細なエラーメッセージを表示します。
- v1.6.15で、Petit NoteとPOTI-boardで使用していた派生版のNEOにしかなかった機能を追加しました。
- また、互換性の問題が発生しないようにするための設定項目を追加しました。
これにより、派生版を使う必要がなくなりました。
変更があったファイル
- app/neo/neo.js
- index.php
変更があったテンプレート
- template/basic/paint_neo.html
2025/03/18 v1.80.3
バグ修正
- Misskey連携投稿時にエラー処理のテンプレートのファルパスが正しく取得できず、サーバ内部のPHPのエラーになっていたのを修正しました。
この問題は、v1.65.1で発生し、v1.80.2で修正されました。
編集関連テンプレートのリファクタリング
- 管理者ログインページへの複雑なリンクを共通のHTMLのパーツにして、テンプレートの複雑さを解消。
- 編集前の画面が全体のページの一部あるいは、個別スレッドだった時の動作を編集・削除・Misskeyノートで統一しました。
メール通知クラス、Misskey投稿機能のクラス、API処理等めったに弄らない箇所のリファクタリング
- ネストが深すぎて読みにくかったり、変数名が本来の意図を反映していない等の問題を解消するため、コードの書き直しを行いました。
- 使用していない、または使用する必要のない変数を洗い出して整理して意図がわかりやすくなるようにしました。
変更があったファイル
- index.php
- functions.php
- connect_misskey_api.php
- misskey_note.inc.php
- noticemail.inc.php
- search.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_to_admin_login_link.html
従来のテンプレートをそのままご利用いただいても問題ありません。
2025/03/11 v1.79.2
バグ修正
- Misskey投稿機能が動作しなくなっていたのを修正しました。
この問題はv1.70.7で発生し、v1.75.2で修正されました。
検索結果の配列をキャッシュして負荷を削減
- 同じ検索条件の時に次ページを表示すると1ページ目と2ページ目両方とも全ページ分の計算を行い、さらに次のページを表示するときにも全ページ分の計算を行っていました。
- 検索結果が何件あるのかを把握するために一度は全ページ分の検索結果を取得する必要がありますが、ここで一度取得した結果を次ページやさらにまた次のページでも再利用できるようになりました。
- この検索結果はSESSIONに保存され、検索の条件を変更して別の検索を開始した時は破棄して計算をやり直します。
- 掲示板の1ページ目の配列のキャッシュのファイルの更新時刻と比較して、情報が古くなっている時はSESSIONに格納したキャッシュを破棄して計算をやりなし、古い情報が誤って表示されないようにします。
検索処理のClassを作成してファイルを分割
search.inc.php
に検索処理をまとめファイルを分割しました。
ひとつのファイルの行数が多くなりすぎるとメンテナンスが困難になるからです。
PHP8.5のrfcで削除が提案されているfilter_input()関数の使用を中止してユーザー定義関数へ
- PHP: rfc:deprecations_php_8_5このrfcでfilter_input()関数の削除が提案されています。
- 2/3以上の賛成がなければ非推奨にはなりませんがPHP8.5が出る頃には今よりも時間がなくなっている可能性があるため、作業ができる時に作業しました。
- filter_input()関数の使用を中止して、代わりにユーザー定義関数を作成し、10ファイルに230箇所あった、filter_input()関数を書き直しました。
変更があったファイル
- index.php
- functions.php
- connect_misskey_api.php
- misskey_note.inc.php
- save.inc.php
追加されたファイル
- search.inc.php
変更があったテンプレート
- template/basic/parts/catalog_images_loop.html
- template/basic/parts/html.html
- template/basic/parts/paging.html
- template/basic/parts/prev_next.html
- template/basic/parts/select_apps.html
- template/basic/parts/select_canvas_size.html
すべて、parts/ディレクトリ内のファイルなので、テンプレートをカスタマイズしている場合でも、今回のテンプレートの更新の影響は受けにくいと思います。
template/basic/parts/
ディレクトリを上書きアップデートするだけでテンプレートの更新は終わります。
2025/03/07 v1.73.10
改善
- 動画表示モード時に存在しないファイル名をURLパラメータにセットすると軽微なエラーが発生していました。
ロフファイルを信頼して処理するようにして、エラーを回避しつつ処理がより軽くなるようにしました。
変更があったファイル
- index.php
2025/03/04 v1.73.6
処理の最適化
- 「レス150件省略中」のように表示され、表示が省略されている記事の計算を省略して軽量化します。
省略する記事の配列を空にする関係で、既存のテンプレートでは、未定義エラーが発生します。
そのため、以下の設定項目をconfig.php
に追加しました。
// スキップして表示しないレスの配列も取得する
// する: true しない: false// しない: false に設定すると表示しないレスの配列を取得しないため、表示を高速化できます。
// しない: false に設定する時はv1.73.0以後のテンプレートへの更新が必要になります。
// 該当ファイル:template/basic/parts/threads_loop.html$fetch_articles_to_skip = false;
// $fetch_articles_to_skip = true;
ここで、
$fetch_articles_to_skip = false;
と設定しない限り、既存のテンプレートでもエラーは発生しません。
逆に、ここで、設定しない限り処理が軽くなる事もありません。
変更があったファイル
- .htaccess
- config.php
- index.php
- template/basic/parts/threads_loop.html
2025/03/02 v1.72.6
処理の最適化
- 最初の一致があった時点でそれ以上ループする必要の無い処理を即座にbreakして無駄なループを回避
- より確実な判定ができるようにコードを修正。
バグ修正
- bool型で宣言した関数の戻り値が成功した時にはtrueになるものの失敗した時にはexit()で処理が終了していたため、voidに変更して戻り値無しにした。
22年前のスクリプト、動的パレットスクリプト2003の改修
- TypeScriptの型チェックを使って潜在的な問題を洗い出して、2025年の環境にあわせて書き直しました。
- 誤った英訳が修正された事を除くと体感できる動的パレットの動作の変更はありませんが、今後のメンテナンスが容易になるように、すべてグローバル変数で動作していたスクリプトをブロックスコープのconst、letに置き換えました。
- また、その他のJavaScriptファイルも型チェックを導入して修正しました。
半角カナを日本語として含めて日本語チェック
- 本文に日本語がなければ拒絶の設定をしている時に、半角カナのみでも日本語と判定してチェックを通過するようになりました。
これまでは顔文字の( ・∀・)イイ!!等、半角カナと記号のみの投稿の時に「日本語で何か書いてください。」というエラーメッセージが表示されていました。
変更があったファイル
- functions.php
- index.php
変更があったテンプレート
- template/basic/js/common.js
- template/basic/paint_neo.html
2025/02/24 v1.70.8
処理の軽量化
- webpサムネイルの存在チェックを全ての投稿で行っていた事が判明したため修正しました。
画像が存在している場合にのみサムネイルの存在をチェックします。
変更があったファイル
- functions.php
- index.php
2025/02/24 v1.70.7
「SNSで共有する」の直接入力にBluesky、Threadsが入力されている時に、他のSNSを選択できなくなっていたのを修正
- 「SNSで共有する」の直接入力にBlueskyまたは、ThreadsのURLが入っている時に、他のSNSを選択できなくなっていたのを修正しました。
直接入力で指定したURLは、直接入力を選択した時にのみ使用されます。
アップロード画像から続きを描けるようになっていたのを修正
- 備え付けのペイントツールで直描きしたものと、アップロードした画像の区別がつかなくなるのをさけるためアップロード画像からは続きを描く事ができない仕様にした筈だったのですが、容易に続きを描く事ができる状態になっていました。
コンティニュー前画面とペイント画面の両方でアップロード画像と判定された時にはエラーになるようにして、この問題を修正しました。 - アップロード画像から続きを描きたい時は、管理者投稿モードでログインして、ペイントボタンの上にあるフォームから画像ファイルを添付します。
画像がアップロードされるとペイントツールのキャンバスに画像が読み込まれます。
そこから続きを描いて投稿できます。
今回蓋をしたのはこの機能とは別の箇所です。
SESSIONの名前をアプリ固有のものに
- SESSIONで使用するCOOKIEの名前をアプリ固有のものにして、他のアプリのSESSIONとの干渉が発生しないようにしました。
config.phpに設定項目を追加して、SESSIONの名前を設定できるようにしました。
また特に設定しなくても、index.phpを更新するだけで、デフォルトの「PHPSESSID」以外のSESSION名を使用するようになります。
explode()を呼ぶ回数の削減
- 軽い関数strpos()を併用してexplode()を呼ぶ回数を減らし、負荷を削減します。
削除前画面の英文を改善
- ブラウザの言語が日本語以外の時に表示される「本当に削除しますか?」に相当する英文をより一般的なものに置き換えました。
Klecksを更新
- 細かなバグが修正されています。
ChickenPaintを更新
- 体感できる機能の変更はありませんが、コードの細部を変更しています。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- app/klecks/ ディレクトリを上書きアップデート
- functions.php
- index.php
- config.php
(設定項目を追加しましたが、ほとんどの場合、更新する必要はありません)
変更があったテンプレート
- template/basic/before_del.html
削除前画面の英文の修正のみです。
もとの英文でも気にならない場合は、更新する必要はありません。
2025/02/15 v1.69.3
Klecks更新
- ペンブラシに「散布パラメータ」が付きました。
- キャンバスの回転時に直線ツールのアンドゥ処理が正常に行わなわれないバグが修正されました。
変更があったファイル
- app/klecks/ ディレクトリを上書きアップデート
- index.php
2025/02/13 v1.69.2
コード整理
- null合体演算子に統一。この書き直しによる動作の変更はありませんが、文字数を大幅に削減できました。
検索できる行数を拡大
- 検索時に処理可能な全体ログの行数を10000行(1万スレッドに相当)に拡大しました。
- ただし、検索結果が規定数を超えた場合は処理が停止します。(正常動作)
別のツールを選択するをGETから、非同期通信に変更
- 画面に縦スクロールがある時に別のツールを選択するボタンを押すると、一番上の位置に移動してしまい、押したボタンの箇所まで手動でスクロールする必要がありました。
GETパラメータで変数をセットしていたからです。
これを非同期通信のPOSTによるSESSIONを使った変数のセットに変更します。
縦スクロールが発生している状態の時にも、同じスクロールの位置を保持したまま自動でリロードします。
TwitterカードをLargeに
- 小さめに設定していても、Blueskyなどでは大きなOGPイメージが表示されるため、 Twitter(X)のリンク共有時の画像の時にも大きな画像を表示します。
変更があったファイル
- index.php
- functions.php
- misskey_note.inc.php
- connect_misskey_api.php
- save.inc.php
変更があったテンプレート
- template/basic/continue.html
- template/basic/js/common.js
このJavaScriptに非同期処理を追加しています。
continue.htmlとセットで更新する必要があります。 - template/basic/res.html
2025/02/03 v1.68.10
Klecks更新
- Klecksを最新版に更新しました。選択範囲などの機能追加のほか、アンドゥ履歴の保存方法が変更になり安定性が向上しています。
注意、paint_klecks.htmlを同時に更新しないと投稿に失敗します。
テンプレートだけ先に更新→問題ありません。
Klecks本体を更新して、テンプレートはあとから→テンプレートが更新されるまで投稿に失敗します。
更新後は必ず投稿ボタンを押して、投稿できる事をご確認ください。
バグ修正
- 前回の更新で追加したホームのリンクをサイト名にする設定で、「Petit Note」のようなスペースが入る文字列を設定したときに「PetitNote」のようにスペースが除去されてしまうバグを修正しました。
変更があったファイル
- app/klecks/ ディレクトリを上書きアップデート
- index.php
変更があったテンプレート
- template/basic/paint_klecks.html
PNG画像のプロミスがblobに確実に変換されるのをまってから処理するようになりました。
古いバージョンのKlecksもこの新しいテンプレートのほうが確実に画像を受信できます。
Klecksを今回更新分の新バージョンにすると、古いバージョンのテンプレートでは受信に失敗します。
このテンプレートを必ず変更し、投稿できることをご確認ください。
2025/02/01 v1.67.8
config.phpに新規設定項目を追加
config.phpに設定項目を2つ追加しました。
// 掲示板からの戻り先のホームページの名前
// 空欄なら「ホーム」と表示されます。
$sitename = "";
掲示板から運営しているホームページにもどる時に単に「ホーム」と表示するのではなく、運営しているサイトの名前が入ったリンクにしたい時は
$sitename = "私のホームページ";
のように入力します。空欄なら、従来と同じように「ホーム」と入ります。
// 本文を必須にする
// する: true しない: false
// $comment_input_required = true;
$comment_input_required = false;
本文を必須にする設定項目を追加しました。
コメントの入力なしで画像だけ投稿できるようにしていましたが、画像を投稿するだけでなくあわせてコメントも投稿して欲しい時には、
$comment_input_required = true;
とします。
しかし、これらの設定が必要ない場合は、config.phpを更新する必要はありません。
ページ番号や前のページにもどる「prev」にマイナスの数字がセットされる問題を修正
ページ送りのリンクに、マイナスのページ番号がセットされる事がありました。
Googleがクロールする時に、60件単位で表示しているページの30件目を取得したとします。
その位置の一つ前のページは-60件と計算すると-30になってしまいます。
マイナスの値の時には0を代入、あるいはリダイレクト等の処理を行うようにして、この問題を修正しました。
検索エンジンがリンクを辿っても意味がない動画ファイルやJavaScriptのリンクに rel nofollow
Googleがクロールできる数には限度があるため、クロールしても意味がないリンクにあらかじめrel nofollowをセットします。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- functions.php
- index.php
- config.php (新規設定項目が必要ない時は更新の必要はありません)
変更があったテンプレート
- template/basic/error.html
- template/basic/main.html
- template/basic/paint_neo.html
- template/basic/pch_view.html
2025/01/15 v1.67.8
PaintBBS NEO更新
- PaintBBS NEOを更新して、キャンバス周辺の格子部分をタッチした時のスクロールの制御処理をNEO本体に移動しました。
- これまでは、格子模様の箇所をタッチした時にスクロールが発生しないようにするためにNEOの外部のJavaScriptで制御していました。
- v1.65.0で続きを描く時に描画アニメーションをスキップする機能を追加しましたが、画像を取得した直後にアンドゥするとキャンバスが空白になっていました。
- この問題を修正するため、続きを描く画面でアニメーションをスキップする時は動画のアンドゥの履歴を保存しないようにしました。
- 静止画が表示された後の加筆の履歴は保存されます。
変更があったファイル
- app/neo/neo.js
- index.php
変更があったテンプレート
- template/basic/paint_neo.html
2025/01/13 v1.67.6
ChickenPaint 更新
- 上のレイヤーと下のクリッピング元のレイヤーを結合する処理は改善できていました。
- しかし、下のレイヤーがクリッピング元ではなく、そのさらに下にクリッピング元のレイヤーがある時に、正常に結合できない問題が発生していました。
- 今回の更新でこの問題を修正しました。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2025/01/12 v1.67.5
管理者投稿モード、管理者編集モードでログインしている時は管理者投稿から続きを描く時のパスワードを省略します
- 管理者パスワードや、管理者投稿モードで投稿した記事のログファイルには管理者の投稿である事が記録されています。
その管理者の投稿を管理者がログインして続きを描く時にはパスワードの入力を省略します。
サーバ移転時のパーミッションの手動設定作業を減らす
- 無料レンタルサーバのサービス終了などで、別のサーバにデータを移転する時の、手動によるパーミッション変更作業は必須ではなくなりました。
スクリプトの側で動作チェックしてパーミッションの変更が必要な時はファイルやフォルダのパーミッションを変更してエラーを回避します。
おそらくサーバ移転時に必要になるユーザーが行わなければならないパーミッションの変更はlog/
ディレクトリの中に入っている1.log
といった拡張子が.log
のファイルだけです。
この拡張子.log
ファイルは、外部から覗かれないようにするためパーミッションを600
にします。
しかし、何もしなくても、問題なく動作するはずです。
ChickenPaint Be更新
- クリッピングマスクを適用した状態のまま1枚のレイヤーに結合する事ができるようになりました。
- これまでは、クリッピングレイヤーを下のレイヤーと結合するとクリッピングマスクが無効化されてしまい盛大にはみ出していました。
変更があったファイル
- app/chickenpaint/
- functions.php
- index.php
変更があったテンプレート
- template/basic/continue.html
2025/01/01 v1.66.3
動作環境がPHP7.1以上になりました
関数の戻り値の型指定その他の機能を使用するようになったため、動作環境がPHP7.0以上から、PHP7.1以上に変更になりました。
PHP7.1はサポートが終了した古いバージョンのため、可能であればPHP8.2や、PHP8.4といった新しいバージョンのPHPでの使用をお願いします。
NSFW等、年齢制限が必要なコンテンツに対応するためのオプションを追加
config.phpに新規設定項目を追加しました。
// 年齢確認を必須にする
// する: trueで掲示板のすべてのコンテンツの閲覧に年齢確認が必要になります。
// あなたは18才以上ですか?という年齢確認確認画面が表示されます。
// 年齢確認画面以外のコンテンツは検索エンジンから認識されなくなります。
// する: true しない: false// $age_check_required_to_view = true;
$age_check_required_to_view = false;
年齢確認画面を表示して、
「はい、18才以上です。」「いいえ、18才未満です。」
というボタンを表示します。
掲示板内部のHTMLは、18才以上ですのボタンを押すまで生成されないため、検索避けにも使えます。
// 「18才未満です。」を押した時のリンク先
$underage_submit_url="https://www.google.com/";
初期設定では、「いいえ、18才未満です。」を押した時に、Googleを表示します。
// すべての画像を閲覧注意に設定する
// する: trueに設定するとすべての画像が閲覧注意になります。
// 投稿時の「閲覧注意に設定する」のチェックボックスは表示されません。
// する: true しない: false// $set_all_images_to_nsfw = true;
$set_all_images_to_nsfw = false;
すべての投稿を閲覧注意画像として表示する設定です。
「閲覧注意にする」のチェックボックスによる選択は必要ないため、チェックボックスは表示されません。
ただし、この設定の時には覧注意画像かそうではないのかをログファイルに記録しないため、すべての画像を閲覧注意に設定「する」から「しない」に切り替えると閲覧注意としてマークされないまま表示されてしまいます。
掲示板単位で、すべて閲覧注意にしたい時のためのオプションです。
変更があったファイル
- config.php
(新規設定項目が必要ない場合は変更する必要はありません) - connect_misskey_api.php
- functions.php
- index.php
- misskey_note.inc.php
- save.inc.php
- thumbnail_gd.inc.php
変更があったテンプレート
- template/basic/res.html
- template/basic/parts/form_aikotoba.html
- template/basic/parts/form_set_nsfw_show_hide.html
追加されたテンプレート
- template/basic/age_check.html
(年齢確認ボタン)
変更があったテンプレート内のJavaScript
- template/basic/js/common.js
2024/12/24 v1.65.0.1
PaintBBS NEOの続きを描く画面でアニメーションを再生しない
- NEOで続きを描くと、描いた手順の描画アニメが再生され再生を最後まで待つか、画面をタップして再生をスキップする必要がありました。
- 今回の更新で続きを描く画面では描画アニメを再生せず、アニメデータからレイヤー情報だけを取得して静止画として画面に出力するようになりました。
- これにより、アニメの再生がはじまった時にタップしてスキップする必要がなくなりました。
- アニメを見られたくない人が「動画を表示しない」にしていても、誰でも続きが描ける時はキャンバス上でアニメが再生され描いた手順を見られてしまうという問題を解消する事ができました。
- オリジナルのPaintBBSにより近い動作になりました。
変更があったファイル
- app/neo/neo.js
- index.php
変更があったテンプレート
- template/basic/paint_neo.html
2024/12/16 v1.63.5
「SNSで共有」機能がThreadsに対応しました
- Meta社のSNS「Threads」の共有リンクが作成できるようになりました。
変更するファイルの数は少ないのですが、「Threads」に対応させるには、config.php
の再設定が必要になります。
「Threads」対応の必要が無い場合は、config.php
の再設定は必要ありません。
// SNS共有の時に一覧で表示するサーバ
//例 ["表示名","https://example.com (SNSのサーバのurl)"],(最後にカンマが必要です)
$servers =
[
["X","https://x.com"],
["Bluesky","https://bsky.app"],
["Threads","https://www.threads.net"],
["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"],
];
// SNS共有の時に開くWindowsの幅と高さ
//windowの幅 初期値 600
$sns_window_width = 600;
//windowの高さ 初期値 600
$sns_window_height = 600;
["Threads","https://www.threads.net"],
が1行追加になり
さらに
$sns_window_width = 600;
$sns_window_height = 600;
のように、初期値を600pxに変更しています。
ここのウィンドウサイズを変更しなくても表示できますが、画面下側が少し隠れ気味になります。
また、従来のウィンドウ幅でSNSの共有先の画面が表示されたあとの操作のための幅と高さが不足していたかもしれません。
そのため、幅、高さともに600pxに拡張しています。
変更があったファイル
- config.php
(SNS共有で、Threadsの共有リンクを作成したい場合は更新が必要) - functions.php
- index.php
2024/12/12 v1.63.5
PaintBBS NEOで「画像から続き」を描いた時にもレイヤー情報を保存
- 「動画から続きを描く」「画像から続きを描く」のうち、画像から続きを描くを選択した時には、描画アニメデータを保存しない仕様を廃止して、どちらを選択しても、描画アニメデータを記録するようにしました。
「画像から続きを描く」とその画像以前の描画アニメデータは消えますが、そこから作画した描画アニメデータは記録されるようになりました。
単に作画工程を再現するだけでなく、そこにはレイヤー情報が含まれているからです。
意図せずレイヤー情報が消えてしまうリスクを減らします。 - 描画アニメデータが保存されない時は、「レイヤー情報は保存されません。続行してよろしいですか?」という確認ダイヤログが開くようになりました。
「OK」「キャンセル」のうち「OK」を押した時にのみ、レイヤー情報なしの状態で保存します。
キャンセルすれば、レイヤー情報が消えてしまう前提で作画を続行できます。 - 「画像から続き」を描いた時にも描画アニメデータが記録されるようになったため、「動画を表示しない」のチェックボックスを表示するしないの判定をJavaScriptで行うようになりました。
マークダウン形式のリンクの機能を改善
- マークダウン形式のリンク
[文字列](URL)
を改善しました。
文字列を指定する[]
の中にさらに[]
がある時は、バックスラッシュ(円マーク)でエスケープします。
エスケープされていれば
[12345] Petit Note
のようなリンクになります。
例)
[\[12345\] Petit Note](https://example.com)
マークダウン形式のリンクを作成するChromeの拡張機能のいくつかは、上記の例のように[]
の中の[]
をバックスラッシュでエスケープしますから、拡張機能が作成したマークダウンのリンクをそのまま使う事ができます。
記事編集前画面からスレッドに戻る
- 記事の編集・削除前画面からスレッドに戻るリンクをクリックした時に、該当発言の位置まで画面がスクロールするようになりました。
AXNOS Paint更新
- 軽微なCSSのバグを修正しました。
変更があったファイル
- app/axnos/axnospaint-lib.min.js
- app/neo/neo.js
- functions.php
- index.php
変更があったテンプレート
- template/basic/continue.html
- template/basic/paint_neo.html
- template/basic/parts/before_edit_nav_menu.html
2024/12/08 v1.61.1
ペイントツール固有形式ファイルが存在している時にもすべてのツールで続きを描く事が可能に
- これまではChickenPaint固有形式
.chi
、PaintBBS NEO固有形式.pch
、Klecks固有形式.psd
が存在する時は対応するペイントツールが起動して、他のツールを選択する事ができませんでした。
これは、レイヤー情報を含むファイルが存在しているのに、レイヤー情報を引き継ぐ事ができない別のペイントツールを選択する必要はないという判断からでした。
しかしながら合作などの場合には、描きやすいツールが人によって異なるため、ツールを自由に切り替える選択肢も必要でした。
「続きを描く」時に、レイヤー情報が存在するツールのみの状態で画面が開いたあと、「別のツールを選択する」ボタンを押下すればツール選択のプルダウンメニューが表示されるようになりました。
AXNOS Paint更新
- 画面が狭い端末でも操作しやすくなりました。
変更があったファイル
- app/axnos/ ディレクトリを上書きアップデート
- index.php
変更があったテンプレート
- template/basic/continue.html
(従来と同じ機能のままで問題なければテンプレートを変更する必要はありません。)
2024/12/04 v1.60.7
ChickenPaint Beで通信エラーが発生した時のHTTPステータスコードをよりわかりやすく
- これまでChickenPaint Beで通信エラーが発生した時のエラーメッセージは英語のみでした。
今回の更新で日本語環境の時には、通信エラー時のエラーメッセージが日本語で表示されるようになりました。 - 最初に表示される「画像を保存できませんでした。」に続く文言に「エラーメッセージをご確認ください。」と入るようになりました。
エラーが発生した状況の詳細は、このアラートではなく次に表示されるエラーメッセージにあるのでそちらを見て欲しいからです。
↑
エラーメッセージの3桁の数字がHTTPステータスコードである事をわかりやすく表示。
この場合は「404」なので、404Not Foundです。
サーバが混雑している時には「503」が返ってくる可能性が高く、サーバによる拒否であれば「403」が返ってきます。
「200」の時には投稿可能な状態なので、エラーメッセージは表示されず投稿処理が行われます。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2024/12/03 v1.60.6
ユーザー認証コードの見直し
- ユーザーコードを64文字に拡大しました。
- 画像差し換え時の認証コードのハッシュ値の種にパスワードを使用するのを止めました。
- 画像差し換え時の認証コードに、記事番号と記事IDをそのまま含める形にし、記事が異なる時には認証コードの重複が発生しないようにしました。
(従来の方式でも重複発生による事故は確認されていません。) - 画像差し換え処理の時にも、投稿された画像の本人確認を追加して、ユーザーコードあるいはIPアドレスが一致する時にのみ投稿が成功するようにしました。
コード整理
- 機能上はなんら変わりありませんが、削除可能な箇所のコードを削除して、メンテナンスしやすくしました。
ChickenPaint Be更新
Feature request/proposal: converting brightness to opacity · Issue #4 · satopian/ChickenPaint_Be
- 「輝度を透明度に変換」機能を追加しました。
- @SuzuSuzu-HaruHaruさんが作成した原型をもとに不透明度の計算方法を調整し、一般的なペイントソフトと比較しても遜色のない機能として実装しました。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- functions.php
- index.php
- misskey_note.inc.php
変更があったテンプレート
- template/basic/continue.html
- template/basic/search.html
今回のテンプレートの更新はHTMLファイル内のif文の複雑さの解消だったりしますので、とくに更新しなくても問題なく動作します。
2024/11/26 v1.58.3
- PHP8.4で、exit()が言語構造から関数になったため、丸括弧なしの
exit;
をexit();
に変更しました。
丸括弧なしのexit;
は将来のバージョンのPHPでは非推奨になる可能性があります。
【PHP8.4】exitが言語構造ではなくなった #日本語訳 - Qiita
https://qiita.com/rana_kualu/items/60912b8cac8deeaa3560
- webp形式のサムネイルへの切り替えの対応が不十分だっただめ、投稿通知メールに、サムネイルのurlが表示されなくなっていたのを修正しました。
- サムネイル作成ができるかどうかチェックしていた関数を
thumbnail_gd.inc.php
のメソッドにして1つのclassにまとめました。
functions.phpの行数が減りメンテナンスしやすくなりました。
変更があったファイル
- functions.php
- index.php
- thumbnail_gd.inc.php
変更があったテンプレート
- template/basic/error.html
2024/11/22 v1.58.3
新しいPHP8.4に対応させるため古いPHP5.6の対応を終了
- 古いPHP5.6でも使えるようにしてきましたが、PHP7.0以後に追加された新しい関数を使用する必要にせまられたため、PHP5.6の対応を終了しました。
- 動作環境はPHP7.0-PHP8.4になります。
PHP8.4のRFCで削除が検討されたものの、反対票がわずかに多かったため非推奨にならなかった関数のいくつかをPetit Noteで使用していました。
PHP: rfc:deprecations_php_8_4
https://wiki.php.net/rfc/deprecations_php_8_4
Deprecate uniqid()
今後の事を考えて、uniqid()
の使用をやめ、代わりにrandom_bytes()
を使用する事にしました。
しかし、この関数はPHP7.0以降でなければ使う事ができないため、Petit Noteの動作環境を、PHP7.0-PHP8.4に変更しなければならなくなりました。
よほど古いサーバであったり、古いPHPスクリプトを動作させる必要があるとかでなければ、PHP5.6対応終了で困る事はないと思いますが、サーバのPHPのバージョンの設定でPHP5.6を選択している方は、お手数ですがPHP7.0以降への設定の切り替えをお願いします。
同じ画像チェックのためのハッシュ値のアルゴリズムをmd5からsha256へ
Deprecate md5(), sha1(), md5_file(), and sha1_file()
PHP8.4のRFCでmd5()
の廃止も検討されていました。
そのため、同じ画像が連続投稿されるのを防止するために使用していたmd5
による画像のハッシュ値の取得をsha256
に変更しました。
問題点
- これまでのログファイルのハッシュ値は
md5
で取得したものであるため、過去の画像のハッシュ値は意味をなさなくなってしまいます。 - そのため、v1.58.3への更新後に新規に投稿された画像のみが重複チェックの対象になります。
クロールしても意味がない「編集」「未投稿画像」のリンクにrel="nofollow"
- Googleがクロールに使ってくれる時間は有限でリンク数が多いと「割当量を超えています」となり、それ以上クロールしてくれません。
- この時に、クロールしても意味が無いリンクをクロールしないように指定するとその分、必要なクロールをしてくれます。
- 「編集」「未投稿画像」のリンクを辿ってクロールしないように指定しました。
変更があったファイル
- functions.php
- index.php
- misskey_note.inc.php
変更があったテンプレート
- template/basic/main.html
- template/basic/res.html
- template/basic/paint_axnos.html
2024/11/15 v1.57.5
NEO更新
- PaintBBS NEOを v1.6.8(Petit Note版)に更新しました。
描画時間の英語表記の改善
- hrをhour、hoursに変更。単数形と複数形の切り替え。「1 hour」「2 hours」のようなより自然な英語表記になります。
- 日本語表示に変更はありません。ブラウザの優先言語が日本語の時には日本語で「1時間」「2時間」のように表示します。
短くできるコードは短くする
- ファイルポインタを開いてユーザーデータを取得していた処理を、
file_get_contents()
に置き換えてコードをより簡潔に。
クロールしても意味がないSNS連携のリンクにrel="nofollow"
- Googleなどの検索エンジンにこのリンクを辿らないようにと指示をだす、
rel="nofollow"
で、SNS連携のリンクをクロール対象から外します。 - クロールしても意味がないにも関わらずSNS連携のリンクは1スレッドに一箇所存在するため、Googleはクロールしようとします。
- クロールして欲しいページが割当量超過でクロールされなくなる問題の改善を期待して実装しました。
変更があったファイル
- app/neo/ ディレクトリを上書きアップデート
- functions.php
- index.php
変更があったテンプレート
- template/basic/parts/threads_loop.html
2024/11/11 v1.57.2
バグ修正
- v1.57.0で発生した、記事を編集するとサムネイル画像ではなく、本体画像がそのまま表示されてしまうバグを修正しました。
- 修正されたv1.57.2で再度記事を編集すれば、再度サムネイル用の縮小された画像が表示されるようになります。
.htaccessをApache2.2形式からApache2.4形式に
- Apache2.4で非推奨になったorder allow denyを、Apache2.4にあわせて書き直しました。
2024年時点のレンタルサーバの多くは、まだ古い書き方でも動作しているようですが、Apache2.2は2017年にサポートが終了しているため、新しい.htaccessへの更新をお願いします。
参考文献
Upgrading to 2.4 from 2.2 - Apache HTTP Server Version 2.4
https://httpd.apache.org/docs/2.4/ja/upgrading.html
Apache | Requireディレクティブ:アクセスの許可や拒否などのアクセス制限を行う(Apache2.4以降)
https://www.javadrive.jp/apache/allow/index1.html
変更があったファイル
- index.php
- .htaccess
- template/.htaccess
2024/11/10 v1.57.0
webpサムネイルがある時はjpegのサムネイルを作成しない
- これまではjpeg、webp両方のサムネイルを作成して、pictureタグでwebp形式の画像が表示できないブラウザの時にはjpeg形式のサムネイルを表示していました。
しかしながら、v1.56.2で、本体画像そのもののwebp形式への変換が行われる仕様になったため、すでにwebpが表示できないブラウザの対応ができなくなっていました。
そのため、中途半端なwebpが表示できないブラウザの対応を終了します。
これにより、webp形式のサムネイルが作成に成功した時はjpeg形式のサムネイルを作成する必要がなくなりました。
テンプレートのhtmlのpictureタグでwebpとjpegを振り分けていた処理が必要なくなりました。
変更があったファイル
- functions.php
- index.php
変更があったテンプレート
- template/basic/parts/before_edit_del_res_loop.html
- template/basic/parts/edit_form_res_loop.html
- template/basic/parts/threads_loop.html
2024/11/08 v1.56.8
Klecksでファイルサイズが大きすぎる時に詳細なエラーメッセージを表示
- 「ファイルサイズが大きすぎます。制限値:20MB 現在値30MB」のような形式でエラーメッセージを表示します。
Klecksで出力するPNG形式の画像ファイルとPSD形式のレイヤー情報を合計した値が、サーバの許容値を超えてしまった時に、なぜ投稿できないのかを詳細に表示します。
これまでは「投稿に失敗。時間を置いて再度投稿して下さい。」とだけ表示されていました。
レイヤー情報込みのファイルサイズなので、レイヤーの枚数が多いほど上限を超えやすくなります。
レイヤーを結合すればファイルサイズは小さくなります。
日本語表示時。
英語表示時。
変更があったファイル
- index.php
変更があったテンプレート
- template/basic/paint_klecks.html
2024/11/06 v1.56.7
ChickenPaint Be更新
- ファイルサイズがサーバの許容値を超えている時により詳細なエラーメッセージを表示します。
「ファイルサイズがサーバーの上限を超えています。」というエラーメッセージを表示します。
また、上限値と現在のファイルサイズも表示します。
これまでは「お絵かきが保存できませんでした。再度投稿してみてください。」とだけ表示されていました。
ChickenPaintのレイヤーを統合して整理すれば投稿時のファイルサイズは小さくなります。このエラーメッセージが表示されて投稿できない時はレイヤーを結合すれば投稿が可能になる場合があります。
アップロード容量の制限値を知りたい(ファイルマネージャ、FTP、PHP) - よくあるご質問 - さくらのサポート情報
https://faq.sakura.ad.jp/s/article/000001463
さくらのレンタルサーバでは、初期設定で5MBまでとなっており、それよりも大きなファイルサイズを許容してたい時は、php.iniを編集します。
Petit Noteでは、post_max_sizeとupload_max_filesizeの両方の値をみて、より小さいほうを制限値として使いますので、以下の2つの上限値を調整する必要があります。
php.iniの編集方法はサーバのマニュアルなどでご確認ください。
以下の設定例の単位はMBです。
あまり大きくしすぎるとDdos攻撃の被害にあいやすくなる事がありますので、ご注意ください。
JavaScriptのアプリの安定性なども含めて考慮すると大きくても25MBぐらいが妥当だと思います。
設定例
; Maximum size of POST data that PHP will accept.
; Its value may be 0 to disable the limit. It is ignored if POST data reading
; is disabled through enable_post_data_reading.
; https://php.net/post-max-size
post_max_size = 20M
; Maximum allowed size for uploaded files.
; https://php.net/upload-max-filesize
upload_max_filesize = 20M
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
変更があったテンプレート
- template/basic/paint_chi.html
2024/11/03 v1.56.6
ChickenPaint Be更新
- ChickenPaint Beのテクスチャパレットがスクロールできなくなっていたのを修正しました。
( テクスチャパレットのスクロールが必要になるのはスマホのような小さな画面の端末の時です。)
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2024/11/02 v1.56.5
サムネイル作成の一連のGD処理をクラス化して、可読性の高いソースコードに
thumbnail_gd.php
に機能を詰め込んだ結果、ソースコードの可読性が著しく低下してしまったため静的クラスにまとめ直しました。
thumbnail_gd.php
は削除されました。
代わりにthumbnail_gd.inc.php
を使います。
thumbnail_gd.php
は不要になりましたが、サーバ上に残っていても問題ありません。
不要なファイルを削除しようとして、必要なファイルを削除してしまう事もありますので、削除する時は十分にご注意ください。
カタログ用のwebpサムネイルが表示されないバグを修正
- カタログ専用のwebpサムネイル画像が存在しているにも関わらず、レスのカタログモードなどにjpegやpng形式の画像が表示されていました。
カタログモードのための軽量化されたファイルが存在しているのに有効活用されていませんでした。
webpサムネイルを表示するしないを判定する処理のバグを修正しました。
変更があったファイル
- functions.php
- index.php
追加されたファイル
- thumbnail_gd.inc.php
削除されたファイル
- thumbnail_gd.php
2024/11/01 v1.56.2
- 指定サイズを超過したpng画像をjpegに変換する機能を改修し、jpegではなく、webpに変換するようにしました。
画像のサイズ変更やフォーマットの変更のためのthumbnail_gd.phpを有効に活用して、本体のコードを整理しました。
同じ繰り返しを何度も記述しないようにし、可読性と保守性を高めました。 - 投稿可能な最大サイズを超過しそうな時には、もとの画像フォーマットに関係なく、webpへの変換を試みるようになりました。
フォーマットを変換してファイルサイズを削減し、投稿可能にします。 - この変更によるメリットは、透過png画像を、webpに変換したときに、透過を維持できる事です。
これまでは、png画像がjpegに変換するときに、透過png画像の透過情報が失われ背景色が白になっていました。 - デメリットは、古いiOSのSafariではwebp画像が表示できない事です。
iOS14未満の時にこの問題が発生します。これはGoogleが開発したwebp形式画像をAppleがなかなか採用しなかった事により発生している問題ですが、2020年頃にはほとんどのブラウザが対応しているため、2020年でブラウザの更新が停止しているようなケースでなければ問題ないはずです。
変更があったファイル
- thumbnail_gd.php
- functions.php
- index.php
2024/10/25 v1.55.7
ChickenPaint Be更新
ブラシプレビューの円をドラッグしてブラシサイズを変更する機能をペン対応に
- ブラシプレビューのプレビュー画面の円をドラッグしてブラシサイズを変更する操作がペンでもできるようになりました。
ペンでも操作できるようにするため、マウスに最適化されていた処理をPointerEventに書き直しました。
また、各パレットとメインメニューのtouchmoveEventのデフォルトの動作をキャンセルし、誤動作が発生しないようにしました。
ペンが画面から離れているにもかかわらず、ドラッグしている対象が動いたままになる問題を修正しました。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2024/10/25 v1.55.6
ChickenPaint Be更新
テクスチャパレットにノイズテクスチャを追加
- 「テクスチャパレット」に「ノイズテクスチャ」を追加しました。
これまでも、「効果メニュー」の「単色ノイズ」とレイヤー効果でノイズをのせる事ができましたが、それとも少し違うノイズを出す事ができます。
ペンや鉛筆と組み合わせて使う事で、より鉛筆らしい線を描写できます。
また水彩ブラシなどの厚塗りの時にも効果を発揮します。
消しゴム使用時はテクスチャを無効化
- 消しゴム使用時はテクスチャを無効化する処理を追加しました。
テクスチャを選択している時にも、消しゴムで消去できるようになりました。
これまでは、テクスチャを選択したまま消しゴムをかけると、薄くはなるものの、消す事ができませんでした。 - 薄消しゴム使用時はテクスチャが適用されます。消しゴムを使ったテクスチャのかけ合わせによる模様の作成をする時は薄消しゴムをご利用ください。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2024/10/23 v1.55.1
検索処理のコードを最適化
- 同じ処理の繰り返しを関数化してコードの可読性を高めました。
この関数化により同じ繰り返を繰り返していた16行を4行にまとめる事ができました。
ChickenPaint Be更新
- Bootstrapをグローバルに宣言するのをやめ必要な箇所にimportするようにしました。
また、削減可能な処理を削除しました。
ビルドの日付が、「ChickenPaint Beについて」に入るようになりました。
これにより、いつビルドされたChickenPaint Beなのかが一目でわかるようになります。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
- functions.php
2024/10/15 v1.53.7
ChickenPaint Be更新
- ChickenPaint Be拡大縮小のショートカットキーをKlecksやAXNOS Paintと同じ、「+」「-」に変更しました。
これまでは、「ctrl + +」「ctrl + -」のように「ctrlキー」と一緒に押下する必要がありました。 - ChickenPaint Beのファイルサイズを23.7%削減。
ビルドツールの変更とIE互換のために使用していたポリフィルのパッケージの削除により、ファイルサイズを779KBから594KBに削減する事ができました。
軽量化により、より高速に起動できるようになりました。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2024/10/04 v1.53.6
Lightbox更新
- Lightbox v2.11.5にアップデートし、さらにそこから再度改造してお絵かき掲示板仕様にしました。
AXNOS Paint更新
- レイヤーのサムネイル画像の背景を単色グレーから市松模様に変更しました。
- レイヤーのサムネイル画像の線画等の太さを太くして視認性を向上させました。
これはAXNOS Paintの公式対応ではなく、改造版の仕様変更です。
この仕様変更によって問題が発生した場合の責任はオリジナルのAXNOS Paintの開発者にはありませんので、そのような内容をオリジナルのAXNOS Paintの開発者に問い合わせないようお願いします。
変更があったファイル
- index.php
- app/axnos/ ディレクトリを上書きアップデート
- lib/lightbox/ ディレクトリを上書きアップデート
2024/10/02 v1.53.3
Misskey連携機能のバグを修正しました
- MisskeyのAPIを使った投稿機能(Misskeyにノート)機能には、一度認証が成功したサーバは次回の認証をスキップできる便利な機能があります。
しかし、認証が成功した時に別のMisskeyサーバに投稿しようとすると、認証に失敗して投稿画面にもどされてしまいます。
これは、認証に成功したときのトークンが残っているからです。
別のMisskeyサーバを選択した時は、このトークンをクリアして、再度認証のための操作が行えるようにしました。
変更があったファイル
- index.php
- misskey_note.inc.php
- config.php
config.phpにMisskeyサーバを1つ追加しましたが、ただそれだけです。
config.phpを特に更新しなくてもなんら支障なく使えます。
2024/09/30 v1.53.2
PaintBBS NEO更新
別ページに移動してしまった時や、ブラウザのタブを誤って閉じた時に画像を復元する機能が、PaintBBS NEOにはありますが、復元時にあやまって小さなキャンバスサイズを選択して復元すると、その小さなキャンバスサイズにあわせて画像が切り取られていました。
その後に大きなキャンバスサイズを選択して再度復元しても、画像は小さく切り取られたままでした。
今回の更新により、再度大きなキャンバスサイズを選択すればもとのサイズで画像を復元できるようになりました。
変更があったファイル
- app/neo/ ディレクトリを上書きアップデート
- index.php
2024/09/28 v1.53.1
PaintBBS NEO更新
PCの電源が落ちた状態からの画像の復元ができるようになりました
別ページに移動してしまった時や、ブラウザのタブを誤って閉じた時に画像を復元する機能が、PaintBBS NEOにはありますが、落雷による停電等でPCの電源が落ちてしまった時は、画像を復元する事ができませんでした。
ページを移動した時やタブを閉じた時にしかバックアップ用のデータを保存していなかったため、落雷等による予期しない電源の遮断時に復元データは保存されていませんでした。
そのため、復元用のデータを10ストロークごとに保存し、ブラウザを完全に終了した時にもデータを保存するようにしました。
そして、データの保存先をモバイル端末使用時と同じローカルストレージになるように変更しました。
しかし、これだけでは問題が残ります。
試し書き等のデータが1週間後あるいはもっと先まで保存され続け、予期しないタイミングで復元される可能性があります。
それらを考え、3日以上経過した古い復元データは自動的に破棄する仕様にしました。
近年の気候変動により、雷雨による停電が増えています。
今回のPaintBBS NEO v1.6.5により、突然停電になった時でも、描画途中のデータを復元できるようになりました。
PC版のChrome、EdgeそしてFirefoxで動作確認しています。
変更があったファイル
- app/neo/ ディレクトリを上書きアップデート
- index.php
2024/09/27 v1.52.1
JavaScriptに関連する箇所のコードを整理しました。
機能に変更はないため、急いで更新する必要はありません。
11月に正式にリリースされる予定のPHP8.4のテスト環境を構築して、テストを行いましたが現時点では特に問題なさそうです。
現状のままでも、軽微なエラーも深刻なエラーも発生しないものと思われます。
変更があったファイル
- app/neo/ ディレクトリを上書きアップデート
- index.php
変更があったテンプレート
- template/basic/continue.html
- template/basic/paint_neo.html
2024/09/19 v1.52.0
描画時間の表示方法の変更
- 1時間ちょうどの時に「描画時間:1時間」となっていた表示を「1時間0分0秒」のような表示になるようにしました。
日があれば「日時分秒」を表示。時間があれば「時分秒」を表示。分があれば「分秒」を表示します。
[post posts][day days]等の単数形と複数形を正しく表示
- 1 daysや、1postsのように数値が1であるにも関わらず複数形表示になっていたの修正しました。
ブラウザの優先言語が日本語以外時の表示に関する修正であるため、優先言語が日本語の時の表示の変更はありません。
スレッドが閉じるまでの残り時間の表示方法を修正
- 「あと2日で」「あと1時間で」等の「日時」に加え「あと28分で」のような「分」表示を追加しました。
ChickenPaint Be更新
- Bootstrap3、Bootstrap4のレガシーなCSSクラスが残っていたのを整理しました。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- functions.php
- index.php
変更があったテンプレート
- template/basic/parts/threads_loop.html
2024/09/07 v1.51.2
ペイント画面のテンプレートを更新しました。
- Klecksで続きを描く時にPNG、JPEGなどの画像ファイルの読み込みに失敗する事があるのを修正しました。
- Klecksで透過PNGから続きを描いた時に透過にならず白塗りつぶし背景になるバグを修正しました。
レイヤー情報を記録しているPSDファイルが存在している時にはこの問題は発生しないため発見が遅れました。 - 画像を保存するためのファイルが存在しない時の404エラーのエラーメッセージを修正しました。
エラーメッセージにインクルードして使っている直接呼び出していないファイル名が表示されていました。
AXNOS Paint更新
リリースされたAXNOS Paint v2.3.0をPetit Note用に改造し直しました。
変更があったファイル
- app/axnos/ ディレクトリを上書きアップデート。
- index.php
変更があったテンプレート
- template/basic/paint_axnos.html
- template/basic/paint_chi.html
- template/basic/paint_klecks.html
- template/basic/paint_tegaki.html
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
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とは (アクノスペイントとは) [単語記事] - ニコニコ大百科
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タップで複製できるようになりました。
これまではショートカットキーを使用するか、上段のメニューから複製を選択する必要がありました。 - 下のレイヤーと結合アイコンをより視覚的にわかりやすいものに変更しました。
- レイヤーグループ結合アイコンを下のレイヤーと結合アイコンと同じ位置に配置しました。
レイヤーグループのフォルダ選択時はグループ結合アイコンになり、レイヤーの選択時には下のレイヤーと結合アイコンに入れ替わります。
変更があったファイル
- index.php
- app/chickenpaint/ ディレクトリを上書きアップデート
2024/07/13 v1.38.5
ChickenPaint Be更新
- 背景レイヤーと透明なレイヤー合計2枚で起動します。
白い背景レイヤーに線画を描く事故を減らせます。
変更があったファイル
- 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更新
- モバイルモード時にレイヤーパレットの不透明度調整スライダの文字がぼやけてしまう問題を修正しました。
-
ツールオプションのスライダの間隔を広げて、指で操作できるようにしました。
-
画面の幅に余裕があるにも関わらずツールオプションの画面上からの位置がモバイルモード時は操作パレットの下になってしまっていたため、
画面幅-(ツールパレット+操作パレット)<200px
の時は、操作パレットの下の位置、それ以上の画面の横幅がある時は最上段に表示するようにしました。
これによりより広く画面を使えるようになります。
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
2024/06/10 v1.37.0
ChickenPaint Be更新
- 768px以下の幅と高さのデバイスの時はスマホ用のUIに切り替えてパレットを折りたたみます。UIが使用する面積が少なくなるため、より大きなキャンバスに描画する事ができるようになります。
iPad.mini.mp4
- スマホ用UIの時のカラーセットのマージンを広げ、指でタップできるようにしました。
NEOの描画画面の描画時間の時計をタップするとスクリーンキーボードが出現する問題
変更があったファイル
- app/chickenpaint/ ディレクトリを上書きアップデート
- index.php
変更があったテンプレート
- template/basic/paint_neo.html
2024/06/09 v1.36.27
ChickenPaint Be更新
- スマホモードの時のパレットのタイトルバーの厚みを折りたたみ/展開の操作を容易にするため増やしました。
- スマホモード時のレイヤーパレットの操作アイコンの間隔が狭くなっていたため広げました。
- 折りたたみ/展開のアイコンと閉じるアイコンの両方を表示する事により誤タップが発生して、誤って閉じてしまう事があったため、スマホモード時は閉じるアイコンを表示しなくなりました。
代わりに上段の表示/非表示のショートカットメニューで操作します。
変更があったファイル
- 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更新
- スマホ時にもあえてブランドロゴを表示して、ブラウザのホームボタンの誤タップが発生しないようにしました。
- パレット表示非表示のショートカットメニューがデバイスの幅いっぱいに広がるようにしました。
これまでは、間隔が狭すぎて意図した箇所の黄色いショートカットメニューをタップできない事がありました。
2024/06/07 v1.36.22
ChickenPaint Be更新
- スマホ時のChickenPaintのメニュー操作で、ぼかしやグリッド設定などの数値入力を行ったあとキャンバスサイズが全画面にもどらなくなる問題を、v1.36.8で修正しましたが、パレット位置がモーダル表示前と表示後でずれる問題が残っていました。
モーダルウィンドウの表示イベントを取得して、自動的にハンバガーメニューを閉じるようにして、この問題を修正しました。 - スマホ・タブレットを縦または横に変更したときにハレットの配置を自動的に初期化します。
v1.36.8で、ウィンドウのサイズが変更になった時にパレットの配置の初期化する処理を追加しましたが、レイヤー名のリネーム時のスクリーンキーボードの出現をウィンドウのサイズ変更として検出してしまい、レイヤー名を変更できなくなっていたため、スマホ・タブレットの向きが変更された時にパレットの配置の初期化するようにしました。
- 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
改善
- 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
改善
「編集」「削除」「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を追加しました
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
ダークモードを実装しました
ダークモードを実装しました。
しかしながら、ダークモードを使いたくないという方もいると思います。
また、ライトモードからダークモードに切り替えるのではなく、最初からダークモードにしたい方もいるでしょう。
例えばサイトの全体の色調はダークモードなのに掲示板だけライトモードの場合等です。
そのため以下の設定項目を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
「閲覧注意」に設定した時はボタンの配色を変える
編集モードの時のボタンの配色変更処理を忘れていたため追加しました。
編集画面でも、「閲覧注意にする」にチェックが入るとボタンの周囲にピンク色のボーダーが入り背景色が白くなります。
変更があったファイル
- index.php
変更があったテンプレート
- template/basic/edit_form.html
2024/02/12 v1.18.3
改善
「閲覧注意」に設定した時はボタンの配色を変える
「閲覧注意」に設定している時は「スレッドを立てる」「投稿する」等のボタンの周囲にピンク色のボーダーが入り、ボタンの背景色が白くなるようにしました。
これにより、「閲覧注意」に設定し忘れていた、逆に「閲覧注意」に設定されているとは思わなかったというトラブルを解消できます。
また、「閲覧注意にする」チェックボックスの配置を、「投稿する」ボタンの常に左側に表示するようにしました。
ほとんどの場合、文字を読む方向の左から順番に目視して確認するためです。
これにより、設定のし忘れ、間違いを減らす事ができます。
また、画像を添付していない時には「閲覧注意にする」チェックボックスを表示しないようにしました。
文字しか投稿しないのに「閲覧注意にする」のチェックボックスが表示されているのは変だからです。
これらの対応には少し長いJavaScriptが必要でしたが、なんとか対応しました。
「閲覧注意」に設定するにデフォルトでチェックする
「閲覧注意にする」のチェックボックスにデフォルトでチェックが入るようになりました。
デフォルトでチェックでは困る場合は、config.php
のどの場所でもいいので以下の設定項目を追加してください。
設定項目が存在しない場合は、デフォルトで「閲覧注意にする」がチェックされた状態になります。
//「閲覧注意にする」をデフォルトでチェックする
//する: trueに設定すると「閲覧注意にする」設定のチェックボックスがデフォルトでチェックされます。
// する: true しない: false
$nsfw_checked = true;
// $nsfw_checked = false;
閲覧注意の設定項目を使う設定にしている場合しか関係ない設定項目ですので、閲覧注意の設定項目が表示されないようにしている場合はこの設定項目は必要はありません。
削除ボタンの配色を変更
このボタンを押すと削除されてしまう最後の削除ボタンの配色を変更しました。
編集ボタンと間違って削除する事故を防止します。
PaintBBS NEOのキー入力制限の改良
NEOが起動している画面ではNEOのキーボードショートカットキーとテキスト入力以外のキー操作ができませんでした。
そのため、動的パレットの「textarea」へのパレットデータの貼り付けのためにマウスの右クリックメニューを使用する事しかできない状態でした。
また貼り付けたパレットデータの編集もできませんでした。
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の上限で、それを超える場合は動画が切り捨てられます。
画像のみの投稿になりますが、投稿は成功します。
動画(レイヤー情報)がファイルサイズ超過で送信されない時は、「画像のみが送信されます。レイヤー情報は保持されません。」というダイヤログが開いて「OK」をタップした時のみ送信が実行され、「キャンセル」した時は送信されません。
画像のみの送信では困る状態の時は「キャンセル」してレイヤー情報が保持されない事を前提にした作画を続行する事ができます。
POSTの上限が8MBでは足りない場合は、php.ini
の設定で以下のように記述します。
upload_max_filesize = 22M
post_max_size = 22M
上記は、1つのファイルの最大ファイルサイズが22MBで、POSTの合計サイズが22MBまで投稿可能になるようにした設定例です。
必要に応じて増減してご利用ください。
(レンタルサーバの設定のサポートは掲示板開発者のサポート範囲外ですので、サーバ会社のQ&A等で調べていただく形になります)
関連して、続きを描く画面のダウンロードボタンの横に続きを描く時点での動画のファイルサイズを表示するようにしました。
neoの.pch
ファイルのファイルサイズがサーバに投稿可能なサイズかどうかの判断の目安になります。
管理者が投稿したURLには「rel="nofollow"」を付けない
HTML 属性: rel - HTML: ハイパーテキストマークアップ言語 | MDN
被リンク数が多いとSEOに有利になる事が理由で、掲示板にスパム投稿が集まる事があります。
それを回避するため、検索エンジンに評価されないようにするrel="nofollow"
を付与したリンクを作成してきました。
<a href="https://example.com" target="_blank" rel="nofollow">example</a>
のように、rel属性に"nofollow"
を付与していました。
しかし、管理者による投稿の場合は、紹介したいサイトのURLや管理者のSNSアカウントが「URL」欄に入っている事が多いため、管理者が投稿したURLには、"rel="nofollow"
を付与しないようにしました。
これにより、管理者が投稿した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