Darko Gjorgjijoski e958cada30 ci: stop at the draft; publishing is a human action (#720)
2.4.3-beta.2 was cut by tag and came out correctly — published,
pre-release, zip attached, notes from CHANGELOG.md — and then nothing
else happened. No updater registration, no Docker images.

GitHub does not start workflow runs from events created with
GITHUB_TOKEN. The publish step authenticated as github-actions[bot], so
`release: published` fired and triggered nothing. Every earlier
docker.yaml run was event=release from a release a human published,
which is why beta.1 worked and beta.2 did not. 3.x carries the same
design and would have failed identically on the first RC.

The workflow now stops at the draft. Everything else is unchanged: the
tag still runs the tests, reads the notes, builds the package and
attaches it. Pressing Publish fires the event under a real identity and
the proven downstream runs as it always has — and it puts a deliberate
gate in front of a release going public.

prerelease and make_latest move onto the draft rather than being applied
at publish time, so the flags are already right when the button is
pressed; GitHub's publish dialog otherwise defaults "Set as the latest
release" to checked, which would let a 3.0.0 alpha displace 2.4.x.

The run now ends by writing the draft URL and the resolved flags to the
job summary, since a draft nobody knows about is no use.

Documents the whole flow in AGENTS.md, including why publishing is
manual — the reasoning is not guessable from the workflow alone.
2026-07-29 17:04:15 +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
2024-07-28 17:24:57 +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-04-07 20:14:02 +02:00
2024-01-29 04:46:01 -06:00
2026-04-06 17:59:15 +02:00

Introduction

InvoiceShelf is an open-source web app that helps you track expenses, record payments, and create professional invoices and estimates. It is self-hosted, multi-tenant, and built for individuals and small businesses that want to keep their books on their own infrastructure.

The web application is built with Laravel and Vue 3.

To get started using Docker Compose, follow the Installation guide.

Table of Contents

  1. Documentation
  2. System Requirements
  3. Download
  4. Discord
  5. Roadmap
  6. Translate
  7. License

Documentation

System Requirements

  • PHP 8.4+ is required (since v2.2.0, when InvoiceShelf moved to Laravel 13).
  • Database: MySQL, MariaDB, PostgreSQL, or SQLite.
  • Before updating from inside the app, verify your server meets the target version's PHP and extension requirements.
  • The in-app updater verifies requirements and refuses to proceed if they are not met.

Download

Discord

Join the discussion on the InvoiceShelf Discord: Invite Link

Roadmap

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
  • Custom Fields on Invoices & Estimates
  • Multiple Companies
  • Recurring Invoices
  • Customer Portal
  • Decoupled system settings from company settings (v3.0)
  • Proper multi-tenancy system (v3.0)
  • Company member invitations with custom roles (v3.0)
  • Dark mode (v3.0)
  • Full TypeScript refactor of the frontend (v3.0)
  • Improved backend architecture (v3.0)
  • Security hardening (v3.0)
  • Reworked installation wizard (v3.0)
  • Module Directory (v3.0)
  • Rewritten Payments module (v3.0)
  • Accept Payments (Stripe integration)
  • Improved template system for invoices and estimates

Translate

Help us translate InvoiceShelf into your language: https://crowdin.com/project/invoiceshelf

Star History

Star History Chart

License

InvoiceShelf is released under the GNU Affero General Public License v3.0. See LICENSE for the full text.

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