Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
8259 commits
Select commit Hold shift + click to select a range
b959380
WIP: Import of creditor invoices
kreinhard Oct 3, 2025
ac34486
WIP: Import of creditor invoices
kreinhard Oct 3, 2025
8197006
React: some console errors and warnings removed.
kreinhard Oct 3, 2025
a844edf
Tests fixed.
kreinhard Oct 3, 2025
356da5a
Proof-reading I18nResources by Claude Code.
kreinhard Oct 3, 2025
7cedb5b
Proof-reading I18nResources by Claude Code.
kreinhard Oct 3, 2025
f210a4f
I18nKeysSourceAnalyzer improved (Claude code).
kreinhard Oct 3, 2025
2ca6ebc
I18nKeysSourceAnalyzer improved (Claude code).
kreinhard Oct 3, 2025
65106c3
WIP
kreinhard Oct 3, 2025
5066f9a
I18nKeysSourceAnalyzer improved (Claude code).
kreinhard Oct 3, 2025
d2a7c6c
Bugfix in System -> Develepment -> Check i18n properties
kreinhard Oct 3, 2025
12ca524
Merge commit '68b65b8e88e8ed6e54bd9b2f9e9e8bcbbae0efb7' into develop
kreinhard Oct 3, 2025
b0e766f
I18nKeysSourceAnalyzer improved (Claude code).
kreinhard Oct 3, 2025
bd69407
Initial revision with Claude Code.
kreinhard Oct 4, 2025
1a8ea48
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
ecac834
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
73b4861
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
0729a0a
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
0f8c6db
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
0d4a535
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
454fa3a
EmployeePagesRest, VisitorPagesRest: dataType fixed.
kreinhard Oct 4, 2025
357ebee
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
2d79ded
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
62b64c3
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
e132379
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
07edc85
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
44391f4
AbstractPagesRest -> ValidationUtils.
kreinhard Oct 4, 2025
abdac2e
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
75ea9dc
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
21aa02c
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
aa793ed
WIP: Import of creditor invoices
kreinhard Oct 4, 2025
6be9c2b
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
8c2bf04
WIP: currency conversion with Claude Code.
kreinhard Oct 4, 2025
ed1b06f
WIP: currency conversion with Claude Code.
kreinhard Oct 5, 2025
b78da69
BaseDao.baseDOChangedRegistry ist now private.
kreinhard Oct 5, 2025
472fbc9
WIP: currency conversion with Claude Code.
kreinhard Oct 5, 2025
fce8385
WIP: currency conversion with Claude Code.
kreinhard Oct 5, 2025
d446388
Merge pull request #318 from micromata/currency-converter
kreinhard Oct 5, 2025
708ba85
Merge pull request #307 from NikitaMic/Answers-not-shown
kreinhard Oct 5, 2025
fea48b8
Merge pull request #308 from NikitaMic/one-reminder-mail
kreinhard Oct 5, 2025
28f460a
Merge pull request #316 from micromata/dependabot/npm_and_yarn/projec…
kreinhard Oct 5, 2025
f4a839e
CurrencyConversion: Show date of active rates in list view.
kreinhard Oct 5, 2025
0d56032
Merge branch 'develop' of github.com:micromata/projectforge into develop
kreinhard Oct 5, 2025
161ae11
Set import entries to UNKNOWN status before job starts
kreinhard Oct 5, 2025
2d3243e
Show currency conversion rate and converted amounts in incoming invoi…
kreinhard Oct 5, 2025
11122c0
Add optional withCurrencySymbol parameter to CurrencyFormatter and C…
kreinhard Oct 5, 2025
a55647b
WIP: currency in incoming invoices.
kreinhard Oct 5, 2025
ebba0e1
WIP: Currency conversion for incoming invoices.
kreinhard Oct 5, 2025
5d8d7db
WIP: currency in incoming invoices.
kreinhard Oct 5, 2025
69d5ad4
Add comprehensive SEPA transfer test suite with golden files
kreinhard Oct 5, 2025
ed725c1
JAXB removed (SEPA-XML-Generator migrated by Claude Code).
kreinhard Oct 5, 2025
4ce8cfe
WIP: JAXB-remove
kreinhard Oct 5, 2025
73533b6
WIP: JAXB-remove
kreinhard Oct 5, 2025
7008dbe
WIP: JAXB-remove
kreinhard Oct 5, 2025
13996e3
WIP: JAXB-remove
kreinhard Oct 5, 2025
6d81e08
Merge pull request #319 from micromata/jaxb-remove
kreinhard Oct 5, 2025
0c2c447
Currency conversion: table wrap of col comment
kreinhard Oct 6, 2025
e59ae64
Import invoices: support of paymentType added. Column 'besonderheiten…
kreinhard Oct 6, 2025
34a1673
WIP: Import of creditor invoices
kreinhard Oct 6, 2025
d13a0e7
WIP: Import of creditor invoices
kreinhard Oct 6, 2025
dc7cff6
Customization of i18n keys implemented.
kreinhard Oct 14, 2025
2d0819b
Merge pull request #320 from micromata/customizable-i18n-properties
kreinhard Oct 14, 2025
1dd7246
adminguide.adoc
kreinhard Oct 14, 2025
675c801
Customizable i18n keys are now also supported by Wicket page.
kreinhard Oct 15, 2025
9d4ad5f
Claude Code: Migrate addressList to AG-Grid-Table and prepare multi s…
kreinhard Oct 16, 2025
19c1795
jsx: console warnings.
kreinhard Oct 16, 2025
762c88c
AGGrid: col resizable=false, WIP: address list page
kreinhard Oct 16, 2025
7b0312f
AG-Grid: Support of locked columns.
kreinhard Oct 16, 2025
44d8c4e
WIP: Address multi selection
kreinhard Oct 17, 2025
4827c57
WIP: multi selection (address and all)
kreinhard Oct 17, 2025
5f03ca2
AbstractMultiSelectedPage: show all Options in one row (use UIInlineG…
kreinhard Oct 17, 2025
1fe4fa3
Fix for customized i18n keys: Wicket pages are using now users transl…
kreinhard Oct 17, 2025
2a94e39
WIP
kreinhard Oct 17, 2025
25b69c8
Claude Code: collapsible fieldsets (used by AddressMultiSelectedPageR…
kreinhard Oct 17, 2025
6666c1c
WIP: AddressMultiSelectedPageRest
kreinhard Oct 17, 2025
c2b2c24
Sipgate: Intelligent debouncing for address sync to prevent excessive…
kreinhard Oct 17, 2025
13cd9c2
WIP: Addresses
kreinhard Oct 17, 2025
06319fe
UIAgGridColumnDef handlng refactored.
kreinhard Oct 18, 2025
d3b6950
AGGrid: reset columns now with server call resulting in resetting use…
kreinhard Oct 18, 2025
11ef54d
AG grid: reset columns reset columns with initial server settings.
kreinhard Oct 18, 2025
88cf783
I18nKeysUsage doesn't stop application on deserialization errors anym…
kreinhard Oct 18, 2025
b48949c
WIP: Address campaign values rest
kreinhard Oct 18, 2025
8548c53
AG grid: multilineCell-Renderer, WIP address campaigns
kreinhard Oct 18, 2025
1d8bcf7
AG grid: reset of columns fixed.
kreinhard Oct 18, 2025
6da06a7
AG grid: pagination info at the top
kreinhard Oct 18, 2025
7f35166
WIP: Address campaign values
kreinhard Oct 18, 2025
dda078e
AdvancedPopper.jsx: fix
kreinhard Oct 18, 2025
594a957
WIP: Address campaign values
kreinhard Oct 18, 2025
7a2807a
WIP: Address campaign values
kreinhard Oct 19, 2025
49f3aad
WIP: Address campaign values
kreinhard Oct 19, 2025
1dedc5f
WIP: Address campaign values
kreinhard Oct 19, 2025
5d4d9f9
Pagination page size removed for all rest pages (handled by AG grid o…
kreinhard Oct 19, 2025
0350290
MarkdownBuilder escapes now the input strings.
kreinhard Oct 19, 2025
5b9dcf3
AddressViewPage fixed in display of addresses.
kreinhard Oct 19, 2025
2e3fa45
DynamicAgGrid.jsx: id handling of row click improved.
kreinhard Oct 19, 2025
7cbb75a
WIP: Address campaign values
kreinhard Oct 19, 2025
8271a43
WIP: Address campaign values
kreinhard Oct 19, 2025
9f25a79
Revert "WIP: Address campaign values"
kreinhard Oct 20, 2025
a13f14a
Restore negative ID logic for multi-selection
kreinhard Oct 20, 2025
b1082ed
WIP: Address campaign values
kreinhard Oct 20, 2025
961941b
WIP: Address campaign values
kreinhard Oct 20, 2025
6a67382
WIP: Address campaign values
kreinhard Oct 20, 2025
bb42bd6
QueryFilter.like: fix of param autoWildcardSearch (was ignored)
kreinhard Oct 20, 2025
9264da7
WIP: Address campaign values
kreinhard Oct 20, 2025
89aa221
WIP: Address campaign values
kreinhard Oct 20, 2025
25f45f4
WIP: Address campaign values
kreinhard Oct 20, 2025
484e2d0
WIP: Address campaign values
kreinhard Oct 20, 2025
f430285
WIP: Address campaign values
kreinhard Oct 20, 2025
eaf2942
WIP: Address campaign values
kreinhard Oct 20, 2025
787949e
Merge pull request #321 from micromata/AddressCampains
kreinhard Oct 20, 2025
6340a02
TaskScheduler in TestConfiguration needed.
kreinhard Oct 20, 2025
c9a4e1a
WIP: Address campaign values
kreinhard Oct 20, 2025
0e8ebf1
WIP: Address campaign values
kreinhard Oct 20, 2025
b35853f
Address pages: view page is now displayed as modal dialog (error fixe…
kreinhard Oct 21, 2025
05bcb43
Modal dialog handling of history entries fixed.
kreinhard Oct 21, 2025
16ab7c6
AbstractImportPage fix: Long - Integer comparison
kreinhard Oct 21, 2025
2014b86
Sipgate: fix of duplicating emails by each sync.
kreinhard Oct 21, 2025
6dbd7e2
AddressViewPageRest refactored, caching of favorite addresses fixed, …
kreinhard Oct 21, 2025
8890bf2
Fix Sipgate contact sync: Remove duplicate emails without type
kreinhard Oct 21, 2025
decd42a
LdapDao: Log message on modifications extended.
kreinhard Oct 21, 2025
c32f8c2
Fix LDAP sync endless loop with empty attribute values
kreinhard Oct 21, 2025
3caab4b
InvoicingQuota added to monthly employee reports (if configured).
kreinhard Oct 21, 2025
1001368
Address campaign values: Excel export added.
kreinhard Oct 22, 2025
0a9f222
Ldap sync fixed? All ldap users were detected as modified.
kreinhard Oct 22, 2025
8eb9bed
Address wicket pages removed. Import of vcards started. Layout of Exp…
kreinhard Oct 24, 2025
74a6343
WIP: vcards import
kreinhard Oct 24, 2025
c624d79
PhoneNumberUtils.formatPhoneNumber and AddressTextParser
kreinhard Oct 24, 2025
a2608ee
PhoneNumberUtils...
kreinhard Oct 24, 2025
e0604c1
AddressViewPage: export as vcard added.
kreinhard Oct 24, 2025
aa7d989
Merge branch 'develop' into Adress-VCF-Import
kreinhard Oct 24, 2025
2d0a47b
AddressTextParser...
kreinhard Oct 24, 2025
8d2032c
AddressTextParser...
kreinhard Oct 25, 2025
0aea09d
WIP: Address text parsing
kreinhard Oct 25, 2025
9f3f636
WIP: Address text parsing
kreinhard Oct 25, 2025
89e37ab
WIP: Address text parsing
kreinhard Oct 25, 2025
67dc38c
WIP: Address text parsing
kreinhard Oct 25, 2025
62d18a9
WIP: Address text parsing
kreinhard Oct 25, 2025
7ff2070
AddressPagesRest: Warning of duplicate entries on adding new addresses.
kreinhard Oct 25, 2025
886d962
Addres text import works now fine.
kreinhard Oct 25, 2025
127ba2d
WIP: vcards import.
kreinhard Oct 25, 2025
d1bb61b
WIP: address import
kreinhard Oct 25, 2025
09976ce
WIP: address import
kreinhard Oct 25, 2025
61b80ec
Test: class AddressImportUploadPageRest doesn't extend AbstractImport…
kreinhard Oct 25, 2025
bda429f
WIP: AdressImport/parser
kreinhard Oct 25, 2025
7343422
WIP: AdressImport/parser
kreinhard Oct 25, 2025
c2d9884
WIP: AdressImport/parser
kreinhard Oct 25, 2025
fef0591
WIP: AdressImport/parser
kreinhard Oct 25, 2025
610ac5f
WIP: AdressImport/parser
kreinhard Oct 25, 2025
66ec511
WIP: AdressImport/parser
kreinhard Oct 25, 2025
40b69f9
WIP: AdressImport/parser
kreinhard Oct 25, 2025
4a7e8b8
WIP: AdressImport/parser
kreinhard Oct 25, 2025
112f742
WIP: AdressImport/parser
kreinhard Oct 26, 2025
619a82b
Bug fixes in VCardUtils:
kreinhard Oct 26, 2025
49bc68d
Extend VCard mappings for additional AddressDO fields
kreinhard Oct 26, 2025
fd94114
VCardUtils: support of all fields (except contactStatus and addressSt…
kreinhard Oct 26, 2025
846eb35
AbstractPagesRest.useModalEditDialog flag implemented.
kreinhard Oct 26, 2025
cfb7e42
Merge branch 'develop' into Adress-VCF-Import
kreinhard Oct 26, 2025
6ed941a
WIP: AdressImport/parser
kreinhard Oct 26, 2025
2aff80b
Fix VCard image export and add type-safe transient image access
kreinhard Oct 26, 2025
1361a24
AddressImportReconciler: *.jsx -> *.tsx
kreinhard Oct 26, 2025
d7aaf83
Address-VCF-Import: image support.
kreinhard Oct 26, 2025
efe5d12
Address-VCF-Import: image support.
kreinhard Oct 26, 2025
67fc38a
Address-VCF-Import: image support.
kreinhard Oct 26, 2025
0626478
Address-VCF-Import: image support.
kreinhard Oct 26, 2025
67aeff8
WIP
kreinhard Oct 26, 2025
61e07c1
WIP
kreinhard Oct 26, 2025
2b98882
Numberformatting in Sipgate and vcard handling refactored.
kreinhard Oct 27, 2025
a4b21da
Test fixed.
kreinhard Oct 27, 2025
426c327
Merge pull request #322 from micromata/Adress-VCF-Import
kreinhard Oct 27, 2025
bf33c20
DevelopmentMainForRelease.main (i18n stuff fixed)
kreinhard Oct 27, 2025
539a56f
AddressImportReconciler: Comparison with form fields instead of db fi…
kreinhard Oct 27, 2025
1786680
AddressImportReconciler: handling of firstName and name improved.
kreinhard Oct 27, 2025
0b1ab35
AddressTextParser: PersonNameParser introduced for improved parsing o…
kreinhard Oct 27, 2025
48e37a4
AddressTextParser: PersonNameParser introduced for improved parsing o…
kreinhard Oct 27, 2025
060fd8d
WIP: AddressTextParser: PersonNameParser introduced for improved pars…
kreinhard Oct 27, 2025
cab29b7
WIP: AddressTextParser: PersonNameParser introduced for improved pars…
kreinhard Oct 27, 2025
34cf7c9
VCardUtils: Form of address removed from prefixes. (fix for iOS)
kreinhard Oct 27, 2025
d5a2586
SearchFilter.jsx openes edit dialog in modal window, if AbstractPages…
kreinhard Oct 27, 2025
958c2f0
jsx: eslint warnings fixed.
kreinhard Oct 27, 2025
30ec0db
AddressImportReconciler
kreinhard Oct 27, 2025
76f216b
AbstractPagesRest: param request added to open functions, WIP. addres…
kreinhard Oct 27, 2025
d61a301
FormPage.jsx: spinning wheel of death fixed.
kreinhard Oct 27, 2025
d4fd0ba
WIP: AddressTextParser
kreinhard Oct 27, 2025
d86e0c9
AbstractPagesRest: filter state of columns are now persisted in the u…
kreinhard Oct 28, 2025
4650706
WIP: vcards import
kreinhard Oct 28, 2025
9e6a7b7
AG-Grid state of columns works now in AbstractPagesRest and AddressIm…
kreinhard Oct 28, 2025
cca561d
TaskServicesRest: column states etc. including reset work now
kreinhard Oct 28, 2025
941ea64
WIP: AddressImportUploadPage
kreinhard Oct 28, 2025
9534401
WIP: AddressImportUploadPage
kreinhard Oct 28, 2025
7d85888
WIP: AddressImportUploadPage
kreinhard Oct 28, 2025
4a418b9
WIP: AddressImportUploadPage
kreinhard Oct 28, 2025
a5be6fd
Fix endless spinner after 2FA redirect on list pages
kreinhard Oct 28, 2025
b3f6d19
WIP: address vcards import: image handling.
kreinhard Oct 29, 2025
f6030e4
WIP: address vcards import: image handling.
kreinhard Oct 29, 2025
ab200b1
Address images: auto-shrinking.
kreinhard Oct 29, 2025
edb1264
Address images: auto-shrinking.
kreinhard Oct 29, 2025
8b03060
IncomingInvoicePosImportPagesRest: wrapText (chat from faktura-fuexe)
kreinhard Oct 30, 2025
eeaafe0
Adresses: image-handling: minimizing images approx. 100k with JPEG, r…
kreinhard Oct 30, 2025
6efac89
WIP: address vcards import: image handling.
kreinhard Oct 30, 2025
f2ceb72
CardDav: photo-urls relative.
kreinhard Oct 30, 2025
288bc81
CardDav: embedded photos supported (default) due to reduced image sizes.
kreinhard Oct 30, 2025
157c22e
ios-fix for apple vcards for embedding images: jpeg -> JPEG, png -> PNG
kreinhard Oct 30, 2025
82ff065
VCard: iOS test
kreinhard Oct 30, 2025
f342ffe
VCard: iOS test
kreinhard Oct 30, 2025
300ab6e
VCard: iOS test
kreinhard Oct 31, 2025
bbf6b79
VCard upload: special handling of form field.
kreinhard Nov 2, 2025
a7308c9
Fix Sipgate sync: Prevent full re-sync due to missing email types
kreinhard Nov 2, 2025
c4360ce
Fix AG Grid auto-scroll to highlighted row after returning from edit …
kreinhard Nov 2, 2025
c4c2b2a
DynamicAGGrid: autoscrolling to highlighted row (also for address lis…
kreinhard Nov 2, 2025
462fe53
DynamicAgGrid.jsx: autoscroll for addresses with images works better,…
kreinhard Nov 2, 2025
69c8d9d
AddressImportUploadPageRest: handling of deletion, undeletion and for…
kreinhard Nov 2, 2025
5c9a138
Fix LDAP sync loop by normalizing empty strings to null
kreinhard Nov 3, 2025
15a55cb
AddressCampaignValuePagesRest: show excel-export button only, if the …
kreinhard Nov 7, 2025
052043b
Missing i18n key added.
kreinhard Nov 7, 2025
c1dffc7
Scripts timesheet_yearly_export.kts und sqlDumpExport.kts
kreinhard Dec 18, 2025
9aea059
Export much more tables.
kreinhard Dec 18, 2025
c350570
sqlDumpExport.kts
kreinhard Dec 18, 2025
5b1ac2b
Removed
kreinhard Dec 30, 2025
2b3e1f9
Removed sqlDumpExport
kreinhard Dec 30, 2025
543df2d
Zip encryption is now supported by ExportZipArchive in scripts.
kreinhard Dec 30, 2025
c3331d8
docker -> podman for test database
kreinhard Dec 30, 2025
6d35223
AccountingRecord supports now kost2String
kreinhard Dec 30, 2025
8239a53
Kost2: Virtuelle Status-Vererbung von ProjektDO implementiert
kreinhard Dec 31, 2025
6f4609d
package.json updates
kreinhard Dec 31, 2025
69441ce
ZipMode and ZipUtils moved to common (for availability in scripts)
kreinhard Dec 31, 2025
dca4456
Fixed for test-cases.
kreinhard Dec 31, 2025
5c65278
AbstractTestBase initializes now PfCaches.
kreinhard Dec 31, 2025
cef6203
Breaking changes ag grid 34 fixed
kreinhard Dec 31, 2025
3324096
ExportZipArchive supports now flatStructure.
kreinhard Dec 31, 2025
868d6ab
2025 -> 2026
kreinhard Dec 31, 2025
49e82e2
2025 -> 2026
kreinhard Dec 31, 2025
ab69a5a
Fix: Breadcrumb navigation creates fresh page instances
kreinhard Jan 19, 2026
aca57ed
Wicket versions bumped to 10.8.
kreinhard Jan 19, 2026
01d4805
Refactor: Improve concurrency and defensive checks for task hierarchy
kreinhard Jan 20, 2026
e235c09
.gitignore
kreinhard Jan 20, 2026
b3ea6c4
SystemStatisticPageRest: reduce information for non-admins.
kreinhard Jan 20, 2026
7b335a2
react-router updated.
kreinhard Jan 20, 2026
500a461
package.json updates
kreinhard Jan 20, 2026
10d4e0a
Add EmployeeScriptingService for script access to employee data
kreinhard Jan 23, 2026
b589ea0
EmployeeScriptingService.kt: selectAllValidSinceAttrs added.
kreinhard Jan 28, 2026
8d82162
EmployeeScriptingService.getReportOfMonth
kreinhard Jan 28, 2026
7296497
Fix ForecastExport: NullPointerException and snapshot data issues
kreinhard Feb 3, 2026
0ec3a56
lodash 4.17.21 -> 4.17.23
kreinhard Feb 3, 2026
aedec7b
Fix poll multiple-choice bug and Excel export answer distribution
minuhn Feb 5, 2026
4cc1e64
Add UIPollRadioButton component and refactor poll response handling
minuhn Feb 6, 2026
5f3633a
Implement BCC functionality for Poll emails and refactor email sendin…
minuhn Feb 6, 2026
a6734f6
Refactor email notification logic to send reminders only to Full Acce…
minuhn Feb 6, 2026
b612ff2
Add support for free text, single choice, and multiple choice questio…
minuhn Feb 9, 2026
df94253
Enhance email notifications by grouping recipients by locale for loca…
minuhn Feb 9, 2026
b35219a
Add custom email subject and content fields for poll reminder notific…
minuhn Feb 9, 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
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
15 changes: 15 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
dist
doc
misc
tools
target
*/target
*/*/target
build
*/build
*/*/build
dist
*/dist
*/*/dist
projectforge-webapp/node_modules
projectforge-webapp/package-lock.json
35 changes: 35 additions & 0 deletions .github/workflows/github-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: GitHub Pages publication

on:
push:
branches: [ develop ]
paths:
- 'site/**'
- '.github/workflows/**'

jobs:
jekyll:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3

# Use GitHub Actions' cache to shorten build times and decrease load on servers
- uses: actions/cache@v3
with:
path: vendor/bundle
key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile') }}
restore-keys: |
${{ runner.os }}-gems-

# Specify the Jekyll source location as a parameter
- uses: helaili/jekyll-action@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
jekyll_src: 'site'

# Specify the target branch (optional)
- uses: helaili/jekyll-action@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
target_branch: 'gh-pages'
jekyll_src: 'site'
46 changes: 46 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

on:
push:
branches: [ develop ]
paths-ignore:
- 'site/**'
pull_request:
branches: [ develop ]
paths-ignore:
- 'site/**'

jobs:
build:

runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3
- uses: actions/checkout@v3

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
distribution: 'temurin'

- name: Cache Gradle dependencies
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle

- name: Grant execute permission for Gradle wrapper
run: chmod +x gradlew

- name: Test and build with Gradle
run: ./gradlew build
env:
SPRING_PROFILES_ACTIVE: ci
# MY_CUSTOM_ENV_VAR: "value"

#- name: Run tests
# run: ./gradlew test --info --stacktrace
33 changes: 28 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
target
# For backup in projectforge-web
target.tgz
*.jar
*.war
*.ear
Expand All @@ -11,25 +13,46 @@ target
*.pydevproject
.project
.metadata
bin/
/bin/
tmp/
test-output
work/
/work/
*.tmp
*.bak
*.swp
*~.nib
local.properties
/local.properties
.classpath
.settings/
.loadpath

.springBeans
/.springBeans

# External tool builders
.externalToolBuilders/
/.externalToolBuilders/

# Locally stored "Eclipse launch configurations"
*.launch

/log4j-dev.properties

#Node
/projectforge-webapp/node_modules
/ProjectForge
projectforge-caldav/src/main/resources/milton.license.properties
projectforge-caldav/src/main/resources/milton.license.sig
derby.log
projectforge-repository/jackrabbit
projectforge-jcr/test/out
plugins/org.projectforge.plugins.datatransfer/test
.DS_Store
projectforge-application/src/main/kotlin/local
.gradle
build
.kotlin
projectforge-webapp/node
projectforge-business/src/main/kotlin/testscripts
.claude

# MCP Server Configuration (contains secrets)
.mcp.json
24 changes: 24 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

## Build/Test Commands
- Build all: `./gradlew build`
- Build skipping tests: `./gradlew build -x test`
- Run application: `./gradlew bootRun`
- Single test: `./gradlew test --tests "org.projectforge.package.ClassName.methodName"`
- Package tests: `./gradlew test --tests "org.projectforge.package.*"`
- Run specific module tests: `./gradlew :projectforge-business:test`

## Code Style Guidelines
- Use Kotlin JVM target 17 for all code; legacy code is in Java
- Follow standard Kotlin naming conventions (camelCase for variables/functions, PascalCase for classes)
- Include standard ProjectForge license header in all new files
- Organize imports with Kotlin stdlib first, followed by domain/project imports
- Use non-null types by default; use Kotlin's nullable types (Type?) when needed
- Use JUnit 5 for tests with descriptive method names
- Prefer Kotlin extension functions for utility methods
- Use SpringBoot annotations for dependency injection
- Use Kotlin Coroutines for async operations
- Handle exceptions with appropriate logging using kotlin-logging
- Format code with 4-space indentation
43 changes: 43 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
FROM openjdk:17-slim

# Argument for JAR file name to use in working directory:
ARG JAR_FILE

# Set working directory
WORKDIR /app

RUN mkdir -p /app

# Copy the specified JAR file into the container
COPY ${JAR_FILE} /app/application.jar
COPY docker/entrypoint.sh /app/entrypoint.sh

# Set permissions for the entrypoint script
RUN chmod +x /app/entrypoint.sh

# Expose application port
EXPOSE 8080

# Use a non-root user
RUN addgroup --system projectforge && adduser --system --ingroup projectforge projectforge

# Install findutils (xargs needed by gradle)
#RUN apt-get update && apt-get install -y findutils && rm -rf /var/lib/apt/lists/*
# pgrep needed by the entrypoint.sh
RUN apt-get update && apt-get install -y procps && rm -rf /var/lib/apt/lists/*


# Expose the port and declare the volume
RUN mkdir -p /ProjectForge && chown -R projectforge:projectforge /ProjectForge
VOLUME /ProjectForge

COPY docker/environment.sh /ProjectForge

# Switch to the non-root user
USER projectforge:projectforge

# Run the Spring Boot application
ENTRYPOINT ["/app/entrypoint.sh"]
# ENTRYPOINT ["java", "-jar", "/app/application.jar"]

LABEL maintainer="Micromata"
6 changes: 3 additions & 3 deletions LICENSE.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
Project ProjectForge Community Edition
www.projectforge.org

Copyright (C) 2001-2017 Kai Reinhard (k.reinhard@micromata.com)
Max-Planck-Str. 5
Copyright (C) 2001-2026 Micromata GmbH
Marie-Calm-Str. 1-5
34131 Kassel

ProjectForge is a web-based project management tool.
Expand Down Expand Up @@ -632,4 +632,4 @@ an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.

END OF TERMS AND CONDITIONS
END OF TERMS AND CONDITIONS
13 changes: 1 addition & 12 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,12 +1 @@
Release 6.17.0
* Extend address REST for creating/updating/deleting addresses
* Major refactorings for calendar and events
* Bugfixes for:
* Addresses and addressbooks
* Invoice export
* Finding event attendees
* Payment-deadline of debitors
* Migration problems
* Export bank transfers
* Forecast export
* Skilltree expand
Please visit https://projectforge.org/changelog-posts/
Loading