All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- β¨ Add comments feature to the editor #1330
- β¨(backend) Comments on text editor #1330
- βΏ(frontend) improve accessibility:
- βΏ(frontend) improve share modal button accessibility #1626
- βΏ(frontend) improve screen reader support in DocShare modal #1628
- π(frontend) fix toolbar not activated when reader #1640
- π(frontend) preserve left panel width on window resize #1588
- β¨(export) enable ODT export for documents #1524
- β¨(frontend) improve mobile UX by showing subdocs count #1540
- β»οΈ(frontend) preserve @ character when esc is pressed after typing it #1512
- β»οΈ(frontend) make summary button fixed to remain visible during scroll #1581
- β»οΈ(frontend) pdf embed use full width #1526
- βΏ(frontend) improve accessibility:
- βΏ(frontend) improve ARIA in doc grid and editor for a11y #1519
- βΏ(frontend) improve accessibility and styling of summary table #1528
- βΏ(frontend) add focus trap and enter key support to remove doc modal #1531
- π(frontend) fix alignment of side menu #1597
- π(frontend) fix fallback translations with Trans #1620
- π(export) fix image overflow by limiting width to 600px during export #1525
- π(export) fix table cell alignment issue in exported documents #1582
- π(export) preserve image aspect ratio in PDF export #1622
- π(export) Export fails when paste with style #1552
- mitigate role escalation in the ask_for_access viewset #1580
- π₯(backend) remove api managing templates
- β¨(frontend) create skeleton component for DocEditor #1491
- β¨(frontend) add an EmojiPicker in the document tree and title #1381
- β¨(frontend) ajustable left panel #1456
- β»οΈ(frontend) adapt custom blocks to new implementation #1375
- β»οΈ(backend) increase user short_name field length #1510
- πΈ(frontend) separate viewers from editors #1509
- π(frontend) fix duplicate document entries in grid #1479
- π(backend) fix trashbin list #1520
- βΏ(frontend) improve accessibility:
- βΏ(frontend) remove empty alt on logo due to Axe a11y error #1516
- π(backend) fix s3 version_id validation #1543
- π(frontend) retry check media status after page reload #1555
- π(frontend) fix Interlinking memory leak #1560
- π(frontend) button new doc UI fix #1557
- π(frontend) interlinking UI fix #1557
- π(service-worker) fix sw registration and page reload logic #1500
- β‘οΈ(backend) improve trashbin endpoint performance #1495
- π(backend) manage invitation partial update without email #1494
- βΏ(frontend) improve accessibility:
- βΏ add missing aria-label to add sub-doc button for accessibility #1480
- βΏ add missing aria-label to more options button on sub-docs #1481
- π₯(backend) remove treebeard form for the document admin #1470
- β¨(frontend) add pdf block to the editor #1293
- β¨List and restore deleted docs #1450
- β»οΈ(frontend) Refactor Auth component for improved redirection logic #1461
- β»οΈ(frontend) replace Arial font-family with token font #1411
- βΏ(frontend) improve accessibility:
- βΏ(frontend) enable enter key to open documentss #1354
- βΏ(frontend) improve modal a11y: structure, labels, title #1349
- βΏimprove NVDA navigation in DocShareModal #1396
- βΏ improve accessibility by adding landmark roles to layout #1394
- βΏ add document visible in list and openable via enter key #1365
- βΏ add pdf outline property to enable bookmarks display #1368
- βΏ hide decorative icons from assistive tech with aria-hidden #1404
- βΏ fix rgaa 1.9.1: convert to figure/figcaption structure #1426
- βΏ remove redundant aria-label to avoid over-accessibility #1420
- βΏ remove redundant aria-label on hidden icons and update tests #1432
- βΏ improve semantic structure and aria roles of leftpanel #1431
- βΏ add default background to left panel for better accessibility #1423
- βΏ restyle checked checkboxes: removing strikethrough #1439
- βΏ add h1 for SR on 40X pages and remove alt texts #1438
- βΏ update labels and shared document icon accessibility #1442
- π±(frontend) Fonts GDPR compliants #1453
- β»οΈ(service-worker) improve SW registration and update handling #1473
- π(backend) duplicate sub docs as root for reader users #1385
- βοΈ(service-worker) remove index from cache first strategy #1395
- π(frontend) fix 404 page when reload 403 page #1402
- π(frontend) fix legacy role computation #1376
- π(frontend) block editing title when not allowed #1412
- π(frontend) scroll back to top when navigate to a document #1406
- π(frontend) fix export pdf emoji problem #1453
- π(frontend) fix attachment download filename #1447
- π(frontend) exclude h4-h6 headings from table of contents #1441
- π(frontend) prevent readers from changing callout emoji #1449
- π(frontend) fix overlapping placeholders in multi-column layout #1455
- π(backend) filter invitation with case insensitive email #1457
- π(frontend) reduce no access image size from 450 to 300 #1463
- π(frontend) preserve interlink style on drag-and-drop in editor #1460
- β¨(frontend) load docs logo from public folder via url #1462
- π§(keycloak) Fix https required issue in dev mode #1286
- π₯(frontend) remove custom DividerBlock ##1375
- β¨(api) add API route to fetch document content #1206
- β¨(frontend) doc emojis improvements #1381
- add an EmojiPicker in the document tree and document title
- remove emoji buttons in menus
- ποΈ(backend) configure throttle on every viewsets #1343
- β¬οΈ Bump eslint to V9 #1071
- βΏ(frontend) improve accessibility:
- βΏfix major accessibility issues reported by wave and axe #1344
- β¨unify tab focus style for better visual consistency #1341
- β¨improve modal a11y: structure, labels, and title #1349
- β¨improve accessibility of cdoc content with correct aria tags #1271
- β¨unify tab focus style for better visual consistency #1341
- βΏhide decorative icons, label menus, avoid accessible nameβ¦ #1362
- β»οΈ(tilt) use helm dev-backend chart
- π©Ή(frontend) on main pages do not display leading emoji as page icon #1381
- π©Ή(frontend) handle properly emojis in interlinking #1381
- π₯(frontend) remove multi column drop cursor #1370
- π(frontend) fix callout emoji list #1366
- π·(CI) add bundle size check job #1268
- β¨(frontend) use title first emoji as doc icon in tree #1289
- β»οΈ(docs-app) Switch from Jest tests to Vitest #1269
- βΏ(frontend) improve accessibility:
- π(frontend) set html lang attribute dynamically #1248
- βΏ(frontend) inject language attribute to pdf export #1235
- βΏ(frontend) improve accessibility of search modal #1275
- βΏ(frontend) add correct attributes to icons #1255
- π¨(frontend) improve nav structure #1262
- βΏοΈ(frontend) keyboard interaction with menu #1244
- βΏ(frontend) improve header accessibility #1270
- βΏ(frontend) improve accessibility for decorative images in editor #1282
- #1338
- #1281
- β»οΈ(backend) fallback to email identifier when no name #1298
- π(backend) allow ASCII characters in user sub field #1295
- β‘οΈ(frontend) improve fallback width calculation #1333
- π(makefile) Windows compatibility fix for Docker volume mounting #1263
- π(minio) fix user permission error with Minio and Windows #1263
- π(frontend) fix export when quote block and inline code #1319
- π(frontend) fix base64 font #1324
- π(backend) allow creator to delete subpages #1297
- π(frontend) fix dnd conflict with tree and Blocknote #1328
- π(frontend) fix display bug on homepage #1332
- πlink role update #1287
- β¨(helm) Service Account support for K8s Resources in Helm Charts #780
- β¨(backend) allow masking documents from the list view #1172
- β¨(frontend) subdocs can manage link reach #1190
- β¨(frontend) add duplicate action to doc tree #1175
- β¨(frontend) Interlinking doc #904
- β¨(frontend) add multi columns support for editor #1219
- β»οΈ(frontend) search on all docs if no children #1184
- β»οΈ(frontend) redirect to doc after duplicate #1175
- π§(project) change env.d system by using local files #1200
- β‘οΈ(frontend) improve tree stability #1207
- β‘οΈ(frontend) improve accessibility #1232
- π(frontend) block drag n drop when not desktop #1239
- π(service-worker) Fix useOffline Maximum update depth exceeded #1196
- π(frontend) fix empty left panel after deleting root doc #1197
- π(helm) charts generate invalid YAML for collaboration API / WS #890
- π(frontend) 401 redirection overridden #1214
- π(frontend) include root parent in search #1243
- β‘οΈ(docker) Optimize Dockerfile to use apk with --no-cache #743
- π(backend) improve prompt to not use code blocks delimiter #1188
- π(frontend) keep simple tag during export #1154
- π(back) manage can-edit endpoint without created room in the ws #1152
- π(frontend) fix action buttons not clickable #1162
- π(frontend) fix crash share modal on grid options #1174
- π(frontend) fix unfold subdocs not clickable at the bottom #1179
- β¨(frontend) multi-pages #701
- β¨(frontend) Duplicate a doc #1078
- β¨Ask for access #1081
- β¨(frontend) add customization for translations #857
- β¨(backend) add ancestors links definitions to document abilities #846
- β¨(backend) include ancestors accesses on document accesses list view #846
- β¨(backend) add ancestors links reach and role to document API #846
- π(project) add troubleshoot doc #1066
- π(project) add system-requirement doc #1066
- π§(frontend) configure x-frame-options to DENY in nginx conf #1084
- β¨(backend) allow to disable checking unsafe mimetype on attachment upload #1099
- β¨(doc) add documentation to install with compose #855
- β¨ Give priority to users connected to collaboration server (aka no websocket feature) #1093
- β»οΈ(backend) stop requiring owner for non-root documents #846
- β»οΈ(backend) simplify roles by ranking them and return only the max role #846
- π(yjs) stop pinning node to minor version on yjs docker image #1005
- π§βπ»(docker) add .next to .dockerignore #1055
- π§βπ»(docker) handle frontend development images with docker compose #1033
- π§βπ»(docker) add y-provider config to development environment #1057
- β‘οΈ(frontend) optimize document fetch error handling #1089
- π(backend) fix link definition select options linked to ancestors #846
- π(frontend) table of content disappearing #982
- π(frontend) fix multiple EmojiPicker #1012
- π(frontend) fix meta title #1017
- π§(git) set LF line endings for all text files #1032
- π(docs) minor fixes to docs/env.md
- β¨support
_FILEenvironment variables for secrets #912
- π₯(frontend) remove Beta from logo #1095
- β¨(backend) add endpoint checking media status #984
- β¨(backend) allow setting session cookie age via env var #977
- β¨(backend) allow theme customnization using a configuration file #948
- β¨(frontend) Add a custom callout block to the editor #892
- π©(frontend) version MIT only #911
- β¨(backend) integrate maleware_detection from django-lasuite #936
- ποΈ(frontend) Footer configurable #959
- π©Ί(CI) add lint spell mistakes #954
- β¨(frontend) create generic theme #792
- π(frontend) block edition to not connected users #945
- πΈ(frontend) Let loader during upload analyze #984
- π©(frontend) feature flag on blocking edition #997
- π(frontend) Update documentation #949
- β (frontend) Improve tests coverage #949
- β¬οΈ(docker) upgrade backend image to python 3.13 #973
- β¬οΈ(docker) upgrade node images to alpine 3.21 #973
- π(y-provider) increase JSON size limits for transcription conversion #989
- π₯(back) remove footer endpoint #948
- π(frontend) fix list copy paste #943
- π(doc) update contributing policy (commit signatures are now mandatory) #895
- πΈ(backend) make document search on title accent-insensitive #874
- π© add homepage feature flag #861
- π(doc) update contributing policy (commit signatures are now mandatory) #895
- β¨(settings) Allow configuring PKCE for the SSO #886
- π(i18n) activate chinese and spanish languages #884
- π§(backend) allow overwriting the data directory #893
- β(backend) add
django-lasuitedependency #839 - β¨(frontend) advanced table features #908
- β‘οΈ(frontend) reduce unblocking time for config #867
- β»οΈ(frontend) bind UI with ability access #900
- β»οΈ(frontend) use built-in Quote block #908
- π(nginx) fix 404 when accessing a doc #866
- ποΈ(drf) disable browsable HTML API renderer #919
- π(frontend) enhance file download security #889
- π(backend) race condition create doc #633
- π(frontend) fix breaklines in custom blocks #908
- π©(backend) add feature flag for the footer #841
- π§(backend) add view to manage footer json #841
- β¨(frontend) add custom css style #771
- π©(frontend) conditionally render AI button only when feature is enabled #814
- π¨(frontend) block button when creating doc #749
- π(back) validate document content in serializer #822
- π(frontend) fix selection click past end of content #840
- π(legal) Require contributors to sign a DCO #779
- β»οΈ(frontend) Integrate UI kit #783
- ποΈ(y-provider) manage auth in y-provider app #804
- π(backend) compute ancestor_links in get_abilities if needed #725
- ποΈ(back) restrict access to document accesses #801
- π(doc) add publiccode.yml #770
- πΈ(frontend) ctrl+k modal not when editor is focused #712
- π(back) allow only images to be used with the cors-proxy #781
- π(backend) stop returning inactive users on the list endpoint #636
- ποΈ(backend) require at least 5 characters to search for users #636
- ποΈ(back) throttle user list endpoint #636
- ποΈ(back) remove pagination and limit to 5 for user list endpoint #636
- π(doc) Added GNU Make link to README #750
- β¨(frontend) add pinning on doc detail #711
- π©(frontend) feature flag analytic on copy as html #649
- β¨(frontend) Custom block divider with export #698
- π(i18n) activate dutch language #742
- β¨(frontend) add Beautify action to AI transform #478
- β¨(frontend) add Emojify action to AI transform #478
- π§βπ»(frontend) change literal section open source #702
- β»οΈ(frontend) replace cors proxy for export #695
- π¨(gitlint) Allow uppercase in commit messages #756
- β»οΈ(frontend) Improve AI translations #478
- π(frontend) SVG export #706
- π(frontend) remove scroll listener table content #688
- ποΈ(back) restrict access to favorite_list endpoint #690
- π(backend) refactor to fix filtering on children and descendants views #695
- π(action) fix notify-argocd workflow #713
- π¨(helm) fix helmfile lint #736
- π(frontend) redirect to 401 page when 401 error #759
- β¨(frontend) synchronize language-choice #401
- Use sentry tags instead of extra scope
- π(frontend) fix collaboration error #684
- β¨(backend) limit link reach/role select options depending on ancestors #645
- β¨(backend) add new "descendants" action to document API endpoint #645
- β¨(backend) new "tree" action on document detail endpoint #645
- β¨(backend) allow forcing page size within limits #645
- π(frontend) add error pages #643
- ποΈ Manage unsafe attachments #663
- β¨(frontend) Custom block quote with export #646
- β¨(frontend) add open source section homepage #666
- β¨(frontend) synchronize language-choice #401
- π(frontend) Restore version visibility #629
- π(doc) minor README.md formatting and wording enhancements
- β»οΈStop setting a default title on doc creation #634
- β»οΈ(frontend) misc ui improvements #644
- π(backend) allow any type of extensions for media download #671
- β»οΈ(frontend) improve table pdf rendering
- π(email) invitation emails in receivers language
- π(doc) Add security.md and codeofconduct.md #604
- β¨(frontend) add home page #608
- β¨(frontend) cursor display on activity #609
- β¨(frontend) Add export page break #623
- π§(backend) make AI feature reach configurable #628
- π(CI) Fix email partially translated #616
- π(frontend) fix cursor breakline #609
- π(frontend) fix style pdf export #609
- β¨(backend) add duplicate action to the document API endpoint
- βοΈ(backend) add util to extract text from base64 yjs document
- β¨(backend) add soft delete and restore API endpoints to documents #516
- β¨(backend) allow organizing documents in a tree structure #516
- β¨(backend) add "excerpt" field to document list serializer #516
- β¨(backend) add github actions to manage Crowdin workflow #559 & #563
- πIntegrate Posthog #540
- π·οΈ(backend) add content-type to uploaded files #552
- β¨(frontend) export pdf docx front side #537
- π(frontend) add abilities on doc row #581
- π(frontend) improve DocsGridItem responsive padding #582
- π§(backend) Bump maximum page size to 200 #516
- π(doc) Improve Read me #558
- πFix invitations #575
- π₯(backend) remove "content" field from list serializer # 516
-π(frontend) share modal is shown when you don't have the abilities #557 -π(frontend) title copy break app #564
- π§(backend) add option to configure list of essential OIDC claims #525 & #531
- π§(helm) add option to disable default tls setting by @dominikkaminski #519
- π(frontend) Add left panel #420
- π(frontend) add filtering to left panel #475
- β¨(frontend) new share modal ui #489
- β¨(frontend) add favorite feature #515
- π(documentation) Documentation about self-hosted installation #530
- β¨(helm) helm versioning #530
- ποΈ(yjs-server) organize yjs server #528
- β»οΈ(frontend) better separation collaboration process #528
- π(frontend) updating the header and leftpanel for responsive #421
- π(frontend) update DocsGrid component #431
- π(frontend) update DocsGridOptions component #432
- π(frontend) update DocHeader ui #448
- π(frontend) update doc versioning ui #463
- π(frontend) update doc summary ui #473
- π(doc) update readme.md to match V2 changes #558 & #572
- π(backend) fix create document via s2s if sub unknown but email found #543
- π(frontend) hide search and create doc button if not authenticated #555
- π(backend) race condition creation issue #556
- β¨(backend) add server-to-server API endpoint to create documents #467
- β¨(email) white brand email #412
- β¨(y-provider) create a markdown converter endpoint #488
- β‘οΈ(docker) improve y-provider image #422
- β‘οΈ(e2e) reduce flakiness on e2e tests #511
- π(frontend) update doc editor height #481
- π(frontend) add doc search #485
- β¨(backend) annotate number of accesses on documents in list view #429
- β¨(backend) allow users to mark/unmark documents as favorite #429
- ποΈ(collaboration) increase collaboration access security #472
- π¨(frontend) encapsulated title to its own component #474
- β‘οΈ(backend) optimize number of queries on document list view #429
- β»οΈ(frontend) stop to use provider with version #480
- π(collaboration) change the websocket key name #480
- π(frontend) fix initial content with collaboration #484
- π(frontend) Fix hidden menu on Firefox #468
- π(backend) fix sanitize problem IA #490
- β»οΈ(SW) change strategy html caching #460
- π(frontend) link not clickable and flickering firefox #457
- π(backend) add German translation #259
- π(frontend) add German translation #255
- β¨(frontend) add a broadcast store #387
- β¨(backend) whitelist pod's IP address #443
- β¨(backend) config endpoint #425
- β¨(frontend) config endpoint #424
- β¨(frontend) add sentry #424
- β¨(frontend) add crisp chatbot #450
- πΈ(backend) improve users similarity search and sort results #391
- β»οΈ(frontend) simplify stores #402
- β¨(frontend) update $css Box props type to add styled components RuleSet #423
- β (CI) trivy continue on error #453
- π§(backend) fix logging for docker and make it configurable by envar #427
- π¦Ί(backend) add comma to sub regex #408
- π(editor) collaborative user tag hidden when read only #385
- π(frontend) users have view access when revoked #387
- π(frontend) fix placeholder editable when double clicks #454
- πContributing.md #352
- π(frontend) add localization to editor #368
- β¨Public and restricted doc editable #357
- β¨(frontend) Add full name if available #380
- β¨(backend) Add view accesses ability #376
- β»οΈ(frontend) list accesses if user has abilities #376
- β»οΈ(frontend) avoid documents indexing in search engine #372
- π(backend) doc restricted by default #388
- π(backend) require right to manage document accesses to see invitations #369
- π(i18n) same frontend and backend language using shared cookies #365
- π(frontend) add default toolbar buttons #355
- π(frontend) throttle error correctly display #378
- π₯(helm) remove infra related codes #366
- β¨AI to doc editor #250
- β¨(backend) allow uploading more types of attachments #309
- β¨(frontend) add buttons to copy document to clipboard as HTML/Markdown #318
- β»οΈ(frontend) more multi theme friendly #325
- β»οΈ Bootstrap frontend #257
- β»οΈ Add username in email #314
- π(backend) do not duplicate user when disabled
- π(frontend) invalidate queries after removing user #336
- π(backend) Fix dysfunctional permissions on document create #329
- π(backend) fix nginx docker container #340
- π(frontend) fix copy paste firefox #353
1.5.1 - 2024-10-10
- π(db) fix users duplicate #316
1.5.0 - 2024-10-09
- β¨(backend) add name fields to the user synchronized with OIDC #301
- β¨(ci) add security scan #291
- β»οΈ(frontend) Add versions #277
- β¨(frontend) one-click document creation #275
- β¨(frontend) edit title inline #275
- π±(frontend) mobile responsive #304
- π(frontend) Update translation #308
- π(frontend) error alert closeable on editor #284
- β»οΈ(backend) Change email content #283
- π(frontend) viewers and editors can access share modal #302
- β»οΈ(frontend) remove footer on doc editor #313
- π(frontend) match email if no existing user matches the sub
- π(backend) gitlab oicd userinfo endpoint #232
- π(frontend) redirect to the OIDC when private doc and unauthentified #292
- β»οΈ(backend) getting list of document versions available for a user #258
- π§(backend) fix configuration to avoid different ssl warning #297
- π(frontend) fix editor break line not working #302
1.4.0 - 2024-09-17
- β¨Add link public/authenticated/restricted access with read/editor roles #234
- β¨(frontend) add copy link button #235
- π(frontend) access public docs without being logged #235
- β»οΈ(backend) Allow null titles on documents for easier creation #234
- π(backend) stop to list public doc to everyone #234
- π(frontend) change visibility in share modal #235
- β‘οΈ(frontend) Improve summary #244
- π(backend) Fix forcing ID when creating a document via API endpoint #234
- π Rebuild frontend dev container from makefile #248
1.3.0 - 2024-09-05
- β¨Add image attachments with access control
- β¨(frontend) Upload image to a document #211
- β¨(frontend) Summary #223
- β¨(frontend) update meta title for docs page #231
- π(frontend) code background darkened on editor #214
- π₯(frontend) hide markdown button if not text #213
- π Fix emoticon in pdf export #225
- π Fix collaboration on document #226
- π (docker) Fix compatibility with mac #230
- π₯(frontend) remove saving modal #213
1.2.1 - 2024-08-23
- β»οΈ Change ordering docs datagrid #195
- π₯(helm) use scaleway email #194
1.2.0 - 2024-08-22
- π¨(frontend) better conversion editor to pdf #151
- β¨Export docx (word) #161
- πInternationalize invitation email #167
- β¨(frontend) White branding #164
- β¨Email invitation when add user to doc #171
- β¨Invitation management #174
- π(y-webrtc) fix prob connection #147
- β‘οΈ(frontend) improve select share stability #159
- π(backend) enable SSL when sending email #165
- π¨(frontend) stop limit layout height to screen size #158
- β‘οΈ(CI) only e2e chrome mandatory #177
- π₯(helm) remove htaccess #181
1.1.0 - 2024-07-15
- π€‘(demo) generate dummy documents on dev users #120
- β¨(frontend) create side modal component #134
- β¨(frontend) Doc grid actions (update / delete) #136
- β¨(frontend) Doc editor header information #137
- β»οΈ(frontend) replace docs panel with docs grid #120
- β»οΈ(frontend) create a doc from a modal #132
- β»οΈ(frontend) manage members from the share modal #140
1.0.0 - 2024-07-02
- π(frontend) Manage the document's right (#75)
- β¨(frontend) Update document (#68)
- β¨(frontend) Remove document (#68)
- π³(docker) dockerize dev frontend (#63)
- π(backend) list users with email filtering (#79)
- β¨(frontend) add user to a document (#52)
- β¨(frontend) invite user to a document (#52)
- π(frontend) manage members (update role / list / remove) (#81)
- β¨(frontend) offline mode (#88)
- π(frontend) translate cgu (#83)
- β¨(service-worker) offline doc management (#94)
- βοΈ(frontend) Add beta tag on logo (#121)
- β»οΈ(frontend) Change site from Impress to Docs (#76)
- β¨(frontend) Generate PDF from a modal (#68)
- π§(helm) sticky session by request_uri for signaling server (#78)
- β»οΈ(frontend) change logo (#84)
- β»οΈ(frontend) pdf has title doc (#84)
- β‘οΈ(e2e) unique login between tests (#80)
- β‘οΈ(CI) improve e2e job (#86)
- β»οΈ(frontend) improve the error and message info ui (#93)
- βοΈ(frontend) change all occurrences of pad to doc (#99)
- π(frontend) Fix the break line when generate PDF (#84)
- π(CI) Remove trigger workflow on push tags on CI (#68)
- π₯(frontend) Remove coming soon page (#121)
0.1.0 - 2024-05-24
- β¨(frontend) Coming Soon page (#67)
- π Impress, project to manage your documents easily and collaboratively.