ganjoor software changelog
This commit is contained in:
parent
601c29af36
commit
1351679a21
@ -147,10 +147,69 @@
|
||||
<svg class="footer-icon" height="14px" viewBox="0 -960 960 960" width="14px"><path d="M480-80q-139-35-229.5-159.5T160-516v-244l320-120 320 120v244q0 152-90.5 276.5T480-80Zm0-84q97-30 162-118.5T718-480H480v-315l-240 90v207q0 7 2 18h238v316Z" /></svg> حریم خصوصی
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="javascript:void(0);" onclick="openChangelogModal();" role="button" title="تازههای نرمافزار">
|
||||
<svg class="footer-icon" height="14px" viewBox="0 -960 960 960" width="14px"><path d="M480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 20-2 39t-6 39l-76-76q1-11 1.5-21t.5-21q0-134-93-227t-227-93q-134 0-227 93t-93 227q0 134 93 227t227 93q11 0 21-.5t21-1.5l76 76q-20 4-39 6t-39 2Zm312 40L622-210q-14 8-29.5 13T560-192q-40 0-68-28t-28-68q0-40 28-68t68-28q40 0 68 28t28 68q0 9-1.5 17t-4.5 15l124 124-64 64ZM440-480v-280h80v247l180 108-40 68-220-143Z" /></svg> تازههای نرمافزار
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="changelog-modal" class="modal">
|
||||
<span onclick="document.getElementById('changelog-modal').style.display='none'"
|
||||
class="close" title="بستن">×</span>
|
||||
<div class="modal-content animate changelog-modal-content">
|
||||
<h2 class="changelog-title">تازههای نرمافزار گنجور</h2>
|
||||
<div id="changelog-list" class="changelog-list">
|
||||
<div class="changelog-loading">در حال بارگذاری...</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
var changelogLoaded = false;
|
||||
|
||||
function openChangelogModal() {
|
||||
document.getElementById('changelog-modal').style.display = 'block';
|
||||
if (!changelogLoaded) {
|
||||
loadChangelog();
|
||||
}
|
||||
}
|
||||
|
||||
function loadChangelog() {
|
||||
var listEl = document.getElementById('changelog-list');
|
||||
fetch('/json/changelog.json', { cache: 'no-store' })
|
||||
.then(function (response) {
|
||||
if (!response.ok) {
|
||||
throw new Error('network response was not ok');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(function (items) {
|
||||
changelogLoaded = true;
|
||||
if (!items || items.length === 0) {
|
||||
listEl.innerHTML = '<div class="changelog-loading">موردی برای نمایش وجود ندارد.</div>';
|
||||
return;
|
||||
}
|
||||
// newest first
|
||||
var reversed = items.slice().reverse();
|
||||
var html = '';
|
||||
for (var i = 0; i < reversed.length; i++) {
|
||||
var item = reversed[i];
|
||||
html += '<div class="changelog-item">'
|
||||
+ '<span class="changelog-date">' + item.date + '</span>'
|
||||
+ '<span class="changelog-desc">' + item.description + '</span>'
|
||||
+ '</div>';
|
||||
}
|
||||
listEl.innerHTML = html;
|
||||
})
|
||||
.catch(function () {
|
||||
listEl.innerHTML = '<div class="changelog-loading">در بارگذاری فهرست تغییرات خطایی رخ داد.</div>';
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<a href="javascript:toggleColorScheme();" id="theme-toggle" title="تغییر پوسته">
|
||||
<span id="icon-sun"><svg height="24px" viewBox="0 -960 960 960" width="24px"><path d="M440-760v-160h80v160h-80Zm266 110-55-55 112-115 56 57-113 113Zm54 210v-80h160v80H760ZM440-40v-160h80v160h-80ZM254-652 140-763l57-56 113 113-56 54Zm508 512L651-255l54-54 114 110-57 59ZM40-440v-80h160v80H40Zm157 300-56-57 112-112 29 27 29 28-114 114Zm283-100q-100 0-170-70t-70-170q0-100 70-170t170-70q100 0 170 70t70 170q0 100-70 170t-170 70Z" /></svg></span>
|
||||
<span id="icon-moon"><svg height="24px" viewBox="0 -960 960 960" width="24px"><path d="M480-120q-150 0-255-105T120-480q0-150 105-255t255-105q14 0 27.5 1t26.5 3q-41 29-65.5 75.5T444-660q0 90 63 153t153 63q55 0 101-24.5t75-65.5q2 13 3 26.5t1 27.5q0 150-105 255T480-120Z" /></svg></span>
|
||||
|
||||
@ -1440,6 +1440,59 @@ ol {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
/* Changelog modal */
|
||||
.changelog-modal-content {
|
||||
max-width: 640px;
|
||||
max-height: 80vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.changelog-title {
|
||||
color: var(--accent-text);
|
||||
margin: 4px 0 10px 0;
|
||||
font-size: 1.1em;
|
||||
border-bottom: 1px dashed var(--border-gold);
|
||||
padding-bottom: 8px;
|
||||
}
|
||||
|
||||
.changelog-list {
|
||||
overflow-y: auto;
|
||||
font-size: 0.75em;
|
||||
}
|
||||
|
||||
.changelog-loading {
|
||||
text-align: center;
|
||||
color: var(--accent-text);
|
||||
padding: 20px 0;
|
||||
}
|
||||
|
||||
.changelog-item {
|
||||
display: flex;
|
||||
align-items: baseline;
|
||||
gap: 10px;
|
||||
padding: 8px 4px;
|
||||
border-bottom: 1px dashed var(--border-gold);
|
||||
}
|
||||
|
||||
.changelog-item:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.changelog-date {
|
||||
flex: 0 0 auto;
|
||||
color: var(--lapis);
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.changelog-desc {
|
||||
flex: 1 1 auto;
|
||||
color: var(--accent-text);
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* Add Zoom Animation */
|
||||
.animate {
|
||||
-webkit-animation: animatezoom 0.6s;
|
||||
|
||||
1406
GanjooRazor/wwwroot/json/changelog.json
Normal file
1406
GanjooRazor/wwwroot/json/changelog.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -28,3 +28,9 @@ it needs a downloaded ONNX model and published embeddings data on top of the usu
|
||||
covering the actual problems hit building this feature, not a generic checklist — worth reading
|
||||
before assuming something new is broken.
|
||||
|
||||
## Changelog
|
||||
|
||||
The user-facing changelog shown in the site's footer ("تازههای نرمافزار") is generated and
|
||||
maintained from git history. See **[docs/CHANGELOG_PROCESS.md](docs/CHANGELOG_PROCESS.md)** for
|
||||
the JSON format and the process for adding new entries.
|
||||
|
||||
|
||||
62
docs/CHANGELOG_PROCESS.md
Normal file
62
docs/CHANGELOG_PROCESS.md
Normal file
@ -0,0 +1,62 @@
|
||||
# فرایند نگهداری فهرست تغییرات (Changelog)
|
||||
|
||||
فایل `GanjooRazor/wwwroot/json/changelog.json` فهرست تغییرات کاربرپسند این
|
||||
پروژه را به زبان فارسی نگه میدارد و در پاورقی سایت («تازههای نرمافزار»)
|
||||
نمایش داده میشود.
|
||||
|
||||
## ساختار فایل
|
||||
|
||||
فایل یک آرایهٔ JSON است که هر عضو آن به این شکل است:
|
||||
|
||||
```json
|
||||
{
|
||||
"date": "1405/07/05",
|
||||
"description": "توضیح کاربرپسند و فارسیِ تغییر، به شکل یک جملهٔ کوتاه."
|
||||
}
|
||||
```
|
||||
|
||||
- `date`: تاریخ شمسی به قالب `yyyy/mm/dd`.
|
||||
- `description`: توضیح فارسیِ روان (نه ترجمهٔ تحتاللفظیِ پیام Commit)، مناسب
|
||||
برای خوانندهای که کاربر نهایی سایت است، نه توسعهدهنده.
|
||||
- آرایه باید به ترتیب **صعودی** (قدیم به جدید) در فایل نگه داشته شود؛ نمایش
|
||||
معکوس (جدید به قدیم) در سمت کلاینت با جاوااسکریپت (`_FooterPartial.cshtml`)
|
||||
انجام میشود.
|
||||
|
||||
فقط تغییراتی که یک کاربر عادی سایت متوجهٔ آن میشود باید وارد این فایل شوند:
|
||||
ویژگیهای جدید، تغییرات محسوس رابط کاربری، رفع اشکالهای قابلمشاهده،
|
||||
بهبودهای کارایی محسوس و غیره. تغییرات صرفاً فنی (ریفکتور، بروزرسانی
|
||||
وابستگیها، CI/CD، migrationهای دیتابیس، تمیزکاری کد، تایپو در کد) نباید در
|
||||
این فایل بیایند.
|
||||
|
||||
## بهروزرسانی فهرست تغییرات پس از هر دوره از توسعه
|
||||
|
||||
از آنجا که نوشتن توضیح فارسیِ طبیعی و تشخیص اینکه کدام Commitها واقعاً برای
|
||||
کاربر اهمیت دارند به قضاوت نیاز دارد (نه صرفاً یک تبدیل خودکار متن)، روش
|
||||
پیشنهادی برای بهروزرسانی، استفاده از دستیار هوش مصنوعی (مثلاً Claude) است:
|
||||
|
||||
1. لیست Commitهای جدید را از زمان آخرین بهروزرسانی فهرست تغییرات بگیرید:
|
||||
|
||||
```bash
|
||||
git log --no-merges --date=format:'%Y-%m-%d' --pretty=format:'%H|%ad|%s' \
|
||||
--since="<تاریخ آخرین بهروزرسانی>" > new_commits.txt
|
||||
```
|
||||
|
||||
2. این فایل را همراه با فایل فعلی `changelog.json` به دستیار بدهید و از آن
|
||||
بخواهید:
|
||||
- Commitهای بیاهمیت برای کاربر نهایی را کنار بگذارد.
|
||||
- Commitهای مرتبط با یک ویژگی/رفعاشکال را در یک مورد ادغام کند.
|
||||
- برای هر مورد باقیمانده یک توضیح فارسیِ طبیعی و کوتاه بنویسد.
|
||||
- تاریخ میلادی هر Commit را به شمسی (`yyyy/mm/dd`) تبدیل کند.
|
||||
- موارد جدید را در انتهای آرایهٔ موجود در `changelog.json` اضافه کند (نه
|
||||
جایگزینی کل فایل)، با حفظ ترتیب صعودی تاریخ.
|
||||
|
||||
3. فایل بهروزشده را جایگزین `GanjooRazor/wwwroot/json/changelog.json` کنید و
|
||||
کامیت نمایید.
|
||||
|
||||
## نمایش در سایت
|
||||
|
||||
پاورقی سایت (`GanjooRazor/Pages/Shared/_FooterPartial.cshtml`) یک لینک با
|
||||
عنوان «تازههای نرمافزار» دارد که با کلیک، پنجرهٔ Modal مربوطه را باز کرده و
|
||||
فایل `changelog.json` را با `fetch` بارگذاری میکند. لیست بهصورت معکوس
|
||||
(جدیدترین مورد در بالا) نمایش داده میشود. سبکهای مربوط به این بخش در
|
||||
`GanjooRazor/wwwroot/css/p8.css` (کلاسهای `.changelog-*`) تعریف شدهاند.
|
||||
Loading…
Reference in New Issue
Block a user