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 carryscreenand 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.scale5% 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 onwindowsStore+ the desktop snapshot, not overlay.desktop.projectionisflatorperspective(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_panelcompose and openpanel.{uuid}. Reconnect reads REST — the panel does not evaporate with the socket.- agency-ui · agency-django · agency-server · 2026-08-27
UINodeis a closed union: missing types (table,agent-chat,task-progress,lobby-chat) are in the contract;isValidNoderejects Vuetify names;vue-tscis required CI. DjangoKNOWN_UI_TYPESis the same palette.- agency-ui · agency-django · agency-server · 2026-08-27
Live UI overlay:
disabled(and the closed live set) isentity_id → attrs, not a patch of the schema tree. The bus projector writes the overlay; reconnect rehydratesGET /api/ui/overlay/. Window geometry stays inwindowsStore.- agency-ui · agency-django · agency-server · 2026-08-27
UI address space: schema nodes carry
channel+uuid(and children onlyname).entity_idis the Agency Bus topic — no Vue↔path map, no composed channel on the child, no addressing by children index.UiRendererinjects 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. Grouproom-<slug>. Auth required (close code 4401 for anonymous). Presence broadcasts unique authenticated users on join/leave. ASGI route inframework/server/asgi.py. UI:lobby-chatschema type (AgencyLobbyChat), singleton window addresslobby, desktop iconAgencyDesktopLobbyIconwith presence badge, PinialobbyRoomstore 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-explorerschema type,AgencyUserExplorerVue component,usersPinia 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/requiringis_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.pysyncsSite.domainfromDJANGO_ALLOWED_HOSTS(or explicitDJANGO_SITE_DOMAIN).DJANGO_SECURE_SSL=trueenablesACCOUNT_DEFAULT_HTTP_PROTOCOL='https'for TLS-terminated nginx. Production requires a stableDJANGO_SECRET_KEYshared by all containers (OAuth state lives in the session).LoggingSocialAccountAdapterlogs OAuth errors tosystem.log. First-admin promotion: on fresh installs with zero superusers, the first Google login is promoted to staff/superuser;DJANGO_SUPERUSER_EMAILSallowlists additional emails. Host wiring: adapter callsmaybe_promote_useron login; boot callspromote_allowlisted_users(). Helpers andpromote_superusercommand inagency.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_expressionpublishesagent.<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 callsedit_imagewith 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 MCPask_agentuses the same service. Mission dispatch from that chat still creates a new Execution Thread and recordsorigin_*metadata.- agency-ui · agency-server · 2026-08-25
Window chrome is one bar:
AgencyChromeBarat 40px, same button type as Veronica Image / Speak. Explorers, secretary chat, execution chat, and Media share it. Light/dark colours live inagency-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: Veronicaagain. Library drops now sendphoto_ids(server reads the files). Daphne--websocket_max_message_sizeis 16 MiB for remaining PC base64 drops.- agency-django · agency-server · 2026-08-25
edit_imagecan compose several Photos into one picture. Drop the robot and the motorcycle on Veronica (up to 4), caption in Spanish or English, Send. She callsedit_imagewithphoto_idsand an English prompt. That hits FALfal-ai/flux-pro/kontext/max/multi(data URIs — localhost/media/is not fetchable). One photo still uses LoRA img2img + Comfy fallback. Compose needsFAL_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.imagefrom the PC ontodesktop.mediauploads to Photos and plays; ontodesktop.photosit only uploads. Photos list items arephoto.<id>and play on Media. A drop publishes<target>.drop.acceptedso 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).UserPreferencesalso storesactive_thread. LegacyttsVoicePiper keys still PATCH to the system voice.- agency-django · agency-ui · agency-server · 2026-08-25
Veronica can edit the picture on Media.
edit_imagetakes an English prompt and optionalphoto_id/strength(default 0.35). Emptyphoto_iduses the operator now-playing (Photos clicks persist viaPUT /api/me/media/;show_mediaremembers the same slice). FALflux-lora/image-to-imagefirst, 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 (
mapschema 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 withopen_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_statswhen 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_mediapublishesdesktop.media.now_playing.changedand 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 legacyui.update.open_windowtakes 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.waitdefaults 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.logwhen it changes. System → Logs SSE is an ops feed (errors, tracebacks, restarts, GPU) with backfill — not live DEBUG. Unhandled Django 500s go todjango.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-miniinstead 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) andfal-ai/flux/schnell.generate_imagecan pinmodel=fal-ai/flux-lora; otherwise ComfyUI still goes first. Secrets stay inFAL_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 withgpt-4o-mini/gpt-4oso an Agent can run ChatGPT whenOPENAI_API_KEYis in Compose. Sync uses Ollama/api/tagsor 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/exposesboot_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. Sameboot_idonly 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.emitpublishes<resource>.<id>.catalog.<action>on theusersgroup; the browser adapter is gone. Leftovermonitor_event/catalog_changedframes are ignored so they cannot double-apply. Presence was already on this path; conversation, HITL,secretary.notifyand tasks still use the inboundif/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 alreadydisplay.example.*/display.view.*.- agency-django · agency-server · 2026-08-25
Example mission Fantasy display wallpaper (
mission.example.fantasy_wallpaper): loop that asks Veronica togenerate_imagea 1024×768 cinematic fantasy landscape (ComfyUI). Apply withshow_image_on_displayonly 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 ongenerate_agency_icon(128×128 white glyphs). Photo negatives no longer ban color or photography.- agency-django · agency-server · 2026-08-25
import_display_imageno longer saves Wikipedia File: HTML as a fake JPEG (nginx then served it asimage/jpegand 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_contextreport running executions andwait_for_executionpauses (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 callscommission_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_executionis the generic form.Agent.deep/create_deep_agentremains in-process and is not used for this handoff. Shipped kiosk template Clock (display.example.clock).inspect_displaysleads 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, orshow_image_on_displayas 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 droppedpropertymessages beforesubscribe, and the runtime discarded a whole frame whenscope_revisionlooked 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.changednow 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/mediafrom the property; the picker listsGET /api/photo/andsets 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
onMountedand 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 likelista agenteswere 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 printsPictogram: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).
subjectis 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_toolsfilters tools without an icon. Example missionGenerate 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_iconcalls it first; OpenAI / fal remain fallbacks. UI: http://127.0.0.1:8188. First boot downloads ~2 GB intoagency_comfy.- agency-django · agency-server · 2026-08-24
generate_agency_iconno longer invents JSON geometry. An image model draws the PNG (ComfyUI on this Linux stack; Ollamax/flux2-kleinwhen 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_photolets 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 fromgenerate_agency_iconalso 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.tomlclaimedauthors = [{name = "Agency"}],package.jsonclaimed nobody. Both now name Txema Vicente Segura, and each repo carries a proprietaryLICENSEfor theProprietarythat packaging already declared. Sphinx copyright is a2025-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.secretaryFaceretired.- agency-ui · agency-django · 2026-08-24
Desktop maximize uses mobile chrome (app bar title + min/close). Ghost maximized windows no longer vanish.
UserPreferencesis 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 inagency-ui/src/bus/. First slice migrated iscatalog_changed, now published as<resource>.<id>.catalog.<action>with a projector as the single mutation owner. Field names aresnake_caseon 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; openssecretary). 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 aniconfield; 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). Addresssecretary/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) andLLM_CONTEXT_WINDOWintests/settings.py.- agency-django · agency-ui · agency-workspace · 2026-08-23
Resource namespaces Phase 1:
namespaceon 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.displayVS1–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 WSagency_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_missionre-enters loop evaluation; tutorialexample-missions.- agency-django · agency-server · 2026-08-23
Mission loop evaluator: inject thread transcript into
evaluate_loop_decision; reject placeholdernext_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-loopreference.- agency-ui · agency-django · agency-server · 2026-08-23
Mission loop:
loop_prompt-derived oneshot/loop missions; structuredLoopDecision; Celeryrun_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;
AgentConsumermultimodalimagesgated onModel.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/(Celerycontinue_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);
ttsVoicein user Options / admin prefs;POST /api/voice/ttsacceptsvoice.- 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_helpembeds 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_helptool 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
ImageFieldicons; 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 infrontend.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.mewindow (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
helpwindow: embed Sphinx singlehtml without an iframe.- agency-ui / agency-django · 2026-08-22
Agency desktop
camerawindow: 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 addresseskind/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.rstpolicy (no SHA-only follow-up commits); Sphinx remains canonical technical docs.f6ece01· agency-server · 2026-08-22 21:24 +0200Narrative 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 +0200Fix corrupted
ThreadRunner.invokedocstring; README links to Sphinx narratives.831b14f· agency-server · 2026-08-22 20:05 +0200Sphinx nav: Framework / Development reorg; consolidate Models/Tools autodoc.
99e22fe· agency-server · 2026-08-22 17:58 +0200Introduce Sphinx change log and English backlog conventions.
b2074ea· agency-django · 2026-08-22 17:44 +0200CI coverage gate set to 35%.
6e8252e· agency-django · 2026-08-22 17:42 +0200Todo 02 (partial): +34 pytest (encoder, groups, execution/corpus API).
e91f0cf· agency-ui · 2026-08-22 17:42 +0200Todo 02 (partial): vitest ui store,
applyAgencyEvent, execution timeline.bc1b697· agency-django · 2026-08-22 14:08 +0200Corpus without
langchain-community:pypdf+langchain_ollama; PDF loader tests.d367ae3· agency-server · 2026-08-22 14:08 +0200Docker requirements: removed
langchain-community.bcf9a2b· agency-django · 2026-08-22 13:48 +0200Private repos CI: standalone
tests/settings.py; noagency-servercheckout.490e9c5· agency-django · 2026-08-22 13:43 +0200Todo 02/03: REST permissions, WS reconnect, docker marker, expanded suite.
8cf2ed3· agency-ui · 2026-08-22 13:43 +0200Vitest api/ws/stores/registry; GitHub Actions CI.
225a866· agency-django · 2026-08-22 13:14 +0200Todo 01 ✅:
ThreadRunnerusesagent.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 +0200Sphinx: WebSockets, User Interface; consolidated DEVELOPMENT.
Note
Entries before this log are not listed here; each repo’s git history remains the full source.