diff --git a/devGuide/index.page-vue-render.js b/devGuide/index.page-vue-render.js
index 6ce1025b..48d3e15e 100644
--- a/devGuide/index.page-vue-render.js
+++ b/devGuide/index.page-vue-render.js
@@ -5,6 +5,6 @@ with(this){return _c('div',{attrs:{"id":"app"}},[_c('header',{attrs:{"sticky":""
};
var pageVueStaticRenderFns = [function anonymous(
) {
-with(this){return _c('div',[_c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("[Generated by "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.3.0")]),_v(" on Wed, 20 Mar 2024, 15:20:12 UTC]")]),_c('br'),_v(" "),_c('small',[_v("This site is powered by "),_c('a',{attrs:{"href":"https://www.netlify.com/"}},[_v("Netlify")]),_v(".")])])])])}
+with(this){return _c('div',[_c('footer',[_c('div',{staticClass:"text-center"},[_c('small',[_v("[Generated by "),_c('a',{attrs:{"href":"https://markbind.org/"}},[_v("MarkBind 5.3.0")]),_v(" on Fri, 22 Mar 2024, 5:24:08 UTC]")]),_c('br'),_v(" "),_c('small',[_v("This site is powered by "),_c('a',{attrs:{"href":"https://www.netlify.com/"}},[_v("Netlify")]),_v(".")])])])])}
}];
\ No newline at end of file
diff --git a/devGuide/projectManagement.html b/devGuide/projectManagement.html
index cf4b5d6a..2ec9ba82 100644
--- a/devGuide/projectManagement.html
+++ b/devGuide/projectManagement.html
@@ -33,7 +33,11 @@
If there is no second approval yet, wait for a day before merging the PR without the second approval.
This is to allow other developers the chance to review the PR, and delay the merge if there's any significant problems. Not everyone is available all of the time, so please be patient.
Merging
Re-sync the PR branch with master to trigger the CI pipeline.
Rationale: This is because we do not ask PR authors to rebase their PRs, but the master branch may have since been updated. It is possible for tests to pass on their branch, only to fail when integrating the changes with the master
This is possible even if GitHub doesn't complain about any merge conflict!
the commits are well-organized, and the branch tackles only one task. This would typically be a PR tackling a substantial issue requiring multiple dependent and successive changes.
Use a rebase-merge if
the commits are well-organized, and each commit is an independent task. This should be extremely rare as we typically advise that PRs should not have unrelated changes. An example can be found here.
Format for the merge/squashed commit title: PR_TITLE (#PR_NUMBER) Add built-in support for light themes from bootswatch (#745)
For non-trivial PRs, ensure that there is a sensible commit message accompanied by it. Both the title and the body should follow the Git conventions @SE-EDU.
Before confirming the merge, do ensure that no other PRs have been merged to master since the time you started drafting the merging commit's title and message. Otherwise, you may face a glitch where GitHub merges your PR without squashing. (Reference: MarkBind#1160)
Use the r.Major/Minor/Patch label to tag the PR.
Reason: The release manager may not review all PRs, so please add the label to highlight the version impact of the PR. This helps to clarify which milestone the PR should be assigned to.
Draft the release note for breaking changes.
Reason: The release manager may not have the full details of the PR, so please work with the PR author to prepare a release note (if applicable) in the PR description.
Set a milestone to the PR.
Reason: We may have missed it during the "Approval" stage, so please add the version milestone if it is missing, so that the drafting of the release notes during the release process will be easier.
Tip: how to undo an accidental merge commit.
In the event of a wrong commit strategy chosen, you can undo the merge to master by:
-
Switch to the master branch locally.
Run git reset --hard HEAD~1.
Run git push --force.
Create a new PR from the previous PR branch and merge the PR with the correct merge strategy.
Note: The above should be performed with caution as force pushing rewrites the Git history, which might cause conflicts with any on-going work. You would also need write/push access to master.
Doing a Release
Attention new maintainers! Ensure that:
You have the rights to push to master branch on MarkBind's repository, and also to make new releases.
You have logged in to npm on your terminal with npm login (necessary to publish packages to npm).
Make sure to start with a "clean slate" by running npx lerna clean and then npm run setup in the root MarkBind directory.
Increment the version number by running npx lerna version --no-push --exact. Which to increment (patch, minor or major) depends on what PRs are merged for the new version, which means you must know beforehand about the changes.
Double check that the PRs are correctly set to the milestone for the new version. Review the definition of SEMVER and the impact of the PRs.
We will specify updated version numbers exactly to ensure that each version will consistently fetch the same versioned internal packages.
The end result of this command is version commit with an appropriate tag. We will make use of the generated tag and commit message later.
Do not push this commit to the remote repository yet.
Build the core-web package bundle by executing npm run build:web in the root directory, after which you should see changes in the bundles located in packages/core-web/dist.
Take a peek at the diff for the bundles to see if there are any strange changes.
If there were no changes to the files in packages/core-web or packages/vue-components since the last release of MarkBind, you may observe no changes. Simply proceed with the rest of the steps.
If there are font files in the diff, and you are sure that there were no changes to the font files, you may ignore & discard the changes.
Typically, the following files will be updated:
+
Switch to the master branch locally.
Run git reset --hard HEAD~1.
Run git push --force.
Create a new PR from the previous PR branch and merge the PR with the correct merge strategy.
Note: The above should be performed with caution as force pushing rewrites the Git history, which might cause conflicts with any on-going work. You would also need write/push access to master.
For GitHub, you need rights to push to master branch and make new releases.
To check if you can make a new release and push to master branch, go to the release page and check for the "Draft a new release" button.
+If missing, you may not have permissions for a release.
To check if you are in the MarkBind organization, go to your npm profile and check if MarkBind is listed under organizations.
+
+Example of profile that has been added to Markbind organisation
+
There should be 4 packages listed under the organization, markbind-cli, @markbind/core, @markbind/core-web and @markbind/vue_components.
Notably, the first three are packages that we publish every release while the last one has since become a private package consumed internally.
Login to your npm account in your terminal by running npm login.
Make sure to start with a "clean slate" by running npx lerna clean and then npm run setup in the root MarkBind directory.
Increment the version number by running npx lerna version --no-push --exact. Which to increment (patch, minor or major) depends on what PRs are merged for the new version, which means you must know beforehand about the changes.
Double check that the PRs are correctly set to the milestone for the new version. Review the definition of SEMVER and the impact of the PRs.
We will specify updated version numbers exactly to ensure that each version will consistently fetch the same versioned internal packages.
The end result of this command is version commit with an appropriate tag. We will make use of the generated tag and commit message later.
Do not push this commit to the remote repository yet.
Build the core-web package bundle by executing npm run build:web in the root directory, after which you should see changes in the bundles located in packages/core-web/dist.
Take a peek at the diff for the bundles to see if there are any strange changes.
If there were no changes to the files in packages/core-web or packages/vue-components since the last release of MarkBind, you may observe no changes. Simply proceed with the rest of the steps.
If there are font files in the diff, and you are sure that there were no changes to the font files, you may ignore & discard the changes.
Typically, the following files will be updated:
markbind.min.js
markbind.min.css
vuecommonappfactory.min.js
vuecommonappfactory.min.css
Rebuild the test files using npm run updatetest
When rebuilding the expected test files, ensure that only the version number is updated for the output .html files. For example, this is correct:
diff --git a/test/functional/test_site/expected/bugs/index.html b/test/functional/test_site/expected/bugs/index.htmlindex 779f279..bb3c602 100644--- a/test/functional/test_site/expected/bugs/index.html
@@ -260,7 +264,7 @@
to include 'tlylt' in .all-contributorsrc and README.md.
The senior dev approves and merge the automatic PR.
The senior dev deletes the automatic PR.
Note that:
All contribution types specified here can be used.
E.g. code, doc, mentoring, question, test, bug
Multiple contribution types can be included at once or updated later on.
E.g. "@all-contributors please add tlylt for code, doc"
Contribution types can be updated later on.
-
E.g "@all-contributors please add tlylt for code"
Some time later: "@all-contributors please add tlylt for doc"
Result: 'tlylt' will be updated to have both icons(code and doc)