Skip to content

feat(demo): scaffold Avalonia demo shell#34

Merged
luckydizzier merged 1 commit intomainfrom
codex/2025-10-01_19-57-10_create-demo-folder-and-scaffold-solution
Oct 1, 2025
Merged

feat(demo): scaffold Avalonia demo shell#34
luckydizzier merged 1 commit intomainfrom
codex/2025-10-01_19-57-10_create-demo-folder-and-scaffold-solution

Conversation

@luckydizzier
Copy link
Owner

@luckydizzier luckydizzier commented Oct 1, 2025

Summary

  • add demo solution projects for domain, infrastructure, diagnostics, and Avalonia host
  • wire up dependency injection for catalog, paging, and telemetry services with placeholders
  • capture milestone tracking in src/demo/tasks.md for the Avalonia ReactiveUI plan

Testing

  • dotnet build xBase.sln

https://chatgpt.com/codex/tasks/task_e_68dd85158ac08322a0d07006ce108707

Summary by CodeRabbit

  • New Features
    • Introduced a desktop demo app with a main window (“xBase Demo Shell”).
    • Catalog browsing: load a folder of xBase tables and see the selected root and a summary of discovered tables.
    • Basic page preview summary for the first table.
    • Built-in telemetry capture for success/failure events.
  • Documentation
    • Added a demo roadmap with milestone tasks.
  • Chores
    • Added new demo solution structure and project setup, including dependency wiring and app startup configuration.

Copilot AI review requested due to automatic review settings October 1, 2025 19:57
@coderabbitai
Copy link

coderabbitai bot commented Oct 1, 2025

Caution

Review failed

The pull request is closed.

✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch codex/2025-10-01_19-57-10_create-demo-folder-and-scaffold-solution

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 578f471 and 10681f1.

📒 Files selected for processing (23)
  • src/demo/XBase.Demo.App/App.axaml (1 hunks)
  • src/demo/XBase.Demo.App/App.axaml.cs (1 hunks)
  • src/demo/XBase.Demo.App/DependencyInjection/ServiceCollectionExtensions.cs (1 hunks)
  • src/demo/XBase.Demo.App/Program.cs (1 hunks)
  • src/demo/XBase.Demo.App/ViewModels/ShellViewModel.cs (1 hunks)
  • src/demo/XBase.Demo.App/Views/MainWindow.axaml (1 hunks)
  • src/demo/XBase.Demo.App/Views/MainWindow.axaml.cs (1 hunks)
  • src/demo/XBase.Demo.App/XBase.Demo.App.csproj (1 hunks)
  • src/demo/XBase.Demo.Diagnostics/InMemoryTelemetrySink.cs (1 hunks)
  • src/demo/XBase.Demo.Diagnostics/ServiceCollectionExtensions.cs (1 hunks)
  • src/demo/XBase.Demo.Diagnostics/XBase.Demo.Diagnostics.csproj (1 hunks)
  • src/demo/XBase.Demo.Domain/Catalog/CatalogModel.cs (1 hunks)
  • src/demo/XBase.Demo.Domain/Catalog/TablePage.cs (1 hunks)
  • src/demo/XBase.Demo.Domain/Diagnostics/DemoTelemetryEvent.cs (1 hunks)
  • src/demo/XBase.Demo.Domain/Services/ITableCatalogService.cs (1 hunks)
  • src/demo/XBase.Demo.Domain/Services/ITablePageService.cs (1 hunks)
  • src/demo/XBase.Demo.Domain/XBase.Demo.Domain.csproj (1 hunks)
  • src/demo/XBase.Demo.Infrastructure/Catalog/FileSystemTableCatalogService.cs (1 hunks)
  • src/demo/XBase.Demo.Infrastructure/Catalog/NullTablePageService.cs (1 hunks)
  • src/demo/XBase.Demo.Infrastructure/ServiceCollectionExtensions.cs (1 hunks)
  • src/demo/XBase.Demo.Infrastructure/XBase.Demo.Infrastructure.csproj (1 hunks)
  • src/demo/tasks.md (1 hunks)
  • xBase.sln (3 hunks)

Comment @coderabbitai help to get the list of available commands and usage tips.

@luckydizzier luckydizzier merged commit 7aec596 into main Oct 1, 2025
2 of 3 checks passed
Copy link

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 scaffolds an Avalonia-based demo application for the xBase library with a ReactiveUI architecture. The demo is structured as multiple projects covering domain, infrastructure, diagnostics, and the main Avalonia host application.

  • Scaffolds complete demo solution with domain models for catalog browsing and table paging
  • Implements basic services with placeholder functionality for catalog discovery and telemetry
  • Sets up Avalonia ReactiveUI shell with dependency injection container and service registration

Reviewed Changes

Copilot reviewed 23 out of 23 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
xBase.sln Adds four new demo projects to the solution structure
src/demo/tasks.md Documents milestone roadmap for the Avalonia ReactiveUI implementation
src/demo/XBase.Demo.Domain/ Domain models and service interfaces for catalog and paging functionality
src/demo/XBase.Demo.Infrastructure/ Service implementations with file system catalog scanning and null page service
src/demo/XBase.Demo.Diagnostics/ In-memory telemetry sink for capturing demo events
src/demo/XBase.Demo.App/ Avalonia ReactiveUI application with shell view model and dependency injection setup

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

continue;
}

indexes.Add(new IndexModel(Path.GetFileName(indexFile), extension.ToUpperInvariant()));
Copy link

Copilot AI Oct 1, 2025

Choose a reason for hiding this comment

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

The IndexModel constructor expects (Name, Expression, Order) but is being passed (fileName, extension). This creates an IndexModel where the 'Expression' parameter contains the file extension, which contradicts the parameter name's intent.

Suggested change
indexes.Add(new IndexModel(Path.GetFileName(indexFile), extension.ToUpperInvariant()));
indexes.Add(new IndexModel(Path.GetFileName(indexFile), string.Empty, 0));

Copilot uses AI. Check for mistakes.
using var host = CreateHost(args);
host.Start();

App.Services = host.Services;
Copy link

Copilot AI Oct 1, 2025

Choose a reason for hiding this comment

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

App.Services is being set twice - once at line 18 and again in the AfterSetup callback at line 23. The first assignment appears redundant since the AfterSetup callback will override it.

Suggested change
App.Services = host.Services;

Copilot uses AI. Check for mistakes.
try
{
return BuildAvaloniaApp()
.AfterSetup(_ => App.Services = host.Services)
Copy link

Copilot AI Oct 1, 2025

Choose a reason for hiding this comment

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

App.Services is being set twice - once at line 18 and again in the AfterSetup callback at line 23. The first assignment appears redundant since the AfterSetup callback will override it.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants