Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@ jobs:
tag: v${{ steps.version.outputs.version }}
name: Sheetly v${{ steps.version.outputs.version }}
artifacts: nupkg/*.nupkg
bodyFile: RELEASE_NOTES.md
bodyFile: docs/RELEASE_NOTES.md
token: ${{ secrets.GITHUB_TOKEN }}
skipIfReleaseExists: true
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<div align="center">
<img src="https://raw.githubusercontent.com/muqimjon/sheetly/main/icon.png" alt="Sheetly Logo" width="128" />

# Sheetly

**Entity Framework Core for Google Sheets** — The familiar ORM experience you love, now for spreadsheets.

[![NuGet](https://img.shields.io/nuget/v/Sheetly.Core.svg)](https://www.nuget.org/packages/Sheetly.Core/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
</div>
<p align="center">
<img src="https://raw.githubusercontent.com/muqimjon/sheetly/main/assets/banner.svg" width="100%" alt="Sheetly Banner" />
</p>

<p align="center">
<a href="https://www.nuget.org/packages/Sheetly.Core/"><img src="https://img.shields.io/nuget/v/Sheetly.Core.svg?label=Sheetly.Core&color=2f7f73" /></a>
<a href="https://www.nuget.org/packages/Sheetly.Google/"><img src="https://img.shields.io/nuget/v/Sheetly.Google.svg?label=Sheetly.Google&color=2f7f73" /></a>
<a href="https://www.nuget.org/packages/dotnet-sheetly/"><img src="https://img.shields.io/nuget/v/dotnet-sheetly.svg?label=dotnet-sheetly&color=2f7f73" /></a>
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" /></a>
</p>

---

Expand Down
20 changes: 20 additions & 0 deletions assets/banner.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes.
13 changes: 12 additions & 1 deletion RELEASE_NOTES.md → docs/RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,22 @@
# 🎉 Sheetly v1.0.0 — Release Notes
# 🎉 Sheetly v1.0.1 — Release Notes

## Entity Framework Core for Google Sheets

**Release Date:** February 23, 2026

---

## 🐛 What's Fixed in v1.0.1

- **CLI banner** — EF Core-style terminal output with teal rocket art
- **`OnConfiguring` detection** — `dotnet sheetly database update` now reads connection settings directly from `OnConfiguring()`, no `appsettings.json` required
- **Build-first behavior** — All CLI commands now build the project before executing (like `dotnet ef`)
- **Version output** — Removed git commit hash from `--version` output
- **Brand logo** — Added official icon to all NuGet packages
- **CI/CD** — GitHub Actions workflows for automatic NuGet publishing

---

## ✨ What's New

### Core Features
Expand Down
5 changes: 0 additions & 5 deletions dotnet-tools.json

This file was deleted.

Binary file removed icon.png
Binary file not shown.
45 changes: 22 additions & 23 deletions samples/Sheetly.Sample/Migrations/20260222142948_InitialCreate.cs
Original file line number Diff line number Diff line change
@@ -1,34 +1,33 @@
using Sheetly.Core.Migrations;
using Sheetly.Core.Migrations.Operations;

namespace Sheetly.Sample.Migrations;

[Migration("20260222142948_InitialCreate")]
public partial class InitialCreate : Migration
{
public override void Up(MigrationBuilder builder)
{
// ClassName: Category
builder.CreateTable("Categories", table => table
.Column<long>("Id", c => c.IsPrimaryKey().IsUnique())
.Column<string>("Name")
);
public override void Up(MigrationBuilder builder)
{
// ClassName: Category
builder.CreateTable("Categories", table => table
.Column<long>("Id", c => c.IsPrimaryKey().IsUnique())
.Column<string>("Name")
);

// ClassName: Product
builder.CreateTable("Products", table => table
.Column<int>("Id", c => c.IsPrimaryKey().IsUnique())
.Column<string>("Title")
.Column<decimal>("Price", c => c.IsRequired())
.Column<string>("Description")
.Column<int>("Stock", c => c.IsRequired())
.Column<int>("CategoryId", c => c.IsRequired().IsForeignKey("Categories"))
);
// ClassName: Product
builder.CreateTable("Products", table => table
.Column<int>("Id", c => c.IsPrimaryKey().IsUnique())
.Column<string>("Title")
.Column<decimal>("Price", c => c.IsRequired())
.Column<string>("Description")
.Column<int>("Stock", c => c.IsRequired())
.Column<int>("CategoryId", c => c.IsRequired().IsForeignKey("Categories"))
);

}
}

public override void Down(MigrationBuilder builder)
{
builder.DropTable("Products");
builder.DropTable("Categories");
}
public override void Down(MigrationBuilder builder)
{
builder.DropTable("Products");
builder.DropTable("Categories");
}
}
Loading