User
ccb3cf4aa9
test: cover user-owned session security boundaries
2026-07-16 19:16:58 +02:00
User
7a65fc80a2
fix(deploy): validate session migrator TLS mode
2026-07-16 19:07:53 +02:00
User
cadc4c6947
docs(deploy): document user-owned session cutover
2026-07-16 19:02:58 +02:00
User
c6a74c9ccb
fix(frontend): harden owner action confirmation
2026-07-16 18:51:02 +02:00
User
58e0884df1
feat(frontend): expose owned session scopes
2026-07-16 18:46:18 +02:00
User
b454fb478b
fix(backend): harden principal child isolation
2026-07-16 18:38:40 +02:00
User
458eb13c89
feat(backend): enforce user-owned sessions
2026-07-16 18:32:52 +02:00
User
72db6b823d
fix(harness): record postgres decision phases
2026-07-16 18:08:17 +02:00
User
c1cddaa667
refactor(harness): route workflow persistence through repositories
2026-07-16 18:01:29 +02:00
User
259f021313
fix(harness): preserve session migration JSON errors
2026-07-16 17:35:54 +02:00
User
5dbb91390f
feat(harness): persist server sessions in postgres
2026-07-16 17:31:04 +02:00
User
8f0154eb9e
fix(harness): persist evidence artifact
2026-07-16 17:14:47 +02:00
User
8f364ec564
feat(harness): add local session repository
2026-07-16 17:11:22 +02:00
User
8296937bc0
docs: add user-owned session storage plan
2026-07-16 17:01:39 +02:00
User
671bd20329
chore: ignore Vitest cache
2026-07-16 13:03:38 +02:00
User
c587f9dc4a
merge: resizable activity timeline and CTE density
2026-07-15 16:06:19 +02:00
User
7fc58287a7
docs: clarify activity split fallback
2026-07-15 15:59:21 +02:00
User
6a5ca7e8cb
docs: record final activity split deployment
2026-07-15 15:57:33 +02:00
User
1f540fcb78
fix(frontend): harden activity split responsiveness
2026-07-15 15:52:22 +02:00
User
f0ef2654df
docs: record activity split deployment
2026-07-15 15:32:29 +02:00
User
f1af1f909b
style(frontend): tighten CTE plan vertical rhythm
2026-07-15 15:15:56 +02:00
User
d177e1c0af
feat(frontend): add resizable activity split
2026-07-15 15:04:15 +02:00
User
30e76a968d
fix(frontend): restore readable model activity timeline
2026-07-15 14:55:57 +02:00
User
9274f07987
docs: plan resizable activity timeline
2026-07-15 14:44:36 +02:00
User
7ad06cde81
docs: design resizable activity timeline
2026-07-15 14:29:50 +02:00
User
bef21f9e43
test(frontend): harden live log contract
2026-07-15 12:45:26 +02:00
User
4356a1243c
docs: record central live log deployment
2026-07-15 12:31:57 +02:00
User
09f9bdffe5
fix(frontend): restore live log text contrast
2026-07-15 12:27:19 +02:00
User
6b0da84a3d
style(frontend): compact CTE plan spacing
2026-07-15 12:09:04 +02:00
User
00c1af5a5a
fix(frontend): reset live log follow state on resume
2026-07-15 12:04:05 +02:00
User
279b79516c
fix(frontend): deduplicate live workflow activity
2026-07-15 11:55:14 +02:00
User
e7a8bc29b0
docs: harden central log implementation plan
2026-07-15 11:48:30 +02:00
User
b9e4a747f0
docs: plan central live log and compact CTE plan
2026-07-15 11:44:45 +02:00
User
d5ec7686a0
docs: design central live log and compact CTE plan
2026-07-15 11:27:39 +02:00
User
9554379916
docs: record filtered model activity deployment
2026-07-15 03:49:09 +02:00
User
72085990ef
fix(frontend): hide model activity execution noise
2026-07-15 03:24:22 +02:00
User
e9cbc2b701
docs: plan model activity signal filter
2026-07-15 03:15:53 +02:00
User
eef4cf0f50
docs: design model activity signal filter
2026-07-15 03:10:10 +02:00
User
ffef01eb0a
docs: record final lifecycle deployment
2026-07-15 02:21:00 +02:00
User
56d73d246b
fix: preserve unrelated resume during delete
2026-07-15 02:16:36 +02:00
User
0bcec1591b
fix: close delete resume and SSE replay races
2026-07-15 02:08:11 +02:00
User
4d36f4acf1
docs: record activity log and CTE deployment
2026-07-15 01:47:21 +02:00
User
6747f6f8a0
fix: serialize session lifecycle transitions
2026-07-15 01:37:42 +02:00
User
08b1f4909e
fix: make session resume atomic across restarts
2026-07-15 00:42:35 +02:00
User
2b4797f133
fix: harden resume and SSE replay
2026-07-15 00:06:00 +02:00
User
e5366d14a6
fix(frontend): harden CTE step semantics and padding
2026-07-14 23:33:40 +02:00
User
964bff9612
fix(frontend): restore CTE card padding and hierarchy
2026-07-14 23:24:02 +02:00
User
d2d8029ff2
fix(security): sanitize session bootstrap failures
2026-07-14 23:13:21 +02:00
User
f58b1d84ae
fix(frontend): show complete model activity from phase one
2026-07-14 23:06:07 +02:00
User
f0f6c3c223
feat(frontend): build chronological activity timeline
2026-07-14 22:56:41 +02:00
User
e0a97a01f3
feat(backend): expose sanitized tool activity
2026-07-14 22:46:22 +02:00
User
a3c7d6ba05
docs: plan complete activity log and CTE layout
2026-07-14 22:41:54 +02:00
User
2da2df58ca
docs: design activity log and CTE layout fixes
2026-07-14 22:33:30 +02:00
User
2759076db9
docs: record final core rebuild
2026-07-14 21:42:14 +02:00
User
df1e7dea9c
fix(resume): recover cleanly after Pi exits
2026-07-14 21:35:50 +02:00
User
7e1d72c9a4
docs: clarify Qwen smoke verification
2026-07-14 21:22:33 +02:00
User
a7b0fb7788
docs: record Qwen connectivity deployment
2026-07-14 21:14:30 +02:00
User
5891bb4a18
fix(deploy): connect core to local Qwen
2026-07-14 20:58:19 +02:00
User
1393c6358e
fix(frontend): reconnect stream on same-session resume
2026-07-14 20:53:19 +02:00
User
b1d1284cc8
fix(backend): restart idle Pi sessions on resume
2026-07-14 20:44:59 +02:00
User
aba8666f16
fix(backend): track Pi turn lifecycle
2026-07-14 20:39:45 +02:00
User
37cc42bebf
docs: plan Qwen connectivity and resume recovery
2026-07-14 20:33:57 +02:00
User
ad4d6963a2
docs: design Qwen connectivity and resume recovery
2026-07-14 20:26:00 +02:00
User
a295cabbe3
docs: record post-merge core rebuild
2026-07-14 19:24:38 +02:00
User
c4c1130041
docs: capture Pi model selection gotchas
2026-07-14 19:05:00 +02:00
User
7eb54b8399
docs: record model selector deployment
2026-07-14 18:57:29 +02:00
User
e286b9131e
test(frontend): cover configured model selector
2026-07-14 18:48:12 +02:00
User
0cf86e3540
fix(backend): allow configured local Qwen provider
2026-07-14 18:44:12 +02:00
User
3d23d0543c
fix(backend): validate configured model provider pair
2026-07-14 18:39:37 +02:00
User
c463de8da2
fix(backend): scope Pi model listing to enabled models
2026-07-14 18:33:15 +02:00
User
1b78f72b64
feat(backend): read Pi enabled model scope
2026-07-14 18:27:55 +02:00
User
7a07d9491f
docs: plan Pi-enabled model selector
2026-07-14 17:51:16 +02:00
User
49f6a402ee
docs: design Pi-enabled model selector
2026-07-14 17:42:59 +02:00
User
dbe9659060
docs: record refreshed container images
2026-07-14 15:59:19 +02:00
User
229b70958e
docs: record workflow regression deployment
2026-07-14 15:33:39 +02:00
User
9d4e057426
fix: serialize decision ledger writes
2026-07-14 15:30:06 +02:00
User
333874a755
fix: make join approval atomic
2026-07-14 15:24:06 +02:00
User
bc02213d3e
fix: subscribe to model activity events
2026-07-14 15:14:25 +02:00
User
f21df47bce
test: align model activity integration contract
2026-07-14 15:11:07 +02:00
User
e228c6f2fd
fix: harden phase summary open questions
2026-07-14 15:09:50 +02:00
User
18701f020e
fix: improve cte review presentation
2026-07-14 15:08:10 +02:00
User
27af6733c8
fix: make join review read only
2026-07-14 15:06:16 +02:00
User
c7474f3852
fix: restore model activity reasoning stream
2026-07-14 15:03:07 +02:00
User
1b1554b353
fix: auto-approve phase 3 rewrite
2026-07-14 13:51:39 +02:00
User
c7d586aaf7
fix: clarify memory selection semantics
2026-07-14 13:13:59 +02:00
User
1e3c5a1e99
fix: correct deployment note punctuation
2026-07-14 10:37:39 +02:00
User
64c02d26da
docs: record Docker rebuild handoff rule
2026-07-14 10:37:21 +02:00
User
3633a5ebd9
fix(frontend): refine activity layout and input state
2026-07-14 10:32:11 +02:00
User
6dbf93fff9
feat: harden runtime readiness and session workflow
2026-07-14 10:27:25 +02:00
User
6d7738d538
docs: specify model activity layout and composer state
2026-07-14 10:17:26 +02:00
User
664d392859
fix: remove verbose tool logs from UI + symlink config/tht.yaml
...
Two fixes:
1. Revert tool_execution_* forwarding: these cluttered the UI with raw
bash/read output the user never asked for. Only text_delta, system_event
and ui_request are forwarded, as before.
2. tht ignores THT_CONFIG env var and always looks for config/tht.yaml
relative to CWD. Create a symlink so the PI agent can run tht commands
without -c flag.
2026-07-13 00:29:28 +02:00
User
34f1fa271f
fix(bridge): forward tool/lifecycle events so user sees agent progress
...
The SessionBridge only forwarded text_delta and system_event types.
All tool_execution_*, agent_start, and turn_end events from the Pi
process were silently dropped, so the user saw a blank session even
though the agent was actively running (calling tools, querying the DB).
Forward:
- tool_execution_start/end as info events (visible in stepMessages)
- agent_start, turn_end as system_event (lifecycle tracking)
Also: log Pi stderr instead of draining silently, for debugging.
2026-07-13 00:22:54 +02:00
User
ac333f99ac
fix(docker): chown .pi to thoth so Pi locks survive rebuilds
2026-07-13 00:14:37 +02:00
User
dfe2774a1a
fix(sse): buffer session events for late subscribers + clear on close
...
The Pi process produces events immediately after session creation, but
the browser's SSE connection may not be open yet (React re-render delay,
navigation). The hub discarded events with no subscribers, so the user
saw a blank session.
- Ring-buffer up to 200 events per session; replay on subscribe
- hub.clear(id) on POST /sessions/:id/close frees memory
2026-07-13 00:01:11 +02:00
User
0d8a8eb59f
fix(frontend): allow /datamart-builder/api as valid backend base URL
...
The embedded mode sets VITE_BACKEND_URL=/datamart-builder/api (the nginx
proxy path), but the runtime-config policy only allowed /api. This caused
resolveBackendUrl() to throw at app startup, resulting in a blank SPA.
Add /datamart-builder/api and /datamart-builder/api/ to relativeBases and
test cases.
2026-07-12 23:35:13 +02:00
User
32048d728e
Merge feat/docker-local-deploy: Docker deploy (Profile A) + codex portable-deployment
...
Docker locale embedded nel portale omics_portal (/datamart-builder), backend invisibile.
2 container (core+frontend) su omics_portal_omics_network, DB direct :5438 (ruoli dedicati),
merge codex/portable-deployment (secret-bundle, provider-credentials, auth upstream).
Verificato live: sessioni create/show/list, Pi+model+SSE, backend 132/132.
2026-07-12 23:11:20 +02:00
User
eb83cb8fc1
docs(state)+test(l2): deploy state snapshot + configurable L2 workspace path
...
PROJECT_STATE: sezione deploy Docker live (Profile A embedded portale, ruoli DB,
secrets, merge codex, fix load-bearing). L2 test: WORKSPACE da env THT_L2_WORKSPACE
(default path Mac) -> può girare ovunque, skip pulito se assente.
2026-07-12 23:11:20 +02:00
User
122cbfd50d
fix(docker): post-merge fixes for codex backend compatibility
...
- restore COPY harness/ (perso durante edit) -> /app/harness esiste
- cp workflow.yaml in site-packages: tht lo carica module-relative
(parent.parent del package); non-editable install non lo includeva
-> session show 500 (FileNotFoundError). pip install -e non accettato da pip.
- cd /app/harness && pip install . : pip 26.1.2 rifiuta il path bare /app/harness
- compose: THT_MODEL_API_KEY_FILE per buildPiChildEnv (codex) -> session create
prima 500 'model provider credential is unavailable'
Verificato: session show 200 (phase 1), create 200, Pi+model+SSE OK.
2026-07-12 21:30:49 +02:00
User
2bd2f72356
Merge origin/codex/portable-deployment into feat/docker-local-deploy
...
Unisce gli internals di Codex (secret-bundle, provider-credentials, auth upstream,
security hardening, CI multiarch) mantenendo le fix portal-specific:
- backend: configPath da THT_CONFIG (fix sessioni) + dataRoot di Codex; authMode 'upstream'
- Docker/compose: TENUTO il mio (verificato live: omics_network+alias, env_file, pi npm-g)
perche' il compose/Dockerfile/entrypoint di Codex sono accoppiati al suo modello
secret-bundle (tht doctor inesistente, secret-policy.sh). Adottabile in futuro.
- config.test.ts: preso Codex (superset)
Verificato: tsc clean, 132/132 vitest.
2026-07-12 21:13:20 +02:00
User
9d987f639a
fix(backend): configPath from THT_CONFIG env (routes senza workspace fallivano in container)
...
app.ts hardcodava configPath='config/tht.yaml' (symlink solo in dev). Nel container
i route che non passano workspace esplicito (sessionList/sessionShow/documents)
cercavano config/tht.yaml inesistente -> 500. Ora legge THT_CONFIG (entrypoint lo
setta a workspaces/local.yaml), fallback al default per dev. Compose lo esplicita.
Verificato: GET /sessions ora ritorna la lista.
2026-07-12 18:25:38 +02:00