Change log

Significant deliveries across Agency repos (newest first). Backlog lives in agency-workspace/todo/ — do not mix the two.

Entry format: a date heading, then one block per delivery titled with the repos it touched and its date, followed by a short prose summary of what changed and why. No commit SHAs — an entry cannot carry the SHA of the commit that adds it, and a follow-up commit to stamp one is not worth the noise; use git log when you need the exact revision. Skip routine submodule pointer bumps unless they mark a coordinated release.

Build HTML: ./run document → Change log in Sphinx.

2026-08-28

agency-ui · agency-django · agency-server · 2026-08-28

3D desktop is an FPS helm, not orbit. Triple glass 2 · 1 · 3 (default curve 70°), world origin at the center pane’s bottom edge, seated eye {0, -400, 72}. Space = mouselook + pointer lock (no RMB look). WASD walks; wheel is head height; Ctrl crouches from the current Y. Room is a red floor, two green walls, and one sky plane behind the glass — no desk slab. Stream Deck (apps / helm / log) sits in front of the center pane. Windows carry screen and hop on release past a hinge; chrome is free in Y. Options Border zoom dollies the view near the browser frame. Map: agency-ui#26.

2026-08-27

agency-ui · agency-django · agency-server · 2026-08-27

3D desktop is a penthouse office (street window, desk, virtual glass). Camera is first-person: WASD walks, right-drag or hold Space looks (also over windows — no browser menu). The 3D Interface window still holds the gizmo. Bot does not move the camera.

agency-ui · agency-django · agency-server · 2026-08-27

3D stage applies a real perspective fan: off-center windows tilt toward the vanishing point; the focused one stays almost frontal and comes forward. Window chrome is 90% opaque (title, border, and minimized body).

agency-ui · agency-django · agency-server · 2026-08-27

2D minimize shelves windows into a top-right column (quarter viewport width, stacked from the app bar). If the stack does not fit, the whole column scales instead of scrolling. Min / restore / maximize animate. 3D minimize stays a bottom carousel.

agency-ui · agency-django · agency-server · 2026-08-27

Drawer chrome: a tools row under the header holds light/dark, mosaic, 3D stage, and a labeled Install button. Those controls leave the app bar (immersive still has min / mosaic / restore / close). Mosaic is not on window title bars. Theme and 3D stay neutral; Install is the only primary-colored control in that row.

agency-ui · agency-django · agency-server · 2026-08-27

Window chrome: wheel on maximize changes CSS pose.scale 5% about the cursor (persisted on F5). Mosaic tiles every open window (carousel included) in a CCTV grid — 2 = split, 4 = 2×2, 5 = 1+4, up to 16 — with the active window in the featured pane.

agency-ui · agency-django · agency-server · 2026-08-27

