Skip to content

Commit 84373d9

Browse files
committed
Merge branch 'main' of github.com:devforth/adminforth into next
2 parents 45abeca + aa27dc1 commit 84373d9

File tree

7 files changed

+43
-25
lines changed

7 files changed

+43
-25
lines changed

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,16 @@ npx adminforth create-app
3939

4040
<a href="https://adminforth.dev/docs/tutorial/Customization/customPages">Custom Dashboard</a>
4141
<br/>
42-
<img src="https://github.com/user-attachments/assets/aa899196-f7f3-4582-839c-2267f2e9e197" alt="AdminForth Dashboard demo" width="500px" />
42+
<img src="https://github.com/user-attachments/assets/aa899196-f7f3-4582-839c-2267f2e9e197" alt="AdminForth Dashboard demo" width="80%" />
43+
4344
<a href="https://adminforth.dev/docs/tutorial/Plugins/chat-gpt">Chat-GPT plugin</a>
4445
<br/>
45-
<img src="https://github.com/user-attachments/assets/cfa17cbd-3a53-4725-ab46-53c7c7666028" alt="AdminForth ChatGPT demo" width="500px" />
46+
47+
<img src="https://github.com/user-attachments/assets/cfa17cbd-3a53-4725-ab46-53c7c7666028" alt="AdminForth ChatGPT demo" width="80%" />
48+
4649
<a href="https://adminforth.dev/docs/tutorial/Plugins/upload/#image-generation">Image DALEE Generation</a>
4750
<br/>
48-
<img src="https://github.com/user-attachments/assets/b923e044-7e29-46ff-ab91-eeca5eee2b0a" alt="AdminForth DALE-E image generator demo" width="500px">
51+
<img src="https://github.com/user-attachments/assets/b923e044-7e29-46ff-ab91-eeca5eee2b0a" alt="AdminForth DALE-E image generator demo" width="80%">
4952

5053

5154

adminforth/documentation/blog/2025-01-19-how-adminforth-manages-version/index.md

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
---
2-
slug: how-we-manage-versions
3-
title: Why manual releases and release notes is a chaos and how to fix it
2+
slug: why-manual-release-notes-and-versions-are-a-chaos-and-how-to-fix-it
3+
title: Why manual Release Notes and Versions are a chaos and how to fix it
44
description: Learn what profits you can get from automatic versioning and learn how simply you can configure it!
55
authors: ivanb
6-
tags: [git, versioning]
6+
tags: [git, versioning, npm]
7+
image: "/ogs/autover.jpg"
78
---
89

910
I have a feeling that after first ~600 versions of Adminforth we faced all possible issues with manual versioning and release notes.
@@ -29,70 +30,70 @@ If you are not familiar with pre-release versions, I can explain it on simple ex
2930
If you have version `1.2.3` in your `package.json` and you run `npm version patch` it will bump version to `1.2.4`. If you run it again it will bump version to `1.2.5`.
3031
If you have version `1.2.3` and run `npm version prerelease --preid=next` it will bump version to `1.2.4-next.0`. If you run it again it will bump version to `1.2.4-next.1`. If you run `npm version patch` now it will release version `1.2.4`, hoever if at last step you run `npm version minor` it would release version `1.3.0`.
3132

32-
Please pay attention that `npm` is pretty smart and aligned with normal software release cycle -- once you run `npm version pre-release` on stable version, it understands that you start working on new version and will bump patch version. Once you run `npm version patch` at pre-release version, it will release it as stable version without bumping patch number.
33+
Please pay attention that `npm` is pretty smart and aligned with normal software release cycle once you run `npm version pre-release` on stable version, it understands that you start working on new version and will bump patch version. Once you run `npm version patch` at pre-release version, it will release it as stable version without bumping patch number.
3334

3435
This is very useful because we can collect features and fixes in `next` version without releasing them to `latest` version, so users who do `npm install adminforth` will not get new experimental features and fixes, but thouse who want to test them early can do `npm install adminforth@next`. Our team also using `next` for commercial projects to test new features so in the end of the day we have more stable `latest` version.
3536

