Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
312 commits
Select commit Hold shift + click to select a range
ef2f5fb
fix: prevent deletion of super-admin users in canDelete gate
KhawarMehfooz Jun 23, 2026
a8f8c41
fix: require manage-settings permission to access Settings page
KhawarMehfooz Jun 23, 2026
ee960f2
feat: Admin panel — Role permissions management page (Closes #500)
KhawarMehfooz Jun 24, 2026
cc4998f
fix: Super-admin “always checked” requirement is not guaranteed.
KhawarMehfooz Jun 24, 2026
a52c8ff
fix: save flow can silently strip permissions the editor doesn’t own.
KhawarMehfooz Jun 24, 2026
cfb69c5
refactor: move blade local variables to public properties in RolePerm…
KhawarMehfooz Jun 24, 2026
3173811
refactor: extract permission sync logic into RolesService
KhawarMehfooz Jun 24, 2026
35872be
fix: guard save() against stale auth and post-mount role creation
KhawarMehfooz Jun 24, 2026
32e8528
feat(core): reference fields (#518)
nielsdrost7 Jul 4, 2026
5ae27ca
test(invoices): calculator unit tests (#135)
nielsdrost7 Jul 4, 2026
51c8c89
feat(invoices): complete invoice list row action group (#31, #167, #2…
nielsdrost7 Jul 4, 2026
733d48a
feat(clients): merge duplicate clients (#481)
nielsdrost7 Jul 4, 2026
05e559f
feat(quotes): convert quote to invoice (#160)
nielsdrost7 Jul 4, 2026
095a778
feat(projects): bill project tasks (#268)
nielsdrost7 Jul 4, 2026
d728710
feat(clients): client detail view (#221)
nielsdrost7 Jul 4, 2026
0528ecf
feat(quotes): quote edit page with status-aware header actions (#543,…
nielsdrost7 Jul 4, 2026
3560346
feat(invoices): invoice edit page with PDF, credit notes and header a…
nielsdrost7 Jul 4, 2026
0a7ce61
fix(core): default company dashboard redirect (#11)
nielsdrost7 Jul 4, 2026
0e64b04
Update composer.json
nielsdrost7 Jul 4, 2026
b8fadaa
feat(products): add category and unit filters to products table
nielsdrost7 Jul 4, 2026
d5620fc
fix: repair stale Filament v5 auth translation keys on Login page
claude Jul 9, 2026
a7377df
refactor: delegate login throttle notification to Filament's built-in
claude Jul 9, 2026
01ffca7
User pages in the Core Module
KhawarMehfooz Jul 13, 2026
b691297
User pages in the Core Module. (Closes 18)
KhawarMehfooz Jul 13, 2026
4e3ae64
Skip email verification when the address is unchanged.
KhawarMehfooz Jul 13, 2026
4c0044d
Replace the prohibited __() calls with trans()
KhawarMehfooz Jul 13, 2026
4827f36
Handle avatar removal and cleanup on replacement
KhawarMehfooz Jul 13, 2026
76314b4
chore: stop tracking public/build/manifest.json
KhawarMehfooz Jul 13, 2026
3f37293
chore: stop tracking environment-specific public/storage symlink
KhawarMehfooz Jul 13, 2026
d01a0c6
Add CC email addresses per client for invoice emails. (Closes #394)
KhawarMehfooz Jul 13, 2026
339b52a
Store client CC email addresses as typed communications records inste…
KhawarMehfooz Jul 13, 2026
31ff16a
chore: port test-infra fixes, tighten .gitignore, document PHP 8.3+
nielsdrost7 Jul 13, 2026
a0169af
feat(#363): invoicing-contact variables in email templates (Phase 6)
nielsdrost7 Jul 13, 2026
bd16607
Notes template/selection option in quotations and invoices
KhawarMehfooz Jul 14, 2026
e0f2d91
Use full markdown toolbar for quote notes field
KhawarMehfooz Jul 14, 2026
d808ae2
Merge branch 'develop' into feature/542-invoice-edit-page
nielsdrost7 Jul 14, 2026
bdf7fee
Merge pull request #575 from underdogg-forks/feature/542-invoice-edit…
nielsdrost7 Jul 14, 2026
aaa3026
Email action opens modal pre-filled with recipient, subject, and body…
KhawarMehfooz Jul 16, 2026
a24f9fa
Move to Support or rename to avoid Service guideline violations
KhawarMehfooz Jul 16, 2026
2400bf8
Fix incorrect property name for relation email.
KhawarMehfooz Jul 16, 2026
9450cb9
Implement invoice email sending and numbering-group reassignment (#15…
nielsdrost7 Jul 17, 2026
73c8b6e
feat(docker): add standalone Docker resources for self-contained deve…
nielsdrost7 Jun 12, 2026
8a449dd
feat(docker): wire the compose stack and add a PHP 8.4 CLI image
nielsdrost7 Jul 13, 2026
72208b3
Merge branch 'develop' into chore/test-infra-and-gitignore
nielsdrost7 Jul 17, 2026
0864e9a
Merge pull request #607 from underdogg-forks/chore/test-infra-and-git…
nielsdrost7 Jul 17, 2026
2bb608e
Update composer.json
nielsdrost7 Jul 17, 2026
ef67f91
Update .gitignore
nielsdrost7 Jul 17, 2026
32e3dd8
Delete pint_output.log
nielsdrost7 Jul 17, 2026
b5d0597
improve .gitignore
nielsdrost7 Jul 17, 2026
ab4f9c1
improve .gitignore
nielsdrost7 Jul 17, 2026
999da56
Add permission/role seeder test coverage and Relations authorization …
nielsdrost7 Jul 17, 2026
bea4f9a
feat: hide setup resources from company sidebar, add Expenses quick-c…
nielsdrost7 Jul 17, 2026
e4565ce
fix: reconcile Numbering Format/Group Identifier Format fields, add c…
nielsdrost7 Jul 17, 2026
f0e6fc0
Merge remote-tracking branch 'upstream/develop' into feature/616-617-…
nielsdrost7 Jul 17, 2026
cbed027
Merge remote-tracking branch 'upstream/develop' into feature/620-numb…
nielsdrost7 Jul 17, 2026
c91606a
fix: bind click-to-insert token actions to their fields via suffixAct…
nielsdrost7 Jul 17, 2026
874ca8e
wip: numbering seeder type-scoping, generator wiring, prefix dropdown
nielsdrost7 Jul 17, 2026
249c7a3
fix: dashboard widget row links, client date label, inline contact cr…
nielsdrost7 Jul 17, 2026
fac63d8
Merge remote-tracking branch 'upstream/develop' into feature/618-619-…
nielsdrost7 Jul 17, 2026
85351d4
feat: add role-gated Admin Panel link to company panel user menu (#632)
nielsdrost7 Jul 17, 2026
dec03e1
Merge remote-tracking branch 'upstream/develop' into feature/632-admi…
nielsdrost7 Jul 17, 2026
1792967
Merge remote-tracking branch 'upstream/develop' into feature/623-624-…
nielsdrost7 Jul 17, 2026
2079b12
Merge remote-tracking branch 'upstream/develop' into develop
nielsdrost7 Jul 17, 2026
068e341
fix: wire generator group-name fallback and reactive number regeneration
nielsdrost7 Jul 17, 2026
0890bd1
[IP-632]: add role-gated Admin Panel link to company panel user menu
nielsdrost7 Jul 17, 2026
82b8658
fix: sidebar active-item contrast (#568) + extend Nord coverage to mo…
nielsdrost7 Jul 17, 2026
4959357
fix: stop CI failing on skipped/incomplete tests despite zero real fa…
nielsdrost7 Jul 17, 2026
6ade829
feat: seed country-specific VAT rates for DE/NL/BE/FR, wire up TaxRat…
nielsdrost7 Jul 17, 2026
c5868c7
[IP-623]: Fix dashboard widget links, client date label, inline conta…
nielsdrost7 Jul 17, 2026
6b57e0f
feat(core): duplicate-number prevention via observers (#513, #514)
nielsdrost7 Jul 4, 2026
1924427
feat: extend sidebar quick-create and add record-count badges
nielsdrost7 Jul 17, 2026
8bc12c0
Merge remote-tracking branch 'upstream/develop' into tmp/574-rebase
nielsdrost7 Jul 17, 2026
097c173
chore: drop stray pint_output.log (gitignored in develop)
nielsdrost7 Jul 17, 2026
2a6d456
style: pint fixes
nielsdrost7 Jul 17, 2026
ff55e54
Merge pull request #574 from underdogg-forks/claude/default-company-d…
nielsdrost7 Jul 17, 2026
c1b6d3f
Merge remote-tracking branch 'upstream/develop' into feature/502-503-…
nielsdrost7 Jul 17, 2026
bf6252e
fix: update authorization tests for current client_admin permission b…
nielsdrost7 Jul 17, 2026
fefe3f9
Merge pull request #615 from underdogg-forks/feature/502-503-92-permi…
nielsdrost7 Jul 17, 2026
b5bce7f
Merge pull request #629 from underdogg-forks/feature/616-617-nav-visi…
nielsdrost7 Jul 17, 2026
ffed7df
Merge remote-tracking branch 'upstream/develop' into tmp/576-rebase
nielsdrost7 Jul 17, 2026
29318ee
chore: drop stray pint_output.log (gitignored in develop)
nielsdrost7 Jul 17, 2026
9f14a84
style: pint fixes
nielsdrost7 Jul 17, 2026
9bd3abf
Merge pull request #576 from underdogg-forks/feature/543-quote-edit-page
nielsdrost7 Jul 17, 2026
5533d34
Merge remote-tracking branch 'upstream/develop' into tmp/577-rebase
nielsdrost7 Jul 17, 2026
9970163
chore: drop stray pint_output.log (gitignored in develop)
nielsdrost7 Jul 17, 2026
a59dde9
fix: reconcile quick-create test with Invoice/Quote dedicated create …
nielsdrost7 Jul 17, 2026
fbef2e4
Merge pull request #577 from underdogg-forks/feature/221-client-detai…
nielsdrost7 Jul 17, 2026
978b0d2
Merge remote-tracking branch 'upstream/develop' into tmp/578-rebase
nielsdrost7 Jul 17, 2026
a485789
chore: drop stray pint_output.log (gitignored in develop)
nielsdrost7 Jul 17, 2026
8a81ec8
Merge pull request #578 from underdogg-forks/feature/268-bill-project…
nielsdrost7 Jul 17, 2026
8b61561
Merge remote-tracking branch 'upstream/develop' into tmp/579-rebase
nielsdrost7 Jul 17, 2026
b6fca0d
chore: drop stray pint_output.log (gitignored in develop)
nielsdrost7 Jul 17, 2026
3c77b19
Merge pull request #579 from underdogg-forks/feature/160-convert-quot…
nielsdrost7 Jul 17, 2026
7e9002e
Merge remote-tracking branch 'upstream/develop' into tmp/580-rebase
nielsdrost7 Jul 17, 2026
0eb8204
chore: drop stray pint_output.log (gitignored in develop)
nielsdrost7 Jul 17, 2026
6ba7bba
fix: assert soft delete of relations, not hard delete
nielsdrost7 Jul 17, 2026
4a955c4
Merge pull request #580 from underdogg-forks/feature/481-merge-clients
nielsdrost7 Jul 17, 2026
fed6793
Merge remote-tracking branch 'upstream/develop' into tmp/581-rebase
nielsdrost7 Jul 17, 2026
4d791d8
chore: drop stray pint_output.log (gitignored in develop)
nielsdrost7 Jul 17, 2026
eb57058
fix: reconcile PR's inline email action with develop's EmailInvoiceAc…
nielsdrost7 Jul 17, 2026
7277b66
Merge pull request #581 from underdogg-forks/feature/31-invoice-list-…
nielsdrost7 Jul 17, 2026
5c5171a
Merge remote-tracking branch 'upstream/develop' into tmp/584-rebase
nielsdrost7 Jul 17, 2026
fcf8525
style: pint fixes
nielsdrost7 Jul 17, 2026
3abace8
Merge pull request #584 from underdogg-forks/feature/135-calculator-u…
nielsdrost7 Jul 17, 2026
2fb96a3
Merge remote-tracking branch 'upstream/develop' into tmp/585-rebase
nielsdrost7 Jul 17, 2026
ce11efb
fix: wire client_reference/work_order through Invoice/QuoteService
nielsdrost7 Jul 17, 2026
eb53ad5
Merge pull request #585 from underdogg-forks/feature/518-reference-fi…
nielsdrost7 Jul 17, 2026
9b61715
Merge remote-tracking branch 'upstream/develop' into feature/390-prod…
nielsdrost7 Jul 17, 2026
4e56bf1
Merge pull request #592 from underdogg-forks/feature/390-product-cate…
nielsdrost7 Jul 17, 2026
ca2e68d
Merge remote-tracking branch 'upstream/develop' into feature/363-emai…
nielsdrost7 Jul 17, 2026
45faee7
Merge pull request #610 from underdogg-forks/feature/363-email-contac…
nielsdrost7 Jul 17, 2026
92c4b86
Merge remote-tracking branch 'upstream/develop' into tmp/614-rebase
nielsdrost7 Jul 17, 2026
246b9c8
fix: wire real invoice email sending into develop's EmailInvoiceActio…
nielsdrost7 Jul 17, 2026
ef0d4d7
Merge pull request #614 from underdogg-forks/feature/150-46-invoice-e…
nielsdrost7 Jul 17, 2026
9258ed4
Merge remote-tracking branch 'upstream/develop' into feature/620-numb…
nielsdrost7 Jul 17, 2026
b71bb94
Merge pull request #630 from underdogg-forks/feature/620-numbering-fo…
nielsdrost7 Jul 17, 2026
35eb37f
Merge remote-tracking branch 'upstream/develop' into tmp/638-rebase
nielsdrost7 Jul 17, 2026
3305037
style: pint fixes
nielsdrost7 Jul 17, 2026
236ca77
Merge pull request #638 from underdogg-forks/feature/618-619-621-numb…
nielsdrost7 Jul 17, 2026
68fffd6
ran pint
nielsdrost7 Jul 17, 2026
21e4af5
improved .gitignore
nielsdrost7 Jul 17, 2026
a30f113
improved .gitignore
nielsdrost7 Jul 17, 2026
8540a93
fix: three pre-existing bugs surfaced repeatedly during the merge cam…
nielsdrost7 Jul 17, 2026
fd333fc
Merge pull request #639 from underdogg-forks/fix/pre-existing-test-fa…
nielsdrost7 Jul 17, 2026
0ce9600
refactor: remove dead code and fix latent bugs found in a full codeba…
nielsdrost7 Jul 18, 2026
6ec5d04
Merge origin/develop (gitignore + pint hygiene) to reconcile fork drift
nielsdrost7 Jul 18, 2026
2c5c266
remove dead code and fix latent bugs found in a full codebase review
nielsdrost7 Jul 18, 2026
75230ae
improved .gitignore
nielsdrost7 Jul 18, 2026
e63ec26
style: fix Pint violations across factories, observers, and tests
nielsdrost7 Jul 18, 2026
9a20ef2
improved .gitignore
nielsdrost7 Jul 19, 2026
296e00a
quick improvements on composer.json and CLAUDE file
nielsdrost7 Jul 19, 2026
5d82c24
improve .gitignore
nielsdrost7 Jul 20, 2026
e863c5f
settings cluster
nielsdrost7 Jul 20, 2026
cd7aa4d
fix: Setting::getByKey ignores company global scope, breaking legacy …
nielsdrost7 Jul 24, 2026
b6a6f81
[IP-247]: company-scoped Settings page (Invoices/Quotes/Taxes/Email/S…
nielsdrost7 Jul 24, 2026
9b4040d
fix: require PHP ^8.4 to match CI and mb_str_functions usage (#696)
KhawarMehfooz Jul 31, 2026
0c64800
fix: apply client and template CC addresses to invoice emails (#394)
KhawarMehfooz Jul 30, 2026
c419577
feat: Send invoice reminders for overdue invoices. Closes #480
KhawarMehfooz Jul 31, 2026
8d5906b
Update Modules/Invoices/Tests/Feature/SendReminderActionTest.php
nielsdrost7 Jul 31, 2026
051492b
fix: address CodeRabbit review feedback on #480
KhawarMehfooz Jul 31, 2026
780cf19
fix(widgets): order recent records by id
PuvaanRaaj Aug 1, 2026
57c9224
Company Branding (logo, colors, fonts) Closes #248
KhawarMehfooz Aug 3, 2026
5d60593
apply branding changes to invoice pdf. Closes #248
KhawarMehfooz Aug 3, 2026
8390a0c
fix: drop Inter/Roboto from invoice font picker, unsupported by Dompdf
KhawarMehfooz Aug 3, 2026
8fa984f
feat: implement InvoicePlane v1 to v2 migration system with entity mi…
Ahmedraza-fyntune Aug 13, 2026
5563816
php stan error fix for code static analysis
Ahmedraza-fyntune Aug 13, 2026
7564451
fix(core): handle cross-company access guard with friendly notificati…
Ahmedraza-fyntune Aug 13, 2026
b8f5276
php stan error fix for code static analysis
claude Aug 14, 2026
8f59eb5
chore: eliminate the SQLite testing fallback, run against real MariaDB
claude Aug 14, 2026
458996c
docs: add test-gaps skill for security/correctness guards without tests
claude Aug 14, 2026
0d71dfc
style: apply Laravel Pint fixes
github-actions[bot] Aug 14, 2026
e0bc0da
Merge upstream/develop into feat/678-v1-migration (resolve phpDoc sty…
nielsdrost7 Aug 15, 2026
89979ec
Merge pull request #708 from underdogg-forks/feat/678-v1-migration
nielsdrost7 Aug 15, 2026
8308d44
diag: instrument tenant-switch action + test to find #687's CI-only f…
nielsdrost7 Jul 24, 2026
6f2ff43
diag: log table query closure firings (user identity, visible company…
nielsdrost7 Jul 24, 2026
1fa8d8f
diag: temporarily filter CI to UserProfileTest only, to isolate #687
nielsdrost7 Jul 24, 2026
59a6db3
fix(#687): tag the CI-only tenant-switch test flaky, harden the switc…
nielsdrost7 Jul 24, 2026
6776ef7
test: prove the tenant-switch authorization guard actually blocks una…
nielsdrost7 Jul 24, 2026
3f4485d
fix(ci): remove --exclude-group CLI flag, it silently defeats phpunit…
nielsdrost7 Jul 24, 2026
ea0623c
fix: trivial batch — cc-types helper, address factory, credit-note de…
claude Aug 1, 2026
55a31ec
fix(#342,#606,#402,#44): batch of trivial low-hanging-fruit fixes
nielsdrost7 Jul 19, 2026
9251b39
build: consolidate V1 migration system and infrastructure files
nielsdrost7 Aug 15, 2026
c7115ed
chore: trigger merge status refresh on PR #685
nielsdrost7 Aug 15, 2026
4809450
Merge trivial-fixes: consolidate V1 migration and infrastructure (PR …
nielsdrost7 Aug 15, 2026
3121486
fix: add missing imports for EmailTemplateResource and CompanyUserRes…
nielsdrost7 Aug 15, 2026
2214816
feat: implement #32, #235, #243 - payments, email templates, and team…
nielsdrost7 Aug 15, 2026
3cb189b
refactor: use trans() helpers for all labels in CompanyUser and Email…
nielsdrost7 Aug 15, 2026
b24c65f
chore: remove test artifacts from git tracking
nielsdrost7 Aug 15, 2026
34e10f1
fix: resolve 6 failing phpunit tests on develop branch
nielsdrost7 Aug 15, 2026
2ace907
fix: catch authorization exceptions in company switch action
nielsdrost7 Aug 15, 2026
a5e36d8
add: test-fast make target to exclude slow tests
nielsdrost7 Aug 15, 2026
ad8250f
chore: ignore test result logs in .gitignore
nielsdrost7 Aug 15, 2026
af32321
mark: identify and tag 6 slow tests with #[Group('slow')]
nielsdrost7 Aug 15, 2026
b15b49c
fix: simplify test-fast make target to use _phpunit variable
nielsdrost7 Aug 15, 2026
b7b8d7e
add: docker-test-fast make target for running fast tests from host
nielsdrost7 Aug 15, 2026
bfeed8d
refactor: use UserRole::elevated() instead of hardcoded role array, r…
nielsdrost7 Aug 15, 2026
f87948f
fix: add missing #[Test] attribute, fix field name typo, and capitali…
nielsdrost7 Aug 15, 2026
cfbb632
test: mark 5 slow tests (>=5s) with #[Group('slow')]
nielsdrost7 Aug 15, 2026
22d2dd1
refactor: rename duplicate test methods to be module-specific
nielsdrost7 Aug 15, 2026
2684474
test: mark tests >= 3 seconds as slow
nielsdrost7 Aug 15, 2026
521d1e8
style: apply pint formatting fixes
nielsdrost7 Aug 15, 2026
22f6306
fix: update Filament v5 API and composer dependencies
nielsdrost7 Aug 15, 2026
e60562f
fix: resolve phpstan level 3 errors
nielsdrost7 Aug 15, 2026
4d34ef4
test: configure PHPUnit to exclude slow tests and mark flaky timezone…
nielsdrost7 Aug 16, 2026
9c34c9a
chore: eliminate the SQLite testing fallback, run against real MariaDB
nielsdrost7 Jul 24, 2026
be78dae
chore: remove accidentally committed infrastructure files
nielsdrost7 Aug 15, 2026
8902af7
Update AppServiceProvider.php
nielsdrost7 Aug 16, 2026
6d084d8
[IP-130]: Report Builder — bands + bricks (Phases 1-4 + Browsershot d…
nielsdrost7 Aug 16, 2026
d62212f
Revert "[IP-130]: Report Builder — bands + bricks (Phases 1-4 + Brows…
nielsdrost7 Aug 16, 2026
4fcc8e5
fix: update yarn lockfile for workspace resolution
nielsdrost7 Aug 16, 2026
8caf3b3
chore: eliminate the SQLite testing fallback, run against real MariaDB
nielsdrost7 Jul 24, 2026
60f8aa2
fix: add missing CompanySettings page registration in company panel
nielsdrost7 Aug 16, 2026
a84b876
Fix translation keys that render raw on screen
claude Aug 16, 2026
047898c
Route hardcoded ->label() strings through translations
claude Aug 16, 2026
2593fe5
fix: remove dangling Report Builder page references
KhawarMehfooz Aug 21, 2026
58b2153
fix: move the count badge towards the label to avoid overlap of count…
KhawarMehfooz Aug 21, 2026
534882f
Wrap the quick-create label text in a shrinkable element.
KhawarMehfooz Aug 21, 2026
c34fe43
Snapshot company contact data at invoice creation. Closes #382
KhawarMehfooz Aug 22, 2026
8f2af83
fix: Render the ID number and Chamber-of-Commerce number snapshots.
KhawarMehfooz Aug 22, 2026
ecea6f2
Address review feedback on company snapshot PR
KhawarMehfooz Aug 22, 2026
6e0071c
feat: Send quotes via email for client approval. Closes #164
KhawarMehfooz Aug 23, 2026
951e029
feat: Send quotes via email for client approval. Closes #164
KhawarMehfooz Aug 23, 2026
4816753
add /* Arrange */ block comment (required by CLAUDE.md's AAA style)
KhawarMehfooz Aug 23, 2026
c49dd23
Address review feedback: translate quote_sent default template
KhawarMehfooz Aug 23, 2026
5a7686f
Move before the Assert block.
KhawarMehfooz Aug 23, 2026
d44f507
Eliminate SQLite from test config: phpunit.xml and .env.testing now d…
nielsdrost7 Aug 24, 2026
34f0f7c
Merge pull request #733 from underdogg-forks/develop
nielsdrost7 Aug 24, 2026
7525952
feat: Add signature capture backend for quotes. Closes #97
KhawarMehfooz Aug 24, 2026
6c851e7
fix: Clean up signature storage on persistence failure and Validate t…
KhawarMehfooz Aug 24, 2026
7bfab7c
feat: Public/guest quote signing view. Closes #735
KhawarMehfooz Aug 24, 2026
7965f6d
fix: Close guest-sign race and fix signature canvas resize growth
KhawarMehfooz Aug 24, 2026
32887d0
test(invoices): cover editing an invoice with a sent reminder
nielsdrost7 Aug 24, 2026
58817e1
chore: gitignore testrunner/playwright scratch artifacts
nielsdrost7 Aug 24, 2026
731d13c
feat: Add signature capture backend for quotes. Closes #97
KhawarMehfooz Aug 24, 2026
d8cd442
fix: Clean up signature storage on persistence failure and Validate t…
KhawarMehfooz Aug 24, 2026
bbe29af
Merge branch 'develop' into 735
nielsdrost7 Aug 25, 2026
656f73b
feat: Render captured signature on the quote PDF. Closes #736
KhawarMehfooz Aug 25, 2026
bddcec8
Merge branch 'develop' into 736
KhawarMehfooz Aug 25, 2026
02226b3
fix: Address quote signature review findings
KhawarMehfooz Aug 25, 2026
6f30aac
Merge pull request #740 from KhawarMehfooz/736
nielsdrost7 Aug 26, 2026
be6b2f2
Merge InvoicePlane:InvoicePlane-v2 develop into 735
nielsdrost7 Aug 26, 2026
ca2ca92
Merge pull request #739 from KhawarMehfooz/735
nielsdrost7 Aug 26, 2026
810f3ff
fix(ci): build frontend assets before running PHPUnit
nielsdrost7 Aug 26, 2026
6af3c26
Merge pull request #742 from underdogg-forks/develop
nielsdrost7 Aug 26, 2026
3dd6a90
test(ci): add permanent audit gate for CI jobs missing a frontend bui…
nielsdrost7 Aug 26, 2026
81226fa
pint and repair phpstan problems
nielsdrost7 Aug 26, 2026
3ee200a
pint and repair phpstan problems
nielsdrost7 Aug 26, 2026
edc5f99
ci: add Playwright E2E test workflow (#724)
nielsdrost7 Sep 9, 2026
1bc9e14
assign Email Templates to companies. (Closes #230)
KhawarMehfooz Sep 16, 2026
031c1f4
fix email template rendering issue
KhawarMehfooz Sep 16, 2026
e897d3e
fix(email-templates): persist the title field on update
nielsdrost7 Sep 13, 2026
45a8f66
fix(projects): persist project_number on create and update
nielsdrost7 Sep 13, 2026
d818834
fix(quotes): persist the notes field (summary column) on create and u…
nielsdrost7 Sep 13, 2026
685a9b5
fix(invoices): persist notes and invoice_terms fields on create and u…
nielsdrost7 Sep 13, 2026
2142150
fix(payments): persist the note field and payment_number
nielsdrost7 Sep 13, 2026
050c1bf
test: add missing required/boundary/clear-to-null edges for the field…
nielsdrost7 Sep 13, 2026
6820326
Update Modules/Projects/Tests/Feature/ProjectsTest.php
nielsdrost7 Sep 17, 2026
1f61cb2
assign Invoice Groups to companies. Closes #231
KhawarMehfooz Sep 17, 2026
36352e2
assign Payment Methods to companies. Closes #232
KhawarMehfooz Sep 17, 2026
06ec4cf
assign Tax Rates to companies. (Closes #233)
KhawarMehfooz Sep 17, 2026
8b185be
assign Tax Rates to companies. (Closes #233)
KhawarMehfooz Sep 17, 2026
a903606
assign Users to companies. (Closes #234)
KhawarMehfooz Sep 17, 2026
f3e385a
Merge branch 'develop' into 233
KhawarMehfooz Sep 18, 2026
980d2c9
Merge pull request #788 from KhawarMehfooz/233
KhawarMehfooz Sep 18, 2026
a5518e1
fix comment issue
KhawarMehfooz Sep 18, 2026
16b85ab
implement manage tax rates. (Closes #238)
KhawarMehfooz Sep 18, 2026
c74d97d
Merge pull request #790 from KhawarMehfooz/develop
KhawarMehfooz Sep 18, 2026
db62984
implement default terms and notes. (Closes #258)
KhawarMehfooz Sep 18, 2026
a8f2b73
Merge branch 'develop' into 258
KhawarMehfooz Sep 18, 2026
563200e
Merge pull request #791 from KhawarMehfooz/258
KhawarMehfooz Sep 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
64 changes: 64 additions & 0 deletions .claude/skills/abstract-seeder/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
---
name: abstract-seeder
description: Provides structured seeding workflow for module data initialization
---

# Abstract Seeder

## Purpose

Provides a structured way to seed database data per module.

---

## Scope

Seeders are responsible for:

- creating initial dataset for a company
- using factories to generate valid records
- orchestrating dependency order between models

---

## Ownership Boundary

Seeders MUST NOT:

- define validation rules
- define factory structure
- enforce schema constraints
- contain business logic

---

## Factory Dependency Rule

Seeders MUST rely on factories for object creation.

Factories are the source of truth for valid model state.

---

## Dependency Resolution

Seeders MAY resolve dependencies using helper methods:

- findOrCreateClient
- findOrCreateProject
- findOrCreateUser

These helpers are convenience utilities, not business logic.

---

## Execution Hooks

- beforeSeed(): setup state
- afterSeed(): cleanup or summary

---

## Principle

Seeders assemble data. They do not define data correctness.
62 changes: 62 additions & 0 deletions .claude/skills/application-architecture-standard/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
name: application-architecture-standard
description: Defines structural rules for Laravel architecture, layering, and code organization
---

# Purpose

Single source of truth for application structure and architectural boundaries.

---

# 1. Layering Rules

## Presentation Layer
- Controllers
- Filament Pages
- Form Requests (validation only)

No business logic allowed.

## Application Layer
- Services
- DTOs
- Transformers

Holds all business logic orchestration.

## Domain Layer
- Models
Represents state and invariants only.

## Infrastructure Layer
- API clients
- External services

Must be replaceable and contain no business logic.

---

## 2. Service Rules

- Business logic lives in services.
- Services must remain framework-agnostic except for Laravel infrastructure (Eloquent, DB transactions, HTTP client, logging).
- No Filament classes or UI concerns inside services.
- DTOs are used for structured data transfer where transformation, validation, or reuse is required.
- They are optional for internal service calls when validated arrays are sufficient.

---

# 3. Dependency Rules

- Constructor injection only
- No service locators
- No hidden dependencies

---

# 4. Architecture Integrity

- No cross-layer leakage
- Strict separation of concerns
- Refactoring must preserve behavior
137 changes: 137 additions & 0 deletions .claude/skills/autonomous-coding-workflow/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
---
name: autonomous-coding-workflow
description: Governs safe, incremental, repository-wide development workflow with continuous validation gates
---

# Autonomous Coding Workflow

## Goal

Perform repository-wide modifications safely, incrementally, and with continuous validation.

---

## 1. Instruction Precedence

Before doing anything:

- Check for repository-level instruction files:
- `.github/copilot-instructions.md`
- `AGENTS.md`
- `.junie/*.md`
- `CLAUDE.md`

If they exist:
- Treat them as higher precedence for architecture and conventions.
- Avoid duplicating rules already defined there.

---

## 2. Preparation

Before modifying code:

1. Read existing implementation.
2. Understand current behavior.
3. Identify existing abstractions and reuse them:
- Traits
- Base test cases
- Base resources
- Base seeders
- Services
- DTOs
- Transformers
4. Search explicitly for duplication before introducing new abstractions.
5. Preserve existing architectural patterns.

Do not modify code that has not been understood.

---

## 3. Refactoring Heuristics

Apply only when relevant:

- If repeated patterns exist across many test classes, models, or resources, evaluate abstraction opportunities.
- Prefer centralizing duplicated logic into:
- Traits
- Base classes
- Services
- Do not introduce abstraction unless duplication is confirmed.

---

## 4. Incremental Development

Work in small, verifiable steps.

After each change:

1. Verify syntax:
```bash
php -l
```
2. Run targeted tests.
3. Fix failures immediately.
4. Run code style checks:
```bash
vendor/bin/pint --dirty --format agent
```
5. Continue only if repository is clean.

---

## 5. Validation Gates

Never proceed if any of the following fail:

- PHPUnit tests
- Static analysis
- PHP syntax check (php -l)
- Code style (Pint)

Before completion, additionally ensure:

- migrate:fresh --seed passes
- smoke tests pass
- targeted tests pass
- full suite passes (unless explicitly excluded)

---

## 6. Module Completion

After completing a module:

1. Run targeted test suite.
2. Run `php -l`.
3. Run Pint.
4. Confirm no unintended changes.
5. Commit with clear module description.

Do not start the next module until the current one is fully stable.

---

## 7. Uncertainty Handling

If behavior is unclear:

- Stop immediately.
- Describe ambiguity.
- Request clarification.
- Do not infer or guess missing business rules.

---

## 8. Success Criteria

The task is complete only when:

- Behavior is preserved.
- No duplicate logic introduced.
- Changes are idempotent.
- All tests pass.
- Full suite passes.
- Formatting is clean.
- No unintended architectural drift occurred.
72 changes: 72 additions & 0 deletions .claude/skills/ci-schema-invariant-gate/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
name: ci-schema-invariant-gate
description: Ensures correct execution order of migrations, seeders, and tests in CI
---

# CI Schema Gate

## Purpose

Enforces correct execution order of database setup and test execution in CI.

---

# 1. Execution Order (Strict)

CI MUST run in this order:

```bash
php artisan migrate:fresh --seed
php artisan test
```

No deviations allowed.

---

# 2. Responsibility

This skill ONLY controls:

- execution sequencing
- CI pipeline ordering
- ensuring seed runs before tests

It does NOT validate:
- schema correctness
- factory correctness
- business logic correctness

These are handled by other skills.

---

# 3. Failure Behavior

If CI fails:

- migrations failing → schema issue (handled by test-honesty)
- seed failing → factory/data issue (handled by test-honesty)
- tests failing → behavior issue (handled by test layer)

CI does NOT interpret or classify failures.

---

# 4. Determinism Requirement

Test execution MUST always run on a fresh database state created by:

```bash
migrate:fresh --seed
```

No cached or partial state is allowed.

---

# 5. Core Principle

CI defines execution order only.

It does not define correctness of the system.
Loading
Loading