fix(update): pertahankan .env.gowa + hapus checkout pathspec
All checks were successful
CI / test (push) Successful in 3m35s
All checks were successful
CI / test (push) Successful in 3m35s
- .env.gowa masuk preserved entries dan clean exclude - settings.json/database tidak di-checkout (tidak dilacak git) - .env.gowa di .gitignore - versi 0.5.15
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -3,6 +3,7 @@ node_modules/
|
|||||||
|
|
||||||
# Environment and Secrets
|
# Environment and Secrets
|
||||||
.env
|
.env
|
||||||
|
.env.gowa
|
||||||
*.env
|
*.env
|
||||||
*.jks
|
*.jks
|
||||||
*.keystore
|
*.keystore
|
||||||
|
|||||||
@@ -2,6 +2,13 @@
|
|||||||
|
|
||||||
Format mengikuti [Keep a Changelog](https://keepachangelog.com/) dan [Semantic Versioning](https://semver.org/).
|
Format mengikuti [Keep a Changelog](https://keepachangelog.com/) dan [Semantic Versioning](https://semver.org/).
|
||||||
|
|
||||||
|
## [0.5.15] — 2026-11-05 — "update-keep-env"
|
||||||
|
|
||||||
|
### Diperbaiki
|
||||||
|
- Update aplikasi tidak lagi menghapus `.env.gowa` (kredensial/webhook GOWA) saat `git clean`.
|
||||||
|
- Log update tidak lagi menampilkan error `pathspec 'settings.json'/'database'` — file yang tidak dilacak git tidak di-checkout.
|
||||||
|
- `.env.gowa` ditambahkan ke `.gitignore`.
|
||||||
|
|
||||||
## [0.5.14] — 2026-11-05 — "ai-test"
|
## [0.5.14] — 2026-11-05 — "ai-test"
|
||||||
|
|
||||||
### Ditambahkan
|
### Ditambahkan
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://img.shields.io/badge/lisensi-ISC-ADFF2F" alt="Lisensi: ISC">
|
<img src="https://img.shields.io/badge/lisensi-ISC-ADFF2F" alt="Lisensi: ISC">
|
||||||
<img src="https://img.shields.io/badge/versi-0.5.14_ai--test-ADFF2F" alt="Versi 0.5.14 (ai-test)">
|
<img src="https://img.shields.io/badge/versi-0.5.15_update--env-ADFF2F" alt="Versi 0.5.15 (update-keep-env)">
|
||||||
<img src="https://img.shields.io/badge/Node.js-%E2%89%A520-339933" alt="Node.js >= 20">
|
<img src="https://img.shields.io/badge/Node.js-%E2%89%A520-339933" alt="Node.js >= 20">
|
||||||
<img src="https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white" alt="Docker">
|
<img src="https://img.shields.io/badge/docker-ready-2496ED?logo=docker&logoColor=white" alt="Docker">
|
||||||
<a href="https://demo-openisp.oxpoe.xyz"><img src="https://img.shields.io/badge/demo-live-ADFF2F?logo=googlechrome&logoColor=black" alt="Demo"></a>
|
<a href="https://demo-openisp.oxpoe.xyz"><img src="https://img.shields.io/badge/demo-live-ADFF2F?logo=googlechrome&logoColor=black" alt="Demo"></a>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "open-isp",
|
"name": "open-isp",
|
||||||
"version": "0.5.14",
|
"version": "0.5.15",
|
||||||
"description": "OPEN-ISP \u2014 sistem billing & manajemen ISP open-source (PWA pelanggan, multi-OLT, RADIUS, WhatsApp, QRIS)",
|
"description": "OPEN-ISP \u2014 sistem billing & manajemen ISP open-source (PWA pelanggan, multi-OLT, RADIUS, WhatsApp, QRIS)",
|
||||||
"main": "app-customer.js",
|
"main": "app-customer.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -4629,6 +4629,7 @@ router.post('/update/run', requireAdminSession, restrictToAdmin, (req, res) => {
|
|||||||
const preservedEntries = [
|
const preservedEntries = [
|
||||||
{ label: 'settings.json', relativePath: 'settings.json', cleanExclude: 'settings.json' },
|
{ label: 'settings.json', relativePath: 'settings.json', cleanExclude: 'settings.json' },
|
||||||
{ label: '.env', relativePath: '.env', cleanExclude: '.env' },
|
{ label: '.env', relativePath: '.env', cleanExclude: '.env' },
|
||||||
|
{ label: '.env.gowa', relativePath: '.env.gowa', cleanExclude: '.env.gowa' },
|
||||||
{ label: 'database', relativePath: 'database', cleanExclude: 'database' },
|
{ label: 'database', relativePath: 'database', cleanExclude: 'database' },
|
||||||
{ label: 'public/uploads', relativePath: 'public/uploads', cleanExclude: 'public/uploads' },
|
{ label: 'public/uploads', relativePath: 'public/uploads', cleanExclude: 'public/uploads' },
|
||||||
{ label: 'public/img', relativePath: 'public/img', cleanExclude: 'public/img' },
|
{ label: 'public/img', relativePath: 'public/img', cleanExclude: 'public/img' },
|
||||||
@@ -4709,11 +4710,7 @@ router.post('/update/run', requireAdminSession, restrictToAdmin, (req, res) => {
|
|||||||
fs.mkdirSync(backupRoot, { recursive: true });
|
fs.mkdirSync(backupRoot, { recursive: true });
|
||||||
backupPreservedEntries();
|
backupPreservedEntries();
|
||||||
|
|
||||||
const resetSettings = runCmd('git', ['checkout', '--', 'settings.json'], repoRoot);
|
// settings.json / database tidak dilacak git; jangan checkout (menghasilkan error pathspec).
|
||||||
pushCmd('git checkout -- settings.json', resetSettings);
|
|
||||||
const resetDb = runCmd('git', ['checkout', '--', 'database'], repoRoot);
|
|
||||||
pushCmd('git checkout -- database', resetDb);
|
|
||||||
|
|
||||||
const resetHard = runCmd('git', ['reset', '--hard', _repo ? 'FETCH_HEAD' : `origin/${branch}`], repoRoot);
|
const resetHard = runCmd('git', ['reset', '--hard', _repo ? 'FETCH_HEAD' : `origin/${branch}`], repoRoot);
|
||||||
pushCmd(`git reset --hard origin/${branch}`, resetHard);
|
pushCmd(`git reset --hard origin/${branch}`, resetHard);
|
||||||
if (!resetHard.ok) throw new Error('Gagal reset ke origin/' + branch);
|
if (!resetHard.ok) throw new Error('Gagal reset ke origin/' + branch);
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
0.5.14
|
0.5.15
|
||||||
Reference in New Issue
Block a user