53 lines
3.1 KiB
Markdown
53 lines
3.1 KiB
Markdown
# نسخه و پیام «چه چیزی تغییر کرد»
|
|||
|
|
|
||
|
|
هر بار که پنل یا اپها ساخته میشوند، شمارهی نسخه **خودش بالا میرود**؛ شماره همان
|
||
|
|
تعداد کامیتهای شاخه است و فایلی برای دستی بالا بردن ندارد.
|
||
|
|
|
||
|
|
بعد از انتشار، هر کسی که برنامه را باز دارد حداکثر تا ۵ دقیقه، یا همان لحظهای که
|
||
|
|
دوباره به برنامه برمیگردد، پنجرهی «نسخهی تازه آماده است» را میبیند:
|
||
|
|
|
||
|
|
- فهرست تغییراتِ **همان بخش** نشان داده میشود: اپ مشتری تغییرات اپ را میبیند و
|
||
|
|
پنل تغییرات پنل را.
|
||
|
|
- پنجره بسته نمیشود؛ تنها راه، دکمهی «بهروزرسانی» است.
|
||
|
|
- با زدن دکمه، حافظهی نهان برنامه پاک و صفحه دوباره بار میشود.
|
||
|
|
- ورود کاربر، سبد خرید و تنظیمات **پاک نمیشوند**.
|
||
|
|
|
||
|
|
## متن تغییرات از کجا میآید؟
|
||
|
|
|
||
|
|
از پیام کامیتها. متن فنی و انگلیسی **هیچوقت** به کاربر نشان داده نمیشود؛ فقط
|
||
|
|
خطهایی که با یکی از این برچسبها شروع شوند:
|
||
|
|
|
||
|
|
| برچسب | کجا نشان داده میشود |
|
||
|
|
|---|---|
|
||
|
|
| `اپ:` | هر دو اپ مشتری |
|
||
|
|
| `اپ۱:` | فقط اپ نسخهی ۱ |
|
||
|
|
| `اپ۲:` | فقط اپ نسخهی ۲ |
|
||
|
|
| `پنل:` | پنل مدیریت |
|
||
|
|
|
||
|
|
نمونهی پیام کامیت:
|
||
|
|
|
||
|
|
```
|
||
|
|
fix(cart): keep the cart when the price refreshes
|
||
|
|
|
||
|
|
اپ: سبد خرید با بهروز شدن قیمت دیگر خالی نمیشود.
|
||
|
|
پنل: در فهرست سفارشها، تاریخ ثبت دقیق نشان داده میشود.
|
||
|
|
```
|
||
|
|
|
||
|
|
### چطور بنویسیم
|
||
|
|
|
||
|
|
- برای **کاربر** بنویسید، نه برنامهنویس: «چه چیزی برای او فرق کرده».
|
||
|
|
- یک خط کوتاه برای هر تغییر.
|
||
|
|
- کامیتی که کاربر چیزی از آن نمیبیند (تمیزکاری، تست، تغییر داخلی) **برچسب نمیخواهد**.
|
||
|
|
- اگر در یک انتشار هیچ خطِ برچسبداری نباشد، پنجره فقط «بهبودها و رفع اشکالها»
|
||
|
|
را نشان میدهد.
|
||
|
|
|
||
|
|
## از نظر فنی
|
||
|
|
|
||
|
|
- `scripts/app-version.mjs` موقع ساخت، شماره و یادداشتها را درمیآورد و
|
||
|
|
`version.json` را کنار برنامه میگذارد.
|
||
|
|
- `useAppUpdate.ts` در هر برنامه آن فایل را بدون حافظهی نهان میخواند و با شمارهی
|
||
|
|
خودش مقایسه میکند.
|
||
|
|
- تنظیم nginx هر سه برنامه: `index.html`، `sw.js` و `version.json` هرگز در مرورگر
|
||
|
|
نگه داشته نمیشوند. پیشتر `sw.js` شش ماه نگه داشته میشد و میتوانست مرورگر را
|
||
|
|
روی نسخهی قدیمی نگه دارد.
|