Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
36536a5
chore(kanban): task 018 — rename diagnostics off TWA
StevenTCramer Jul 15, 2026
76a17f3
docs(kanban): 018 is full ID rename — no TWA leftovers
StevenTCramer Jul 15, 2026
b0ebbcb
docs(kanban): 018 lock prefix TW for SourceGenerators
StevenTCramer Jul 15, 2026
7012023
chore: align repo with TimeWarp standards audit
StevenTCramer Jul 15, 2026
e52a38f
docs(kanban): 019 modernize GitHub workflow to TimeWarp CI standard
StevenTCramer Jul 15, 2026
a97f4e6
chore(kanban): start 018 — rename diagnostic IDs to TW####
StevenTCramer Jul 15, 2026
6c7f552
docs(kanban): 018 implementation plan for TW0001–TW0006 rename
StevenTCramer Jul 15, 2026
72e360e
refactor: rename all diagnostic IDs to TW0001–TW0006
StevenTCramer Jul 15, 2026
42f1108
docs(kanban): align 017 diagnostic descriptions with TW0004–TW0006
StevenTCramer Jul 15, 2026
3c53329
docs(kanban): 018 results — TW0001–TW0006 rename complete
StevenTCramer Jul 15, 2026
42963c3
chore(kanban): complete 018 — diagnostic IDs renamed to TW####
StevenTCramer Jul 15, 2026
e8505ad
chore(kanban): start 019 — modernize GitHub workflow to TimeWarp CI
StevenTCramer Jul 15, 2026
41816c0
docs(kanban): 019 implementation plan — Option A thin CI + OIDC
StevenTCramer Jul 15, 2026
e7bf005
ci: modernize workflow to thin YAML + Option A dev pipeline
StevenTCramer Jul 15, 2026
eae9bb4
docs(kanban): 019 results — Option A thin CI + OIDC delivered
StevenTCramer Jul 15, 2026
3b42192
chore(kanban): complete 019 — GitHub workflow modernized
StevenTCramer Jul 15, 2026
5d959c1
fix(ci): drop local NuGet feed so restore works on fresh clones
StevenTCramer Jul 15, 2026
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
4 changes: 2 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -274,8 +274,8 @@ dotnet_naming_style.local_function_style.capitalization = pascal_case

# dotnet_diagnostic options
dotnet_diagnostic.CS1591.severity = none
dotnet_diagnostic.TWA001.severity = none # Set to warning/error to enforce kebab-case file naming
dotnet_diagnostic.TWA001.excluded_files = *.g.cs;*.Generated.cs;*.generated.cs;*.designer.cs;*.Designer.cs;*.razor.cs;Directory.Build.props;Directory.Build.targets;Directory.Packages.props;AssemblyInfo.cs;*.AssemblyAttributes.cs;AnalyzerReleases.Shipped.md;AnalyzerReleases.Unshipped.md
dotnet_diagnostic.TW0001.severity = none # Set to warning/error to enforce kebab-case file naming
dotnet_diagnostic.TW0001.excluded_files = *.g.cs;*.Generated.cs;*.generated.cs;*.designer.cs;*.Designer.cs;*.razor.cs;Directory.Build.props;Directory.Build.targets;Directory.Packages.props;AssemblyInfo.cs;*.AssemblyAttributes.cs;AnalyzerReleases.Shipped.md;AnalyzerReleases.Unshipped.md

#### Analyzer settings ####
dotnet_code_quality.null_check_validation_methods = NotNull
Expand Down
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
PATH_add bin
1 change: 1 addition & 0 deletions .githooks/post-commit
19 changes: 19 additions & 0 deletions .githooks/post-commit.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env -S dotnet --
#:package TimeWarp.Amuru
#:package TimeWarp.Amuru.Tools
#:property NoWarn=CA2007

using TimeWarp.Amuru;

string? root = Git.FindRoot();
if (root is null)
{
return 0;
}

await Shell.Builder("ganda")
.WithArguments("memsearch", "index-repo", "--background")
.WithWorkingDirectory(root)
.WithNoValidation()
.RunAsync();
return 0;
1 change: 1 addition & 0 deletions .githooks/post-merge
19 changes: 19 additions & 0 deletions .githooks/post-merge.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#!/usr/bin/env -S dotnet --
#:package TimeWarp.Amuru
#:package TimeWarp.Amuru.Tools
#:property NoWarn=CA2007

using TimeWarp.Amuru;

string? root = Git.FindRoot();
if (root is null)
{
return 0;
}

await Shell.Builder("ganda")
.WithArguments("memsearch", "index-repo", "--background")
.WithWorkingDirectory(root)
.WithNoValidation()
.RunAsync();
return 0;
105 changes: 0 additions & 105 deletions .github/workflows/ci-cd.yml

This file was deleted.

64 changes: 64 additions & 0 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: CI/CD

on:
push:
branches: [master]
paths:
- 'source/**'
- 'tests/**'
- 'tools/**'
- 'msbuild/**'
- '.github/workflows/**'
- 'Directory.Build.props'
- 'Directory.Packages.props'
- 'source/Directory.Build.props'
- 'nuget.config'
pull_request:
branches: [master]
paths:
- 'source/**'
- 'tests/**'
- 'tools/**'
- 'msbuild/**'
- '.github/workflows/**'
- 'Directory.Build.props'
- 'Directory.Packages.props'
- 'source/Directory.Build.props'
- 'nuget.config'
release:
types: [published]
workflow_dispatch:

jobs:
ci:
runs-on: ubuntu-latest
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: NuGet login (OIDC Trusted Publishing)
if: github.event_name == 'release'
id: nuget-login
uses: nuget/login@v1
with:
user: TimeWarp.Enterprises
- name: Run CI Pipeline
run: |
if [ "${{ github.event_name }}" == "release" ]; then
dotnet run --file tools/dev-cli/dev.cs -- workflow --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}"
else
dotnet run --file tools/dev-cli/dev.cs -- workflow
fi
- name: Upload Artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: Packages-${{ github.run_number }}
path: artifacts/packages/*.nupkg
if-no-files-found: ignore
50 changes: 50 additions & 0 deletions .memsearch.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# MemSearch repo knowledge index — TimeWarp convention
#
# SPEC (proposed extension)
# -------------------------
# memsearch's stock CLI ignores [index]; this file is honored by:
# ganda memsearch index-repo
# ganda hooks install memsearch (post-commit / post-merge runfiles)
#
# Purpose: index markdown knowledge in THIS repo only. One Milvus collection
# per repo (auto-derived from repo path). Global DB file stays at
# ~/.memsearch/milvus.db unless [milvus].uri is overridden below.
#
# [index].paths
# Directory roots (relative to repo root). memsearch indexes all .md files
# under each path recursively. Missing paths are skipped.
#
# [index].exclude_paths
# Directory paths removed from the resolved path list before indexing.
# Does not prune subdirectories when a parent path (e.g. "kanban/") is listed.
#
# [index].exclude_globs
# Reserved — file-level globs (e.g. "**/task-template.md"). Not implemented in v1.
#
# [index].enabled
# false disables hook indexing (conversation plugins still work).
#
# [milvus].collection
# Empty = auto-derive ms_<repo-basename>_<8char_sha256> from repo root.
#
# Search this repo only:
# memsearch search "query" -c <collection> --source-prefix "$(pwd)/kanban/"

[index]
enabled = true
paths = [
"kanban",
"documentation",
"okf",
"adr",
".memsearch/memory",
]
exclude_paths = []
exclude_globs = [
"**/task-template.md",
"**/overview.md",
]

[milvus]
# uri = ".memsearch/milvus.db" # optional per-repo DB file
collection = ""
6 changes: 4 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,7 @@
"buildtransitive",
"contentfiles",
"nugets"
]
}
],
"window.title": "timewarp-source-generators · ${rootName}${separator}${activeEditorShort}",
"timewarp.blurImagePath": "assets/timewarp-source-generators-avatar.svg"
}
18 changes: 18 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "ganda: window icon",
"type": "shell",
"command": "ganda repo avatar window",
"runOptions": {
"runOn": "folderOpen"
},
"presentation": {
"reveal": "silent",
"echo": false
},
"problemMatcher": []
}
]
}
3 changes: 3 additions & 0 deletions BannedSymbols.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

T:System.Console;Prefer injecting ITerminal. TimeWarp.Terminal.Terminal static class is available for migration.
T:System.Diagnostics.ProcessStartInfo;Use TimeWarp.Amuru Shell.Builder instead. See the 'amuru' skill for usage patterns.
16 changes: 12 additions & 4 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<Import Project="$(MSBuildThisFileDirectory)msbuild/repository.props" />

<!-- Custom path definitions for repository structure -->
<PropertyGroup Label="Custom Repository Variables">
Expand All @@ -24,7 +26,7 @@

<!-- Default language and framework settings for all projects -->
<PropertyGroup Label="Project Defaults">
<TargetFramework>net9.0</TargetFramework>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<LangVersion>latest</LangVersion>
Expand Down Expand Up @@ -57,13 +59,13 @@
<!-- Git commit metadata for assembly info -->
<Target Name="SetAssemblyMetaData" BeforeTargets="PreBuildEvent">
<Exec Command="git log -1 --format=%%ct" ConsoleToMSBuild="true" Condition="'$(OS)' == 'Windows_NT'">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitTimestamp"/>
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitTimestamp" />
</Exec>
<Exec Command="git log -1 --format=%ct" ConsoleToMSBuild="true" Condition="'$(OS)' != 'Windows_NT'">
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitTimestamp"/>
<Output TaskParameter="ConsoleOutput" PropertyName="GitCommitTimestamp" />
</Exec>
<Exec Command="pwsh -ExecutionPolicy Bypass -NoProfile -File &quot;$(MSBuildThisFileDirectory)convert-timestamp.ps1&quot; -GitCommitTimestamp $(GitCommitTimestamp)" ConsoleToMSBuild="true">
<Output TaskParameter="ConsoleOutput" PropertyName="CommitDate"/>
<Output TaskParameter="ConsoleOutput" PropertyName="CommitDate" />
</Exec>
<ItemGroup>
<AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute">
Expand All @@ -80,6 +82,12 @@
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" />
<PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" PrivateAssets="all" IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
<AdditionalFiles Include="$(MSBuildThisFileDirectory)BannedSymbols.txt" />
</ItemGroup>

<!-- Git commit metadata for assemblies (repo-wide) -->
<ItemGroup Label="Build Tasks">
<PackageReference Include="TimeWarp.Build.Tasks" PrivateAssets="all" />
</ItemGroup>
</Project>
Loading
Loading