Structured pose (numbers only; Vue writes one CSS transform) and a thin 3D DSM stage. Chrome pose lives on windowsStore + the desktop snapshot, not overlay. desktop.projection is flat or perspective (drawer toggle). Open windows stay frontal; minimize on the stage is a bottom carousel. Public-scene pose is reserved for Displays (#22).

agency-ui · agency-django · agency-server · 2026-08-27

Bot panels persist a UIDocument (/api/ui/panels/). The palette is the registered schema types; create_panel / patch_panel / open_panel compose and open panel.{uuid}. Reconnect reads REST — the panel does not evaporate with the socket.

agency-ui · agency-django · agency-server · 2026-08-27

UINode is a closed union: missing types (table, agent-chat, task-progress, lobby-chat) are in the contract; isValidNode rejects Vuetify names; vue-tsc is required CI. Django KNOWN_UI_TYPES is the same palette.

agency-ui · agency-django · agency-server · 2026-08-27

Live UI overlay: disabled (and the closed live set) is entity_id → attrs, not a patch of the schema tree. The bus projector writes the overlay; reconnect rehydrates GET /api/ui/overlay/. Window geometry stays in windowsStore.

agency-ui · agency-django · agency-server · 2026-08-27

UI address space: schema nodes carry channel + uuid (and children only name). entity_id is the Agency Bus topic — no Vue↔path map, no composed channel on the child, no addressing by children index. UiRenderer injects the prefix; Django emits the same fields (agency.ui.address, boot desktop + pinned fixture).

agency-django · agency-server · agency-ui · 2026-08-27

Ephemeral public rooms (RoomConsumer) and Lobby UI: WebSocket path /channel/room/<slug>/ for real-time chat without DB history. Group room-<slug>. Auth required (close code 4401 for anonymous). Presence broadcasts unique authenticated users on join/leave. ASGI route in framework/server/asgi.py. UI: lobby-chat schema type (AgencyLobbyChat), singleton window address lobby, desktop icon AgencyDesktopLobbyIcon with presence badge, Pinia lobbyRoom store with reconnect backoff.

2026-08-26

agency-django · agency-ui · 2026-08-26

Users explorer (staff-only): list / detail split-pane for managing user accounts, preferences, and group assignments. Accessible from the drawer under Configuration (visible only to staff). Components: user-explorer schema type, AgencyUserExplorer Vue component, users Pinia store. Tabs: Profile (username, email, name, flags, metadata), Preferences (workspace, agent, language, timezone, voice), Groups (multi-select chips). Requires backend staff API.

agency-django · 2026-08-26

Staff API for the Users explorer: new REST endpoints under /api/ requiring is_staff=True. /api/users/ (GET, PATCH) lists and updates User objects; /api/users/<id>/ retrieves/updates a specific user; /api/users/<id>/prefs/ (GET, PATCH) gives staff access to any user’s preferences; /api/groups/ (GET, POST, PATCH) manages auth groups. User fields exposed: id, username, email, first_name, last_name, is_active, is_staff, is_superuser, groups, date_joined, last_login. Password hashes are never exposed. Non-staff users receive 403 Forbidden on all staff endpoints.

agency-django · agency-server · 2026-08-26

Google OAuth production login (https://agency.nabla.net). The SPA login page shows Continuar con Google (POST /accounts/google/login/ with CSRF) as the primary action; username/password is behind a dev toggle. allauth URLs mount at /accounts/ before the SPA catch-all; callback is /accounts/google/login/callback/. boot.py syncs Site.domain from DJANGO_ALLOWED_HOSTS (or explicit DJANGO_SITE_DOMAIN). DJANGO_SECURE_SSL=true enables ACCOUNT_DEFAULT_HTTP_PROTOCOL='https' for TLS-terminated nginx. Production requires a stable DJANGO_SECRET_KEY shared by all containers (OAuth state lives in the session). LoggingSocialAccountAdapter logs OAuth errors to system.log. First-admin promotion: on fresh installs with zero superusers, the first Google login is promoted to staff/superuser; DJANGO_SUPERUSER_EMAILS allowlists additional emails. Host wiring: adapter calls maybe_promote_user on login; boot calls promote_allowlisted_users(). Helpers and promote_superuser command in agency.auth.staff. Password bootstrap (admin/1234) remains dev-only.

agency-server · agency-workspace · 2026-08-26

Veronica’s operator entry stays the desktop Agent Face (open secretary). The planned app-bar nabla toggle is cancelled: when an Agent needs attention under covering windows, use the popup stack (secretary.notify, HITL, tasks), not a permanent shell button. Backlog: todo 20 Phase 6 + todo/next.

2026-08-25

agency-django · agency-ui · agency-server · 2026-08-25

Veronica can smile on request: set_face_expression publishes agent.<id>.face.changed; the parametric Agent Face (South Park–style discrete eyes and talk mouth) renders it in the chat topbar and desktop icon.

agency-django · agency-server · 2026-08-25

Personal Thread chat with image attachments now lists every saved photo_id (and Media now_playing when relevant) so Veronica calls edit_image with all references — Kontext multi — instead of only the car on Media.

agency-django · agency-ui · agency-server · 2026-08-25

Veronica’s window is a persistent personal Thread now, not the ephemeral agent-test socket. One active conversation per user and Agent; New conversation archives the previous timeline. REST /api/thread/ is the source of truth, /channel/ projects committed messages, and MCP ask_agent uses the same service. Mission dispatch from that chat still creates a new Execution Thread and records origin_* metadata.

agency-ui · agency-server · 2026-08-25

Window chrome is one bar: AgencyChromeBar at 40px, same button type as Veronica Image / Speak. Explorers, secretary chat, execution chat, and Media share it. Light/dark colours live in agency-ui/src/theme/agency.ts.

agency-ui · agency-server · 2026-08-25

Agents, Missions, and Tools match Photos chrome: Filter in the list, selected title on the left, run actions on the right (Chat / Agent+play / Sync icon) with hide-detail last. Tools ficha is Properties / Help (Help is a read-only pre). New / Delete / Save sit under the split.

agency-django · agency-ui · agency-server · 2026-08-25

Sending two Photos on Veronica no longer kills the agent socket. Daphne’s default 1 MiB WebSocket cap closed the connection (1006) before the consumer ran — the UI just showed Connected to agent: Veronica again. Library drops now send photo_ids (server reads the files). Daphne --websocket_max_message_size is 16 MiB for remaining PC base64 drops.

agency-django · agency-server · 2026-08-25

edit_image can compose several Photos into one picture. Drop the robot and the motorcycle on Veronica (up to 4), caption in Spanish or English, Send. She calls edit_image with photo_ids and an English prompt. That hits FAL fal-ai/flux-pro/kontext/max/multi (data URIs — localhost /media/ is not fetchable). One photo still uses LoRA img2img + Comfy fallback. Compose needs FAL_KEY; no local fallback. Existing Veronica instructions are create-only — Sync from code so the tool Help is current.

agency-ui · agency-server · 2026-08-25

Photos is a split explorer: origin select in the top bar (like Missions’ agent field), list filter, hideable Image / Data detail, Media icon on the chrome. Drag a photo onto Veronica’s chat (Chrome dragover now sees the Agency kind MIME). Drop onto the wallpaper pins a thumbnail; drag that onto chat the same way.

agency-ui · agency-server · 2026-08-25

Dropping an image on Veronica (icon or chat) attaches it to compose: preview + caption, then Send — it does not go to Media. Media’s blue drop outline no longer sticks after a drop (nested window/player hover).

agency-ui · agency-server · 2026-08-25

Media has a Download button for the current image. Drag-and-drop uses the same dotted addresses as Agency Bus: file.image from the PC onto desktop.media uploads to Photos and plays; onto desktop.photos it only uploads. Photos list items are photo.<id> and play on Media. A drop publishes <target>.drop.accepted so other surfaces can see where it landed.

agency-django · agency-ui · agency-server · 2026-08-25

Each Agent has a TTS Voice (provider + key; Piper catalog seeded at boot). Agent chat and mission auto-speak use that voice. User Options now groups UI (theme, language, timezone), RAG (workspace), and Preferences (active agent + system voice for grave OS lines / speaking as the operator). UserPreferences also stores active_thread. Legacy ttsVoice Piper keys still PATCH to the system voice.

agency-django · agency-ui · agency-server · 2026-08-25

Veronica can edit the picture on Media. edit_image takes an English prompt and optional photo_id / strength (default 0.35). Empty photo_id uses the operator now-playing (Photos clicks persist via PUT /api/me/media/; show_media remembers the same slice). FAL flux-lora/image-to-image first, then local ComfyUI SD 1.5 img2img. Source aspect is kept (long side ≤ 1024); FAL gets {width, height}, not a square enum. The result is a new Photos row shown on Media — not a txt2img redraw.

agency-django · agency-ui · agency-server · 2026-08-25

Agency Map is a desktop window (map schema type): dark Aire tiles at low zoom, satellite past 13, a flying cursor with cosine easing, and an optional Satellite split pane (lat/lng/alt). Veronica opens it with open_window(window='map'). No Google Maps key — Leaflet + Carto/Esri. Fleet geo (zones, displays-on-map) remains todo 32.

agency-django · agency-ui · agency-server · 2026-08-25

System → Info has three sibling collapsibles: Versions (Agency), Inference (Ollama + NVIDIA GPUs, ComfyUI version from /system_stats when deployed), and System (closed: Host + Python).

agency-django · agency-ui · agency-server · 2026-08-25

AgencyMedia is a singleton desktop player (images + YouTube) so Veronica can put media on the operator chrome without a kiosk. show_media publishes desktop.media.now_playing.changed and opens the window. Explorer folders Uploads / Generated, letterboxed stage, sidebar header preview (video icon for YouTube — the iframe exists only while Media is visible). Chat thumbs and Photos → Open in Media send the same player.

agency-django · agency-ui · agency-server · 2026-08-25

Veronica opens desktop windows over Agency Bus (desktop.<address>.visibility.changed) instead of legacy ui.update. open_window takes chrome aliases, a Display name (live preview), or a View name (editor). Fantasy display wallpaper no longer loops asking which kiosk: it generates, opens Photos/Displays (or the named preview), and waits. LoopDecision.wait defaults to operator if the supervisor omits the wait object.

agency-django · agency-ui · agency-server · 2026-08-25

System → Info Versions is a collapsible: Agency, Ollama (GPUs nested), System, Python. A GPU snapshot line is written to system.log when it changes. System → Logs SSE is an ops feed (errors, tracebacks, restarts, GPU) with backfill — not live DEBUG. Unhandled Django 500s go to django.request → system.log.

agency-django · agency-ui · agency-server · 2026-08-25

If Ollama is unreachable or only serves embeddings, uncustomized Veronica (and Help / Viewwright) bind to gpt-4o-mini instead of a dead local model. GPU-back on the next boot restores Ollama. The System window has an Info tab: Linux / Python / Django / LangChain versions and NVIDIA GPUs as seen by Ollama (not the WSGI container).

agency-django · agency-ui · agency-server · 2026-08-25

The FAL provider seeds image endpoints fal-ai/flux-lora (FLUX.1 [dev] with LoRAs) and fal-ai/flux/schnell. generate_image can pin model=fal-ai/flux-lora; otherwise ComfyUI still goes first. Secrets stay in FAL_KEY. Those rows are image models, not chat — the Agent picker hides them.

agency-django · agency-ui · agency-server · 2026-08-25

Providers have an explicit kind (Ollama, OpenAI, FAL, OpenAI-compatible) and api_key_env (the variable name only). Boot seeds OpenAI with gpt-4o-mini / gpt-4o so an Agent can run ChatGPT when OPENAI_API_KEY is in Compose. Sync uses Ollama /api/tags or OpenAI /v1/models; FAL is skip. Explorers expose kind, key-present, temperature, and a provider-prefixed model picker. Secrets stay in the environment.

agency-django · agency-ui · agency-server · 2026-08-25

Agency is an installable PWA (Nabla mark). The operator desktop ships a web app manifest and a root-scoped service worker that precaches hashed Vite assets and /offline.html. Public /health/ exposes boot_id / ui_build: if the channel drops the SPA shows a wait overlay; if the process identity changed it pops a restart notice and reloads. Same boot_id only rehydrates. Not a full offline OS — API and sockets stay live.

agency-django · agency-ui · agency-server · 2026-08-25

Catalog deltas are canonical Agency Bus envelopes. Django Catalog.emit publishes <resource>.<id>.catalog.<action> on the users group; the browser adapter is gone. Leftover monitor_event / catalog_changed frames are ignored so they cannot double-apply. Presence was already on this path; conversation, HITL, secretary.notify and tasks still use the inbound if/else.

agency-django · agency-ui · agency-server · 2026-08-25

Displays and Views can be protected (padlock in the explorers). Agents refuse assign / show_image_on_display / template edits on a locked resource, and they no longer spray a generated wallpaper onto every kiosk — only the screen the operator named, or a newly commissioned view. Templates compose with <agency-include namespace="display.example.clock"> (shipped Clock + photo). DisplayView namespaces were already display.example.* / display.view.*.

agency-django · agency-server · 2026-08-25

Example mission Fantasy display wallpaper (mission.example.fantasy_wallpaper): loop that asks Veronica to generate_image a 1024×768 cinematic fantasy landscape (ComfyUI). Apply with show_image_on_display only when the operator named a screen — never every kiosk. Continue for another variant; “basta” completes.

agency-django · agency-server · 2026-08-25

Veronica can draw color pictures through ComfyUI: generate_image (default 768×768, max 1024) saves to Photos and can assign a kiosk. Dock icons stay on generate_agency_icon (128×128 white glyphs). Photo negatives no longer ban color or photography.

agency-django · agency-server · 2026-08-25

import_display_image no longer saves Wikipedia File: HTML as a fake JPEG (nginx then served it as image/jpeg and the kiosk showed a broken image). Bytes are sniffed; Wikimedia File:/Archivo: pages rewrite to Special:FilePath.

agency-django · agency-ui · agency-server · 2026-08-25

Secretary can see in-flight work: list_running_work / get_operator_context report running executions and wait_for_execution pauses (shared across chat windows). Mission-run popups auto-dismiss on success and are reconciled after task-channel reconnect, so container restarts no longer leave a sticky “Mission running…”. Display kiosks and previews reconnect with backoff, send heartbeats, and rehydrate the HTTP snapshot; a Display stays online while any session is still heartbeating.

agency-django · agency-ui · agency-server · 2026-08-25

New DisplayViews use namespace display.view.*; the description field stores the operator prompt that generated the template. Veronica calls commission_display_view (name + prompt) and waits — via LangGraph interrupt, not a worker sleep — for the shipped Viewwright specialist to fill HTML/CSS/JS. wait_for_execution is the generic form. Agent.deep / create_deep_agent remains in-process and is not used for this handoff. Shipped kiosk template Clock (display.example.clock). inspect_displays leads with next actions so the secretary cannot stop after a catalog dump.

2026-08-24

agency-django · agency-server · 2026-08-24

Agents can operate kiosks through agency.tools.display: inspect screens and templates, publish a View, assign it with a Scope, mutate live properties, import an image into Photos, or show_image_on_display as the Media image shortcut. Veronica ships with these tools. Names and slugs are enough; the LLM never builds Channels group names.

agency-ui · agency-django · agency-server · 2026-08-24

Display property events stay on the scope channel (display-scope-*). Sibling pickers missed the selected thumb because the iframe SDK dropped property messages before subscribe, and the runtime discarded a whole frame when scope_revision looked stale. Last-value replay plus per-property revision; display-{id} stays assignment-only.

agency-ui · agency-django · agency-server · 2026-08-24

Displays explorer is screens-only. Each display has Preview / Properties / View tabs: live iframe, name + full-width scope, nested view list with check and pencil. Assignment Save / Delete match other explorers. PATCH and DELETE on /api/displays/<id>/. Display templates moved to the Views window (display-view-explorer). Admin inlines properties on a scope.

agency-ui · agency-django · agency-server · 2026-08-24

Display previews reload when the assignment changes. Opening a screen before assigning a template used to stick on No assignment; property deltas also never arrived because the socket had not joined the scope group. display.assignment.changed now rehydrates the snapshot and follows the new scope.

agency-django · agency-server · 2026-08-24

Example display templates Media image and Media picker share scope image_url (nabla-link kiosk / photo-library pair). Billboard reads /media from the property; the picker lists GET /api/photo/ and sets the path so every assigned kiosk updates. Boot is create-only by name; picker listing needs an Agency session cookie.

agency-ui · agency-server · 2026-08-24

Maximizing a desktop window no longer remounts its body. Explorers (Agents, Missions, Tools, Photos) were re-running onMounted and jumping back to the first list row. Immersive chrome still hides the in-window title bar.

agency-django · agency-server · 2026-08-24

Tool icons map each catalog leaf to a concrete pictogram (analog clock, pocket calculator) before SD 1.5. Spanish labels like lista agentes were producing noise; the clock worked because it is an object CLIP knows. Comfy seeds are random so a batch in the same second no longer clones one glyph. The tool result prints Pictogram: plus the SD recipe.

agency-django · agency-server · 2026-08-24

Icon gen echoes the actual SD prompt, negative and Comfy checkpoint in the tool result. The CLIP prompt is short and subject-first (SD 1.5’s 77-token cap was swallowing the old style dump). subject is a pictogram, not a verb or tool id.

agency-django · agency-server · 2026-08-24

generate_agency_icon(tool_id=…) resolves unique leaves (create_agent, create agent) and, on a miss, lists closest catalog ids instead of a dead-end “not found”. list_catalog_tools filters tools without an icon. Example mission Generate tool icon (mission.example.tool_icon) walks that path.

agency-django · agency-server · 2026-08-24

Local GPU image gen via Compose comfy (ComfyUI + SD 1.5 fp16). generate_agency_icon calls it first; OpenAI / fal remain fallbacks. UI: http://127.0.0.1:8188. First boot downloads ~2 GB into agency_comfy.

agency-django · agency-server · 2026-08-24

generate_agency_icon no longer invents JSON geometry. An image model draws the PNG (ComfyUI on this Linux stack; Ollama x/flux2-klein when the runtime supports it; otherwise OpenAI Images or fal FLUX). Pixels are keyed to a 128×128 white-on-transparent dock glyph.

agency-django · agency-ui · agency-server · 2026-08-24

Tool catalog ids follow the Python path minus agency. (tools.secretary.title_user_photo). Sync renames legacy short ids and keeps agent M2M. The Tools explorer groups by module. Help is read-only and always the Python docstring (Sync / save refresh it). The LLM still calls the function name — OpenAI/Ollama cannot use dots in tool names.

agency-django · agency-server · 2026-08-24

Chat attachments already land in Photos before Veronica looks at them. title_user_photo lets her set a descriptive title afterwards (latest chat upload by default, user-scoped). open_window("photos") focuses the library.

agency-django · agency-ui · agency-server · 2026-08-24

Operator photo library. Chat vision attaches land on disk at /media/uploads/user-<id>/upload/ (and show as thumbs in the bubble, not [image]). Generated glyphs from generate_agency_icon also copy into …/generated/. Menu → Photos (and a desktop icon) is the explorer; Open puts the picture on the desktop.

agency-ui · agency-django · agency-server · 2026-08-24

Mission Control chrome: one Vuetify background/surface palette and 40px bars (window title, explorer header/footer, System/Help toolbars, tabs). Help/Schema and Missions/Agents use agency-split. Missions put a borderless Agent select + Execute in the header; Agents put Open chat there; New sits in the detail footer. The shell app bar is always flat. Desktop maximize still gets restore in the app bar (mobile: min/close). AG Grid rows match the 22px tree. The shell drawer is the only large tab strip.

agency-workspace · agency-django · agency-ui · agency-server · 2026-08-24

Authorship and licence across every root: pyproject.toml claimed authors = [{name = "Agency"}], package.json claimed nobody. Both now name Txema Vicente Segura, and each repo carries a proprietary LICENSE for the Proprietary that packaging already declared. Sphinx copyright is a 2025- range instead of a bare current year.

agency-django · agency-ui · agency-server · 2026-08-24

Agency Bus VS2: Django emits canonical envelopes. Agent presence (agent.<id>.presence.changed) is published from the Mission runtime and from chat sessions, and reaches the bus with no adapter. The Agent Face now reflects real work instead of playground timers, is keyed by Agent so two portraits agree, and announces its state as text. secretaryFace retired.

agency-ui · agency-django · 2026-08-24

Desktop maximize uses mobile chrome (app bar title + min/close). Ghost maximized windows no longer vanish. UserPreferences is on /admin/ and /system/ (clear desktop snapshot action).

agency-ui · agency-server · 2026-08-24

Agency Bus VS1: typed envelope, */** topic matcher and in-memory bus in agency-ui/src/bus/. First slice migrated is catalog_changed, now published as <resource>.<id>.catalog.<action> with a projector as the single mutation owner. Field names are snake_case on the wire and in TypeScript. Backlog: todo/36-agency-bus.md.

agency-ui · agency-django · 2026-08-24

Desktop chrome: one System icon (channel + API/telemetry pulses); theme toggle on desktop only; mobile app bar hosts min/close. Maximize keeps the window title bar. Desktop icons no longer duplicate the Menu.

agency-ui · 2026-08-24

First desktop icon is the active agent’s live AgencyAgentFace (chrome; opens secretary). Drawer header is operator-only.

agency-ui · agency-django · 2026-08-24

AgencyAgentFace: 128×128 agent portrait + CSS overlay (idle blink, thinking eyes shut, South Park jaw when speaking). Agents gain an icon field; Veronica ships a default face.

agency-ui · agency-django · 2026-08-24

Secretary chrome: drawer-header eyes open agent-interface (active agent chat, Veronica by default). Address secretary / agent.me.

agency-server · 2026-08-24

Docs: Mission Control is the Agents / Missions / Executions desktop app, not the Agency system or the whole web desktop.

2026-08-23

agency-django · agency-server · agency-workspace · 2026-08-23

Permissions Phase 1–3: user-scoped Execution/Interruption REST; ThreadConsumer ownership; corpus TenantMembership + workspace/document filters; development/permissions.rst.

agency-django · 2026-08-23

Standalone pytest CI: eager Celery app (tests/celery_app.py) and LLM_CONTEXT_WINDOW in tests/settings.py.

agency-django · agency-ui · agency-workspace · 2026-08-23

Resource namespaces Phase 1: namespace on Mission/Agent/DisplayView, collapsible explorer groups, fixture backfill; display iframe embed fixes.

agency-server · 2026-08-23

CSP frame-src + referrer policy so display views can embed YouTube (and other https iframes) without Chrome “content blocked”.

agency-django · agency-ui · agency-server · 2026-08-23

Example display templates boot seed (Counter demo, YouTube video fixture); Displays sidebar live thumb; catalog card test fixes for loop fields.

agency-django · agency-ui · agency-server · 2026-08-23 · 9b63e2d

agency.display VS1–VS2: remote displays, view templates, scope mutate, kiosk URL, Displays explorer + editor; HITL answers in mission chat; Vite imported-chunk CSS fix for SPA shell.

agency-django · agency-ui · agency-server · 2026-08-23

Veronica phases 2–3: shipped system_key/content-hash boot upsert, secretary instructions + tools (context, dispatch, desktop, open_window, show_notification), user WS agency_frame + secretary.notify; example missions Help/Dispatch/Open window; documentation/veronica.rst.

agency-django · agency-ui · 2026-08-23

Phase 1 active operator: UserPreferences.active_agent, get_active_agent(user), /api/me/prefs/ activeAgentId, UI selector, Mission explorer preselect, dispatch fallback; tests/test_active_agent.py.

agency-django · agency-ui · agency-server · 2026-08-23

Veronica default agent + example missions (boot seed); loop chat during waiting; continue_mission re-enters loop evaluation; tutorial example-missions.

agency-django · agency-server · 2026-08-23

Mission loop evaluator: inject thread transcript into evaluate_loop_decision; reject placeholder next_input; docs updated.

agency-server · 2026-08-23

Mission Control docs: loop use cases, design patterns (supervisor / polling / HITL), Portero & form-confirm examples; technical mission-loop reference.

agency-ui · agency-django · agency-server · 2026-08-23

Mission loop: loop_prompt-derived oneshot/loop missions; structured LoopDecision; Celery run_loop_iteration; Execution iteration state; explorer + execution UI (todo 12).

agency-ui · agency-django · agency-server · 2026-08-23

Vision path: camera Ask agent / Portero watch + agent-test image attach; AgentConsumer multimodal images gated on Model.vision; boot seeds Portero (todo 11).

agency-ui · agency-django · agency-server · 2026-08-23

Mission Control execution window: conversation + collapsible tool steps, Dev raw panes; follow-up chat via POST /api/execution/<id>/message/ (Celery continue_mission). HITL remains channel overlay (todo 10).

agency-server · agency-django · agency-ui · 2026-08-23

TTS voice picker: curated Piper catalog (ES/MX/AR + EN); ttsVoice in user Options / admin prefs; POST /api/voice/tts accepts voice.

agency-server · agency-ui · 2026-08-23

Voice service agency_voice (faster-whisper STT + Piper TTS) at /api/voice/; agent test chat mic + optional auto-speak.

agency-django · agency-server · 2026-08-23

Help docs retrieval is semantic: singlehtml sections indexed in Chroma agency_docs; read_agency_help embeds the query (no keyword synonyms).

agency-server · 2026-08-23

Document authorship: Txema Vicente Segura / Nabla Soluciones Lógicas, S.L.

agency-django · agency-server · 2026-08-23

read_agency_help tool reads Sphinx singlehtml; boot seeds Help agent that uses it to answer documentation questions.

agency-ui · 2026-08-23

Drawer: Configuration collapsed by default (like User interface); Help under Knowledge base.

agency-ui · 2026-08-23

Bottom-right popup stack: HITL pending as sticky cards (no auto-dialog on hydrate); notable Celery tasks show live progress / success / failure toasts.

agency-django · agency-ui · 2026-08-23

Tools catalog explorer with uploadable ImageField icons; agent ficha assigns tools via icon grid + picker; desktop/menu entry under Configuration.

agency-ui · agency-server · 2026-08-23

Centralise explorer form CSS in explorer.scss (form-top, form-fill-area, list-toolbar); document styling contract in frontend.rst.

agency-django · agency-ui · 2026-08-23

UI i18n via Django gettext: bootstrap locale + messages; UserPreferences.language; Vue reload on change.

agency-ui · 2026-08-23

Shell i18n (en/es); user window Options (workspace, language, theme); remove drawer Options entry.

agency-ui · 2026-08-23

Move drawer Sites into user.me window (User · Sites tabs).

agency-ui · 2026-08-23

App-bar API / Telemetry icons (CRUD + error, catalog Δ); drawer profile header without status cards.

agency-ui · 2026-08-23

Drawer profile header (48px avatar, Channel / Telemetry / REST monitors); remove app-bar user avatar.

agency-ui · 2026-08-23

Agency desktop typography: 13px window body, compact explorer fields, icon-only System pane toolbars.

agency-ui · 2026-08-23

Shell drawer Windows tab lists open windows (desktop + mobile); remove top dock tab strip and mobile taskbar.

agency-ui · 2026-08-23

Replace WinBox with native AgencyWindowFrame: floating drag/resize, maximize-as-tab, minimize via store (no WinBox min-strip hacks).

2026-08-22

agency-ui / agency-django · 2026-08-22

Agency desktop help window: embed Sphinx singlehtml without an iframe.

agency-ui / agency-django · 2026-08-22

Agency desktop camera window: webcam preview with device selector.

agency-django / agency-ui · 2026-08-22

User preferences: active corpus workspace + Desktop snapshot (GET/PATCH /api/me/prefs/); window addresses kind / kind.ref.

agency-django · 2026-08-22

Rename management admin: DataSite → AgencyAdminSite, mount /data/ → /system/.

agency-server · 2026-08-22

Split Development → UI into index / frontend / schema / python / sites; document agency-ui component registry.

agency-server · 2026-08-22

Remove unused Sphinx generated/ autosummary stubs (excluded from build).

agency-server · 2026-08-22

Documentation architecture: single responsibility per surface; slim READMEs; changes.rst policy (no SHA-only follow-up commits); Sphinx remains canonical technical docs.

f6ece01 · agency-server · 2026-08-22 21:24 +0200

Narrative Sphinx docs: Architecture, Tutorials (Agent / Mission / HITL), Development → Processes, Framework RAG, Reference caption, Concepts, ./run document-single.

e220848 · agency-django · 2026-08-22 21:24 +0200

Fix corrupted ThreadRunner.invoke docstring; README links to Sphinx narratives.

831b14f · agency-server · 2026-08-22 20:05 +0200

Sphinx nav: Framework / Development reorg; consolidate Models/Tools autodoc.

99e22fe · agency-server · 2026-08-22 17:58 +0200

Introduce Sphinx change log and English backlog conventions.

b2074ea · agency-django · 2026-08-22 17:44 +0200

CI coverage gate set to 35%.

6e8252e · agency-django · 2026-08-22 17:42 +0200

Todo 02 (partial): +34 pytest (encoder, groups, execution/corpus API).

e91f0cf · agency-ui · 2026-08-22 17:42 +0200

Todo 02 (partial): vitest ui store, applyAgencyEvent, execution timeline.

bc1b697 · agency-django · 2026-08-22 14:08 +0200

Corpus without langchain-community: pypdf + langchain_ollama; PDF loader tests.

d367ae3 · agency-server · 2026-08-22 14:08 +0200

Docker requirements: removed langchain-community.

bcf9a2b · agency-django · 2026-08-22 13:48 +0200

Private repos CI: standalone tests/settings.py; no agency-server checkout.

490e9c5 · agency-django · 2026-08-22 13:43 +0200

Todo 02/03: REST permissions, WS reconnect, docker marker, expanded suite.

8cf2ed3 · agency-ui · 2026-08-22 13:43 +0200

Vitest api/ws/stores/registry; GitHub Actions CI.

225a866 · agency-django · 2026-08-22 13:14 +0200

Todo 01 ✅: ThreadRunner uses agent.model; build_chat_model(); model tests.

61ad9e2 · agency-django · 2026-08-22 (same session)

Initial pytest suite: factories, mocked runtime/HITL, Celery eager, CI.

061c16a · agency-server · 2026-08-22 11:26 +0200

Sphinx: WebSockets, User Interface; consolidated DEVELOPMENT.

Note

Entries before this log are not listed here; each repo’s git history remains the full source.