Darko Gjorgjijoski 786c52c0bb ci: fix updater registration and make it re-runnable (#708)
The 2.4.2 release published, uploaded its zip, and built its images — then
failed to register on the updater, so no install was offered the update:

    Registering 2.4.2 (channel=stable, min_php=8.2.0) on the updater
    curl: (26) Failed to open/read local data from file/application

The step wrote the changelog to /tmp/changelog.txt but told curl to read
`changelog.txt`, a relative path resolved against the checkout. `changelog`
is required server-side, so nothing would have been accepted regardless.

The path is the bug; the reason it reached production is that the step only
ever ran during a real release, so it could not be exercised beforehand.
Three changes address that:

Registration moves into its own job that downloads the published asset,
rather than reusing the build job's working directory — the coupling that
made the relative path look reasonable. It runs on a release, or on demand
against any existing tag, so a failure no longer needs production shell
access to repair and the path can be rehearsed deliberately.

A missing WEBSITE_RELEASE_TOKEN is now fatal on a release. Warning and
exiting 0 meant a release could look completely successful while reaching
nobody — the same silent failure as the bug itself.

A verification step follows the POST: /releases/download/{tag} 404s unless
the Release row exists and its zip is retrievable from storage, so it proves
the whole chain rather than trusting a 2xx. It would have caught this.
2026-07-29 13:31:13 +02:00
2026-06-11 08:36:05 +02:00
2026-04-07 18:35:30 +02:00
2026-06-11 08:36:05 +02:00
2021-06-18 15:23:56 +05:30
2025-08-31 03:04:31 +02:00
2024-07-28 17:44:22 -07:00
2026-06-11 08:36:05 +02:00
2024-07-28 17:24:57 +02:00
2026-06-11 08:36:05 +02:00
2024-01-28 19:47:46 +01:00
2024-03-27 11:00:36 +01:00
2021-12-02 21:01:04 +05:30
2024-06-05 11:33:52 +02:00
2026-03-24 07:07:41 +01:00
2024-01-29 04:46:01 -06:00
2021-11-30 18:58:19 +05:30
2026-07-29 12:45:15 +02:00

Introduction

InvoiceShelf is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates.

The Web Application is made using Laravel & VueJS while the Mobile Apps are built using React Native.

To get started with InvoiceShelf using Docker Compose, check out the Installation docs.

Table of Contents

  1. Documentation
  2. Download
  3. Mobile Apps
  4. Discord - NEW 🔥
  5. Roadmap
  6. Credits
  7. Help us translate
  8. License

Documentation

System Requirements

  • Starting from v2.2.0 (Laravel 13 upgrade), InvoiceShelf requires PHP 8.4+.
  • Before updating from the app settings, verify your server PHP version and required extensions.
  • The in-app updater checks requirements and blocks the update if they are not met.

Download

Mobile Apps

  • Andorid - Coming Soon
  • IOS - Coming Soon
  • Source

Discord

Join the InvoiceShelf discord server to discuss: Invite Link

Roadmap

~~Here's a rough roadmap of things to come (not in any specific order):

  • Automatic Update
  • Email Configuration
  • Installation Wizard
  • Address Customisation & Default notes
  • Edit Email before Sending Invoice
  • Available as a docker image
  • Performance Improvements
  • Customer View page
  • Add and Use Custom Fields on Invoices & Estimates.
  • Multiple Companies
  • Recurring Invoices
  • Customer Portal
  • Accept Payments (Stripe Integration)
  • Improved template system (invoices and estimate)
  • Modules and templates marketplace

Credits

InvoiceShelf is made possible thanks to the contributions and support from many people and projects:

  • Crater (project inspiration and code base)
  • All contributors who have provided code, translations, reported issues, or supported the project in any way.

Translate

Help us translate on https://crowdin.com/project/invoiceshelf

License

InvoiceShelf is released under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3. See LICENSE for details.

S
Description
No description provided
Readme AGPL-3.0
70 MiB
Languages
PHP 59.9%
Vue 36.1%
Blade 3.2%
Shell 0.6%
Dockerfile 0.1%