diff --git a/.straymark/07-ai-audit/agent-logs/packaging/AILOG-2026-06-04-001-fase-4-flatpak-packaging-manifest-rewrite-spdx-fix.md b/.straymark/07-ai-audit/agent-logs/packaging/AILOG-2026-06-04-001-fase-4-flatpak-packaging-manifest-rewrite-spdx-fix.md new file mode 100644 index 0000000..ee62b3b --- /dev/null +++ b/.straymark/07-ai-audit/agent-logs/packaging/AILOG-2026-06-04-001-fase-4-flatpak-packaging-manifest-rewrite-spdx-fix.md @@ -0,0 +1,195 @@ +--- +id: AILOG-2026-06-04-001 +title: "Fase 4 — Flatpak packaging: manifest rewrite, SPDX fix, metainfo completion" +status: draft +created: 2026-06-04 +agent: claude-opus-4-8-v1.0 +confidence: high +review_required: true +risk_level: medium +eu_ai_act_risk: not_applicable +nist_genai_risks: [information_security, value_chain] +iso_42001_clause: [8] +lines_changed: 510 # +447/-63 (git diff --shortstat del PR) +files_modified: + - lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml + - lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in + - lnxdrive.spdx + - .straymark/charters/01-road-to-v0-1-0-alpha-1.md +observability_scope: none +tags: [packaging, flatpak, spdx, metainfo, appstream, charter-01, phase-4] +related: + - CHARTER-01-road-to-v0-1-0-alpha-1 + - AIDEC-2026-06-04-001 + - AILOG-2026-05-31-002 +--- + +# AILOG: Fase 4 — Flatpak packaging: manifest rewrite, SPDX fix, metainfo completion + +## Summary + +Fase 4 del Charter-01 (scope item 5): el manifiesto Flatpak pasa de un esqueleto +roto (repos git inexistentes, runtime 45 EOL, `command` apuntando a un stub, sin +install stages) a un manifiesto funcional que construye daemon + CLI + panel +GTK4 desde el monorepo, con sandbox scoped según la postura RISK-002. +`lnxdrive.spdx` deja de describir StrayMark (proyecto equivocado, licencia MIT +equivocada) y describe LNXDrive bajo GPL-3.0-or-later. El metainfo de +Preferences se completa con descripción extensa, screenshots y release +`0.1.0-alpha.1` (type development). **Verificado**: el bundle construye e +instala limpio con `org.flatpak.Builder` y los tres binarios + assets quedan +correctamente exportados en el sandbox. + +## Context + +El Charter-01 declara la Fase 4 como "Flatpak packaging + `lnxdrive.spdx` fix + +metainfo completion". La exploración previa (agente Explore, mapeo del estado +real antes de planificar) reveló que el manifiesto heredado no era completable +de forma incremental: sus sources apuntaban a dos repos git separados con tag +`v0.1.0` que nunca existieron (el proyecto es un monorepo sin tags), y su +segundo módulo construía el binario stub `lnxdrive-gnome` ("Not yet +implemented") en lugar del panel real `lnxdrive-preferences`. Se reescribió +completo — decisiones de arquitectura en [[AIDEC-2026-06-04-001]]. + +## Actions Performed + +1. **Manifiesto** (`lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml`): + - Runtime `org.gnome.Platform 45 → 49` (el "47" del Charter estaba EOL desde + 2025 — drift R8, ver AIDEC). + - Sources `type: dir` relativos al manifiesto (monorepo local) con + `skip: [target]`, en lugar de repos git inexistentes. + - Módulo engine: `cargo build --release --locked -p lnxdrive-daemon -p + lnxdrive-cli` → instala `lnxdrived` y `lnxdrive`. + - Módulo gnome: buildsystem **meson** con `-Denable_nautilus=false + -Denable_shell=false -Denable_preferences=true -Denable_goa=false` — el + meson existente ya instala panel, iconos, `.desktop`, metainfo y schema + GSettings (los "install stages" del Charter sin duplicación manual). Las + extensiones Nautilus/Shell y el provider GOA son host-side y no pueden + vivir en el sandbox. + - `command: lnxdrive-preferences` (la GUI real; el daemon se lanza con + `flatpak run --command=lnxdrived`). + - Sandbox: se elimina `--socket=session-bus` en favor de + `--own-name=com.strangedaystech.LNXDrive` + + `--talk-name=org.freedesktop.secrets` + + `--talk-name=org.gnome.OnlineAccounts` (superficie D-Bus mínima, + coherente con RISK-002). `--filesystem=home` literal del Charter. + `--device=all` para `/dev/fuse` (files-on-demand; sin clase más fina). + - `build-args: --share=network` para cargo (ver Follow-ups: vendoring para + Flathub). +2. **SPDX** (`lnxdrive.spdx`): reemplazo completo — describe LNXDrive (daemon, + FUSE, CLI, integración GNOME), `PackageLicenseConcluded/Declared: + GPL-3.0-or-later` (antes MIT, contradiciendo `LICENSE` y todos los crates), + `PackageVersion: 0.1.0` (antes 1.0.0; la unificación a `0.1.0-alpha.1` es + Fase 5), copyright alineado con `LICENSE`. +3. **Metainfo** + (`lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in`): + descripción de 3 párrafos + lista de features por página del panel, URLs + `homepage`/`bugtracker`/`vcs-browser` apuntando al monorepo (antes: + `lnxdrive-gnome` repo separado), 3 screenshots con nombres canónicos que la + Fase 5 debe producir (`preferences-window.png`, `onboarding-wizard.png`, + `conflict-dialog.png` bajo `docs/screenshots/`), release `0.1.0-alpha.1` + `type="development"` con changelog (sustituye la entrada `0.1.0 / + 2026-02-05` que nunca correspondió a un release publicado). +4. **Atomic update del Charter** (formato v4): filas Fase 4 de la tabla + `## Files to modify` — runtime 47→49 y ruta real del metainfo (la tabla lo + ubicaba bajo `lnxdrive-packaging/flatpak/`; vive en el árbol meson de + preferences). Scope item 5 anotado con el resultado de la fase. + +## Risk + +- **R8 (drift, documentado aquí y en el Charter)**: dos desviaciones de la + declaración ex-ante — (a) runtime objetivo `org.gnome.Platform 47 → 49` + porque 47 alcanzó EOL en 2025, antes incluso de la firma del Charter + (2026-05-29); (b) la ruta del metainfo en la tabla Files-to-modify era + incorrecta. Ambas corregidas atómicamente en este mismo PR + ([[AIDEC-2026-06-04-001]]). +- El riesgo R2 del Charter (comportamiento del bundle bajo sandbox ≠ `cargo + run`, en particular el mount FUSE) **sigue abierto por diseño**: su + mitigación es el smoke-test en VM Fedora/Ubuntu previo al release (Fase 6), + no esta fase. +- **Salida del drift check** (`check-charter-drift.sh`, rango + `origin/main..HEAD`): los 26 archivos "declared but NOT modified" pertenecen + a las demás fases del Charter (el script compara la tabla completa contra un + PR de fase — esperado, no accionable). Los 3 "modified but NOT declared" son + falsos positivos: el metainfo **sí** está declarado (fila corregida por el + propio drift R8), `lnxdrive.spdx` **sí** está declarado (fila intacta de la + tabla; límite del parser heurístico), y `.straymark/follow-ups-backlog.md` + es el registro de governanza que debe viajar en el mismo commit que el AILOG + (AGENT-RULES §13), no scope de producto. + +## Modified Files + +| File | Lines Changed (+/-) | Change Description | +|------|--------------------|--------------------| +| `lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml` | reescritura completa | Runtime 49, sources dir monorepo, módulo meson, sandbox scoped, command real | +| `lnxdrive.spdx` | reescritura completa | Describe LNXDrive (antes StrayMark), GPL-3.0-or-later (antes MIT), versión 0.1.0 | +| `lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in` | +60/-6 aprox | Descripción completa, URLs monorepo, screenshots, release 0.1.0-alpha.1 | +| `.straymark/charters/01-road-to-v0-1-0-alpha-1.md` | ~6 líneas | Atomic update: filas Fase 4 + anotación scope item 5 (drift R8) | + +## Decisions Made + +Ver [[AIDEC-2026-06-04-001]] (runtime 49, sources dir, command, módulos +host-side excluidos, bus scoped, red en build). Decisión menor sin AIDEC: la +entrada de release `0.1.0 / 2026-02-05` del metainfo se sustituyó en lugar de +conservarse — nunca hubo release público con esa versión y AppStream la +mostraría como historial falso. + +## Impact + +- **Functionality**: primer artefacto de distribución construible del proyecto; + base directa para `release.yml` (Fase 5). +- **Performance**: N/A. +- **Security**: superficie D-Bus del sandbox reducida (own-name/talk-name en + vez de session-bus sin restricción); SPDX ahora declara la licencia real + (GPL-3.0-or-later) — relevante para compliance de distribución; tokens + siguen en keyring vía `--talk-name=org.freedesktop.secrets` (RISK-002). +- **Privacy**: N/A (sin cambios en manejo de datos). +- **Environmental**: N/A. + +## Verification + +- [x] `desktop-file-validate` sobre el `.desktop`: limpio (exit 0). +- [x] `appstreamcli validate --no-net` sobre el metainfo: **pass** (1 aviso + pedante por mayúsculas en el app-id heredado, no accionable). Con red: + 3 warnings esperados `screenshot-image-not-found` — los PNG llegan en + Fase 5 (nombres canónicos ya fijados, ver Follow-ups). +- [x] Build de verificación del Charter: `flatpak run org.flatpak.Builder + --user --install --force-clean build-dir + lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml` — **construye + e instala limpio** (commit `31106ca4`, 33.9 MB instalado, runtime + org.gnome.Platform/x86_64/49). +- [x] Post-install en sandbox: `/app/bin/{lnxdrived,lnxdrive, + lnxdrive-preferences}` presentes; `flatpak run --command=lnxdrive … --version` + → `lnxdrive 0.1.0`; `.desktop`, `gschemas.compiled`, icono SVG y metainfo + exportados en `/app/share/`. +- [x] `straymark validate` + `.straymark/scripts/check-charter-drift.sh` + pre-commit (resultados en la descripción del PR). + +## Follow-ups + +- **Vendoring de crates para Flathub**: el manifiesto usa `build-args: + --share=network` para que cargo descargue crates.io; una submission a + Flathub exige sources vendorizados (`flatpak-cargo-generator`). Aplica + cuando se decida publicar en Flathub (post-alpha, candidato v0.2). +- **`lnxdrive-packaging/README.md` desactualizado**: promete subdirectorios + `rpm/`, `debian/`, `aur/`, `appimage/` que no existen (diferidos a + v0.2.0-beta por el Charter). Alinear el README con la realidad del alpha + (Flatpak only) — candidato a resolverse de paso en Fase 5 junto con el + README raíz. +- **Nombres canónicos de screenshots para Fase 5**: el metainfo referencia + `docs/screenshots/{preferences-window,onboarding-wizard,conflict-dialog}.png`; + la Fase 5 debe producir exactamente esos nombres (más los 3 restantes del + Charter para el README). + +## Additional Notes + +- El bundle del alpha **no incluye** la extensión de Nautilus, la extensión de + Shell ni el provider GOA (componentes host-side). Documentarlo como + limitación conocida en README/release notes es trabajo de Fase 5. +- Verificación de build ejecutada con `org.flatpak.Builder` (Flathub, user + install) — el binario `flatpak-builder` nativo no está empaquetado en la + máquina de verificación; el comando del Charter §Verification sigue siendo + válido sustituyendo el prefijo por `flatpak run org.flatpak.Builder`. + +--- + + diff --git a/.straymark/07-ai-audit/decisions/AIDEC-2026-06-04-001-flatpak-manifest-architecture.md b/.straymark/07-ai-audit/decisions/AIDEC-2026-06-04-001-flatpak-manifest-architecture.md new file mode 100644 index 0000000..81e31e9 --- /dev/null +++ b/.straymark/07-ai-audit/decisions/AIDEC-2026-06-04-001-flatpak-manifest-architecture.md @@ -0,0 +1,109 @@ +--- +id: AIDEC-2026-06-04-001 +title: Arquitectura del manifiesto Flatpak para v0.1.0-alpha (runtime 49, sources dir, bus scoped) +status: accepted +created: 2026-06-04 +agent: claude-opus-4-8-v1.0 +confidence: high +review_required: true +risk_level: medium +tags: [packaging, flatpak, runtime, sandbox, dbus, charter-01, phase-4] +related: + - CHARTER-01-road-to-v0-1-0-alpha-1 + - AILOG-2026-06-04-001 +--- + +# AIDEC: Arquitectura del manifiesto Flatpak para v0.1.0-alpha + +## Context + +El Charter-01 (Fase 4, scope item 5) pide completar +`lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml` con install +stages, permisos correctos y target `org.gnome.Platform 47`. El manifiesto +heredado tenía cuatro defectos estructurales: + +1. Apuntaba a **dos repos git separados** (`lnxdrive.git`, `lnxdrive-gnome.git` + con tag `v0.1.0`) que no existen — el proyecto es un **monorepo** sin tags. +2. `command: lnxdrive-gnome` ejecuta un **stub** (`src/main.rs` imprime + "Not yet implemented"); la GUI real es `lnxdrive-preferences`. +3. Runtime `org.gnome.Platform 45` (EOL); el Charter declara 47, que también + alcanzó EOL en 2025 — antes incluso de la firma del Charter (2026-05-29). +4. Sin install stages para iconos, `.desktop`, metainfo ni schema GSettings, y + con `--socket=session-bus` (bus de sesión sin restricción). + +## Problem + +Definir runtime objetivo, mecanismo de sources, comando principal, alcance de +módulos y política de sandbox para el bundle del alpha, respetando el scope del +Charter y la postura de seguridad de RISK-002 (superficie D-Bus mínima). + +## Alternatives Considered + +### Runtime objetivo +- **A. `org.gnome.Platform 47`** (literal del Charter): EOL desde 2025 — sin + parches de seguridad; además libadwaita 1.6 justo en el límite del feature + gate `v1_6` del panel. Descartada: publicar un alpha sobre runtime EOL + contradice el espíritu de la Fase 1 (cierre de riesgos). +- **B. `org.gnome.Platform 50`** (estable actual, mar 2026): válida, pero + reduce la ventana de compatibilidad para early adopters en distros LTS. +- **C. `org.gnome.Platform 49`** ✅: el runtime soportado más antiguo en + jun 2026; satisface gtk4 `v4_14` + libadwaita `v1_6`; ya instalado en la + máquina de verificación Nivel-5. + +### Sources de los módulos +- **A. Git remoto con tags** (heredado): los repos/tags no existen; rompería + el build local y el de release. +- **B. `type: dir` relativo al manifiesto** ✅: construye siempre desde el + checkout local del monorepo — sirve igual para la verificación local del + operador y para `release.yml` (Fase 5). `skip: [target]` evita copiar + artefactos de cargo. +- **C. `type: git` con `path:` local**: solo archivos commiteados — incómodo + para iterar (cada ajuste exige commit previo) sin aportar nada al alpha. + +### Comando principal y módulos +- `command: lnxdrive-preferences` (la GUI real). El daemon se lanza con + `flatpak run --command=lnxdrived com.strangedaystech.LNXDrive`. +- Módulo engine: `cargo build --release --locked -p lnxdrive-daemon -p + lnxdrive-cli` (los dos binarios reales: `lnxdrived`, `lnxdrive`). +- Módulo gnome: **meson** con `-Denable_nautilus=false -Denable_shell=false` + — las extensiones de Nautilus/Shell y el provider GOA se cargan en procesos + del *host* y no pueden vivir dentro del sandbox; el meson existente ya + instala panel, iconos, `.desktop`, metainfo y schema (los "install stages" + que pedía el Charter, sin duplicarlos a mano). + +### Política de sandbox (finish-args) +- Se elimina `--socket=session-bus` (acceso sin restricción) en favor de + **nombres scoped**: `--own-name=com.strangedaystech.LNXDrive` + + `--talk-name=org.freedesktop.secrets` + `--talk-name=org.gnome.OnlineAccounts` + — alineado con RISK-002 (superficie D-Bus mínima). +- `--device=all` para `/dev/fuse` (no existe clase de device más fina en + Flatpak); el riesgo R2 del Charter ya prevé el smoke-test de FUSE bajo + sandbox en VM antes de publicar. +- `--filesystem=home` literal del Charter (la raíz de sync vive en `$HOME`). + +### Red durante el build +- cargo descarga crates.io vía `build-args: --share=network`. Una submission a + Flathub exigiría sources vendorizados (`flatpak-cargo-generator`); se difiere + — el alpha distribuye bundle por GitHub Releases (registrado como follow-up). + +## Decision + +Runtime **`org.gnome.Platform 49`** (drift documentado vs el "47" del Charter, +con atomic update de la tabla Files-to-modify), sources **`type: dir`** por +módulo con `skip`, `command: lnxdrive-preferences`, módulo gnome vía **meson** +con extensiones host-side deshabilitadas, bus de sesión **scoped** (own-name + +talk-names), `--device=all` para FUSE y red solo en build para cargo. + +## Consequences + +- El bundle construye reproduciblemente desde cualquier checkout del monorepo + sin depender de tags inexistentes; `release.yml` (Fase 5) lo reutiliza tal cual. +- Early adopters necesitan `org.gnome.Platform//49` (descarga automática al + instalar el bundle). +- La integración Nautilus/Shell/GOA queda fuera del Flatpak del alpha — se + documentará como limitación conocida en el README/release notes (Fase 5). +- Flathub queda explícitamente fuera del alcance del alpha (follow-up FU en el + registro). +- Si el smoke-test de R2 muestra que FUSE no monta bajo el sandbox ni con + `--device=all`, aplica la mitigación ya prevista: v0.1.0-alpha.2 con el + permiso/portal faltante. diff --git a/.straymark/charters/01-road-to-v0-1-0-alpha-1.md b/.straymark/charters/01-road-to-v0-1-0-alpha-1.md index 5d98456..91825e0 100644 --- a/.straymark/charters/01-road-to-v0-1-0-alpha-1.md +++ b/.straymark/charters/01-road-to-v0-1-0-alpha-1.md @@ -30,7 +30,7 @@ The lnxdrive monorepo finished its MVP implementation (SpecKit features `001-cor - `cargo audit` + `cargo deny` jobs in CI. 3. **Engine polish** — close the one remaining task (T101 performance validation) in `lnxdrive-engine/specs/002-files-on-demand/tasks.md`. **Done** (Fase 2): T101 validated via a real-mount integration test — `getattr` 43.7µs, `readdir` 1.40ms/1000 entries, idle RSS 37.9MB/10k files (all under target). The test was the first real FUSE mount exercised in the codebase and surfaced four functional listing bugs (init runtime-context panic, root self-listing, unstable `readdir` order, `opendir` dir-cache) plus an inode-persistence defect, all fixed with regression tests — see AILOG-2026-05-31-001. The other three items this row originally listed (remove `todo!()/unimplemented!()`, remove debug `println!`, enable `cargo test --workspace` in CI) were **already completed during Fase 1** (verified against `main`: zero such sites in crates; `cargo test --workspace` live at `.github/workflows/engine-ci.yml:66`). 4. **GTK4 preferences panel** — the panel already exists under `lnxdrive-gnome/preferences/` (the root `src/main.rs` stub is just a placeholder). Fase 3 audits it (`.straymark/audits/CHARTER-01/phase-3-gtk4-panel-audit.md`) and fixes the findings. It ships **three** settings groups wired to the daemon — Account, Folders (Sync), Network (Advanced) — plus Conflicts. The fourth group, **System** (auto-start, cache, dehydration), is **deferred to a v0.2 Charter** because it needs new daemon D-Bus API and is post-alpha (see AIDEC-2026-05-31-001). Key fix: realign the panel with the Fase-1 RISK-002 daemon API (`CompleteAuthViaGOA`). **Verified end-to-end** in the Nivel-5 testing VM (real GNOME Wayland): all pages load, full D-Bus contract exercised with no failed calls, live `QuotaChanged`, and operator-confirmed visual render of every page (incl. nested selective-sync selection). External pre-merge audit consolidated in `review.md` (1 Medium, fixed). See AILOG-2026-05-31-002. -5. **Flatpak packaging** — complete `lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml` with install stages (icons, `*.desktop`, metainfo XML), correct permissions (`--filesystem=home:rw`, `--talk-name=org.freedesktop.secrets`), and target `org.gnome.Platform 47`. Fix `lnxdrive.spdx` (currently describes StrayMark by mistake). Complete the metainfo XML with description, releases section, and screenshot URLs. +5. **Flatpak packaging** — complete `lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml` with install stages (icons, `*.desktop`, metainfo XML), correct permissions (`--filesystem=home:rw`, `--talk-name=org.freedesktop.secrets`), and target `org.gnome.Platform 47`. Fix `lnxdrive.spdx` (currently describes StrayMark by mistake). Complete the metainfo XML with description, releases section, and screenshot URLs. **Done** (Fase 4): manifest rewritten — the inherited skeleton pointed at two non-existent git repos and a stub binary; now builds daemon + CLI (cargo) and the GTK4 panel (meson, host-side Nautilus/Shell/GOA modules excluded) from monorepo `dir` sources. Target moved to `org.gnome.Platform 49` (47 was EOL before the Charter was signed — drift R8, AIDEC-2026-06-04-001); `--socket=session-bus` replaced by scoped bus names per the RISK-002 posture. SPDX now describes LNXDrive under GPL-3.0-or-later (was: StrayMark/MIT). **Verified**: bundle builds and installs cleanly via `org.flatpak.Builder` (3 binaries + desktop/schema/icon/metainfo exported; CLI answers in-sandbox). FUSE-under-sandbox behaviour intentionally left to the R2 VM smoke-test (Fase 6). See AILOG-2026-06-04-001. 6. **Release infrastructure & public assets** — `.github/workflows/release.yml` (tag → bundle → GitHub Release with SHA256SUMS); `SECURITY.md`; `CHANGELOG.md`; 6 UI screenshots in `docs/screenshots/`; version `0.1.0-alpha.1` consistent across every `Cargo.toml`, Flatpak manifest, and metainfo XML; README install section + competitive comparison vs `jstaf/onedriver` and `abraunegg/onedrive`. 7. **Tag, release, announce** — signed tag `v0.1.0-alpha.1`, GitHub Pre-release with Flatpak bundle, posts on r/linux, r/gnome, r/onedrive, and StrangeDaysTech Mastodon. @@ -65,8 +65,8 @@ This Charter spans many files across 7 phases. The table below names the load-be | `lnxdrive-engine/specs/002-files-on-demand/tasks.md` | Close the one remaining `[ ]` task (Fase 2) | | The ~4 engine files containing `todo!()/unimplemented!()` (incl. `audit.rs`, `filesystem.rs`) | Implement, remove, or feature-gate; replace ~10 debug `println!` with `tracing::debug!` (Fase 2) | | `lnxdrive-gnome/src/main.rs`, `lnxdrive-gnome/data/ui/preferences.ui` (new), `lnxdrive-gnome/Cargo.toml` | GTK4 prefs panel with 4 settings groups (Fase 3) | -| `lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml` | Complete install stages, permissions, target `org.gnome.Platform 47` (Fase 4) | -| `lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in` | Full description, releases section, screenshot URLs (Fase 4) | +| `lnxdrive-packaging/flatpak/com.strangedaystech.LNXDrive.yaml` | Complete install stages, permissions, target `org.gnome.Platform 49` — original entry said 47, EOL since 2025 (drift R8, AIDEC-2026-06-04-001); scoped bus names replace `--socket=session-bus`; gnome module builds via meson with host-side extensions (Nautilus/Shell/GOA) disabled (Fase 4) | +| `lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in` | Full description, releases section, screenshot URLs — original entry misplaced the file under `lnxdrive-packaging/flatpak/`; it lives in the preferences meson tree (drift R8, AILOG-2026-06-04-001) (Fase 4) | | `lnxdrive.spdx` | Replace contents — currently describes StrayMark; should describe LNXDrive (Fase 4) | | `.github/workflows/release.yml` (new) | Tag → flatpak-builder bundle → GitHub Release + SHA256SUMS (Fase 5) | | `SECURITY.md` (new) | Disclosure policy, SLA, known limitations referencing risk-analysis docs (Fase 5) | diff --git a/.straymark/follow-ups-backlog.md b/.straymark/follow-ups-backlog.md index 5a57b96..f1dffd5 100644 --- a/.straymark/follow-ups-backlog.md +++ b/.straymark/follow-ups-backlog.md @@ -1,7 +1,7 @@ --- last_scan: 2026-06-04 schema_version: v1 -total_open: 0 +total_open: 3 total_promoted: 0 total_closed_in_session: 2 total_phase_blocked: 0 @@ -15,6 +15,7 @@ buckets: fully_extracted_ailogs: - AILOG-2026-05-28-001 - AILOG-2026-05-28-002 + - AILOG-2026-06-04-001 --- # Follow-ups Backlog @@ -58,6 +59,30 @@ Entry shape (v1 — optional fields marked): - **Destination**: CHARTER-01 - **Cost**: 0 (resolved at source) - **Notes**: Charter drift already remediated atomically in the source PR — the `## Files to modify` row for RISK-001 (only `health.rs`) was extended to `lnxdrive-daemon/src/main.rs` and cross-crate `lnxdrive-ipc/src/service.rs` (`dbus_health` state field + property). Closed at registry adoption (2026-06-04); no pending work. + +### FU-003 — **Vendoring de crates para Flathub**: el manifiesto usa `build-args: +- **Origin**: AILOG-2026-06-04-001 §Follow-ups +- **Status**: open +- **Trigger**: TBD +- **Destination**: TBD +- **Cost**: TBD +- **Notes**: Auto-appended by `straymark followups drift --apply` 2026-06-04. + +### FU-004 — **`lnxdrive-packaging/README.md` desactualizado**: promete subdirectorios +- **Origin**: AILOG-2026-06-04-001 §Follow-ups +- **Status**: open +- **Trigger**: TBD +- **Destination**: TBD +- **Cost**: TBD +- **Notes**: Auto-appended by `straymark followups drift --apply` 2026-06-04. + +### FU-005 — **Nombres canónicos de screenshots para Fase 5**: el metainfo referencia +- **Origin**: AILOG-2026-06-04-001 §Follow-ups +- **Status**: open +- **Trigger**: TBD +- **Destination**: TBD +- **Cost**: TBD +- **Notes**: Auto-appended by `straymark followups drift --apply` 2026-06-04. ## Bucket: time-triggered ## Bucket: charter-triggered diff --git a/lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in b/lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in index 83f541c..9a42e7f 100644 --- a/lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in +++ b/lnxdrive-gnome/preferences/data/com.strangedaystech.LNXDrive.Preferences.metainfo.xml.in @@ -9,9 +9,27 @@
LNXDrive Preferences lets you manage your cloud synchronization settings directly from GNOME. Configure your OneDrive accounts, choose which folders - to sync, set bandwidth limits, and control files-on-demand behavior -- all + to sync, set bandwidth limits, and control files-on-demand behavior — all from a single, native desktop application.
++ LNXDrive is a OneDrive synchronization client for Linux built around a + background daemon with files-on-demand support: your cloud files appear in + the file manager and download only when you open them. The preferences + panel talks to the daemon over D-Bus and covers the full day-to-day + configuration surface: +
++ OAuth tokens are stored in the system keyring (Secret Service), never on + disk in cleartext. This alpha release targets GNOME on Wayland and ships + as a Flatpak. +
+ First public alpha for GNOME early adopters: daemon with + files-on-demand (FUSE), CLI, GTK4 preferences panel, GNOME Shell + indicator, Nautilus sync-state overlays and GOA single sign-on. + Distributed as a Flatpak bundle on GitHub Releases. +
+