mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-04-27 13:27:52 +00:00
Merge branch 'develop' into feature/i18n-languages
This commit is contained in:
commit
b68849592e
84
docs/contribution.md
Normal file
84
docs/contribution.md
Normal file
@ -0,0 +1,84 @@
|
||||
|
||||
# 🤝 Contributing Guide
|
||||
|
||||
Thank you for your interest in contributing! We follow a structured Git workflow to keep the project clean, stable, and production-ready at all times.
|
||||
|
||||
---
|
||||
|
||||
## 📦 Branch Overview
|
||||
|
||||
| Branch | Purpose |
|
||||
|------------------|----------------------------------------------------------|
|
||||
| `master` | Stable, production-ready code. All releases are tagged from here. |
|
||||
| `develop` | Active development branch. All new features go here first. |
|
||||
| `release/x.y.z` | Pre-release branch for staging, QA, and final polish. |
|
||||
|
||||
---
|
||||
|
||||
## 🌿 Creating a Feature or Fix
|
||||
|
||||
1. **Start from `develop`:**
|
||||
|
||||
```bash
|
||||
git checkout develop
|
||||
git checkout -b feature/your-feature-name
|
||||
```
|
||||
|
||||
2. **Make your changes and commit them.**
|
||||
|
||||
3. **Push your branch:**
|
||||
|
||||
```bash
|
||||
git push origin feature/your-feature-name
|
||||
```
|
||||
|
||||
4. **Open a Pull Request into `develop`.**
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Releasing Code (Maintainers Only)
|
||||
|
||||
A new `release/x.y.z` branch must be created for **every release**.
|
||||
|
||||
1. **Create a `release/` branch from `master`:**
|
||||
|
||||
```bash
|
||||
git checkout master
|
||||
git checkout -b release/1.2.0
|
||||
```
|
||||
|
||||
2. **Merge in `develop` or selected branches if `develop` is not ready:**
|
||||
|
||||
```bash
|
||||
git merge develop
|
||||
# or
|
||||
git merge feature/finished-feature
|
||||
git merge feature/another-complete-feature
|
||||
```
|
||||
|
||||
3. **Polish, test, and fix issues as needed.**
|
||||
|
||||
4. **Merge back into `develop`:**
|
||||
|
||||
```bash
|
||||
git checkout develop
|
||||
git merge release/1.2.0
|
||||
git push origin develop
|
||||
```
|
||||
|
||||
5. **Finalize the release:**
|
||||
|
||||
```bash
|
||||
git checkout master
|
||||
git merge release/1.2.0
|
||||
git tag v1.2.0
|
||||
git push origin master --tags
|
||||
```
|
||||
|
||||
6. **Delete the release branch:**
|
||||
|
||||
```bash
|
||||
git branch -d release/1.2.0
|
||||
git push origin --delete release/1.2.0
|
||||
```
|
||||
|
@ -2235,42 +2235,40 @@ export const Group = ({
|
||||
: '0px',
|
||||
}}
|
||||
>
|
||||
{
|
||||
<DesktopHeader
|
||||
isPrivate={isPrivate}
|
||||
selectedGroup={selectedGroup}
|
||||
groupSection={groupSection}
|
||||
isUnread={isUnread}
|
||||
goToAnnouncements={goToAnnouncements}
|
||||
isUnreadChat={isUnreadChat}
|
||||
goToChat={goToChat}
|
||||
goToThreads={goToThreads}
|
||||
setOpenManageMembers={setOpenManageMembers}
|
||||
groupChatHasUnread={groupChatHasUnread}
|
||||
groupsAnnHasUnread={groupsAnnHasUnread}
|
||||
directChatHasUnread={directChatHasUnread}
|
||||
chatMode={chatMode}
|
||||
openDrawerGroups={openDrawerGroups}
|
||||
goToHome={goToHome}
|
||||
setIsOpenDrawerProfile={setIsOpenDrawerProfile}
|
||||
mobileViewMode={mobileViewMode}
|
||||
setMobileViewMode={setMobileViewMode}
|
||||
setMobileViewModeKeepOpen={setMobileViewModeKeepOpen}
|
||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||
hasUnreadDirects={directChatHasUnread}
|
||||
myName={userInfo?.name || null}
|
||||
isHome={groupSection === 'home'}
|
||||
isGroups={desktopSideView === 'groups'}
|
||||
isDirects={desktopSideView === 'directs'}
|
||||
setDesktopSideView={setDesktopSideView}
|
||||
hasUnreadAnnouncements={isUnread}
|
||||
isAnnouncement={groupSection === 'announcement'}
|
||||
isChat={groupSection === 'chat'}
|
||||
hasUnreadChat={isUnreadChat}
|
||||
setGroupSection={setGroupSection}
|
||||
isForum={groupSection === 'forum'}
|
||||
/>
|
||||
}
|
||||
<DesktopHeader
|
||||
isPrivate={isPrivate}
|
||||
selectedGroup={selectedGroup}
|
||||
groupSection={groupSection}
|
||||
isUnread={isUnread}
|
||||
goToAnnouncements={goToAnnouncements}
|
||||
isUnreadChat={isUnreadChat}
|
||||
goToChat={goToChat}
|
||||
goToThreads={goToThreads}
|
||||
setOpenManageMembers={setOpenManageMembers}
|
||||
groupChatHasUnread={groupChatHasUnread}
|
||||
groupsAnnHasUnread={groupsAnnHasUnread}
|
||||
directChatHasUnread={directChatHasUnread}
|
||||
chatMode={chatMode}
|
||||
openDrawerGroups={openDrawerGroups}
|
||||
goToHome={goToHome}
|
||||
setIsOpenDrawerProfile={setIsOpenDrawerProfile}
|
||||
mobileViewMode={mobileViewMode}
|
||||
setMobileViewMode={setMobileViewMode}
|
||||
setMobileViewModeKeepOpen={setMobileViewModeKeepOpen}
|
||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||
hasUnreadDirects={directChatHasUnread}
|
||||
myName={userInfo?.name || null}
|
||||
isHome={groupSection === 'home'}
|
||||
isGroups={desktopSideView === 'groups'}
|
||||
isDirects={desktopSideView === 'directs'}
|
||||
setDesktopSideView={setDesktopSideView}
|
||||
hasUnreadAnnouncements={isUnread}
|
||||
isAnnouncement={groupSection === 'announcement'}
|
||||
isChat={groupSection === 'chat'}
|
||||
hasUnreadChat={isUnreadChat}
|
||||
setGroupSection={setGroupSection}
|
||||
isForum={groupSection === 'forum'}
|
||||
/>
|
||||
|
||||
<Box
|
||||
sx={{
|
||||
@ -2521,64 +2519,59 @@ export const Group = ({
|
||||
</>
|
||||
)}
|
||||
|
||||
{
|
||||
<AppsDesktop
|
||||
toggleSideViewGroups={toggleSideViewGroups}
|
||||
toggleSideViewDirects={toggleSideViewDirects}
|
||||
goToHome={goToHome}
|
||||
mode={appsMode}
|
||||
setMode={setAppsMode}
|
||||
setDesktopSideView={setDesktopSideView}
|
||||
hasUnreadDirects={directChatHasUnread}
|
||||
show={desktopViewMode === 'apps'}
|
||||
myName={userInfo?.name}
|
||||
isGroups={isOpenSideViewGroups}
|
||||
isDirects={isOpenSideViewDirects}
|
||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||
setDesktopViewMode={setDesktopViewMode}
|
||||
isApps={desktopViewMode === 'apps'}
|
||||
desktopViewMode={desktopViewMode}
|
||||
/>
|
||||
}
|
||||
{
|
||||
<AppsDevMode
|
||||
toggleSideViewGroups={toggleSideViewGroups}
|
||||
toggleSideViewDirects={toggleSideViewDirects}
|
||||
goToHome={goToHome}
|
||||
mode={appsModeDev}
|
||||
setMode={setAppsModeDev}
|
||||
setDesktopSideView={setDesktopSideView}
|
||||
hasUnreadDirects={directChatHasUnread}
|
||||
show={desktopViewMode === 'dev'}
|
||||
myName={userInfo?.name}
|
||||
isGroups={isOpenSideViewGroups}
|
||||
isDirects={isOpenSideViewDirects}
|
||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||
setDesktopViewMode={setDesktopViewMode}
|
||||
desktopViewMode={desktopViewMode}
|
||||
isApps={desktopViewMode === 'apps'}
|
||||
/>
|
||||
}
|
||||
|
||||
{
|
||||
<HomeDesktop
|
||||
name={userInfo?.name}
|
||||
refreshHomeDataFunc={refreshHomeDataFunc}
|
||||
myAddress={myAddress}
|
||||
isLoadingGroups={isLoadingGroups}
|
||||
balance={balance}
|
||||
userInfo={userInfo}
|
||||
groups={groups}
|
||||
setGroupSection={setGroupSection}
|
||||
setSelectedGroup={setSelectedGroup}
|
||||
getTimestampEnterChat={getTimestampEnterChat}
|
||||
setOpenManageMembers={setOpenManageMembers}
|
||||
setOpenAddGroup={setOpenAddGroup}
|
||||
setMobileViewMode={setMobileViewMode}
|
||||
setDesktopViewMode={setDesktopViewMode}
|
||||
desktopViewMode={desktopViewMode}
|
||||
/>
|
||||
}
|
||||
<AppsDesktop
|
||||
toggleSideViewGroups={toggleSideViewGroups}
|
||||
toggleSideViewDirects={toggleSideViewDirects}
|
||||
goToHome={goToHome}
|
||||
mode={appsMode}
|
||||
setMode={setAppsMode}
|
||||
setDesktopSideView={setDesktopSideView}
|
||||
hasUnreadDirects={directChatHasUnread}
|
||||
show={desktopViewMode === 'apps'}
|
||||
myName={userInfo?.name}
|
||||
isGroups={isOpenSideViewGroups}
|
||||
isDirects={isOpenSideViewDirects}
|
||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||
setDesktopViewMode={setDesktopViewMode}
|
||||
isApps={desktopViewMode === 'apps'}
|
||||
desktopViewMode={desktopViewMode}
|
||||
/>
|
||||
|
||||
<AppsDevMode
|
||||
toggleSideViewGroups={toggleSideViewGroups}
|
||||
toggleSideViewDirects={toggleSideViewDirects}
|
||||
goToHome={goToHome}
|
||||
mode={appsModeDev}
|
||||
setMode={setAppsModeDev}
|
||||
setDesktopSideView={setDesktopSideView}
|
||||
hasUnreadDirects={directChatHasUnread}
|
||||
show={desktopViewMode === 'dev'}
|
||||
myName={userInfo?.name}
|
||||
isGroups={isOpenSideViewGroups}
|
||||
isDirects={isOpenSideViewDirects}
|
||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||
setDesktopViewMode={setDesktopViewMode}
|
||||
desktopViewMode={desktopViewMode}
|
||||
isApps={desktopViewMode === 'apps'}
|
||||
/>
|
||||
|
||||
<HomeDesktop
|
||||
name={userInfo?.name}
|
||||
refreshHomeDataFunc={refreshHomeDataFunc}
|
||||
myAddress={myAddress}
|
||||
isLoadingGroups={isLoadingGroups}
|
||||
balance={balance}
|
||||
userInfo={userInfo}
|
||||
groups={groups}
|
||||
setGroupSection={setGroupSection}
|
||||
setSelectedGroup={setSelectedGroup}
|
||||
getTimestampEnterChat={getTimestampEnterChat}
|
||||
setOpenManageMembers={setOpenManageMembers}
|
||||
setOpenAddGroup={setOpenAddGroup}
|
||||
setMobileViewMode={setMobileViewMode}
|
||||
setDesktopViewMode={setDesktopViewMode}
|
||||
desktopViewMode={desktopViewMode}
|
||||
/>
|
||||
</Box>
|
||||
|
||||
<AuthenticatedContainerInnerRight
|
||||
|
Loading…
x
Reference in New Issue
Block a user