Skip to content

ship 0.5.0#95

Draft
mesilov wants to merge 13 commits intomainfrom
dev
Draft

ship 0.5.0#95
mesilov wants to merge 13 commits intomainfrom
dev

Conversation

@mesilov
Copy link
Copy Markdown
Owner

@mesilov mesilov commented Mar 18, 2026

Q A
Bug fix? yes/no
New feature? yes
Deprecations? no
Issues Fix #94
License MIT

mesilov added 9 commits March 14, 2026 13:46
… for project-level server settings, update `.gitignore`, and enhance project docs with MCP usage instructions.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
… setup steps for `gh` CLI, GitHub MCP, and MCP servers; synchronize `README.md`, `AGENTS.md`, and `docs/tech-stack.md`; introduce environment readiness checklist.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
…p and two-step application installation flows: adjust status transitions, consolidate finish-step handling, and update developer documentation with user stories, sequence diagrams, and invariants.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
… transitions, implement distinct flows for single-step and two-step installations, update developer documentation with new user stories, clear finish-flow steps, sequence diagrams, and corner case handling.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
…dling for pending installations, implement SDK-compatible `reinstall` flow, update functional and unit tests, and align developer documentation with new contracts and finish-flows.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
… handling for pending installations, establish strict finish-flow sequencing, implement controlled exception paths, update duplicate/mismatch handling, fix `reinstall` flows, revise tests, and update documentation with new canonical flows and sequence diagrams.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
…installation handling, canonicalize finish-step flows, add `reinstall` and corner-case logic, improve tests, and extend documentation with detailed user stories and sequence diagrams.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
…: introduce in-memory repositories, collecting logger, and spy flusher; replace mocks with real implementations; update unit test logic, assertions, and coverage; standardize handling of pending installations and application tokens.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
@mesilov mesilov self-assigned this Mar 18, 2026
@mesilov mesilov marked this pull request as draft March 18, 2026 04:57
@mesilov mesilov added this to the 0.5.0 milestone Mar 18, 2026
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the application installation mechanism by introducing a more robust and flexible two-step installation flow, alongside the existing one-step process. It addresses a critical bug related to premature installation finalization and clarifies the responsibilities of different use cases. The changes are supported by comprehensive documentation, including sequence diagrams, and a thorough update of unit and functional tests, ensuring reliability and maintainability. Additionally, it standardizes the developer environment by integrating new tooling requirements, improving the overall developer experience and project consistency.

Highlights

  • Refined Application Installation Flow: The application installation process was refactored to support both one-step and two-step installation scenarios, addressing a bug where installations were prematurely finalized.
  • Comprehensive Documentation Updates: Extensive new and updated documentation was added, including detailed plans for developer onboarding, agent requirements, and a dedicated document for the application installation flow with sequence diagrams.
  • Standardized Developer Tooling: New requirements for developer tooling, such as gh CLI and GitHub MCP, were introduced and documented, along with a new .mcp.json configuration file.
  • Enhanced Test Coverage: Unit and functional tests were significantly updated and expanded to cover the new installation logic, including various corner cases and the distinct behaviors of the Install and OnAppInstall use cases.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a significant and well-executed refactoring to fix the application installation flow, correctly distinguishing between one-step (with token) and two-step (without token) scenarios. The logic in Install and OnAppInstall handlers is now much clearer and robust, handling various edge cases like reinstalls and duplicate events correctly. The changes are thoroughly covered by a combination of new unit and functional tests, which is excellent. Additionally, comprehensive documentation has been added to explain the new flow. Overall, this is a high-quality contribution that greatly improves the correctness and maintainability of the installation process.

Comment on lines +1 to +8
{
"mcpServers": {
"bitrix24-dev": {
"type": "http",
"url": "https://mcp-dev.bitrix24.tech/mcp"
}
}
} No newline at end of file
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

Committing configuration files with hardcoded URLs, especially for development environments like mcp-dev.bitrix24.tech, can be problematic. It couples the codebase to a specific environment and might expose internal infrastructure details. Consider using a template file (e.g., .mcp.json.dist) and environment variables to manage environment-specific configurations. This would allow developers to set up their local environments without modifying version-controlled files.

Comment on lines +256 to 271
final class TestLogger extends AbstractLogger
{
/** @var array<int, array{message: string, context: array<mixed>}> */
public array $warnings = [];

#[\Override]
public function log($level, string|\Stringable $message, array $context = []): void
{
if ('warning' === $level) {
$this->warnings[] = [
'message' => (string) $message,
'context' => $context,
];
}
}
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

This TestLogger class seems to duplicate the functionality of the newly added CollectingLogger in tests/Helpers/CollectingLogger.php. To improve maintainability and reduce code duplication, consider removing this local TestLogger and using the shared CollectingLogger instead. This would ensure a consistent approach to logging and testing across the test suite.

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: b36baf15a3

ℹ️ 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 on lines +58 to +61
if (ApplicationInstallationStatus::active === $applicationInstallation->getStatus()) {
$this->handleRepeatedEvent($command, $applicationInstallation);

return;
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Backfill tokens for legacy active installs

Treating every active installation as a duplicate no-op breaks upgrade compatibility for in-flight UI installs created before this change: previous Install logic could create active account/installation records without a token, and OnAppInstall was the step that persisted the token. With this early return, delayed ONAPPINSTALL events now only log a warning and never save the token, leaving both aggregates permanently tokenless for those installs.

Useful? React with 👍 / 👎.

mesilov added 3 commits March 23, 2026 02:14
…form for entity tables, update mappings, tests, and documentation; document breaking changes and manual upgrade steps in `CHANGELOG.md`.

Signed-off-by: mesilov <mesilov.maxim@gmail.com>
…and constraints to use `b24lib_` prefix; adapt mappings, tests, and documentation; provide upgrade instructions in `CHANGELOG.md`.

Signed-off-by: mesilov <mesilov.maxim@gmail.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.

ship 0.5.0

1 participant