forgegit 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,340 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ REM --- Detectar soporte ANSI (Windows 10+ / Windows Terminal) ---
8
+ set "ANSI=1"
9
+ for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
10
+
11
+ REM --- Fallback si no hay soporte ANSI ---
12
+ if "!ESC!"=="" set "ANSI=0"
13
+
14
+ if "!ANSI!"=="1" (
15
+ set "C_CYAN=!ESC![36m"
16
+ set "C_BCYAN=!ESC![96m"
17
+ set "C_GREEN=!ESC![32m"
18
+ set "C_YELLOW=!ESC![33m"
19
+ set "C_RED=!ESC![31m"
20
+ set "C_GRAY=!ESC![90m"
21
+ set "C_DIM=!ESC![2m"
22
+ set "C_WHITE=!ESC![97m"
23
+ set "C_RESET=!ESC![0m"
24
+ ) else (
25
+ set "C_CYAN="
26
+ set "C_BCYAN="
27
+ set "C_GREEN="
28
+ set "C_YELLOW="
29
+ set "C_RED="
30
+ set "C_GRAY="
31
+ set "C_DIM="
32
+ set "C_WHITE="
33
+ set "C_RESET="
34
+ )
35
+
36
+ REM --- Help flag ---
37
+ if /i "%~1"=="--help" goto :help
38
+ if /i "%~1"=="-h" goto :help
39
+ if /i "%~1"=="help" goto :help
40
+
41
+ if not exist ".git" (
42
+ echo !C_RED![X]!C_RESET! No hay repositorio Git. Ejecuta: init.cmd
43
+ exit /b 1
44
+ )
45
+
46
+ REM --- Banner ---
47
+ echo.
48
+ echo !C_CYAN!============================================!C_RESET!
49
+ echo !C_BCYAN! AUDITAR!C_RESET! !C_GRAY!- Reportes de cambios!C_RESET!
50
+ echo !C_CYAN!============================================!C_RESET!
51
+ echo.
52
+ echo !C_GRAY!Genera un .txt con los cambios entre dos puntos del!C_RESET!
53
+ echo !C_GRAY!historial. Ideal para auditar con IA o revisar un rango.!C_RESET!
54
+ echo.
55
+
56
+ REM --- 1. Estado actual ---
57
+ for /f "tokens=*" %%b in ('git branch --show-current 2^>nul') do set "BRANCH=%%b"
58
+
59
+ echo !C_CYAN!●!C_RESET! !C_GRAY!Branch:!C_RESET! !C_WHITE!!BRANCH!!C_RESET!
60
+
61
+ git add -A >nul 2>nul
62
+ git diff --cached --quiet
63
+ if errorlevel 1 (
64
+ set "NCH=0"
65
+ for /f %%c in ('git diff --cached --name-only ^| find /c /v ""') do set "NCH=%%c"
66
+ echo !C_CYAN!●!C_RESET! !C_GRAY!Cambios:!C_RESET! !C_YELLOW!!NCH! archivos sin commitear!C_RESET!
67
+ ) else (
68
+ echo !C_CYAN!●!C_RESET! !C_GRAY!Cambios:!C_RESET! !C_GREEN!limpio!C_RESET!
69
+ )
70
+ echo.
71
+
72
+ REM --- 2. Cuantos commits listar ---
73
+ set "LIMIT=10"
74
+ set "INPUT="
75
+ set /p "INPUT= !C_BCYAN!Cuantos commits listar?!C_RESET! !C_GRAY![10 por defecto, T=todos]!C_RESET!: "
76
+ if /i "!INPUT!"=="T" (
77
+ set "LIMIT=9999"
78
+ ) else if not "!INPUT!"=="" (
79
+ set "LIMIT=!INPUT!"
80
+ )
81
+
82
+ REM --- 3. Log a temp ---
83
+ set "TMPLOG=%TEMP%\forge_git_log.txt"
84
+ git log -n !LIMIT! --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:"%%h %%ad %%s" > "!TMPLOG!" 2>nul
85
+
86
+ REM --- 4. Tabla con separadores ---
87
+ echo.
88
+ echo !C_CYAN!-------------------------------------------------------------!C_RESET!
89
+ echo !C_BCYAN! HISTORIAL!C_RESET!
90
+ echo !C_CYAN!-------------------------------------------------------------!C_RESET!
91
+ echo !C_GRAY! IDX FECHA HASH MENSAJE!C_RESET!
92
+ echo !C_CYAN!-------------------------------------------------------------!C_RESET!
93
+
94
+ set "IDX=0"
95
+ set "FIRST=1"
96
+ for /f "delims=" %%L in ('type "!TMPLOG!"') do (
97
+ if "!FIRST!"=="0" (
98
+ echo !C_DIM!!C_GRAY! . . . . . . . . . . . . . . . . . . .!C_RESET!
99
+ )
100
+ set "LINE=%%L"
101
+ set "HASH=!LINE:~0,7!"
102
+ set "DATETIME=!LINE:~8,19!"
103
+ set "MSG=!LINE:~28!"
104
+ set "H_!IDX!=!HASH!"
105
+ echo !C_BCYAN![!IDX!]!C_RESET! !C_GRAY!!DATETIME!!C_RESET! !C_YELLOW!!HASH!!C_RESET! !C_WHITE!!MSG!!C_RESET!
106
+ set /a IDX=IDX+1
107
+ set "FIRST=0"
108
+ )
109
+ del "!TMPLOG!" >nul 2>nul
110
+
111
+ if !IDX! EQU 0 (
112
+ echo !C_RED![X]!C_RESET! No hay commits.
113
+ goto :end
114
+ )
115
+
116
+ echo !C_CYAN!-------------------------------------------------------------!C_RESET!
117
+ echo !C_GRAY!Total: !IDX! commits ^(0 = mas reciente^)!C_RESET!
118
+ echo.
119
+
120
+ REM --- 5. Modos de uso (ordenados por frecuencia) ---
121
+ echo !C_CYAN!-------------------------------------------------------------!C_RESET!
122
+ echo !C_BCYAN! MODOS DE USO!C_RESET!
123
+ echo !C_CYAN!-------------------------------------------------------------!C_RESET!
124
+ echo !C_YELLOW!0,W!C_RESET! !C_GRAY!Comparar ultimo commit vs estado actual!C_RESET! !C_GREEN![recomendado]!C_RESET!
125
+ echo !C_YELLOW!0,3!C_RESET! !C_GRAY!Comparar commit [0] vs commit [3]!C_RESET!
126
+ echo !C_YELLOW!0-3!C_RESET! !C_GRAY!Alias de 0,3!C_RESET!
127
+ echo !C_YELLOW![Enter]!C_RESET! !C_GRAY!Solo ver historial (sin reporte)!C_RESET!
128
+ echo !C_CYAN!-------------------------------------------------------------!C_RESET!
129
+ echo.
130
+
131
+ REM --- 6. Pedir rango ---
132
+ set "RANGE="
133
+ set /p "RANGE= !C_BCYAN!Rango a auditar:!C_RESET! !C_GRAY![Enter=0,W]!C_RESET!: "
134
+ if "!RANGE!"=="" (
135
+ set "RANGE=0,W"
136
+ echo !C_GRAY!Usando default: 0,W!C_RESET!
137
+ )
138
+
139
+ set "A="
140
+ set "B="
141
+ for /f "tokens=1,2 delims=,-" %%a in ("!RANGE!") do (
142
+ set "A=%%a"
143
+ if not "%%b"=="" set "B=%%b"
144
+ )
145
+ if "!A!"=="" (
146
+ echo !C_RED![X]!C_RESET! Rango invalido.
147
+ goto :end
148
+ )
149
+ if "!B!"=="" set "B=!A!"
150
+
151
+ if /i "!A!"=="W" (
152
+ echo !C_RED![X]!C_RESET! El primer valor debe ser indice numerico. Formato: !C_YELLOW!5,W!C_RESET!
153
+ goto :end
154
+ )
155
+ if /i "!A!"=="WORK" (
156
+ echo !C_RED![X]!C_RESET! El primer valor debe ser indice numerico. Formato: !C_YELLOW!5,W!C_RESET!
157
+ goto :end
158
+ )
159
+ if /i "!A!"=="HEAD" (
160
+ echo !C_RED![X]!C_RESET! El primer valor debe ser indice numerico. Formato: !C_YELLOW!5,W!C_RESET!
161
+ goto :end
162
+ )
163
+
164
+ set "HA=!H_%A%!"
165
+ if "!HA!"=="" (
166
+ echo !C_RED![X]!C_RESET! Indice !A! no existe.
167
+ goto :end
168
+ )
169
+
170
+ set "H_NEW="
171
+ set "H_OLD=!HA!"
172
+ set "IS_WORK=0"
173
+
174
+ if /i "!B!"=="W" set "IS_WORK=1"
175
+ if /i "!B!"=="WORK" set "IS_WORK=1"
176
+ if /i "!B!"=="HEAD" set "IS_WORK=1"
177
+
178
+ if "!IS_WORK!"=="1" (
179
+ set "H_OLD=!HA!"
180
+ set "H_NEW="
181
+ set "OLD_IDX=!A!"
182
+ set "NEW_IDX=WORK"
183
+ set "NEW_LABEL=working tree"
184
+ ) else (
185
+ set "HB=!H_%B%!"
186
+ if "!HB!"=="" (
187
+ echo !C_RED![X]!C_RESET! Indice !B! no existe.
188
+ goto :end
189
+ )
190
+ set "OLD_IDX=!A!"
191
+ set "NEW_IDX=!B!"
192
+ if !A! LSS !B! (
193
+ set "OLD_IDX=!B!"
194
+ set "NEW_IDX=!A!"
195
+ )
196
+ set "H_OLD=!H_%OLD_IDX%!"
197
+ set "H_NEW=!H_%NEW_IDX%!"
198
+ set "NEW_LABEL=!H_NEW!"
199
+ )
200
+
201
+ echo.
202
+ echo !C_CYAN!●!C_RESET! !C_GRAY!Comparando:!C_RESET!
203
+ echo !C_GRAY![antiguo]!C_RESET! !C_YELLOW!!H_OLD!!C_RESET! !C_GRAY!^(idx !OLD_IDX!^)!C_RESET!
204
+ if "!IS_WORK!"=="1" (
205
+ echo !C_GRAY![reciente]!C_RESET! !C_GREEN!working tree!C_RESET!
206
+ ) else (
207
+ echo !C_GRAY![reciente]!C_RESET! !C_YELLOW!!H_NEW!!C_RESET! !C_GRAY!^(idx !NEW_IDX!^)!C_RESET!
208
+ )
209
+ echo.
210
+
211
+ REM --- 7. Crear audits/ ---
212
+ if not exist "audits" mkdir "audits"
213
+
214
+ for /f %%i in ('powershell -NoProfile -Command "Get-Date -Format yyyy-MM-dd_HHmmss"') do set "TS=%%i"
215
+
216
+ if "!IS_WORK!"=="1" (
217
+ set "REPORT=audits\audit_!TS!_!OLD_IDX!-WORK.txt"
218
+ ) else (
219
+ set "REPORT=audits\audit_!TS!_!OLD_IDX!-!NEW_IDX!.txt"
220
+ )
221
+
222
+ REM --- 8. Escribir reporte (SIN colores) ---
223
+ (
224
+ echo # Reporte de auditoria
225
+ echo.
226
+ echo # Generado: %DATE% %TIME%
227
+ echo # Proyecto: %CD%
228
+ echo # Rango: !H_OLD! -^> !NEW_LABEL!
229
+ echo.
230
+ if "!IS_WORK!"=="1" (
231
+ echo # Comparar: git diff !H_OLD!
232
+ ) else (
233
+ echo # Comparar: git diff !H_OLD! !H_NEW!
234
+ )
235
+ echo.
236
+ echo # ============================================================
237
+ echo # COMMITS EN EL RANGO
238
+ echo # ============================================================
239
+ echo.
240
+ if "!IS_WORK!"=="1" (
241
+ git log !H_OLD!..HEAD --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:" %%ad %%h %%s"
242
+ ) else (
243
+ git log !H_OLD!^..!H_NEW! --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:" %%ad %%h %%s"
244
+ )
245
+ echo.
246
+ echo.
247
+ echo # ============================================================
248
+ echo # DIFF COMPLETO
249
+ echo # ============================================================
250
+ echo.
251
+ if "!IS_WORK!"=="1" (
252
+ git diff !H_OLD!
253
+ ) else (
254
+ git diff !H_OLD! !H_NEW!
255
+ )
256
+ echo.
257
+ echo.
258
+ echo # ============================================================
259
+ echo # ESTADO ACTUAL (sin commitear)
260
+ echo # ============================================================
261
+ echo.
262
+ git status --short
263
+ ) > "!REPORT!" 2>&1
264
+
265
+ REM --- 9. Resumen ---
266
+ echo !C_GREEN![OK]!C_RESET! Reporte generado
267
+ echo.
268
+ for %%f in ("!REPORT!") do set "SIZE=%%~zf"
269
+ for /f %%l in ('find /c /v "" ^< "!REPORT!"') do set "LINES=%%l"
270
+
271
+ echo !C_GRAY!Archivo:!C_RESET! !C_WHITE!!REPORT!!C_RESET!
272
+ echo !C_GRAY!Tamano:!C_RESET! !C_WHITE!!SIZE! bytes!C_RESET!
273
+ echo !C_GRAY!Lineas:!C_RESET! !C_WHITE!!LINES!!C_RESET!
274
+ echo.
275
+
276
+ REM --- 10. Abrir ---
277
+ where code >nul 2>nul
278
+ if not errorlevel 1 (
279
+ set "OPEN="
280
+ set /p "OPEN= !C_BCYAN!Abrir en VS Code?!C_RESET! !C_GRAY![S/n]!C_RESET!: "
281
+ if /i not "!OPEN!"=="n" (
282
+ echo !C_GRAY!Abriendo...!C_RESET!
283
+ code "!REPORT!"
284
+ )
285
+ ) else (
286
+ echo !C_GRAY![INFO] VS Code CLI no disponible.!C_RESET!
287
+ )
288
+
289
+ echo.
290
+ goto :end
291
+
292
+ REM ============================================================
293
+ REM :help
294
+ REM ============================================================
295
+ :help
296
+ echo.
297
+ echo !C_CYAN!============================================!C_RESET!
298
+ echo !C_BCYAN! AUDITAR!C_RESET! !C_GRAY!- Ayuda!C_RESET!
299
+ echo !C_CYAN!============================================!C_RESET!
300
+ echo.
301
+ echo !C_BCYAN!USO:!C_RESET!
302
+ echo !C_WHITE!auditar.cmd!C_RESET! Modo interactivo
303
+ echo !C_WHITE!auditar.cmd --help!C_RESET! Esta ayuda
304
+ echo.
305
+ echo !C_BCYAN!QUE HACE:!C_RESET!
306
+ echo !C_GRAY!Genera un reporte .txt en audits/ con los cambios!C_RESET!
307
+ echo !C_GRAY!entre dos puntos del historial Git.!C_RESET!
308
+ echo.
309
+ echo !C_BCYAN!MODOS:!C_RESET!
310
+ echo !C_YELLOW!0,W!C_RESET! !C_GRAY!Comparar ultimo commit vs estado actual!C_RESET! !C_GREEN![recomendado]!C_RESET!
311
+ echo !C_YELLOW!0,3!C_RESET! !C_GRAY!Comparar commit 0 vs commit 3!C_RESET!
312
+ echo !C_YELLOW!0-3!C_RESET! !C_GRAY!Alias de 0,3!C_RESET!
313
+ echo !C_YELLOW![Enter]!C_RESET! !C_GRAY!Solo ver historial!C_RESET!
314
+ echo.
315
+ echo !C_BCYAN!EJEMPLOS:!C_RESET!
316
+ echo !C_WHITE!auditar.cmd!C_RESET!
317
+ echo !C_GRAY!Cuantos commits? 10!C_RESET!
318
+ echo !C_GRAY!Rango: 0,W!C_RESET!
319
+ echo !C_GRAY!-> audits\audit_2026-09-12_163200_0-WORK.txt!C_RESET!
320
+ echo.
321
+ echo !C_BCYAN!SALIDA:!C_RESET!
322
+ echo !C_GRAY!Los reportes se guardan en audits\!C_RESET!
323
+ echo !C_GRAY!(excluida del repo por .gitignore^)!C_RESET!
324
+ echo.
325
+ goto :end
326
+
327
+ :end
328
+ call :shell_if_double_click
329
+ endlocal
330
+ exit /b 0
331
+
332
+ :shell_if_double_click
333
+ if "%NO_PAUSE%"=="1" goto :eof
334
+ echo %cmdcmdline% | find /i "%~nx0" >nul
335
+ if errorlevel 1 goto :eof
336
+ echo.
337
+ echo Sesion interactiva. Escribe 'exit' para cerrar.
338
+ echo.
339
+ cmd /k
340
+ goto :eof
@@ -0,0 +1,78 @@
1
+ # ==== Sistema operativo ====
2
+ Thumbs.db
3
+ ehthumbs.db
4
+ Desktop.ini
5
+ $RECYCLE.BIN/
6
+ *.lnk
7
+ .DS_Store
8
+
9
+ # ==== Editor / IDE ====
10
+ .vscode/
11
+ .idea/
12
+ *.swp
13
+ *.swo
14
+ *~
15
+
16
+ # ==== Node.js ====
17
+ node_modules/
18
+ npm-debug.log*
19
+ yarn-debug.log*
20
+ yarn-error.log*
21
+ pnpm-debug.log*
22
+ package-lock.json
23
+ yarn.lock
24
+ pnpm-lock.yaml
25
+
26
+ # ==== Python ====
27
+ __pycache__/
28
+ *.py[cod]
29
+ .Python
30
+ venv/
31
+ .venv/
32
+ env/
33
+ .env
34
+
35
+ # ==== Rust ====
36
+ target/
37
+ Cargo.lock
38
+
39
+ # ==== Go ====
40
+ *.test
41
+ *.out
42
+
43
+ # ==== Build / dist ====
44
+ dist/
45
+ build/
46
+ out/
47
+ .cache/
48
+ .parcel-cache/
49
+ .vite/
50
+
51
+ # ==== Modelos / cache IA ====
52
+ *.onnx
53
+ *.bin
54
+ *.wasm
55
+ *.pb
56
+ models/
57
+ cache/
58
+ .huggingface/
59
+
60
+ # ==== Backups manuales ====
61
+ versiones/
62
+ old_versions/
63
+ backup/
64
+ backups/
65
+
66
+ # ==== Reportes de auditoria ====
67
+ audits/
68
+
69
+ # ==== Temporales ====
70
+ *.log
71
+ *.tmp
72
+ *.bak
73
+ *.orig
74
+
75
+ # ==== Capturas ====
76
+ screenshots/
77
+ capturas/
78
+ test-output/
@@ -0,0 +1,73 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
8
+ if "!ESC!"=="" (
9
+ set "C_CY=" & set "C_BC=" & set "C_GR=" & set "C_YE="
10
+ set "C_RE=" & set "C_GY=" & set "C_WH=" & set "C_RS="
11
+ ) else (
12
+ set "C_CY=!ESC![36m" & set "C_BC=!ESC![96m"
13
+ set "C_GR=!ESC![32m" & set "C_YE=!ESC![33m"
14
+ set "C_RE=!ESC![31m" & set "C_GY=!ESC![90m"
15
+ set "C_WH=!ESC![97m" & set "C_RS=!ESC![0m"
16
+ )
17
+
18
+ if not exist ".git" (
19
+ echo !C_RE![X]!C_RS! No hay repositorio Git. Ejecuta: !C_WH!init.cmd!C_RS!
20
+ exit /b 1
21
+ )
22
+
23
+ git add -A >nul 2>nul
24
+ git diff --cached --quiet
25
+ if not errorlevel 1 (
26
+ echo !C_GY!Sin cambios para guardar.!C_RS!
27
+ exit /b 0
28
+ )
29
+
30
+ echo.
31
+ echo !C_CY!------------------------------------------------------------!C_RS!
32
+ echo !C_BC! GUARDAR!C_RS! !C_GY!- Commit local!C_RS!
33
+ echo !C_CY!------------------------------------------------------------!C_RS!
34
+ echo.
35
+ echo !C_GY!Archivos a guardar:!C_RS!
36
+ git diff --cached --name-only | findstr /n "^"
37
+ echo.
38
+ echo !C_GY!Evita usar: " # : + / , en el mensaje!C_RS!
39
+ echo.
40
+ echo !C_BC!Mensaje del commit!C_RS! !C_GY![Enter = Sin definir]!C_RS!
41
+ set "MSG="
42
+ set /p MSG=
43
+ if "!MSG!"=="" set "MSG=Sin definir"
44
+
45
+ git commit -q -m "!MSG!"
46
+ if errorlevel 1 (
47
+ echo.
48
+ echo !C_RE![X]!C_RS! Commit fallo. Revisa el mensaje.
49
+ exit /b 1
50
+ )
51
+ echo.
52
+ echo !C_GR![OK]!C_RS! Commit: !C_WH!!MSG!!C_RS!
53
+ echo.
54
+
55
+ if "%SKIP_HISTORIAL%"=="1" goto :skip_hist
56
+ set "NO_PAUSE=1"
57
+ call "%~dp0historial.cmd"
58
+ set "NO_PAUSE="
59
+ :skip_hist
60
+
61
+ call :shell_if_double_click
62
+ endlocal
63
+ exit /b 0
64
+
65
+ :shell_if_double_click
66
+ if "%NO_PAUSE%"=="1" goto :eof
67
+ echo %cmdcmdline% | find /i "%~nx0" >nul
68
+ if errorlevel 1 goto :eof
69
+ echo.
70
+ echo !C_GY!Sesion interactiva. Escribe 'exit' para cerrar.!C_RS!
71
+ echo.
72
+ cmd /k
73
+ goto :eof
@@ -0,0 +1,85 @@
1
+ @echo off
2
+ setlocal EnableDelayedExpansion
3
+ chcp 65001 >nul 2>nul
4
+
5
+ cd /d "%~dp0"
6
+
7
+ REM --- Colores ANSI ---
8
+ for /F %%a in ('echo prompt $E ^| cmd') do set "ESC=%%a"
9
+ if "!ESC!"=="" (
10
+ set "C_CY=" & set "C_BC=" & set "C_GR=" & set "C_YE="
11
+ set "C_RE=" & set "C_GY=" & set "C_WH=" & set "C_RS="
12
+ ) else (
13
+ set "C_CY=!ESC![36m" & set "C_BC=!ESC![96m"
14
+ set "C_GR=!ESC![32m" & set "C_YE=!ESC![33m"
15
+ set "C_RE=!ESC![31m" & set "C_GY=!ESC![90m"
16
+ set "C_WH=!ESC![97m" & set "C_RS=!ESC![0m"
17
+ )
18
+
19
+ echo.
20
+ echo !C_CY!============================================!C_RS!
21
+ echo !C_BC! HISTORIAL!C_RS! !C_GY!- Vista rapida del proyecto!C_RS!
22
+ echo !C_CY!============================================!C_RS!
23
+ echo.
24
+
25
+ REM --- COMMITS ---
26
+ if not exist ".git" (
27
+ echo !C_RE![X]!C_RS! Sin repositorio Git.
28
+ goto :tags
29
+ )
30
+
31
+ echo !C_CY!-------------------------------------------------------------!C_RS!
32
+ echo !C_BC! ULTIMOS 20 COMMITS!C_RS!
33
+ echo !C_CY!-------------------------------------------------------------!C_RS!
34
+ echo !C_GY! IDX FECHA HASH MENSAJE!C_RS!
35
+ echo !C_CY!-------------------------------------------------------------!C_RS!
36
+
37
+ git log -n 20 --date=format:"%%Y-%%m-%%d %%H:%%M:%%S" --pretty=format:"%%h %%ad %%s" > "%TEMP%\fgh_log.txt" 2>nul
38
+
39
+ set "IDX=0"
40
+ for /f "delims=" %%L in ('type "%TEMP%\fgh_log.txt"') do (
41
+ set "LINE=%%L"
42
+ set "HASH=!LINE:~0,7!"
43
+ set "DT=!LINE:~8,19!"
44
+ set "MSG=!LINE:~28!"
45
+ echo !C_YE![!IDX!]!C_RS! !C_GY!!DT!!C_RS! !C_YE!!HASH!!C_RS! !C_WH!!MSG!!C_RS!
46
+ set /a IDX+=1
47
+ )
48
+ del "%TEMP%\fgh_log.txt" >nul 2>nul
49
+ echo !C_CY!-------------------------------------------------------------!C_RS!
50
+ echo.
51
+
52
+ :tags
53
+ echo !C_CY!-------------------------------------------------------------!C_RS!
54
+ echo !C_BC! TAGS!C_RS!
55
+ echo !C_CY!-------------------------------------------------------------!C_RS!
56
+ if exist ".git" git tag -l
57
+ echo.
58
+
59
+ echo !C_CY!-------------------------------------------------------------!C_RS!
60
+ echo !C_BC! SNAPSHOTS!C_RS!
61
+ echo !C_CY!-------------------------------------------------------------!C_RS!
62
+ if exist "versiones" goto :show_snaps
63
+ echo !C_GY!sin snapshots!C_RS!
64
+ goto :end_snaps
65
+
66
+ :show_snaps
67
+ dir /b /o-n "versiones" 2>nul
68
+
69
+ :end_snaps
70
+ echo !C_CY!-------------------------------------------------------------!C_RS!
71
+ echo.
72
+
73
+ call :shell_if_double_click
74
+ endlocal
75
+ exit /b 0
76
+
77
+ :shell_if_double_click
78
+ if "%NO_PAUSE%"=="1" goto :eof
79
+ echo %cmdcmdline% | find /i "%~nx0" >nul
80
+ if errorlevel 1 goto :eof
81
+ echo.
82
+ echo !C_GY!Sesion interactiva. Escribe 'exit' para cerrar.!C_RS!
83
+ echo.
84
+ cmd /k
85
+ goto :eof
@@ -0,0 +1,25 @@
1
+ # {{PROJECT_NAME}}
2
+
3
+ Proyecto inicializado con `init.cmd`.
4
+
5
+ ## Comandos
6
+
7
+ ### Esenciales
8
+ - `init.cmd` — Bootstrap (una vez por proyecto)
9
+ - `abrir.cmd` — Abrir en VS Code
10
+
11
+ ### Trabajo diario
12
+ - `guardar.cmd` — Commit de cambios
13
+ - `subir.cmd` — Push a GitHub
14
+ - `historial.cmd` — Ver commits recientes
15
+
16
+ ### Ocasionales
17
+ - `snapshots.cmd` — Crear/restaurar copias
18
+ - `auditar.cmd` — Generar reporte diff
19
+
20
+ ### Internos (no ejecutar)
21
+ - `config.cmd`, `lib/`, `templates/`
22
+
23
+ ---
24
+
25
+ Generado por forge-git v{{FG_VERSION}}