Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
e243aa3
squash initial commit
nielsdrost7 Jun 12, 2026
762c5f1
Remove Report Builder, Blocks, Bricks and related files from develop
nielsdrost7 Jun 12, 2026
04c51c9
Remove GridSnapper/GridPosition files from develop; fix AdminPanelPro…
nielsdrost7 Jun 12, 2026
1d32b24
Switch import tests to MariaDB and fix numbering type-mismatch bug
nielsdrost7 Jun 12, 2026
8ec4ec0
Fix import service bugs and align tests with real MariaDB schema
nielsdrost7 Jun 12, 2026
c596672
composer file cleanup
nielsdrost7 Jun 12, 2026
983a6cc
ran pint
nielsdrost7 Jun 12, 2026
94b0c56
fix: remove Peppol integration from develop, repair all test suites
nielsdrost7 Jun 12, 2026
a555886
chore: add comprehensive Makefile for PHPUnit and artisan test
nielsdrost7 Jun 12, 2026
88a80ce
ran pint
nielsdrost7 Jun 12, 2026
42b18f5
Improved Makefile
nielsdrost7 Jun 12, 2026
89a13c3
fix: repair 4 failing tests (NumberingTest, InvoiceNumberingSchemeCha…
nielsdrost7 Jun 12, 2026
9ed6694
fix: repair incomplete DateFieldAutoPopulation and Settings tests
nielsdrost7 Jun 12, 2026
51d76d7
fix(tests): rewrite hard-delete and computed-field incomplete tests
nielsdrost7 Jun 12, 2026
49d5630
fix(tests): resolve all remaining markTestIncomplete markers
nielsdrost7 Jun 12, 2026
c3079dd
fix(tests): resolve remaining test errors and failures
nielsdrost7 Jun 12, 2026
0d38ec5
ran pint
nielsdrost7 Jun 12, 2026
0602609
chore: extract import/export feature to feature/85-import-export-opti…
nielsdrost7 Jun 12, 2026
1c5443c
chore: merge master into develop, resolving conflicts in favour of de…
nielsdrost7 Jun 12, 2026
d115898
docs: improve README and RUNNING_TESTS for accuracy and Docker setup
nielsdrost7 Jun 12, 2026
2afe3b9
feat(#22): prevent deletion of super_admin users
nielsdrost7 Jun 12, 2026
4d87a15
fix(#43): allow credit notes to share parent invoice number
nielsdrost7 Jun 12, 2026
7dff8cd
feat(#163): duplicate quotes
nielsdrost7 Jun 12, 2026
795ad19
chore: add docker-test Makefile target and clean up phpunit.xml DB co…
nielsdrost7 Jun 12, 2026
cb325ca
chore: code review cleanup on develop
nielsdrost7 Jun 12, 2026
c56525d
chore: add sync-stale-branches skill
nielsdrost7 Jun 12, 2026
bdda634
fix(forms): filter numbering selector by document type (#152)
nielsdrost7 Jun 12, 2026
273c2f2
Add CLAUDE.md with full project knowledge map
claude Jun 13, 2026
73348d8
Add AI agent context files across all major tools
claude Jun 13, 2026
e78f2ae
Remove Pest references and add pest-control skill
claude Jun 13, 2026
4f49038
fix: allow empty MariaDB root password in docker-compoer. Closes #547
KhawarMehfooz Jun 18, 2026
9fed92b
fix: remove MARIADB_USER and MARIADB_PASSWORD from docker-compose
KhawarMehfooz Jun 18, 2026
1863270
Fix login: wire custom Login page, fix company redirect for elevated …
claude Jun 18, 2026
166e24f
Add LoginResponseTest covering company selection and session edge cases
claude Jun 18, 2026
6950c56
Simplify login redirect to use company attachments instead of roles
claude Jun 18, 2026
3640dbf
Add APP_KEY to phpunit.xml and .env.testing so Livewire tests can run
claude Jun 18, 2026
4ece165
chore(skills): audit and repair all 25 skill files
claude Jun 18, 2026
b35d91f
chore(skills): rewrite laravel-modules skill to target internachi/mod…
claude Jun 18, 2026
865b53b
fix(skills): use Modules\{Name}\ namespace in laravel-modules skill
claude Jun 18, 2026
45eda86
chore(skills): enforce Arrange/Act/Assert phase comments in all tests
claude Jun 18, 2026
51699bf
fix(skills): use /* Arrange */ /* Act */ /* Assert */ block comments
claude Jun 18, 2026
6457750
chore(skills): add it_{verb}_{object} test naming convention as Rule 7
claude Jun 18, 2026
62a47e1
fix: apply CodeRabbit auto-fixes
coderabbitai[bot] Jun 18, 2026
272225e
Fix pre-existing naming and AAA structure violations in QuotesTest files
claude Jun 19, 2026
0226246
build assets
nielsdrost7 Jun 19, 2026
211d003
feat: add Permission enum (#488)
KhawarMehfooz Jun 18, 2026
d27f970
fix: replace prefix-based CUSTOMER_ADMIN permissions with explicit al…
KhawarMehfooz Jun 18, 2026
d22adf8
fix: replace CUSTOMER role string literals with PermissionEnum cases …
KhawarMehfooz Jun 18, 2026
7b57611
fix: replace prefix-based CUSTOMER_ADMIN permissions with explicit al…
KhawarMehfooz Jun 19, 2026
e0351bc
feat: expand Permission enum with import, export, duplicate, and doma…
KhawarMehfooz Jun 19, 2026
9a7caa9
feat: Rebuild RolesSeeder — define complete role permission matrix fo…
KhawarMehfooz Jun 19, 2026
7e2b6e1
feat: make RoleHasPermissionsSeeder safe for production re-runs (Clos…
KhawarMehfooz Jun 21, 2026
7d8340b
feat: enforce permissions in Expenses module (Closes #493)
KhawarMehfooz Jun 21, 2026
0352d46
fix: remove import/export actions from Expenses table
KhawarMehfooz Jun 21, 2026
26ec6b3
feat: enforce permissions in Relations (Clients) module (Closes #492)
KhawarMehfooz Jun 22, 2026
00f2ccf
feat: enforce permissions in Invoices module (Closes #494)
KhawarMehfooz Jun 22, 2026
ae62d13
feat: enforce permissions in Payments module Closes(#495)
KhawarMehfooz Jun 23, 2026
694a09b
fix: restrict client payment visibility when relation_id is missing
KhawarMehfooz Jun 23, 2026
29f0210
feat: enforce permissions in Projects module (Closes #497)
KhawarMehfooz Jun 23, 2026
8bf4f94
feat: enforce permissions in Products module (Closes #496)
KhawarMehfooz Jun 23, 2026
095d01f
feat: enforce permissions in Quotes module (Closes #498)
KhawarMehfooz Jun 23, 2026
5d0d44b
feat: enforce permissions in core admin resources (Closes #499)
KhawarMehfooz Jun 23, 2026
0b6486d
fix: prevent deletion of super-admin users in canDelete gate
KhawarMehfooz Jun 23, 2026
b949af9
fix: require manage-settings permission to access Settings page
KhawarMehfooz Jun 23, 2026
9fe8cdd
feat: Admin panel — Role permissions management page (Closes #500)
KhawarMehfooz Jun 24, 2026
cfebd49
fix: Super-admin “always checked” requirement is not guaranteed.
KhawarMehfooz Jun 24, 2026
985a37a
fix: save flow can silently strip permissions the editor doesn’t own.
KhawarMehfooz Jun 24, 2026
18ccf3c
refactor: move blade local variables to public properties in RolePerm…
KhawarMehfooz Jun 24, 2026
ef39949
refactor: extract permission sync logic into RolesService
KhawarMehfooz Jun 24, 2026
dc79079
fix: guard save() against stale auth and post-mount role creation
KhawarMehfooz Jun 24, 2026
b5edbb1
fix: repair stale Filament v5 auth translation keys on Login page
claude Jul 9, 2026
ae7c593
refactor: delegate login throttle notification to Filament's built-in
claude Jul 9, 2026
f27d884
User pages in the Core Module
KhawarMehfooz Jul 13, 2026
9d8a3e0
User pages in the Core Module. (Closes 18)
KhawarMehfooz Jul 13, 2026
b9f3853
Skip email verification when the address is unchanged.
KhawarMehfooz Jul 13, 2026
f1576d6
Replace the prohibited __() calls with trans()
KhawarMehfooz Jul 13, 2026
173280a
Handle avatar removal and cleanup on replacement
KhawarMehfooz Jul 13, 2026
84b1223
chore: stop tracking public/build/manifest.json
KhawarMehfooz Jul 13, 2026
93ec359
chore: stop tracking environment-specific public/storage symlink
KhawarMehfooz Jul 13, 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