diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..2a8bdc84c
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,25 @@
+version: 2
+updates:
+ - package-ecosystem: bundler
+ directory: "/"
+ schedule:
+ interval: monthly
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-major"]
+ groups:
+ minor-and-patch:
+ patterns: ["*"]
+ update-types: ["minor", "patch"]
+
+ - package-ecosystem: github-actions
+ directory: "/"
+ schedule:
+ interval: monthly
+ ignore:
+ - dependency-name: "*"
+ update-types: ["version-update:semver-major"]
+ groups:
+ minor-and-patch:
+ patterns: ["*"]
+ update-types: ["minor", "patch"]
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 2205f6cdf..3e75c8d9d 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -28,16 +28,16 @@ jobs:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/kozuchi_test
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
- ruby-version: '3.3.8'
+ ruby-version: '3.3.10'
bundler-cache: true
- name: Set up Node.js
- uses: actions/setup-node@v4
+ uses: actions/setup-node@v6
with:
node-version: '18'
cache: 'yarn'
diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml
new file mode 100644
index 000000000..7878d0b76
--- /dev/null
+++ b/.github/workflows/dependabot-auto-merge.yml
@@ -0,0 +1,24 @@
+name: Dependabot auto-merge
+on: pull_request
+
+permissions:
+ contents: write
+ pull-requests: write
+
+jobs:
+ auto-merge:
+ runs-on: ubuntu-latest
+ if: github.actor == 'dependabot[bot]'
+ steps:
+ - name: Fetch Dependabot metadata
+ id: metadata
+ uses: dependabot/fetch-metadata@v2
+ with:
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
+
+ - name: Auto-merge minor and patch updates
+ if: steps.metadata.outputs.update-type != 'version-update:semver-major'
+ run: gh pr merge --auto --squash "$PR_URL"
+ env:
+ PR_URL: ${{ github.event.pull_request.html_url }}
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.ruby-version b/.ruby-version
index 37d02a6e3..5f6fc5edc 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-3.3.8
+3.3.10
diff --git a/Gemfile b/Gemfile
index a8717cb92..43da317d1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,5 +1,5 @@
source 'http://rubygems.org'
-ruby '3.3.8'
+ruby '3.3.10'
gem 'activerecord-session_store'
gem 'bootstrap-sass'
@@ -9,7 +9,7 @@ gem 'passenger'
gem 'pg'
gem 'sassc-rails'
gem 'concurrent-ruby'
-gem 'rails', '~> 7.1.0'
+gem 'rails', '~> 7.2.3'
gem 'rails-controller-testing'
gem 'rails-observers'
gem 'rake'
diff --git a/Gemfile.lock b/Gemfile.lock
index e298ddbb8..3831c835c 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,65 +1,60 @@
GEM
remote: http://rubygems.org/
specs:
- actioncable (7.1.6)
- actionpack (= 7.1.6)
- activesupport (= 7.1.6)
+ actioncable (7.2.3.1)
+ actionpack (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6)
- actionmailbox (7.1.6)
- actionpack (= 7.1.6)
- activejob (= 7.1.6)
- activerecord (= 7.1.6)
- activestorage (= 7.1.6)
- activesupport (= 7.1.6)
- mail (>= 2.7.1)
- net-imap
- net-pop
- net-smtp
- actionmailer (7.1.6)
- actionpack (= 7.1.6)
- actionview (= 7.1.6)
- activejob (= 7.1.6)
- activesupport (= 7.1.6)
- mail (~> 2.5, >= 2.5.4)
- net-imap
- net-pop
- net-smtp
+ actionmailbox (7.2.3.1)
+ actionpack (= 7.2.3.1)
+ activejob (= 7.2.3.1)
+ activerecord (= 7.2.3.1)
+ activestorage (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
+ mail (>= 2.8.0)
+ actionmailer (7.2.3.1)
+ actionpack (= 7.2.3.1)
+ actionview (= 7.2.3.1)
+ activejob (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
+ mail (>= 2.8.0)
rails-dom-testing (~> 2.2)
- actionpack (7.1.6)
- actionview (= 7.1.6)
- activesupport (= 7.1.6)
+ actionpack (7.2.3.1)
+ actionview (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
cgi
nokogiri (>= 1.8.5)
racc
- rack (>= 2.2.4)
+ rack (>= 2.2.4, < 3.3)
rack-session (>= 1.0.1)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
- actiontext (7.1.6)
- actionpack (= 7.1.6)
- activerecord (= 7.1.6)
- activestorage (= 7.1.6)
- activesupport (= 7.1.6)
+ useragent (~> 0.16)
+ actiontext (7.2.3.1)
+ actionpack (= 7.2.3.1)
+ activerecord (= 7.2.3.1)
+ activestorage (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (7.1.6)
- activesupport (= 7.1.6)
+ actionview (7.2.3.1)
+ activesupport (= 7.2.3.1)
builder (~> 3.1)
cgi
erubi (~> 1.11)
rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6)
- activejob (7.1.6)
- activesupport (= 7.1.6)
+ activejob (7.2.3.1)
+ activesupport (= 7.2.3.1)
globalid (>= 0.3.6)
- activemodel (7.1.6)
- activesupport (= 7.1.6)
- activerecord (7.1.6)
- activemodel (= 7.1.6)
- activesupport (= 7.1.6)
+ activemodel (7.2.3.1)
+ activesupport (= 7.2.3.1)
+ activerecord (7.2.3.1)
+ activemodel (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
timeout (>= 0.4.0)
activerecord-session_store (2.2.0)
actionpack (>= 7.0)
@@ -67,25 +62,24 @@ GEM
cgi (>= 0.3.6)
rack (>= 2.0.8, < 4)
railties (>= 7.0)
- activestorage (7.1.6)
- actionpack (= 7.1.6)
- activejob (= 7.1.6)
- activerecord (= 7.1.6)
- activesupport (= 7.1.6)
+ activestorage (7.2.3.1)
+ actionpack (= 7.2.3.1)
+ activejob (= 7.2.3.1)
+ activerecord (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
marcel (~> 1.0)
- activesupport (7.1.6)
+ activesupport (7.2.3.1)
base64
benchmark (>= 0.3)
bigdecimal
- concurrent-ruby (~> 1.0, >= 1.0.2)
+ concurrent-ruby (~> 1.0, >= 1.3.1)
connection_pool (>= 2.2.5)
drb
i18n (>= 1.6, < 2)
logger (>= 1.4.2)
- minitest (>= 5.1)
- mutex_m
+ minitest (>= 5.1, < 6)
securerandom (>= 0.3)
- tzinfo (~> 2.0)
+ tzinfo (~> 2.0, >= 2.0.5)
addressable (2.8.9)
public_suffix (>= 2.0.2, < 8.0)
autoprefixer-rails (10.4.7.0)
@@ -114,7 +108,7 @@ GEM
logger (~> 1.5)
coderay (1.1.3)
concurrent-ruby (1.3.6)
- connection_pool (2.5.5)
+ connection_pool (3.0.2)
crass (1.0.6)
cuprite (0.17)
capybara (~> 3.0)
@@ -128,8 +122,7 @@ GEM
date (3.5.1)
diff-lcs (1.6.2)
drb (2.2.3)
- erb (4.0.4)
- cgi (>= 0.3.3)
+ erb (6.0.2)
erubi (1.13.1)
execjs (2.10.0)
factory_bot (6.5.6)
@@ -146,11 +139,11 @@ GEM
ffi (1.17.3)
globalid (1.3.0)
activesupport (>= 6.1)
- haml (6.0.8)
+ haml (7.2.0)
temple (>= 0.8.2)
thor
tilt
- haml-rails (2.1.0)
+ haml-rails (3.0.0)
actionpack (>= 5.1)
activesupport (>= 5.1)
haml (>= 4.0.6)
@@ -195,7 +188,7 @@ GEM
mini_portile2 (2.8.9)
minitest (5.27.0)
mutex_m (0.3.0)
- net-imap (0.5.13)
+ net-imap (0.6.3)
date
net-protocol
net-pop (0.1.2)
@@ -205,7 +198,7 @@ GEM
net-smtp (0.5.1)
net-protocol
nio4r (2.7.5)
- nokogiri (1.18.10)
+ nokogiri (1.19.2)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
passenger (6.1.2)
@@ -228,7 +221,7 @@ GEM
date
stringio
public_suffix (6.0.2)
- puma (6.6.1)
+ puma (7.2.0)
nio4r (~> 2.0)
racc (1.8.1)
rack (3.2.5)
@@ -239,20 +232,20 @@ GEM
rack (>= 1.3)
rackup (2.3.1)
rack (>= 3)
- rails (7.1.6)
- actioncable (= 7.1.6)
- actionmailbox (= 7.1.6)
- actionmailer (= 7.1.6)
- actionpack (= 7.1.6)
- actiontext (= 7.1.6)
- actionview (= 7.1.6)
- activejob (= 7.1.6)
- activemodel (= 7.1.6)
- activerecord (= 7.1.6)
- activestorage (= 7.1.6)
- activesupport (= 7.1.6)
+ rails (7.2.3.1)
+ actioncable (= 7.2.3.1)
+ actionmailbox (= 7.2.3.1)
+ actionmailer (= 7.2.3.1)
+ actionpack (= 7.2.3.1)
+ actiontext (= 7.2.3.1)
+ actionview (= 7.2.3.1)
+ activejob (= 7.2.3.1)
+ activemodel (= 7.2.3.1)
+ activerecord (= 7.2.3.1)
+ activestorage (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
bundler (>= 1.15.0)
- railties (= 7.1.6)
+ railties (= 7.2.3.1)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
@@ -270,11 +263,11 @@ GEM
actionview (> 3.1)
activesupport (> 3.1)
railties (> 3.1)
- railties (7.1.6)
- actionpack (= 7.1.6)
- activesupport (= 7.1.6)
+ railties (7.2.3.1)
+ actionpack (= 7.2.3.1)
+ activesupport (= 7.2.3.1)
cgi
- irb
+ irb (~> 1.13)
rackup (>= 1.0.0)
rake (>= 12.2)
thor (~> 1.0, >= 1.2.2)
@@ -329,14 +322,15 @@ GEM
activesupport (>= 6.1)
sprockets (>= 3.0.0)
stringio (3.2.0)
- temple (0.9.1)
+ temple (0.10.4)
thor (1.5.0)
- tilt (2.0.11)
+ tilt (2.7.0)
timecop (0.9.10)
timeout (0.6.1)
tsort (0.2.0)
tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
+ useragent (0.16.11)
webrick (1.9.2)
websocket-driver (0.8.0)
base64
@@ -344,7 +338,7 @@ GEM
websocket-extensions (0.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
- zeitwerk (2.6.18)
+ zeitwerk (2.7.5)
PLATFORMS
ruby
@@ -367,7 +361,7 @@ DEPENDENCIES
pg
pry-rails
puma
- rails (~> 7.1.0)
+ rails (~> 7.2.3)
rails-controller-testing
rails-observers
rails_autolink
@@ -378,7 +372,7 @@ DEPENDENCIES
timecop
RUBY VERSION
- ruby 3.3.8p144
+ ruby 3.3.10p183
BUNDLED WITH
2.6.9
diff --git a/app/views/help/functions.html.haml b/app/views/help/functions.html.haml
index 9ac6c03d8..00494d027 100644
--- a/app/views/help/functions.html.haml
+++ b/app/views/help/functions.html.haml
@@ -101,70 +101,69 @@
%p 口座、費目、収入内訳、家計簿記入データ、精算データをXMLまたはCSVで出力します。フレンド、取引連携状態等はエクスポートされません。
%p XMLのフォーマットは次のようになります。
%pre{style: "border:1px solid #888888; padding: 4px; margin-left: 20px;"}
- = preserve do
- :escaped
-
-
-
-
-
- 現金
- ...
- ...
-
-
-
-
-
- 食費
- ...
- ...
-
-
-
-
-
- 食費
- ...
- ...
-
-
-
-
-
-
-
-
-
-
- -800
- 800
-
-
-
- ...
- ...
-
-
- 1300
-
- ...
- ...
-
-
-
-
-
-
-
- カードXの精算
- 精算データの備考です
-
- ...
- ...
-
-
-
+ :preserve
+ <kozuchi version="0.16.7" timestamp="2009-05-21T14:27:07" user="yourname">
+
+ <!-- 口座リスト -->
+ <assets>
+ <!-- typeに口座種別、positionに並び順、idにシステム上の識別子、要素に口座名が入ります -->
+ <asset type="cache" position="1" id="account1">現金</asset>
+ ...
+ ...
+ </assets>
+
+ <!-- 費目リスト -->
+ <expenses>
+ <!-- positionに並び順、idにシステム上の識別子、要素に費目名が入ります -->
+ <expense position="1" id="account2">食費</expense>
+ ...
+ ...
+ </expenses>
+
+ <!-- 収入内訳リスト -->
+ <incomes>
+ <!-- positionに並び順、idにシステム上の識別子、要素に収入内訳名が入ります -->
+ <income position="1" id="account2">食費</income>
+ ...
+ ...
+ </incomes>
+
+ <!-- 記入データリスト -->
+ <deals>
+
+ <!-- 1件の記入 -->
+ <!-- dateに日付、confirmedに確認状態かどうか、positionに1日の中での記入順、idにシステム上の識別子が入ります -->
+ <deal date="2009-05-15" confirmed="true" position="1" id="deal1">
+ <!-- 識別子'account1'の勘定(口座または費目または収入内訳)から識別子'account2'の勘定への800円の移動 -->
+ <entries>
+ <entry account="account1" summary="昼食">-800</entry>
+ <entry account="account2" summary="昼食">800</entry>
+ <!-- 精算と紐付いていれば entryのsettlement属性に精算の識別子が入ります -->
+ </entries>
+ </deal>
+ ...
+ ...
+ <!-- 残高記入 (通常の記入と混在)-->
+ <balance account="account23" date="2009-05-21" position="2" id="balance745">
+ <amount>1300</amount>
+ </balance>
+ ...
+ ...
+ </deals>
+
+ <!-- 精算リスト -->
+ <settlements>
+ <!-- 1件の精算 -->
+ <!-- accountに対象勘定識別子、idにこの精算のシステム内識別子 -->
+ <settlement account="account24" id="settlement1">
+ <name>カードXの精算</name>
+ <description>精算データの備考です</description>
+ </settlement>
+ ...
+ ...
+ </settlements>
+
+ </kozuchi>
%p CSVのフォーマットはファイル先頭から順に次のようになります。
%table.csv_format
%tr
diff --git a/app/views/shared/_navbar.html.haml b/app/views/shared/_navbar.html.haml
index 5684a0836..ef0918c51 100644
--- a/app/views/shared/_navbar.html.haml
+++ b/app/views/shared/_navbar.html.haml
@@ -13,7 +13,7 @@
%li{class: active_class_if(controller_name == 'home')}= link_to 'ホーム', home_path
%li{class: active_class_if(controller_name == 'deals')}= link_to '家計簿', deals_path
%li.dropdown{class: active_class_if(%w|profit_and_loss assets balance_sheet|.include?(controller_name) && !controller_path.include?('settings'))}
- =link_to "分析".html_safe, '#', class: 'dropdown-toggle', data: {toggle: "dropdown"}
+ = link_to "分析".html_safe, '#', class: 'dropdown-toggle', data: {toggle: "dropdown"}
%ul.dropdown-menu
%li= link_to '収支表', profit_and_loss_path
%li= link_to '資産表', assets_path
diff --git a/config/initializers/kozuchi_version.rb b/config/initializers/kozuchi_version.rb
index ca5ddfa3f..9d7718cb9 100644
--- a/config/initializers/kozuchi_version.rb
+++ b/config/initializers/kozuchi_version.rb
@@ -3,6 +3,6 @@
KOZUCHI_MAJOR_VERSION = 4
KOZUCHI_MIDDLE_VERSION = 0
-KOZUCHI_MINORE_VERSION = 0
+KOZUCHI_MINORE_VERSION = 1
KOZUCHI_VERSION = "#{KOZUCHI_MAJOR_VERSION}.#{KOZUCHI_MIDDLE_VERSION}.#{KOZUCHI_MINORE_VERSION}"