feat(graph_explorer): adopta convencion local_files/

Sustituye paths hardcodeados (graph_explorer.db, graph_explorer.ini,
projects/) por resolutores que apuntan a <exe_dir>/local_files/.

- project_manager: k_projects_dir y k_settings_file pasan a ser
  helpers projects_root() / settings_path() que llaman a
  fn::local_path internamente. Layout en disco documentado en el
  comentario de cabecera del .h.
- main.cpp: el modo legacy y el fallback de jobs_init usan
  fn::local_path('graph_explorer.db') en lugar de relativo al cwd.

Junto al cambio del framework (commit f102aba9), graph_explorer
se distribuye con su carpeta limpia: solo .exe + duckdb.dll +
TTFs + enrichers/ + runtime/. Todo el estado del usuario vive
en local_files/.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-03 00:33:08 +02:00
parent 2d8aafea34
commit 7a055809c2
3 changed files with 47 additions and 22 deletions
+8 -4
View File
@@ -1912,9 +1912,11 @@ int main(int argc, char** argv) {
}
if (legacy_mode) {
// Modo legacy: paths sueltos junto al exe (compat con flujo anterior)
ge::layout_store_open("graph_explorer.db");
g_layout_db_path = "graph_explorer.db";
// Modo legacy: paths sueltos en local_files/ (graph_explorer.db
// como fallback cuando no se ha cargado un proyecto).
std::string legacy_db = fn::local_path("graph_explorer.db");
ge::layout_store_open(legacy_db.c_str());
g_layout_db_path = legacy_db;
if (!g_input_path.empty()) {
load_input();
}
@@ -1969,8 +1971,10 @@ int main(int argc, char** argv) {
std::string enrichers_dir = app_dir + "/enrichers";
// graph_explorer.db es el mismo SQLite usado por layout_store.
// Default a <local_files>/graph_explorer.db si no hay proyecto.
std::string fallback_db = fn::local_path("graph_explorer.db");
const char* app_db = g_layout_db_path.empty()
? "graph_explorer.db" : g_layout_db_path.c_str();
? fallback_db.c_str() : g_layout_db_path.c_str();
// Layout storage — guardado/cargado de layouts ImGui en
// graph_explorer.db. El menu Layouts del menubar consume estos cb.