Skip to content

feat(project): wire project-bind side branch into owner creation#676

Merged
tcp404 merged 1 commit into
mainfrom
boii/feat/project-bind-wiring
Jul 24, 2026
Merged

feat(project): wire project-bind side branch into owner creation#676
tcp404 merged 1 commit into
mainfrom
boii/feat/project-bind-wiring

Conversation

@tcp404

@tcp404 tcp404 commented Jul 24, 2026

Copy link
Copy Markdown
Collaborator

What

Phase 2 of the Project Explorer creation-binding chain (foundation landed in #672). Wires conversation/team creation through ProjectService as a best-effort side branch that starts populating projects / folders / project_explorer and backfills owner project_id / folder_id — without changing any existing behavior.

Design: side branch, never affects existing functionality

  • The existing workspace decision (extra.workspace, auto-provision, teams.workspace, agent cwd, delete cleanup, skill symlink) is untouched.
  • Binding runs on a side path; any failure is logged at warn and swallowed — it can never break conversation/team create or read.
  • Single entry resolve_existing(to_file_uri(workspace)): creates no directory; kind is decided by temp_root (work_dir/conversations → temp, user-picked dir → standard).

Behavior

  • create: bind right after the owner row is inserted.
  • read: lazy backfill only when opening a single owner — conversation get / team get_team. list / list_teams / lease-renew stay pure reads (no per-row resolve → conversation list and startup session restore stay fast and side-effect free).
  • Team member conversations inherit the team's binding naturally (same workspace → same folder → same project).
  • IDs via generate_prefixed_id: project_ / folder_ / pe_.

Layering / DI

  • aionui-project sits at the Capability layer; aionui-conversation / aionui-team (Domain) depend down on it. Injected as an optional ProjectService (unset → no-op), constructed in AppServices with temp_root = work_dir/conversations to mirror the existing on-disk layout.

DB

  • ConversationRow / TeamRow gain nullable project_id / folder_id (+ INSERT / update params). Existing SELECT * / FromRow unaffected.

Testing

  • just push gate green: 7426 tests passed, clippy -D warnings clean, fmt clean.
  • New tests: create binds (standard + temp), list_does_not_backfill_but_get_does, team create binds, no-op when the service is unset (best-effort contract).
  • Existing conversation/team workspace tests unchanged — proving zero behavioral impact.

Refs #672, feat-project-design/formal/bind/wiring.md.

Populate projects/folders/project_explorer and backfill owner
project_id/folder_id as a best-effort side branch that never alters
existing conversation/team create/read behavior.

- owner rows gain nullable project_id/folder_id (+ INSERT/update params)
- inject ProjectService into conversation/cron/team via AppServices
- bind on create; lazy backfill only on get/get_team (list stays a pure read)
- ids via generate_prefixed_id: project_ / folder_ / pe_

Refs feat-project-design/formal/bind/wiring.md
@tcp404
tcp404 merged commit 300c833 into main Jul 24, 2026
6 checks passed
@tcp404
tcp404 deleted the boii/feat/project-bind-wiring branch July 24, 2026 05:23
piorpua pushed a commit that referenced this pull request Jul 24, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.1.52](v0.1.51...v0.1.52)
(2026-07-24)


### Features

* **project:** wire project-bind side branch into owner creation
([#676](#676))
([300c833](300c833))


### Bug Fixes

* **agent:** unify CLI probe pipeline with classified failures and
adaptive slow-probe recheck
([#678](#678))
([67945d2](67945d2))
* **channel:** quiet WeChat poll log noise with state-transition logging
and exponential backoff
([#683](#683))
([ea4da55](ea4da55))
* **process:** allow whitespace in workspace cwd segments
([#410](#410) parity)
([#674](#674))
([c344b02](c344b02))
* **session:** restore codex slash commands + recover dead resume
anchors on the direct-CLI path
([#679](#679))
([7b60611](7b60611))
* **team:** converge system/lifecycle wakes into a team run
([#680](#680))
([38facd7](38facd7))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant