Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
488 commits
Select commit Hold shift + click to select a range
58b2d8e
fix: move all apps to search
May 23, 2025
89f7245
fix(picker): invalid album
May 23, 2025
d9cd394
feat: auto set "from group"
May 23, 2025
ba8b12f
feat: add link to audiostatus
May 23, 2025
401b417
fix: typo in privacy
May 23, 2025
a64b903
fix: don't show age of dead
May 23, 2025
7e22964
fix: wide avatars at tips
May 23, 2025
fa7681e
fix: wrong i18n xhtml text
May 23, 2025
a167346
feat: skip theme styles
May 24, 2025
5a41f3b
fix(api): simplification
May 24, 2025
7f33389
fix(scroll): don't set hash
May 24, 2025
6b583a2
fix: blacklist paddings
May 24, 2025
f542651
fix: ajax on tickets
May 24, 2025
1552483
fix: 500 on followers page
May 24, 2025
e1cbffc
fix: notes picker
May 24, 2025
930ef8a
fix: textarea paddings
May 24, 2025
54f40a7
fix: source window paddings
May 24, 2025
352cfa9
feat: enlarge graffiti
May 24, 2025
3c6ce6e
fix: add margin at post page
May 24, 2025
1d1eae3
feat: count of comments on microblog
May 24, 2025
bf87ab9
fix: add warning at nospam
May 24, 2025
1af6cd8
fix: followers scroll
May 24, 2025
dce143a
fix: infinty scroll for high screens
May 24, 2025
626770e
feat: add comments sort
May 24, 2025
f843132
fix: router recursion
May 24, 2025
3727e4c
feat: make doc width 60%
May 24, 2025
8f9a303
fix: wrong comments when editing
May 24, 2025
33f44eb
fix: careless topic deletion
May 24, 2025
b63d2c2
feat: autostart gif
May 24, 2025
e7faa45
feat: video not unlisted af. editing
May 24, 2025
8d01f9b
feat(comms): warning before deletion
May 25, 2025
1424ca2
fix: audio playing on report page
May 25, 2025
16700ad
feat: tickets text length to 200
May 25, 2025
126e5e2
feat: warning on post delete button
May 25, 2025
c7bcd1c
feat: showArticle() css changes
May 25, 2025
fda9ff4
fix: space between types
May 26, 2025
0771fba
fix: theme id != "mobile_ovk"
May 26, 2025
da6e90b
feat: playlist cover is unlisted
May 26, 2025
ca309aa
feat: provide id on upload context
May 26, 2025
a906e27
fix: not add photo to album if wrong
May 27, 2025
aedbfe3
fix(picker): albums select
May 27, 2025
a2ac608
fix(albums): "my photos" on same id
May 27, 2025
c858a11
fix(albums): "you have" on same id
May 27, 2025
686ce92
feat: add focus on status edit
May 27, 2025
6e87ac3
feat(wall.delete): explain condition
May 27, 2025
53115cb
fix: undefined fields
May 27, 2025
7e65f25
fix: hide reply button at closed topic
May 27, 2025
4693d2f
feat(topic edit): label for checkboxes
May 27, 2025
31bd11c
feat(topic create) delete deprec. js
May 27, 2025
40b19ec
feat: ajloader styles change
May 27, 2025
b85e74a
feat: "sent" at gifts page
May 27, 2025
00ca8d6
fix: hide anon gift name
May 27, 2025
1a03a31
fix: revert previous
May 27, 2025
878df31
fix(photos): don't check rights of deleted album
May 27, 2025
5d1d39a
fix(/album{num}/remove_photo/{num}): wrong wording
May 31, 2025
808d622
fix(photo upload): unhardcode size and make redir
May 31, 2025
9917678
fix(scrolling): wrong scrolling that causes dups
May 31, 2025
0be8514
fix(nospam): attempt to fix club rollback
May 31, 2025
8d734ae
fix(repost window): change margins
May 31, 2025
911e039
feat(doc picker): add margin before upload button
May 31, 2025
7820463
fix(saveProfileInfo): fix value overflow
May 31, 2025
003350b
fix: contacts field that duplicated to each item
May 31, 2025
0649a75
feat(account.saveProfileInfo): add "telegram"
Jun 1, 2025
dd19163
feat(graffiti: CtrlZ): Added script for basic keyboard support in gra…
ZAZiOs Jun 1, 2025
b90a0fa
fix(photo upload): fix own page upload error (#1336)
Jun 1, 2025
9714d0f
feat(notes): use whitelist for images sources (#1352)
Jun 15, 2025
a3634c1
Деприватизация метода audio.get
ZAZiOs Jun 15, 2025
4413106
feat(admin): make admin panel responsive (#1345)
ayaaop Jun 29, 2025
79e2446
chore(login): 2fa type number (#1322)
Artem13327 Jun 29, 2025
27fb923
chore(comments): gramrrmar mistake (#1367)
eversiege Jun 29, 2025
4f126d1
update(openvk_modern): expand & actualize stylesheet, add minor fixes…
emorynb Jun 29, 2025
93b1202
feat(rate_limits) (#1353)
Jun 29, 2025
c8a97f8
fix(API): users bdate field, can edit/delete comments (#1359)
ZAZiOs Jun 29, 2025
5ae8b62
fix(api): implement pending uploads cleanup and enhanced error respon…
breitburg Jul 15, 2025
7e236ac
fix(admin): add user to chandler group was broken 💔 (#1389)
zer0-dev Aug 2, 2025
b5a908a
feat(bdays) (#1390)
zer0-dev Aug 2, 2025
01eac2f
fix(api): deleted users now cannot access api (#1391)
zer0-dev Aug 2, 2025
50571c5
chore(avatar): ✨new old button✨ (#1241)
koke228666 Aug 2, 2025
477b4bc
feat(user>groups): make the search bar and create group more accessib…
ayaaop Aug 2, 2025
f62f292
ci(compose): prevent Docker from creating required paths (#1395)
WerySkok Aug 3, 2025
e83df5d
chore(compose): add missing parameters to example config (#1396)
WerySkok Aug 3, 2025
e68c3a0
chore(compose): add new parameters to chandler config (#1397)
WerySkok Aug 3, 2025
068c93b
feat(docker): run migrations on image start & remove special DB image…
WerySkok Aug 4, 2025
ff42c1d
feat(al_wall): photo/video modal closes when clicked outside of it (#…
zer0-dev Aug 9, 2025
0a44f8f
feat(wall): wall search (#1393)
zer0-dev Aug 16, 2025
04796ae
feat(sidebar): sidebar appears on scroll up (#1406)
zer0-dev Aug 16, 2025
6b0d783
fix(openvk_modern): sidebar appears on scroll up fix (#1422)
ayaaop Sep 20, 2025
c4e1c6b
fix(user): regexp checking if name is in russian works properly (#1424)
zer0-dev Oct 12, 2025
f135393
chore: resign Lumaeris from dev force (#1427)
Lumaeris Oct 23, 2025
d6244a3
docker: use Apache Kafka 4.x instead of Bitnami 3.2 (#1428)
progzone122 Oct 26, 2025
b9be1ee
feat(audio): change nomusic.mp3 to api_unallowed.mp3 (#1355)
ZAZiOs Nov 2, 2025
e78cbb1
fix(ui): prevent hidden .toTop from overlapping buttons (#1429)
progzone122 Nov 2, 2025
f24735d
feat: add options for ui (#1432)
Nov 3, 2025
201edce
revert override and apply diag head padding style to main selector in…
ayaaop Nov 5, 2025
a446879
feat(audio): #1440
Nov 23, 2025
cb0a2f9
feat(admin)!: rework roles, panel enhancements (#1441)
n1rwana Nov 23, 2025
cc02680
fix(helpdesk): prevent setting an empty name for a support agent (#1442)
n1rwana Nov 23, 2025
0dccfd6
feat(apps): ability to delete your own applications (#1444)
n1rwana Nov 23, 2025
ecb17cc
feat(topics): ability to restrict comments in topics for non-admins (…
n1rwana Nov 23, 2025
d5e51e3
fix(admin): use explicit count in SQL query (#1446)
WerySkok Nov 23, 2025
c35db1e
fix: another counting changes (#1448)
WerySkok Nov 23, 2025
c4622a7
fix: change count() to count('*') (#1447)
WerySkok Nov 30, 2025
5c28111
feat(gifts): redesign UI (#1454)
ayaaop Nov 30, 2025
d1727c5
fix(gifts): prevent anon gifters' user link displaying (#1457)
ayaaop Dec 7, 2025
6b73657
fix: add null and empty checks for popular_groups in aboutInstance (#…
progzone122 Dec 27, 2025
9dafece
security: sanitize getFullName() output to prevent XSS (#1463)
progzone122 Dec 29, 2025
627b685
locales-kk: catch up with the updates (#1250)
ayaaop Jan 7, 2026
ccd9d58
fix(api): Add null check for friend_status in Users (#1462)
progzone122 Jan 7, 2026
877b3fb
upd(locale-arm): Mass update (#1467)
lifesminder Jan 12, 2026
7dafacd
fix(locale-hy) (#1468)
lifesminder Jan 15, 2026
b811788
fix(ui): make line breaks in personal information visible (#1472)
fgRuslan Jan 25, 2026
51bcb72
fix(notification): now comment_post will return the comment author (#…
GeorgNation Jan 25, 2026
845d92a
feat(templates): rename templates to .latte, adapt to Latte 3 (#1451)
WerySkok Jan 28, 2026
e3916f4
chore: remove DBEntity.updated.php (#1481)
WerySkok Jan 29, 2026
ac1685b
doc(VKAPI): update documentation link, returned 404 before (#1482)
artemchik009 Jan 30, 2026
0c89641
chore(api): dublicate token login uri for compat
veselcraft Jan 30, 2026
7f8afd2
fix(album): redirect back to album after deleting (fix #1480) (#1484)
veselcraft Jan 30, 2026
2aa6f63
hotfix: incorrect getPlatform call (#1485)
veselcraft Jan 30, 2026
917de82
fix(latte): broken bday notify and app's post (#1487)
veselcraft Jan 30, 2026
a9033c6
chore: suppress warnings (#1488)
veselcraft Jan 30, 2026
bce68f2
chore(clients): add renaissance (#1490)
veselcraft Jan 30, 2026
a16aaea
fix: use explicit conversion to string for user id (#1491)
WerySkok Jan 31, 2026
39ec4c5
fix(UserGifts): call getPlatform with proper value (#1492)
WerySkok Jan 31, 2026
a5fb2e0
fix(User View): call getOnlinePlatform with proper value (#1493)
WerySkok Jan 31, 2026
9455e73
fix: don't ask for group's gender even for deactivation messages (#1494)
WerySkok Feb 1, 2026
00671b1
fix(l10n): Update pluralization in Russian locale (#1471)
fgRuslan Feb 1, 2026
8b5803d
fix(interface, settings): opening new tab on ctrl+lmb, js settings no…
zer0-dev Feb 1, 2026
b7109f9
feat(locale-kz): knowledgebase files for Kazakh (#1470)
ayaaop Feb 1, 2026
cd39f28
chore: warnings annihilation (#1495)
veselcraft Feb 1, 2026
87c454b
feat(email, registration): introduce whitelist (#1498)
veselcraft Feb 3, 2026
331f8b5
fix(l10n): fix pluralization for audio count and faves in Russian loc…
fgRuslan Feb 3, 2026
a3e8c78
fix(cli/fetch-ton): identify the existence of cryptotransactions tabl…
WerySkok Feb 3, 2026
6e0a3d1
fix(wall search): correct pagination (#1503)
veselcraft Feb 4, 2026
2a594a5
fix(wall): can no longer post with flag force_sign but without flag a…
veselcraft Feb 4, 2026
d16e5ac
fix(media): un-hardcode connection scheme to cdn (#1505)
veselcraft Feb 4, 2026
2987121
fix(locale-engine): correct comments removing (#1502)
veselcraft Feb 4, 2026
4419035
lil fixes (#1508)
veselcraft Feb 5, 2026
e249b58
hotfix(ton) (#1509)
veselcraft Feb 5, 2026
07ae749
fix(midnight): patch for updates (#1511)
ayaaop Feb 8, 2026
6990157
fix(composer): remove guzzlehttp because it's already in chandler and…
veselcraft Feb 8, 2026
f6c4a7e
fix: 500 errors (#1512)
veselcraft Feb 8, 2026
833def5
chore: add openvk flux client (#1479)
Feb 11, 2026
3d395cb
chore(readme): replace `ovk.to` domain and wrap disclaimer inside war…
tretdm Feb 17, 2026
91b8f91
fix(api): Correct album_id in photos.getWallUploadServer (#1516)
LeenzeryDev Feb 22, 2026
b18f6a8
feat(settings): select timezone (#1521)
veselcraft Feb 22, 2026
0c149d1
fix(i10n): use $1 in Russian and Ukrainian singular plural forms (#1524)
fgRuslan Feb 22, 2026
08a6c7d
fix(api): Correct Newsfeed.get post visibility with privacy settings …
LeenzeryDev Feb 26, 2026
ab3aed1
feat(api, wall): explicit parameter to mark new posts as NSFW (#1530)
LeenzeryDev Mar 1, 2026
8f9235e
fix(api): Separate author and wall owner in notifications (#1531)
LeenzeryDev Mar 1, 2026
4496366
feat(notifications): Implement like notifications for comments (#1532)
LeenzeryDev Mar 1, 2026
8fe2b75
fix(cdn): protocol in cfg (#1533)
veselcraft Mar 1, 2026
51a7a2c
fix: correctly determine author for reply mentions (#1534)
LeenzeryDev Mar 2, 2026
27cbbda
fix(actions): never run mirroring and Docker images build on forks (#…
aeiouaeiouaeiouaeiouaeiouaeiou Mar 3, 2026
b476975
fix(notifications): use base title to correctly update notification c…
ayaaop Mar 10, 2026
a661f2b
feat(audio): link playlists to audio (#1545)
crythoughts Mar 15, 2026
65bde6b
feat(audio): volume fading, after-upload playlist linking
crythoughts Mar 22, 2026
792246e
fix(api): Include wall owner in extended wall responses (#1554)
LeenzeryDev Mar 23, 2026
cca920d
fix(notifs): fix page title after AJAX transitions, decrement counter…
ayaaop Mar 23, 2026
0ce11ce
fix(l10n): use more $1 in Russian, Russian latin and Russian soviet l…
fgRuslan Mar 23, 2026
4f70d44
fix(notifications): Correct comment URL in topic-related notification…
LeenzeryDev Mar 23, 2026
498d14d
Add latin variant of Kazakh in locales (#1541)
ayaaop Mar 23, 2026
d6ba205
feat(core): precompile locale files (#1557)
veselcraft Mar 23, 2026
f1f2891
feat(music): Allow assigning albums to audios post-upload (#1559)
LeenzeryDev Mar 25, 2026
9969730
chore: remove style that hides everything in doc preview (#1565)
koke228666 Mar 29, 2026
007bfbb
fix(api): use filtered attachments in wall.repost (#1566)
LeenzeryDev Mar 31, 2026
4a2fc31
fix(api): refactor photo saving methods to use current user (#1568)
LeenzeryDev Apr 1, 2026
7b476fd
feat(Web): add attachment support to the repost modal (#1567)
LeenzeryDev Apr 1, 2026
64a6f8c
fix(l18n): check if strings file exists (#1569)
veselcraft Apr 1, 2026
c16b790
fix(Entities): prevent TypeError in Playlist when user is null (#1575)
LeenzeryDev Apr 12, 2026
60527f2
fix: showCoinsTransferDialog (#1573)
TheFreo Apr 12, 2026
fe8f67e
fix(Web): ensure current album is selected in audio edit modal (#1570)
LeenzeryDev Apr 12, 2026
635781c
fix(api): Invert revotable status in poll response (#1579)
LeenzeryDev Apr 25, 2026
72339dd
fix(api): solve disappearing newsfeed posts via composite pagination …
LeenzeryDev Apr 25, 2026
e99cdd1
fix(Notifications): Replace notifications broker with Redis (#1577)
ZAZiOs Apr 25, 2026
ec4f283
fix(Notifications): Return of AJAX to "my feedback" (#1582)
saursvepur Apr 27, 2026
34b585f
fix(locales): adding ru locales new comment (#1580)
saursvepur Apr 28, 2026
ceb53d6
chore: update readme (#1591)
veselcraft May 18, 2026
4b1725e
chore: update donation link to openvk.org (#1594)
WerySkok May 26, 2026
009894e
feat(wall): add post expand/collapse for long texts (#1593)
Loroteber May 27, 2026
0c40cfb
build(deps): up PHP version to 8.2 (#1592)
MrKrasnov May 31, 2026
31b65ab
fix(l10n): use correct format for kk_lat's name (#1596)
ayaaop Jun 2, 2026
9688b8e
fix(docker): replace kafka by redis in compose & k8s (#1597)
WerySkok Jun 2, 2026
67b41d0
doc(README): use db migration tool & update contact list (#1598)
WerySkok Jun 3, 2026
4655451
chore(freebsd): update freebsd automated script install (#1601)
veselcraft Jun 3, 2026
dc28d7c
chore(user): disable subscriptions removad on ban by default (#1617)
veselcraft Jun 6, 2026
709c2b0
fix(user, composer): removing martial status, dependencies (#1590)
MrKrasnov Jun 6, 2026
6dc71df
chore(tour): layout bugfixes (#1622)
pwq-isNotReal Jun 9, 2026
33f8c9e
fix(admin): disable subs cleanup on ban (x2) (#1626)
veselcraft Jun 10, 2026
a4015fc
feat(away): redirect from instance's mirrors, don't go through away.p…
NoPlagiarism Jun 10, 2026
3175848
fix: birthday text formatting (#1628)
TheFreo Jun 14, 2026
2b01f26
fix(api): restore notes.delete API method (#1627)
fgRuslan Jun 15, 2026
88c90db
chore(user): change regex for set*_Name (#1629)
veselcraft Jun 15, 2026
ecb7707
fix(api): let audio.get API method receive 0 as owner_id (#1630)
fgRuslan Jun 18, 2026
266f110
feat(cache): introduce aggressive object caching (#1631)
veselcraft Jun 23, 2026
fd36de5
fix(ui): show full url in posts, add "read in rss" button, #1581 rpc …
veselcraft Jun 23, 2026
eac8c83
chore(l10n): update translations (#1633)
weblate Jun 23, 2026
95691a0
feat(api): add "execute" method and fix api for (semi)official vk app…
veselcraft Jun 26, 2026
75516af
ovk.to is still dead (#1619)
NoPlagiarism Jun 26, 2026
0212a10
chore(l10n): update translations (#1634)
weblate Jun 26, 2026
ffdd80f
chore(git): add new ignore files (#1639)
veselcraft Jun 26, 2026
53c6380
chore(wall): bring back foreign posts (#1641)
veselcraft Jun 27, 2026
9d43dd3
feat: introduce global-alert (#1644)
veselcraft Jun 27, 2026
806a3f4
fix(api/wall): fix signer_id leak between posts in getById (#1646)
LeenzeryDev Jun 27, 2026
1600e66
fix(openvk.yml): propagate config additions from last commits (#1647)
WerySkok Jun 29, 2026
c80766f
fix(cookies, globalalert): resolve conflicts between two elements (#1…
WerySkok Jun 30, 2026
3f6a166
chore(l10n): update translations (#1643)
weblate Jun 30, 2026
a645831
chore(l10n): add fallbacks for new languages (#1654)
WerySkok Jul 1, 2026
4f82731
feat(l10n): improve locale detection (#1655)
WerySkok Jul 1, 2026
6c404e0
refactor(api): añadir más la compatibilidad de vk api (#1656)
veselcraft Jul 1, 2026
4997843
chore(l10n): update translations (#1652)
weblate Jul 1, 2026
3ee177e
feat(admin)!: add session list and deletion (#1659)
veselcraft Jul 2, 2026
10f7961
fix(ui): ctx menu inside a post (#1664)
TheFreo Jul 4, 2026
1f93869
fix(l10n): make audio list template use a user's first name for the t…
fgRuslan Jul 4, 2026
f4fe048
fix(api, l10n): notifications and weblate merge conflicts (#1667)
veselcraft Jul 4, 2026
44b6d22
feat(ui): adaptive styles for main theme (#1637)
crythoughts Jul 4, 2026
57ec735
fix(mobile): wrong positioning
crythoughts Jul 4, 2026
96fd2dc
feat: add opengraph tags to more pages (#1657)
WerySkok Jul 4, 2026
3f43811
fix(og): fix 500s & substr (#1669)
WerySkok Jul 4, 2026
4919e49
feat(tests): screenshot tests (#1651)
WerySkok Jul 4, 2026
8931187
feat(profile): do not show service albums on profile page (#1670)
WerySkok Jul 4, 2026
0999777
chore(l10n): update translations (#1658)
weblate Jul 4, 2026
e879fd7
fix(api): compat with vk api and kate mobile (again) (#1671)
veselcraft Jul 5, 2026
9b342c8
chore(l10n): update Russian (ru_LAT) translation
Jul 5, 2026
b43a9cc
chore(l10n): update Ukrainian translation
Jul 5, 2026
a09e7f7
chore(l10n): add Interslavic translation
fonetyka Jul 5, 2026
74a881d
chore(l10n): update Interslavic translation
fonetyka Jul 5, 2026
9442a67
chore(l10n): add Chinese (Simplified Han script) translation
Jul 5, 2026
3dc1b76
chore(l10n): update Chinese (Simplified Han script) translation
Jul 5, 2026
3ae2d4f
chore(l10n): add chinese to list.yml
veselcraft Jul 5, 2026
f408d05
chore(l10n): add __locale string to zh-Hans
veselcraft Jul 5, 2026
568d944
chore(tests): add new screenshot
veselcraft Jul 5, 2026
e30a59a
feat(api): return freedom of choice for wall posts in newsfeed
LeenzeryDev Jul 6, 2026
e701eb1
fix(api): align status.get response structure with VK API (#1678)
LeenzeryDev Jul 8, 2026
a5743cb
fix(api): match notes.getComments response structure with standard VK…
LeenzeryDev Jul 8, 2026
be0240b
chore(l10n): update Ukrainian translation
Jul 5, 2026
f15c2b0
chore(l10n): update Crimean Tatar translation
Jul 5, 2026
430fcd0
chore(l10n): add Japanese translation
Jul 5, 2026
aa7ddcd
chore(l10n): update Latvian translation
RTUtniy Jul 6, 2026
aa37d72
chore(l10n): remove Italian translation
Jul 6, 2026
bf39962
chore(l10n): remove Japanese translation
Jul 6, 2026
f76ad2c
chore(l10n): remove Rusyn translation
Jul 6, 2026
bb9f225
chore(l10n): update German translation
TAB-q Jul 7, 2026
bd9a70a
chore(l10n): update Latvian translation
RTUtniy Jul 6, 2026
cf0b829
chore(l10n): update Interslavic translation
fonetyka Jul 7, 2026
b7ddf43
chore(l10n): add Erzya translation
gachakoreika Jul 8, 2026
8f2050b
chore(l10n): update Erzya translation
gachakoreika Jul 8, 2026
372a24a
fix(api): implement filtering for account.getCounters API method and …
fgRuslan Jul 8, 2026
b2ce7e2
fix(mobile.css): show error msg properly (#1676)
TheFreo Jul 8, 2026
0fa1fec
fix(profiles): strip verification from permanently deleted users (#1674)
Lanmikeman Jul 8, 2026
db73443
Merge pull request #32 from OpenVK/master
tretdm Jul 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
  •  
  •  
  •  
22 changes: 22 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
vendor
openvk.yml
chandler.yml
update.pid
update.pid.old
Web/static/js/node_modules

tmp/*
!tmp/api-storage/.gitkeep
!tmp/themepack_artifacts/.gitkeep
themepacks/*
!themepacks/.gitkeep
!themepacks/openvk_modern
!themepacks/midnight
storage/*
!storage/.gitkeep

.idea
.php-cs-fixer.cache

tests/
.github/
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1 +1 @@
custom: "https://openvk.su/donate"
custom: "https://openvk.org/donate"
36 changes: 36 additions & 0 deletions .github/workflows/analyse.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Static analysis

on:
push:
pull_request:

jobs:
phpstan:
name: PHPStan
runs-on: ubuntu-latest

# 'push' runs on inner branches, 'pull_request' will run only on outer PRs
if: >
github.event_name == 'push'
|| (github.event_name == 'pull_request'
&& github.event.pull_request.head.repo.full_name != github.repository)

steps:
- name: Code Checkout
uses: actions/checkout@v7

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v4

- name: Build and start Docker container
working-directory: install/automated/docker
run: |
docker build -t openvk ../../.. -f openvk.Dockerfile

- name: Run Docker container with PHPStan
working-directory: install/automated/docker
run: |
docker container run --rm \
-v ./chandler.example.yml:/opt/chandler/chandler.yml \
-v ./openvk.example.yml:/opt/chandler/extensions/available/openvk/openvk.yml \
openvk vendor/bin/phpstan analyse --memory-limit 1G
45 changes: 29 additions & 16 deletions .github/workflows/build-base.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,57 +2,70 @@ name: Build base images

on:
schedule:
- cron: '0 0 * * *'
- cron: "0 0 * * *"
workflow_dispatch:

env:
BASE_IMAGE_NAME: php
BASE_IMAGE_VERSION: "8.1"
BASE_IMAGE_VERSION: "8.2"

jobs:
build-cli:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v7
with:
lfs: false

- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v4

- name: Change repository string to lowercase
id: repositorystring
uses: Entepotenz/change-string-case-action-min-dependencies@v1.2.0
with:
string: ${{ github.repository }}

- name: Log into registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Build cli image
run: |
IMAGE_NAME=ghcr.io/${{ github.repository }}/$BASE_IMAGE_NAME:$BASE_IMAGE_VERSION-cli
IMAGE_NAME=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$BASE_IMAGE_NAME:$BASE_IMAGE_VERSION-cli

docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/base-php-cli.Dockerfile --build-arg VERSION=$BASE_IMAGE_VERSION

build-apache:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v7
with:
lfs: false

- name: Set up QEMU
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v4

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v4

- name: Change repository string to lowercase
id: repositorystring
uses: Entepotenz/change-string-case-action-min-dependencies@v1.2.0
with:
string: ${{ github.repository }}

- name: Log into registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

- name: Build apache image
run: |
IMAGE_NAME=ghcr.io/${{ github.repository }}/$BASE_IMAGE_NAME:$BASE_IMAGE_VERSION-apache
IMAGE_NAME=ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/$BASE_IMAGE_NAME:$BASE_IMAGE_VERSION-apache

docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/base-php-apache.Dockerfile --build-arg VERSION=$BASE_IMAGE_VERSION
105 changes: 53 additions & 52 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
@@ -1,64 +1,65 @@
name: Build images

on:
push:
# Publish `master` as Docker `latest` image.
branches:
- master

# Publish `v1.2.3` tags as releases.
tags:
- v*
on: [push, pull_request]

env:
BASE_IMAGE_NAME: openvk
DB_IMAGE_NAME: mariadb
EVENT_IMAGE_NAME: mariadb
DB_VERSION: "10.9"
BASE_IMAGE_NAME: openvk

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
arch: ['x86_64']
buildbase:
name: Build base images

runs-on: ubuntu-latest

# 'push' runs on inner branches, 'pull_request' will run only on outer PRs
if: >
github.repository_owner == 'OpenVK'
&& (github.event_name == 'push'
|| (github.event_name == 'pull_request'
&& github.event.pull_request.head.repo.full_name != github.repository))

if: github.event_name == 'push'
steps:
- uses: actions/checkout@v3
with:
lfs: false

- name: Set up QEMU
uses: docker/setup-qemu-action@v2

- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v2
steps:
- name: Set up QEMU
uses: docker/setup-qemu-action@v4

- name: Log into registry
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v4
with:
platforms: linux/amd64,linux/arm64

- name: Build base image
run: |
IMAGE_ID=ghcr.io/${{ github.repository }}/$BASE_IMAGE_NAME
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,')
[[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')
[ "$VERSION" == "master" ] && VERSION=latest
echo IMAGE_ID=$IMAGE_ID
echo VERSION=$VERSION
- name: Change repository string to lowercase
id: repositorystring
uses: Entepotenz/change-string-case-action-min-dependencies@v1.2.0
with:
string: ${{ github.repository }}

docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_ID:$VERSION . --push -f install/automated/docker/openvk.Dockerfile --build-arg GITREPO=${{ github.repository }}

- name: Build MariaDB primary image
run: |
IMAGE_NAME=ghcr.io/${{ github.repository }}/$DB_IMAGE_NAME:$DB_VERSION-primary
- name: Base image meta
id: basemeta
uses: docker/metadata-action@v6
with:
images: |
ghcr.io/${{ steps.repositorystring.outputs.lowercase }}/${{env.BASE_IMAGE_NAME}}
labels: |
org.opencontainers.image.documentation=https://github.com/OpenVK/openvk/blob/master/install/automated/docker/Readme.md
tags: |
type=sha
type=ref,event=branch
type=ref,event=pr
type=ref,event=tag
type=raw,value=latest,enable={{is_default_branch}}

docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/mariadb-primary.Dockerfile --build-arg VERSION=$DB_VERSION

- name: Build MariaDB event image
run: |
IMAGE_NAME=ghcr.io/${{ github.repository }}/$EVENT_IMAGE_NAME:$DB_VERSION-eventdb
- name: Log into registry
if: github.event_name != 'pull_request'
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin

docker buildx build --platform linux/amd64,linux/arm64 -t $IMAGE_NAME . --push -f install/automated/docker/mariadb-eventdb.Dockerfile --build-arg VERSION=$DB_VERSION
- name: Build base image
uses: docker/build-push-action@v7
with:
platforms: linux/amd64,linux/arm64
file: install/automated/docker/openvk.Dockerfile
tags: ${{ steps.basemeta.outputs.tags }}
labels: ${{ steps.basemeta.outputs.labels }}
push: ${{ github.event_name != 'pull_request' }}
build-args: |
GITREPO=${{ steps.repositorystring.outputs.lowercase }}
3 changes: 2 additions & 1 deletion .github/workflows/codeberg-mirror.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ on: push
jobs:
to_codeberg:
runs-on: ubuntu-latest
if: github.repository_owner == 'OpenVK'
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: pixta-dev/repository-mirroring-action@v1
Expand Down
35 changes: 35 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Lint

on:
push:
pull_request:

jobs:
lint:
runs-on: ubuntu-latest

# 'push' runs on inner branches, 'pull_request' will run only on outer PRs
if: >
github.event_name == 'push'
|| (github.event_name == 'pull_request'
&& github.event.pull_request.head.repo.full_name != github.repository)

permissions:
contents: read
steps:
- name: Code Checkout
uses: actions/checkout@v7

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: "8.2"
extensions: gd, zip, intl, yaml, pdo_mysql, imagick
tools: composer:v2
coverage: none

- name: Install dependencies
run: composer install --no-interaction --no-progress --no-suggest --prefer-dist

- name: PHP CS Fixer
run: vendor/bin/php-cs-fixer fix --dry-run --diff
36 changes: 36 additions & 0 deletions .github/workflows/test-screenshots.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Screenshot Tests

on:
push:
pull_request:

jobs:
test:
runs-on: ubuntu-latest

# 'push' runs on inner branches, 'pull_request' will run only on outer PRs
if: >
github.event_name == 'push'
|| (github.event_name == 'pull_request'
&& github.event.pull_request.head.repo.full_name != github.repository)

steps:
- uses: actions/checkout@v7

- name: Build test images
run: docker compose -f tests/docker-compose.test.yml build

- name: Run full test stack
run: >
docker compose -f tests/docker-compose.test.yml up
--abort-on-container-exit
--exit-code-from playwright
--no-build

- name: Upload test results on failure
if: failure()
uses: actions/upload-artifact@v7
with:
name: playwright-results
path: tests/e2e/test-results/
retention-days: 30
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ update.pid.old
Web/static/js/node_modules

tmp/*
!tmp/api-storage
!tmp/api-storage/.gitkeep
!tmp/themepack_artifacts/.gitkeep
themepacks/*
!themepacks/.gitkeep
Expand All @@ -15,4 +15,7 @@ themepacks/*
storage/*
!storage/.gitkeep

.idea
data/knowledgebase/*

.idea
.php-cs-fixer.cache
15 changes: 15 additions & 0 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?php

$finder = (new PhpCsFixer\Finder())
->in(__DIR__)
->name('openvkctl')
;

return (new PhpCsFixer\Config())
->setRules([
'@PER-CS2.0' => true,
'@PHP82Migration' => true,
])
->setFinder($finder)
->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect())
;
Loading
Loading