fix(update): pertahankan .env.gowa + hapus checkout pathspec
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:
oxpoe
2026-11-05 17:53:14 +07:00
parent 1e3067989a
commit 280a8ac9a6
6 changed files with 13 additions and 8 deletions

1
.gitignore vendored
View File

@@ -3,6 +3,7 @@ node_modules/
# Environment and Secrets # Environment and Secrets
.env .env
.env.gowa
*.env *.env
*.jks *.jks
*.keystore *.keystore

View File

@@ -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

View File

@@ -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>

View File

@@ -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": {

View File

@@ -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);

View File

@@ -1 +1 @@
0.5.14 0.5.15