You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Always follow these instructions first and fallback to additional search and context gathering only when the information here is incomplete or found to be in error.
4
+
5
+
## Project Overview
6
+
7
+
Coalesce is a framework for rapid development of ASP.NET Core + Vue.js web applications. It generates DTOs, API controllers, and TypeScript from Entity Framework Core models and other C# code.
8
+
9
+
## Prerequisites & Dependencies
10
+
11
+
The required tools and dependencies are automatically installed via the GitHub Actions workflow at `.github/workflows/copilot-setup-steps.yml`.
12
+
13
+
## Instructions
14
+
15
+
- Format PR titles with Semantic Commits. The work item number should follow the colon after the commit type like `feat: #12345 added ...`
16
+
- Always update the documentation when making changes or adding features that will affect developers who use Coalesce.
17
+
- Always add an entry to CHANGELOG.md when adding new features or fixing non-trivial bugs.
18
+
- Avoid making breaking changes if not necessary. A less obvious example of a breaking change would be changing an existing CSS class name.
19
+
- Consider adding or updating example files in `playground\Coalesce.Web.Vue3\src\examples` when making changes to coalesce-vue-vuetify.
20
+
21
+
## Validation Checklist
22
+
23
+
After making changes, ALWAYS run this validation sequence:
24
+
25
+
1.**Build verification**:
26
+
From the repo root:
27
+
28
+
```bash
29
+
npm ci
30
+
dotnet build
31
+
cd src/coalesce-vue && npm run build
32
+
cd ../coalesce-vue-vuetify3 && npm run build
33
+
```
34
+
35
+
2.**Test verification**:
36
+
From the repo root:
37
+
38
+
```bash
39
+
dotnet test
40
+
cd src/coalesce-vue && npm run test
41
+
cd ../coalesce-vue-vuetify3 && npm run test
42
+
```
43
+
44
+
3.**Template verification**:
45
+
If you make changes to the template in the `templates` directory, validate the changes by running `TestLocal.ps1 -- "--FeatureOne --FeatureTwo"` where the FeatureOne, FeatureTwo parameters are replaced with each flag that might affect the changes you made. Run it multiple times if there are different combinations of feature flags that might interact in different ways. The flags are the variables checked by the `#if` in the template code.
46
+
47
+
4.**Documentation verification**:
48
+
If the documentation was updated, run `npm run build` in the docs folder. You can expect the link checks to fail - you do not have access to the internet to validate the links.
49
+
50
+
REMEMBER: NEVER CANCEL long-running build operations.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,13 +22,15 @@
22
22
-`ListViewModel.$orderByToggle()` method added to cycle through ascending, descending, and no ordering for a field.
23
23
- Custom methods now support descriptions via `DescriptionAttribute`. These are displayed in the admin pages.
24
24
- Added `FileTypeAttribute` to control allowed file types for custom method file parameters.
25
+
- Added `ClientCacheDurationSeconds` property to `ExecuteAttribute` to customize client-side cache duration for GET custom methods with `VaryByProperty`.
25
26
-`c-admin-display`: Binary values now render as links that will download the value as a file, instead of only showing the length in bytes.
-`c-input`: Added a `filter` prop for enum inputs to restrict the values available for selection.
28
29
-`c-select`: When bound to a `ViewModel` or `ViewModelCollection`, selected items are converted to `ViewModel` instances before being emitted so that event handlers will receive the final object instance, rather than the intermediate plain model instance.
29
30
-`c-select`: Now supports binding to a non-many-to-many collection navigation property. Selecting an item will populate the foreign key of the dependent item, and deselecting an item will clear the foreign key. This mechanism is only available when using c-select directly - it is not delegated by c-input.
30
31
-`c-select`: The `create` prop now supports a `position` property to control whether the create item appears at the start ('start', default) or end ('end') of the dropdown list.
31
32
-`c-select-many-to-many`: The `itemTitle` prop now receives the existing selected middle entity instance, if there is one.
33
+
-`c-loader-status`: Added `show-success` prop and flag to display success messages when operations complete successfully.
32
34
33
35
## Fixes
34
36
- Fix error in codegen when using JS reserved keywords or C# contextual keywords as parameter names.
Hides the table before the first load has completed, or if loading the list encountered an error. Don't show the progress bar after we've already loaded the list for the first time (useful for loads that occur without user interaction, e.g. `setInterval`):
Component level [flags](#flags) options that control behavior when the simple form of `loaders` (single instance or array) is used, as well as provide baseline defaults that can be overridden by the advanced form of `loaders` (object map) .
125
133
126
134
## Flags
127
135
128
-
The available flags are as follows, all of which default to `true`. In the object literal syntax for `loaders`, the `no-` prefix may be omitted to set the flag to `true`.
136
+
The available flags are as follows, all of which default to `true` except for `show-success` which defaults to `false`. In the object literal syntax for `loaders`, the `no-` prefix may be omitted to set the flag to `true`.
@@ -135,6 +143,7 @@ The available flags are as follows, all of which default to `true`. In the objec
135
143
|`no-progress`| Master toggle for whether the progress indicator is shown in any scenario. |
136
144
|`no-initial-progress`| Controls whether the progress indicator is shown when an API Caller is loading for the very first time (i.e. when `caller.wasSuccessful === null`). |
137
145
|`no-secondary-progress`| Controls whether the progress indicator is shown when an API Caller is loading any time after its first invocation (i.e. when `caller.wasSuccessful !== null`). |
146
+
|`show-success`| Controls whether success alerts are shown when API calls complete successfully (i.e. when `caller.wasSuccessful === true`). |
Copy file name to clipboardExpand all lines: docs/stacks/vue/getting-started.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -75,7 +75,7 @@ If any of the options you chose above require external integrations, you'll need
75
75
76
76
### AppHost Project
77
77
78
-
The AppHost project is a [.NET Aspire](https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview) dev-time orchestration project. It is recommended you set this as your startup project when developing, although this is not strictly required if your project only has SQL Server as its sole dependency. If you're not familiar with .NET Aspire, you're strongly encouraged to read through its [overview documentation](https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview#dev-time-orchestration) and learn about the features of the [Aspire dashboard](https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/dashboard/explore).
78
+
The AppHost project is a [.NET Aspire](https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview) dev-time orchestration project. It is recommended you set this as your startup project when developing, although this is not strictly required if your project only has SQL Server as its sole dependency. If you're not familiar with .NET Aspire, you're strongly encouraged to read through its [overview documentation](https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview) and learn about the features of the [Aspire dashboard](https://learn.microsoft.com/en-us/dotnet/aspire/fundamentals/dashboard/explore).
Copy file name to clipboardExpand all lines: docs/topics/audit-logging.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -117,9 +117,9 @@ public class AppDbContext : DbContext, IAuditLogDbContext<AuditLog>
117
117
118
118
### Exclusions & Formatting
119
119
120
-
Coalesce's audit logging is built on top of [Entity Framework Plus](https://entityframework-plus.net/ef-core-audit)and can be configured using all of its [configuration](https://entityframework-plus.net/ef-core-audit#scenarios), including [includes/excludes](https://entityframework-plus.net/ef-core-audit-exclude-include-entity) and [custom property formatting](https://entityframework-plus.net/ef-core-audit-format-value).
120
+
Coalesce's audit logging uses Entity Framework's change tracking capabilities to automatically detect and record changes to your entities. It intercepts the `SaveChanges` operation to capture entity state changes and property modifications before they're committed to the database.
121
121
122
-
Coalesce will not use EF Plus's `AuditManager.DefaultConfiguration` global singleton instance. You must use Coalesce's configuration extensions which allow for more targeted configuration per context that does not rely on a global static singleton. For example:
122
+
You can configure which entities and properties to include or exclude from auditing, as well as customize how property values are formatted in the audit logs. Coalesce's configuration extensions allow for targeted configuration per context without relying on global static singletons. For example:
0 commit comments