3637
In new automatic release process we preserved this approach, but made it in separate git branches.
3738

3839
Once we collected enough features and fixes in `next`, we were doing a release to `latest` version, and at this time we did release documentation.
3940

40-
### Issue one -- easy to forget add something to CHANGELOG.md
41+
### Issue one: easy to forget add something to CHANGELOG.md
4142

4243
So when I merged PRs to `main` branch, I had to check commits and write them to CHANGELOG.md.
4344

4445
At this point I wasted time to understand how to call the change in CHANGELOG.md, and categorize it as `Added`, `Changed`, `Fixed`, `Removed`, `Security`.
4546

4647
Also there was a chance that I will skip some commit, or will understand wrong what it was about.
4748

48-
### Issue two -- CHANGELOG.md might be forgot to be changed before release as all
49+
### Issue two: CHANGELOG.md might be forgot to be changed before release as all
4950

5051
There was a chance that I will forget to update `CHANGELOG.md` at all. I merged PRs, I am hurry and doing release.
5152

5253
Sometimes I will soon understand that I forgot to update it and will push it to GitHub. It will born another dump commit message like "Update a CHANGELOG.md".
5354

5455
Also I am not sure that users are looking into `main` branch to see CHANGELOG, probably they see it in npmjs.com.
5556

56-
### Issue three -- lack of GitHub releases or need to maintain both
57+
### Issue three: lack of GitHub releases or need to maintain both
5758

5859
We did not have GitHub releases at all at that time. We had only tags. And tags were applied only after release.
5960

6061
But honestly, when I am by myself working with some pacakge, first try to find GitHub releases, though CHANGELOG.md.
6162

6263
So if I would add GitHub releases, I would have to do a lot of clicks or would need some script / CLI to create release notes. This process would have similar issues as with CHANGELOG.md.
6364

64-
### Issue four -- manual tags
65+
### Issue four: manual tags
6566

6667
Since release was manual from my PC there was a chance that I will do some minor fix, will forget to commit it, then will do release and release script will add tag to previous, irrelevant commit.
6768

6869
In such projects with manual tags, there is only one reliabile way for package user to to check what is difference in source code between two versions: using some tool like https://npmdiff.dev/ and not rely on git and CHANGELOG
6970

7071
Since git tags were applied only after release and there again was a chance that I will forget to push them to GitHub with a release.
7172

72-
### Issue five -- dump commits
73+
### Issue five: dump commits
7374

7475
Since with every manual release we updated CHANGELOG.md and updated version in `pacakge.json` every time, we had to do a commit.
7576

7677
So it borned a lot of dump commits like "Update CHANGELOG.md", "Update version to 1.2.3", "Update version to 1.2.4", "Update version to 1.2.5".
7778

7879
Sometime it wass forgot to be commited separately and was commited with other changes in some fix which is even worsen.
7980

80-
### Issue six -- releae delay and bus-factor
81+
### Issue six: releae delay and bus-factor
8182

8283
So if I was busy new features were waiting for release, becuase only I had access to do releases.
8384

8485
Sonner I passed access to some of my colleagues to do releases but from time to time it caused state desync and release issues between our PCs if someone forgot to push something to GitHub after release.
8586

8687
Even couple of release contrubuters are onboard, it still takes a time to do all the stuff with Changelog, version, tags, etc, so it delays release.
8788

88-
### Issue seven -- lack of pre-release versions changes
89+
### Issue seven: lack of pre-release versions changes
8990

9091
While we releasing to `next` we added items under one version in CHANGELOG for simplicity. It would be another extra time to add every `next` version in CHANGELOG and describe whole markdown for it.
9192

9293
So user was not able to distinguish `1.5.0-next.0` from `1.5.0-next.1` in CHANGELOG, which was not an issue for `latest` users but issue for `next` users.
9394

9495

95-
## Semantic-release -- what is it and how it works
96+
## Semantic-release: what is it and how it works
9697

9798
`semantic-release` is a tool that solved all issues above. Basically it is a CLI tool that you run on your CI/CD server on every push to your repository.
9899

@@ -215,7 +216,7 @@ We will use Woodpecker CI for this example. Woodpecker is a free and open-source
215216

216217
Create a file `.woodpecker.yml` in `deploy` directory:
217218

218-
```yaml title="deploy/.woodpecker.yml"
219+
```yml title="deploy/.woodpecker.yml"
219220
clone:
220221
git:
221222
image: woodpeckerci/plugin-git
@@ -368,7 +369,7 @@ npm i -D semantic-release-slack-bot
368369

369370
Into "release" section of `package.json` add slack plugin:
370371

371-
```
372+
```json
372373
"plugins": [
373374
"@semantic-release/commit-analyzer",
374375
"@semantic-release/release-notes-generator",
@@ -403,7 +404,7 @@ Add it to Woodpecker as secret `SLACK_WEBHOOK` environment variable.
403404

404405
Also add this secterd to `.woodpecker.yml`:
405406

406-
```yaml title="deploy/.woodpecker.yml"
407+
```yml title="deploy/.woodpecker.yml"
407408
secrets:
408409
- GITHUB_TOKEN
409410
- NPM_TOKEN
@@ -425,3 +426,17 @@ Since previusly we used CHANGELOG.md I thought it would be good to have it in pr
425426

426427
So we ended with a simple [link to GitHub releases](https://github.com/devforth/adminforth/blob/main/CHANGELOG.md)
427428

429+
## Is it all that good?
430+
431+
Well, there are no perfect approaches in the world.
432+
433+
Of course `semantic-release` has some cons.
434+
435+
First of all, while you can write a commit messages without any prefix and they will not be included in release, you still have to follow strict commit message format when you are releasing feature or fix. And you don't have to forget to use this format. Instead of making manual forming of release notes which is done by one person, now every developer in team has to follow the same format and has to write clear commit messages.
436+
437+
And there are couple of bad things with last points:
438+
- It is not so easy to modify commit message once it is pushed to GitHub, so commit writing becomes one of the most critical parts of development process where you have to be very careful.
439+
- Commit message should be understood not only by developers of framework, but also by users of framework. And some developers might think that these are two absolutely different dementions of understanding: first one is for developers, second one is for users. But in fact, at AdminForth, we think that set of user-friendly commit messages is a very small subset of set of developer-friendly commit messages. So if you write user-friendly commit messages, there is no chance that developers will not understand them.
440+
441+
442+
You are still fine with merging incoming PRs and ignore their commit messages becuse GitHub allows to edit commit message before merging ( using `Squash and merge` option )

adminforth/documentation/docusaurus.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import type * as Preset from '@docusaurus/preset-classic';
55

66
const config: Config = {
77
title: 'Vue & Node admin panel framework',
8-
tagline: 'Start developing backoffice using open-source admin framework on Tailwind UI and extend it with Vue3',
8+
tagline: 'Launch robust back-office apps faster with AdminForth’s easy setup and customization',
99
favicon: 'img/favicon.png',
1010

1111
// Set the production url of your site here

adminforth/documentation/src/pages/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ function HomepageHeader() {
8989
<header className={clsx('hero', styles.heroBanner)}>
9090
<div className="container" >
9191
<Heading as="h1" className={clsx('hero__title', styles.heroBannerTitle)} >
92-
Create admin panels faster on Node and Vue with AdminForth framework
92+
The Free, Open-Source Admin Framework for Node, Vue & Tailwind
9393
</Heading>
9494
<p className="hero__subtitle">{siteConfig.tagline}</p>
9595

1.12 MB
Loading

live-demo/app/package-lock.json

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

live-demo/app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"@adminforth/two-factors-auth": "^1.0.21",
2626
"@adminforth/upload": "^1.0.25",
2727
"@prisma/client": "^6.1.0",
28-
"adminforth": "^1.5.11",
28+
"adminforth": "^1.6.4",
2929
"better-sqlite3": "^10.0.0",
3030
"express": "^4.19.2"
3131
},

0 commit comments

Comments
 (0)