Merge pull request #773 from PicPeak/release-please--branches--main
chore(main): release 2.7.0
This commit is contained in:
@@ -1,3 +1,3 @@
|
||||
{
|
||||
".": "2.6.1"
|
||||
".": "2.7.0"
|
||||
}
|
||||
|
||||
+360
@@ -5,6 +5,366 @@ All notable changes to PicPeak will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [2.7.0](https://github.com/PicPeak/picpeak/compare/v2.6.1...v2.7.0) (2026-07-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **accounting:** Accounting nav section + relocate Tax report out of CRM ([30c0007](https://github.com/PicPeak/picpeak/commit/30c0007f40594e679f5d997219985107de784cf4))
|
||||
* **accounting:** Accounting settings tab (km / per-diem rate, require-proof) ([2b7495e](https://github.com/PicPeak/picpeak/commit/2b7495e4dc46c6033f581a0ce2ffde83b9ef89b4))
|
||||
* **accounting:** add a Banana "Income & Expense" (cash-book) export format ([445d6d7](https://github.com/PicPeak/picpeak/commit/445d6d7b6d6b0692d5b7c0a3dd0ca8b71dfad6ef))
|
||||
* **accounting:** backend rework - incoming invoices vs internal expenses (stage 2) ([5e78fb6](https://github.com/PicPeak/picpeak/commit/5e78fb6475513cbda38257b406493eb649a5e33c))
|
||||
* **accounting:** bill editor VAT dropdown + GET returns vat_code snapshot ([2479d87](https://github.com/PicPeak/picpeak/commit/2479d87afc5b094a5323bca0b67e6404ce05a4e2))
|
||||
* **accounting:** clearer tax-export window + gate journal export on accounting flag ([3edd832](https://github.com/PicPeak/picpeak/commit/3edd8321035c48d6b3e8b157d4b94075657fc7a0))
|
||||
* **accounting:** consolidate VAT/financial config into Settings → Accounting ([dc7b87b](https://github.com/PicPeak/picpeak/commit/dc7b87bb874e22ac6902fd2d48531ecdb6108c88))
|
||||
* **accounting:** data-driven revenue-rate VAT map (multi-country) ([873be91](https://github.com/PicPeak/picpeak/commit/873be910a5e88a6d942f116c2bcfecfef9161024))
|
||||
* **accounting:** event booking via dropdown (Company or an event) ([81af445](https://github.com/PicPeak/picpeak/commit/81af4453e796285df05446cfd333e53b6b1cc19e))
|
||||
* **accounting:** expense invoiced/paid lifecycle + edit-until-invoiced; decouple tax report from bills flag ([2e8e4a0](https://github.com/PicPeak/picpeak/commit/2e8e4a0f86d5b7a4dc0fa712bcb4cbab4fbe9861))
|
||||
* **accounting:** expenses ledger + supplier-payment toggle ([0c35ac4](https://github.com/PicPeak/picpeak/commit/0c35ac43e616e4b49da8089c95239ac06ec402c5))
|
||||
* **accounting:** explain dispositions inline, drop markup from pass-through ([9a023c0](https://github.com/PicPeak/picpeak/commit/9a023c019750ebcd8d21e005aaf9a77a32cb34a3))
|
||||
* **accounting:** frontend rework - separate Incoming invoices vs Expenses (stage 2) ([f305541](https://github.com/PicPeak/picpeak/commit/f305541f903c02329309a5d2513eded9792c58c5))
|
||||
* **accounting:** inbound supplier-invoice capture + expense re-bill (backend) ([c305492](https://github.com/PicPeak/picpeak/commit/c3054928453a23c599894b669b6ac3c623fa4183))
|
||||
* **accounting:** incoming-invoice triage refinements (paid badge, click-to-categorize, reference, categorize+pay) ([72b784c](https://github.com/PicPeak/picpeak/commit/72b784c9d751d2c98014cf35ce3035c60664056a))
|
||||
* **accounting:** incoming-invoice workflow v2 + VAT/financial settings consolidation ([b527915](https://github.com/PicPeak/picpeak/commit/b5279155ea4c545e13bab8bde46a39cfccf107fe))
|
||||
* **accounting:** incoming-invoices inbox with camera capture + triage/re-bill ([2b5efeb](https://github.com/PicPeak/picpeak/commit/2b5efebaff0ed05b99b84802811ee662911e9468))
|
||||
* **accounting:** invoices force-enable the Accounting master ([51837c3](https://github.com/PicPeak/picpeak/commit/51837c3a88f711b164fafe2c7677e1a91c7542f9))
|
||||
* **accounting:** Layer A backend — chart of accounts, VAT codes, Treuhänder export ([03cc250](https://github.com/PicPeak/picpeak/commit/03cc250b47518573d2cd4fa45da331a3e47ea3fd))
|
||||
* **accounting:** Layer A frontend — chart of accounts CRUD + Treuhänder export UI ([7e0098e](https://github.com/PicPeak/picpeak/commit/7e0098edcd42dc9d6b91c39f60627122d8394bff))
|
||||
* **accounting:** manual "add expense" (no document) on the ledger ([703f727](https://github.com/PicPeak/picpeak/commit/703f72742ddc9028a3214e108563320679ec4ade))
|
||||
* **accounting:** move Chart of accounts into Settings → Accounting ([97795f6](https://github.com/PicPeak/picpeak/commit/97795f6d1ed25d23396a76b63c225b110ddc315e))
|
||||
* **accounting:** move Treuhänder export onto the Tax page ([b1f73c1](https://github.com/PicPeak/picpeak/commit/b1f73c1df9408ddae821760eb8ed57c726d2e056))
|
||||
* **accounting:** PDF/image preview in triage, opened at the QR-bill (no OCR) ([502fbad](https://github.com/PicPeak/picpeak/commit/502fbad5a8cb11e075cb098ad05fd94a78aae396))
|
||||
* **accounting:** rasterise inbound PDFs server-side (never serve raw to browser) ([e111522](https://github.com/PicPeak/picpeak/commit/e111522415c21ca8ef47f0d8be48c95bd8ab8c69))
|
||||
* **accounting:** re-categorize incoming invoices, note field, pending re-bill pool ([36a8e42](https://github.com/PicPeak/picpeak/commit/36a8e42f90f15a1ba96d9c4f004fa542d33e4937))
|
||||
* **accounting:** re-viewable incoming invoices + expense invoiced/paid lifecycle UI ([727bdab](https://github.com/PicPeak/picpeak/commit/727bdab6e087e1a3611295417a05f61939204487))
|
||||
* **accounting:** relocate VAT codes + rate maps into Settings → Accounting ([4ff5b84](https://github.com/PicPeak/picpeak/commit/4ff5b84cb66e40be960c2be7a67334cf0cc98be2))
|
||||
* **accounting:** scope the tax-report export to income-only or cost-only ([9f3b286](https://github.com/PicPeak/picpeak/commit/9f3b28684ff36b131420cd975df634a29d660323))
|
||||
* **accounting:** snapshot the chosen VAT code on quote/invoice create + storno ([5b52969](https://github.com/PicPeak/picpeak/commit/5b52969e36a41bbc08a98e0bca1ce0e937d77f56))
|
||||
* **accounting:** snapshot vat_code on quotes/invoices + export prefers it (foundation) ([0a7dc1c](https://github.com/PicPeak/picpeak/commit/0a7dc1cf5da17a5bef204f6680844c8ab2b44269))
|
||||
* **accounting:** split Incoming invoices vs Expenses - flags, schema, settings (stage 1) ([c59df52](https://github.com/PicPeak/picpeak/commit/c59df52d407fec86168aa7a2087c1a29c7660ab8))
|
||||
* **accounting:** supplier-country tax default + configurable default output VAT code ([267b121](https://github.com/PicPeak/picpeak/commit/267b121d66994bc57b10cd0694ab0e4320b163d9))
|
||||
* **accounting:** tax report VAT-payable honours registration + reclaim ([d7107aa](https://github.com/PicPeak/picpeak/commit/d7107aaf0adf5e03f08085c7691b6530b15ed702))
|
||||
* **accounting:** tax window shows all costs (incoming invoices + expenses) alongside revenue ([545ef33](https://github.com/PicPeak/picpeak/commit/545ef334f42d3cb09e63ffc77a80dd684ab5a807))
|
||||
* **accounting:** unify tax report into one signed, typed, sortable ledger ([fd1dd81](https://github.com/PicPeak/picpeak/commit/fd1dd81e8dfc790d960a7e6d888beba895a23461))
|
||||
* **accounting:** VAT registration + reclaim-country settings in the Accounting tab ([4d87684](https://github.com/PicPeak/picpeak/commit/4d876848823bce2c79e629308c92206c64d9893d))
|
||||
* **accounting:** VAT registration/reclaim settings + un-gated VAT-codes read ([fbbbb8a](https://github.com/PicPeak/picpeak/commit/fbbbb8ab7335f07ecf48e217632c7011bd7c88cd))
|
||||
* **accounting:** VAT-code dropdown in the quote editor (+ reusable VatRateSelect) ([6e1924b](https://github.com/PicPeak/picpeak/commit/6e1924bae8b50dbb8460e151c1d9a79553fddb19))
|
||||
* admin photos list/grid toggle + upload failure report ([#707](https://github.com/PicPeak/picpeak/issues/707), [#708](https://github.com/PicPeak/picpeak/issues/708)) ([e873f7c](https://github.com/PicPeak/picpeak/commit/e873f7c98ce108b090d70a3b7df2d2929699e997))
|
||||
* admin photos list/grid toggle + upload failure report ([#707](https://github.com/PicPeak/picpeak/issues/707), [#708](https://github.com/PicPeak/picpeak/issues/708)) ([6f95796](https://github.com/PicPeak/picpeak/commit/6f95796b7c19829197eaff0d4934ad9b84d0e2f3))
|
||||
* admin two-factor authentication (TOTP) with recovery codes + CLI reset ([cf07361](https://github.com/PicPeak/picpeak/commit/cf073615effa8a91e19374ad3e9924e6e7322950))
|
||||
* admin-configurable workflow engine + dunning/Mahngebühr rework (RFC — feedback welcome) ([15be3b8](https://github.com/PicPeak/picpeak/commit/15be3b8d32965eedc08d46ccc525c65a3bf34de6))
|
||||
* **admin-ui:** TOTP MFA enrollment + two-step login; remove stub 2FA toggle ([96e3c68](https://github.com/PicPeak/picpeak/commit/96e3c68b9d6b35a82abcad664a6da7b19150b4fd))
|
||||
* **admin/exports:** inline preview modal with copy-to-clipboard ([#631](https://github.com/PicPeak/picpeak/issues/631)) ([fc5c1ae](https://github.com/PicPeak/picpeak/commit/fc5c1ae93f87678fcc16bc84a14a60a59b1a3c7b))
|
||||
* **admin/exports:** inline preview modal with copy-to-clipboard ([#631](https://github.com/PicPeak/picpeak/issues/631)) ([27b5f7e](https://github.com/PicPeak/picpeak/commit/27b5f7e4b68e43345cd99dd5cc77308dcd7ec98b))
|
||||
* **admin:** in-app migration banner for the org rename ([0213347](https://github.com/PicPeak/picpeak/commit/02133478bd2684c562d11cc122cf5059832ff76a))
|
||||
* **admin:** in-app migration banner for the org rename ([#669](https://github.com/PicPeak/picpeak/issues/669)) ([2a4bf3b](https://github.com/PicPeak/picpeak/commit/2a4bf3b868c6733d0b865c8c0e977ba84d6e6453))
|
||||
* **analytics:** pluggable trackers — Umami + Rybbit + Custom ([#663](https://github.com/PicPeak/picpeak/issues/663) Phase 1) ([83461fe](https://github.com/PicPeak/picpeak/commit/83461fe5d4d44006482167464d92e70546cf7377))
|
||||
* **analytics:** pluggable trackers — Umami + Rybbit + Custom ([#663](https://github.com/PicPeak/picpeak/issues/663) Phase 1) ([ab50145](https://github.com/PicPeak/picpeak/commit/ab501459a4208c3a30637a31f0f6f31285ae5ef2))
|
||||
* **auth:** admin TOTP MFA — enrollment, login challenge, recovery, CLI reset ([72e2ef6](https://github.com/PicPeak/picpeak/commit/72e2ef6721b0572ed34455de901aa357eacd8c76))
|
||||
* **backup:** .picpeak download + upload-restore UI in Backup Manager ([66d61c8](https://github.com/PicPeak/picpeak/commit/66d61c87cad1ac1994d61e81c8c06739aa0cb8c5))
|
||||
* **backup:** .picpeak import/restore (full override, keeps current account) ([2920d82](https://github.com/PicPeak/picpeak/commit/2920d82186d16d43674703d09370aeecec6a0da0))
|
||||
* **backup:** .picpeak portable export (engine-neutral logical snapshot) ([38b3aef](https://github.com/PicPeak/picpeak/commit/38b3aef63d0d4f0878eddeb93f16319ef87f2372))
|
||||
* **backup:** fold .picpeak restore into the Restore wizard's Upload source ([86324e7](https://github.com/PicPeak/picpeak/commit/86324e7da75069e61686b1b77495f02c33b12e1a))
|
||||
* **backup:** upload + restore endpoint for .picpeak ([2b66f6d](https://github.com/PicPeak/picpeak/commit/2b66f6d889f94848202faf02116efa94ade9bd12))
|
||||
* **branding:** force color mode = standard look; hide overridden theme controls ([4749e22](https://github.com/PicPeak/picpeak/commit/4749e222dc41695a2494a3b740952745bb854d4e))
|
||||
* **categories:** per-category download permissions ([#640](https://github.com/PicPeak/picpeak/issues/640) part B) ([820f483](https://github.com/PicPeak/picpeak/commit/820f4835f1f5a41cbef6816c387ef9ec3dafd526))
|
||||
* **common:** generic Promise-based ConfirmDialog primitive ([#640](https://github.com/PicPeak/picpeak/issues/640) part C) ([a3fcb5b](https://github.com/PicPeak/picpeak/commit/a3fcb5bc9e82849ebe1f55620e8aa7e60ccd973f))
|
||||
* **crm:** 3-reminder dunning + flat/percent Mahngebühr on 2nd & 3rd + AGB notice ([dcdbeb9](https://github.com/PicPeak/picpeak/commit/dcdbeb9cc50a888ff66e65c62597fcc84c2c8f17))
|
||||
* **crm:** cash-basis revenue + backdatable payment date on mark-paid ([82ec238](https://github.com/PicPeak/picpeak/commit/82ec23824a3e48ef3a2abd4c52f5564c07115511))
|
||||
* **crm:** event-type dropdown on quotes; quote→event uses it (no more hardcoded 'wedding') ([f78671f](https://github.com/PicPeak/picpeak/commit/f78671fc6c8d234be4dee87b45aae9d280a3a6f7))
|
||||
* **crm:** Mahngebühr on a separate Mahnung document; invoice stays immutable ([5ed2fec](https://github.com/PicPeak/picpeak/commit/5ed2fec2fe5cd5c2c8db6ea83c3b791313618e0f))
|
||||
* **crm:** pre-event reminder falls back to the assigned customer account ([3ccaed0](https://github.com/PicPeak/picpeak/commit/3ccaed06a226cdc4a18399f8daa9b2d420e3684b))
|
||||
* **crm:** Project Overview phase 1 — projects schema ([efa47d6](https://github.com/PicPeak/picpeak/commit/efa47d697d4c007f27c12f4f33eb62ef64e09e78))
|
||||
* **crm:** Project Overview phase 2 — project service + routes ([eb26313](https://github.com/PicPeak/picpeak/commit/eb263137b98935754155824de2a03848121304b6))
|
||||
* **crm:** Project Overview phase 3 — persist sent email HTML ([874c91f](https://github.com/PicPeak/picpeak/commit/874c91f944d8397edaf9f48091bab3bf5cfc30e1))
|
||||
* **crm:** toggle for VAT on late fees (jurisdiction-dependent) ([eaceb7e](https://github.com/PicPeak/picpeak/commit/eaceb7e71caa6466d8298c0fc84487f0f4af1dca))
|
||||
* **dashboard:** revenue "year" tile toggles 365 days ↔ calendar YTD ([d1c9e02](https://github.com/PicPeak/picpeak/commit/d1c9e02bcf50b6c08eebc85acdbfba29bfee84ac))
|
||||
* **email:** add 'Test connection' to incoming mail + tidy IMAP label ([f017649](https://github.com/PicPeak/picpeak/commit/f017649bd5072d6d23a251fedeba473fe0bf57bf))
|
||||
* **email:** incoming mail (IMAP) intake - backend + standalone flag ([5645c30](https://github.com/PicPeak/picpeak/commit/5645c304ab876f42bf6187d624c256f07e62e482))
|
||||
* **email:** incoming mail UI - IMAP config block + Received emails tab ([31280e1](https://github.com/PicPeak/picpeak/commit/31280e1f7ab374f3ebd6e2b3efa5313cbde860ab))
|
||||
* **email:** round-trip test — send via SMTP to the IMAP mailbox and confirm arrival ([04be51a](https://github.com/PicPeak/picpeak/commit/04be51a008d8e9e050557783fb2f5104e140847e))
|
||||
* **events:** duplicate-gallery action ([#626](https://github.com/PicPeak/picpeak/issues/626)) ([e985d25](https://github.com/PicPeak/picpeak/commit/e985d25207671cbfefcdda9775a96eadf2fe0698))
|
||||
* **feedback:** export shape toggle — per-action vs per-guest pivot ([#640](https://github.com/PicPeak/picpeak/issues/640) part E) ([fabd67a](https://github.com/PicPeak/picpeak/commit/fabd67aecd6caf308956e5b4cb9df7dd44452142))
|
||||
* **feedback:** per-guest favorite + like caps with mobile-friendly limit modal ([#655](https://github.com/PicPeak/picpeak/issues/655)) ([3ac7017](https://github.com/PicPeak/picpeak/commit/3ac70177efc237b8169278208983b0de3629bc72))
|
||||
* **feedback:** per-guest favorite + like caps with mobile-friendly limit modal ([#655](https://github.com/PicPeak/picpeak/issues/655)) ([f2814e4](https://github.com/PicPeak/picpeak/commit/f2814e4a4ce3aa9affc232243d615a15a1aae0c0))
|
||||
* first-run setup wizard (feature selection + config) and portable .picpeak backup roundtrip ([e513e83](https://github.com/PicPeak/picpeak/commit/e513e8345b73e37ebedc9c9ec09665ffc5773e23))
|
||||
* **gallery:** branded URL shortener — /s/<slug> with OG injection ([#699](https://github.com/PicPeak/picpeak/issues/699)) ([a0f7033](https://github.com/PicPeak/picpeak/commit/a0f7033ffc812f92d56e2eac7bd2f498b95ef83b))
|
||||
* **gallery:** branded URL shortener — /s/<slug> with OG injection ([#699](https://github.com/PicPeak/picpeak/issues/699)) ([56c2386](https://github.com/PicPeak/picpeak/commit/56c2386c90a090ee1e7f44a51328fc1291fe323f))
|
||||
* **gallery:** publish notifies assigned customer accounts via the account email ([c657892](https://github.com/PicPeak/picpeak/commit/c657892bc87f44e854827cb8a65f87cc528a2f71))
|
||||
* **invoices:** optional sub-cent rounding reconciliation ("Rundung" row) ([4670292](https://github.com/PicPeak/picpeak/commit/4670292139bf4c5ad523646f38b98b9d47ab3430))
|
||||
* **invoices:** surface monthly/manual accumulator drafts in the Bills list ([e457656](https://github.com/PicPeak/picpeak/commit/e457656b9d06bb420c9d0985fe15c30d6c88aed9))
|
||||
* Live Slideshow ("Diashow") — fullscreen, auto-updating projector view for live events ([4356393](https://github.com/PicPeak/picpeak/commit/4356393b4433dd6b4147388688766b9464294c89))
|
||||
* **messages:** create/select quote, contract, invoice, gallery from a message ([0dbf863](https://github.com/PicPeak/picpeak/commit/0dbf863f60b919560b766f78b107ebac9612bd9d))
|
||||
* **messages:** Outlook-style Messages email client (3 phases, flag-gated) ([d0bdcb1](https://github.com/PicPeak/picpeak/commit/d0bdcb1a6afd0f227d468adc35c23bb88410a578))
|
||||
* **messages:** Phase 1 read-only Messages viewer (email client shell) ([26eeb76](https://github.com/PicPeak/picpeak/commit/26eeb7619703ffe0b29653e409beecd30263bcb0))
|
||||
* **messages:** Phase 2 — customer (hello@) mailbox + inbound body capture ([ee46cf2](https://github.com/PicPeak/picpeak/commit/ee46cf2125c2721c3cecee8761490652552a2f2a))
|
||||
* **messages:** Phase 3 — editable-template composer, reply + create actions ([768e847](https://github.com/PicPeak/picpeak/commit/768e84711f3362069d7ce6867e63c727d2009a46))
|
||||
* **messages:** search bar + Archive/Delete with Archived & Deleted folders ([99d5996](https://github.com/PicPeak/picpeak/commit/99d5996561a2dcff2d431692d5bab5c7286d1f6f))
|
||||
* **messages:** unified Messages email client (flag-gated, default off) ([a71b9b5](https://github.com/PicPeak/picpeak/commit/a71b9b5ed721df17b61062ae3a2361d448c95cf7))
|
||||
* **projects:** attach-event control in the cockpit ([dffcf62](https://github.com/PicPeak/picpeak/commit/dffcf6269fe0416d7233d973a4162874337fbb9a))
|
||||
* **projects:** flag re-rendered emails in the feed ([94f2c01](https://github.com/PicPeak/picpeak/commit/94f2c01590d52962c565eea5d6f47444ff0d5782))
|
||||
* **projects:** gate Project Overview behind a projects feature flag + cockpit email actions ([1bf0b34](https://github.com/PicPeak/picpeak/commit/1bf0b34ea5e280770e0262660586f345860b0325))
|
||||
* **projects:** gated project pickers on quote/contract/hours editors ([0175007](https://github.com/PicPeak/picpeak/commit/0175007abc675ecb18a30e05241cac62bee833f8))
|
||||
* **projects:** link quotes & contracts to a project (precise cockpit rollup) ([6420047](https://github.com/PicPeak/picpeak/commit/6420047e7cda046057d27539b85334874081b51d))
|
||||
* **projects:** linking a quote/contract cascades the whole deal into the project ([a702f33](https://github.com/PicPeak/picpeak/commit/a702f33004996ca53f77c9177cb50a6504410801))
|
||||
* **projects:** Project Overview cockpit — link (multiple) quotes/contracts/hours into projects ([58f93ae](https://github.com/PicPeak/picpeak/commit/58f93ae71350cc4a100f15a1a11f478750dace91))
|
||||
* **projects:** Project Overview cockpit UI + CRM nav entry ([81553aa](https://github.com/PicPeak/picpeak/commit/81553aa0e3476e7fdd2d6fcda7ebfa1f1d7c9b57))
|
||||
* **projects:** rolled-up project value (newest stage wins per deal, cumulative) ([7ca2437](https://github.com/PicPeak/picpeak/commit/7ca243780a2165b28583a44632468fd05c4ed115))
|
||||
* setup wizard + argument-driven unattended install ([681619f](https://github.com/PicPeak/picpeak/commit/681619f0a14070309342a9f908a5bbc8a57d47d8))
|
||||
* **setup:** add "How will you use PicPeak?" feature-selection step ([422dfe1](https://github.com/PicPeak/picpeak/commit/422dfe1cc88ae277dc170e95b4746e507c31b23a))
|
||||
* **setup:** add restore-from-backup branch to the first-run wizard ([a95ee47](https://github.com/PicPeak/picpeak/commit/a95ee473ae7fb2bf3c94c610724476701145d113))
|
||||
* **setup:** brand first-run screen and split into two-step wizard ([d9b0eb7](https://github.com/PicPeak/picpeak/commit/d9b0eb723295c20e80c0e633ebcdb6e191528607))
|
||||
* **setup:** final community step ([#732](https://github.com/PicPeak/picpeak/issues/732)) + fix create-admin button overflow ([#730](https://github.com/PicPeak/picpeak/issues/730)) ([a5f49e3](https://github.com/PicPeak/picpeak/commit/a5f49e32350564ee4d3894f33e9611e9244cc994))
|
||||
* **setup:** final community/thank-you step ([#732](https://github.com/PicPeak/picpeak/issues/732)); fix create-admin button overflow ([#730](https://github.com/PicPeak/picpeak/issues/730)) ([dadaaee](https://github.com/PicPeak/picpeak/commit/dadaaeea7781cb62811256b512003e5c4d6ad95e))
|
||||
* **setup:** per-feature config step after feature selection ([07b450a](https://github.com/PicPeak/picpeak/commit/07b450a954a53781d23a71749552e4101c637777))
|
||||
* **setup:** step-by-step wizard + argument-driven unattended install ([d35c413](https://github.com/PicPeak/picpeak/commit/d35c413651bc10f177a683a8057ad92c03b1cf00))
|
||||
* **setup:** validate setup token at step 1 before advancing ([b0912c7](https://github.com/PicPeak/picpeak/commit/b0912c74276ad2489a8d199739d6eee2e8dabf53))
|
||||
* **slideshow:** add image fit setting (fill vs black bars) ([b5c73e0](https://github.com/PicPeak/picpeak/commit/b5c73e05bd41b262f864e8c700b1d38582b3817f))
|
||||
* **slideshow:** admin ui for live slideshow ([385b05a](https://github.com/PicPeak/picpeak/commit/385b05adcf6a4acb7939e372328a55df7dae5e08))
|
||||
* **slideshow:** backend api for live slideshow ([dea5e0f](https://github.com/PicPeak/picpeak/commit/dea5e0f8a6421c056868c2d9bea11e5bf1ee106a))
|
||||
* **slideshow:** db columns for live slideshow ([1029dd0](https://github.com/PicPeak/picpeak/commit/1029dd05bdb9ca0a97ad86100145221850648651))
|
||||
* **slideshow:** en/de strings for live slideshow ([cb761ee](https://github.com/PicPeak/picpeak/commit/cb761ee621aa553cf210c4224b6cbbf7bf2ef0cb))
|
||||
* **slideshow:** gate behind a feature flag + move globals to a Settings tab ([69367b4](https://github.com/PicPeak/picpeak/commit/69367b45be1c13d87e73e72da34a1f41a5849dfe))
|
||||
* **slideshow:** public fullscreen slideshow viewer ([fd02254](https://github.com/PicPeak/picpeak/commit/fd02254f78bd1860780355ebaa68293d58ce18b3))
|
||||
* **updates:** "What's New" highlights after update + pre-update teaser ([a1a73bf](https://github.com/PicPeak/picpeak/commit/a1a73bf75ff3fcd0833fdf7922a35ad09f19439b))
|
||||
* **updates:** "What's New" highlights after update + pre-update teaser ([500cf85](https://github.com/PicPeak/picpeak/commit/500cf8522e556575bd74d4c71d38a83fb2596b5e))
|
||||
* **whatsapp:** admin-selectable template parameters + reorder ([#647](https://github.com/PicPeak/picpeak/issues/647) follow-up) ([80e8ec5](https://github.com/PicPeak/picpeak/commit/80e8ec5bc71f0653d56f1087521f5207aee0ba8f))
|
||||
* **whatsapp:** admin-selectable template parameters + reorder ([#647](https://github.com/PicPeak/picpeak/issues/647) follow-up) ([16055cd](https://github.com/PicPeak/picpeak/commit/16055cdc413f0aa560c2b2a792b4e2ae8f5cbfd3))
|
||||
* **whatsapp:** WhatsApp Business API notification channel ([#640](https://github.com/PicPeak/picpeak/issues/640) part D) ([78c8e9d](https://github.com/PicPeak/picpeak/commit/78c8e9d9f91d56e07e04df4ed90fb05ccdfb69d2))
|
||||
* **workflows:** 'Clean up layout' auto-arrange button (dagre) ([79607c5](https://github.com/PicPeak/picpeak/commit/79607c597af07ca5b78a689469c3ffefc3699317))
|
||||
* **workflows:** add workflows feature flag + Features-tab toggle ([ff47861](https://github.com/PicPeak/picpeak/commit/ff478619b580096d4dfb46dd6ad751daead082fb))
|
||||
* **workflows:** admin CRUD + run-history + approvals-inbox API ([1a0d6de](https://github.com/PicPeak/picpeak/commit/1a0d6de04d3547ca0e34833befea200c2750e859))
|
||||
* **workflows:** admin review gates before sends + migrate lifecycle/time triggers ([fa7b1ba](https://github.com/PicPeak/picpeak/commit/fa7b1bae951222de506ab8a3c8aee158b471efd1))
|
||||
* **workflows:** advanced text mode — export/import the flow as JSON ([289568f](https://github.com/PicPeak/picpeak/commit/289568fd52fcf0f33a959f074d215853ae37e48c))
|
||||
* **workflows:** approval gates — email confirm/deny + token resume ([b48d8c2](https://github.com/PicPeak/picpeak/commit/b48d8c2eb8e278d3dad8a8afef221a640bcac919))
|
||||
* **workflows:** booking cutover — wire booking actions + hold documents behind approval gates ([ec33ec7](https://github.com/PicPeak/picpeak/commit/ec33ec7670a4feb1108d1bcbfe34727f63cc8cf9))
|
||||
* **workflows:** collections-handoff block after dunning exhausts ([b78bd97](https://github.com/PicPeak/picpeak/commit/b78bd979dc4856a78d2022783537b8efd1297d27))
|
||||
* **workflows:** crash recovery — resume runs orphaned mid-flow ([192d2cb](https://github.com/PicPeak/picpeak/commit/192d2cbc06a0295dbfdc35f05d192ae7ed5273e6))
|
||||
* **workflows:** data-touching action + condition handlers ([96fb440](https://github.com/PicPeak/picpeak/commit/96fb44045e49c4cbc9b221780f7c725f80751993))
|
||||
* **workflows:** emit lifecycle events from invoice + quote services ([cc0ba53](https://github.com/PicPeak/picpeak/commit/cc0ba5347d36161e3da2eaff3a1f2d56c582c4a5))
|
||||
* **workflows:** execution engine core + registry + tests ([1eaef67](https://github.com/PicPeak/picpeak/commit/1eaef67c36a1a1eae6d574d2d44f2a3bdfb43d4c))
|
||||
* **workflows:** hard cutover of gallery-expiry + dunning + pre-event to flows ([0b6c33e](https://github.com/PicPeak/picpeak/commit/0b6c33e59a2e1ba15210645a65800543eaf6305b))
|
||||
* **workflows:** implement prepare_event so booking_full/booking_simple are enableable ([4faf5a3](https://github.com/PicPeak/picpeak/commit/4faf5a344a8d6d03cd9f374e093cc9bd8317fa48))
|
||||
* **workflows:** implement remaining stub actions (prepare_quote, prepare_gallery, reserve_date) ([9414b42](https://github.com/PicPeak/picpeak/commit/9414b42b7fae9f5447c1879e9b2c34d05f7c888d))
|
||||
* **workflows:** invoice prepared+approved early, dispatch waits; daysBefore in editor; dashboard approvals ([182e655](https://github.com/PicPeak/picpeak/commit/182e655fcf0fa119714e6fd34cad5f33d0087045))
|
||||
* **workflows:** make approval rows clickable to open the underlying document ([7727b67](https://github.com/PicPeak/picpeak/commit/7727b6714b5654bab067b041ca9c33cf7d9270ab))
|
||||
* **workflows:** migrate the dunning ladder onto the engine (cutover) ([5259ee9](https://github.com/PicPeak/picpeak/commit/5259ee97053386a63e7bcdf2a5cae22842e5ceaa))
|
||||
* **workflows:** per-quote booking-workflow picker + quote→invoice (no gallery) built-in ([d14f1d8](https://github.com/PicPeak/picpeak/commit/d14f1d850cc995b2cb1119ba0424f123feba50ec))
|
||||
* **workflows:** pre-event reminder picks the template GROUP on the block, type stays automatic ([10d091b](https://github.com/PicPeak/picpeak/commit/10d091b55e0c44738b4001a71def6416a8f0aeb0))
|
||||
* **workflows:** React Flow canvas editor + list + approvals UI ([5c0396d](https://github.com/PicPeak/picpeak/commit/5c0396d0c1bf69ba48b42eacc6d8f145b901a299))
|
||||
* **workflows:** route webhook node through the delivery pipeline (full Option 1) ([675e41a](https://github.com/PicPeak/picpeak/commit/675e41a2f72c8c23fa5c36b13bc6b95abcb9d570))
|
||||
* **workflows:** scheduler resumes elapsed wait nodes ([610a3df](https://github.com/PicPeak/picpeak/commit/610a3dfd732fbf37c68bc3edacaed6c99610a2ab))
|
||||
* **workflows:** schema + permissions (migration 142) ([c818c25](https://github.com/PicPeak/picpeak/commit/c818c25cf2d7a9c9b281107a92528d5923758ab0))
|
||||
* **workflows:** seed booking + pre-event built-ins, wire event.date_approaching ([62ba905](https://github.com/PicPeak/picpeak/commit/62ba905464387784be7710610a65341569b68e46))
|
||||
* **workflows:** seed invoice-dunning ladder as an editable built-in flow ([9b557ef](https://github.com/PicPeak/picpeak/commit/9b557efbf347ba585ceac61cfc0b6b3038ef7de6))
|
||||
* **workflows:** test-fire — safe dry-run of any flow on demand ([e70ddd3](https://github.com/PicPeak/picpeak/commit/e70ddd36b8e9558dc44fc118277539fe6e7425d7))
|
||||
* **workflows:** warn when disabling a built-in (reverts to legacy, not off) ([c5f131c](https://github.com/PicPeak/picpeak/commit/c5f131cec32826331722ef3705c5f5422e31726d))
|
||||
* **workflows:** wire booking document actions (prepare_invoice/contract + send_document) ([cf424ef](https://github.com/PicPeak/picpeak/commit/cf424efb4a3a5e0df3a4bb1c753ca24368446816))
|
||||
* zero-config first run — in-browser admin bootstrap + auto-generated secrets ([bafc96f](https://github.com/PicPeak/picpeak/commit/bafc96f468e3b5cca2ec3291e7b568886755099d))
|
||||
* zero-config first run — in-browser admin bootstrap + auto-generated secrets ([415bffa](https://github.com/PicPeak/picpeak/commit/415bffa04cd82ea16c1803b67ee432a9ebd4165e))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **accounting:** 'Save & mark paid' actually pays; incoming invoices appear in tax/export ([3b70a09](https://github.com/PicPeak/picpeak/commit/3b70a09773f22e942ae80962b9b69a7712b08ff3))
|
||||
* **accounting:** address the-luap PR [#636](https://github.com/PicPeak/picpeak/issues/636) review ([707c5d0](https://github.com/PicPeak/picpeak/commit/707c5d027798bdafb9fe09d7efcbd9ea65330076))
|
||||
* **accounting:** always show Income/Costs/Result summary on tax page (even with zero costs) ([663daf5](https://github.com/PicPeak/picpeak/commit/663daf50ff92293adcc93aed42333eeba2d08849))
|
||||
* **accounting:** Banana export is now a tab-separated .txt (actually importable) ([a195067](https://github.com/PicPeak/picpeak/commit/a19506749a449ec0a628da776af5a5bea8a2e46e))
|
||||
* **accounting:** Banana I&E export uses the 'Category' column (not 'ContraAccount') ([53a16f9](https://github.com/PicPeak/picpeak/commit/53a16f9f6f9b11c224b3ff5f337f8a7fe4dbfc38))
|
||||
* **accounting:** distinguish Categorized (purple) from Paid (green) ([9514f5c](https://github.com/PicPeak/picpeak/commit/9514f5cb8eadd293d4c85a3849073b59ea93161a))
|
||||
* **accounting:** emit ISO dates in exports (Postgres returns Date objects) ([0c0fb29](https://github.com/PicPeak/picpeak/commit/0c0fb29770d7559b8b35a1b2a0aae1315485d875))
|
||||
* **accounting:** label the outgoing-invoice totals block in the tax summary ([f3e77e7](https://github.com/PicPeak/picpeak/commit/f3e77e78079c6869a3a5de062a90f1a04fecde3c))
|
||||
* **accounting:** lock company-expense to company, first-page categorise preview, auto-refresh inbox ([cee692c](https://github.com/PicPeak/picpeak/commit/cee692c10a1a96ada00a62dbcfc9f998af2c53f7))
|
||||
* **accounting:** migration 127 must not insert created_at/updated_at into app_settings ([31867ef](https://github.com/PicPeak/picpeak/commit/31867efcb9b9c4f19ca8a7e59dfcbd8eb6157525))
|
||||
* **accounting:** PDF pager always shown, click categorized→pay, drop duplicate Paid chip ([5fcb96c](https://github.com/PicPeak/picpeak/commit/5fcb96c723a3e5bdf2e93ff3786dfb7ba77b3d24))
|
||||
* **accounting:** PR [#622](https://github.com/PicPeak/picpeak/issues/622) blockers — CSV formula injection + IMAP double-ingest race ([cd6d578](https://github.com/PicPeak/picpeak/commit/cd6d57839b4753b2848620c5960332cc945580ce))
|
||||
* **accounting:** PR [#622](https://github.com/PicPeak/picpeak/issues/622) concerns — flag-cache, customer master gate, VAT-unconfigured, helpers, page cap ([a93b6dc](https://github.com/PicPeak/picpeak/commit/a93b6dc232375e1362e091c8868a409b1335dcae))
|
||||
* **accounting:** tax report 500 on Postgres — drop SQL date() from cost queries ([ea8f6bc](https://github.com/PicPeak/picpeak/commit/ea8f6bc88a4d4ed39c93f80bcfcfbab283fca230))
|
||||
* **accounting:** tax report cost side queried a non-existent column ([ab65a47](https://github.com/PicPeak/picpeak/commit/ab65a470a009d33558a7167dd2c3c649f785e686))
|
||||
* **accounting:** tax report degrades gracefully if cost side fails (+ surface the error) ([9f85111](https://github.com/PicPeak/picpeak/commit/9f8511114a78c4c6bca2666b9c59e8325fc66dfb))
|
||||
* **accounting:** tax-report storno totals + hours-line date on Postgres ([db9e41d](https://github.com/PicPeak/picpeak/commit/db9e41d19846b31b29c5c1be2ee06a7958bb43b0))
|
||||
* **accounting:** tidy the tax-export scope selector styling ([8deb7e0](https://github.com/PicPeak/picpeak/commit/8deb7e0741a5bf559cb9f9b78350821dc84bdb53))
|
||||
* **accounting:** UTF-8 BOM on the ledger export so Banana reads it correctly ([74144da](https://github.com/PicPeak/picpeak/commit/74144da45fc0a7a2c2e88d17a23b584ba77e9262))
|
||||
* **admin-header:** skeleton brand block + move LanguageSelector into profile menu on <sm ([#523](https://github.com/PicPeak/picpeak/issues/523) follow-up) ([b48b5b0](https://github.com/PicPeak/picpeak/commit/b48b5b0000fd95bc149335614eb062dd373fc50a))
|
||||
* **admin-header:** skeleton brand block + move LanguageSelector into profile menu on <sm ([#523](https://github.com/PicPeak/picpeak/issues/523) follow-up) ([fe10191](https://github.com/PicPeak/picpeak/commit/fe10191b82546473f035435731bf6d6ecca2efd6))
|
||||
* **admin/events:** delete cascade orphaned photo folders because it read a non-existent column ([#608](https://github.com/PicPeak/picpeak/issues/608)) ([284680e](https://github.com/PicPeak/picpeak/commit/284680e0357db20177e45ab4ab01de0fbcac2a98))
|
||||
* **admin/events:** delete cascade orphaned photo folders because it read a non-existent column ([#608](https://github.com/PicPeak/picpeak/issues/608)) ([457c956](https://github.com/PicPeak/picpeak/commit/457c9563869156bc4773d873661a75d5115b25db))
|
||||
* **admin/exports:** Lightroom TXT export joins with comma + drops extension ([#623](https://github.com/PicPeak/picpeak/issues/623)) ([a239fec](https://github.com/PicPeak/picpeak/commit/a239fec9d7b6c01c9649c075a40427b8844f83b8))
|
||||
* **admin:** graceful logo-img fallback + show sidebar widgets during perm hydration ([#523](https://github.com/PicPeak/picpeak/issues/523) follow-up 2) ([f51b9cf](https://github.com/PicPeak/picpeak/commit/f51b9cf8df2dfba07590b35cc63def689df98c4a))
|
||||
* **admin:** logo-img fallback + sidebar perm hydration + filename NFD transliteration ([#523](https://github.com/PicPeak/picpeak/issues/523) follow-up 2, [#607](https://github.com/PicPeak/picpeak/issues/607)) ([fcd3ca3](https://github.com/PicPeak/picpeak/commit/fcd3ca36c659eafa47c036f622da8114433b1c74))
|
||||
* **admin:** stack publish-gallery dialog CTAs so the German label fits ([#670](https://github.com/PicPeak/picpeak/issues/670)) ([748af98](https://github.com/PicPeak/picpeak/commit/748af98f3d3f8c00695b82e94d741a0e10a39a81))
|
||||
* **admin:** stack publish-gallery dialog CTAs so the German label fits ([#670](https://github.com/PicPeak/picpeak/issues/670)) ([ea2852d](https://github.com/PicPeak/picpeak/commit/ea2852dcb0a0f00318a2c8067405630bcff4eee6))
|
||||
* **admin:** stop the event-date field crashing the page on backspace ([760a201](https://github.com/PicPeak/picpeak/commit/760a201b6070a4edfe8192bcddce948c5f0c3fec))
|
||||
* **admin:** stray literal "0" rendered from SQLite integer booleans ([760c3d7](https://github.com/PicPeak/picpeak/commit/760c3d7b67963105f155a43297f165b7e672b074))
|
||||
* **analytics:** admin dashboard reads correct fields + Umami device API ([#661](https://github.com/PicPeak/picpeak/issues/661)) ([349f566](https://github.com/PicPeak/picpeak/commit/349f566e87b33c59f61eb28b8abc5f889e6285d6))
|
||||
* **analytics:** admin dashboard reads correct fields + Umami device API ([#661](https://github.com/PicPeak/picpeak/issues/661)) ([7534447](https://github.com/PicPeak/picpeak/commit/7534447b6c0df4290fd8dac12270673097096f1b))
|
||||
* **archives:** stream-extract restore for >2 GiB + preserve original_filename via manifest ([#640](https://github.com/PicPeak/picpeak/issues/640)) ([e4e79a0](https://github.com/PicPeak/picpeak/commit/e4e79a0b3a6d3ddbbc2f3cebdcadc89307147248))
|
||||
* auto-publish release-please PRs without manual approval ([fb64ec0](https://github.com/PicPeak/picpeak/commit/fb64ec0910f8c3ecffb40d85e4f3a08f73503671))
|
||||
* **backup:** address .picpeak review — table filter, superuser guard, tests ([fa7665c](https://github.com/PicPeak/picpeak/commit/fa7665c5b1ad18a4db4f0b59eb4c197a3c9a36e2))
|
||||
* **backup:** make .picpeak roundtrip work on Postgres ([f57462f](https://github.com/PicPeak/picpeak/commit/f57462f7984c64356a9f8acb63c7df3f93909e6e))
|
||||
* **branding+whatsapp:** preserve customCss through preset switches ([#645](https://github.com/PicPeak/picpeak/issues/645)) + admin-pinned WhatsApp template language ([#647](https://github.com/PicPeak/picpeak/issues/647)) ([cde028e](https://github.com/PicPeak/picpeak/commit/cde028e9199a9ddb09957a87590732f4bd4d7a7b))
|
||||
* **branding:** force lock = light/dark only; Branding stays the full preset, galleries hide color+mode ([a7c1913](https://github.com/PicPeak/picpeak/commit/a7c19135bb9645a7f95d5fe76581098db305394f))
|
||||
* **branding:** make 'Show logo in hero' a true global toggle with per-event override ([#756](https://github.com/PicPeak/picpeak/issues/756)) ([a88da99](https://github.com/PicPeak/picpeak/commit/a88da99c8d35c0c7cb7f96a235e984edad74ac7c))
|
||||
* **branding:** make 'Show logo in hero' a true global toggle with per-event override ([#756](https://github.com/PicPeak/picpeak/issues/756)) ([96fe478](https://github.com/PicPeak/picpeak/commit/96fe478bf87a3350185206b3d6f15133138b995d))
|
||||
* **branding:** point HTML favicon link at /favicon.ico (the real Safari fix) ([c60e34e](https://github.com/PicPeak/picpeak/commit/c60e34ecae5eadcde47aebcb1c3b32741be576ff))
|
||||
* **branding:** preserve customCss through preset switches + theme changes ([#645](https://github.com/PicPeak/picpeak/issues/645)) ([7cf2679](https://github.com/PicPeak/picpeak/commit/7cf26795ec12845743a30d48956381f25c6e181c))
|
||||
* **branding:** serve favicon via backend route so Safari picks it up ([db3e327](https://github.com/PicPeak/picpeak/commit/db3e3270f311c31d2e6bfad7c0a5e5c204a2fedc))
|
||||
* **branding:** stream favicon bytes directly (Safari ignores the 302) ([7ccfdc1](https://github.com/PicPeak/picpeak/commit/7ccfdc1aea564b7d056a2e75385c6534c1729b0b))
|
||||
* **branding:** unify hero logo SIZE the same way as visibility ([#756](https://github.com/PicPeak/picpeak/issues/756)) ([60b03b1](https://github.com/PicPeak/picpeak/commit/60b03b17287539b3ad5e5d32f4eda8622f0575e4))
|
||||
* **branding:** when a force lock is active, collapse the theme customizer to just the Force control ([1ac653a](https://github.com/PicPeak/picpeak/commit/1ac653ad1b9f47af8cb24cb53ffa60a1e95192fc))
|
||||
* **ci:** auto-publish release-please PRs without manual approval ([#719](https://github.com/PicPeak/picpeak/issues/719)) ([a3e7232](https://github.com/PicPeak/picpeak/commit/a3e7232b8ed012b8449a76d3e4ea3c5daddd5514))
|
||||
* **ci:** enable release-PR auto-merge with the PAT, not GITHUB_TOKEN ([e08a33d](https://github.com/PicPeak/picpeak/commit/e08a33d9ea273dc18877743f71f59d64bfc3dfb5))
|
||||
* **ci:** set GH_REPO in release-please auto-merge step ([0cab43e](https://github.com/PicPeak/picpeak/commit/0cab43ed898c0d080e946837894d676394805eb8))
|
||||
* **ci:** whatsnew highlights — set GH_REPO so gh runs without a checkout ([3feed0f](https://github.com/PicPeak/picpeak/commit/3feed0fae6a5792a7192a529942e08d9872b7e6e))
|
||||
* **ci:** whatsnew highlights — set GH_REPO so gh runs without a checkout ([2a5f0a8](https://github.com/PicPeak/picpeak/commit/2a5f0a8601ba5cb28243b39278ecdc0892388a96))
|
||||
* conform moved code to eslint indent/quotes, 4-arg mutation callbacks ([2ea26a4](https://github.com/PicPeak/picpeak/commit/2ea26a49620cbe0edfbccf219696b4b386ae50d0))
|
||||
* **crm:** admin surfaces follow the admin light/dark toggle, not the gallery theme ([#620](https://github.com/PicPeak/picpeak/issues/620)) ([d3266a0](https://github.com/PicPeak/picpeak/commit/d3266a0d1c458e8ae9c57ccd2f650e699544d2d6))
|
||||
* **crm:** commit LocalizedDateInput value live, not only on blur ([0b4690a](https://github.com/PicPeak/picpeak/commit/0b4690afabe75a906bea6240241e7a285c1107b4))
|
||||
* **crm:** country dropdown on customer onboarding, placed after State/region ([18ffff2](https://github.com/PicPeak/picpeak/commit/18ffff29c3f3da4a9ef49cc29fa70ab50131d5e9))
|
||||
* **crm:** country dropdown on customer profile billing address too ([fe56d24](https://github.com/PicPeak/picpeak/commit/fe56d24a6b4cc0b191e910a76c0d2c0c58307df8))
|
||||
* **crm:** drop redundant 'Country (full name)' field ([a2b5ae1](https://github.com/PicPeak/picpeak/commit/a2b5ae17f3014036354f91f8924a5e5c02dbf98e))
|
||||
* **crm:** editor totals box computed VAT 100× too small ([e9b297c](https://github.com/PicPeak/picpeak/commit/e9b297c162a19da31d53de377b90bfd5cda1b0a7))
|
||||
* **crm:** localize scheduled-send + installment date + timezone picker ([43b10f9](https://github.com/PicPeak/picpeak/commit/43b10f91c05818ad244f64284aef6b83b0319214))
|
||||
* **crm:** PR [#603](https://github.com/PicPeak/picpeak/issues/603) review follow-ups + Outlook-proof email design ([a2b2d3f](https://github.com/PicPeak/picpeak/commit/a2b2d3fb313f347bac505b5d1846dce2b679ce55))
|
||||
* **crm:** pre-event reminder passes raw event_date (fixes "Invalid Date" in the email) ([250b240](https://github.com/PicPeak/picpeak/commit/250b240337733362cb9a74b248ac78b6e9347bf7))
|
||||
* **crm:** pre-event reminder resolves recipient from the event row, not a non-existent column ([5fbe514](https://github.com/PicPeak/picpeak/commit/5fbe514db6e386eee2eeade548bccbb5bbc5b422))
|
||||
* **crm:** quote→event fallback resolves an ACTIVE event type, never hardcoded 'wedding' ([2309812](https://github.com/PicPeak/picpeak/commit/23098127a83fb12f6a32809666ec93eef9ac90cb))
|
||||
* **crm:** recent-activity email placeholder + customer-dashboard locale dates ([ea09a86](https://github.com/PicPeak/picpeak/commit/ea09a86d0505b08f38e70be0c8717df414144a75))
|
||||
* **crm:** recognise imported-invoice revenue on issue_date, not paid_at ([5e79c69](https://github.com/PicPeak/picpeak/commit/5e79c69cda93c2aef8176768d29c5ea47a95c90d))
|
||||
* **deps:** bump qs/brace-expansion overrides + add uuid override for node-cron ([d705059](https://github.com/PicPeak/picpeak/commit/d705059d3c2904184f037bbe0208fe128fdb9b63))
|
||||
* **downloads:** transliterate accented characters in filename via NFD instead of dropping them ([#607](https://github.com/PicPeak/picpeak/issues/607)) ([620163f](https://github.com/PicPeak/picpeak/commit/620163f2db77cda40b81edcac79a32cbb4fd278f))
|
||||
* **email,ui:** billing emails follow customer language + readable pay… ([ea86871](https://github.com/PicPeak/picpeak/commit/ea86871b81ed65c47e0de3332510c9a0c8343ba0))
|
||||
* **email,ui:** billing emails follow customer language + readable payment-check confirmation ([0c2d319](https://github.com/PicPeak/picpeak/commit/0c2d319fc1ed67843cc60afdcaea5807ea49226f))
|
||||
* **email,ui:** billing emails follow customer language + readable payment-check confirmation ([fcc3e91](https://github.com/PicPeak/picpeak/commit/fcc3e9195d6f63b2dffddfa72a867a3e32325e81))
|
||||
* **email:** always log incoming mail to received_emails (was lost on insert error) ([9c18dcf](https://github.com/PicPeak/picpeak/commit/9c18dcf377fca1e3650b0e20c926ecd7728aec9a))
|
||||
* **email:** fail-fast IMAP timeouts + manual 'Check now' poll ([8a54c6f](https://github.com/PicPeak/picpeak/commit/8a54c6f6b115513ba88a51dea43fad5f8e114c86))
|
||||
* **email:** guard round-trip test when IMAP username isn't an email ([e258472](https://github.com/PicPeak/picpeak/commit/e258472391b7f91b07a916b7edb6ecc5e5c3c048))
|
||||
* **email:** IMAP Security dropdown auto-fills the conventional port ([bd402d2](https://github.com/PicPeak/picpeak/commit/bd402d2e89bcb88b1cabdcf3a59a206116a968f9))
|
||||
* **email:** IMAP Security dropdown matches outgoing — no port in label, manual port ([d04a697](https://github.com/PicPeak/picpeak/commit/d04a6978e9c5df0af5c570df8f35a1a690a0ae9c))
|
||||
* **email:** log all received mail, not just unseen (90-day lookback + dedup) ([c36797d](https://github.com/PicPeak/picpeak/commit/c36797db2db265ad49049c06cee543b1b528a759))
|
||||
* **email:** mark required fields on incoming mail to match outgoing SMTP ([fb48ba4](https://github.com/PicPeak/picpeak/commit/fb48ba4cb4cbd2ec5836fc3adaffb79ea8d20787))
|
||||
* **email:** match IMAP card to SMTP styling + auto-detect mailbox folders ([abb23f0](https://github.com/PicPeak/picpeak/commit/abb23f01c745d4285fbc07994c136a719a66b1d0))
|
||||
* **email:** recover stuck queue — reinit transporter on config save + manual flush ignores retry cap ([68c967f](https://github.com/PicPeak/picpeak/commit/68c967f9bbc388a3a4605a13d440389929e2561b))
|
||||
* **email:** resolve recipient language from the queue row's event_id, not just email_data ([10559fd](https://github.com/PicPeak/picpeak/commit/10559fd68e77eb00f3dd79366fcbb7880321e6b8))
|
||||
* **email:** sibling billing emails follow customer language too ([c0008be](https://github.com/PicPeak/picpeak/commit/c0008be39bc8a9d354e48ce8d6bd89662bc53ebb))
|
||||
* **email:** surface the real error on test/save/flush instead of generic toast ([47edbf6](https://github.com/PicPeak/picpeak/commit/47edbf64b5a83c571df62a71b4c3525fe314abfe))
|
||||
* enable release-PR auto-merge with the PAT so releases actually publish ([97b9853](https://github.com/PicPeak/picpeak/commit/97b9853709fb59a900d70bb2a6bf365d98ae4f86))
|
||||
* event creation 500s on PostgreSQL (NaN slideshow seed) + stray "0" boolean renders ([b187f58](https://github.com/PicPeak/picpeak/commit/b187f588b4d12af7a7849f8558c0085573d4af76))
|
||||
* event-reminder, email-language & gallery-publish bugs surfaced during workflow testing ([c8714ca](https://github.com/PicPeak/picpeak/commit/c8714ca42f4d82d50fe611b2a630260ebecbe740))
|
||||
* **event-types:** renaming a type's slug cascades to events, quotes + reminder template ([415c93a](https://github.com/PicPeak/picpeak/commit/415c93a512f74898d0225ce2e9298f24cc12f60d))
|
||||
* **events:** NaN from slideshow seed breaks event creation on PostgreSQL ([8c86518](https://github.com/PicPeak/picpeak/commit/8c86518aadae000f8e948b0cd6470730db549c1b))
|
||||
* **events:** publish-from-draft email carries the real password ([#627](https://github.com/PicPeak/picpeak/issues/627)) ([83b568e](https://github.com/PicPeak/picpeak/commit/83b568ee2ddc007b7d981fd4b46b69810f0165c3))
|
||||
* **events:** wire customer notifications into both public API entry points ([#647](https://github.com/PicPeak/picpeak/issues/647)) ([f017542](https://github.com/PicPeak/picpeak/commit/f01754247cdb94c5935ad5abbda116841f6c7fba))
|
||||
* **events:** wire customer notifications into both public API entry points ([#647](https://github.com/PicPeak/picpeak/issues/647)) ([511d647](https://github.com/PicPeak/picpeak/commit/511d647eec656cd223c029a9455420fc0621cc80))
|
||||
* **flags:** close CRM/accounting feature-gating gaps from the audit ([03fa3d8](https://github.com/PicPeak/picpeak/commit/03fa3d82962d6d6f3cd9630e01258013d567865e))
|
||||
* **gallery:** admin edits to welcome_message land for returning guests ([#625](https://github.com/PicPeak/picpeak/issues/625)) ([ea6245c](https://github.com/PicPeak/picpeak/commit/ea6245cfdea67bd4668e2100f295433a3d29f7f1))
|
||||
* **gallery:** guest upload honours general_max_files_per_upload + i18n placeholder interpolates ([#613](https://github.com/PicPeak/picpeak/issues/613)) ([40a4aa2](https://github.com/PicPeak/picpeak/commit/40a4aa2d85d93c9dc1faa69f0e6f8524ff917e29))
|
||||
* **gallery:** guest upload honours general_max_files_per_upload + i18n placeholder interpolates ([#613](https://github.com/PicPeak/picpeak/issues/613)) ([69b5186](https://github.com/PicPeak/picpeak/commit/69b5186582d56c42cec520abbe5454171f9f666b))
|
||||
* **gallery:** leave a visible gap between filter bar and hero header ([#624](https://github.com/PicPeak/picpeak/issues/624)) ([178d6da](https://github.com/PicPeak/picpeak/commit/178d6dafb18cd4d30229d745a82af9ce27c41f08))
|
||||
* **gallery:** publish dialog stuck for password-protected galleries with no inline email ([aa3471e](https://github.com/PicPeak/picpeak/commit/aa3471efe1629f36adeff8774dfdc379d4652e26))
|
||||
* **gallery:** unbreak password entry in Instagram in-app browser ([#654](https://github.com/PicPeak/picpeak/issues/654)) ([6193ab7](https://github.com/PicPeak/picpeak/commit/6193ab7f6aafd94b6e2e432ddf170361fd306d4e))
|
||||
* **gallery:** unbreak password entry in Instagram in-app browser ([#654](https://github.com/PicPeak/picpeak/issues/654)) ([b1bfd48](https://github.com/PicPeak/picpeak/commit/b1bfd4838e7104e4f85695e180b20222206073ac))
|
||||
* **hours:** move logActivity out of the entry transactions (SQLite deadlock) ([348955b](https://github.com/PicPeak/picpeak/commit/348955b261713fc9f0b48391a1d4117f6f8c873f))
|
||||
* **i18n:** replace ASCII quote with U+201D in DE perGuestLimitsDesc ([98e97e3](https://github.com/PicPeak/picpeak/commit/98e97e3cf214c96cdefd99bfedd6724f0b85c41c))
|
||||
* **i18n:** sweep activity-type translations + Events / API Tokens / Webhooks settings tabs ([f17c654](https://github.com/PicPeak/picpeak/commit/f17c654e146683683f347ae2cd46de9cf3e47989))
|
||||
* **i18n:** sweep activity-type translations + smart notification fallback ([bc8d333](https://github.com/PicPeak/picpeak/commit/bc8d3330bbe02041760063dcbf5cb5984945a25f))
|
||||
* **i18n:** sweep Events / API Tokens / Webhooks settings tabs ([997a412](https://github.com/PicPeak/picpeak/commit/997a41293ef7de9bdef1546634cb7e549f9c1331))
|
||||
* **i18n:** wrap WhatsApp token show/hide aria-label through t() ([a8bb7b4](https://github.com/PicPeak/picpeak/commit/a8bb7b439f6f57af9653ce283c951070bd52f3c2))
|
||||
* **invoices:** add bank transfer to the mark-paid method list ([e96ef4c](https://github.com/PicPeak/picpeak/commit/e96ef4c5a35bc9e575bc3419fb318a3ee9df1bd6))
|
||||
* **invoices:** badge held (unsent, no send date) invoices as "Draft" ([e4367e0](https://github.com/PicPeak/picpeak/commit/e4367e028a5228ef50c4bbd522d0777bc7340b52))
|
||||
* **invoices:** correct payment-check email template key so dunning email sends ([9a76333](https://github.com/PicPeak/picpeak/commit/9a763337b658299aae0d7c985071c4a775000f99))
|
||||
* **invoices:** correct payment-check email template key so dunning email sends ([3682de1](https://github.com/PicPeak/picpeak/commit/3682de195b46eae692db3ff4a1476b00d3a6e216))
|
||||
* **invoices:** show "Draft" on the invoice detail page for accumulator drafts ([ca09442](https://github.com/PicPeak/picpeak/commit/ca0944293f66b6465a577340e63d592598915092))
|
||||
* **invoices:** show sub-cent Rundung in the editor totals preview ([c2bc2b0](https://github.com/PicPeak/picpeak/commit/c2bc2b098e6af3e984e5b06f42e21a8d9501349b))
|
||||
* **maintenance:** enabling maintenance mode no longer locks admins out ([2493130](https://github.com/PicPeak/picpeak/commit/249313072b08ad79146b397bc08436e9de366d22))
|
||||
* **maintenance:** never block /admin/* with the maintenance screen ([fdde469](https://github.com/PicPeak/picpeak/commit/fdde4696e7025d7e41dd85eeda26b946f6713e13))
|
||||
* **messages:** dynamic addresses, branding accent, compose/sync, per-identity SMTP ([7cc1c59](https://github.com/PicPeak/picpeak/commit/7cc1c596613c019db1e64fdc058a9e28bfd11fdc))
|
||||
* **messages:** dynamic addresses, branding accent, compose/sync, per-identity SMTP ([f9c2b4e](https://github.com/PicPeak/picpeak/commit/f9c2b4ed75b8a22182226a6328be0029c54d7bc4))
|
||||
* **messages:** make the Messaging feature flag toggleable ([b96ad36](https://github.com/PicPeak/picpeak/commit/b96ad36f5d65ca3774af4b6fa692b08819642de1))
|
||||
* **messages:** PR [#769](https://github.com/PicPeak/picpeak/issues/769) nits — server-side search, bare-email recipient, DE i18n ([1e08a4f](https://github.com/PicPeak/picpeak/commit/1e08a4fb156d34ee8ddff69b0a7612001aa6d67e))
|
||||
* **messages:** PR [#769](https://github.com/PicPeak/picpeak/issues/769) review — escape reply sender (XSS), gate backend routes, exact customer match ([bb235e7](https://github.com/PicPeak/picpeak/commit/bb235e72e58359f55f8aeccf2f22c671584fdbd7))
|
||||
* **messages:** show only the mailbox local part in the sidebar (full … ([c622a35](https://github.com/PicPeak/picpeak/commit/c622a35033d739bd04fa8a5388b2670769575bf4))
|
||||
* **messages:** show only the mailbox local part in the sidebar (full address on hover) ([88fe9f9](https://github.com/PicPeak/picpeak/commit/88fe9f984455ca1509f92a8b1d38342379acfd6c))
|
||||
* **messages:** show the resolved customer's name in the doc-action modal ([2c5c1d5](https://github.com/PicPeak/picpeak/commit/2c5c1d561bbe567b9d7615e7c2d071d08bb6d63c))
|
||||
* mirror [#734](https://github.com/PicPeak/picpeak/issues/734) onto decomposed files (PG NaN slideshow seed, SQLite bool renders) ([766351b](https://github.com/PicPeak/picpeak/commit/766351b588bb9d3b270acb1b8c64bd6e242366c2))
|
||||
* **og:** broaden social-crawler coverage (Bluesky Cardyb, WeChat-scraper, fediverse, etc.) ([a0a28a4](https://github.com/PicPeak/picpeak/commit/a0a28a47777db9ca9e60a5134c8d86503c060e79))
|
||||
* **og:** rich social previews for share-token + slideshow URLs ([#699](https://github.com/PicPeak/picpeak/issues/699)) ([25bf7bb](https://github.com/PicPeak/picpeak/commit/25bf7bb5239420da078749bac270196df6968581))
|
||||
* **og:** rich social previews for share-token + slideshow URLs ([#699](https://github.com/PicPeak/picpeak/issues/699)) ([1b8747d](https://github.com/PicPeak/picpeak/commit/1b8747dc82763ba6b4da3a55045cab8740da2a13))
|
||||
* **og:** route branded short URLs + slideshow links to OG, add Viber ([#699](https://github.com/PicPeak/picpeak/issues/699)) ([0dffe0c](https://github.com/PicPeak/picpeak/commit/0dffe0ce92339e0608b3ef660e84c31a62f4a98c))
|
||||
* **og:** route branded short URLs + slideshow to OG handler, add Viber ([#699](https://github.com/PicPeak/picpeak/issues/699)) ([a87ad77](https://github.com/PicPeak/picpeak/commit/a87ad77d8d5215c88f5d95cc7aebaa1769938ec0))
|
||||
* **pdf:** correct multi-page invoice/quote layout + drop IBAN dup under Swiss QR ([2205b0b](https://github.com/PicPeak/picpeak/commit/2205b0bd687587ff2b54fbddb4770bf69a5ef3b2))
|
||||
* **projects:** "one customer matches" rule for deal-lineage attach ([f74d8d4](https://github.com/PicPeak/picpeak/commit/f74d8d4e8cd9fa040e067ffd751b183a9673161b))
|
||||
* **projects:** address review — cross-customer guards + email/queue hardening ([9d13880](https://github.com/PicPeak/picpeak/commit/9d13880f2b177a1a090c4685798e199a1f47b5ec))
|
||||
* **projects:** clickable milestones/feed, email rollup by customer, PG amount coercion ([c0b6d14](https://github.com/PicPeak/picpeak/commit/c0b6d14d08755f23665eaa8d52dd6a250d6c9074))
|
||||
* **projects:** enforce single-customer projects (guard event attach + re-label) ([4b1e85c](https://github.com/PicPeak/picpeak/commit/4b1e85c8555b03cbed4abbd80e9cb45b831df6bf))
|
||||
* **projects:** make email preview fully read-only (no clickable links) ([fa622cf](https://github.com/PicPeak/picpeak/commit/fa622cf2f87f447952b2e6e6e9d7fe60a1c14fb7))
|
||||
* **projects:** make the whole email row clickable (opens preview) ([84b4a5f](https://github.com/PicPeak/picpeak/commit/84b4a5f049a12bb22941dac733044d90a01fe052))
|
||||
* **projects:** only link cockpit rows when the target feature is enabled ([2369323](https://github.com/PicPeak/picpeak/commit/236932325971e23db17d6245d1ab2e9f2c1b4eec))
|
||||
* **projects:** render email preview with its own brand colors, not forced light ([b9a9c01](https://github.com/PicPeak/picpeak/commit/b9a9c018c0d2e0ff6c78ce0a1419ac28449043a4))
|
||||
* **projects:** scope 'book to project' to the current customer ([89bfb6c](https://github.com/PicPeak/picpeak/commit/89bfb6c5190ec0480168f9b59dc8ce5c2f104068))
|
||||
* **projects:** scope email rollup to CRM types + re-render unstored previews ([f02fba6](https://github.com/PicPeak/picpeak/commit/f02fba63325115fe416366c5d1c4f38900386cce))
|
||||
* **projects:** use real events.edit permission for project writes ([f71243e](https://github.com/PicPeak/picpeak/commit/f71243e388e12da840aa70193b4907af2866c039))
|
||||
* **projects:** wrap long URLs in email preview (no horizontal scroll) ([0cc52f3](https://github.com/PicPeak/picpeak/commit/0cc52f36938be2dc6c8a699afdc55d70831c02a9))
|
||||
* **reminders:** wrap is_active/is_archived wheres in formatBoolean ([b9d9138](https://github.com/PicPeak/picpeak/commit/b9d91385b43de7ede508884f7cf78b5cf785f853))
|
||||
* **security:** close BOLA on photo-export + NAT64 SSRF in URL guard ([b8211e9](https://github.com/PicPeak/picpeak/commit/b8211e9944da9e7b1c43a25e2f24c8a2425000cf))
|
||||
* **security:** close cross-event thumbnail leak, bulk-op ownership bypass, + hardening ([081f3ed](https://github.com/PicPeak/picpeak/commit/081f3edcdffc65a77000cc638e364ea9dc03767f))
|
||||
* **security:** close NAT64 SSRF + photo-export BOLA + sweep Trivy alerts (GHSA-wmjx-pc37-272r, GHSA-9v4w-jrhx-g5wr) ([6f40db8](https://github.com/PicPeak/picpeak/commit/6f40db859751efc2c931bc981a48148808fd3701))
|
||||
* **security:** cross-event thumbnail leak, bulk-op ownership bypass + auth hardening ([b732974](https://github.com/PicPeak/picpeak/commit/b732974779803b67097c81ae6bce2de0f2910794))
|
||||
* **security:** re-apply SVG CSP on the direct favicon route (PR [#603](https://github.com/PicPeak/picpeak/issues/603) blocker) ([1214b6b](https://github.com/PicPeak/picpeak/commit/1214b6b762ce6c763b9a28389c17905d8e47d87f))
|
||||
* set GH_REPO in release-please auto-merge step ([d00d52a](https://github.com/PicPeak/picpeak/commit/d00d52a2215dfcae34086cf3e10fe4da0aef09c9))
|
||||
* **settings:** don't insert non-existent created_at into app_settings ([8621338](https://github.com/PicPeak/picpeak/commit/8621338c489cbd5194da6ac22d1fe1bd9d730cb0))
|
||||
* **settings:** hoist tab-visibility useEffect above isLoading early return ([49bfb45](https://github.com/PicPeak/picpeak/commit/49bfb45332993b919ad4f949a0cd912a85888620))
|
||||
* **settings:** remove duplicate Mail import that broke the dev server ([5b535f8](https://github.com/PicPeak/picpeak/commit/5b535f86580275eda768fa2d85a8c94bd701f832))
|
||||
* **settings:** remove duplicate Mail import that crashes the dev server ([4aa6583](https://github.com/PicPeak/picpeak/commit/4aa6583baef55e2c12e9cde7d391156436de518f))
|
||||
* **setup:** address PR [#714](https://github.com/PicPeak/picpeak/issues/714) review — password UX, script token, race, nits ([286975d](https://github.com/PicPeak/picpeak/commit/286975dc52acf72809476e49ec0393021dd467cb))
|
||||
* **setup:** keep the first-run wizard light regardless of dark mode ([d4b143f](https://github.com/PicPeak/picpeak/commit/d4b143f313d00f2a30abcbc1a880c140d7455e7b))
|
||||
* **setup:** match first-run logo size to the login page default ([3e69c5d](https://github.com/PicPeak/picpeak/commit/3e69c5df3ffecc42663cba4ad7bf9f18795cedce))
|
||||
* **slideshow:** deny display-only token on download/upload/feedback (PR [#646](https://github.com/PicPeak/picpeak/issues/646) review) ([e36b330](https://github.com/PicPeak/picpeak/commit/e36b3309ca66404d189d5b218cc1f0eba925e4c7))
|
||||
* **slideshow:** dip-to-white/black no longer flickers the image ([db8388c](https://github.com/PicPeak/picpeak/commit/db8388c79e44f5d254d984810bd62bfb11effd0f))
|
||||
* **slideshow:** drop updated_at from event writes ([1e40f82](https://github.com/PicPeak/picpeak/commit/1e40f8296ca59ff0395f6cc09ee452ab62653cdc))
|
||||
* **slideshow:** feature flag is a master kill-switch, not just admin UI ([759784a](https://github.com/PicPeak/picpeak/commit/759784a4d1cfe7e67c825293760169ad6904f090))
|
||||
* **slideshow:** fill the viewport instead of black bars ([6ec46de](https://github.com/PicPeak/picpeak/commit/6ec46de0e7bb821ea4e4a7fc2318792b810c3f36))
|
||||
* **slideshow:** read globals from app_settings, not the missing settings table ([0f4388d](https://github.com/PicPeak/picpeak/commit/0f4388d68ab85049c46e7af566d35f4fbf6e4d02))
|
||||
* **slideshow:** surface backend error in the live slideshow card ([056f938](https://github.com/PicPeak/picpeak/commit/056f9381de5dbe90243bea409b587b4910050cbf))
|
||||
* **test:** raise bootCrmDb beforeAll timeout on slideshow suites ([f4b6b89](https://github.com/PicPeak/picpeak/commit/f4b6b8941a30a20615cc87627a0663ff6d03c932))
|
||||
* **upload:** auto-throttle on low-memory hosts + correct documented RAM minimum ([#628](https://github.com/PicPeak/picpeak/issues/628)) ([714a9f6](https://github.com/PicPeak/picpeak/commit/714a9f6fb1f48ba1316cc240054d5128749581d8))
|
||||
* **whatsapp:** admin-pinned template language + Arabic locale support ([#647](https://github.com/PicPeak/picpeak/issues/647)) ([4fd7709](https://github.com/PicPeak/picpeak/commit/4fd7709596e7a0dd3fedef63772ddd52ce5561c9))
|
||||
* **whatsnew:** decode HTML entities and trim em-dash detail in fallback bullets ([5582644](https://github.com/PicPeak/picpeak/commit/5582644dc49330549be2a3a4cdd5b1ba0f21a294))
|
||||
* **workflows:** backfill existing invoices + anchor dunning grace to due date when enabled ([#750](https://github.com/PicPeak/picpeak/issues/750)) ([9596342](https://github.com/PicPeak/picpeak/commit/9596342d6a9ef107193cfc123487a8061f4a91ca))
|
||||
* **workflows:** backfill existing invoices + anchor grace to due date when dunning is enabled ([#750](https://github.com/PicPeak/picpeak/issues/750)) ([2c7b351](https://github.com/PicPeak/picpeak/commit/2c7b35145861557021482c0e92f573236ae2676e))
|
||||
* **workflows:** close review blockers — prefetch-safe approvals + loud gate-edge failure ([98ab717](https://github.com/PicPeak/picpeak/commit/98ab717043e3fdefac0934bf8f4621d523b15e9a))
|
||||
* **workflows:** dark-mode canvas + readable nodes + structured config ([1734aba](https://github.com/PicPeak/picpeak/commit/1734aba39c199c8dee1b69e9933ddf57579f9d50))
|
||||
* **workflows:** defer quote.accepted/declined emit until the 15-min response window locks ([539a837](https://github.com/PicPeak/picpeak/commit/539a83711d1996dc9c262365f2c511e7bc445add))
|
||||
* **workflows:** harden graph validation + refuse enabling unimplemented flows ([d927464](https://github.com/PicPeak/picpeak/commit/d927464778272bd862aa01903179672f4d47368a))
|
||||
* **workflows:** held booking invoices are 'scheduled', not 'pending_delivery' — so send_document can issue them ([882cfc0](https://github.com/PicPeak/picpeak/commit/882cfc0661b02602bae91b928a46ceea754f7f29))
|
||||
* **workflows:** make the dashboard pending-approvals card items clickable too ([6e20d58](https://github.com/PicPeak/picpeak/commit/6e20d58487c5e20b08e1d1b4ddd4e76f9e922a79))
|
||||
* **workflows:** matchFilter strict equality + accurate comment ([dee8d40](https://github.com/PicPeak/picpeak/commit/dee8d40bb3235a908bba514a97a62d3a91a6e131))
|
||||
* **workflows:** Postgres-safe id capture on workflow inserts ([cede885](https://github.com/PicPeak/picpeak/commit/cede885b04854fd667f65a19697505c0a7c52739))
|
||||
* **workflows:** scope dunning backfill to its own flow via targetWorkflowId ([da3a77d](https://github.com/PicPeak/picpeak/commit/da3a77dac40a892158167aec939a1458d488a951))
|
||||
* **workflows:** ship built-ins disabled for first beta + enabled-based mutex + admin sentinel ([5893ecb](https://github.com/PicPeak/picpeak/commit/5893ecb27a0365a79ec04336c5a122b31d31db0e))
|
||||
* **workflows:** wire a real, SSRF-guarded webhook action (was a silent no-op) ([af7eea8](https://github.com/PicPeak/picpeak/commit/af7eea8b43e37905a79138bcde4b1026dea13050))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* **slideshow:** cache global settings to cut /state DB reads (PR [#646](https://github.com/PicPeak/picpeak/issues/646) review) ([a995131](https://github.com/PicPeak/picpeak/commit/a995131f4266e112c96c6e8cedd5158995ebe899))
|
||||
|
||||
|
||||
### Documentation
|
||||
|
||||
* branch model + migration-to-org guide + PR template ([166ef47](https://github.com/PicPeak/picpeak/commit/166ef47611a248c4d517e26d390d87d21f077ca1))
|
||||
* branch model + migration-to-org guide + PR-template target hint ([d606fcd](https://github.com/PicPeak/picpeak/commit/d606fcd5a425fed3c968ec06b071a386bf558c28))
|
||||
* prominent migration banner at the top of README ([14bd3e1](https://github.com/PicPeak/picpeak/commit/14bd3e1a6c6cf74378d6f316024584d8941cbcd5))
|
||||
* prominent migration banner at the top of README ([#669](https://github.com/PicPeak/picpeak/issues/669)) ([5839bba](https://github.com/PicPeak/picpeak/commit/5839bba72a56cc29077f63f7daa038995fb09dfb))
|
||||
* **readme:** add CRM + accounting to features, tax disclaimer, update contributor ([116743b](https://github.com/PicPeak/picpeak/commit/116743ba438505a52b021f80f678c5a0094d20d4))
|
||||
* **readme:** add Pixieset to comparison + customer-accounts/CRM/accounting rows ([721f440](https://github.com/PicPeak/picpeak/commit/721f440fa6e810e26ec92d89d14497bd946bcdef))
|
||||
* **readme:** clarify comparison footnotes — $0 cost caveat + Pixieset video cap ([b043963](https://github.com/PicPeak/picpeak/commit/b0439638bddba819b58d375c0f42cd4df3a837b4))
|
||||
* **readme:** credit [@the-luap](https://github.com/the-luap) as creator/lead maintainer ([3528f6b](https://github.com/PicPeak/picpeak/commit/3528f6b8b7e2b537b111f7787d48459a976ef744))
|
||||
* **readme:** credit [@the-luap](https://github.com/the-luap) as creator/lead maintainer ([748238e](https://github.com/PicPeak/picpeak/commit/748238e8caf198e3899954804e61a2e179058957))
|
||||
* require screenshots for UI changes in PRs ([f5b4aa7](https://github.com/PicPeak/picpeak/commit/f5b4aa7a5bc321ffbd33f1c1b92003435a7ee842))
|
||||
* require screenshots for UI changes in PRs ([8ca7477](https://github.com/PicPeak/picpeak/commit/8ca74776f4d3f7be930a713afe4ac4de594adedd))
|
||||
* **slideshow:** add Live Slideshow guide + README entries ([16013d1](https://github.com/PicPeak/picpeak/commit/16013d1cf9ad82ee052f905f9702feffde7b67eb))
|
||||
|
||||
## [3.83.0-beta.0](https://github.com/PicPeak/picpeak/compare/v3.82.6-beta.0...v3.83.0-beta.0) (2026-07-08)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "picpeak-backend",
|
||||
"version": "3.83.0-beta.0",
|
||||
"version": "2.7.0",
|
||||
"description": "Backend for PicPeak event photo sharing platform",
|
||||
"main": "server.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "picpeak-frontend",
|
||||
"private": true,
|
||||
"version": "3.83.0-beta.0",
|
||||
"version": "2.7.0",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
Reference in New Issue
Block a user