Skip to content

Add issue tracker cards and project-backed kanban board to software-factory#4650

Open
burieberry wants to merge 1 commit intomainfrom
cs-10526-issue-tracker
Open

Add issue tracker cards and project-backed kanban board to software-factory#4650
burieberry wants to merge 1 commit intomainfrom
cs-10526-issue-tracker

Conversation

@burieberry
Copy link
Copy Markdown
Contributor

@burieberry burieberry commented May 4, 2026

  • Introduce generic kanbanBoard card and no-frills version of issue-tracker, currently in software-factory
  • Added sample cards in experiments-realm for demo

Summary

  • split up card definitions for issue tracker and related cards: issue, comment, knowledge article, agent-profile
  • add generic kanban-board card with customizable columns and polymorphic cards
  • extend kanban-board for IssueTrackerBoard with columns and enum options related to issue-tracker statuses
  • use the new boxel-ui drag-and-drop kanban board in the project-backed issue tracker board
  • update the software-factory realm wiring and dependencies to expose the new issue tracker experience
  • add board creation into software-factory operations and tests
  • test coverage and updates

Next Steps:

  • Move issue-tracker out of software-factory
  • More test coverage on functionality
  • UI polish

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 5, 2026

Host Test Results

    1 files      1 suites   1h 48m 33s ⏱️
2 643 tests 2 628 ✅ 15 💤 0 ❌
2 662 runs  2 647 ✅ 15 💤 0 ❌

Results for commit 5003faa.

Realm Server Test Results

    1 files  ±    0      1 suites  +1   15m 41s ⏱️ + 15m 41s
1 297 tests +1 297  1 297 ✅ +1 297  0 💤 ±0  0 ❌ ±0 
1 376 runs  +1 376  1 376 ✅ +1 376  0 💤 ±0  0 ❌ ±0 

Results for commit 5003faa. ± Comparison against earlier commit 69f98c2.

@burieberry burieberry force-pushed the cs-10526-issue-tracker branch 2 times, most recently from b08a0e2 to 942b3c1 Compare May 5, 2026 01:30
@burieberry burieberry changed the title Cs 10526 issue tracker Add issue tracker cards and project-backed kanban board to software-factory May 5, 2026
@burieberry burieberry marked this pull request as ready for review May 5, 2026 14:03
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d49d7990eb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/software-factory/realm/issue-tracker.gts Outdated
@burieberry burieberry requested a review from a team May 5, 2026 16:28
Copy link
Copy Markdown
Contributor

@lukemelia lukemelia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want test coverage for this?

@burieberry burieberry force-pushed the cs-10526-issue-tracker branch from b80c6d1 to d5209e5 Compare May 5, 2026 18:00
@burieberry
Copy link
Copy Markdown
Contributor Author

Do we want test coverage for this?

Updated software-factory operations and tests to include board creation. Component itself has tests in boxel-ui. More card tests can be added when cards are moved out of software-factory.

@burieberry burieberry requested a review from a team May 5, 2026 21:36
Copy link
Copy Markdown
Contributor

@habdelra habdelra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably a better test would be to use a playwright spec test in the software factory to test the actual rendering of the new card defs, test moving the issues between column sin the kanban board, adding comments asserting the comments appear in the issue, etc. like full integration tests via the DOM. the node tests are mostly cheating in this regard because they would rely on mocks of the realm server and don't actually try to render the card.

@burieberry burieberry force-pushed the cs-10526-issue-tracker branch from d0d9fd9 to 9f09e9e Compare May 5, 2026 22:59
@burieberry
Copy link
Copy Markdown
Contributor Author

Probably a better test would be to use a playwright spec test in the software factory to test the actual rendering of the new card defs, test moving the issues between column sin the kanban board, adding comments asserting the comments appear in the issue, etc. like full integration tests via the DOM. the node tests are mostly cheating in this regard because they would rely on mocks of the realm server and don't actually try to render the card.

Yes, I want to add ui tests after moving it out of software-factory because it's been a huge struggle to be able to write them as playwright tests. Other option is I move them out now. The kanban component itself has tests in boxel-ui.

@habdelra
Copy link
Copy Markdown
Contributor

habdelra commented May 5, 2026

Probably a better test would be to use a playwright spec test in the software factory to test the actual rendering of the new card defs, test moving the issues between column sin the kanban board, adding comments asserting the comments appear in the issue, etc. like full integration tests via the DOM. the node tests are mostly cheating in this regard because they would rely on mocks of the realm server and don't actually try to render the card.

Yes, I want to add ui tests after moving it out of software-factory because it's been a huge struggle to be able to write them as playwright tests. Other option is I move them out now. The kanban component itself has tests in boxel-ui.

sounds good--i trust your judgement

[
'IssueTrackerBoard',
'update_board',
() => buildUpdateIssueTrackerBoardTool(config),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know this branch is behind main but pointing out just in case: the tools for dealing with card json (update_project, update_issue,...) are gone in mainstream and we should rely on native read/write agent capabilities, combined with skills that teach the model how to form project cards.

@burieberry burieberry force-pushed the cs-10526-issue-tracker branch 2 times, most recently from 5e6baee to 69f98c2 Compare May 8, 2026 15:50
@burieberry burieberry force-pushed the cs-10526-issue-tracker branch from 69f98c2 to 5003faa Compare May 8, 2026 15:57
@burieberry
Copy link
Copy Markdown
Contributor Author

Continuing follow-ups in new PR

@burieberry burieberry requested review from a team May 8, 2026 16:29
@habdelra habdelra requested a review from Copilot May 8, 2026 22:21
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR expands the software-factory realm’s issue-tracker experience by introducing new card definitions (including a generic Kanban board + project-backed IssueTrackerBoard), wiring Boxel UI’s drag-and-drop Kanban UI, and updating software-factory bootstrap/operations guidance and tests to support board creation.

Changes:

  • Add new realm card defs/components for Kanban boards, IssueTrackerBoard, and supporting fields (placements/columns/options/status pill).
  • Refactor darkfactory realm module to re-export tracker card defs from issue-tracker, and update prompts/skills/seed issue + tests/fixtures for board creation.
  • Add ember-concurrency dependency for tasks used in the IssueTrackerBoard UI.

Reviewed changes

Copilot reviewed 21 out of 22 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
pnpm-lock.yaml Locks ember-concurrency dependency addition.
packages/software-factory/package.json Adds ember-concurrency dependency for realm UI tasks.
packages/software-factory/src/factory-tool-builder.ts Updates internal docs to include IssueTrackerBoard in tracker-schema list.
packages/software-factory/src/factory-seed.ts Updates seed issue instructions/acceptance criteria to include IssueTrackerBoard.
packages/software-factory/tests/runtime-schema.spec.ts Adds schema-fetch test coverage for IssueTrackerBoard.
packages/software-factory/tests/factory-seed.spec.ts Ensures seed issue gets indexed before reading it.
packages/software-factory/test-fixtures/darkfactory-adopter/Boards/demo-board.json Adds adopter fixture for an IssueTrackerBoard instance.
packages/software-factory/prompts/bootstrap-implement.md Extends bootstrap prompt to include board creation and linking guidance.
packages/software-factory/.agents/skills/software-factory-bootstrap/SKILL.md Updates bootstrap skill docs to include board creation and file locations.
packages/software-factory/.agents/skills/software-factory-operations/SKILL.md Updates ops skill docs to include board JSON file location + adoptsFrom mapping.
packages/software-factory/realm/tsconfig.json Adds TS path mapping for Boxel UI imports in realm .gts files.
packages/software-factory/realm/darkfactory.gts Refactors darkfactory module to re-export tracker defs from issue-tracker.
packages/software-factory/realm/issue-tracker.gts Introduces issue tracker cards + IssueTrackerBoard UI backed by KanbanPlane + placements.
packages/software-factory/realm/kanban-board.gts Adds generic KanbanBoard card using Boxel UI KanbanPlane.
packages/software-factory/realm/kanban-column.gts Adds KanbanColumn field definition + edit/embedded templates.
packages/software-factory/realm/kanban-board-placement.gts Adds Kanban placement field definition (itemId/columnKey/sortOrder).
packages/software-factory/realm/kanban-config.gts Adds status/type/priority/project-status option sets + enum fields.
packages/software-factory/realm/issue-option.gts Adds IssueOption field definition used for configurable status options.
packages/software-factory/realm/status-pill.gts Adds StatusPill UI component wrapper around Boxel UI Pill.
packages/software-factory/realm/knowledge-article.gts Splits KnowledgeArticle card definition into its own file.
packages/software-factory/realm/comment.gts Splits Comment field definition into its own file.
packages/software-factory/realm/agent-profile.gts Splits AgentProfile card definition into its own file.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

"paths": {
"https://cardstack.com/base/*": ["../../base/*"]
"https://cardstack.com/base/*": ["../../base/*"],
"@cardstack/boxel-ui/*": ["../../boxel-ui/addon/declarations/*"]
});

export const GroupByField = enumField(StringField, {
options: defaultColumns.map(({ key, label }) => ({ key, label })),
Comment on lines +21 to 22
(`write_file`, `update_project`, `update_board`, `update_issue`, `create_knowledge`). Use `search_realm` and
`read_file` to inspect existing state before creating anything.
Comment on lines 79 to 83
Each article should have:

- `articleTitle` — a descriptive title (e.g., `"<brief title> — Brief Context"`, `"<brief title> — Data Model"`)
- `articleType` — one of `"context"`, `"onboarding"`, `"reference"`, `"decision"`
- `content` — the article body in markdown
},
"meta": {
"adoptsFrom": {
"module": "https://sf.boxel.test/darkfactory",

Relationships:

- `board` → `../Boards/<slug>`
Comment on lines +107 to +108
- `board` → `{ links: { self: "../Boards/<slug>" } }`
- `knowledgeBase.0` → `{ links: { self: "../Knowledge Articles/<slug>-<article-slug>" } }` (one entry per article)
Comment on lines +742 to +746
@field knowledgeBase = linksToMany(() => KnowledgeArticle);
@field successCriteria = contains(MarkdownField);
@field testArtifactsRealmUrl = contains(StringField);
// @field board = linksTo(() => IssueTrackerBoard, {
// query: {
Comment on lines 127 to 131
`1. **Project card** — in \`Projects/\` with fields populated from the brief`,
`2. **Knowledge Articles** — in \`Knowledge Articles/\`, at least Brief Context + Agent Onboarding, plus more as the brief warrants`,
`3. **Implementation Issues** — one per entry-point card, each covering:`,
`2. **Issue Tracker Board** — in \`Boards/\`, linked both ways with the Project card`,
`3. **Knowledge Articles** — in \`Knowledge Articles/\`, at least Brief Context + Agent Onboarding, plus more as the brief warrants`,
`4. **Implementation Issues** — one per entry-point card, each covering:`,
` - Card definition (.gts) and any interior/support cards`,
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.

5 participants