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}"