Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
90abd4a
chore: remove node.js only marker for most standard functions (#2169)
patricebender Oct 27, 2025
965492f
Simplify multitenancy guide (#2173)
swaldmann Oct 27, 2025
de20dfd
Add install requirements for console in-app deployment (#2174)
vincentatsap Oct 27, 2025
86ac3dd
@Semantics.amount.currencyCode and @Semantics.currencyCode supported…
renejeglinsky Oct 28, 2025
8e01a07
OData feature matrix (#1993)
agoerler Oct 28, 2025
6a05841
chore(deps): update dependency sass to v1.93.3 (#2183)
renovate[bot] Oct 31, 2025
0a7b6ee
chore(deps): update dependency @types/express to v4.17.25 (#2176)
renovate[bot] Oct 31, 2025
3c1235f
chore: Update CLI texts (#2179)
github-actions[bot] Oct 31, 2025
63ff0ae
Document Tree Views (#2005)
eugene-andreev Nov 4, 2025
9168a8f
add ai review action
renejeglinsky Nov 4, 2025
59deb0c
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Nov 4, 2025
65502a2
update runner
renejeglinsky Nov 4, 2025
b874158
switch model
renejeglinsky Nov 4, 2025
18c92c1
allow writing to pull requests
renejeglinsky Nov 4, 2025
c8363f6
move write permission into job
renejeglinsky Nov 4, 2025
5730359
another try with contents: write
renejeglinsky Nov 4, 2025
588639c
move permission in job completely
renejeglinsky Nov 4, 2025
8194b47
add guidelines for ai editor
renejeglinsky Nov 5, 2025
d47af0e
improve prompt
renejeglinsky Nov 5, 2025
cf9379f
restriction for suggestions
renejeglinsky Nov 5, 2025
80342d8
use us english
renejeglinsky Nov 5, 2025
5749749
chore: Update CLI texts (#2187)
github-actions[bot] Nov 5, 2025
a73bfaf
chore(deps): update dependency cspell to v9.3.0 (#2189)
renovate[bot] Nov 6, 2025
9b81e2a
chore(deps): update eslint (#2185)
renovate[bot] Nov 6, 2025
e8f4922
Kyma documentation update (#2188)
KoblerS Nov 6, 2025
4d40af8
enhance with acrolinx check
renejeglinsky Nov 6, 2025
9710d0b
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Nov 6, 2025
c1dddc7
move acrolinx check out of ai review
renejeglinsky Nov 6, 2025
24e056b
adapt permissions
renejeglinsky Nov 6, 2025
455c81d
move permissions
renejeglinsky Nov 6, 2025
327b90c
update version of nextgen-analyzer
renejeglinsky Nov 6, 2025
0fd12d5
enhance permission and bump version
renejeglinsky Nov 7, 2025
a14e211
chore(deps): update cap java sdk to v4.4.2 (#2191)
renovate[bot] Nov 7, 2025
bfed019
node.js: Change 'code' to 'status' in req.reject() examples (#2190)
etimr Nov 7, 2025
c87f0d0
Minor fixes in CDL Language Preliminaries (#2195)
qmacro Nov 10, 2025
93f50e0
Remove restrictions for UInt8 (#2193)
agoerler Nov 10, 2025
7969a02
Custom key delimiters in config inspector
chgeo Nov 11, 2025
c25aeb0
Make log blocks draw over outline
chgeo Nov 11, 2025
543e48f
chore(deps): update dependency @typescript-eslint/parser to v8.46.4 (…
renovate[bot] Nov 11, 2025
bb9d5c3
chore(deps): update dependency sass to v1.94.0 (#2199)
renovate[bot] Nov 11, 2025
d2ed1d6
adjust the draft protection snippet to the implementation (#2196)
rjayasinghe Nov 12, 2025
8f945c1
Java: Draft Bypassing (#2184)
MattSchur Nov 12, 2025
ae7159d
Java: Draft Aggregations (#2181)
MattSchur Nov 12, 2025
7589ba8
improve prompt
renejeglinsky Nov 13, 2025
15ed1d0
improve prompt
renejeglinsky Nov 14, 2025
c666178
edit prompt instructions
renejeglinsky Nov 18, 2025
0238c14
fixes
renejeglinsky Nov 18, 2025
dc64c80
Fix `.learn-more` styling in `:::` blocks (#2211)
swaldmann Nov 18, 2025
479bc41
cdl.md: Remove superflous , (#2210)
simonoswald Nov 18, 2025
867169f
Prefer `-a` instead of `--to-app-services` in `cds bind` (#2212)
swaldmann Nov 18, 2025
7ba4355
Cosmetic improvements for i18n guide
swaldmann Nov 18, 2025
5fcdfe2
Fix code fence languages for Temporal Data guide
swaldmann Nov 19, 2025
c1ea510
chore(deps): update dependency markdownlint-cli to v0.46.0 (#2214)
renovate[bot] Nov 19, 2025
ddc5649
Remove custom analysis step from PR workflow
renejeglinsky Nov 21, 2025
1ef75c0
cds build is a separate step for `cds up -2 k8s` (#2222)
Akatuoro Nov 21, 2025
880049d
Link to CI/CD documentation after doing ad-hoc deployment (#2230)
swaldmann Nov 24, 2025
2b86b93
Use comma-separated CSV files (#2229)
swaldmann Nov 24, 2025
830d173
Editing "Localized Data" guide (#2231)
swaldmann Nov 24, 2025
c928b7b
Fix syntax in Localized Data sample
swaldmann Nov 24, 2025
7d19d5b
chore(deps): update dependency cspell to v9.3.2 (#2202)
renovate[bot] Nov 25, 2025
cbfcc8a
chore(deps): update dependency sass to v1.94.2 (#2208)
renovate[bot] Nov 25, 2025
948f605
chore(deps): update eslint (#2209)
renovate[bot] Nov 25, 2025
16e184d
node.js events: small typo (#2192)
vl-leon Nov 25, 2025
d54929f
Fixing link to AEM documentation (#2217)
ajmaradiaga Nov 25, 2025
30065c1
Remove commented, outdated sections about multiple microservices
swaldmann Nov 25, 2025
7042272
Fix spelling mistakes in Node.js guide (#2226)
SkylarkA Nov 25, 2025
7aa9254
Add sentence how to run *.http files (#2221)
modood-alvi Nov 25, 2025
d00c6ee
UInt8 supported on H2 and postgres (#2232)
stewsk Nov 26, 2025
b70b299
Add OData vocabulary Hierarchy to list of supported vocabularies (#2233)
stewsk Nov 26, 2025
b8cc906
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Nov 26, 2025
0488f97
chore(deps): update dependency eslint-plugin-vue to v10.6.1 (#2235)
renovate[bot] Nov 26, 2025
5e47625
chore: Update CLI texts (#2234)
github-actions[bot] Nov 26, 2025
0ea91de
fix: rm `CREATE X.drafts` (#2203)
sjvans Nov 26, 2025
a94602a
Node.js - Nov25 - add $compute to OData features (#2220)
johannes-vogel Nov 26, 2025
7e268da
Minor Java docs adaptions for November release (#2227)
beckermarc Nov 26, 2025
e53a6e0
feat: Status-Transition Flows (#2037)
sjvans Nov 27, 2025
af1b12d
multitenant not hyphenated
renejeglinsky Nov 28, 2025
9e24bdc
Improve wording in `cds add` plugin guide
swaldmann Nov 28, 2025
87674cf
Fix code highlights in yaml code
chgeo Nov 28, 2025
575cc9b
chore(deps): update dependency eslint-plugin-vue to v10.6.2 (#2238)
renovate[bot] Nov 28, 2025
0031879
CAP Java: Support for hierachies on SQLite (#2236)
agoerler Dec 2, 2025
0e02071
improvements to status transition flows guide (#2237)
sjvans Dec 2, 2025
7fd6f1b
chore(deps): update cap java sdk to v4.5.0 (#2243)
renovate[bot] Dec 3, 2025
6c504ad
Java: Numeric Type Promotion (#2224)
MattSchur Dec 3, 2025
b1c34cc
chore: Update CLI texts (#2244)
github-actions[bot] Dec 3, 2025
6c0bc0f
Java: cds.Map (#2197)
agoerler Dec 3, 2025
e247cad
switch to products example
renejeglinsky Dec 3, 2025
992f0be
chore(deps): update dependency @typescript-eslint/parser to v8.48.1 (…
renovate[bot] Dec 3, 2025
008fe75
chore(deps): update dependency cspell to v9.4.0 (#2240)
renovate[bot] Dec 3, 2025
2d4c4a4
chore(deps): update dependency @sap/cds to v9.5.1 (#2239)
renovate[bot] Dec 3, 2025
3407ddb
Describe usage of H2 in Java (#2207)
eugene-andreev Dec 3, 2025
9e3de46
remove fragment
renejeglinsky Dec 4, 2025
b9ad174
Merge branch 'main' of https://github.com/cap-js/docs
renejeglinsky Dec 4, 2025
7b130d1
review: Transition flow (#2245)
renejeglinsky Dec 4, 2025
4b644e5
Enhance documentation for .add method middleware (#2246)
johannes-vogel Dec 4, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/ai-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: AI Review

on:
pull_request:
branches: [main]
merge_group:

concurrency:
group: pr-sap-${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true

jobs:
ai-review:
name: AI Review
if: ${{ contains(github.event.pull_request.labels.*.name, 'AI Review') }}
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: SAP/ai-assisted-github-actions/pr-review@v3
with:
aicore-service-key: ${{ secrets.AICORE_SERVICE_KEY }}
model: anthropic--claude-4-sonnet
model-parameters: '{"temperature": 0.1}'
prompt: |
- As an AI bot reviewing documentation pull requests on GitHub, please focus on the following areas to ensure high-quality and effective documentation:
- Use U.S. English spelling and punctuation.
- Check for spelling errors and provide corrections.
- Identify and correct grammatical errors and incorrect punctuation.
- Provide suggestions for improving the clarity and conciseness of the text to make it more understandable. Use the comments to create real suggestions and include all proposals that target the same line into one suggestions. Do not create multiple suggestions for the same line or paragraph.
- Consider the guidelines that can be found in .github/workflows/assets/editor.md and apply them.
- Ensure that the tone is appropriate for technical documentation, maintaining a professional and informative style.
- Verify that the structure of the document is logical and that headings and subheadings are used effectively.
- Check for consistency in terminology and style throughout the document.
- Use active voice instead of passive voice
- Use present tense and **avoid future tense**!
135 changes: 135 additions & 0 deletions .github/workflows/assets/editor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
---
description: Reviews code for quality and best practices
mode: subagent
temperature: 0.1
prompt: Do a detailed edit as outlined in the following.
---

# Detailed Edit
## ROLE
You are a helpful editor for a technical writer. Your task is to review and improve the text while ensuring that it adheres to a structured set of writing rules. All categories are of equal priority—no rule should be prioritized over another.

## TASK
Perform a structured review of the text, checking compliance with the following categories:

1. Grammar & Style

- Use U.S. English spelling and punctuation.
- Prefer active voice and present tense.
- Allow passive voice only when explaining a system process.
- Use common contractions, but avoid them in warnings or important messages.
- Use colons, parentheses, question marks, and intensifiers judiciously.
- Avoid exclamation marks, and abbreviations.
- Use a colon (:) to introduce information. If the colon is followed by an incomplete sentence, begin the first word after the colon with a lowercase letter.
- Spell out numbers one through nine in full. Use numerals for 10 and higher.
- Search for semicolons (;) and replace them with a period (.) For example: Instead of "This isn't needed; the system does this for you" write "This isn't needed. The system does this for you."
- Ensure lists are parallel.
- Avoid wordy constructions.

2. Clarity & Readability

- Write clear, concise, and short sentences that are easy to understand.
- Avoid jargon, colloquialisms, dialect, clipped words, and unnecessary complexity.
- Avoid hyperbole.
- Use positive formulations.
- Do NOT edit phrases that contain "the following". Only give a warning if it doesn't introduce a table, code snippet, graphic, list, or example.
- Do not remove markdown-specific formatting like _document URLs_.
- Do not edit code samples, not even whitespace.
- Do not touch <Config> tags, as these have a special meaning and need to be preserved.

3. Consistency & Tone

- Use the personal pronoun “you” and make sure the user is the center of the narrative.
- Use "please" when the user is asked to do something extra due to software error or if the situation is already troubling for the user. Avoid "please" when the user is asked to do something that is standard procedure.

4. Inclusivity & Ethical Considerations

- Avoid stereotypes, discrimination, and biases.
- Check for stopwords, including: abort, execute, grandfather, terminate, kill, disable, whitelist, blacklist, slave, master)

Check warning on line 48 in .github/workflows/assets/editor.md

View check run for this annotation

In Solidarity / Inclusive Language

Match Found

Please consider an alternative to `slave`. Possibilities include: `secondary`, `node`, `worker`, `replica`, `passive`
Raw output
/slave/gi

Check warning on line 48 in .github/workflows/assets/editor.md

View check run for this annotation

In Solidarity / Inclusive Language

Match Found

Please consider an alternative to `whitelist`. Possibilities include: `include list`, `allow list`
Raw output
/white[_-]*list/gi

Check warning on line 48 in .github/workflows/assets/editor.md

View check run for this annotation

In Solidarity / Inclusive Language

Match Found

Please consider an alternative to `blacklist`. Possibilities include: `exclude list`, `deny list`
Raw output
/black[_-]*list/gi

Check warning on line 48 in .github/workflows/assets/editor.md

View check run for this annotation

In Solidarity / Inclusive Language

Match Found

Please consider an alternative to `master`. Possibilities include: `primary`, `main`, `leader`, `active`, `writer`
Raw output
/\b(?!masterdata|masterdata\w+\b)master/gi
- Output the detected stopwords as a Python list and explain why they must be replaced or avoided. If no stopwords are found, output: "Language checked."
- Check for potentially sensitive topics, including: personal ability, mobility, status, gender (e.g., "him", "her", "man", "woman", "girl", "boy"), sexist language, appearance, type, culture, ethnicity, language, age, economic background, religion, sexual orientation.
- Output the detected topics as a Python list. If no topics are found, output: "Language checked."
- Be mindful of verbs related to senses (e.g., see, hear, watch, listen) as they may exclude people with disabilities. Consider more inclusive alternatives where appropriate, such as:
Instead of "See the highlighted section," → Use "Note the highlighted sections."
Instead of "Did you hear the announcement?" → Use "Did you receive the announcement?"
Note: "See" is ok when used to mean "refer to" → "For more information, see Troubleshooting."

5. Formality & Suitability

- Avoid emoticons and emojis.
- Do NOT remove TODO markers at all.
- Do NOT remove tip, warning or danger notes indicated by `::: tip` or similar constructs.

6. Guidelines
For this repository you should consider the following guideline:

To have a consistent look and feel throughout capire, use the following semantic when formatting your text.

| Format | Semantic |
|---|---|
| _Italic_ | Indicates new terms, URLs, email addresses, filenames, and file extensions, and UI Elements.|
|`Constant width` | Used for program listings, as well as within paragraphs to refer to program elements such as variable or function names, databases, data types, environment variables, statements, and keywords.|

It boils down to very basic considerations:

- Everything that is code or related to code, which includes configuration, is at `Constant width`
- Everything else, that is neither code nor configuration, is _Italic_
- Everything that is important and should be highlighted is **Bold**
- Keywords and all other things you want to highlight, can be formatted as `Constant width` but it should be used wisely.

There are a couple of aspects that are easy to consider when writing w/o digging too deep into guidelines for technical communication at SAP.

- Use active voice instead of passive voice

Example: Add the parameter `xyz` to ... ✅ | The parameter `xyz` is added to ... ❌
- Be friendly and conversational, put yourself in the users shoes.

This includes using contractions (don't instead of do not) or the use of please in rare cases. Write as if you'd explain sth to a friend.
- Use simple language.

This sound easier than it is, but if you can put it in simpler words, it gets automatically clearer and more helpful.

Use present and avoid future tense!

The documentation should follow the here described style guidance so that it keeps a consistent external and internal appearance:

| Topic | Write | Don't Write |
|----------------------------------|----------------------------------|--------------------------------------------------------------------------------|
| Single quotes | isn't, or don't | isn’t, or don’t |
| The other single quote: ‘ | ' | ‘ |
| In-text, in-line, single quoting | \`assets\` (showing as `assets`) | \`\`assets\`\`, or \`\`\`assets\`\`\` (showing as ``assets``, or ```assets```) |
| JavaScript code snippets | \`\`\`js | \`\`\`javascript |
| Three dots | ... (good: 3 1-dot characters) | … (bad: 1 3-dot characters) |
| Long dash | --- (good: 3 single dashes) | —, &mdash;, &ndash; (bad: long-dash character, \&mdash; or \&ndash;) |

| Terminology | Don't Write |
|-------------------------------------------------------------------------|-------------------------------|
| for example | e.g. <sup>1</sup> |
| GitHub | Github, github <sup>2</sup> |
| that is | i.e. <sup>1</sup> |
| Java | JAVA, java <sup>2</sup> |
| micro service | micro-service, microservice |
| modeling | modelling |
| multitarget | multi-target, multi target |
| multitenancy | multi-tenancy, multi tenancy |
| multitenant | multi-tenant, multi tenant |
| Node.js | node.js <sup>2</sup> |
| SAP BTP | SAP CP, CP |
| SAP HANA | HANA, Hana, hana <sup>2</sup> |
| SAP Software-as-a-Service Provisioning service | saas registry <sup>2</sup> |
| SQLite | SqLite, sqlite <sup>2</sup> |
| versus | vs. <sup>1</sup> |
| XSUAA | xsuaa <sup>2</sup> |

<sup>1</sup> Avoid latin abbreviations.<br>
<sup>2</sup> Use the not recommended spelling only if you're clearly referring to some technical entity or process.

> Always use proper **product names**. For an overview of product names out of the SAP BTP space, check out the naming request and subordinate approved names.

To improve readability and translatability, avoid using modal verbs in your content.

## FINAL STEPS
Provide a report summarizing how well the text adheres to the writing rules, highlighting issues found in each category.
Rewrite the text to align with all guidelines while maintaining clarity, accuracy, and user focus.
Explain each change by displaying every sentence of the revised text along with a justification for what was modified or retained.
Finally, output the revised text in its entirety.
4 changes: 2 additions & 2 deletions .vitepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ config.rewrites = rewrites
// Add custom capire info to the theme config
config.themeConfig.capire = {
versions: {
java_services: '4.4.1',
java_cds4j: '4.4.1'
java_services: '4.5.0',
java_cds4j: '4.5.0'
},
gotoLinks: []
}
Expand Down
16 changes: 9 additions & 7 deletions .vitepress/theme/components/ConfigInspect.vue
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,13 @@
import FloatingVue from 'floating-vue'
import yaml from 'yaml'

const { java, keyOnly, filesOnly, showPrivate, label:labelProp } = defineProps<{
const { java, keyOnly, filesOnly, showPrivate, label:labelProp, keyDelim } = defineProps<{
java?: boolean,
keyOnly?: boolean,
filesOnly?: boolean,
showPrivate?: boolean,
label?: string
label?: string,
keyDelim?: string
}>()

// sub component that renders code blocks similar to the markdown `::: code-block` syntax
Expand Down Expand Up @@ -85,6 +86,7 @@

const [key, val] = slotVal.split(/\s*[:=]\s*(.*)/) // split on first `:` or `=`
const label = labelProp || `${keyOnly ? key: slotVal}`
const keyDel = keyDelim ?? '.'

const cfgKey = ref()
const popperVisible = ref(false)
Expand Down Expand Up @@ -114,25 +116,25 @@

let jsonVal
if (typeof value === 'string' && value.trim().match(/^[[{].*[\]}]$/)) { try { jsonVal = JSON.parse(value) } catch {/*ignore*/ } }
const pkg = toJson(key, jsonVal ?? value)
const pkg = toJson(key, jsonVal ?? value, keyDel)

pkgStr.value = JSON.stringify(pkg, null, 2)
rcJsonStr.value = JSON.stringify(pkg.cds??{}, null, 2)
rcJsStr.value = 'module.exports = ' + rcJsonStr.value.replace(/"(\w*?)":/g, '$1:')
rcYmlStr.value = yaml.stringify(pkg.cds)
propStr.value = `${key}=${jsonVal ? JSON.stringify(jsonVal) : value}`

let envKey = key.replaceAll('_', '__').replaceAll('.', '_')
let envKey = key.replaceAll('_', '__').replaceAll(keyDel, '_')
if (/^[a-z_]+$/.test(envKey)) envKey = envKey.toUpperCase() // only uppercase if not camelCase
envStr.value = `${envKey}=${jsonVal ? JSON.stringify(jsonVal) : value}`
propStr.value = `${envKey}=${jsonVal ? JSON.stringify(jsonVal) : value}`

javaAppyml.value = yaml.stringify(pkg)
javaEnvStr.value = `-D${propStr.value}`
})

function toJson(key:string, value:string): Record<string, any> {
function toJson(key:string, value:string, delim:string): Record<string, any> {
let res = {}
const parts = key.split('.')
const parts = key.split(delim)
parts.reduce((r:Record<string,any>, a, i) => {
r[a] = r[a] || (i < parts.length-1 ? {} : value)
return r[a];
Expand Down
18 changes: 11 additions & 7 deletions .vitepress/theme/styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,11 @@ main {
// Custom list styles for nested items
ul {
list-style-type: disc; // First level: filled circle

ul {
list-style-type: circle; // Second level: empty circle


ul {
list-style-type: square; // Third level: square
}
Expand Down Expand Up @@ -299,6 +299,11 @@ main {
border-width: 0 0 0 7px;
border-radius: 14px;

.learn-more {
margin-top: 10px;
margin-bottom: -5px;
}

&.note {
background-color: #f6f6f6;
border-color: #bbb;
Expand Down Expand Up @@ -551,15 +556,14 @@ html.node {
pre.log:focus {
min-width: fit-content;
padding-right: 40px;
z-index: 1; // draw over outline
z-index: 1; position: relative; // draw over outline
}
table:hover,
table:focus {
min-width: fit-content;
}
tr { // make wide rows go over outline, not below it
z-index: 1;
position: relative;
tr {
z-index: 1; position: relative; // draw wide rows over outline
}
[class*='language-'] pre {
overflow: hidden !important;
Expand Down
Loading