ltcai 5.1.0 → 5.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.
package/docs/CHANGELOG.md CHANGED
@@ -3,6 +3,34 @@
3
3
  The top entry is the current release-preparation target. Older entries are
4
4
  historical and may describe behavior as it existed at that release.
5
5
 
6
+ ## [5.2.0] - 2026-06-14
7
+
8
+ > Lattice AI 5.2.0 — Aggressive User-Focused Model Transformation. Transparent
9
+ > structured capability registry, automated HF verification, modern multimodal
10
+ > additions, download/load strategy exposure, hardware notes, verified status,
11
+ > and updated UI/backend flows so users see exactly what they get before consent.
12
+
13
+ ### Added
14
+ - Structured `ModelCapabilityRegistry` (latticeai/services/model_capability_registry.py) with dataclass fields for provider/hf_repo_id, modality, quantization, download_strategy, load_strategy, hardware (min/recommended RAM, Apple/CUDA prefs, notes), license, safety_notes, and rich VerificationStatus (hf_exists, has_config, has_tokenizer, pipeline, last_checked, notes).
15
+ - Modern multimodal candidates (Gemma 3 4B/12B, Qwen2.5-VL-7B, Llama-3.2-11B-Vision, Pixtral-12B) in the structured registry for HF verification transparency, alongside the user-facing Gemma-4 / Qwen3-VL / Llama-4 load-ready family.
16
+ - Automated verification script: `scripts/verify_hf_model_registry.py` (lightweight HF API + restricted snapshot for config/tokenizer; optional --test-load for small models; explicit LARGE_MODEL notes; writes verification_report.json).
17
+ - Registry info exposed via `/models` and `/models/recommendations` (registry.verified_count, verification dicts, hardware, strategies).
18
+ - New unit tests: `tests/unit/test_model_capability_registry.py` (5 tests covering registry, legacy shape, rec payload, report, roundtrips).
19
+
20
+ ### Changed
21
+ - `model_catalog.py` now sources ENGINE_MODEL_CATALOG + aliases from the capability registry (single source of truth), preserves legacy shapes + reexports, and finalizes the user-facing catalog to current load-ready families so lower-generation or non-load-verified candidates do not become noisy primary choices.
22
+ - `model_recommendation.py` `_classify_one` now forwards 5.2 fields (hf_repo, verification, hardware, load_strategy, license, safety, recommended_default).
23
+ - `verification.verified` and verified-model API lists now require HF presence plus config and tokenizer hints, with weights-hint detail exposed separately, so the UI badge matches the actual load-readiness contract.
24
+ - Marketplace template installs now keep registry entries scoped per workspace, and `/marketplace/templates/registry` returns only the authorized workspace scope.
25
+ - Backend model APIs return rich fields; frontend can render verified badges, modality, hardware notes, strategies.
26
+ - Library.tsx (ModelsPanel): added "multimodal" + "✓ HF" verified badges, recommended_default support, hardware notes line, load_strategy plus license/safety notes in advanced detail, updated guided setup copy for transparency and consent.
27
+ - All registry HF ids confirmed present via HF API on 2026-06-14; 15/16 expose config/tokenizer hints, Pixtral remains available-but-not-local-load-verified, and large models are flagged with explicit limitations.
28
+ - Version bumped to 5.2.0 everywhere (pyproject, __init__, package.json, vscode-extension).
29
+
30
+ ### Preserved
31
+ - Exact public API shapes, recommendation tri-state logic, engine aliases, family de-dup, download consent gates, no silent downloads.
32
+ - Historical changelog entries for 5.1.0 and prior.
33
+
6
34
  ## [5.1.0] - 2026-06-14
7
35
 
8
36
  > Product Trust & Clarity Release. v5.1.0 clarifies Lattice AI as a
@@ -52,7 +80,8 @@ historical and may describe behavior as it existed at that release.
52
80
 
53
81
  ### Preserved
54
82
 
55
- - v5.0.0 and older sections remain historical.
83
+ - Tracked release-note history now starts at v4.5.0; older release-note files
84
+ are hidden from the Git tree.
56
85
  - External package publishing remains owner-run; this release prepares exact
57
86
  artifacts and GitHub Release assets without registry publish automation.
58
87
 
@@ -91,7 +120,7 @@ historical and may describe behavior as it existed at that release.
91
120
 
92
121
  ### Preserved
93
122
 
94
- - v4.7.2 and older sections remain historical.
123
+ - Tracked release-note history remains visible from v4.5.0 through v5.1.0.
95
124
  - External package publishing remains owner-run; this release prepares exact
96
125
  artifacts and GitHub Release assets without registry publish automation.
97
126
 
@@ -131,7 +160,7 @@ historical and may describe behavior as it existed at that release.
131
160
 
132
161
  ### Preserved
133
162
 
134
- - v4.7.1 and older sections remain historical.
163
+ - Tracked release-note history remains visible from v4.5.0 through v5.1.0.
135
164
  - External package publishing remains owner-run; this release prepares exact
136
165
  artifacts and GitHub Release assets without registry publish automation.
137
166
 
@@ -171,7 +200,7 @@ historical and may describe behavior as it existed at that release.
171
200
 
172
201
  ### Preserved
173
202
 
174
- - v4.7.0 and older sections remain historical.
203
+ - Tracked release-note history remains visible from v4.5.0 through v5.1.0.
175
204
  - External package publishing remains owner-run; this release prepares exact
176
205
  artifacts and GitHub Release assets without registry publish automation.
177
206
 
@@ -216,7 +245,7 @@ historical and may describe behavior as it existed at that release.
216
245
 
217
246
  ### Preserved
218
247
 
219
- - v4.6.1 and older sections remain historical.
248
+ - Tracked release-note history remains visible from v4.5.0 through v5.1.0.
220
249
  - Local-first ownership, `.latticebrain` portability, rollback-safe restore,
221
250
  and the deepest-layer Knowledge Graph behavior are preserved.
222
251
 
@@ -269,8 +298,8 @@ historical and may describe behavior as it existed at that release.
269
298
 
270
299
  ### Preserved
271
300
 
272
- - v4.6.0 and older sections remain historical. They were not rewritten as
273
- v4.6.1 claims.
301
+ - Tracked release-note history remains visible from v4.5.0 through v5.1.0.
302
+ Older hidden notes were not rewritten as v4.6.1 claims.
274
303
  - No backend architecture redesign, package publishing, service deployment, or
275
304
  registry upload is part of this refresh.
276
305
 
@@ -448,2351 +477,3 @@ The technology was already a Digital Brain. This release makes the *experience*
448
477
  - `dist/ltcai-4.5.0.vsix`
449
478
  - `ltcai-4.5.0.tgz`
450
479
  - `src-tauri/target/release/bundle/dmg/Lattice AI_4.5.0_aarch64.dmg`
451
-
452
- ## [4.4.0] - 2026-06-13
453
-
454
- > Brain Engine Extraction release: the Brain Core implementation physically
455
- > moves into the standalone `lattice_brain` package.
456
-
457
- ### Changed
458
-
459
- - Physically moved the knowledge graph (schema, store, write/retrieval/
460
- discovery/documents/ingest/projection/provenance mixins, identity, network,
461
- curator) into `lattice_brain.graph`, and memory, context, conversations into
462
- `lattice_brain` proper.
463
- - Physically moved the unified ingestion pipeline, hooks registry, multi-agent
464
- orchestrator, agent runtime, workflow engine, and KG portability service into
465
- `lattice_brain.ingestion`, `lattice_brain.runtime`, `lattice_brain.workflow`,
466
- and `lattice_brain.portability`.
467
- - FastAPI app assembly, routers, and services now import `lattice_brain`
468
- directly; `latticeai.brain.*` became deprecation shims and the moved
469
- `latticeai.core.*`/`latticeai.services.*` paths became silent alias shims
470
- with module identity preserved.
471
- - Synchronized all version copies to `4.4.0` and updated architecture/release
472
- documentation to describe the physical extraction.
473
-
474
- ### Added
475
-
476
- - `tests/unit/test_lattice_brain_isolation.py`: fails if `lattice_brain`
477
- imports `latticeai` (import-hook enforced) and exercises the Brain Core
478
- end-to-end (graph ingest/search, conversations, context, workflow, agent
479
- runtime, encrypted archive round-trip) without FastAPI.
480
- - `lattice_brain.graph` and `lattice_brain.runtime` subpackages, shipped in the
481
- wheel and covered by the wheel smoke check.
482
-
483
- ### Fixed
484
-
485
- - The Brain Core boundary is no longer an import-path contract: importing
486
- `lattice_brain` no longer pulls in `latticeai.brain`, and the package is
487
- usable by CLI, tests, and future tools fully independently.
488
-
489
- ## [4.3.3] - 2026-06-13
490
-
491
- > Dead-Code Cleanup release after the independent audit cleanup on top of
492
- > v4.3.2 release preparation.
493
-
494
- ### Changed
495
-
496
- - Promoted the post-cleanup `main` tree to v4.3.3 so release artifacts are
497
- exact-current-main after dead-code cleanup and documentation fixes.
498
- - Synchronized Python, npm, VS Code extension, Tauri, runtime constants,
499
- generated OpenAPI metadata, visual mock metadata, and release docs to
500
- `4.3.3`.
501
- - Updated README, architecture, feature status, release notes, and release guide
502
- to describe v4.3.3 as the current release while preserving v4.3.2 audit
503
- reports as historical evidence.
504
-
505
- ### Fixed
506
-
507
- - Corrected architecture/documentation drift discovered by the independent
508
- dead-code, architecture, and runtime audit.
509
- - Preserved Vercel/static-docs readiness so Vercel remains documentation-only
510
- and does not auto-detect or deploy the localhost FastAPI runtime.
511
- - Kept README badge restoration and owner-published registry caveats aligned
512
- with the release flow.
513
-
514
- ### Validation
515
-
516
- - Python compile check, ruff, unit tests, live integration tests, frontend lint,
517
- TypeScript typecheck, VS Code extension build, Playwright visual tests, Tauri
518
- check/build, release artifact validation, wheel smoke, npm pack dry-run,
519
- Markdown link check, Python package metadata check, and Vercel static build
520
- passed for this release.
521
-
522
- ### Artifacts
523
-
524
- - `dist/ltcai-4.3.3-py3-none-any.whl`
525
- - `dist/ltcai-4.3.3.tar.gz`
526
- - `dist/ltcai-4.3.3.vsix`
527
- - `ltcai-4.3.3.tgz`
528
- - `src-tauri/target/release/bundle/dmg/Lattice AI_4.3.3_aarch64.dmg`
529
-
530
- ## [4.3.2] - 2026-06-13
531
-
532
- > Product Polish & Graph UX Overhaul release candidate after v4.3.1.
533
-
534
- ### Changed
535
-
536
- - Brain graph explorer now uses the existing Knowledge Graph and hybrid-search
537
- APIs to provide semantic groups, type colors, importance/degree sizing,
538
- search, min-importance filtering, focused neighborhoods, collapsible groups,
539
- label modes, and query result panels.
540
- - Brain, Ask, Capture, Act, Library, and System product flows now render
541
- structured cards, entity lists, readable status panels, and operation results
542
- instead of normalizing user-facing runtime state into raw JSON dumps.
543
- - System portability controls now include `.latticebrain` import dry-run and
544
- confirmed import alongside export, inspect, verify, restore dry-run, confirmed
545
- restore, backup health, storage, Brain Network, and device identity status.
546
- - Static frontend assets, generated OpenAPI client, npm/Python/VSIX/Tauri
547
- versions, and release artifacts are synchronized to `4.3.2`.
548
- - README publishing badges are restored for PyPI, npm, VS Code Marketplace,
549
- Open VSX, CI, and license with explicit owner-controlled registry caveats.
550
- - `ARCHITECTURE.md` is rewritten as a diagram-first v4.3.2 system map.
551
-
552
- ### Fixed
553
-
554
- - Tauri now also kills the FastAPI sidecar on app-level exit events, so a normal
555
- macOS quit releases port 8765 after the rebuilt desktop app closes.
556
- - Vercel configuration now builds only a static documentation page and prevents
557
- FastAPI auto-detection of `server.py`.
558
-
559
- ### Validation
560
-
561
- - Python compile check, ruff, frontend lint, TypeScript build, VS Code extension
562
- build, unit tests, live integration tests, Playwright visual tests, Tauri
563
- check/build, release artifact validation, wheel smoke, npm pack dry-run, and
564
- desktop startup/shutdown verification passed.
565
- - Markdown link check, README badge link validation, Mermaid structural sanity,
566
- and Vercel static build/config validation passed.
567
- - End-user self-audit evidence is stored under `output/audits/v4.3.2-rc/`.
568
-
569
- ### Artifacts
570
-
571
- - `dist/ltcai-4.3.2-py3-none-any.whl`
572
- - `dist/ltcai-4.3.2.tar.gz`
573
- - `dist/ltcai-4.3.2.vsix`
574
- - `ltcai-4.3.2.tgz`
575
- - `src-tauri/target/release/bundle/dmg/Lattice AI_4.3.2_aarch64.dmg`
576
-
577
- ## [4.3.1] - 2026-06-12
578
-
579
- > End-user audit repair release candidate for v4.3.0 artifacts.
580
-
581
- ### Fixed
582
-
583
- - Tauri desktop startup now launches a visible shell, resolves the FastAPI
584
- sidecar through installed or bundled runtime paths, reports backend status,
585
- writes sidecar logs, and shuts down the child process on close.
586
- - npm clean install now ships `requirements.txt` and fails honestly when Python
587
- dependency bootstrap cannot complete.
588
- - Model Load refuses implicit runtime installation and model downloads by
589
- default, returning actionable unavailable states instead of hanging or making
590
- unauthorized outbound requests.
591
- - Agent runtime API refuses simulation-mode execution when no LLM-backed model
592
- is loaded, preventing fake success records.
593
- - Workflow UI exposes real create, import, export, and run paths backed by the
594
- existing workflow API.
595
- - Runtime version labels, configured port reporting, SSO default redirect URI,
596
- Postgres dependency status, sqlite-vec fallback reporting, and `.latticebrain`
597
- bundle claims now match observed behavior.
598
-
599
- ### Artifacts
600
-
601
- - `dist/ltcai-4.3.1-py3-none-any.whl`
602
- - `dist/ltcai-4.3.1.tar.gz`
603
- - `dist/ltcai-4.3.1.vsix`
604
- - `ltcai-4.3.1.tgz`
605
- - `src-tauri/target/release/bundle/dmg/Lattice AI_4.3.1_aarch64.dmg`
606
-
607
- ## [4.3.0] - 2026-06-12
608
-
609
- > Portability & Product Hardening release candidate. v4.3.0 preserves the
610
- > v4.2 Brain Core/storage architecture and adds user-safe portable archives,
611
- > backup/restore hardening, desktop lifecycle status, and local-only privacy
612
- > guards.
613
-
614
- ### Added
615
-
616
- - `.latticebrain` archive format v2 with encrypted graph DB, blobs, portable
617
- JSON state, workspace export bundles when present, storage metadata,
618
- provenance, public device identity metadata, manifest hashes, inspect,
619
- verify, import, restore, and restore dry-run.
620
- - FastAPI routes for archive inspect/verify/import, backup health, and admin
621
- product-hardening status.
622
- - Product-hardening status for local-only startup, storage mode, backup health,
623
- device identity, import/export permissions, external integration opt-in state,
624
- and fail-closed archive behavior.
625
- - Tauri sidecar `backend_status`, `restart_backend`, and `shutdown_backend`
626
- commands.
627
- - Release cleaner and exact-version DMG validation.
628
-
629
- ### Changed
630
-
631
- - Telegram is disabled by default; token presence alone no longer enables any
632
- external integration.
633
- - SQLite-to-Postgres live migration creates and verifies a pre-migration backup
634
- before copying data.
635
- - System settings exposes `.latticebrain` export/inspect/verify/dry-run
636
- restore/confirmed restore through real APIs.
637
- - OpenAPI client regenerated with 318 paths.
638
- - Synchronized package/runtime versions to `4.3.0`, including Tauri config and
639
- `lattice_brain.__version__`.
640
-
641
- ### Expected Artifacts
642
-
643
- - `dist/ltcai-4.3.0-py3-none-any.whl`
644
- - `dist/ltcai-4.3.0.tar.gz`
645
- - `dist/ltcai-4.3.0.vsix`
646
- - `ltcai-4.3.0.tgz`
647
- - `src-tauri/target/release/bundle/dmg/Lattice AI_4.3.0_aarch64.dmg`
648
-
649
- ## [4.2.0] - 2026-06-12
650
-
651
- > Brain Core & Storage Rebuild release. The backend Digital Brain boundary is
652
- > available through the independent `lattice_brain` package, while the v4.1.0
653
- > frontend, FastAPI contracts, and SQLite user data remain compatible.
654
-
655
- ### Added
656
-
657
- - `lattice_brain` import package with `BrainCore`, Knowledge Graph,
658
- conversation, memory/context, identity/network, archive, and storage facades.
659
- - Pluggable storage layer: `StorageEngine`, `SQLiteEngine`, `PostgresEngine`,
660
- `DockerPostgresWizard`, and `SQLiteToPostgresMigrator`.
661
- - sqlite-vec capability detection with honest `bruteforce-cosine` local vector
662
- search fallback.
663
- - Opt-in Postgres/pgvector scale setup and non-destructive SQLite-to-Postgres
664
- migration planning/copy tooling.
665
- - Live Docker-backed pgvector migration validation, including rowid-less FTS5
666
- shadow tables, row-count integrity, idempotent reruns, and fail-closed
667
- Postgres behavior.
668
- - Encrypted `.latticebrain` archive create/restore support for the SQLite brain
669
- database and blob directory.
670
- - FastAPI routes for storage status, consent-gated Docker setup,
671
- SQLite-to-Postgres migration, and encrypted archive create/restore.
672
-
673
- ### Changed
674
-
675
- - FastAPI constructs the graph/conversation runtime through
676
- `lattice_brain.BrainCore`; root and `latticeai.brain.*` imports remain
677
- compatibility shims.
678
- - OpenAPI client regenerated with 313 paths.
679
- - System settings exposes API-backed storage status, Docker setup consent, and
680
- migration planning controls.
681
- - Synchronized package/runtime versions to `4.2.0`, including Tauri config and
682
- `lattice_brain.__version__`.
683
-
684
- ### Expected Artifacts
685
-
686
- - `dist/ltcai-4.2.0-py3-none-any.whl`
687
- - `dist/ltcai-4.2.0.tar.gz`
688
- - `dist/ltcai-4.2.0.vsix`
689
- - `ltcai-4.2.0.tgz`
690
-
691
- ## [4.1.0] - 2026-06-12
692
-
693
- > Frontend & Desktop Rebuild release candidate. The existing FastAPI backend,
694
- > Brain Core, storage architecture, and agent/workflow runtime remain the
695
- > source of truth; the frontend and desktop shell are replaced by a React/Vite
696
- > desktop architecture.
697
-
698
- ### Added
699
-
700
- - React + TypeScript + Vite SPA under `frontend/`, using TanStack Query,
701
- Zustand, React Flow, Cytoscape.js, Tailwind CSS, local shadcn-style
702
- primitives, and a generated OpenAPI TypeScript client.
703
- - Tauri 2.0 desktop shell under `src-tauri/` that launches the local backend
704
- and exposes the backend origin to the SPA; Electron fallback shell retained
705
- under `desktop/electron/`.
706
- - Primary graph-first navigation: Brain, Ask, Capture, Act, Library, System.
707
- - OpenAPI export/generation script and frontend lint guard for generated-client
708
- usage, no-CDN static assets, and stale frontend references.
709
-
710
- ### Changed
711
-
712
- - `/app` now serves the built React/Vite bundle from `static/app`.
713
- - Legacy static v3 frontend assets and v3 build/lint scripts are removed after
714
- capability parity was migrated into the new React surfaces.
715
- - Release/build scripts now build Vite app assets and preserve Python, npm, and
716
- VSIX packaging flows at version `4.1.0`.
717
- - npm Python-backed scripts use `scripts/run_python.mjs` to prefer
718
- `LTCAI_PYTHON` or the repo virtualenv before falling back to system Python.
719
-
720
- ### Validation Scope
721
-
722
- - Python compile check, ruff, unit tests, live integration tests, frontend lint,
723
- TypeScript build, Playwright visual tests, desktop shell checks, no-CDN
724
- verification, release artifact validation, wheel smoke, and npm pack dry-run.
725
-
726
- ### Expected Artifacts
727
-
728
- - `dist/ltcai-4.1.0-py3-none-any.whl`
729
- - `dist/ltcai-4.1.0.tar.gz`
730
- - `dist/ltcai-4.1.0.vsix`
731
- - `ltcai-4.1.0.tgz`
732
-
733
- ## [4.0.1] - 2026-06-12
734
-
735
- > Digital Brain Platform maintenance release for commits on `main` after tag
736
- > `v4.0.0`. This release does not publish to PyPI, npm, the VS Code
737
- > Marketplace, or Open VSX; artifacts are built and attached to GitHub Release
738
- > `v4.0.1` only.
739
-
740
- ### Added
741
-
742
- - Durable async run executor for agent/workflow runs, including persisted
743
- queued/running/final states, realtime SSE progress, cooperative cancellation,
744
- and startup reconciliation of orphaned active runs.
745
- - Stable user UUID migration, centralized policy enforcement, local invitation
746
- tokens, and SQLite-backed Workspace OS state with JSON compatibility
747
- mirroring.
748
- - Complete `/app` SPA parity surfaces for account/profile/password, workspace
749
- and organization administration, invitations, snapshots/time-machine with
750
- merge-restore, activity/presence, run approvals/cancellation, workflow
751
- triggers, Brain Network pairing/push, chat context trace, and Knowledge Graph
752
- provenance coverage.
753
-
754
- ### Changed
755
-
756
- - Retired legacy static HTML/CSS/JS UI pages and legacy visual specs. Legacy GET
757
- routes now redirect into the matching `/app` surface.
758
- - Added en/ko i18n runtime coverage for the shell, routes, and new parity views,
759
- guarded by `scripts/lint_v3.mjs`.
760
- - Bumped synchronized package/runtime versions to `4.0.1`.
761
-
762
- ### Expected Artifacts
763
-
764
- - `dist/ltcai-4.0.1-py3-none-any.whl`
765
- - `dist/ltcai-4.0.1.tar.gz`
766
- - `dist/ltcai-4.0.1.vsix`
767
- - `ltcai-4.0.1.tgz`
768
-
769
- ## [4.0.0] - 2026-06-12
770
-
771
- > Digital Brain Platform. The Knowledge Graph is now the durable brain store
772
- > spine: focused `latticeai/brain/` modules own graph storage, schema, ingestion,
773
- > provenance, retrieval, and document structure, while root modules remain
774
- > compatibility shims.
775
-
776
- ### Changed
777
-
778
- - Decomposed the monolithic Knowledge Graph implementation into focused
779
- `latticeai/brain/` modules, with every new module kept below 1,500 lines.
780
- - Flipped graph writes to `nodes_v2` / `edges_v2` as the authoritative write
781
- path; legacy tables are maintained as a compatibility projection.
782
- - Added one-time pre-flip SQLite backup, `PRAGMA user_version=4`, schema-version
783
- reporting, and fail-closed protection for newer DB formats.
784
- - Added the durable async run executor for agent/workflow runs: persisted
785
- queued/running/final states, realtime SSE progress, cooperative cancellation,
786
- and startup reconciliation of orphaned active runs.
787
- - Added stable user UUID migration, centralized RBAC policy enforcement, local
788
- invitation tokens, and SQLite-backed Workspace OS state with JSON compatibility
789
- mirroring and no durable-history truncation.
790
- - Retired the legacy static UI pages in favor of the v4 `/app` SPA. Legacy GET
791
- routes redirect into `/app`; new parity views cover token-native account,
792
- workspace/org management, invitations, snapshots/time-machine with
793
- merge-restore, activity/presence, run approvals/cancellation, workflow
794
- triggers, Brain Network peer pairing/push, chat context trace, and Knowledge
795
- Graph provenance coverage, with en/ko i18n gated by frontend lint.
796
-
797
- ## [3.6.0] - 2026-06-10
798
-
799
- > Knowledge Graph First. The Knowledge Graph becomes the primary architecture:
800
- > every data source converges into it through one unified ingestion pipeline, with
801
- > formalized entities/relationships, browser/web inputs, local portability, and
802
- > per-node provenance. Lattice AI is a Digital Brain Platform — the graph is the
803
- > durable asset; models read it and are replaceable.
804
-
805
- ### Added
806
-
807
- - Unified ingestion pipeline (`latticeai/services/ingestion.py`): one entrypoint
808
- for files, folders, web URLs, browser tabs, and text — idempotent by content
809
- hash, bracketed by `pre_tool`/`post_tool`.
810
- - Knowledge Graph entities `Source`/`Repository`/`Meeting`/`Organization`/
811
- `Workflow`/`Agent` and relationships `indexed_from`/`modified_by`/
812
- `belongs_to_project`/`part_of`/`discussed_in`/`decided_by`/`generated_by`/
813
- `used_by_agent` (additive, lossless `from_legacy`).
814
- - Browser & web ingestion routes (`/api/browser/read-url`, `/ingest-current-tab`)
815
- and a Manifest V3 extension scaffold that posts only to `127.0.0.1`.
816
- - Knowledge Graph export/import (versioned JSON) and binary backup/restore
817
- (`latticeai/services/kg_portability.py`,
818
- `/api/knowledge-graph/{export,import,backup,restore,portability,provenance}`).
819
- - Provenance trail (`ingestion_provenance` table + query API) — every node is
820
- explainable.
821
- - Knowledge Graph UI tabs: Status, Sources, Capture, Backup.
822
-
823
- ### Changed
824
-
825
- - KG ingestion now fires the tool hook lifecycle (closes the v3.5.0 gap);
826
- coverage documented in `docs/RUNTIME_HOOK_COVERAGE_v3.6.0.md`.
827
- - README repositioned as a Digital Brain Platform; Vercel remains landing-only.
828
-
829
- ## [3.3.1] - 2026-06-08
830
-
831
- > v3.3.1 — Visual Product Rebuild. The `/app` frontend keeps the same runtime
832
- > behavior but receives a new product shell, navigation hierarchy, visual token
833
- > system, and readiness-focused primary views.
834
-
835
- ### Changed
836
-
837
- - Rebuilt the global `/app` shell with a denser command rail, grouped
838
- Basic/Advanced/Admin navigation, local retrieval readiness footer, quiet
839
- topbar, and mode-aware command palette.
840
- - Reorganized production navigation to Basic (Home, Chat, Files, Search,
841
- Knowledge, Memory, Models, Settings), Advanced (Agents, Workflows, Skills,
842
- Hooks, MCP), and Admin (Users, Permissions, Audit Logs, Security, Policies,
843
- Private VPC). Compatibility-only views remain deep-linkable.
844
- - Replaced the v3.3.0 palette with cooler neutral light/dark tokens, tightened
845
- cards/panels to an 8px radius system, and compacted buttons, inputs, stats,
846
- tables, segmented controls, and empty states.
847
- - Rebuilt Home as a local readiness dashboard for backend, model, retrieval,
848
- memory, connected sources, stats, and recent activity when available.
849
- - Clarified Files manual upload versus desktop local-agent folder connection.
850
- - Added Settings runtime readiness for backend, desktop local agent, model
851
- runtime, host telemetry, and embedding provider configuration.
852
- - Fixed Chat send/stop button wiring so streaming uses a stable handler.
853
-
854
- ### Added
855
-
856
- - `VISUAL_REBUILD_NOTES_v3.3.1.md` with implementation and QA notes.
857
- - `FIGMA_SPEC.md` as the in-repo Figma-equivalent design spec for v3.3.1.
858
-
859
- ### Validation
860
-
861
- - `npm run build:assets` regenerated content-hashed v3 assets at `3.3.1`.
862
- - Package publication, deployment, tags, and GitHub Release creation were not
863
- performed.
864
-
865
- ## [3.2.0] - 2026-06-08
866
-
867
- > v3.2 — Feature-Complete Platform. Multi-agent collaboration, an agent
868
- > registry, marketplace + templates, workflow agents, autonomous planning, a
869
- > long-term memory platform + manager, and skills/hooks/tool/MCP registries are
870
- > all operable from `/app`. Enterprise (SSO/SCIM/RBAC/compliance/DLP/VPC/
871
- > governance/multi-tenant controls) remains future work.
872
-
873
- ### Added
874
-
875
- - **Agent Registry** — `latticeai/core/agent_registry.py` +
876
- `/agents/api/registry*`: built-in roles projected from `multi_agent`,
877
- persisted custom agents, capability discovery, and per-agent config.
878
- - **Hooks platform** — `latticeai/core/hooks.py` + `/api/hooks/*`: persisted
879
- lifecycle registry (pre_run/post_run/pre_tool/post_tool/agent/pipeline/
880
- workflow) with enable/disable/reorder/register/inspect.
881
- - **Long-term memory platform + Memory Manager** —
882
- `latticeai/services/memory_service.py` + `/api/memory/*`: unifies workspace
883
- memories, agent snapshots, conversation history, and KG graph/vector behind
884
- one façade; recall/inspect/prune/compact/rebuild/clear + usage/sources/health.
885
- - **Agent templates** — five named templates in `latticeai/core/marketplace.py`
886
- plus a `clone` endpoint; `MARKETPLACE_VERSION`/`PLUGIN_SDK_VERSION`/
887
- `MULTI_AGENT_VERSION` → `3.2.0`.
888
- - **MCP Manager surface** — `create_mcp_router` mounted through the tools router
889
- in `server_app`, reviving `/mcp/*`, `/skills/marketplace`,
890
- `/plugins/directory`, `/mcp/call`.
891
- - **Eight `/app` views** — memory, planning, workflows, marketplace, skills,
892
- hooks, tools, mcp; a Platform nav group; fallback-safe `api.js` adapters.
893
- - **Release claim audit** — `docs/V3_2_AUDIT.md` records a strict 20-claim
894
- PASS/PARTIAL/FAIL matrix with implementation evidence, fixes, validation,
895
- artifact readiness, and release metadata policy.
896
-
897
- ### Changed
898
-
899
- - Version bumped to 3.2.0 across Python, npm, the VS Code extension, the v3
900
- asset manifest, and runtime version constants.
901
- - `/app#/agents` now exposes the Agent Registry API directly, including
902
- registry metadata, capability discovery, enablement, and custom-agent
903
- registration.
904
- - `/app#/skills` now normalizes the live `/workspace/skills` response shape
905
- (`installed`, `available`, and object/array `registry`) instead of only a
906
- legacy `skills` array.
907
- - MCP/skills/plugin-directory routes are mounted once through the tools router;
908
- route compatibility tests now guard against duplicate public path/method
909
- registrations.
910
-
911
- ### Notes
912
-
913
- - Validation covered lint, typecheck, Python compile, 365 unit tests, live
914
- integration tests, 90 Playwright tests, real `/app` browser route validation,
915
- Python/npm/VSIX builds, and exact-version release artifact validation.
916
- - No packages were published and nothing was deployed.
917
-
918
- ## [3.1.0] - 2026-06-07
919
-
920
- > v3.1 — Mainline Product Platform Completion. `/app` is now the full
921
- > non-enterprise local-first workspace: Classic pages are compatibility routes,
922
- > production embedding profiles are explicit, AgentRuntime and registries are
923
- > the integration boundaries, and v3 runtime assets are hash-manifested.
924
-
925
- ### Added
926
-
927
- - **Hashed asset pipeline** — `npm run build:assets` writes
928
- `static/v3/asset-manifest.json`, hashed CSS/JS siblings, and import-rewritten
929
- ES modules. `/app` reads the manifest and loads hashed assets automatically.
930
- - **Production embedding profiles** — local `bge-m3`, `nomic-embed-text`,
931
- `e5-large`, `gte-large`; Ollama `nomic-embed-text`, `mxbai-embed-large`,
932
- BGE-M3-compatible providers; MLX Apple Silicon profiles; and
933
- OpenAI-compatible `text-embedding-3-small` / `text-embedding-3-large`.
934
- - **Native model lifecycle controls** — `/app#/models` now calls the real
935
- `/models/load` and `/models/unload/{model_id}` endpoints.
936
-
937
- ### Changed
938
-
939
- - **Classic retirement** — normal user workflows no longer link to Classic
940
- Chat, Classic Runtime, or Classic Admin. Compatibility routes remain available
941
- for rollback/debug.
942
- - **Truthful unavailable states** — v3 fallback adapters return empty
943
- unavailable payloads instead of sample data, fake counters, or fabricated
944
- health.
945
- - **Release metadata** — package, npm, VS Code extension, Workspace OS, docs,
946
- and expected artifacts are aligned at `3.1.0`.
947
-
948
- ### Validation
949
-
950
- - Release target: `npm run lint`, `npm run typecheck`, `npm run check:python`,
951
- backend/integration tests, Playwright visual tests, `python -m build`,
952
- `npm run build`, `npm pack`, VSIX package, and exact-version artifact
953
- validation.
954
-
955
- ## [3.0.0] - 2026-06-07
956
-
957
- > v3 — Local-first AI Workspace Platform. The hybrid-search
958
- > backend and the token-native `/app` workspace shell now ship together: the
959
- > shell's adapters call the real v3 retrieval APIs, and Chat is a first-class
960
- > native view (no link-out to the legacy page). Legacy `/chat` remains available
961
- > as a rollback/debug path.
962
-
963
- ### Added — Backend retrieval
964
-
965
- - **Hybrid search API** — added `/api/search/hybrid`, `/api/search/keyword`,
966
- `/api/search/vector`, `/api/graph`, `/api/graph/node`,
967
- `/api/graph/relationship`, `/api/index/status`, and `/api/index/rebuild`.
968
- - **SQLite vector index** — added local deterministic embeddings,
969
- `vector_embeddings`, and `vector_index_operations` for incremental indexing,
970
- rebuilds, and status monitoring.
971
- - **Embedding status** — the default `lattice-local-hash-v1` embedder is a
972
- deterministic local fallback, not a production semantic embedding model.
973
- Future providers may include Ollama, MLX, OpenAI-compatible providers, and
974
- other local embedding runtimes.
975
- - **Graph retrieval helpers** — added node lookup, relationship search, bounded
976
- traversal, neighbor expansion, and service-level result fusion.
977
- - **Backend architecture doc** — added `docs/V3_BACKEND_ARCHITECTURE.md` with
978
- storage, search, API, and migration details.
979
-
980
- ### Added — Native app shell (`/app`)
981
-
982
- - **Unified app shell** (`static/v3/`) — nav rail, command palette (⌘K),
983
- workspace switcher (Personal/Organization), and mode switcher
984
- (Basic/Advanced/Admin); hash-routed views for every primary and admin area
985
- (Home, Chat, Knowledge Graph, Hybrid Search, Files, Pipeline, Agents, Models,
986
- My Computer, Settings, and Admin · Users/Permissions/Audit/Security/Policies/
987
- Private VPC).
988
- - **Native Chat view** — a first-class 3-pane chat (conversations · thread ·
989
- retrieval context) wired to the real backend (`POST /chat` SSE + `/history/*`)
990
- with streaming, empty/error/loading states; surfaces Knowledge Graph, Vector,
991
- Hybrid Search, and indexed-file context per answer. The legacy `/chat` page
992
- stays reachable but is no longer the primary chat experience.
993
- - **Primary entry behavior** — `/app` is the product entry after login and SSO;
994
- the PWA manifest starts at `/app`.
995
- - **Retrieval identity** — Knowledge Graph + Vector Index + Hybrid Search are
996
- surfaced as a first-class "retrieval lattice" on Home and a live index chip.
997
- - **Token-native design system** — `static/v3/css/lattice.*.css` built on top of
998
- `tokens.css` with no dependency on the legacy override layers; full light/dark
999
- and desktop/tablet/mobile support.
1000
- - **Integration adapters** — `static/v3/js/core/api.js` calls the real v3
1001
- endpoints and degrades to clearly-badged sample data; no backend logic in the UI.
1002
-
1003
- ### Validation
1004
-
1005
- - Backend coverage includes v3 indexing, migration status, vector retrieval,
1006
- graph relationship traversal, hybrid result fusion, and API contract tests.
1007
- - Frontend coverage: `tests/visual/v3.spec.js` and `scripts/lint_v3.mjs` (wired
1008
- into `npm run lint`); see `docs/V3_FRONTEND.md` for IA + design decisions.
1009
- - Release preparation builds exact `3.0.0` Python, npm, and VSIX artifacts.
1010
- Package-store publication remains manual and is not triggered by pushing the
1011
- release tag.
1012
-
1013
- > Frontend Product Shell Redesign — workspace navigation, auth entry, and shared
1014
- > product surfaces were realigned around the local-first AI workspace model
1015
- > without changing backend contracts.
1016
-
1017
- ### Changed
1018
-
1019
- - **Workspace IA** — the workspace shell now separates primary user workflows,
1020
- admin controls, and runtime tooling, with Basic, Advanced, and Admin modes.
1021
- - **Navigation** — Chat and Workspace navigation now use consistent labels for
1022
- Home, Chat, Knowledge Graph, Files, Pipeline, My Computer, Search, and
1023
- organization administration.
1024
- - **Design tokens** — shared product surfaces moved away from the prior
1025
- lavender-heavy treatment toward neutral work surfaces with blue, teal, and
1026
- amber accents.
1027
- - **Auth surface** — account screens use the same token-native product shell as
1028
- the workspace experience and hide decorative background elements.
1029
-
1030
- ### Validation
1031
-
1032
- - Frontend validation includes lint, Python checks, browser-rendered workspace
1033
- smoke checks, and Playwright visual regression coverage.
1034
- - Production build output was intentionally not generated for this frontend-only
1035
- redesign pass.
1036
-
1037
- ## [2.2.7] - 2026-06-05
1038
-
1039
- > Visual Stabilization Release — browser-rendered screens were reviewed and
1040
- > polished until Chat, onboarding, graph, Workspace OS, and operational panels
1041
- > felt like one product.
1042
-
1043
- ### Fixed
1044
-
1045
- - **Chat composer haze** — removed the dark-mode white/milky bottom composer
1046
- effect and the legacy inner textarea border; the shell now owns the focus
1047
- state and the attachment/send controls stay readable.
1048
- - **Knowledge Graph canvas** — replaced the washed-out light graph work surface
1049
- with an intentional dark canvas treatment.
1050
- - **Workspace OS dark surfaces** — relationship/list cards, inputs, tags,
1051
- health cards, and capability cards no longer fall back to hardcoded white.
1052
- - **Onboarding/modals** — workspace select, PC environment analysis,
1053
- recommendation result, auto setup, mode select, pipeline, My Computer,
1054
- profile, settings, Private VPC, and model-state panels now share the same
1055
- dark panel language.
1056
- - **Account dark contrast** — account/register logo text, inputs, and window
1057
- controls remain readable in dark mode.
1058
-
1059
- ### Changed
1060
-
1061
- - **Cache-busting** — all versioned frontend assets now use `?v=2.2.7`,
1062
- including `/static/scripts/chat.js?v=2.2.7`.
1063
- - **Version sync** — Python package, npm package, VS Code extension, Workspace
1064
- OS, lockfiles, and runtime metadata aligned at `2.2.7`.
1065
-
1066
- ### Validation
1067
-
1068
- - Release target includes Python compile/pytest, npm lint/typecheck/test/build,
1069
- Python build + twine check, npm pack, VSIX package, and Playwright visual QA.
1070
- - Package-store publishing remains manual; release artifacts are version-scoped
1071
- and must use exact `2.2.7` filenames.
1072
-
1073
- ## [2.2.5] - 2026-06-04
1074
-
1075
- > Release Hygiene Hotfix — dark-mode overlay clarity, modal state protection,
1076
- > static asset version alignment, favicon routing, and Telegram log redaction.
1077
-
1078
- ### Added
1079
-
1080
- - **Modal manager** — Chat overlays now share one blocking-modal controller with
1081
- Escape close, backdrop close, pagehide/navigation cleanup, and body scroll-lock
1082
- restoration.
1083
- - **Favicon asset** — `static/favicon.ico` is packaged and served by
1084
- `/favicon.ico`.
1085
- - **Sensitive-log helper** — Telegram bot tokens are normalized to
1086
- `bot123:REDACTED` before HTTP, exception, or response text reaches logs.
1087
- - **Validation coverage** — unit tests for token masking and static release
1088
- hygiene, plus Playwright checks for modal stack behavior and favicon response.
1089
-
1090
- ### Changed
1091
-
1092
- - **Overlay theme tokens** — full-screen overlays use `--overlay-scrim` and no
1093
- blur-heavy backdrop, preventing washed-out dark-mode UI.
1094
- - **Surface token coverage** — modal, drawer, file manager, My Computer,
1095
- onboarding, model switcher, pipeline, and admin surfaces are remapped to
1096
- semantic tokens (`--modal`, `--surface`, `--surface-elevated`, `--input`).
1097
- - **Cache-busting** — all versioned frontend assets now use `?v=2.2.5`, including
1098
- `/static/scripts/chat.js?v=2.2.5`.
1099
- - **Version sync** — Python package, npm package, VS Code extension, Workspace
1100
- OS, lockfiles, and runtime metadata aligned at `2.2.5`.
1101
-
1102
- ### Validation
1103
-
1104
- - Release target includes Python compile/pytest, npm lint/typecheck/test/build,
1105
- Python build + twine check, npm pack, VSIX package, and Playwright visual QA.
1106
- - Package-store publishing remains manual; release artifacts are version-scoped
1107
- and must use exact `2.2.5` filenames.
1108
-
1109
- ## [2.2.1] - 2026-06-04
1110
-
1111
- > Frontend / UX Overhaul Release — Lattice AI keeps feature behavior stable
1112
- > while improving responsive layout, theme handling, accessibility, graph UX,
1113
- > admin tables, file attachment, and release packaging readiness.
1114
-
1115
- ### Added
1116
-
1117
- - **Light/dark mode** — OS detection, manual theme toggle, and persisted theme
1118
- state.
1119
- - **File attachment UX** — drag-and-drop and screenshot paste support for
1120
- attachments.
1121
- - **Knowledge Graph controls** — zoom buttons, fullscreen, minimap,
1122
- relationship filter, mobile graph/card view, and theme-aware palette.
1123
-
1124
- ### Changed
1125
-
1126
- - **Responsive UI** — phone/tablet/laptop/desktop/ultrawide/4K layouts now use
1127
- mobile-first reflow. Content is not hidden on smaller screens.
1128
- - **Design tokens** — `static/css/tokens.css` is the single source of truth for
1129
- UI tokens, and theme styling no longer depends on `!important`.
1130
- - **Accessibility** — 44px touch targets, `:focus-visible` focus rings,
1131
- keyboard-safe chat composer behavior, iOS no-zoom inputs, and reduced-motion
1132
- support.
1133
- - **Admin UX** — wide admin tables reflow to mobile cards with larger touch
1134
- targets and light/dark support.
1135
- - **Model cards** — country, company, run mode, and internet usage are shown in
1136
- plain language.
1137
- - **Manual release scripts** — local publish scripts now build exact-version
1138
- artifacts before upload and validate the same artifact set used by CI.
1139
- - **Marketplace positioning** — README, VS Code Marketplace/Open VSX README,
1140
- npm metadata, VSIX metadata, and release copy now use the local-first AI
1141
- workspace / AI pipeline / Knowledge Graph / multi-agent workflow positioning.
1142
- - **Release media refresh** — v2.2.1 screenshots and demo GIF regenerated from
1143
- the live local app under `docs/images/`.
1144
-
1145
- ### Validation
1146
-
1147
- - Unit/integration suites, Python build, npm pack, VSIX package, and
1148
- exact-version release artifact validation are the release targets.
1149
- - Package-store publishing remains manual and must use the exact 2.2.1
1150
- filenames.
1151
-
1152
- ## [2.2.0] - 2026-06-04
1153
-
1154
- > Multimodal-First Knowledge OS Release — Lattice AI is aligned around the
1155
- > Knowledge Graph, multimodal inputs, source disclosure, and Gemma-4-first model
1156
- > recommendations.
1157
-
1158
- ### Added
1159
-
1160
- - **Source disclosure metadata** — recommended model catalog entries now include
1161
- maker country, maker company, execution method, internet requirement, and
1162
- model name.
1163
- - **Principle documents** — added root-level `PROJECT_PRINCIPLES.md`,
1164
- `AI_PHILOSOPHY.md`, `MODEL_POLICY.md`, `KNOWLEDGE_GRAPH.md`,
1165
- `RELEASE_NOTES.md`, `ARCHITECTURE.md`, and `CHANGELOG.md`.
1166
- - **Gemma-4 default path** — default local model configuration and recommendation
1167
- aliases now center on Gemma 4 12B/31B multimodal models.
1168
-
1169
- ### Changed
1170
-
1171
- - **README / architecture rewrite** — current docs now describe Lattice AI as an
1172
- AI Knowledge Graph workspace rather than a chat app or model launcher.
1173
- - **Multimodal recommendation logic** — local recommendation catalogs and setup
1174
- flows use current multimodal model families only: Gemma 4, Qwen3-VL, and
1175
- Llama 4.
1176
- - **Mode language** — basic and advanced modes are feature-equivalent and differ
1177
- by explanation level; admin mode remains the authority boundary.
1178
- - **Runtime policy** — Apple Silicon local execution now checks MLX-VLM instead
1179
- of MLX-LM.
1180
- - **Version sync** — Python package, npm package, VS Code extension, Workspace
1181
- OS, runtime constants, FastAPI app, and `/health` metadata aligned at `2.2.0`.
1182
-
1183
- ### Removed
1184
-
1185
- - MLX-LM as a current local text-only recommendation/install path.
1186
- - Text-only low-spec fallback recommendations.
1187
- - Current recommendation entries for Gemma 2, Gemma 3, Qwen2.5-VL, SmolLM,
1188
- Phi, Mistral, DeepSeek, GPT-OSS, and Llama 3.x.
1189
-
1190
- ### Validation
1191
-
1192
- - Unit tests added/updated for multimodal catalog policy, source metadata,
1193
- Gemma-4 aliases, and version metadata.
1194
- - Package-store publishing remains manual; release artifacts are version-scoped
1195
- and must use exact filenames.
1196
-
1197
- ## [2.1.0] - 2026-06-01
1198
-
1199
- > Agent Platform Maturity Release — v2.1 operationalizes the v2.0 platform
1200
- > without redesigning it. Agent handoff, context packets, review/retry loops,
1201
- > timeline replay, memory snapshots, planning records, marketplace templates,
1202
- > and realtime execution observability are now first-class and additive.
1203
-
1204
- ### Added
1205
-
1206
- - **Explicit agent handoff** — handoff records now include `handoff_id`,
1207
- source/target agent ids, reason, task summary, context packet, status, and
1208
- timestamps. Handoffs are workspace-scoped, persisted, inspectable, and replayable.
1209
- - **Agent context packets** — structured transfer packets include objective,
1210
- task summary, workspace/graph/memory/workflow context, plugin outputs,
1211
- constraints, reviewer notes, and retry metadata with obvious secret fields
1212
- redacted before persistence.
1213
- - **Review / retry loops** — Planner -> Executor -> Reviewer records plan review,
1214
- reviewer outcomes (`approve`, `reject`, `retry`), retry history, retry limits,
1215
- reviewer notes, and failure propagation.
1216
- - **Timeline / replay** — agent and workflow runs expose replay support through
1217
- persisted frames that show actor, time, reason, input, output, and decision.
1218
- UI pages add replay viewers for agent and workflow runs.
1219
- - **Agent memory and planning** — `short_term`, `workspace`, and `long_term`
1220
- memory scopes are supported, memory snapshots are workspace-scoped and
1221
- replayable, and agent plans persist with plan-review metadata.
1222
- - **Workflow / agent / plugin hardening** — plugin output enters agent context,
1223
- agent output enters workflow output, retry paths are bounded, and failures
1224
- propagate into run status and realtime events.
1225
- - **Marketplace foundation** — local Plugin, Workflow, and Agent templates with
1226
- metadata, export/import, install hooks, and a template registry. No cloud
1227
- marketplace service is introduced.
1228
- - **Realtime execution observability** — existing SSE feed emits
1229
- `agent_started`, `handoff_created`, `handoff_accepted`, `handoff_completed`,
1230
- `review_requested`, `review_approved`, `retry_requested`,
1231
- `workflow_started`, `plugin_started`, `plugin_completed`, `execution_failed`,
1232
- and related workspace-scoped events.
1233
-
1234
- ### Changed
1235
-
1236
- - Python package, npm package, VS Code extension, workspace, FastAPI app, and
1237
- `/health` version metadata aligned at `2.1.0`.
1238
- - Multi-Agent Runtime, Plugin SDK, Workflow Engine, and Realtime surface
1239
- versions now report `2.1.0`.
1240
- - Platform UI pages for agents, workflows, plugins, and activity now expose
1241
- handoff chains, review panels, retry history, replay, templates, and plugin
1242
- execution visibility.
1243
-
1244
- ### Validation
1245
-
1246
- - Unit coverage added for handoff/context persistence, review/retry history,
1247
- memory snapshots, replay, workflow-agent-plugin output propagation,
1248
- marketplace template install, and realtime execution events.
1249
- - Package-store publishing remains manual; release artifacts are version-scoped.
1250
-
1251
- ## [2.0.0] - 2026-06-01
1252
-
1253
- > Multi-Agent Workflow Platform — Lattice AI becomes a local-first **Agentic
1254
- > Workspace Platform** with four integrated subsystems: Plugin SDK, Workflow
1255
- > Designer, Multi-Agent Runtime 2.0, and Realtime Collaboration. Backward
1256
- > compatible and additive: API paths/schemas, `server:app`,
1257
- > `latticeai.server_app.app`, CLI, Workspace/Chat/Model/MCP/KG APIs, existing
1258
- > skills/snapshots/memories/agent & workflow history, and VS Code extension
1259
- > commands remain stable. New workspace state keys (`plugin_registry`,
1260
- > `workflow_runs`) are backfilled on load via deep-merge — no destructive
1261
- > migration.
1262
-
1263
- ### Added
1264
-
1265
- - **Plugin SDK** (`latticeai/core/plugins.py`, `latticeai/api/plugins.py`) —
1266
- `plugin.json` manifest, an allow-listed permission model, discovery,
1267
- validation, lifecycle (install/enable/disable/uninstall), and a permissioned
1268
- execution boundary. Plugins **extend** the existing skill registry (installing
1269
- a plugin registers its bundled skills) rather than replacing skills. Ships two
1270
- example plugins (`plugins/hello-world`, `plugins/git-insights`). Routes under
1271
- `/plugins/registry`, `/plugins/validate`, `/plugins/install`, `/plugins/enable`,
1272
- `/plugins/disable`, `/plugins/uninstall`, `/plugins/execute`, page `/plugins/sdk`.
1273
- - **Workflow Designer** (`latticeai/core/workflow_engine.py`,
1274
- `latticeai/api/workflow_designer.py`) — node-based workflows
1275
- (trigger/tool/skill/plugin/agent/condition/output), validation, a bounded
1276
- deterministic execution engine, run history, and JSON export/import. Legacy
1277
- `steps`-list workflows are auto-normalized so pre-2.0 history still runs.
1278
- Routes under `/workflows/api/*`, page `/workflows`.
1279
- - **Multi-Agent Runtime 2.0** (`latticeai/core/multi_agent.py`,
1280
- `latticeai/api/agents.py`) — Planner/Executor/Reviewer/Researcher/Release role
1281
- orchestration with handoff, bounded retry, and an observable timeline; runs
1282
- persist to agent history + knowledge graph + timeline. Deterministic by
1283
- default (no LLM required) with an injectable role runner. Routes under
1284
- `/agents/api/*`, page `/agents`.
1285
- - **Realtime Collaboration** (`latticeai/core/realtime.py`,
1286
- `latticeai/api/realtime.py`) — in-process pub/sub bus, presence, and an
1287
- activity feed over SSE. Wired as the workspace `event_sink`, so every
1288
- timeline event flows to the feed automatically. Workspace isolation enforced;
1289
- single-user local mode preserved. Routes `/realtime/stream` (SSE),
1290
- `/realtime/feed`, `/realtime/presence*`, page `/activity`.
1291
- - **Cross-system integration** (`latticeai/services/platform_runtime.py`) —
1292
- workflows can run tools/skills/plugins/agents; agent runs can run
1293
- plugins/workflows; graph entities link to workflow runs and agent runs; all
1294
- activity surfaces in the unified timeline + realtime feed. Recursion is bounded
1295
- by construction.
1296
- - **Platform UI** — `static/plugins.html`, `workflows.html`, `agents.html`,
1297
- `activity.html` (+ shared `static/platform.css`, `static/scripts/platform.js`),
1298
- linked from the Workspace dashboard.
1299
- - **Docs** — `docs/V2_ARCHITECTURE.md`, `docs/PLUGIN_SDK.md`,
1300
- `docs/WORKFLOW_DESIGNER.md`, `docs/MULTI_AGENT_RUNTIME.md`,
1301
- `docs/REALTIME_COLLABORATION.md`.
1302
-
1303
- ### Changed
1304
-
1305
- - Python package, npm package, VS Code extension, workspace, FastAPI app, and
1306
- `/health` version metadata aligned at `2.0.0`.
1307
- - `server_app` cross-system wiring extracted into
1308
- `latticeai/services/platform_runtime.py` to keep the assembly file lean.
1309
-
1310
- ### Validation
1311
-
1312
- - Unit (incl. new plugin/workflow/multi-agent/realtime suites), integration
1313
- smoke, startup/import, route-compatibility (full v1.x baseline preserved),
1314
- and release-artifact checks. Package-store publishing remains manual.
1315
-
1316
- ## [1.7.0] - 2026-06-01
1317
-
1318
- > Graph & Collaboration Release — Graph Canvas interactions, Enterprise Admin
1319
- > UI, Skill Marketplace completion, Workspace Health, screenshot automation, and
1320
- > Playwright visual smoke coverage. Backward compatible: API paths/schemas,
1321
- > `server:app`, `latticeai.server_app.app`, CLI, Workspace/Chat/Model/MCP/KG
1322
- > APIs, and VS Code extension commands remain stable.
1323
-
1324
- ### Added
1325
-
1326
- - **Graph Canvas** — node expand/collapse, focused subgraphs, relationship
1327
- highlighting, shortest-path visualization, URL/node click-through navigation,
1328
- and source/conversation actions. Uses existing graph/relationship APIs; no
1329
- schema change or destructive migration.
1330
- - **Enterprise Admin UI** — `/admin#enterprise` now surfaces Admin Policies,
1331
- Audit Export, SIEM Export preview, Organization Settings, and Enterprise
1332
- Capability Status. Community remains fully functional and ungated.
1333
- - **Skill Marketplace completion** — install progress (Download → Validate →
1334
- Ready), validation status, recommended/popular/update surfaces, version
1335
- metadata, and source metadata.
1336
- - **Workspace Health Dashboard** — indexed files, graph nodes, graph
1337
- relationships, installed skills, memory entries, agent runs, current model,
1338
- last sync time, and workspace status.
1339
- - **Screenshot automation** — `scripts/capture/` contains reproducible
1340
- Playwright capture scripts for workspace, graph, skills, enterprise, and
1341
- onboarding screenshots.
1342
- - **Visual smoke tests** — `tests/visual/*` plus `.github/workflows/visual.yml`
1343
- run Workspace, Graph, Skills, Organization, and Enterprise screen checks on
1344
- PR/push and nightly schedule with failure artifacts.
1345
-
1346
- ### Changed
1347
-
1348
- - Python package, npm package, VS Code extension, workspace, FastAPI app, and
1349
- `/health` version metadata aligned at `1.7.0`.
1350
- - CI package validation is version-scoped instead of a broad `dist/*` check.
1351
-
1352
- ### Validation
1353
-
1354
- - Unit, integration, startup/import, route compatibility, MCP, model endpoint,
1355
- visual smoke, VSIX build, and release artifact validation are the release
1356
- target checks. Package-store publish remains manual only.
1357
-
1358
- ## [1.6.0] - 2026-06-01
1359
-
1360
- > Product Experience Deepening — user-facing UX (Knowledge Graph explorer,
1361
- > workspace summary, model recommendation 2.0, skill marketplace tabs, Enterprise
1362
- > capability panel) and a refresh of `docs/images/*` to **real captured UI**
1363
- > screenshots. Not a refactor: API paths, request/response schemas, `server:app`,
1364
- > CLI, MCP, and the Knowledge Graph contract are unchanged. The only code changes
1365
- > are additive frontend (`static/`) and version metadata.
1366
-
1367
- ### Added
1368
-
1369
- - **Knowledge Graph Explorer (workspace)** — an Entity Explorer (importance-
1370
- ranked entity cards + search) with a detail panel showing inbound/outbound
1371
- relationships, related entities, and the shortest path back to you; plus a
1372
- Recent Activity feed and a Workspace Memory feed. Built entirely on the existing
1373
- `/knowledge-graph/graph` and `/workspace/relationships/*` endpoints (additive
1374
- UI, no new API, no schema change).
1375
- - **Workspace summary & quick-switch** — a "Current Workspace" card (active
1376
- workspace, role, members, scoped counts) and one-click switch chips, preserving
1377
- `workspace_id` scoping and the owner/admin/member/viewer model.
1378
- - **Model Recommendation 2.0** — the onboarding recommendation panel now shows a
1379
- machine summary (OS/RAM/GPU/engine), a "best for this PC" callout with the
1380
- reason, estimated RAM, and next step, per-family status, and a cloud caution.
1381
- Estimates are labelled and conservative.
1382
- - **Skill Marketplace tabs** — Recommended / Popular / Installed / Updates tabs
1383
- with version, category, and source, plus install / enable / disable actions on
1384
- the existing skill lifecycle API.
1385
- - **Enterprise capability panel** — a 12-capability status matrix in the workspace
1386
- (Community reports all disabled; nothing gates a Community feature).
1387
-
1388
- ### Changed
1389
-
1390
- - **Real UI visuals** — `docs/images/{hero.gif,onboarding,model-recommendation,
1391
- workspace,graph,organization,skills,enterprise}` are now **real screenshots**
1392
- captured from the running app with Playwright + headless Chrome (the v1.5.0
1393
- set was structural diagrams). `architecture.png` remains a structural diagram.
1394
- README references the new real screenshots with no broken links.
1395
- - Python package, npm package, VS Code extension, FastAPI app, and `/health`
1396
- version metadata aligned at `1.6.0`.
1397
-
1398
- ### Validation
1399
-
1400
- - Unit tests pass; route-compatibility, startup/import, streaming, model-endpoint,
1401
- MCP/KG, and workspace/org permission tests preserved; `npm run check:python`
1402
- green; new UI verified rendering in a real browser via Playwright; VSIX build
1403
- verified. Test/build/packaging artifacts only — no package-store publish.
1404
-
1405
- ## [1.5.0] - 2026-06-01
1406
-
1407
- > Unified Product Release — CI/VSIX recovery, hardware-aware local model
1408
- > recommendation, model-catalog extraction, an Enterprise PoC seam, and a
1409
- > product-page README with an up-to-date architecture diagram. The public route
1410
- > contract, schemas, `server:app`, CLI, UI, and VS Code integration are
1411
- > unchanged.
1412
-
1413
- ### Fixed
1414
-
1415
- - **VSIX / `npm ci` (ETARGET)** — `vscode-extension/package-lock.json` pinned a
1416
- non-existent `@azure/core-tracing@^1.4.0` (the registry's latest is `1.3.1`),
1417
- breaking `npm ci` and the GitHub Actions VSIX build. The lockfile is
1418
- regenerated so the published `^1.3.0` ranges resolve; `npm ci` → `npm run
1419
- compile` → `vsce package` is green again.
1420
-
1421
- ### Added
1422
-
1423
- - **Local model recommendation** — `latticeai/services/model_recommendation.py`
1424
- classifies the model catalog into **recommended / compatible / not_recommended**
1425
- from a detected system profile (OS/RAM/CPU/GPU/disk), grouped by family
1426
- (Gemma, Qwen, Llama, Phi, DeepSeek, …). Exposed at `GET /models/recommendations`
1427
- and folded into `/workspace/onboarding/model-recommendations` as a `catalog`
1428
- field. Covered by `tests/unit/test_model_recommendation.py`.
1429
- - **Enterprise PoC surfaces** — `latticeai/core/enterprise_admin.py` plus
1430
- `GET /admin/enterprise` and `GET /admin/enterprise/siem-export` provide admin
1431
- policy, audit-export, SIEM-export-stub, and organization-settings views built
1432
- on the existing capability seam. Community reports every Enterprise capability
1433
- as disabled and never gates a Community feature
1434
- (`tests/unit/test_enterprise_admin.py`).
1435
- - **DeepSeek family** — added to the Ollama and llama.cpp catalogs with
1436
- identifiers chosen so the version-dedup filter is unaffected.
1437
-
1438
- ### Changed
1439
-
1440
- - **Model catalog extraction** — the static catalog (`ENGINE_MODEL_CATALOG`,
1441
- `ENGINE_INSTALLERS`, `MODEL_ENGINE_ALIASES`) and the pure version-dedup helpers
1442
- moved to `latticeai/services/model_catalog.py`, re-exported by `model_runtime`
1443
- for backward compatibility. `model_runtime.py` shrank from 1,973 to 1,721 lines
1444
- (`tests/unit/test_model_catalog.py` pins the re-export identity).
1445
- - **README rewritten as a product page** — Why / Core Capabilities / Quick Start
1446
- / Architecture / Current Release / Documentation, with structural diagrams
1447
- (`docs/images/*`) and a current architecture diagram. Historical "New in 1.x"
1448
- marketing blocks were removed from the README top (this changelog remains the
1449
- version history).
1450
- - Python package, npm package, VS Code extension, FastAPI app, and `/health`
1451
- version metadata aligned at `1.5.0`.
1452
-
1453
- ### Validation
1454
-
1455
- - 266 unit tests pass; route-compatibility, import/startup, streaming, model
1456
- endpoint, MCP/KG contract tests preserved; `npm run check:python` green; VSIX
1457
- build verified. Test/build/packaging artifacts only — no package-store publish.
1458
-
1459
- ## [1.4.0] - 2026-05-31
1460
-
1461
- > Server App Final Decomposition — chat, model runtime, tools/local/CU,
1462
- > permissions/upload, garden/setup/static, MCP, and KG glue extracted while
1463
- > preserving the public route contract.
1464
-
1465
- ### Added
1466
-
1467
- - **Final decomposition guard** —
1468
- `tests/unit/test_server_app_v14_decomposition.py` asserts
1469
- `latticeai/server_app.py` stays under the 1,500-line target, new routers and
1470
- services import independently, and version metadata is aligned.
1471
- - **New routers** — `latticeai/api/chat.py`, `latticeai/api/tools.py`,
1472
- `latticeai/api/computer_use.py`, `latticeai/api/local_files.py`,
1473
- `latticeai/api/permissions.py`, `latticeai/api/garden.py`,
1474
- `latticeai/api/setup.py`, `latticeai/api/static_routes.py`, plus
1475
- `latticeai/api/deps.py`.
1476
- - **New service seams** — `latticeai/services/model_runtime.py`,
1477
- `latticeai/services/tool_dispatch.py`, `latticeai/services/upload_service.py`,
1478
- and
1479
- `latticeai/services/app_context.py`.
1480
-
1481
- ### Changed
1482
-
1483
- - **server_app.py final decomposition** — reduced from 5,381 lines to 1,303
1484
- lines. The file now owns FastAPI construction, lifespan, middleware, static
1485
- mount, router wiring, and compatibility globals only.
1486
- - **Chat/history/agent extracted** — `/chat`, `/history*`, `/agent*`, streaming
1487
- generator, document-generation session handling, Knowledge Graph context trace recording,
1488
- and AgentRuntime wiring moved to `latticeai/api/chat.py` with behavior and
1489
- SSE chunk format preserved.
1490
- - **Model runtime/provider extracted** — provider catalogs, engine aliases,
1491
- install/download/pull/load/unload helpers, prepare-model streaming,
1492
- compatibility smoke tests, runtime feature payloads, and cloud verification
1493
- moved to `latticeai/services/model_runtime.py`.
1494
- - **Tools/local/CU/permissions/upload extracted** — `/tools/*` moved to
1495
- `latticeai/api/tools.py`, `/local/*` and KG/local-knowledge router glue moved
1496
- to `latticeai/api/local_files.py`, `/cu/*` moved to
1497
- `latticeai/api/computer_use.py`, `/permissions/*` moved to
1498
- `latticeai/api/permissions.py`, and `/upload/document` now delegates to
1499
- `latticeai/services/upload_service.py`.
1500
- - **Garden/setup/static routes extracted** — `/garden*`, `/setup*`,
1501
- `/permissions/open/*`, `/`, `/account`, `/chat`, `/admin`, `/status`,
1502
- `/manifest.json`, `/sw.js`, and `/local/sysinfo` moved to dedicated routers.
1503
- - **Docs and release metadata aligned** — README current release conflict fixed,
1504
- SECURITY supported versions updated, package metadata bumped to `1.4.0`, and
1505
- publish docs avoid unsafe `dist/*` upload commands.
1506
-
1507
- ### Validation
1508
-
1509
- - Route compatibility snapshot, import/startup checks, chat streaming contract,
1510
- model endpoint presence, MCP/KG presence, v1.4 line-count/import/version
1511
- guard, unit/integration suites, Python build, VSIX package, npm pack, twine
1512
- check, and release artifact validation all pass for `1.4.0`.
1513
-
1514
- ## [1.3.0] - 2026-05-31
1515
-
1516
- > Server app decomposition (phase 3) — safety-net suite first, then model & MCP router extraction.
1517
-
1518
- ### Added
1519
-
1520
- - **Route-compatibility safety net** — `tests/unit/test_route_compatibility.py`
1521
- freezes the full public route surface (209 paths) plus import/startup,
1522
- streaming-contract, model/engine, and MCP/KG presence checks. Any dropped or
1523
- renamed endpoint, broken import, or removed `StreamingResponse` now fails the
1524
- suite immediately. This was built **before** moving code, per the decomposition
1525
- plan.
1526
- - **Model / engine router** — `latticeai/api/models.py` (`create_models_router`)
1527
- now owns `/models*`, `/engines*` (install / verify-cloud / pull-model /
1528
- prepare-model[/stream]) and `/setup/set-api-key`. Heavy provider/runtime
1529
- helpers remain injected from server_app (no import cycle, no new import-time
1530
- side effects).
1531
- - **MCP / skills / plugins router** — `latticeai/api/mcp.py` (`create_mcp_router`)
1532
- now owns `/mcp/*`, `/skills/*`, `/plugins/directory*`, and `/mcp/call`.
1533
- Registry/tool symbols are imported directly from `mcp_registry` / `tools` /
1534
- `tool_registry`; server_app-defined helpers are injected.
1535
-
1536
- ### Changed
1537
-
1538
- - **server_app.py decomposition** — reduced from ~5,948 to ~5,382 lines by
1539
- extracting the model/engine and MCP/skills/plugins clusters (and their
1540
- request models) into the routers above. All API paths, request/response
1541
- schemas, the `server:app` import path, CLI, UI, KG/Admin/Security routers, and
1542
- VS Code integration are unchanged (asserted by the route snapshot test).
1543
- - Release metadata aligned to `1.3.0`; `/health` reports `1.3.0`.
1544
-
1545
- ### Notes
1546
-
1547
- - The chat/streaming cluster, the `/tools/*` · `/cu/*` · `/local/*` ·
1548
- `/upload` · `/permissions` clusters, and the ~1,700-line model/engine
1549
- *provider helper* block remain in server_app and are scheduled for the next
1550
- decomposition pass (the safety net now de-risks those moves). server_app.py is
1551
- not yet under the 2,000-line target.
1552
- - CI hardening from 1.0.1/1.1.0 retained (VSIX compile guard, Node.js 24,
1553
- version-scoped artifact validation — no `dist/*` glob).
1554
-
1555
- ## [1.2.0] - 2026-05-31
1556
-
1557
- > Server app modularization (routers + service layer) and workspace/org guardrail hardening.
1558
-
1559
- ### Changed
1560
-
1561
- - **server_app.py modularization (phase 2)** — reduced
1562
- `latticeai/server_app.py` from ~6,585 to ~5,948 lines by extracting the
1563
- workspace / Organization API and the health/engine-summary endpoints into
1564
- dedicated routers backed by a new service layer. `server_app` now focuses on
1565
- app assembly, lifespan, middleware, and router include. The historical
1566
- `server:app` import path, all API paths, and request/response shapes are
1567
- unchanged.
1568
- - **Workspace/Organization guardrails strengthened** — workspace-scoped reads
1569
- and writes now go through `WorkspaceService`, which gates explicitly-named
1570
- workspaces: non-members cannot read or write organization data, viewers
1571
- cannot write, members can write, and only owners/admins manage members. The
1572
- no-auth local-owner fallback for ownerless org workspaces is preserved, but a
1573
- *named* stranger never bypasses membership. `set_active_workspace` continues
1574
- to enforce membership.
1575
-
1576
- ### Added
1577
-
1578
- - **New API routers** — `latticeai/api/workspace.py`
1579
- (`create_workspace_router`) and `latticeai/api/health.py`
1580
- (`create_health_router`), mirroring the existing auth/admin router-factory
1581
- convention (no import cycle: routers receive dependencies, never import the
1582
- app).
1583
- - **New service layer** — `latticeai/services/workspace_service.py`
1584
- (`WorkspaceService`: scope resolution + permission guardrails),
1585
- `latticeai/services/model_service.py` (`ModelService`: health/engine summary
1586
- payloads), and `latticeai/services/chat_service.py` (`ChatService`: history +
1587
- answer-trace seam; the streaming chat path is unchanged and now records traces
1588
- through this façade).
1589
- - **Shared-global areas made explicit** — the local knowledge graph and
1590
- installed skills remain machine-global shared state (not partitioned per
1591
- workspace); this is now surfaced in `WorkspaceService.SHARED_GLOBAL_AREAS`,
1592
- the `/workspace/os` summary (`shared_global_areas`), and code comments.
1593
- - **Startup/modularization tests** — `tests/unit/test_server_app_modularization.py`
1594
- (import path, router registration, key route presence, no import cycle) and
1595
- `tests/unit/test_workspace_service.py` (read/write/member guardrails).
1596
-
1597
- ### Notes
1598
-
1599
- - Release metadata aligned to `1.2.0`; `APP_VERSION` continues to derive from
1600
- `WORKSPACE_OS_VERSION` and `/health` reports `1.2.0`.
1601
- - CI release hardening from 1.0.1/1.1.0 is retained (VSIX compile guard, Node.js
1602
- 24, version-scoped artifact validation — no `dist/*` glob).
1603
-
1604
- ## [1.1.0] - 2026-05-31
1605
-
1606
- > Organization Workspace foundation, open-core Enterprise seam, and CI/release hardening.
1607
-
1608
- ### Added
1609
-
1610
- - **Organization Workspace foundation** — workspace now distinguishes
1611
- `personal` and `organization` workspace types. A full workspace model
1612
- (`workspace_id`, `name`, `type`, `owner_user_id`, `members`, `roles`,
1613
- `settings`, `created_at`, `updated_at`, `status`) is stored in the existing
1614
- local-first JSON store.
1615
- - **Organization Workspace API** — create org workspace, list workspaces, get
1616
- workspace, update, archive (soft, non-destructive), add/remove member, update
1617
- member role, get workspace summary, activate workspace, and an edition info
1618
- endpoint, exposed under `/workspace/orgs/*`, `/workspace/registry`,
1619
- `/workspace/activate`, and `/workspace/editions`.
1620
- - **Workspace roles and permissions** — `owner`, `admin`, `member`, `viewer`
1621
- mapped to `read` / `write` / `manage_members` / `manage_workspace`. Owners and
1622
- admins manage settings and members; members use the workspace; viewers are
1623
- read-only. Personal workspaces always grant their local user owner rights.
1624
- - **Workspace-scoped data** — Snapshots, Memories, Agent runs, Workflows, answer
1625
- Traces, and Timeline events now carry a `workspace_id`. Reads accept an
1626
- optional `X-Workspace-Id` header / `workspace_id` query to scope results.
1627
- - **Enterprise extension seam (open-core)** — new `latticeai/core/enterprise.py`
1628
- defines an `Edition` enum (`community`/`enterprise`), an
1629
- `EnterpriseCapability` enum, and a runtime `CapabilityRegistry` that a future,
1630
- separately-distributed Enterprise plugin can attach a provider to. The
1631
- Community build ships **zero** enabled Enterprise capabilities and restricts no
1632
- Community feature. Documented in `docs/ENTERPRISE.md` and
1633
- `docs/EDITION_STRATEGY.md`.
1634
- - **Release artifact validator** — `scripts/validate_release_artifacts.py`
1635
- verifies that exactly the expected `whl`/`tar.gz`/`vsix`/`tgz` exist for a
1636
- single version, that internal versions match, that the VSIX contains
1637
- `extension/out/extension.js`, and warns when `dist/` mixes other versions.
1638
- - **workspace UI** — Personal/Organization workspace switcher, current
1639
- workspace indicator, and a minimal organization create / member / role panel
1640
- wired into the existing workspace command center.
1641
-
1642
- ### Changed
1643
-
1644
- - **CI / release hardening** — `release.yml` opts into Node.js 24
1645
- (`FORCE_JAVASCRIPT_ACTIONS_TO_NODE24`) and bumps `actions/checkout@v5`,
1646
- `actions/setup-node@v5`, `actions/setup-python@v6`. Artifact upload and
1647
- `twine check` are now scoped to the tagged version only — never a `dist/*`
1648
- glob — and the build runs the release artifact validator before upload.
1649
- - Existing 1.0.x workspace state is migrated non-destructively to the v1.1
1650
- workspace model on load; legacy records map to the Personal workspace.
1651
- - Release metadata aligned to `1.1.0` across Python, npm, VS Code extension,
1652
- FastAPI app metadata, and `/health`.
1653
-
1654
- ## [1.0.1] - 2026-05-31
1655
-
1656
- > CI packaging fix for the VS Code extension build.
1657
-
1658
- ### Fixed
1659
-
1660
- - **Release (build-only) VSIX packaging** — the `Build VSIX` job failed with
1661
- `Extension entrypoint(s) missing: extension/out/extension.js` because the
1662
- workflow ran `vsce package` without first compiling the TypeScript sources
1663
- (`vscode-extension/out/` is gitignored and absent in a clean CI checkout).
1664
- - Added a `vscode:prepublish` → `compile` (`tsc -p .`) script to
1665
- `vscode-extension/package.json` so `vsce package` always compiles the
1666
- extension entrypoint, aligning the local and CI build paths.
1667
- - Updated `.github/workflows/release.yml` to run `npm run compile` and assert
1668
- `out/extension.js` exists before packaging.
1669
-
1670
- ### Changed
1671
-
1672
- - Release metadata aligned to `1.0.1` across Python, npm, VS Code extension,
1673
- FastAPI app metadata, and `/health`.
1674
-
1675
- ## [1.0.0] - 2026-05-31
1676
-
1677
- > AI workspace integration release.
1678
-
1679
- ### Added
1680
-
1681
- - **workspace foundation** — new `/workspace` UI and `/workspace/*` API surface
1682
- organize LatticeAI around Graph, Snapshot, Memory, Agent, Workflow, Skills,
1683
- and Timeline areas while preserving existing chat, graph, admin, CLI, and MCP
1684
- compatibility.
1685
- - **First-run onboarding wizard** — reentrant step state, completion API,
1686
- hardware scan, model recommendations, folder connection state, and recovery
1687
- from failed/skipped steps.
1688
- - **Knowledge Graph context answer trace** — each generated answer records source files,
1689
- graph nodes, graph edges, confidence, retrieval metadata, graph jumps, and
1690
- source jumps.
1691
- - **Local indexing dashboard** — indexed folder status, watcher state, success
1692
- and failure counts, last scan time, graph node/edge totals, and pause/resume/
1693
- remove operations.
1694
- - **Workspace snapshots and Time Machine** — immutable snapshots capture graph,
1695
- chat, settings, indexed folders, and loaded model state. Snapshots can be
1696
- listed, viewed by area, compared, and exported as ZIP artifacts.
1697
- - **Knowledge Diff** — Snapshot A/B comparison reports nodes added/removed/
1698
- changed, edges added/removed, and decisions changed.
1699
- - **Personal Memory layer** — per-user preferences, decisions, working style,
1700
- frequently used tools, and long-term memory with CRUD/search and graph links.
1701
- - **Multi-Agent Graph** — Planner, Executor, Reviewer, Researcher, and Release
1702
- Agent entities plus agent run history and timeline recording.
1703
- - **Relationship Explorer** — inbound/outbound edge views, related entities, and
1704
- shortest-path exploration for graph nodes.
1705
- - **Local Computer Memory** — defaults OFF, requires explicit approval, tracks
1706
- activity summaries only after consent, and links approved records to graph.
1707
- - **Skill Marketplace registry** — install, uninstall, update, enable, disable,
1708
- version tracking, and metadata state surfaced in the workspace.
1709
- - **Workflow Graph** — stores workflow timelines and searchable workflow graphs
1710
- for repeatable actions such as Upload -> Summarize -> Generate -> Export.
1711
- - **VS Code workflow** — added Refactor Selection, Generate Tests, Send To
1712
- Lattice, and Ask About Current File while preserving Explain Selection.
1713
-
1714
- ### Changed
1715
-
1716
- - Release metadata aligned to `1.0.0` across Python, npm, VS Code extension,
1717
- FastAPI app metadata, `/health`, README, changelog, and release docs.
1718
- - `KnowledgeGraphStore` gained non-destructive `remove_local_source()` for
1719
- deleting only derived index/graph data while leaving user files untouched.
1720
-
1721
- ### Validation
1722
-
1723
- - Unit, integration, Python build, npm build, VSIX packaging, and package
1724
- verification were run for this release.
1725
-
1726
- ## [0.6.0] - 2026-05-31
1727
-
1728
- > Runtime / registry / config extraction release.
1729
-
1730
- ### Changed
1731
-
1732
- - **server.py thin entrypoint** — moved FastAPI app assembly and route wiring to
1733
- `latticeai.server_app`; `server.py` now preserves the historical `server:app`
1734
- import path for uvicorn, Docker, CLI scripts, and tests.
1735
- - **ToolRegistry ownership** — centralized tool dispatch, governance policies,
1736
- permission views, MCP descriptions, prompt catalog text, and file-create
1737
- metadata in `latticeai.core.tool_registry`. `tools.execute_tool()` delegates
1738
- through the registry.
1739
- - **Agent prompts separated** — moved planner / executor / critic / memory
1740
- updater prompts to `latticeai.core.agent_prompts`; `AgentRuntime` remains the
1741
- injected state-machine core in `latticeai.core.agent`.
1742
- - **Release metadata** — bumped Python package, npm package, VS Code extension,
1743
- FastAPI app, and `/health` version to `0.6.0`.
1744
-
1745
- ### Validation
1746
-
1747
- - Full test suite: 202 passed.
1748
- - Python package build, `twine check`, npm pack, and VSIX package build verified.
1749
-
1750
- ## [0.5.1] - 2026-05-31
1751
-
1752
- > KGStoreV2 정규화 스키마 + 마이그레이션 하드닝 + native API 정리(릴리스).
1753
-
1754
- ### Changed
1755
-
1756
- - **KGStoreV2 정규화 스키마** — `attrs._kg` 패스스루 제거. legacy 자유문자열
1757
- 노드/엣지 타입을 무손실 `NodeType`/`EdgeType` superset으로 정규화해 `type`에
1758
- 저장하고 원본은 신규 `legacy_type` 칼럼에 보존. summary/metadata는 1급 칼럼으로
1759
- 승격. 엣지 정체성은 `(source,target,legacy_type)`로 키잉해 정규화 충돌로 인한
1760
- 엣지 소실 방지. `kgv2_*` 재구성 뷰가 legacy read를 byte-identical하게 유지.
1761
- - **마이그레이션 하드닝** — `_init_v2_schema`의 DROP→CREATE→VIEWS→BACKFILL→
1762
- version-stamp 전 과정을 단일 트랜잭션(`BEGIN` + statement 단위 `_exec_script`)으로
1763
- 원자화. 중간 실패 시 전부 롤백되어 이전 프로젝션·`projection_version` 보존, 다음
1764
- 기동에서 재시도. 마이그레이션은 권위적 legacy `nodes`/`edges`를 절대 건드리지
1765
- 않음. 프로젝션은 legacy `title`/`summary`/`metadata_json`을 verbatim 저장해
1766
- byte-faithful(절단·키 재정렬 제거, NULL summary round-trip).
1767
- - **KGStoreV2 native API 정리** — production 미사용인 native 데이터 API
1768
- (`upsert_node`/`upsert_edge`/`get_node`/`list_nodes`/`neighbors`/`search_similar`)와
1769
- `Node`/`Edge`/`Visibility` 모델, 관련 헬퍼(`validate_endpoints`,
1770
- `EDGE_ENDPOINT_RULES`, `encode/decode_embedding`, `cosine`, row→model 변환)를
1771
- 제거. `KGStoreV2`는 스키마/초기화/heal/stats 지원 역할만 유지. `kg_schema.py`
1772
- ~870→475줄. `test_document_generation`의 직접 `KGStoreV2` 의존을 제거하고
1773
- 스키마/production 경로 검증으로 전환.
1774
-
1775
- ### Removed
1776
-
1777
- - dead code: `migrate_legacy_to_v2()` 및 관련 헬퍼/CLI `migrate` 서브커맨드,
1778
- native KGStoreV2 데이터 API 및 모델, 미사용 import(`struct`/`uuid`/`dataclasses`
1779
- /`datetime` 등).
1780
-
1781
- ### Internal
1782
-
1783
- - dual-write 불변식 런타임 진단 `_v2_sync_report()` 추가. 단위 테스트 192 통과.
1784
-
1785
- ## [0.5.0] - 2026-05-31
1786
-
1787
- > MLX 샘플링 API 호환성 버그 수정 + 릴리스 워크플로 build-only 전환.
1788
-
1789
- ### Fixed
1790
-
1791
- - **MLX `temp` kwarg 제거 대응** — `llm_router.py`의 로컬 MLX 추론 경로(텍스트/
1792
- 비전, 동기/스트리밍, 문서 생성 4계열·총 8개 호출부)가 `mlx_lm.generate` /
1793
- `mlx_vlm.generate`에 `temp=temperature`를 직접 넘기다가
1794
- `generate_step() got an unexpected keyword argument 'temp'`로 실패하던 문제
1795
- 수정. mlx_lm ≥ 0.20 / mlx_vlm는 `temp` 키워드를 제거하고 `sampler` 콜러블을
1796
- 받도록 API가 바뀌었으므로, `make_sampler(temp=...)`로 만든 sampler를
1797
- `sampler=`로 전달하도록 `_mlx_sampler()` 헬퍼를 도입.
1798
-
1799
- ### Changed
1800
-
1801
- - **릴리스 워크플로 build-only 전환** — `.github/workflows/release.yml`이 v* 태그
1802
- push 시 단위 테스트와 빌드 산출물 생성(`python -m build`, `twine check`,
1803
- `npm pack`, `vsce package`)까지만 수행. `publish-pypi`/`publish-npm`/
1804
- `publish-vscode`/`publish-ovsx` job과 GitHub Secrets 의존(`if: secrets.*`)을
1805
- 제거. 배포는 로컬에서 수동 인증 후 진행.
1806
-
1807
- ## [0.4.0] - 2026-05-31
1808
-
1809
- > Knowledge Graph v2 read/write cutover — legacy/v2 동등성 보장, dual-write
1810
- > projection, deterministic ordering, 삭제 미러링 완성. 그래프 안정화 릴리스.
1811
-
1812
- ### Changed
1813
-
1814
- - **KGStoreV2 read/write cutover 완료** — 그래프 read 메서드(`search`,
1815
- `context_for_query`, `graph`, `neighbors`, `multi_hop_context`,
1816
- `search_for_document_generation`, `stats`)와 write가 v2 store를 단일 경로로
1817
- 사용. `KnowledgeGraphStore` 공개 인터페이스는 시그니처·반환형 그대로 유지.
1818
- - **단일 read 코드 경로** — `_read_tables()`가 legacy 테이블 또는 v2 재구성
1819
- 뷰(`kgv2_nodes`/`kgv2_edges`)를 같은 코드로 조회. `LATTICEAI_KG_READ_V2`로
1820
- 소스 토글(기본 v2).
1821
-
1822
- ### Added
1823
-
1824
- - **Dual-write projection** — `_upsert_node`/`_upsert_edge`가 동일 트랜잭션에서
1825
- `nodes_v2`/`edges_v2`에 프로젝션 기록. legacy 타입 문자열을 v2 type 칼럼에
1826
- 보존하고 summary·원본 metadata_json을 `attrs._kg`에 보존해 결과 동등성 확보.
1827
- - **삭제 미러링** — `clear_all`, `delete_conversation`, 로컬 폴더 재인덱싱의
1828
- 모든 노드/엣지 삭제를 v2에 미러(`_v2_delete_nodes`/`_v2_delete_edges_from`,
1829
- edges_v2 FK cascade 활용).
1830
- - **Deterministic ordering** — 모든 그래프 read의 `ORDER BY`에 `id ASC`
1831
- tie-break 추가(엣지/이웃 쿼리 포함). legacy/v2 결과 순서가 항상 동일.
1832
- - **Legacy/V2 equivalence test suite** — `test_kg_v2_read_equivalence.py`(7개
1833
- read + dual-write + 동률 timestamp + 재upsert + 삭제 반영),
1834
- `test_kg_v2_backfill.py`(프로젝션·self-heal·idempotent).
1835
- - v2 스키마 self-heal — 구버전 init이 만든 *빈* v2 테이블의 컬럼 누락 시
1836
- drop+recreate(행이 있으면 절대 drop 안 함).
1837
-
1838
- ### Internal
1839
-
1840
- - agent 루프를 `latticeai/core/agent.py`(`AgentRuntime`+ports)로 추출, 앱 설정을
1841
- `latticeai/core/config.py`(`Config.from_env`)로 단일화, `tools.py`에 tool
1842
- registry 도입(`execute_tool` if/elif 제거). server.py 대폭 축소.
1843
- - 단위 테스트 181 passed.
1844
-
1845
- ## [0.3.2] - 2026-05-29
1846
-
1847
- > 안정화 릴리스 — 모델 current 일관성, smoke test 3분류, 보안 대시보드 timezone
1848
- > 버그 수정, 자동 그래프 한국어 노이즈 개선, README 과장 표현 정리.
1849
-
1850
- ### Model loading & UI
1851
-
1852
- - 웹 UI 모델 선택을 단일 흐름으로 통일(`selectModelByCard` → `prepareAndLoadModel`
1853
- → smoke test → `current` 반영 → 채팅 가능 여부 표시). cloud(`loadSelectedModel`)
1854
- 경로도 백엔드 `current`를 단일 진실원으로 사용. "보이는 모델 ≠ 채팅에 쓰이는
1855
- 모델" 문제 제거.
1856
- - Smoke test 결과를 **ok / degraded / failed** 3분류로 확장
1857
- (`model_compat.classify_smoke_response()`). 특수/role 토큰 누출, 폭주 반복,
1858
- 과도한 길이를 감지. `degraded`는 채팅은 가능하되 UI에 호환성 경고 표시.
1859
- `/models/load`·`/engines/prepare-model/stream` 응답의 `compatibility_status`가
1860
- 3분류 값을 그대로 노출.
1861
-
1862
- ### Security dashboard
1863
-
1864
- - **Timezone 버그 수정** — audit timestamp는 로컬 시간으로 기록되는데
1865
- "events_today"는 UTC로 계산해 한국 사용자에게 날짜가 어긋나던 문제 수정.
1866
- 새 모듈 `latticeai/core/timezones.py`로 기준 시간대를 통일(`LATTICE_TZ` /
1867
- `LTCAI_TZ` 환경변수, 기본 시스템 로컬). overview 응답에 `timezone` 필드 추가.
1868
-
1869
- ### Auto graph curator
1870
-
1871
- - 한국어 노이즈 감소 — 조사 제거, 일반어/파일확장자 blacklist, 단일 출처
1872
- 후보 score 감점(여러 출처에서 반복된 개념만 승격).
1873
-
1874
- ### Docs & tests
1875
-
1876
- - README/확장 설명의 과장 표현 완화(telemetry, skills/plugins 수치 등).
1877
- - 단위 테스트 추가: timezone, smoke 3분류, graph 노이즈, export secret redaction.
1878
- (tests/unit 149 passed)
1879
-
1880
- ## [0.3.1] - 2026-05-29
1881
-
1882
- > Model loading reliability + auto-graph curation + AI Security & Audit Command Center.
1883
- >
1884
- > 외부 리뷰 5건(모델 추천/다운로드, 사용자 직접 모델 선택, 모델 호환성 계층,
1885
- > 자동 그래프 방향, 관리자 보안/감사 대시보드) 피드백을 모두 반영했다.
1886
-
1887
- ### Model loading & inference
1888
-
1889
- - 새 모듈 `latticeai/core/model_resolution.py` — `ModelResolution`이
1890
- `input_id / engine / resolved_model / download_id / load_id / expected_current`을
1891
- 하나로 묶어 추천 카드, 다운로드, 로드, router cache, 프론트 current 표시가
1892
- 단계마다 어긋나는 문제를 제거.
1893
- - `prepare_and_load_model()` 와 `/engines/prepare-model/stream`이 동일한
1894
- `ModelResolution`을 공유하도록 통합. LM Studio처럼 `instance_id`가 부여되는
1895
- 엔진은 `resolution.update_after_load()`로 후처리.
1896
- - 로드 직후 `_smoke_test_loaded_model()`가 한국어 짧은 채팅 테스트를 실행 →
1897
- 응답에 `ready_to_chat`, `compatibility_status`, `smoke_test` 필드 추가.
1898
- Cloud 모델은 사용자 비용 발생을 피하기 위해 자동 skip.
1899
- - `/models` 응답에 `engine_options`(local_mlx / ollama / lmstudio / llamacpp /
1900
- vllm 별 실제 model_id)와 `compat_profiles` 추가.
1901
- - 새 엔드포인트 `GET /models/compat-profiles`.
1902
-
1903
- ### Model compatibility layer
1904
-
1905
- - 새 모듈 `latticeai/core/model_compat.py` — Family detection
1906
- (gpt-oss / gemma / qwen / llama / mistral / phi / deepseek …),
1907
- family 프로파일(stop tokens, disable_draft, postprocess, generation params),
1908
- `fast_postprocess`, `validate_smoke_response`, `record_smoke_result`,
1909
- `compat_cache`. 무거운 검사는 모델 로드 시 1회(Slow Path), 채팅 중에는
1910
- 캐시된 profile만 사용하는 Fast Path. 답변이 깨졌을 때만 1회 retry하는
1911
- Recovery Path 구조.
1912
-
1913
- ### Auto knowledge graph curation
1914
-
1915
- - 새 모듈 `latticeai/core/graph_curator.py` — 대화/파일/작업 로그에서
1916
- Topic candidate 추출 → alias clustering(자동 병합) → promotion 결정
1917
- (secret 차단, 중복 차단, 출처 최소치) → 파생 이야기 엣지 → 행동 시그널
1918
- 기반 큐레이션. Secret/API key/private key는 그래프 후보에서 자동 제거.
1919
-
1920
- ### Frontend — user-trusted current model
1921
-
1922
- - `static/scripts/chat.js`의 `prepareAndLoadModel` 결과에서 백엔드
1923
- `response.current`를 신뢰하고, `ready_to_chat=false` 또는
1924
- `compatibility_status=degraded`일 때 사용자에게 호환성 경고 표시.
1925
- - 모델 카드를 직접 클릭할 때도 같은 표준 흐름을 타는
1926
- `window.selectModelByCard()` 헬퍼 추가.
1927
-
1928
- ### Admin — AI Security & Audit Command Center
1929
-
1930
- - 새 라우터 `latticeai/api/security_dashboard.py`가 11개 엔드포인트 추가:
1931
- `/admin/security/{overview,users,events,events/{id},conversations/{id},`
1932
- `conversations/{id}/raw,files,files/{id},files/{id}/content,raw,export}`.
1933
- - 모든 응답에서 hard secret(`sk-…`, `ghp_…`, `xoxb-…`, `AKIA…`,
1934
- private key block 등)을 자동 redact. 원문/raw 조회는 별도
1935
- `admin_view_sensitive_raw` 감사 이벤트로 기록.
1936
- - 관리자 UI: Security Overview 카드(오늘 이벤트, High Risk, 위험 채팅/파일,
1937
- Secret/외부 전송 차단, 관리자 원문 조회 수, 검토 필요), User Risk Matrix
1938
- (stacked bar), 민감정보 유형 donut chart, 민감 채팅/위험 파일 모니터,
1939
- 감사 타임라인, Raw Data Explorer.
1940
- - 사용자별 막대 클릭 → drill-down. JSON / CSV / XLSX / PDF / TXT
1941
- 추출 지원.
1942
-
1943
- ### Tests / CI
1944
-
1945
- - 새 단위 테스트 28개 — `tests/unit/test_model_compat.py`,
1946
- `tests/unit/test_model_resolution.py`, `tests/unit/test_graph_curator.py`,
1947
- `tests/unit/test_security_dashboard.py`.
1948
- - `.github/workflows/ci.yml` syntax-check 단계에 4개 새 모듈 추가.
1949
- - 새 `.github/workflows/release.yml` — tag `v*` 푸시 시 PyPI / npm /
1950
- VS Code Marketplace / Open VSX 자동 배포(필요 secrets: `PYPI_TOKEN`,
1951
- `NPM_TOKEN`, `VSCE_PAT`, `OVSX_TOKEN`). 해당 secret이 비어 있는 job은
1952
- 자동 skip.
1953
-
1954
- ### Fixed
1955
-
1956
- - FastAPI에서 `Request` 인자에 `= None` 디폴트 사용 시 발생하던 잠재 문제 수정
1957
- (`security_dashboard.py` `/admin/security/raw`).
1958
- - `gpt-oss` family postprocess 순서를
1959
- `trim_after_user_marker → strip_role_tokens`로 보정 — `<|user|>` 마커가
1960
- 먼저 제거돼 trim이 동작하지 않던 버그.
1961
-
1962
- ## [0.3.0] - 2026-05-27
1963
-
1964
- ### Knowledge Graph — LLM Structured Output Extraction
1965
-
1966
- - `_extract_concepts()` / `_extract_triples()`를 LLM 기반으로 전환 (rule-based 폴백 유지)
1967
- - LLM Router 참조를 knowledge_graph에 주입하는 `set_llm_router()` 함수 추가
1968
- - `LATTICEAI_LLM_EXTRACTION` 환경변수로 LLM extraction on/off 제어
1969
-
1970
- ### Knowledge Graph — Hybrid Retrieval & Document Generation
1971
-
1972
- - `search_for_document_generation()` 추가 — Hybrid Score (0.5×text + 0.3×graph + 0.2×recency) 기반 검색
1973
- - `multi_hop_context()` 추가 — Seed nodes에서 N-hop 그래프 탐색
1974
- - `DOCUMENT` NodeType, `USED_IN` / `INSPIRED_BY` / `CONTRADICTS` / `EVOLVES_FROM` EdgeType 추가
1975
- - Node에 `style`, `tone`, `importance_score`, `last_used` 필드 추가 (SQLite v2 스키마 반영)
1976
-
1977
- ### 문서 자동 생성 파이프라인
1978
-
1979
- - `latticeai/core/context_builder.py` 신규 — Knowledge Graph → 구조화 Markdown Context 변환
1980
- - `latticeai/core/document_generator.py` 신규 — Intent detection + 전용 System Prompt + Session 관리
1981
- - `llm_router.py`에 `generate_document()` / `stream_generate_document()` 추가
1982
- - `/chat` 엔드포인트에서 "보고서 작성해줘" 같은 문서 생성 의도 자동 감지 → 전용 파이프라인 활성화
1983
- - 생성 문서에 참조 Knowledge Graph 노드 각주 자동 첨부
1984
- - 대화별 `DocumentGenerationSession`으로 반복 수정("이 부분 더 수정해") 지원
1985
-
1986
- ### UI/UX — 디자인 통일
1987
-
1988
- - Account/Chat/Graph/Admin 전체 페이지를 통일된 lavender purple 테마로 전환
1989
- - 다크 모드 base 스타일 완전 제거 (`.app-layout` Obsidian dark, account dark base 등)
1990
- - 초록 테마(`#22d3a0`) 60+ 인스턴스를 보라(`#6f42e8`) 계열로 교체
1991
- - 메시지 버블: 다크 green → 보라 gradient(user), 밝은 lavender glass(AI)
1992
- - 사이드바, 입력창, 버튼, 모달 오버레이 모두 라이트 lavender로 통일
1993
- - 카드/패널에 hover lift 효과, 커스텀 스크롤바, focus ring, selection 색상 추가
1994
- - tokens.css에 글로벌 polish (scrollbar, selection, focus-visible) 추가
1995
-
1996
- ### 테스트
1997
-
1998
- - `test_document_generation.py` 33개 테스트 추가 (intent detection, session, extraction, hybrid retrieval, context builder, schema v2)
1999
-
2000
- ### Release
2001
-
2002
- - 배포 버전을 `0.3.0`으로 상향
2003
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2004
-
2005
- ## [0.2.2] - 2026-05-26
2006
-
2007
- ### 모델 카탈로그
2008
-
2009
- - `GPT-OSS 20B`, `GPT-OSS 120B`, `Gemma 4 31B 4-bit`를 MLX/Ollama/vLLM/LM Studio/llama.cpp 모델 선택 및 다운로드/로드 흐름에 추가
2010
- - 엔진별 모델 목록에서 같은 패밀리의 최신 major/minor 버전이 있으면 낮은 버전 항목을 숨기도록 정리
2011
- - 설정 마법사 추천표와 RAM 티어에 새 모델을 반영
2012
-
2013
- ### 지식 그래프
2014
-
2015
- - 로컬 폴더 스캔 시 PDF, Word, PowerPoint, Excel, CSV, 텍스트/코드, OCR 이미지 등 지원 파일은 실제 본문 텍스트가 추출된 경우에만 그래프 노드로 생성
2016
- - 빈 PDF/Word/PowerPoint/Excel 파일이나 OCR이 비어 있는 파일은 `skipped_empty_text`로 기록하고 그래프에는 표시하지 않도록 변경
2017
- - 기존 버전에서 파일명/상대경로만으로 만들어진 로컬 파일 노드는 다음 스캔에서 재추출 검증 후 자동 정리
2018
- - Word 표 셀, PowerPoint 슬라이드 텍스트, Excel 실제 셀 값 추출을 보강하고 파일명 기반 개념 추출을 제거
2019
-
2020
- ### UX
2021
-
2022
- - 지식 그래프 오른쪽 사이드바의 하단 잘림 문제를 수정하고 데스크톱/모바일에서 패널, 메타데이터, 긴 경로가 자연스럽게 스크롤/줄바꿈되도록 조정
2023
-
2024
- ### Release
2025
-
2026
- - 배포 버전을 `0.2.2`로 상향
2027
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2028
-
2029
- ## [0.2.1] - 2026-05-25
2030
-
2031
- ### 버그 수정
2032
-
2033
- - **CI 테스트 import 수정** — `test_security.py`에서 `_rate_buckets` import 경로를 `server` → `latticeai.core.security`로 변경 (v0.2.0 모듈 분리에 따른 경로 변경 반영)
2034
-
2035
- ### Release
2036
- - 배포 버전을 `0.2.1`로 상향
2037
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2038
-
2039
- ---
2040
-
2041
- ## [0.2.0] - 2026-05-25
2042
-
2043
- ### server.py 모듈 분리 — latticeai/ 패키지 도입
2044
-
2045
- server.py(6,815줄)에서 핵심 로직을 `latticeai/` 패키지로 분리하여 유지보수성을 개선했습니다.
2046
-
2047
- **새 패키지 구조:**
2048
- ```
2049
- latticeai/
2050
- core/
2051
- security.py — 비밀번호 해싱, 레이트 리밋, IP 감지, 파일 매직 검증
2052
- sessions.py — 파일 기반 세션 저장소 (SessionStore 클래스)
2053
- audit.py — 감사 로깅, 민감정보 분석, 관리자 감사 리포트
2054
- api/
2055
- auth.py — 인증/SSO/프로필 API 라우터 (register, login, logout, SSO, profile)
2056
- admin.py — 관리자 API 라우터 (dashboard, users, VPC, SSO, audit)
2057
- ```
2058
-
2059
- - server.py: 6,815줄 → 6,187줄 (628줄 감소, 868줄이 5개 모듈로 분산)
2060
- - 기존 API 호환성 100% 유지 — 모든 엔드포인트 경로와 응답 동일
2061
- - `knowledge_graph_api.py` / `local_knowledge_api.py`와 동일한 팩토리 라우터 패턴 사용
2062
-
2063
- ### README 전면 개편 — 사용자 경험 중심
2064
-
2065
- - 핵심 메시지: "내 파일과 대화를 기억하고 연결하는 로컬 AI 워크스페이스"
2066
- - 기능 나열형 → 3분 워크플로 + Why 섹션 + 지식 그래프 설명
2067
- - 고급 기능(전체 기능표, 보안, 설정, API, 트러블슈팅)은 접기(details) 섹션으로 이동
2068
- - 비교표에 Knowledge Graph, Local Folder Indexing 항목 추가
2069
- - 모델 추천표에 최소 RAM 컬럼 추가
2070
- - 한국어 섹션도 경험 중심으로 재작성
2071
-
2072
- ### 보안 강화 — 패키지 설치 관리자 전용
2073
-
2074
- - `/mcp/install`: `require_user` → `require_admin` + 감사 로그
2075
- - `/skills/install`: `require_user` → `require_admin` + 감사 로그
2076
- - `/mcp/custom` POST: `require_user` → `require_admin` + 감사 로그
2077
- - pip/npm 패키지 설치는 관리자만 실행 가능, 모든 시도가 `audit_log.json`에 기록
2078
-
2079
- ### Release
2080
- - 배포 버전을 `0.2.0`으로 상향 (메이저 구조 변경)
2081
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2082
-
2083
- ---
2084
-
2085
- ## [0.1.31] - 2026-05-25
2086
-
2087
- ### 모델 추천 보정 — 하드웨어 대비 과도한 모델 방지
2088
-
2089
- - **Apple Silicon 32GB 추천 모델 하향 조정**
2090
- - 32GB Mac: `Qwen3-VL-30B-A3B` (18GB) → `Qwen3-VL-8B` (q5_K_M, 5GB) 로 변경
2091
- - 30B-A3B 모델은 48GB 이상에서만 추천 (OS 오버헤드 + KV 캐시 여유 확보)
2092
- - 32GB 시스템에서 메모리 압박으로 인한 성능 저하 방지
2093
-
2094
- - **`auto_setup.py` `_MODEL_CATALOG` 보수적 임계값 적용**
2095
- - 30B-A3B: 최소 RAM 32GB → 48GB
2096
- - 24GB VRAM 임계값 조정 (12GB로 완화하여 중급 GPU 커버)
2097
- - 각 티어 간 여유분을 확보하여 실사용 시 안정적 추론 보장
2098
-
2099
- - **`setup.py` 추천 로직 보정**
2100
- - Apple Silicon 기본 추천 30B 임계값: `ram >= 32` → `ram >= 48`
2101
- - MLX 모델 카탈로그 min_ram 상향: Qwen3-VL 30B (32→48), Gemma 3 27B (32→48), Gemma 4 26B (24→32), Mistral Small 24B (24→32), Qwen2.5 Coder 32B (32→36)
2102
- - 크로스 플랫폼(vLLM/LM Studio) 30B 모델: 전용 GPU 시스템은 min_ram=32 유지 (VRAM에 로드되므로 RAM 부담 적음)
2103
-
2104
- ### Release
2105
- - 배포 버전을 `0.1.31`로 상향
2106
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2107
-
2108
- ---
2109
-
2110
- ## [0.1.30] - 2026-05-25
2111
-
2112
- ### 코드 품질 및 리팩토링
2113
-
2114
- - **`server.py` 모듈 분리** — 7,568줄 → 6,798줄
2115
- - MCP 레지스트리 상수 + 원격 레지스트리 페치 + 스킬 마켓플레이스 + 플러그인 디렉터리 로직을 `mcp_registry.py`(791줄)로 분리
2116
- - `server.py`의 가독성과 유지보수성 대폭 향상
2117
-
2118
- - **버그 수정 6건**
2119
- - `requirements.txt`에 누락된 `pymupdf` 추가 (Docker 빌드 실패 방지)
2120
- - 비밀번호 해싱 로그 메시지 "bcrypt" → 실제 알고리즘 "scrypt"로 수정
2121
- - HuggingFace 모델 캐시 경로 `~/.latticeai/` → `~/.ltcai/`로 통일 (DATA_DIR과 일치)
2122
- - OpenRouter 모델 카탈로그: Claude 3.5 → Claude 4.x, Gemini 2.0 → 2.5 업데이트
2123
- - `.gitignore`에 임시 파일, 로그, 세션 파일 패턴 8개 추가
2124
- - 고아 파일 정리 (구버전 GIF, 캡처 스크립트 삭제)
2125
-
2126
- - **README 개선**
2127
- - v0.1.29 실제 UI에서 새로 찍은 스크린샷 3장 + 애니메이션 데모 GIF 추가
2128
- - GitHub Actions CI 배지 추가
2129
- - 스크린샷에 이모지 레이블 + 설명 캡션 추가
2130
-
2131
- ### Release
2132
- - 배포 버전을 `0.1.30`으로 상향
2133
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2134
-
2135
- ---
2136
-
2137
- ## [0.1.29] - 2026-05-25
2138
-
2139
- ### 관리자 UX 및 거버넌스 개선
2140
-
2141
- - **관리자 대시보드 섹션 분리**
2142
- - 대시보드, 사용자 관리, 권한 관리, SSO 관리, 보안 모니터링, 감사 로그가 각각 독립된 역할을 갖도록 정리
2143
- - 사용자 관리는 활성/비활성 상태를, 권한 관리는 기본/고급/관리자 모드 권한을 명확히 표시
2144
- - SSO 관리는 Okta / Microsoft Entra ID OIDC 설정 저장 및 테스트 플로우를 제공
2145
-
2146
- - **보안 모니터링 / 감사 로그 내보내기**
2147
- - 보안 모니터링 로그와 감사 로그를 각각 TXT, Excel(`.xls`), CSV로 추출 가능
2148
- - 모든 내보내기 파일에 UTF-8 BOM을 포함해 한글이 깨지지 않도록 처리
2149
- - 감사 로그의 사용자 사용량/위험도와 감사 이벤트, 보안 모니터링의 위험/준수 필드를 파일로 보존 가능
2150
-
2151
- - **전역 UX 및 언어 전환 개선**
2152
- - account/admin/chat/graph 화면의 언어 버튼 전환 시 주요 UX 텍스트가 한국어/영어로 함께 갱신되도록 개선
2153
- - 홈/채팅 화면 구조를 분리해 채팅 전환 시 상태 충돌을 줄임
2154
- - 채팅 빈 화면에서 Lattice AI의 역할과 기능을 더 명확히 안내
2155
-
2156
- - **대시보드 시각 안정화**
2157
- - 전체 사용자, 활성 메시지, 현재 모델, VPC 상태 카드의 줄바꿈/가독성 개선
2158
- - 감사 로그의 Graph nodes / Edges 수치가 `[object Object]`로 표시되던 문제 수정
2159
- - 분리된 정적 JS 파일(`static/scripts/*.js`)이 npm/PyPI 패키지에 포함되도록 배포 설정 보강
2160
-
2161
- ### Release
2162
- - 배포 버전을 `0.1.29`로 상향
2163
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2164
-
2165
- ---
2166
-
2167
- ## [0.1.28] - 2026-05-24
2168
-
2169
- ### 버그 수정: 추천 모델 ID 오류
2170
-
2171
- - **`google/gemma-4-E4B` → `mlx-community/gemma-4-e4b-it-4bit` 수정**
2172
- - 기존 ID는 HuggingFace의 BF16 풀프리시전 원본 모델 (~16GB) 로, MLX 포맷이 아니어서 `mlx_vlm.load()` 로 로드 불가능
2173
- - 올바른 MLX 4-bit 양자화 버전(`mlx-community/gemma-4-e4b-it-4bit`, 5.2GB, 43K downloads)으로 교체
2174
- - 크기 표시도 `"Next-Gen"` → `"5.2GB"` 로 실제 값으로 수정
2175
-
2176
- ### Release
2177
- - 배포 버전을 `0.1.28`로 상향
2178
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2179
-
2180
- ---
2181
-
2182
- ## [0.1.27] - 2026-05-24
2183
-
2184
- ### 로그인 페이지 UI 개선
2185
-
2186
- **Language 버튼**
2187
- - 언어 표시 버튼 라벨을 `한국어 / English` 가변 텍스트에서 `Language` 고정 텍스트로 변경
2188
- - 버튼 위치를 화면 고정(fixed) → 로그인 카드 우측 상단(absolute) 으로 이동, 화면 크기 무관하게 카드 안에 항상 위치
2189
- - 버튼 크기 약 2/3 축소 (font 13px→11px, padding 6/14px→4/9px)
2190
- - footer 하단 언어 전환 버튼 제거 (도움말·개인정보처리방침 링크만 유지)
2191
-
2192
- **로그인 카드 레이아웃**
2193
- - 카드 전체 크기 약 4/5 축소 — 너비 `min(720px)→min(460px)`, 폰트·버튼 높이·여백 비례 감소
2194
- - 타이틀 폰트 `38–54px → 28–40px`, 부제목 `24–34px → 17–24px`
2195
- - 카드 수직 위치: 타이틀바(58px)를 제외한 나머지 화면의 정중앙 배치 (`flex-direction: column` + `justify-content: center`, `padding-top: 58px`)
2196
- - 카드가 타이틀바와 겹치는 현상 구조적 수정 (기존 `align-items: center` 로 카드가 위로 올라가는 문제 해결)
2197
- - 로그인 카드와 개인정보처리방침 사이 여백 확보 (bottom padding 증가)
2198
-
2199
- ### Release
2200
- - 배포 버전을 `0.1.27`로 상향
2201
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2202
-
2203
- ---
2204
-
2205
- ## [0.1.26] - 2026-05-24
2206
-
2207
- ### MCP 관리 대폭 확장 — 3-탭 UI
2208
-
2209
- **새 기능**
2210
-
2211
- - **레지스트리 탭** — 기존 MCP 목록 (빌트인 + 원격 레지스트리)
2212
- - 인기 MCP 20개 추가: `mcp-postgres`, `mcp-sqlite`, `mcp-brave-search`, `mcp-tavily`, `mcp-puppeteer`, `mcp-vercel`, `mcp-cloudflare`, `mcp-docker`, `mcp-stripe`, `mcp-supabase`, `mcp-hubspot`, `mcp-memory`, `mcp-sequential-thinking`, `mcp-discord`, `mcp-telegram`, `mcp-everything` 등
2213
- - 각 항목에 `env_vars` 필드 (설치 시 필요한 환경변수 안내)
2214
-
2215
- - **Claude Code 탭** — `~/.claude/settings.json` mcpServers 자동 동기화
2216
- - Claude Code에서 설치한 MCP 목록을 Lattice AI UI에서 바로 확인
2217
- - 이름·패키지·환경변수 정보 표시, "Claude Code" 소스 배지
2218
-
2219
- - **직접 추가 탭** — 커스텀 MCP 폼
2220
- - 이름·패키지·설명·환경변수·아이콘 직접 입력
2221
- - 추가된 항목은 `~/.ltcai/custom_mcps.json`에 저장 (서버 재시작 후에도 유지)
2222
- - 삭제 버튼 (어드민 전용)
2223
-
2224
- **API 엔드포인트**
2225
- - `GET /mcp/claude-code-servers` — Claude Code settings.json mcpServers 반환
2226
- - `GET /mcp/custom` — 사용자 추가 커스텀 MCP 목록
2227
- - `POST /mcp/custom` — 커스텀 MCP 추가
2228
- - `DELETE /mcp/custom/{id}` — 커스텀 MCP 삭제 (어드민)
2229
-
2230
- ---
2231
-
2232
- ## [0.1.25] - 2026-05-24
2233
-
2234
- ### Knowledge Graph 전면 재설계 — 점=명사, 선=동사
2235
-
2236
- **설계 원칙**
2237
- - **점(Node) = 명사** — 의미 있는 대상 (문서, 사람, 개념, 에러, 코드, 채팅 등)
2238
- - **선(Edge) = 동사** — 대상 간의 관계 (언급함, 포함함, 해결함, 의존함 등)
2239
- - 원본 데이터(PDF·PPT·채팅·코드 등)는 그대로 보관, AI가 핵심 개념을 추출해 점으로 만들고 관계를 선으로 연결
2240
-
2241
- **노드 타입 (점 = 명사)**
2242
- - `Chat` — 대화 세션
2243
- - `Document` — 파일 (PDF·PPT·Word·Excel·이미지)
2244
- - `Concept` — 개념·아이디어·기술 용어
2245
- - `Person` — 사람 (사용자, 언급된 인물)
2246
- - `Error` — 오류·버그·예외
2247
- - `Code` — 코드·함수·클래스
2248
- - `Feature` — 소프트웨어 기능
2249
- - `Task` — 할 일·액션 아이템
2250
- - `Decision` — 결정 사항
2251
-
2252
- **엣지 어휘 (선 = 동사형)**
2253
- `언급함` · `포함함` · `해결함` · `의존함` · `설명함` · `비교함` · `사용함` · `연결함` · `확장함` · `생성함` · `대체함` · `지원함` · `발생함` · `관련됨` · `작성함` · `업로드함`
2254
-
2255
- **핵심 개선**
2256
- - `_extract_concepts()` — 고유명사·복합어·기술 용어 추출 (Lattice AI, Knowledge Graph context, VS Code 등)
2257
- - `_classify_node_type()` — 개념별 노드 타입 자동 분류 (윈도우 컨텍스트 기반)
2258
- - `_infer_edge()` — 문장 내 동사·조사 패턴으로 엣지 레이블 자동 결정
2259
- - `_extract_triples()` — 문장 단위 개념 쌍 → (주어, 동사, 목적어) 트리플 추출
2260
- - `ingest_message()` 재설계 — 메시지 단위 → 대화 세션(Chat) 단위 노드
2261
- - `ingest_document()` 재설계 — Document 노드 + 동사형 엣지 (포함함, 업로드함)
2262
- - 중복 제거 — 하위 개념이 상위 복합어에 완전히 흡수될 때만 제거
2263
- - Message·AIResponse·Chunk 노드는 RAG 검색용으로만 저장, 그래프 비표시
2264
-
2265
- ### Release
2266
- - 배포 버전을 `0.1.25`로 상향
2267
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2268
-
2269
- ## [0.1.24] - 2026-05-24
2270
-
2271
- ### 안정화 및 UX 개선
2272
-
2273
- - **로컬 파일 인증 강화** — `/local/list` · `/local/read` · `/local/write` · `/local/serve`에서 로그인 세션 필수화 (`_require_local_user` 헬퍼 도입)
2274
- - **`GET /local/list` 라우트 추가** — smoke-test 및 브라우저 직접 호출 호환
2275
- - **VS Code 배지 수정** — shields.io `visual-studio-marketplace` 폐기 → `vsmarketplacebadges.dev`로 전환
2276
- - **README 이미지 URL 안정화** — 로고·스크린샷을 `raw.githubusercontent.com` 절대 URL로 전환해 PyPI / npm / Marketplace 페이지에서도 표시
2277
- - **Quick Start 분리** — PyPI / npm / VS Code 사용자의 첫 설치 경로를 각각 명확히 안내
2278
- - **GitHub Actions Node 24** — CI 런타임을 Node 24로 업그레이드
2279
-
2280
- ### Release
2281
- - 배포 버전을 `0.1.24`로 상향
2282
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2283
-
2284
- ## [0.1.23] - 2026-05-24
2285
-
2286
- ### Discord 권한 알림 시스템
2287
-
2288
- - **`GET /permissions/pending`** — 대기 중인 파일 접근 권한 요청 목록 (관리자)
2289
- - **`POST /permissions/approve/{token}`** — 권한 승인 (관리자 세션 또는 `LATTICEAI_PERMISSION_SECRET`)
2290
- - **`POST /permissions/deny/{token}`** — 권한 거부/취소
2291
- - **`GET /permissions/status/{token}`** — 승인 상태 폴링 (AI 에이전트용)
2292
- - 권한 토큰 기본값 `approved: False` — 명시적 승인 전까지 파일 접근 불가
2293
- - `~/.ltcai/permission_queue.json` — 서버가 기록, Claude Code Discord 플러그인이 읽어 알림 전송
2294
- - `LATTICEAI_PERMISSION_SECRET` 환경변수 — 모니터 스크립트가 세션 없이 approve/deny 호출 가능
2295
- - `perm_monitor.py` — 권한 목록 조회·승인·거부 CLI 도우미 (`list` / `approve TOKEN` / `deny TOKEN` / `discord-msg`)
2296
- - Discord에서 `승인 <토큰앞8자>` / `거부 <토큰앞8자>` 로 파일 접근 제어 가능
2297
-
2298
- ### 리포지터리 UX 개선
2299
-
2300
- - **영어 README** 전면 재작성 — 한국어는 접을 수 있는 `<details>` 섹션으로 이동
2301
- - **SVG 로고** 추가 (`docs/images/logo.svg`)
2302
- - **경쟁 제품 비교표** — Lattice AI vs Open WebUI · Continue.dev · GitHub Copilot
2303
- - **Quick Start 분리** — PyPI / npm / VS Code 사용자의 첫 설치 경로를 각각 명확히 안내
2304
- - **비교표 기준 명시** — 공개 제품 동작 기준 시점을 README에 표기
2305
- - **패키지 페이지 이미지 안정화** — README 이미지 URL을 GitHub raw URL로 전환해 PyPI / npm / Marketplace에서도 표시되도록 개선
2306
- - **npm 패키지 정리** — 배포 tarball에서 테스트/캐시 파일 제외
2307
- - **실제 UI 스크린샷 3장** — Chat UI · Admin Dashboard · Data Graph (Playwright 2x 캡처)
2308
- - **VS Code 익스텐션 카테고리** `Other` → `AI, Machine Learning, Chat, Other`
2309
- - **VS Code 익스텐션 키워드** 8개 → 16개 (copilot, apple-silicon, groq, graph-rag 등)
2310
- - **VS Code 익스텐션 README** 전면 재작성 (기능표, 비교표, 모델 목록)
2311
- - 구버전 `.tgz` / `.vsix` 빌드 파일 삭제
2312
-
2313
- ### CI / 보안 안정화
2314
-
2315
- - `/local/list` `GET` smoke-test 호환 라우트 추가
2316
- - `/local/list`, `/local/read`, `/local/write`, `/local/serve`는 로컬 개발 모드에서도 로그인 세션을 요구하도록 강화
2317
- - GitHub Actions integration smoke test 실패 원인 수정
2318
-
2319
- ### Release
2320
- - 배포 버전을 `0.1.23`으로 상향
2321
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2322
-
2323
- ## [0.1.22] - 2026-05-24
2324
-
2325
- ### 리포지터리 UX 개선 — 다운로드 유입 최적화
2326
-
2327
- #### README 전면 재작성
2328
- - **영어 메인 문서** — 한국어는 접을 수 있는 `<details>` 섹션으로 이동 (국제 유입 대응)
2329
- - **SVG 로고 추가** (`docs/images/logo.svg`) — 인디고→시안 그라디언트 래티스 그리드 아이콘
2330
- - **경쟁 제품 비교표** — Lattice AI vs Open WebUI · Continue.dev · GitHub Copilot 10개 기준 비교
2331
- - **PyPI 월간 다운로드 수 배지** 추가 (신뢰도 지표)
2332
- - 기능 · 보안 · API · 트러블슈팅 섹션을 표(table) 형식으로 정리 (가독성 향상)
2333
-
2334
- #### 실제 UI 스크린샷 자동 캡처
2335
- - `docs/images/screenshot-chat.png` — 웹 채팅 UI (사이드바, 모델/파이프라인/VPC 카드)
2336
- - `docs/images/screenshot-admin.png` — 어드민 대시보드 + Audit & Data Governance 섹션
2337
- - `docs/images/screenshot-graph.png` — Data Graph 시각화 (299 노드, 443 엣지)
2338
- - README 상단에 3단 그리드 스크린샷 테이블 추가
2339
- - `scripts/take_screenshots.js` — Playwright Chromium 헤드리스 캡처 스크립트 (2x 레티나)
2340
-
2341
- #### VS Code 익스텐션 메타데이터 개선
2342
- - **카테고리** `Other` → `AI, Machine Learning, Chat, Other` (Marketplace 검색 노출 증가)
2343
- - **키워드** 8개 → 16개 추가 (`copilot`, `apple-silicon`, `groq`, `graph-rag` 등)
2344
- - **설명 문구** 구체화 — 핵심 차별점(MLX, MCP, Knowledge Graph context, local-first data handling) 명시
2345
- - **익스텐션 README 전면 재작성** — 기능표 · 빠른 시작 · 단축키 · 지원 모델 · 설정 · 비교표 포함
2346
-
2347
- #### 리포지터리 정리
2348
- - 루트 및 `vscode-extension/`의 구버전 `.tgz` / `.vsix` 빌드 파일 삭제
2349
-
2350
- ### Release preparation
2351
-
2352
- - 배포 버전을 `0.1.22`로 상향
2353
- - `package.json`
2354
- - `pyproject.toml`
2355
- - `vscode-extension/package.json`
2356
- - npm / PyPI / VS Code Marketplace / Open VSX 배포 전 빌드 산출물 생성
2357
-
2358
- ### Verification
2359
-
2360
- - Python compile check 통과
2361
- - unit tests 통과
2362
- - root npm package 생성
2363
- - Python wheel / sdist 생성
2364
- - VS Code / Open VSX용 VSIX 생성
2365
-
2366
- ## [0.1.21] - 2026-05-24
2367
-
2368
- ### Setup Wizard — 자동 설치 · 연결 · 검증 · 복구
2369
-
2370
- - **구성요소 자동 감지** — Homebrew, Python, Git, Node/npm, Ollama, LM Studio, Tesseract, MLX 계열 탐지
2371
- - `COMMON_PATH_DIRS` 확장: `/opt/homebrew/bin`, `~/.local/bin`, `~/.latticeai/bin` 등 자동 포함
2372
- - `PACKAGE_MODULES` 맵으로 pip 패키지 → import 이름 변환 (mlx-lm, mlx-vlm, openai-whisper 등)
2373
- - **공식 다운로드 연결** — 자동 설치 실패 시 OS별 공식 페이지(`OFFICIAL_DOWNLOADS`) 자동 오픈
2374
- - **설치 완료 자동 감지** — binary / Python 모듈 재탐색 폴링으로 설치 완료 감지
2375
- - **환경 변수 / PATH 자동 세팅** — PATH 누락 디렉토리를 `.env`의 `LATTICEAI_EXTRA_PATH`에 자동 저장
2376
- - `_update_env_file()` 헬퍼로 `.env` 파일 안전 갱신 (중복 없이 key 업데이트)
2377
- - **동작 테스트** — binary는 `--version`, Python 패키지는 `import` smoke test
2378
- - **실패 시 자동 복구** — PATH 재보정, pip 재시도, brew 실패 시 공식 다운로드 fallback
2379
-
2380
- ### 보안 강화 — 로컬 파일 접근 승인 시스템
2381
-
2382
- - **토큰 기반 로컬 파일 승인** — `_local_permission_response()` / `_require_local_approval()`
2383
- - 5분(300초) TTL 만료 토큰으로 read / write / list 각 액션을 별도 승인
2384
- - write 승인 시 `content_hash`(SHA-256)로 내용 위변조 방지
2385
- - 만료 토큰 자동 정리(lazy GC)
2386
- - Discord permission monitor 또는 웹 UI 승인 후에만 토큰 활성화
2387
- - **로컬 파일 미리보기 보호** — `/local/serve`, `/tools/read_document`, `/tools/pdf_pages`도 서버 발급 approval token 없이는 로컬 절대 경로를 열지 않도록 변경
2388
- - **workspace 정적 노출 제거** — `/agent-files` `StaticFiles` mount 제거, 인증이 있는 다운로드 라우트만 사용
2389
- - **세션 토큰 저장 강화** — 로그인 응답 body에서 bearer token 제거, 웹 UI는 HttpOnly cookie 기반 인증만 사용
2390
- - `static/account.html`, `static/chat.html`, `static/admin.html`, `static/graph.html`의 `localStorage` 세션 토큰 의존 제거
2391
- - **loopback 감지** — `_host_is_loopback()` + `ipaddress` 표준 라이브러리로 네트워크 노출 여부 판단
2392
- - `REQUIRE_AUTH` 기본값: 퍼블릭 모드 또는 네트워크 노출 시 `true` 자동 적용
2393
- - `OPEN_REGISTRATION`: 네트워크 노출/퍼블릭 모드에서 기본 `false` (초대 코드 필요)
2394
- - **CORS 세밀 제어** — wildcard credential CORS 대신 `LATTICEAI_CORS_ALLOWED_ORIGINS` 환경변수로 허용 출처 추가 설정 가능
2395
- - **파일 자동 주입(opt-in)** — `LATTICEAI_AUTO_READ_CHAT_PATHS=true` 설정 시에만 채팅 메시지의 로컬 경로를 컨텍스트에 주입 (기본 OFF — 클라우드 모델 파일 누출 방지)
2396
-
2397
- ### 어드민 대시보드 — Audit & Data Governance
2398
-
2399
- - **감사 로그 섹션** — 사용자별 AI 사용량, 업로드 문서 수, 민감정보 감지, clear/delete 이벤트, 최근 감사 이벤트 표시
2400
- - **데이터 보존 정책** — `/clear`, `/clear_all`, 대화 삭제는 화면 정리만 수행; Data Graph / RAG / 감사 로그는 보존
2401
- - clear 동작을 `ClearEvent` 노드로 그래프에 기록 (언제 누가 clear 했는지 감사 추적)
2402
- - **민감정보 검사** — 문서 업로드 텍스트를 감사 로그에 기록
2403
-
2404
- ### Knowledge Graph context / Data Graph
2405
-
2406
- - **한국어 단어 검색 개선** — 2글자 키워드(`문서`, `모델` 등) RAG 검색 누락 문제 수정
2407
- - **`graph.html` 독립 페이지 유지** — 채팅 사이드바 `Data Graph` 버튼으로 연결, New Chat 버튼은 대화 검색 아래로 이동
2408
-
2409
- ### CLI / Node.js 래퍼
2410
-
2411
- - `ltcai_cli.py` — `doctor` 명령어에 확장된 구성요소 탐지 통합
2412
- - `bin/ltcai.js` — Node.js 래퍼 PATH 보정 로직 개선
2413
-
2414
- ### 테스트
2415
-
2416
- - `tests/unit/test_security.py` — loopback 감지, 로컬 파일 접근 approval token, write content hash 검증 추가
2417
- - `tests/unit/test_setup_wizard.py` — 자동 설정 구성요소 감지와 PATH 보정 검증 추가
2418
-
2419
- ### 환경변수 추가 (`.env.example`)
2420
-
2421
- | 변수 | 기본값 | 설명 |
2422
- |------|--------|------|
2423
- | `LATTICEAI_AUTO_READ_CHAT_PATHS` | `false` | 채팅 메시지 내 로컬 경로 자동 주입 |
2424
- | `LATTICEAI_CORS_ALLOWED_ORIGINS` | `` | 추가 허용 CORS 출처 (콤마 구분) |
2425
- | `LATTICEAI_EXTRA_PATH` | `` | 추가 PATH 디렉토리 (Setup Wizard 자동 기록) |
2426
-
2427
- ## [0.1.20] - 2026-05-23
2428
-
2429
- ### Release
2430
- - 배포 버전을 `0.1.19`로 상향
2431
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2432
-
2433
- ## [0.1.18] - 2026-05-23
2434
-
2435
- ### MCP Registry 통합
2436
-
2437
- - **`GET /mcp/tools` · `GET /mcp/installed`** — 기존 로컬 목록에 [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io) 원격 목록을 실시간 병합
2438
- - **`POST /mcp/install`** — `npm` / `pypi` 설치 모드 추가 — 원격 레지스트리 MCP 서버를 클릭 한 번으로 설치 (`npm install -g` / `pip install`)
2439
- - **`POST /mcp/registry/refresh`** — 원격 레지스트리 캐시 강제 갱신
2440
- - `mcp_public_item` 응답에 `package` · `homepage` · `source` 필드 추가
2441
- - 원격 레지스트리는 1시간 TTL 인메모리 캐시, 서버 재시작 없이 최신 목록 유지
2442
- - `connector_info` 함수 인라인화 — `mcp_connector` 엔드포인트에서 combined registry 직접 조회
2443
-
2444
- ### Skills 마켓플레이스 (신규)
2445
-
2446
- - **`GET /skills/marketplace`** — Apache-2.0 / MIT 검증 skills 목록 (Anthropic 18개 + 서드파티 59개 = 약 77개)
2447
- - `?category=` · `?author=` 필터 파라미터 지원
2448
- - 응답에 `authors` · `categories` 열거 포함
2449
- - **`POST /skills/install`** — `{ "plugin": "...", "skill": "..." }` 로 SKILL.md 런타임 fetch 후 로컬 `skills/` 에 저장
2450
- - 파일 상단에 출처·라이선스 주석 자동 삽입 (`<!-- Source: ..., Apache-2.0 -->`)
2451
- - `risk.json` 없으면 기본값 자동 생성
2452
- - **`GET /skills/list`** — 로컬 설치 skills 목록 (`source`: local / anthropic / third-party 구분)
2453
- - **`POST /skills/marketplace/refresh`** — 캐시 강제 갱신, author별 집계 반환
2454
- - 서드파티 소스 (모두 라이선스 검증 완료): Adobe (Apache-2.0) · Airtable (MIT) · Auth0 (Apache-2.0) · Expo (MIT) · Pydantic/Logfire (MIT)
2455
-
2456
- ### 플러그인 디렉터리 (신규)
2457
-
2458
- - **`GET /plugins/directory`** — marketplace.json 기반 오픈소스 플러그인 149개 메타데이터 브라우저
2459
- - `?q=` 전문 검색 · `?category=` · `?license=` 필터 지원
2460
- - 응답에 `categories` · `licenses` 열거 포함
2461
- - **`POST /plugins/directory/refresh`** — 캐시 강제 갱신, license별 집계 반환
2462
- - `_KNOWN_REPO_LICENSES` 맵 — GitHub API 호출 없이 검증된 라이선스 즉시 조회
2463
- - 미확인 레포는 GitHub API fallback + 인메모리 per-repo 캐시
2464
- - Apache-2.0 / MIT / MIT-0 / CC-BY-4.0 플러그인만 노출, 라이선스 없는 34개 자동 제외
2465
-
2466
- ### Release
2467
- - 배포 버전을 `0.1.18`로 상향
2468
- - 대상 채널: `npm` · `PyPI` · `VS Code Marketplace` · `Open VSX`
2469
-
2470
- ## [0.1.17] - 2026-05-22
2471
-
2472
- ### Multi-LLM Pipeline
2473
-
2474
- - **파이프라인 UI 카드** — ops 대시보드의 ACTIVE MODEL 카드와 PRIVATE VPC 카드 사이에 PIPELINE 카드 추가
2475
- - 파이프라인 비활성 시: "멀티 LLM 파이프라인 / Plan → Execute → Review 모델 설정" 표시
2476
- - 파이프라인 활성 시: "Pipeline ON / P:모델명 E:모델명 R:모델명" 으로 현재 설정 표시
2477
- - **멀티 LLM 에이전트 파이프라인** — Planning / Executing / Reviewing 3단계에 각각 다른 LLM 지정 가능
2478
- - 모달에서 각 단계별 모델 선택 (로드된 로컬 모델 + 클라우드 프로바이더 자동 목록 구성)
2479
- - 하나의 모델을 모든 단계에 사용해도 정상 동작
2480
- - **Human-in-the-loop** — 파이프라인 활성화 시 Planning 완료 후 사용자 승인을 기다렸다가 Execute 단계로 진행
2481
- - 웹 UI: 플랜 승인 카드(`✅ 승인 / ❌ 취소`) 렌더링
2482
- - Telegram 봇: 인라인 버튼으로 플랜 승인/취소
2483
- - **`/agent/resume` 엔드포인트** — `context_id`와 `approved` 필드로 대기 중인 에이전트 재개 또는 취소
2484
- - **`AgentRequest` 확장** — `planning_model`, `executing_model`, `reviewing_model`, `human_in_loop` 파라미터 추가
2485
- - **`LLMRouter.generate_as(model_id, ...)`** — 현재 모델을 임시 교체해 지정 모델로 생성 후 원복하는 헬퍼
2486
- - **Telegram 봇 인증 수정** — 서버 호출 시 `~/.ltcai/sessions.json`에서 어드민 세션 토큰을 읽어 쿠키로 전달
2487
- - **Telegram SSE 파싱** — `/chat` 스트리밍 응답(`text/event-stream`)을 올바르게 파싱하도록 수정
2488
- - **`_sessions_file()` 버그 수정** — 정의 이전에 전역 `DATA_DIR` 참조하던 문제 해결 (함수 내 경로 직접 계산)
2489
-
2490
- ### Release
2491
- - 배포 버전을 `0.1.17`로 상향
2492
- - 대상 채널: `npm`, `PyPI`, `VS Code Marketplace`, `Open VSX`
2493
-
2494
- ## [0.1.16] - 2026-05-22
2495
-
2496
- ### First-user admin bootstrap
2497
-
2498
- - 서버를 처음 설치하고 가입하는 첫 번째 사용자가 자동으로 **admin** 권한 획득
2499
- - 이후 가입자는 기존과 동일하게 `user` 역할
2500
- - `/register` 응답에 `role` 필드 추가 — 클라이언트가 첫 가입 여부 확인 가능
2501
-
2502
- ### Release
2503
- - 배포 버전을 `0.1.16`으로 상향
2504
-
2505
- ## [0.1.15] - 2026-05-22
2506
-
2507
- ### Security hardening
2508
-
2509
- - `LTCAI --tunnel` 실행 시 `LATTICEAI_REQUIRE_AUTH=true` 자동 강제 — 터널로 공개된 서버에 로그인 없이 접근 불가
2510
- - `/register` IP당 시간당 5회 rate limit
2511
- - `/login` IP당 5분당 10회 rate limit (brute force 방지)
2512
- - Cloudflare 터널 통과 시 `CF-Connecting-IP` 헤더로 실제 클라이언트 IP 추출
2513
- - `LATTICEAI_OPEN_REGISTRATION=false` 설정 시 회원가입 완전 차단 (관리자 직접 추가만 허용)
2514
-
2515
- ### Release
2516
- - 배포 버전을 `0.1.15`로 상향
2517
-
2518
- ## [0.1.14] - 2026-05-22
2519
-
2520
- ### `--tunnel` flag — 누구나 자기 PC를 서버로
2521
-
2522
- - `LTCAI --tunnel` 한 줄로 Cloudflare 무료 터널 자동 개설
2523
- - cloudflared 바이너리가 없으면 GitHub에서 자동 다운로드 (`~/.latticeai/bin/`)
2524
- - macOS arm64/amd64, Linux arm64/amd64, Windows amd64 지원
2525
- - 터널 URL을 배너에 출력 + `LATTICEAI_TELEGRAM_BOT_TOKEN` / `LATTICEAI_TELEGRAM_CHAT_ID` 설정 시 Telegram 자동 알림
2526
- - `--tunnel` 지정 시 host 자동으로 `0.0.0.0`, CORS 네트워크 허용으로 전환
2527
-
2528
- ### Release
2529
- - 배포 버전을 `0.1.14`로 상향
2530
- - 대상 채널: `npm`, `PyPI`, `VS Code Marketplace`, `Open VSX`
2531
-
2532
- ## [0.1.13] - 2026-05-22
2533
-
2534
- ### Code quality & efficiency
2535
-
2536
- - `HF_MODELS_ROOT` / `hf_model_dir` 중복 정의 제거 — `llm_router.py` 단일 소스로 통합, `server.py`에서 import
2537
- - `_looks_like_hf_model_dir` 가중치 파일 체크를 `.safetensors` / `.bin`으로 일치 — `.gguf`를 MLX 경로에서 잘못 허용하던 버그 수정
2538
- - `vllm_executable()` `shutil.which` 이중 호출 → 변수 캐시
2539
- - `ensure_lmstudio_model()` `_find_lmstudio_model_key` 이중 호출 → `found_key` 변수로 캐시
2540
- - `engine_support_status` 3단계 중첩 조건 → `is_apple_silicon` 플래그로 평탄화
2541
- - `ensure_llamacpp_server` 동일 프로세스 이중 `terminate()` 블록 → 단일 블록 (vllm 패턴과 통일)
2542
- - `ensure_vllm_server` 37줄 중첩 삼항 커맨드 빌더 → `if/elif/else` + `_host_args` 공통화
2543
- - `except: pass` → `except Exception: pass` (KeyboardInterrupt 노출)
2544
- - `knowledge_graph.py` 엣지 순회 루프 두 번 (`degree_map` + `topic_metrics`) → 단일 루프로 병합
2545
-
2546
- ### Performance & correctness
2547
-
2548
- - `get_lmstudio_models()` TTL 캐시(10초) 추가 — `/health`, `/engines`, `/models` 매 요청마다 LM Studio HTTP 프로브하던 문제 해결, 서버 미응답 시 마지막 캐시 반환
2549
- - `/health`, `/engines`, `/models` 엔드포인트에서 `engine_status()` 호출을 `asyncio.to_thread()`로 오프로드 — LM Studio 최대 45초, ollama subprocess 블로킹이 이벤트 루프를 점유하던 문제 해결
2550
- - 앱 종료 시 `LOCAL_SERVER_PROCESSES` (vLLM, llama.cpp) 자식 프로세스 정리 — GPU 메모리 고아 프로세스 누수 수정
2551
-
2552
- ### Release
2553
- - 배포 버전을 `0.1.13`으로 상향
2554
- - 대상 채널: `npm`, `PyPI`, `VS Code Marketplace`, `Open VSX`
2555
-
2556
- ## [0.1.12] - 2026-05-22
2557
-
2558
- ### Local engine install / load flow
2559
- - `vLLM` 설치 경로를 macOS용 `Python 3.12 + vllm-metal` 흐름으로 교체
2560
- - `LM Studio` 번들 `lms` CLI와 native API를 사용해 서버 시작, 모델 다운로드, 모델 로드를 자동화
2561
- - `llama.cpp`는 선택한 GGUF를 alias와 함께 OpenAI 호환 서버로 직접 로드하도록 정리
2562
- - 모델 패널의 `설치` / `다운로드 후 자동 로드` 흐름이 실제 `prepare_and_load_model()` 경로로 수렴되도록 정리
2563
-
2564
- ### Verified
2565
- - 최소 테스트 모델 기준 실사용 검증 완료
2566
- - `vLLM`: `Qwen/Qwen2.5-0.5B-Instruct-AWQ`
2567
- - `LM Studio`: `https://huggingface.co/lmstudio-community/Qwen2.5-0.5B-Instruct-GGUF`
2568
- - `llama.cpp`: `lmstudio-community/Qwen2.5-0.5B-Instruct-GGUF`
2569
-
2570
- ### Release
2571
- - 배포 버전을 `0.1.12`로 상향
2572
- - 대상 채널: `npm`, `PyPI`, `VS Code Marketplace`, `Open VSX`
2573
-
2574
- ## [0.1.11] - 2026-05-21
2575
-
2576
- ### Agent state machine (renamed + cleaned up)
2577
- - 8개의 명시적 상태: `IDLE → PLANNING → WAITING_APPROVAL → EXECUTING → VERIFYING → (DONE | ROLLBACK → FAILED)`
2578
- - `RETRY` 상태 제거 — 재시도 카운터는 `AgentRunContext.retry_count`에 보관, `VERIFYING`이 `EXECUTING`으로 직접 전환
2579
- - 종료 상태를 `DONE` / `FAILED`로 분리 — 응답에 `final_state` 필드 추가, `status`는 `"ok"` 또는 `"failed"`
2580
-
2581
- ### Tool Permission Layer
2582
- - `ToolPermission` 추가 — `{ tool, risk, requires_approval, network }` 4-필드 컴팩트 뷰
2583
- - 기존 7-차원 `TOOL_GOVERNANCE`에서 자동 파생 (단일 진실 공급원)
2584
- - `GET /tools/permissions` 엔드포인트 추가
2585
- - `/mcp/tools` 응답의 각 툴에 `permission` 필드 노출
2586
-
2587
- ### Cleanup
2588
- - 중국어 응답 지원 제거 — `detect_language`는 이제 `ko` 또는 `en`만 반환
2589
- - `_LANG_HINT`에서 `"zh"` 키 삭제, EXECUTOR_PROMPT의 "Chinese" 언급 제거
2590
-
2591
- ### Repo
2592
- - `CHANGELOG.md` → `docs/CHANGELOG.md` 이동 (루트 가독성 개선)
2593
- - 자동 릴리스 워크플로(`release.yml`) 제거 — 수동 배포 유지
2594
-
2595
- ---
2596
-
2597
- ## [0.1.10] - 2026-05-21
2598
-
2599
- ### Agent intelligence (pro-developer workflow)
2600
- - **`AGENT_SYSTEM_PROMPT` 완전 재작성** — Claude Code 스타일 시니어 개발자 워크플로
2601
- - Discover → Plan → Implement → Verify 4단계 강제
2602
- - JSON 응답에 `thoughts` 필드 추가, transcript에 함께 기록되어 다음 스텝의 컨텍스트로 전달
2603
- - 코드 읽기 전 수정 금지, 검증 없이 "완료" 주장 금지, 작은 diff 원칙
2604
- - 새 도구 카탈로그 + 안티패턴(반복 액션·환각 import·placeholder URL) 명시
2605
- - **`max_steps` 상향** — 기본값 6 → 25, 캡 10 → 50 (`AgentRequest.max_steps`)
2606
-
2607
- ### New tools
2608
- - **`edit_file`** — 정밀 diff 편집. `old_string`이 파일에 유일하게 존재해야만 성공(또는 `replace_all=true`). 환각 import / 잘못된 위치 수정 방지. 결과에 `first_edit_line` 포함
2609
- - **`grep`** — 정규식 검색, 전체 텍스트 파일 대상, `glob` 필터, `context_lines`, binary dir(`node_modules`, `.git`, `venv`, `dist` 등) 자동 제외. 기존 `search_files`는 호환 유지
2610
- - **`todo_write` / `todo_read`** — 워크스페이스별 영구 TODO 리스트(`agent_workspace/.lattice/todos.json`). 멀티스텝 작업의 상태 유지. status ∈ `pending | in_progress | completed`. 다중 in_progress 경고
2611
- - **`read_file` 업그레이드** — `numbered`(라인 번호 뷰), `total_lines`, `start_line`/`end_line`, optional `offset`/`limit` 추가. 기존 `content` 반환 호환 유지
2612
- - 위 모든 도구에 `/tools/*` REST 엔드포인트 추가, `_TOOL_RISK` 등록, `/mcp/tools` 카탈로그 노출
2613
-
2614
- ### Loop safety
2615
- - `_FILE_CREATE_ACTIONS`에 `edit_file` 포함 — 같은 args로 연속 호출 시 자동 중단
2616
- - 반복 중단 메시지를 "다음 단계로 진행하세요"로 명확화
2617
-
2618
- ### Tests
2619
- - `tests/unit/test_tools.py`에 23개 신규 테스트 — edit_file (유일/모호/`replace_all`/identical), grep (regex·glob·case·context·binary dir), todo round-trip + 검증, read_file numbered/offset/limit, 샌드박스 이탈 차단 (`52 passed`)
2620
-
2621
- ### Security (보안 기본값 통일)
2622
- - **기본 바인딩 `0.0.0.0` → `127.0.0.1` 롤백** — v0.1.8에서 PWA 편의를 위해 0.0.0.0으로 변경했으나 개인 AI 서버의 기본값은 로컬 전용이어야 안전함. 네트워크 노출이 필요한 경우 `LATTICEAI_HOST=0.0.0.0` 명시적 설정.
2623
- - SECURITY.md, CONTRIBUTING.md, GitHub Actions CI/Release 워크플로 추가
2624
- - docs/ 문서 추가: architecture, security-model, public-deploy, mcp-tools, privacy
2625
-
2626
- ---
2627
-
2628
- ## [0.1.9] - 2026-05-21
2629
-
2630
- ### Security
2631
- - **세션 TTL 7일 → 24시간 + sliding refresh** — 활동 시 만료시간 자동 연장, 15분 단위 디스크 쓰기 throttle
2632
- - **평문 비밀번호 마이그레이션 audit 로깅** — `password_migrated_from_plaintext` 이벤트로 남은 평문 사용자 추적
2633
- - **파일 업로드 magic-number 검증** — `_bytes_match_extension()`: PDF/DOCX/XLSX/PPTX/PNG/JPEG/ZIP 시그니처 확인, 확장자 위조 방지
2634
- - **Rate limiting** — `/chat` 30 burst/분당 30, `/agent` 10 burst/분당 6, `/upload` 20 burst/분당 12. 토큰 버킷 per-user. `LATTICEAI_RATE_LIMIT=0`으로 비활성화 가능
2635
-
2636
- ### Reliability
2637
- - **PyMuPDF 파일 핸들 누수 수정** — `/tools/pdf_pages` try/finally로 doc.close() 보장, `len(doc)` 호출 위치 버그 수정
2638
- - **ollama serve 좀비 방지** — 실행 전 already_up 체크, `start_new_session=True`로 detach
2639
- - **knowledge_graph.py 손상된 metadata_json 안전 처리** — `_safe_loads()` 헬퍼로 corrupt row 통과 (5곳 적용)
2640
- - **백그라운드 asyncio 태스크 예외 로깅** — `_spawn()` 헬퍼 (`add_done_callback`) — startup 태스크 silent fail 방지
2641
- - **silent except → logging.warning** — `_load_sessions`, `_persist_sessions`, `load_vpc_config`, `load_mcp_installs`
2642
-
2643
- ### Tests
2644
- - **`tests/unit/test_security.py`** — 16개 신규 테스트: bcrypt 해시 라운드트립/유니크, MIME 검증, rate limit (29 → 31개 전체 통과)
2645
-
2646
- ---
2647
-
2648
- ## [0.1.8] - 2026-05-21
2649
-
2650
- ### Added
2651
- - **PWA (Progressive Web App)** — iPad / Android / Galaxy Tab 홈화면 설치 지원
2652
- - `manifest.json`: 앱 이름, 아이콘, 배경색, 테마색, 단축키 정의
2653
- - `sw.js` Service Worker: 정적 파일 캐시-퍼스트, API 네트워크-퍼스트, 오프라인 대응
2654
- - 192×192, 512×512, apple-touch-icon 180×180, favicon 32×32 PNG 아이콘 생성
2655
- - 모든 HTML에 `<link rel="manifest">`, `apple-mobile-web-app-*`, `theme-color` 메타태그 추가
2656
- - `viewport-fit=cover` — iPhone Dynamic Island / 노치 안전영역 확장
2657
- - **서버 네트워크 공개 바인딩** — 기본 host `127.0.0.1` → `0.0.0.0`으로 변경
2658
- - 같은 Wi-Fi 내 iPad / Android / Galaxy Tab 에서 `http://<Mac IP>:4825` 로 바로 접근 가능
2659
- - 시작 배너에 로컬 / 네트워크 URL 및 "Add to Home Screen" 안내 출력
2660
- - **Windows 서버 호환성**
2661
- - `computer_screenshot`: macOS `screencapture` 외 Windows/Linux에서 pyautogui fallback
2662
- - `computer_open_app` / `computer_open_url`: `open -a` (macOS) / `cmd /c start` (Windows) / `xdg-open` (Linux) 자동 분기
2663
- - `_PLATFORM` 상수 도입으로 향후 플랫폼 분기 일관성 확보
2664
- - **배포 파일 포함**: `manifest.json`, `sw.js`, `icons/` 폴더를 npm · PyPI 패키지에 포함
2665
-
2666
- ### Deployed
2667
- - npm ✅
2668
- - PyPI ✅
2669
- - VS Code Marketplace ✅
2670
- - Open VSX ✅
2671
-
2672
- ---
2673
-
2674
- ## [0.1.7] - 2026-05-21
2675
-
2676
- ### Added
2677
- - **모바일 반응형 UI** — 폰/태블릿 화면 크기에 자동 대응
2678
- - 768px 이하: 사이드바가 좌측 슬라이드 드로어로 전환, 헤더 햄버거(☰) 버튼으로 열기
2679
- - 오버레이 탭하면 사이드바 닫힘, 대화 선택 시 자동 닫힘
2680
- - ops-strip 카드 3개 → 가로 스크롤 한 줄 압축 (모바일)
2681
- - `100dvh` 적용 — iOS 소프트 키보드 올라와도 레이아웃 유지
2682
- - `env(safe-area-inset-bottom)` — iPhone 노치/홈바 안전영역 자동 여백
2683
- - textarea `font-size: 16px` (480px 이하) — iOS 자동 줌 방지
2684
- - 브레이크포인트 3단계: 900px(태블릿) / 768px(모바일 드로어) / 480px(폰)
2685
-
2686
- ---
2687
-
2688
- ## [0.1.6] - 2026-05-21
2689
-
2690
- ### Added
2691
- - **LATTICEAI_ENABLE_GRAPH** 환경변수 — Data Graph 기능을 퍼블릭 서버에서 완전히 숨길 수 있는 토글 (기본값 `true`)
2692
- - `false`로 설정 시 모든 그래프 API 엔드포인트 404 반환, 인제스트 건너뜀, 사이드바 버튼 자동 숨김
2693
- - `.env.example`에 `LATTICEAI_ENABLE_GRAPH` 항목 추가 (로컬/퍼블릭 모드 각각)
2694
-
2695
- ---
2696
-
2697
- ## [0.1.5] - 2026-05-21
2698
-
2699
- ### Added
2700
- - **Data Graph** — 채팅·AI 답변·업로드 문서를 SQLite 지식 그래프로 자동 구조화, `/graph`에서 Canvas 기반 Force-directed 시각화
2701
- - **Knowledge Graph context** — 그래프 검색 결과를 채팅 컨텍스트에 자동 주입하여 이전 대화·문서 참조 능력 강화
2702
- - **Telegram 원격 제어** — 인라인 키보드 메뉴로 상태 조회, 모델 관리, 스크린샷, 그래프 통계, 문서 업로드 등 원격 제어
2703
- - `knowledge_graph.py` — KnowledgeGraphStore (node/edge/chunk/event), `ingest_message()`, `ingest_document()`, `context_for_query()`, `search()`, `neighbors()`
2704
- - `static/graph.html` — 타입별 색상, 줌/패닝, 핀치 줌, 이웃 하이라이트, 노드 상세 정보, 채팅 연결 링크
2705
-
2706
- ### Security
2707
- - 어드민 세션 핸드오프를 URL 파라미터 → `sessionStorage` 1회 읽기 방식으로 교체 (히스토리 노출 방지)
2708
- - `X-Admin-Email` 헤더 폴백 제거 — Bearer 토큰 인증만 허용
2709
-
2710
- ---
2711
-
2712
- ## [0.1.4] - 2026-05-18
2713
-
2714
- ### Added
2715
- - **세션 영속성** — 서버 재시작 후에도 로그인 유지 (sessions.json 파일 기반)
2716
- - **SSO 로그인** — Entra ID / Okta OIDC 지원 (`OIDC_DISCOVERY_URL`, `OIDC_CLIENT_ID`, `OIDC_CLIENT_SECRET` 환경변수)
2717
- - **채팅 히스토리 검색** — 사이드바 검색창으로 대화 내용 키워드 검색 (`GET /history/search`)
2718
- - **대화 삭제** — 사이드바 각 대화에 삭제 버튼 추가
2719
- - **MCP 서버 관리 UI** — 사이드바 "MCP 관리" 버튼으로 설치/목록 확인 모달
2720
- - **인라인 Diff 뷰** — Edit Selection 결과를 diff로 보여주고 Apply/Discard 선택
2721
- - **현재 파일 첨부** — `Lattice AI: Attach Current File to Chat` 명령 추가 (VS Code)
2722
- - `authlib` 의존성 추가 (SSO OIDC 지원)
2723
-
2724
- ### Deployed
2725
- - PyPI ✅
2726
- - npm ✅
2727
- - VS Code Marketplace ✅
2728
- - Open VSX ✅
2729
-
2730
- ---
2731
-
2732
- ## [0.1.3] - 2026-05-18
2733
-
2734
- ### Added
2735
- - 프로필 수정 API (`PATCH /account/profile`) 및 UI — 이름·닉네임 변경
2736
- - 회원가입 폼 개선 — 비밀번호 확인 필드, 인라인 에러 메시지
2737
- - 어드민 패널 초대 링크 섹션 — 원클릭 복사
2738
- - 어드민 대시보드 메시지 활동 차트 (Chart.js, 최근 14일)
2739
- - 웹 UI 한국어 / 영어 전환 (`🌐 Languages` 버튼, localStorage 저장)
2740
-
2741
- ### Fixed
2742
- - 로그아웃 시 `/logout` API 호출하여 서버 세션 쿠키 정상 만료
2743
- - 인증(`account.html`)과 채팅(`chat.html`) UI 분리 — 레거시 `index.html` 제거
2744
- - `chat.html` 내 죽은 인증 코드 제거
2745
- - 채팅 헤더에서 언어 선택 드롭다운이 ops-strip을 가리는 문제 수정
2746
-
2747
- ### Deployed
2748
- - PyPI ✅
2749
- - npm ✅
2750
- - VS Code Marketplace ✅
2751
- - Open VSX ✅
2752
-
2753
- ---
2754
-
2755
- ## [0.1.1] - 2026-05-18
2756
-
2757
- ### Added
2758
- - 비밀번호 변경 API (`POST /account/change-password`)
2759
- - 웹 UI 비밀번호 변경 모달 (헤더 계정 아이콘)
2760
-
2761
- ### Docs
2762
- - 어드민 패널: 첫 가입자 자동 admin 안내 추가
2763
- - 플랫폼 지원 범위 (Windows/Linux) 안내 추가
2764
- - 언어 지원 (KO/EN) 안내 추가
2765
-
2766
- ### Deployed
2767
- - PyPI ✅
2768
- - npm ✅
2769
- - VS Code Marketplace ✅
2770
- - Open VSX ✅
2771
-
2772
- ---
2773
-
2774
- ## [0.1.0] - 2026-05-17
2775
-
2776
- ### Added
2777
- - FastAPI 브릿지 서버 (port 4825)
2778
- - Apple Silicon MLX 로컬 모델 지원 (Gemma 4, Qwen 2.5 등)
2779
- - 클라우드 모델 지원 (OpenAI, Groq, Together, OpenRouter 등)
2780
- - VS Code / Cursor / Antigravity 확장
2781
- - Telegram 봇 (로컬 AI 미러 + Codex 클라우드 봇)
2782
- - 어드민 패널 (`/admin`)
2783
- - P-Reinforce 지식 정원 엔진
2784
- - MCP 서버 연동
2785
- - Ollama / vLLM / LM Studio / llama.cpp 연동
2786
-
2787
- ### Security
2788
- - 모든 민감 엔드포인트 인증 적용
2789
- - SameSite=Lax 쿠키 (CSRF 방어)
2790
- - scrypt 비밀번호 해싱
2791
- - tempfile 레이스 컨디션 수정
2792
- - `run_command()` 위험 플래그 차단
2793
-
2794
- ### Deployed
2795
- - PyPI ✅
2796
- - npm ✅
2797
- - VS Code Marketplace ✅
2798
- - Open VSX ✅