mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-06-02 14:37:02 +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',
|
: '0px',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{
|
<DesktopHeader
|
||||||
<DesktopHeader
|
isPrivate={isPrivate}
|
||||||
isPrivate={isPrivate}
|
selectedGroup={selectedGroup}
|
||||||
selectedGroup={selectedGroup}
|
groupSection={groupSection}
|
||||||
groupSection={groupSection}
|
isUnread={isUnread}
|
||||||
isUnread={isUnread}
|
goToAnnouncements={goToAnnouncements}
|
||||||
goToAnnouncements={goToAnnouncements}
|
isUnreadChat={isUnreadChat}
|
||||||
isUnreadChat={isUnreadChat}
|
goToChat={goToChat}
|
||||||
goToChat={goToChat}
|
goToThreads={goToThreads}
|
||||||
goToThreads={goToThreads}
|
setOpenManageMembers={setOpenManageMembers}
|
||||||
setOpenManageMembers={setOpenManageMembers}
|
groupChatHasUnread={groupChatHasUnread}
|
||||||
groupChatHasUnread={groupChatHasUnread}
|
groupsAnnHasUnread={groupsAnnHasUnread}
|
||||||
groupsAnnHasUnread={groupsAnnHasUnread}
|
directChatHasUnread={directChatHasUnread}
|
||||||
directChatHasUnread={directChatHasUnread}
|
chatMode={chatMode}
|
||||||
chatMode={chatMode}
|
openDrawerGroups={openDrawerGroups}
|
||||||
openDrawerGroups={openDrawerGroups}
|
goToHome={goToHome}
|
||||||
goToHome={goToHome}
|
setIsOpenDrawerProfile={setIsOpenDrawerProfile}
|
||||||
setIsOpenDrawerProfile={setIsOpenDrawerProfile}
|
mobileViewMode={mobileViewMode}
|
||||||
mobileViewMode={mobileViewMode}
|
setMobileViewMode={setMobileViewMode}
|
||||||
setMobileViewMode={setMobileViewMode}
|
setMobileViewModeKeepOpen={setMobileViewModeKeepOpen}
|
||||||
setMobileViewModeKeepOpen={setMobileViewModeKeepOpen}
|
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
hasUnreadDirects={directChatHasUnread}
|
||||||
hasUnreadDirects={directChatHasUnread}
|
myName={userInfo?.name || null}
|
||||||
myName={userInfo?.name || null}
|
isHome={groupSection === 'home'}
|
||||||
isHome={groupSection === 'home'}
|
isGroups={desktopSideView === 'groups'}
|
||||||
isGroups={desktopSideView === 'groups'}
|
isDirects={desktopSideView === 'directs'}
|
||||||
isDirects={desktopSideView === 'directs'}
|
setDesktopSideView={setDesktopSideView}
|
||||||
setDesktopSideView={setDesktopSideView}
|
hasUnreadAnnouncements={isUnread}
|
||||||
hasUnreadAnnouncements={isUnread}
|
isAnnouncement={groupSection === 'announcement'}
|
||||||
isAnnouncement={groupSection === 'announcement'}
|
isChat={groupSection === 'chat'}
|
||||||
isChat={groupSection === 'chat'}
|
hasUnreadChat={isUnreadChat}
|
||||||
hasUnreadChat={isUnreadChat}
|
setGroupSection={setGroupSection}
|
||||||
setGroupSection={setGroupSection}
|
isForum={groupSection === 'forum'}
|
||||||
isForum={groupSection === 'forum'}
|
/>
|
||||||
/>
|
|
||||||
}
|
|
||||||
|
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
@ -2521,64 +2519,59 @@ export const Group = ({
|
|||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{
|
<AppsDesktop
|
||||||
<AppsDesktop
|
toggleSideViewGroups={toggleSideViewGroups}
|
||||||
toggleSideViewGroups={toggleSideViewGroups}
|
toggleSideViewDirects={toggleSideViewDirects}
|
||||||
toggleSideViewDirects={toggleSideViewDirects}
|
goToHome={goToHome}
|
||||||
goToHome={goToHome}
|
mode={appsMode}
|
||||||
mode={appsMode}
|
setMode={setAppsMode}
|
||||||
setMode={setAppsMode}
|
setDesktopSideView={setDesktopSideView}
|
||||||
setDesktopSideView={setDesktopSideView}
|
hasUnreadDirects={directChatHasUnread}
|
||||||
hasUnreadDirects={directChatHasUnread}
|
show={desktopViewMode === 'apps'}
|
||||||
show={desktopViewMode === 'apps'}
|
myName={userInfo?.name}
|
||||||
myName={userInfo?.name}
|
isGroups={isOpenSideViewGroups}
|
||||||
isGroups={isOpenSideViewGroups}
|
isDirects={isOpenSideViewDirects}
|
||||||
isDirects={isOpenSideViewDirects}
|
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
setDesktopViewMode={setDesktopViewMode}
|
||||||
setDesktopViewMode={setDesktopViewMode}
|
isApps={desktopViewMode === 'apps'}
|
||||||
isApps={desktopViewMode === 'apps'}
|
desktopViewMode={desktopViewMode}
|
||||||
desktopViewMode={desktopViewMode}
|
/>
|
||||||
/>
|
|
||||||
}
|
<AppsDevMode
|
||||||
{
|
toggleSideViewGroups={toggleSideViewGroups}
|
||||||
<AppsDevMode
|
toggleSideViewDirects={toggleSideViewDirects}
|
||||||
toggleSideViewGroups={toggleSideViewGroups}
|
goToHome={goToHome}
|
||||||
toggleSideViewDirects={toggleSideViewDirects}
|
mode={appsModeDev}
|
||||||
goToHome={goToHome}
|
setMode={setAppsModeDev}
|
||||||
mode={appsModeDev}
|
setDesktopSideView={setDesktopSideView}
|
||||||
setMode={setAppsModeDev}
|
hasUnreadDirects={directChatHasUnread}
|
||||||
setDesktopSideView={setDesktopSideView}
|
show={desktopViewMode === 'dev'}
|
||||||
hasUnreadDirects={directChatHasUnread}
|
myName={userInfo?.name}
|
||||||
show={desktopViewMode === 'dev'}
|
isGroups={isOpenSideViewGroups}
|
||||||
myName={userInfo?.name}
|
isDirects={isOpenSideViewDirects}
|
||||||
isGroups={isOpenSideViewGroups}
|
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
||||||
isDirects={isOpenSideViewDirects}
|
setDesktopViewMode={setDesktopViewMode}
|
||||||
hasUnreadGroups={groupChatHasUnread || groupsAnnHasUnread}
|
desktopViewMode={desktopViewMode}
|
||||||
setDesktopViewMode={setDesktopViewMode}
|
isApps={desktopViewMode === 'apps'}
|
||||||
desktopViewMode={desktopViewMode}
|
/>
|
||||||
isApps={desktopViewMode === 'apps'}
|
|
||||||
/>
|
<HomeDesktop
|
||||||
}
|
name={userInfo?.name}
|
||||||
|
refreshHomeDataFunc={refreshHomeDataFunc}
|
||||||
{
|
myAddress={myAddress}
|
||||||
<HomeDesktop
|
isLoadingGroups={isLoadingGroups}
|
||||||
name={userInfo?.name}
|
balance={balance}
|
||||||
refreshHomeDataFunc={refreshHomeDataFunc}
|
userInfo={userInfo}
|
||||||
myAddress={myAddress}
|
groups={groups}
|
||||||
isLoadingGroups={isLoadingGroups}
|
setGroupSection={setGroupSection}
|
||||||
balance={balance}
|
setSelectedGroup={setSelectedGroup}
|
||||||
userInfo={userInfo}
|
getTimestampEnterChat={getTimestampEnterChat}
|
||||||
groups={groups}
|
setOpenManageMembers={setOpenManageMembers}
|
||||||
setGroupSection={setGroupSection}
|
setOpenAddGroup={setOpenAddGroup}
|
||||||
setSelectedGroup={setSelectedGroup}
|
setMobileViewMode={setMobileViewMode}
|
||||||
getTimestampEnterChat={getTimestampEnterChat}
|
setDesktopViewMode={setDesktopViewMode}
|
||||||
setOpenManageMembers={setOpenManageMembers}
|
desktopViewMode={desktopViewMode}
|
||||||
setOpenAddGroup={setOpenAddGroup}
|
/>
|
||||||
setMobileViewMode={setMobileViewMode}
|
|
||||||
setDesktopViewMode={setDesktopViewMode}
|
|
||||||
desktopViewMode={desktopViewMode}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<AuthenticatedContainerInnerRight
|
<AuthenticatedContainerInnerRight
|
||||||
|
Loading…
x
Reference in New Issue
Block a user